diff options
author | Noah Goldstein <goldstein.w.n@gmail.com> | 2021-12-24 18:54:41 -0600 |
---|---|---|
committer | Noah Goldstein <goldstein.w.n@gmail.com> | 2021-12-27 03:17:59 -0600 |
commit | abddd61de090ae84e380aff68a98bd94ef704667 (patch) | |
tree | 1ad46343a6392a29d5140df5e6ac03fe0101e5c9 /sysdeps/x86_64/multiarch/memcmpeq-evex.S | |
parent | 268d812c19ef30b2f9d52dc517c27a349df25ca9 (diff) | |
download | glibc-abddd61de090ae84e380aff68a98bd94ef704667.tar.gz glibc-abddd61de090ae84e380aff68a98bd94ef704667.tar.xz glibc-abddd61de090ae84e380aff68a98bd94ef704667.zip |
x86: Optimize L(less_vec) case in memcmp-evex-movbe.S
No bug. Optimizations are twofold. 1) Replace page cross and 0/1 checks with masked load instructions in L(less_vec). In applications this reduces branch-misses in the hot [0, 32] case. 2) Change controlflow so that L(less_vec) case gets the fall through. Change 2) helps copies in the [0, 32] size range but comes at the cost of copies in the [33, 64] size range. From profiles of GCC and Python3, 94%+ and 99%+ of calls are in the [0, 32] range so this appears to the the right tradeoff. Signed-off-by: Noah Goldstein <goldstein.w.n@gmail.com> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'sysdeps/x86_64/multiarch/memcmpeq-evex.S')
0 files changed, 0 insertions, 0 deletions