mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
a3c50bf46a
This commit refactors `strrchr-evex` and `strrchr-evex512` to use a common implementation: `strrchr-evex-base.S`. The motivation is `strrchr-evex` needed to be refactored to not use 64-bit masked registers in preperation for AVX10. Once vec-width masked register combining was removed, the EVEX and EVEX512 implementations can easily be implemented in the same file without any major overhead. The net result is performance improvements (measured on TGL) for both `strrchr-evex` and `strrchr-evex512`. Although, note there are some regressions in the test suite and it may be many of the cases that make the total-geomean of improvement/regression across bench-strrchr are cold. The point of the performance measurement is to show there are no major regressions, but the primary motivation is preperation for AVX10. Benchmarks where taken on TGL: https://www.intel.com/content/www/us/en/products/sku/213799/intel-core-i711850h-processor-24m-cache-up-to-4-80-ghz/specifications.html EVEX geometric_mean(N=5) of all benchmarks New / Original : 0.74 EVEX512 geometric_mean(N=5) of all benchmarks New / Original: 0.87 Full check passes on x86.
9 lines
145 B
ArmAsm
9 lines
145 B
ArmAsm
# ifndef STRRCHR
|
|
# define STRRCHR __strrchr_evex
|
|
# endif
|
|
|
|
#include "x86-evex256-vecs.h"
|
|
#include "reg-macros.h"
|
|
|
|
#include "strrchr-evex-base.S"
|