Add ifunc tests for x86_64 memset_chk and memset
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 20 Jun 2014 21:52:29 +0000 (14:52 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 20 Jun 2014 21:52:29 +0000 (14:52 -0700)
This patch adds ifunc tests for x86_64 memset_chk and memset.  It also
defines HAS_AVX2 with AVX2_Usable since AVX2 may not be usable even if
processor has AVX2.

* sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
Add tests for memset_chk and memset.

* sysdeps/x86_64/multiarch/init-arch.h (HAS_AVX2): Defined
with AVX2_Usable.

ChangeLog
sysdeps/x86_64/multiarch/ifunc-impl-list.c
sysdeps/x86_64/multiarch/init-arch.h

index 610abcb..cafcb4d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2014-06-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
+       Add tests for memset_chk and memset.
+
+       * sysdeps/x86_64/multiarch/init-arch.h (HAS_AVX2): Defined
+       with AVX2_Usable.
+
 2014-06-20  Maciej W. Rozycki  <macro@codesourcery.com>
 
        [BZ #16046]
index 6da9be1..f1593c5 100644 (file)
@@ -61,6 +61,17 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
                              __memmove_ssse3)
              IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_sse2))
 
+  /* Support sysdeps/x86_64/multiarch/memset_chk.S.  */
+  IFUNC_IMPL (i, name, __memset_chk,
+             IFUNC_IMPL_ADD (array, i, __memset_chk, 1, __memset_chk_sse2)
+             IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_AVX2,
+                             __memset_chk_avx2))
+
+  /* Support sysdeps/x86_64/multiarch/memset.S.  */
+  IFUNC_IMPL (i, name, memset,
+             IFUNC_IMPL_ADD (array, i, memset, 1, __memset_sse2)
+             IFUNC_IMPL_ADD (array, i, memset, HAS_AVX2, __memset_avx2))
+
   /* Support sysdeps/x86_64/multiarch/stpncpy.S.  */
   IFUNC_IMPL (i, name, stpncpy,
              IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSSE3,
index e4d265d..ef0abbd 100644 (file)
@@ -158,7 +158,6 @@ extern const struct cpu_features *__get_cpu_features (void)
 # define HAS_SSE4_1    HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_1)
 # define HAS_SSE4_2    HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, bit_SSE4_2)
 # define HAS_RTM       HAS_CPU_FEATURE (COMMON_CPUID_INDEX_7, ebx, bit_RTM)
-# define HAS_AVX2      HAS_CPU_FEATURE (COMMON_CPUID_INDEX_7, ebx, bit_AVX2)
 
 # define index_Fast_Rep_String         FEATURE_INDEX_1
 # define index_Fast_Copy_Backward      FEATURE_INDEX_1
@@ -179,6 +178,7 @@ extern const struct cpu_features *__get_cpu_features (void)
 # define HAS_SLOW_BSF                  HAS_ARCH_FEATURE (Slow_BSF)
 # define HAS_FAST_UNALIGNED_LOAD       HAS_ARCH_FEATURE (Fast_Unaligned_Load)
 # define HAS_AVX                       HAS_ARCH_FEATURE (AVX_Usable)
+# define HAS_AVX2                      HAS_ARCH_FEATURE (AVX2_Usable)
 # define HAS_FMA                       HAS_ARCH_FEATURE (FMA_Usable)
 # define HAS_FMA4                      HAS_ARCH_FEATURE (FMA4_Usable)