about summary refs log tree commit diff
path: root/sysdeps/x86_64/wcsnlen.S
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-06-05 07:58:11 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-06-05 07:58:23 -0700
commit30cb625a21bc7ad450fdc45d1f682e2b27c353de (patch)
treee104957e2f5bf150b00ad8cb31dbb19e1275dc0f /sysdeps/x86_64/wcsnlen.S
parent7395928b957ebb35afb696c3278d14122aa97b51 (diff)
downloadglibc-30cb625a21bc7ad450fdc45d1f682e2b27c353de.tar.gz
glibc-30cb625a21bc7ad450fdc45d1f682e2b27c353de.tar.xz
glibc-30cb625a21bc7ad450fdc45d1f682e2b27c353de.zip
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.

	* 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/wcsnlen.S: New file.
Diffstat (limited to 'sysdeps/x86_64/wcsnlen.S')
-rw-r--r--sysdeps/x86_64/wcsnlen.S7
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/x86_64/wcsnlen.S b/sysdeps/x86_64/wcsnlen.S
new file mode 100644
index 0000000000..968bb693b4
--- /dev/null
+++ b/sysdeps/x86_64/wcsnlen.S
@@ -0,0 +1,7 @@
+#define AS_WCSLEN
+#define AS_STRNLEN
+#define strlen	__wcsnlen
+
+#include "strlen.S"
+
+weak_alias(__wcsnlen, wcsnlen)