about summary refs log tree commit diff
path: root/sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-03-05 07:26:42 -0800
committerH.J. Lu <hjl.tools@gmail.com>2022-01-27 11:33:05 -0800
commit2a7cef79d5da8a2b3b1c4b368efb81c69c8403b9 (patch)
tree260eacf7020bd8302236aa7c3847ae3c5227b7d1 /sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S
parent43e3ba09ece40ba4beb3d3c985190209ecc6a052 (diff)
downloadglibc-2a7cef79d5da8a2b3b1c4b368efb81c69c8403b9.tar.gz
glibc-2a7cef79d5da8a2b3b1c4b368efb81c69c8403b9.tar.xz
glibc-2a7cef79d5da8a2b3b1c4b368efb81c69c8403b9.zip
x86-64: Add AVX optimized string/memory functions for RTM
Since VZEROUPPER triggers RTM abort while VZEROALL won't, select AVX
optimized string/memory functions with

	xtest
	jz	1f
	vzeroall
	ret
1:
	vzeroupper
	ret

at function exit on processors with usable RTM, but without 256-bit EVEX
instructions to avoid VZEROUPPER inside a transactionally executing RTM
region.

(cherry picked from commit 7ebba91361badf7531d4e75050627a88d424872f)
Diffstat (limited to 'sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S')
-rw-r--r--sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S b/sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S
new file mode 100644
index 0000000000..cf4eff5d4a
--- /dev/null
+++ b/sysdeps/x86_64/multiarch/memcmp-avx2-movbe-rtm.S
@@ -0,0 +1,12 @@
+#ifndef MEMCMP
+# define MEMCMP __memcmp_avx2_movbe_rtm
+#endif
+
+#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
+
+#include "memcmp-avx2-movbe.S"