diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-05-20 06:48:04 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-05-21 10:02:58 -0700 |
commit | 2e9bca4211cfb79b86d315d12f6d9d4a41bb2dc1 (patch) | |
tree | 1fabc0d83269e899abac8dcfdf42f560711bbaac /localedata/tst-rpmatch.c | |
parent | 2cdfa9e84886535cf7586bc4449850cdce427c64 (diff) | |
download | glibc-2e9bca4211cfb79b86d315d12f6d9d4a41bb2dc1.tar.gz |
x86-64: Update strlen.S to support wcslen/wcsnlen
The difference between strlen and wcslen is byte vs int. We can
replace pminub and pcmpeqb with pminud and pcmpeqd to turn strlen
into wcslen. Tested on Ivy Bridge with benchtests/bench-wcslen.c,
the new strlen based wcslen is as fast as the old wcslen.
* sysdeps/x86_64/strlen.S (PMINU): New.
(PCMPEQ): Likewise.
(SHIFT_RETURN): Likewise.
(FIND_ZERO): Replace pcmpeqb with PCMPEQ.
(strlen): Add SHIFT_RETURN before ret. Replace pcmpeqb and
pminub with PCMPEQ and PMINU.
* sysdeps/x86_64/wcslen.S: Define AS_WCSLEN and strlen.
Include "strlen.S".
* sysdeps/x86_64/wcsnlen.S: New file.
Diffstat (limited to 'localedata/tst-rpmatch.c')
0 files changed, 0 insertions, 0 deletions