diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-03-07 09:45:23 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-03-29 07:40:17 -0700 |
commit | e4fda4631017e49d4ee5a2755db34289b6860fa4 (patch) | |
tree | 9e6feed14b7c543c3ef5862d606206d82ee84ab2 /sysdeps/x86_64/multiarch/ifunc-memmove.h | |
parent | 4e2d8f352774b56078c34648b14a2412c38384f4 (diff) | |
download | glibc-e4fda4631017e49d4ee5a2755db34289b6860fa4.tar.gz glibc-e4fda4631017e49d4ee5a2755db34289b6860fa4.tar.xz glibc-e4fda4631017e49d4ee5a2755db34289b6860fa4.zip |
x86-64: Use ZMM16-ZMM31 in AVX512 memmove family functions
Update ifunc-memmove.h to select the function optimized with AVX512 instructions using ZMM16-ZMM31 registers to avoid RTM abort with usable AVX512VL since VZEROUPPER isn't needed at function exit.
Diffstat (limited to 'sysdeps/x86_64/multiarch/ifunc-memmove.h')
-rw-r--r-- | sysdeps/x86_64/multiarch/ifunc-memmove.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sysdeps/x86_64/multiarch/ifunc-memmove.h b/sysdeps/x86_64/multiarch/ifunc-memmove.h index 4eba926eca..a14718a970 100644 --- a/sysdeps/x86_64/multiarch/ifunc-memmove.h +++ b/sysdeps/x86_64/multiarch/ifunc-memmove.h @@ -56,13 +56,15 @@ IFUNC_SELECTOR (void) if (CPU_FEATURE_USABLE_P (cpu_features, AVX512F) && !CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_AVX512)) { - if (CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER)) - return OPTIMIZE (avx512_no_vzeroupper); + if (CPU_FEATURE_USABLE_P (cpu_features, AVX512VL)) + { + if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + return OPTIMIZE (avx512_unaligned_erms); - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) - return OPTIMIZE (avx512_unaligned_erms); + return OPTIMIZE (avx512_unaligned); + } - return OPTIMIZE (avx512_unaligned); + return OPTIMIZE (avx512_no_vzeroupper); } if (CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load)) |