aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386
AgeCommit message (Collapse)AuthorFilesLines
2013-08-21i686: Skip SSE4_2 version for strcmp, strncmp, strncase, strcasecmpLiubov Dmitrieva3-0/+12
if bit_Slow_SSE4_2 is set.
2013-07-05Update x86 and x86_64 ulps on AMD FX-8350 with GCC 4.8.1.Jeroen Albers1-2/+390
2013-07-03Update i386 ULPs.Allan McRae1-0/+80
* sysdeps/i386/fpu/libm-test-ulps: Update.
2013-07-02Regenerate x86 and x86_64 ulps.Joseph Myers1-760/+86
2013-07-02Enable static 32-bit SSE4.2 strcasecmp/strncasecmpH.J. Lu2-6/+0
2013-06-28Add GLRO(dl_hwcap2) for new AT_HWCAP2 auxv_t a_type.Ryan S. Arnold1-1/+1
2013-06-12Set/restore rounding mode only when neededSiddhesh Poyarekar1-0/+173
The most common use case of math functions is with default rounding mode, i.e. rounding to nearest. Setting and restoring rounding mode is an unnecessary overhead for this, so I've added support for a context, which does the set/restore only if the FP status needs a change. The code is written such that only x86 uses these. Other architectures should be unaffected by it, but would definitely benefit if the set/restore has as much overhead relative to the rest of the code, as the x86 bits do. Here's a summary of the performance improvement due to these improvements; I've only mentioned functions that use the set/restore and have benchmark inputs for x86_64: Before: cos(): ITERS:4.69335e+08: TOTAL:28884.6Mcy, MAX:4080.28cy, MIN:57.562cy, 16248.6 calls/Mcy exp(): ITERS:4.47604e+08: TOTAL:28796.2Mcy, MAX:207.721cy, MIN:62.385cy, 15543.9 calls/Mcy pow(): ITERS:1.63485e+08: TOTAL:28879.9Mcy, MAX:362.255cy, MIN:172.469cy, 5660.86 calls/Mcy sin(): ITERS:3.89578e+08: TOTAL:28900Mcy, MAX:704.859cy, MIN:47.583cy, 13480.2 calls/Mcy tan(): ITERS:7.0971e+07: TOTAL:28902.2Mcy, MAX:1357.79cy, MIN:388.58cy, 2455.55 calls/Mcy After: cos(): ITERS:6.0014e+08: TOTAL:28875.9Mcy, MAX:364.283cy, MIN:45.716cy, 20783.4 calls/Mcy exp(): ITERS:5.48578e+08: TOTAL:28764.9Mcy, MAX:191.617cy, MIN:51.011cy, 19071.1 calls/Mcy pow(): ITERS:1.70013e+08: TOTAL:28873.6Mcy, MAX:689.522cy, MIN:163.989cy, 5888.18 calls/Mcy sin(): ITERS:4.64079e+08: TOTAL:28891.5Mcy, MAX:6959.3cy, MIN:36.189cy, 16062.8 calls/Mcy tan(): ITERS:7.2354e+07: TOTAL:28898.9Mcy, MAX:1295.57cy, MIN:380.698cy, 2503.7 calls/Mcy So the improvements are: cos: 27.9089% exp: 22.6919% pow: 4.01564% sin: 19.1585% tan: 1.96086% The downside of the change is that it will have an adverse performance impact on non-default rounding modes, but I think the tradeoff is justified.
2013-06-06Fix leading whitespaces.Ondrej Bilka4-12/+12
2013-05-31Link extra-libs consistently with libc and ld.so.Joseph Myers1-3/+0
2013-05-29Avoid crashing in LD_DEBUG when program name is unavailableSiddhesh Poyarekar1-4/+2
Resolves: #15465 The program name may be unavailable if the user application tampers with argc and argv[]. Some parts of the dynamic linker caters for this while others don't, so this patch consolidates the check and fallback into a single macro and updates all users.
2013-05-24Test drem and pow10 in libm-test.inc.Joseph Myers1-0/+9
2013-05-24Use same tests for isfinite/finite, lgamma/gamma.Joseph Myers1-0/+12
2013-05-22Don't include expected results in libm-test test names.Joseph Myers1-1800/+1800
2013-05-19Handle sincos with generic libm-test logic.Joseph Myers1-9/+9
2013-05-12Convert TEST_ff_f tests from code to data.Joseph Myers1-0/+4
2013-05-08Improve tgamma accuracy (bugs 2546, 2560, 5159, 15426).Joseph Myers1-6/+590
2013-05-01Fix catan, catanh spurious underflows (bug 15423).Joseph Myers1-0/+144
2013-04-30Fix catan, catanh inaccuracy from atan2 denominators near 0 (bug 15416).Joseph Myers1-0/+104
2013-04-27Fix catan, catanh spurious overflows (bug 15409).Joseph Myers1-0/+50
2013-04-27Update i386 libm-test ULPsAllan McRae1-0/+80
2013-04-24Fix catan, catanh inaccuracy through use of log (bug 15394).Joseph Myers1-0/+2
2013-04-17Configuring for i386 is no longer supported.Carlos O'Donell2-2/+22
We no longer support configuring for i386, nor do we elide such a configuration to i686. Configuring with i386-* is a failure, and we provide an example of how to fix that. --- 2013-04-17 Carlos O'Donell <carlos@redhat.com> * configure.in: Remove i386 configure warning. Remove i386 case. * configure: Regenerate. * sysdeps/i386/configure.in: Raise error if config_machine is i386. Add example to error message. * sysdeps/i386/configure: Regenerate.
2013-04-11libm-test.inc: Fix tests where cos(PI/2) != 0.Carlos O'Donell1-14/+0
The value of PI is never exactly PI in any floating point representation, and the value of PI/2 is never PI/2. It is wrong to expect cos(M_PI_2l) to return 0, instead it will return an answer that is non-zero because M_PI_2l doesn't round to exactly PI/2 in the type used. That is to say that the correct answer is to do the following: * Take PI or PI/2. * Round to the floating point representation. * Take the rounded value and compute an infinite precision cos or sin. * Use the rounded result of the infinite precision cos or sin as the answer to the test. I used printf to do the type rounding, and Wolfram's Alpha to do the infinite precision cos calculations. The following changes bring x86-64 and x86 to 1/2 ulp for two tests. It shows that the x86 cos implementation is quite good, and that our test are flawed. Unfortunately given that the rounding errors are type dependent we need to fix this for each type. No regressions on x86-64 or x86. --- 2013-04-11 Carlos O'Donell <carlos@redhat.com> * math/libm-test.inc (cos_test): Fix PI/2 test. (sincos_test): Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Regenerate. * sysdeps/i386/fpu/libm-test-ulps: Regenerate.
2013-04-06i386: Fail at configure time for i386 builds.Carlos O'Donell2-0/+58
This change does two things: * Treats a target i386-* as if it were i686. * Fails configure if the user is generating code for i386. We no longer support i386 code-generation because the i386 lacks the atomic operations we need in glibc. You can still configure for i386-*, but you get i686 code. You can't build with --march=i386, --mtune=i386 or a compiler that defaults to i386 code-generation. I've added two i386 entries in the master todo list to discuss merging and renaming: http://sourceware.org/glibc/wiki/Development_Todo/Master#i386 The failure modes are fail-safe here. You compile for i386, get i686, and try to run on i386 and it fails. The configure log has a warning saying we elided to i686. There is no situation that I can see where we run into any serious problems. The patch makes the current state better in that we get less confused users and we build successfully in more default configurations. The next enhancement would be to add --march=i?86 as suggested in #c20 of BZ#10062 for any i?86-* builds, which would solve the problem of a 32-bit compiler that defaults to i386 code-gen and glibc configured for i686-* target. Which previously failed at build time, and now will fail at configure time (requires adding --march=i686). Updated NEWS with BZ #10060 and #10062. No regressions. --- 2013-04-06 Carlos O'Donell <carlos@redhat.com> [BZ #10060, #10062] * aclocal.m4 (LIBC_COMPILER_BUILTIN_INLINED): New macro. * sysdeps/i386/configure.in: Use LIBC_COMPILER_BUILTIN_INLINED and fail configure if __sync_val_compare_and_swap is not inlined. * sysdeps/i386/configure: Regenerate. * configure.in: Build for i686 when configured for i386. * configure: Regenerate. * README: Remove i386 reference.
2013-04-03Refer to two GCC PRs.Thomas Schwinge1-1/+2
2013-04-02Fix cacosh inaccuracy and spurious exceptions (bug 15327).Joseph Myers1-30/+692
2013-03-30Fix casinh inaccuracy for imaginary part < 1.0, real part small (bug 10357).Joseph Myers1-152/+1030
2013-03-27Fix casinh inaccuracy near i, imaginary part > 1 (bug 15307).Joseph Myers1-0/+340
2013-03-21On 32-bit x86, disable certain tests involving sNaN values.Thomas Schwinge1-0/+26
Follow-up to commit 495ded2c8c1eb8c0ac4b54add2dd397852e19cba.
2013-03-21Fix Bessel function spurious overflows for ldbl-128 / ldbl-128ibm (bug 15285).Joseph Myers1-0/+6
2013-03-21Fix casinh inaccuracy for argument with imaginary part 1 (bug 15287).Joseph Myers1-0/+678
2013-03-20Move system-specific settings out of toplevel configure.in and config.make.in.Joseph Myers2-0/+18
2013-03-16Fix y1l spurious overflows for ldbl-96 (bug 15283).Joseph Myers1-0/+12
2013-02-21Remove remaining bounded-pointers support from i386 .S files.Joseph Myers57-470/+306
2013-02-19Remove some bounded-pointers support from i386 .S files.Joseph Myers51-477/+27
2013-02-15Remove bounded-pointers build system support.Joseph Myers1-2/+0
2013-02-15Remove miscellaneous bounded-pointers relics in C code.Joseph Myers1-1/+1
2013-02-14Remove bp-sym.h and BP_SYM uses from C code.Joseph Myers4-12/+8
2013-02-13Remove __ptrvalue, __bounded and __unbounded.Joseph Myers1-3/+1
2013-02-04Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr.Joseph Myers1-3/+0
2013-01-31Fix casinh spurious underflows away from [-i,i] (bug 15062).Joseph Myers1-0/+180
2013-01-18Fix application of the exception maskSiddhesh Poyarekar1-1/+1
Fixes BZ #14496.
2013-01-17Fix cacos real-part inaccuracy for result real part near 0 (bug 15023).Joseph Myers1-0/+6
2013-01-16Implement x86 SIZE32/SIZE64 relocationsH.J. Lu1-0/+9
2013-01-07Fix casinh, casin overflow (bug 14996).Joseph Myers1-0/+12
2013-01-05Change __x86_64 prefix in cache size to __x86H.J. Lu1-9/+0
2013-01-04Fix casinh, casin inaccuracy from cancellation (bug 14994).Joseph Myers1-0/+41
2013-01-02Update copyright notices with scripts/update-copyrights.Joseph Myers234-241/+234
2012-11-28Fix powl inaccuracy for x86_64 and x86 (bug 13881).Joseph Myers2-30/+34
2012-11-22Update i386 libm-test ULPsAndreas Schwab1-6/+12