]> git.ipfire.org Git - thirdparty/glibc.git/commit
x86: Optimize L(less_vec) case in memcmp-evex-movbe.S
authorNoah Goldstein <goldstein.w.n@gmail.com>
Sat, 25 Dec 2021 00:54:41 +0000 (18:54 -0600)
committerSunil K Pandey <skpgkp2@gmail.com>
Mon, 2 May 2022 20:02:27 +0000 (13:02 -0700)
commitb002995ea46cff8c742dc7f9e5bcf7f1066accb5
treebc7463a985c12c923b1026110eb02dc32a57a967
parent63fd074112505b4b3faf74070db8c3698fe9235c
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>
(cherry picked from commit abddd61de090ae84e380aff68a98bd94ef704667)
sysdeps/x86_64/multiarch/memcmp-evex-movbe.S