mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Remove configure tests for AVX support.
GCC added support for -mavx and -msse2avx in version 4.4. Thus the configure tests for this support are obsolete, and this patch removes them. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by this patch). * sysdeps/i386/configure.ac (libc_cv_cc_avx): Remove configure test. (libc_cv_cc_sse2avx): Likewise. * sysdeps/i386/configure: Regenerated. * sysdeps/i386/i686/multiarch/Makefile [$(subdir)$(config-cflags-avx) = mathyes]: Change conditional to [$(subdir) = math]. * sysdeps/i386/i686/multiarch/s_fma-fma.c [HAVE_AVX_SUPPORT]: Make code unconditional. * sysdeps/i386/i686/multiarch/s_fma.c [HAVE_AVX_SUPPORT]: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf-fma.c [HAVE_AVX_SUPPORT]: Likewise. * sysdeps/i386/i686/multiarch/s_fmaf.c [HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/configure.ac (libc_cv_cc_avx): Remove configure test. (libc_cv_cc_sse2avx): Likewise. * sysdeps/x86_64/configure: Regenerated. * sysdeps/x86_64/Makefile [$(config-cflags-avx) = yes]: Make code unconditional. * sysdeps/x86_64/dl-trampoline.h (_dl_runtime_profile) [HAVE_AVX_SUPPORT || HAVE_AVX512_ASM_SUPPORT]: Make code unconditional. (_dl_runtime_profile) [!(HAVE_AVX_SUPPORT || HAVE_AVX512_ASM_SUPPORT)]: Remove conditional code. * sysdeps/x86_64/fpu/multiarch/Makefile [$(config-cflags-sse2avx) = yes]: Make code unconditional. * sysdeps/x86_64/fpu/multiarch/e_atan2.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/e_exp.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/e_log.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/s_atan.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fma.c [HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c [HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/s_sin.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/fpu/multiarch/s_tan.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise. * sysdeps/x86_64/multiarch/strcmp.S [HAVE_AVX_SUPPORT]: Likewise. * config.h.in (HAVE_AVX_SUPPORT): Remove #undef. (HAVE_SSE2AVX_SUPPORT): Likewise.
This commit is contained in:
parent
104ff17183
commit
1b12cd7f4d
51
ChangeLog
51
ChangeLog
@ -1,3 +1,54 @@
|
|||||||
|
2015-10-08 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* sysdeps/i386/configure.ac (libc_cv_cc_avx): Remove configure
|
||||||
|
test.
|
||||||
|
(libc_cv_cc_sse2avx): Likewise.
|
||||||
|
* sysdeps/i386/configure: Regenerated.
|
||||||
|
* sysdeps/i386/i686/multiarch/Makefile
|
||||||
|
[$(subdir)$(config-cflags-avx) = mathyes]: Change conditional to
|
||||||
|
[$(subdir) = math].
|
||||||
|
* sysdeps/i386/i686/multiarch/s_fma-fma.c [HAVE_AVX_SUPPORT]: Make
|
||||||
|
code unconditional.
|
||||||
|
* sysdeps/i386/i686/multiarch/s_fma.c [HAVE_AVX_SUPPORT]:
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/i386/i686/multiarch/s_fmaf-fma.c [HAVE_AVX_SUPPORT]:
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/i386/i686/multiarch/s_fmaf.c [HAVE_AVX_SUPPORT]:
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/x86_64/configure.ac (libc_cv_cc_avx): Remove configure
|
||||||
|
test.
|
||||||
|
(libc_cv_cc_sse2avx): Likewise.
|
||||||
|
* sysdeps/x86_64/configure: Regenerated.
|
||||||
|
* sysdeps/x86_64/Makefile [$(config-cflags-avx) = yes]: Make code
|
||||||
|
unconditional.
|
||||||
|
* sysdeps/x86_64/dl-trampoline.h (_dl_runtime_profile)
|
||||||
|
[HAVE_AVX_SUPPORT || HAVE_AVX512_ASM_SUPPORT]: Make code
|
||||||
|
unconditional.
|
||||||
|
(_dl_runtime_profile)
|
||||||
|
[!(HAVE_AVX_SUPPORT || HAVE_AVX512_ASM_SUPPORT)]: Remove
|
||||||
|
conditional code.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/Makefile
|
||||||
|
[$(config-cflags-sse2avx) = yes]: Make code unconditional.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/e_atan2.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/e_exp.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/e_log.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/s_atan.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/s_fma.c [HAVE_AVX_SUPPORT]:
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/s_fmaf.c [HAVE_AVX_SUPPORT]:
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/s_sin.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/multiarch/s_tan.c
|
||||||
|
[HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* sysdeps/x86_64/multiarch/strcmp.S [HAVE_AVX_SUPPORT]: Likewise.
|
||||||
|
* config.h.in (HAVE_AVX_SUPPORT): Remove #undef.
|
||||||
|
(HAVE_SSE2AVX_SUPPORT): Likewise.
|
||||||
|
|
||||||
2015-10-07 Paul Pluzhnikov <ppluzhnikov@google.com>
|
2015-10-07 Paul Pluzhnikov <ppluzhnikov@google.com>
|
||||||
|
|
||||||
* stdio-common/tst-printf-bz18872.sh: Use attribute optimize
|
* stdio-common/tst-printf-bz18872.sh: Use attribute optimize
|
||||||
|
@ -76,12 +76,6 @@
|
|||||||
/* Define if _rtld_local structure should be forced into .sdata section. */
|
/* Define if _rtld_local structure should be forced into .sdata section. */
|
||||||
#undef HAVE_SDATA_SECTION
|
#undef HAVE_SDATA_SECTION
|
||||||
|
|
||||||
/* Define if gcc supports AVX. */
|
|
||||||
#undef HAVE_AVX_SUPPORT
|
|
||||||
|
|
||||||
/* Define if gcc supports VEX encoding. */
|
|
||||||
#undef HAVE_SSE2AVX_SUPPORT
|
|
||||||
|
|
||||||
/* Define if compiler supports AVX512. */
|
/* Define if compiler supports AVX512. */
|
||||||
#undef HAVE_AVX512_SUPPORT
|
#undef HAVE_AVX512_SUPPORT
|
||||||
|
|
||||||
|
52
sysdeps/i386/configure
vendored
52
sysdeps/i386/configure
vendored
@ -114,58 +114,6 @@ $as_echo "$libc_cv_as_i686" >&6; }
|
|||||||
config_vars="$config_vars
|
config_vars="$config_vars
|
||||||
config-asflags-i686 = $libc_cv_as_i686"
|
config-asflags-i686 = $libc_cv_as_i686"
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX support" >&5
|
|
||||||
$as_echo_n "checking for AVX support... " >&6; }
|
|
||||||
if ${libc_cv_cc_avx+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null'
|
|
||||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
|
||||||
(eval $ac_try) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
test $ac_status = 0; }; }; then :
|
|
||||||
libc_cv_cc_avx=yes
|
|
||||||
else
|
|
||||||
libc_cv_cc_avx=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx" >&5
|
|
||||||
$as_echo "$libc_cv_cc_avx" >&6; }
|
|
||||||
if test $libc_cv_cc_avx = yes; then
|
|
||||||
$as_echo "#define HAVE_AVX_SUPPORT 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
config_vars="$config_vars
|
|
||||||
config-cflags-avx = $libc_cv_cc_avx"
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5
|
|
||||||
$as_echo_n "checking for AVX encoding of SSE instructions... " >&6; }
|
|
||||||
if ${libc_cv_cc_sse2avx+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
if { ac_try='${CC-cc} -msse2avx -xc /dev/null -S -o /dev/null'
|
|
||||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
|
||||||
(eval $ac_try) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
test $ac_status = 0; }; }; then :
|
|
||||||
libc_cv_cc_sse2avx=yes
|
|
||||||
else
|
|
||||||
libc_cv_cc_sse2avx=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_sse2avx" >&5
|
|
||||||
$as_echo "$libc_cv_cc_sse2avx" >&6; }
|
|
||||||
if test $libc_cv_cc_sse2avx = yes; then
|
|
||||||
$as_echo "#define HAVE_SSE2AVX_SUPPORT 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
config_vars="$config_vars
|
|
||||||
config-cflags-sse2avx = $libc_cv_cc_sse2avx"
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5
|
||||||
$as_echo_n "checking for FMA4 support... " >&6; }
|
$as_echo_n "checking for FMA4 support... " >&6; }
|
||||||
if ${libc_cv_cc_fma4+:} false; then :
|
if ${libc_cv_cc_fma4+:} false; then :
|
||||||
|
@ -42,26 +42,6 @@ LIBC_TRY_CC_OPTION([-Wa,-mtune=i686],
|
|||||||
])
|
])
|
||||||
LIBC_CONFIG_VAR([config-asflags-i686], [$libc_cv_as_i686])
|
LIBC_CONFIG_VAR([config-asflags-i686], [$libc_cv_as_i686])
|
||||||
|
|
||||||
dnl Check if -mavx works.
|
|
||||||
AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
|
|
||||||
LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no])
|
|
||||||
])
|
|
||||||
if test $libc_cv_cc_avx = yes; then
|
|
||||||
AC_DEFINE(HAVE_AVX_SUPPORT)
|
|
||||||
fi
|
|
||||||
LIBC_CONFIG_VAR([config-cflags-avx], [$libc_cv_cc_avx])
|
|
||||||
|
|
||||||
dnl Check if -msse2avx works.
|
|
||||||
AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl
|
|
||||||
LIBC_TRY_CC_OPTION([-msse2avx],
|
|
||||||
[libc_cv_cc_sse2avx=yes],
|
|
||||||
[libc_cv_cc_sse2avx=no])
|
|
||||||
])
|
|
||||||
if test $libc_cv_cc_sse2avx = yes; then
|
|
||||||
AC_DEFINE(HAVE_SSE2AVX_SUPPORT)
|
|
||||||
fi
|
|
||||||
LIBC_CONFIG_VAR([config-cflags-sse2avx], [$libc_cv_cc_sse2avx])
|
|
||||||
|
|
||||||
dnl Check if -mfma4 works.
|
dnl Check if -mfma4 works.
|
||||||
AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl
|
AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl
|
||||||
LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no])
|
LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no])
|
||||||
|
@ -38,7 +38,7 @@ sysdep_routines += wcscmp-sse2 wcscmp-c wcslen-sse2 wcslen-c \
|
|||||||
wcschr-c wcsrchr-sse2 wcsrchr-c wcscpy-ssse3 wcscpy-c
|
wcschr-c wcsrchr-sse2 wcsrchr-c wcscpy-ssse3 wcscpy-c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (mathyes,$(subdir)$(config-cflags-avx))
|
ifeq ($(subdir),math)
|
||||||
libm-sysdep_routines += s_fma-fma s_fmaf-fma
|
libm-sysdep_routines += s_fma-fma s_fmaf-fma
|
||||||
CFLAGS-s_fma-fma.c += -mavx -mfpmath=sse
|
CFLAGS-s_fma-fma.c += -mavx -mfpmath=sse
|
||||||
CFLAGS-s_fmaf-fma.c += -mavx -mfpmath=sse
|
CFLAGS-s_fmaf-fma.c += -mavx -mfpmath=sse
|
||||||
|
@ -19,11 +19,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
double
|
double
|
||||||
__fma_fma (double x, double y, double z)
|
__fma_fma (double x, double y, double z)
|
||||||
{
|
{
|
||||||
asm ("vfmadd213sd %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
|
asm ("vfmadd213sd %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <init-arch.h>
|
#include <init-arch.h>
|
||||||
|
|
||||||
@ -30,7 +29,6 @@ libm_ifunc (__fma,
|
|||||||
HAS_ARCH_FEATURE (FMA_Usable) ? __fma_fma : __fma_ia32);
|
HAS_ARCH_FEATURE (FMA_Usable) ? __fma_fma : __fma_ia32);
|
||||||
weak_alias (__fma, fma)
|
weak_alias (__fma, fma)
|
||||||
|
|
||||||
# define __fma __fma_ia32
|
#define __fma __fma_ia32
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/ldbl-96/s_fma.c>
|
#include <sysdeps/ieee754/ldbl-96/s_fma.c>
|
||||||
|
@ -19,11 +19,9 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
float
|
float
|
||||||
__fmaf_fma (float x, float y, float z)
|
__fmaf_fma (float x, float y, float z)
|
||||||
{
|
{
|
||||||
asm ("vfmadd213ss %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
|
asm ("vfmadd213ss %3, %2, %0" : "=x" (x) : "0" (x), "x" (y), "xm" (z));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <init-arch.h>
|
#include <init-arch.h>
|
||||||
|
|
||||||
@ -30,7 +29,6 @@ libm_ifunc (__fmaf,
|
|||||||
HAS_ARCH_FEATURE (FMA_Usable) ? __fmaf_fma : __fmaf_ia32);
|
HAS_ARCH_FEATURE (FMA_Usable) ? __fmaf_fma : __fmaf_ia32);
|
||||||
weak_alias (__fmaf, fmaf)
|
weak_alias (__fmaf, fmaf)
|
||||||
|
|
||||||
# define __fmaf __fmaf_ia32
|
#define __fmaf __fmaf_ia32
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_fmaf.c>
|
#include <sysdeps/ieee754/dbl-64/s_fmaf.c>
|
||||||
|
@ -43,10 +43,7 @@ tests-pie += $(quad-pie-test)
|
|||||||
$(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o
|
$(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o
|
||||||
$(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o
|
$(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o
|
||||||
|
|
||||||
tests += tst-audit3 tst-audit4 tst-audit5 tst-audit10
|
tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7 tst-audit10
|
||||||
ifeq (yes,$(config-cflags-avx))
|
|
||||||
tests += tst-audit6 tst-audit7
|
|
||||||
endif
|
|
||||||
|
|
||||||
tests += tst-split-dynreloc
|
tests += tst-split-dynreloc
|
||||||
LDFLAGS-tst-split-dynreloc = -Wl,-T,$(..)sysdeps/x86_64/tst-split-dynreloc.lds
|
LDFLAGS-tst-split-dynreloc = -Wl,-T,$(..)sysdeps/x86_64/tst-split-dynreloc.lds
|
||||||
@ -84,7 +81,6 @@ $(objpfx)tst-audit10: $(objpfx)tst-auditmod10a.so
|
|||||||
$(objpfx)tst-audit10.out: $(objpfx)tst-auditmod10b.so
|
$(objpfx)tst-audit10.out: $(objpfx)tst-auditmod10b.so
|
||||||
tst-audit10-ENV = LD_AUDIT=$(objpfx)tst-auditmod10b.so
|
tst-audit10-ENV = LD_AUDIT=$(objpfx)tst-auditmod10b.so
|
||||||
|
|
||||||
ifeq (yes,$(config-cflags-avx))
|
|
||||||
AVX-CFLAGS=-mavx
|
AVX-CFLAGS=-mavx
|
||||||
ifeq (yes,$(config-cflags-novzeroupper))
|
ifeq (yes,$(config-cflags-novzeroupper))
|
||||||
AVX-CFLAGS+=-mno-vzeroupper
|
AVX-CFLAGS+=-mno-vzeroupper
|
||||||
@ -95,7 +91,6 @@ CFLAGS-tst-auditmod4b.c += $(AVX-CFLAGS)
|
|||||||
CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS)
|
CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS)
|
||||||
CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS)
|
CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS)
|
||||||
CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS)
|
CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS)
|
||||||
endif
|
|
||||||
ifeq (yes,$(config-cflags-avx512))
|
ifeq (yes,$(config-cflags-avx512))
|
||||||
AVX512-CFLAGS = -mavx512f
|
AVX512-CFLAGS = -mavx512f
|
||||||
CFLAGS-tst-audit10.c += $(AVX512-CFLAGS)
|
CFLAGS-tst-audit10.c += $(AVX512-CFLAGS)
|
||||||
|
52
sysdeps/x86_64/configure
vendored
52
sysdeps/x86_64/configure
vendored
@ -43,32 +43,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX support" >&5
|
|
||||||
$as_echo_n "checking for AVX support... " >&6; }
|
|
||||||
if ${libc_cv_cc_avx+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null'
|
|
||||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
|
||||||
(eval $ac_try) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
test $ac_status = 0; }; }; then :
|
|
||||||
libc_cv_cc_avx=yes
|
|
||||||
else
|
|
||||||
libc_cv_cc_avx=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx" >&5
|
|
||||||
$as_echo "$libc_cv_cc_avx" >&6; }
|
|
||||||
if test $libc_cv_cc_avx = yes; then
|
|
||||||
$as_echo "#define HAVE_AVX_SUPPORT 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
config_vars="$config_vars
|
|
||||||
config-cflags-avx = $libc_cv_cc_avx"
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX512 support in assembler" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX512 support in assembler" >&5
|
||||||
$as_echo_n "checking for AVX512 support in assembler... " >&6; }
|
$as_echo_n "checking for AVX512 support in assembler... " >&6; }
|
||||||
if ${libc_cv_asm_avx512+:} false; then :
|
if ${libc_cv_asm_avx512+:} false; then :
|
||||||
@ -123,32 +97,6 @@ fi
|
|||||||
config_vars="$config_vars
|
config_vars="$config_vars
|
||||||
config-cflags-avx512 = $libc_cv_cc_avx512"
|
config-cflags-avx512 = $libc_cv_cc_avx512"
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5
|
|
||||||
$as_echo_n "checking for AVX encoding of SSE instructions... " >&6; }
|
|
||||||
if ${libc_cv_cc_sse2avx+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
|
||||||
else
|
|
||||||
if { ac_try='${CC-cc} -msse2avx -xc /dev/null -S -o /dev/null'
|
|
||||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
|
||||||
(eval $ac_try) 2>&5
|
|
||||||
ac_status=$?
|
|
||||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
||||||
test $ac_status = 0; }; }; then :
|
|
||||||
libc_cv_cc_sse2avx=yes
|
|
||||||
else
|
|
||||||
libc_cv_cc_sse2avx=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_sse2avx" >&5
|
|
||||||
$as_echo "$libc_cv_cc_sse2avx" >&6; }
|
|
||||||
if test $libc_cv_cc_sse2avx = yes; then
|
|
||||||
$as_echo "#define HAVE_SSE2AVX_SUPPORT 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
config_vars="$config_vars
|
|
||||||
config-cflags-sse2avx = $libc_cv_cc_sse2avx"
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5
|
||||||
$as_echo_n "checking for FMA4 support... " >&6; }
|
$as_echo_n "checking for FMA4 support... " >&6; }
|
||||||
if ${libc_cv_cc_fma4+:} false; then :
|
if ${libc_cv_cc_fma4+:} false; then :
|
||||||
|
@ -5,15 +5,6 @@ AC_CHECK_HEADER([cpuid.h], ,
|
|||||||
[AC_MSG_ERROR([gcc must provide the <cpuid.h> header])],
|
[AC_MSG_ERROR([gcc must provide the <cpuid.h> header])],
|
||||||
[/* No default includes. */])
|
[/* No default includes. */])
|
||||||
|
|
||||||
dnl Check if -mavx works.
|
|
||||||
AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
|
|
||||||
LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no])
|
|
||||||
])
|
|
||||||
if test $libc_cv_cc_avx = yes; then
|
|
||||||
AC_DEFINE(HAVE_AVX_SUPPORT)
|
|
||||||
fi
|
|
||||||
LIBC_CONFIG_VAR([config-cflags-avx], [$libc_cv_cc_avx])
|
|
||||||
|
|
||||||
dnl Check if asm supports AVX512.
|
dnl Check if asm supports AVX512.
|
||||||
AC_CACHE_CHECK(for AVX512 support in assembler, libc_cv_asm_avx512, [dnl
|
AC_CACHE_CHECK(for AVX512 support in assembler, libc_cv_asm_avx512, [dnl
|
||||||
cat > conftest.s <<\EOF
|
cat > conftest.s <<\EOF
|
||||||
@ -39,17 +30,6 @@ if test $libc_cv_cc_avx512 = yes; then
|
|||||||
fi
|
fi
|
||||||
LIBC_CONFIG_VAR([config-cflags-avx512], [$libc_cv_cc_avx512])
|
LIBC_CONFIG_VAR([config-cflags-avx512], [$libc_cv_cc_avx512])
|
||||||
|
|
||||||
dnl Check if -msse2avx works.
|
|
||||||
AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl
|
|
||||||
LIBC_TRY_CC_OPTION([-msse2avx],
|
|
||||||
[libc_cv_cc_sse2avx=yes],
|
|
||||||
[libc_cv_cc_sse2avx=no])
|
|
||||||
])
|
|
||||||
if test $libc_cv_cc_sse2avx = yes; then
|
|
||||||
AC_DEFINE(HAVE_SSE2AVX_SUPPORT)
|
|
||||||
fi
|
|
||||||
LIBC_CONFIG_VAR([config-cflags-sse2avx], [$libc_cv_cc_sse2avx])
|
|
||||||
|
|
||||||
dnl Check if -mfma4 works.
|
dnl Check if -mfma4 works.
|
||||||
AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl
|
AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl
|
||||||
LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no])
|
LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no])
|
||||||
|
@ -204,14 +204,10 @@ _dl_runtime_profile:
|
|||||||
|
|
||||||
/* Actively align the La_x86_64_regs structure. */
|
/* Actively align the La_x86_64_regs structure. */
|
||||||
and $-VEC_SIZE, %RSP_LP
|
and $-VEC_SIZE, %RSP_LP
|
||||||
# if defined HAVE_AVX_SUPPORT || defined HAVE_AVX512_ASM_SUPPORT
|
|
||||||
/* sizeof(La_x86_64_regs). Need extra space for 8 SSE registers
|
/* sizeof(La_x86_64_regs). Need extra space for 8 SSE registers
|
||||||
to detect if any xmm0-xmm7 registers are changed by audit
|
to detect if any xmm0-xmm7 registers are changed by audit
|
||||||
module. */
|
module. */
|
||||||
sub $(LR_SIZE + XMM_SIZE*8), %RSP_LP
|
sub $(LR_SIZE + XMM_SIZE*8), %RSP_LP
|
||||||
# else
|
|
||||||
sub $LR_SIZE, %RSP_LP # sizeof(La_x86_64_regs)
|
|
||||||
# endif
|
|
||||||
movq %rsp, 24(%rbx)
|
movq %rsp, 24(%rbx)
|
||||||
|
|
||||||
/* Fill the La_x86_64_regs structure. */
|
/* Fill the La_x86_64_regs structure. */
|
||||||
|
@ -33,7 +33,6 @@ CFLAGS-s_sin-fma4.c = -mfma4
|
|||||||
CFLAGS-s_tan-fma4.c = -mfma4
|
CFLAGS-s_tan-fma4.c = -mfma4
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(config-cflags-sse2avx),yes)
|
|
||||||
libm-sysdep_routines += e_exp-avx e_log-avx s_atan-avx \
|
libm-sysdep_routines += e_exp-avx e_log-avx s_atan-avx \
|
||||||
e_atan2-avx s_sin-avx s_tan-avx \
|
e_atan2-avx s_sin-avx s_tan-avx \
|
||||||
mplog-avx mpa-avx slowexp-avx \
|
mplog-avx mpa-avx slowexp-avx \
|
||||||
@ -50,7 +49,6 @@ CFLAGS-s_sin-avx.c = -msse2avx -DSSE2AVX
|
|||||||
CFLAGS-slowexp-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-slowexp-avx.c = -msse2avx -DSSE2AVX
|
||||||
CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
|
CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(subdir),mathvec)
|
ifeq ($(subdir),mathvec)
|
||||||
libmvec-sysdep_routines += svml_d_cos2_core_sse4 svml_d_cos4_core_avx2 \
|
libmvec-sysdep_routines += svml_d_cos2_core_sse4 svml_d_cos4_core_avx2 \
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
#include <math_private.h>
|
||||||
# include <math_private.h>
|
|
||||||
|
|
||||||
extern double __ieee754_atan2_sse2 (double, double);
|
extern double __ieee754_atan2_sse2 (double, double);
|
||||||
extern double __ieee754_atan2_avx (double, double);
|
extern double __ieee754_atan2_avx (double, double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __ieee754_atan2_fma4 (double, double);
|
extern double __ieee754_atan2_fma4 (double, double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __ieee754_atan2_fma4 ((void *) 0)
|
# define __ieee754_atan2_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (__ieee754_atan2,
|
libm_ifunc (__ieee754_atan2,
|
||||||
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_atan2_fma4
|
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_atan2_fma4
|
||||||
@ -19,8 +18,7 @@ libm_ifunc (__ieee754_atan2,
|
|||||||
? __ieee754_atan2_avx : __ieee754_atan2_sse2));
|
? __ieee754_atan2_avx : __ieee754_atan2_sse2));
|
||||||
strong_alias (__ieee754_atan2, __atan2_finite)
|
strong_alias (__ieee754_atan2, __atan2_finite)
|
||||||
|
|
||||||
# define __ieee754_atan2 __ieee754_atan2_sse2
|
#define __ieee754_atan2 __ieee754_atan2_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/e_atan2.c>
|
#include <sysdeps/ieee754/dbl-64/e_atan2.c>
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
#include <math_private.h>
|
||||||
# include <math_private.h>
|
|
||||||
|
|
||||||
extern double __ieee754_exp_sse2 (double);
|
extern double __ieee754_exp_sse2 (double);
|
||||||
extern double __ieee754_exp_avx (double);
|
extern double __ieee754_exp_avx (double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __ieee754_exp_fma4 (double);
|
extern double __ieee754_exp_fma4 (double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __ieee754_exp_fma4 ((void *) 0)
|
# define __ieee754_exp_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (__ieee754_exp,
|
libm_ifunc (__ieee754_exp,
|
||||||
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_exp_fma4
|
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_exp_fma4
|
||||||
@ -19,8 +18,7 @@ libm_ifunc (__ieee754_exp,
|
|||||||
? __ieee754_exp_avx : __ieee754_exp_sse2));
|
? __ieee754_exp_avx : __ieee754_exp_sse2));
|
||||||
strong_alias (__ieee754_exp, __exp_finite)
|
strong_alias (__ieee754_exp, __exp_finite)
|
||||||
|
|
||||||
# define __ieee754_exp __ieee754_exp_sse2
|
#define __ieee754_exp __ieee754_exp_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/e_exp.c>
|
#include <sysdeps/ieee754/dbl-64/e_exp.c>
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
#include <math_private.h>
|
||||||
# include <math_private.h>
|
|
||||||
|
|
||||||
extern double __ieee754_log_sse2 (double);
|
extern double __ieee754_log_sse2 (double);
|
||||||
extern double __ieee754_log_avx (double);
|
extern double __ieee754_log_avx (double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __ieee754_log_fma4 (double);
|
extern double __ieee754_log_fma4 (double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __ieee754_log_fma4 ((void *) 0)
|
# define __ieee754_log_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (__ieee754_log,
|
libm_ifunc (__ieee754_log,
|
||||||
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_log_fma4
|
HAS_ARCH_FEATURE (FMA4_Usable) ? __ieee754_log_fma4
|
||||||
@ -19,8 +18,7 @@ libm_ifunc (__ieee754_log,
|
|||||||
? __ieee754_log_avx : __ieee754_log_sse2));
|
? __ieee754_log_avx : __ieee754_log_sse2));
|
||||||
strong_alias (__ieee754_log, __log_finite)
|
strong_alias (__ieee754_log, __log_finite)
|
||||||
|
|
||||||
# define __ieee754_log __ieee754_log_sse2
|
#define __ieee754_log __ieee754_log_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/e_log.c>
|
#include <sysdeps/ieee754/dbl-64/e_log.c>
|
||||||
|
@ -1,23 +1,21 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
|
||||||
|
|
||||||
extern double __atan_sse2 (double);
|
extern double __atan_sse2 (double);
|
||||||
extern double __atan_avx (double);
|
extern double __atan_avx (double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __atan_fma4 (double);
|
extern double __atan_fma4 (double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __atan_fma4 ((void *) 0)
|
# define __atan_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (atan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __atan_fma4 :
|
libm_ifunc (atan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __atan_fma4 :
|
||||||
HAS_ARCH_FEATURE (AVX_Usable)
|
HAS_ARCH_FEATURE (AVX_Usable)
|
||||||
? __atan_avx : __atan_sse2));
|
? __atan_avx : __atan_sse2));
|
||||||
|
|
||||||
# define atan __atan_sse2
|
#define atan __atan_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_atan.c>
|
#include <sysdeps/ieee754/dbl-64/s_atan.c>
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <init-arch.h>
|
#include <init-arch.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
|
|
||||||
extern double __fma_sse2 (double x, double y, double z) attribute_hidden;
|
extern double __fma_sse2 (double x, double y, double z) attribute_hidden;
|
||||||
|
|
||||||
|
|
||||||
@ -34,18 +32,18 @@ __fma_fma3 (double x, double y, double z)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
static double
|
static double
|
||||||
__fma_fma4 (double x, double y, double z)
|
__fma_fma4 (double x, double y, double z)
|
||||||
{
|
{
|
||||||
asm ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
asm ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __fma_fma4 ((void *) 0)
|
# define __fma_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
libm_ifunc (__fma, HAS_ARCH_FEATURE (FMA_Usable)
|
libm_ifunc (__fma, HAS_ARCH_FEATURE (FMA_Usable)
|
||||||
@ -53,7 +51,6 @@ libm_ifunc (__fma, HAS_ARCH_FEATURE (FMA_Usable)
|
|||||||
? __fma_fma4 : __fma_sse2));
|
? __fma_fma4 : __fma_sse2));
|
||||||
weak_alias (__fma, fma)
|
weak_alias (__fma, fma)
|
||||||
|
|
||||||
# define __fma __fma_sse2
|
#define __fma __fma_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_fma.c>
|
#include <sysdeps/ieee754/dbl-64/s_fma.c>
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <init-arch.h>
|
#include <init-arch.h>
|
||||||
|
|
||||||
#ifdef HAVE_AVX_SUPPORT
|
|
||||||
|
|
||||||
extern float __fmaf_sse2 (float x, float y, float z) attribute_hidden;
|
extern float __fmaf_sse2 (float x, float y, float z) attribute_hidden;
|
||||||
|
|
||||||
|
|
||||||
@ -33,18 +31,18 @@ __fmaf_fma3 (float x, float y, float z)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
static float
|
static float
|
||||||
__fmaf_fma4 (float x, float y, float z)
|
__fmaf_fma4 (float x, float y, float z)
|
||||||
{
|
{
|
||||||
asm ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
asm ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __fmaf_fma4 ((void *) 0)
|
# define __fmaf_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
libm_ifunc (__fmaf, HAS_ARCH_FEATURE (FMA_Usable)
|
libm_ifunc (__fmaf, HAS_ARCH_FEATURE (FMA_Usable)
|
||||||
@ -52,7 +50,6 @@ libm_ifunc (__fmaf, HAS_ARCH_FEATURE (FMA_Usable)
|
|||||||
? __fmaf_fma4 : __fmaf_sse2));
|
? __fmaf_fma4 : __fmaf_sse2));
|
||||||
weak_alias (__fmaf, fmaf)
|
weak_alias (__fmaf, fmaf)
|
||||||
|
|
||||||
# define __fmaf __fmaf_sse2
|
#define __fmaf __fmaf_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_fmaf.c>
|
#include <sysdeps/ieee754/dbl-64/s_fmaf.c>
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
#undef NAN
|
||||||
# undef NAN
|
|
||||||
|
|
||||||
extern double __cos_sse2 (double);
|
extern double __cos_sse2 (double);
|
||||||
extern double __sin_sse2 (double);
|
extern double __sin_sse2 (double);
|
||||||
extern double __cos_avx (double);
|
extern double __cos_avx (double);
|
||||||
extern double __sin_avx (double);
|
extern double __sin_avx (double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __cos_fma4 (double);
|
extern double __cos_fma4 (double);
|
||||||
extern double __sin_fma4 (double);
|
extern double __sin_fma4 (double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __cos_fma4 ((void *) 0)
|
# define __cos_fma4 ((void *) 0)
|
||||||
# define __sin_fma4 ((void *) 0)
|
# define __sin_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (__cos, (HAS_ARCH_FEATURE (FMA4_Usable) ? __cos_fma4 :
|
libm_ifunc (__cos, (HAS_ARCH_FEATURE (FMA4_Usable) ? __cos_fma4 :
|
||||||
HAS_ARCH_FEATURE (AVX_Usable)
|
HAS_ARCH_FEATURE (AVX_Usable)
|
||||||
@ -27,9 +26,8 @@ libm_ifunc (__sin, (HAS_ARCH_FEATURE (FMA4_Usable) ? __sin_fma4 :
|
|||||||
? __sin_avx : __sin_sse2));
|
? __sin_avx : __sin_sse2));
|
||||||
weak_alias (__sin, sin)
|
weak_alias (__sin, sin)
|
||||||
|
|
||||||
# define __cos __cos_sse2
|
#define __cos __cos_sse2
|
||||||
# define __sin __sin_sse2
|
#define __sin __sin_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_sin.c>
|
#include <sysdeps/ieee754/dbl-64/s_sin.c>
|
||||||
|
@ -1,23 +1,21 @@
|
|||||||
#if defined HAVE_FMA4_SUPPORT || defined HAVE_AVX_SUPPORT
|
#include <init-arch.h>
|
||||||
# include <init-arch.h>
|
#include <math.h>
|
||||||
# include <math.h>
|
|
||||||
|
|
||||||
extern double __tan_sse2 (double);
|
extern double __tan_sse2 (double);
|
||||||
extern double __tan_avx (double);
|
extern double __tan_avx (double);
|
||||||
# ifdef HAVE_FMA4_SUPPORT
|
#ifdef HAVE_FMA4_SUPPORT
|
||||||
extern double __tan_fma4 (double);
|
extern double __tan_fma4 (double);
|
||||||
# else
|
#else
|
||||||
# undef HAS_ARCH_FEATURE
|
# undef HAS_ARCH_FEATURE
|
||||||
# define HAS_ARCH_FEATURE(feature) 0
|
# define HAS_ARCH_FEATURE(feature) 0
|
||||||
# define __tan_fma4 ((void *) 0)
|
# define __tan_fma4 ((void *) 0)
|
||||||
# endif
|
#endif
|
||||||
|
|
||||||
libm_ifunc (tan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __tan_fma4 :
|
libm_ifunc (tan, (HAS_ARCH_FEATURE (FMA4_Usable) ? __tan_fma4 :
|
||||||
HAS_ARCH_FEATURE (AVX_Usable)
|
HAS_ARCH_FEATURE (AVX_Usable)
|
||||||
? __tan_avx : __tan_sse2));
|
? __tan_avx : __tan_sse2));
|
||||||
|
|
||||||
# define tan __tan_sse2
|
#define tan __tan_sse2
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include <sysdeps/ieee754/dbl-64/s_tan.c>
|
#include <sysdeps/ieee754/dbl-64/s_tan.c>
|
||||||
|
@ -107,11 +107,9 @@ END(STRCMP)
|
|||||||
ENTRY(__strcasecmp)
|
ENTRY(__strcasecmp)
|
||||||
.type __strcasecmp, @gnu_indirect_function
|
.type __strcasecmp, @gnu_indirect_function
|
||||||
LOAD_RTLD_GLOBAL_RO_RDX
|
LOAD_RTLD_GLOBAL_RO_RDX
|
||||||
# ifdef HAVE_AVX_SUPPORT
|
|
||||||
leaq __strcasecmp_avx(%rip), %rax
|
leaq __strcasecmp_avx(%rip), %rax
|
||||||
HAS_ARCH_FEATURE (AVX_Usable)
|
HAS_ARCH_FEATURE (AVX_Usable)
|
||||||
jnz 3f
|
jnz 3f
|
||||||
# endif
|
|
||||||
HAS_ARCH_FEATURE (Slow_SSE4_2)
|
HAS_ARCH_FEATURE (Slow_SSE4_2)
|
||||||
jnz 2f
|
jnz 2f
|
||||||
leaq __strcasecmp_sse42(%rip), %rax
|
leaq __strcasecmp_sse42(%rip), %rax
|
||||||
@ -129,11 +127,9 @@ weak_alias (__strcasecmp, strcasecmp)
|
|||||||
ENTRY(__strncasecmp)
|
ENTRY(__strncasecmp)
|
||||||
.type __strncasecmp, @gnu_indirect_function
|
.type __strncasecmp, @gnu_indirect_function
|
||||||
LOAD_RTLD_GLOBAL_RO_RDX
|
LOAD_RTLD_GLOBAL_RO_RDX
|
||||||
# ifdef HAVE_AVX_SUPPORT
|
|
||||||
leaq __strncasecmp_avx(%rip), %rax
|
leaq __strncasecmp_avx(%rip), %rax
|
||||||
HAS_ARCH_FEATURE (AVX_Usable)
|
HAS_ARCH_FEATURE (AVX_Usable)
|
||||||
jnz 3f
|
jnz 3f
|
||||||
# endif
|
|
||||||
HAS_ARCH_FEATURE (Slow_SSE4_2)
|
HAS_ARCH_FEATURE (Slow_SSE4_2)
|
||||||
jnz 2f
|
jnz 2f
|
||||||
leaq __strncasecmp_sse42(%rip), %rax
|
leaq __strncasecmp_sse42(%rip), %rax
|
||||||
@ -155,16 +151,14 @@ weak_alias (__strncasecmp, strncasecmp)
|
|||||||
# include "strcmp-sse42.S"
|
# include "strcmp-sse42.S"
|
||||||
|
|
||||||
|
|
||||||
# ifdef HAVE_AVX_SUPPORT
|
# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
|
||||||
# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
|
# define LABEL(l) .L##l##_avx
|
||||||
# define LABEL(l) .L##l##_avx
|
# define GLABEL(l) l##_avx
|
||||||
# define GLABEL(l) l##_avx
|
# define USE_AVX 1
|
||||||
# define USE_AVX 1
|
# undef STRCMP_SSE42
|
||||||
# undef STRCMP_SSE42
|
# define STRCMP_SSE42 STRCMP_AVX
|
||||||
# define STRCMP_SSE42 STRCMP_AVX
|
# define SECTION avx
|
||||||
# define SECTION avx
|
# include "strcmp-sse42.S"
|
||||||
# include "strcmp-sse42.S"
|
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user