about summary refs log tree commit diff
path: root/sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S
diff options
context:
space:
mode:
authorNoah Goldstein <goldstein.w.n@gmail.com>2022-03-24 18:56:12 -0500
committerNoah Goldstein <goldstein.w.n@gmail.com>2022-03-25 13:16:43 -0500
commitbbf81222343fed5cd704001a2ae0d86c71544151 (patch)
treebe61639b266f1452ecea891871f6f11482b0aa4c /sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S
parent39399913a244a911edb1ff1e31dfe38e64177bb5 (diff)
downloadglibc-bbf81222343fed5cd704001a2ae0d86c71544151.tar.gz
glibc-bbf81222343fed5cd704001a2ae0d86c71544151.tar.xz
glibc-bbf81222343fed5cd704001a2ae0d86c71544151.zip
x86: Add AVX2 optimized str{n}casecmp
geometric_mean(N=40) of all benchmarks AVX2 / SSE42: .702

All string/memory tests pass.
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S')
-rw-r--r--sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S16
1 files changed, 16 insertions, 0 deletions
diff --git a/sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S b/sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S
new file mode 100644
index 0000000000..58c05dcfb8
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/strncase_l-avx2-rtm.S
@@ -0,0 +1,16 @@
+#ifndef STRCMP
+# define STRCMP	__strncasecmp_l_avx2_rtm
+#endif
+
+#define _GLABEL(x)	x ## _rtm
+#define GLABEL(x)	_GLABEL(x)
+
+#define ZERO_UPPER_VEC_REGISTERS_RETURN	\
+	ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST
+
+#define VZEROUPPER_RETURN	jmp L(return_vzeroupper)
+
+#define SECTION(p)	p##.avx.rtm
+#define OVERFLOW_STRCMP	__strcasecmp_l_avx2_rtm
+
+#include "strncase_l-avx2.S"