summaryrefslogtreecommitdiff
path: root/x86_64-Use-xmmN-with-vpxor-to-clear-a-vector-registe.patch
blob: a308561bf10135dfa95db1efae74807ce97f00eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
From a35a59036ebae3efcdf5e8167610e0656fca9770 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 11 Jun 2020 12:41:18 -0700
Subject: [PATCH] x86_64: Use %xmmN with vpxor to clear a vector register

Since "vpxor %xmmN, %xmmN, %xmmN" clears the whole vector register, use
%xmmN, instead of %ymmN, with vpxor to clear a vector register.
---
 sysdeps/x86_64/multiarch/strcmp-avx2.S  | 4 ++--
 sysdeps/x86_64/multiarch/strrchr-avx2.S | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/sysdeps/x86_64/multiarch/strcmp-avx2.S b/sysdeps/x86_64/multiarch/strcmp-avx2.S
index 48d03a9f46..5f88a68262 100644
--- a/sysdeps/x86_64/multiarch/strcmp-avx2.S
+++ b/sysdeps/x86_64/multiarch/strcmp-avx2.S
@@ -91,8 +91,8 @@ ENTRY (STRCMP)
 # endif
 	movl	%edi, %eax
 	xorl	%edx, %edx
-	/* Make %ymm7 all zeros in this function.  */
-	vpxor	%ymm7, %ymm7, %ymm7
+	/* Make %xmm7 (%ymm7) all zeros in this function.  */
+	vpxor	%xmm7, %xmm7, %xmm7
 	orl	%esi, %eax
 	andl	$(PAGE_SIZE - 1), %eax
 	cmpl	$(PAGE_SIZE - (VEC_SIZE * 4)), %eax
diff --git a/sysdeps/x86_64/multiarch/strrchr-avx2.S b/sysdeps/x86_64/multiarch/strrchr-avx2.S
index 23077b4c45..146bdd51d0 100644
--- a/sysdeps/x86_64/multiarch/strrchr-avx2.S
+++ b/sysdeps/x86_64/multiarch/strrchr-avx2.S
@@ -44,7 +44,7 @@ ENTRY (STRRCHR)
 	movl	%edi, %ecx
 	/* Broadcast CHAR to YMM4.  */
 	VPBROADCAST %xmm4, %ymm4
-	vpxor	%ymm0, %ymm0, %ymm0
+	vpxor	%xmm0, %xmm0, %xmm0
 
 	/* Check if we may cross page boundary with one vector load.  */
 	andl	$(2 * VEC_SIZE - 1), %ecx
-- 
2.19.1