mirror of git://sourceware.org/git/glibc.git
x86: Remove mem{move|cpy}-ssse3-back
With SSE2, SSE4.1, AVX2, and EVEX versions very few targets prefer SSSE3. As a result it is no longer worth it to keep the SSSE3 versions given the code size cost. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
parent
41bfe224e5
commit
d85916e30a
|
|
@ -17,7 +17,6 @@ sysdep_routines += \
|
||||||
memcmpeq-evex \
|
memcmpeq-evex \
|
||||||
memcmpeq-sse2 \
|
memcmpeq-sse2 \
|
||||||
memcpy-ssse3 \
|
memcpy-ssse3 \
|
||||||
memcpy-ssse3-back \
|
|
||||||
memmove-avx-unaligned-erms \
|
memmove-avx-unaligned-erms \
|
||||||
memmove-avx-unaligned-erms-rtm \
|
memmove-avx-unaligned-erms-rtm \
|
||||||
memmove-avx512-no-vzeroupper \
|
memmove-avx512-no-vzeroupper \
|
||||||
|
|
@ -25,7 +24,6 @@ sysdep_routines += \
|
||||||
memmove-evex-unaligned-erms \
|
memmove-evex-unaligned-erms \
|
||||||
memmove-sse2-unaligned-erms \
|
memmove-sse2-unaligned-erms \
|
||||||
memmove-ssse3 \
|
memmove-ssse3 \
|
||||||
memmove-ssse3-back \
|
|
||||||
memrchr-avx2 \
|
memrchr-avx2 \
|
||||||
memrchr-avx2-rtm \
|
memrchr-avx2-rtm \
|
||||||
memrchr-evex \
|
memrchr-evex \
|
||||||
|
|
|
||||||
|
|
@ -132,9 +132,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, __memmove_chk,
|
IFUNC_IMPL_ADD (array, i, __memmove_chk,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__memmove_chk_evex_unaligned_erms)
|
__memmove_chk_evex_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, __memmove_chk,
|
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__memmove_chk_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, __memmove_chk,
|
IFUNC_IMPL_ADD (array, i, __memmove_chk,
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
CPU_FEATURE_USABLE (SSSE3),
|
||||||
__memmove_chk_ssse3)
|
__memmove_chk_ssse3)
|
||||||
|
|
@ -177,8 +174,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, memmove,
|
IFUNC_IMPL_ADD (array, i, memmove,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__memmove_avx512_unaligned_erms)
|
__memmove_avx512_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, memmove, CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__memmove_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, memmove, CPU_FEATURE_USABLE (SSSE3),
|
IFUNC_IMPL_ADD (array, i, memmove, CPU_FEATURE_USABLE (SSSE3),
|
||||||
__memmove_ssse3)
|
__memmove_ssse3)
|
||||||
IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_erms)
|
IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_erms)
|
||||||
|
|
@ -872,9 +867,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, __memcpy_chk,
|
IFUNC_IMPL_ADD (array, i, __memcpy_chk,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__memcpy_chk_evex_unaligned_erms)
|
__memcpy_chk_evex_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, __memcpy_chk,
|
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__memcpy_chk_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, __memcpy_chk,
|
IFUNC_IMPL_ADD (array, i, __memcpy_chk,
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
CPU_FEATURE_USABLE (SSSE3),
|
||||||
__memcpy_chk_ssse3)
|
__memcpy_chk_ssse3)
|
||||||
|
|
@ -908,8 +900,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, memcpy,
|
IFUNC_IMPL_ADD (array, i, memcpy,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__memcpy_evex_unaligned_erms)
|
__memcpy_evex_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, memcpy, CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__memcpy_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, memcpy, CPU_FEATURE_USABLE (SSSE3),
|
IFUNC_IMPL_ADD (array, i, memcpy, CPU_FEATURE_USABLE (SSSE3),
|
||||||
__memcpy_ssse3)
|
__memcpy_ssse3)
|
||||||
IFUNC_IMPL_ADD (array, i, memcpy,
|
IFUNC_IMPL_ADD (array, i, memcpy,
|
||||||
|
|
@ -958,9 +948,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
|
IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__mempcpy_chk_evex_unaligned_erms)
|
__mempcpy_chk_evex_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
|
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__mempcpy_chk_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
|
IFUNC_IMPL_ADD (array, i, __mempcpy_chk,
|
||||||
CPU_FEATURE_USABLE (SSSE3),
|
CPU_FEATURE_USABLE (SSSE3),
|
||||||
__mempcpy_chk_ssse3)
|
__mempcpy_chk_ssse3)
|
||||||
|
|
@ -1003,8 +990,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||||
IFUNC_IMPL_ADD (array, i, mempcpy,
|
IFUNC_IMPL_ADD (array, i, mempcpy,
|
||||||
CPU_FEATURE_USABLE (AVX512VL),
|
CPU_FEATURE_USABLE (AVX512VL),
|
||||||
__mempcpy_evex_unaligned_erms)
|
__mempcpy_evex_unaligned_erms)
|
||||||
IFUNC_IMPL_ADD (array, i, mempcpy, CPU_FEATURE_USABLE (SSSE3),
|
|
||||||
__mempcpy_ssse3_back)
|
|
||||||
IFUNC_IMPL_ADD (array, i, mempcpy, CPU_FEATURE_USABLE (SSSE3),
|
IFUNC_IMPL_ADD (array, i, mempcpy, CPU_FEATURE_USABLE (SSSE3),
|
||||||
__mempcpy_ssse3)
|
__mempcpy_ssse3)
|
||||||
IFUNC_IMPL_ADD (array, i, mempcpy, 1,
|
IFUNC_IMPL_ADD (array, i, mempcpy, 1,
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned)
|
||||||
extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned_erms)
|
extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned_erms)
|
||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
extern __typeof (REDIRECT_NAME) OPTIMIZE (ssse3) attribute_hidden;
|
extern __typeof (REDIRECT_NAME) OPTIMIZE (ssse3) attribute_hidden;
|
||||||
extern __typeof (REDIRECT_NAME) OPTIMIZE (ssse3_back) attribute_hidden;
|
|
||||||
extern __typeof (REDIRECT_NAME) OPTIMIZE (avx_unaligned) attribute_hidden;
|
extern __typeof (REDIRECT_NAME) OPTIMIZE (avx_unaligned) attribute_hidden;
|
||||||
extern __typeof (REDIRECT_NAME) OPTIMIZE (avx_unaligned_erms)
|
extern __typeof (REDIRECT_NAME) OPTIMIZE (avx_unaligned_erms)
|
||||||
attribute_hidden;
|
attribute_hidden;
|
||||||
|
|
@ -94,17 +93,14 @@ IFUNC_SELECTOR (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CPU_FEATURE_USABLE_P (cpu_features, SSSE3)
|
if (CPU_FEATURE_USABLE_P (cpu_features, SSSE3)
|
||||||
|| CPU_FEATURES_ARCH_P (cpu_features, Fast_Unaligned_Copy))
|
&& !CPU_FEATURES_ARCH_P (cpu_features, Fast_Unaligned_Copy))
|
||||||
{
|
{
|
||||||
|
return OPTIMIZE (ssse3);
|
||||||
|
}
|
||||||
|
|
||||||
if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
|
if (CPU_FEATURE_USABLE_P (cpu_features, ERMS))
|
||||||
return OPTIMIZE (sse2_unaligned_erms);
|
return OPTIMIZE (sse2_unaligned_erms);
|
||||||
|
|
||||||
return OPTIMIZE (sse2_unaligned);
|
return OPTIMIZE (sse2_unaligned);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CPU_FEATURES_ARCH_P (cpu_features, Fast_Copy_Backward))
|
|
||||||
return OPTIMIZE (ssse3_back);
|
|
||||||
|
|
||||||
return OPTIMIZE (ssse3);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,4 +0,0 @@
|
||||||
#define USE_AS_MEMMOVE
|
|
||||||
#define MEMCPY __memmove_ssse3_back
|
|
||||||
#define MEMCPY_CHK __memmove_chk_ssse3_back
|
|
||||||
#include "memcpy-ssse3-back.S"
|
|
||||||
Loading…
Reference in New Issue