1. Dec 08, 2016
  2. Nov 14, 2016
  3. Nov 12, 2016
  4. Nov 11, 2016
  5. Nov 09, 2016
  6. Nov 02, 2016
  7. Oct 29, 2016
  8. Oct 26, 2016
  9. Oct 25, 2016
  10. Oct 24, 2016
  11. Oct 13, 2016
  12. Oct 12, 2016
  13. Oct 10, 2016
  14. Sep 21, 2016
  15. Aug 06, 2016
  16. Aug 02, 2016
    • Carlos O'Donell's avatar
      Update for glibc 2.24 release. · fdfc9260
      Carlos O'Donell authored
      fdfc9260
    • Carlos O'Donell's avatar
      Update libc.pot and NEWS. · 3c4f81ec
      Carlos O'Donell authored
      3c4f81ec
    • Aurelien Jarno's avatar
      sparc: remove ceil, floor, trunc sparc specific implementations · 33ae5b17
      Aurelien Jarno authored
      The ceil, floor and trunc functions on sparc do not fully follow the
      standard and trigger an inexact exception when presented a value which
      is not an integer. Since glibc 2.24 this causes a few tests to fail,
      for instance:
      
        testing double (without inline functions)
        Failure: ceil (lit_pi): Exception "Inexact" set
        Failure: ceil (-lit_pi): Exception "Inexact" set
        Failure: ceil (min_subnorm_value): Exception "Inexact" set
        Failure: ceil (min_value): Exception "Inexact" set
        Failure: ceil (0.1): Exception "Inexact" set
        Failure: ceil (0.25): Exception "Inexact" set
        Failure: ceil (0.625): Exception "Inexact" set
        Failure: ceil (-min_subnorm_value): Exception "Inexact" set
        Failure: ceil (-min_value): Exception "Inexact" set
        Failure: ceil (-0.1): Exception "Inexact" set
        Failure: ceil (-0.25): Exception "Inexact" set
        Failure: ceil (-0.625): Exception "Inexact" set
      
      I tried to fix that by using the same strategy than used on other
      architectures, that is by saving the FSR register at the beginning
      and restoring it at the end of the function. When doing so I noticed
      a comment that this operation might be very costly, so I decided to
      do some benchmarks.
      
      The benchmarks below represent the time required to run each of the
      function 60 millions of times with different input value. I have done
      that in the basic V9 code, the VIS2 code, and using the default C
      implementation of the libc, for both sparc32 and sparc64, on a Niagara
      T1 based machine and an UltraSparc IIIi. Given I don't have access to a
      more recent machine), I haven't been able to test the VIS3 version. Also
      it should be noted that it doesn't make sense to do this benchmark for
      V8 or earlier as in that case we use the default C implementation. The
      results are available in the table below, the "+ fix" version correspond
      to the one saving and restoring the FSR.
      
        Niagara T1 / sparc32
        --------------------
                    ceilf    ceil     floorf   floor    truncf   trunc
        V9          19.10    22.48    19.10    22.48    16.59    19.27
        V9 + fix    19.77    23.34    19.77    23.33    17.27    20.12
        VIS2        16.87    19.62    16.87    19.62
        VIS2 + fix  17.55    20.47    17.55    20.47
        C impl      11.39    13.80    11.40    13.80    10.88    10.84
      
        Niagara T1 / sparc64
        --------------------
                    ceilf    ceil     floorf   floor    truncf   trunc
        V9          18.14    22.23    18.14    22.23    15.64    19.02
        V9 + fix    18.82    23.08    18.82    23.08    16.32    19.87
        VIS2        15.92    19.37    15.92    19.37
        VIS2 + fix  16.59    20.22    16.59    20.22
        C impl      11.39    13.60    11.39    15.36    10.88    12.65
      
        UltraSparc IIIi / sparc32
        -------------------------
                    ceilf    ceil     floorf   floor    truncf   trunc
        V9           4.81     7.09     6.61    11.64     4.91     7.05
        V9 + fix     7.20    10.42     7.14    10.54     6.76     9.47
        VIS2         4.81     7.03     4.76     7.13
        VIS2 + fix   6.76     9.51     6.71     9.63
        C impl       3.88     8.62     3.90     9.45     3.57     6.62
      
        UltraSparc IIIi / sparc64
        -------------------------
                    ceilf    ceil     floorf   floor    truncf   trunc
        V9           3.48     4.39     3.48     4.41     3.01     3.85
        V9 + fix     4.76     5.90     4.76     5.90     4.86     6.26
        VIS2         2.95     3.61     2.95     3.61
        VIS2 + fix   4.24     5.37     4.30     7.97
        C impl       3.63     4.89     3.62     6.38     3.33     4.03
      
      The first thing that should be noted is that the C implementation is
      always faster on the Niagara T1 based machine. On the UltraSparc IIIi
      the float version on sparc32 is also faster.
      
      Coming back about the fix saving and restoring the FSR, it appears
      it has a big impact as expected. In that case the C implementation is
      always faster than the fixed implementations.
      
      This patch therefore removes the sparc specific implementations in
      favor of the generic ones.
      
      Changelog:
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
      	[$(subdir) = math] (libm-sysdep_routines): Remove.
      	[$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines):
      	Remove s_ceilf-vis3, s_ceil-vis3, s_floorf-vis3, s_floor-vis3,
      	s_truncf-vis3, s_trunc-vis3.
      	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil-vis2.S: Delete
      	file.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf-vis2.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis2.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf-vis2.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_trunc-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_trunc.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_truncf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_truncf.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_ceil.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_ceilf.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_floor.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_floorf.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_trunc.S: Likewise.
      	* sysdeps/sparc/sparc32/sparcv9/fpu/s_truncf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis2.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis2.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis2.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis2.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_ceil.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_ceilf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_floor.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_floorf.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_trunc.S: Likewise.
      	* sysdeps/sparc/sparc64/fpu/s_truncf.S: Likewise.
      33ae5b17
  17. Jul 30, 2016
  18. Jul 28, 2016
    • H.J. Lu's avatar
      Don't compile do_test with -mavx/-mavx/-mavx512 · fe0cf861
      H.J. Lu authored
      Don't compile do_test with -mavx, -mavx nor -mavx512 since they won't run
      on non-AVX machines.
      
      	[BZ #20384]
      	* sysdeps/x86_64/fpu/Makefile (extra-test-objs): Add
      	test-double-libmvec-sincos-avx-main.o,
      	test-double-libmvec-sincos-avx2-main.o,
      	test-double-libmvec-sincos-main.o,
      	test-float-libmvec-sincosf-avx-main.o,
      	test-float-libmvec-sincosf-avx2-main.o and
      	test-float-libmvec-sincosf-main.o.
      	test-float-libmvec-sincosf-avx512-main.o.
      	($(objpfx)test-double-libmvec-sincos): Also link with
      	$(objpfx)test-double-libmvec-sincos-main.o.
      	($(objpfx)test-double-libmvec-sincos-avx): Also link with
      	$(objpfx)test-double-libmvec-sincos-avx-main.o.
      	($(objpfx)test-double-libmvec-sincos-avx2): Also link with
      	$(objpfx)test-double-libmvec-sincos-avx2-main.o.
      	($(objpfx)test-float-libmvec-sincosf): Also link with
      	$(objpfx)test-float-libmvec-sincosf-main.o.
      	($(objpfx)test-float-libmvec-sincosf-avx): Also link with
      	$(objpfx)test-float-libmvec-sincosf-avx2-main.o.
      	[$(config-cflags-avx512) == yes] (extra-test-objs): Add
      	test-double-libmvec-sincos-avx512-main.o and
      	($(objpfx)test-double-libmvec-sincos-avx512): Also link with
      	$(objpfx)test-double-libmvec-sincos-avx512-main.o.
      	($(objpfx)test-float-libmvec-sincosf-avx512): Also link with
      	$(objpfx)test-float-libmvec-sincosf-avx512-main.o.
      	(CFLAGS-test-double-libmvec-sincos.c): Removed.
      	(CFLAGS-test-float-libmvec-sincosf.c): Likewise.
      	(CFLAGS-test-double-libmvec-sincos-main.c): New.
      	(CFLAGS-test-double-libmvec-sincos-avx-main.c): Likewise.
      	(CFLAGS-test-double-libmvec-sincos-avx2-main.c): Likewise.
      	(CFLAGS-test-float-libmvec-sincosf-main.c): Likewise.
      	(CFLAGS-test-float-libmvec-sincosf-avx-main.c): Likewise.
      	(CFLAGS-test-float-libmvec-sincosf-avx2-main.c): Likewise.
      	(CFLAGS-test-float-libmvec-sincosf-avx512-main.c): Likewise.
      	(CFLAGS-test-double-libmvec-sincos-avx.c): Set to -DREQUIRE_AVX.
      	(CFLAGS-test-float-libmvec-sincosf-avx.c ): Likewise.
      	(CFLAGS-test-double-libmvec-sincos-avx2.c): Set to
      	-DREQUIRE_AVX2.
      	(CFLAGS-test-float-libmvec-sincosf-avx2.c ): Likewise.
      	(CFLAGS-test-double-libmvec-sincos-avx512.c): Set to
      	-DREQUIRE_AVX512F.
      	(CFLAGS-test-float-libmvec-sincosf-avx512.c): Likewise.
      	* sysdeps/x86_64/fpu/test-double-libmvec-sincos.c: Rewritten.
      	* sysdeps/x86_64/fpu/test-float-libmvec-sincosf.c: Likewise.
      	* sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx-main.c: New
      	file.
      	* sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx2-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx512-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-double-libmvec-sincos-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx2-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-float-libmvec-sincosf-avx512-main.c:
      	Likewise.
      	* sysdeps/x86_64/fpu/test-float-libmvec-sincosf-main.c:
      	Likewise.
      fe0cf861
    • Chung-Lin Tang's avatar
      3eb43b6b
  19. Jul 22, 2016
  20. Jul 21, 2016
    • Szabolcs Nagy's avatar
      [AArch64] Update libm-test-ulps · d637e923
      Szabolcs Nagy authored
      This partly reverts commit f8238ae3
      that regenerated the ulps, to make the max ulps good for gcc-5,
      gcc-6 and gcc-trunk as well.
      
      	* sysdeps/aarch64/libm-test-ulps: Updated.
      d637e923
  21. Jul 20, 2016
    • Stefan Liebler's avatar
      S390: Do not clobber r13 with memcpy on 31bit with copies >1MB. · 1f169235
      Stefan Liebler authored
      If the default memcpy variant is called with a length of >1MB on 31bit,
      r13 is clobbered as the algorithm is switching to mvcle. The mvcle code
      returns without restoring r13. All other cases are restoring r13.
      
      If memcpy is called from outside libc the ifunc resolver will only select
      this variant if running on machines older than z10.
      Otherwise or if memcpy is called from inside libc, this default memcpy
      variant is called.
      The testcase timezone/tst-tzset is triggering this issue in some combinations
      of gcc versions and optimization levels.
      
      This bug was introduced in commit 04bb21ac
      and thus is a regression compared to former glibc 2.23 release.
      
      This patch removes the usage of r13 at all. Thus it is not saved and restored.
      The base address for execute-instruction is now stored in r5 which is obtained
      after r5 is not needed anymore as 256byte block counter.
      
      ChangeLog:
      
      	* sysdeps/s390/s390-32/memcpy.S (memcpy): Eliminate the usage
      	of r13 as it is not restored in mvcle case.
      1f169235
    • Mike Frysinger's avatar
      microblaze: fix variable name collision with syscall macros · 4f69cc45
      Mike Frysinger authored
      If a function passes in a variable named "ret", the code will miscompile
      when it declares a local ret variable.  In some cases, it's even a build
      failure like so:
      ../sysdeps/unix/sysv/linux/spawni.c: In function '__spawni_child':
      ../sysdeps/unix/sysv/linux/spawni.c:289:5: error: address of register variable 'ret' requested
      	while (write_not_cancel (p, &ret, sizeof ret) < 0)
      4f69cc45
  22. Jul 19, 2016
    • Will Newton's avatar
      elf/elf.h: Add missing Meta relocations · 2c3d8883
      Will Newton authored
      2016-07-19   Will Newton  <will.newton@gmail.com>
      
      	* elf/elf.h (R_METAG_REL8, R_METAG_REL16, R_METAG_TLS_GD
      	R_METAG_TLS_LDM, R_METAG_TLS_LDO_HI16, R_METAG_TLS_LDO_LO16,
      	R_METAG_TLS_LDO, R_METAG_TLS_IE, R_METAG_TLS_IENONPIC,
      	R_METAG_TLS_IENONPIC_HI16, R_METAG_TLS_IENONPIC_LO16,
      	R_METAG_TLS_LE, R_METAG_TLS_LE_HI16, R_METAG_TLS_LE_LO16): New.
      2c3d8883
    • H.J. Lu's avatar
      i386: Compile rtld-*.os with -mno-sse -mno-mmx -mfpmath=387 · d957c4d3
      H.J. Lu authored
      Compile i386 rtld-*.os with -mno-sse -mno-mmx -mfpmath=387 so that no
      code in ld.so uses mm/xmm/ymm/zmm registers on i386 since the first 3
      mm/xmm/ymm/zmm registers are used to pass vector parameters which must
      be preserved.
      
      	* sysdeps/i386/Makefile (rtld-CFLAGS): New.
      	[subdir == elf] (CFLAGS-.os): Replace -mno-sse -mno-mmx
      	-mfpmath=387 with $(rtld-CFLAGS).
      	[subdir != elf] (CFLAGS-.os): Compile rtld-*.os with
      	$(rtld-CFLAGS).
      d957c4d3