This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
PATCH: Fix sysdeps/i386/i686/multiarch/memcmp-ssse3.S
- From: "H.J. Lu" <hongjiu dot lu at intel dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 18 Mar 2010 10:53:06 -0700
- Subject: PATCH: Fix sysdeps/i386/i686/multiarch/memcmp-ssse3.S
- Reply-to: "H.J. Lu" <hjl dot tools at gmail dot com>
Hi,
sysdeps/i386/i686/multiarch/memcmp-ssse3.S forgets to update %xmm3
when exit from loop. It caused:
https://bugzilla.redhat.com/show_bug.cgi?id=574210
This patch fixes it.
H.J.
---
2010-03-18 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/multiarch/memcmp-ssse3.S: Update %xmm3
when exit from loop.
diff --git a/sysdeps/i386/i686/multiarch/memcmp-ssse3.S b/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
index d2f852f..2e0d15f 100644
--- a/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
+++ b/sysdeps/i386/i686/multiarch/memcmp-ssse3.S
@@ -269,6 +269,7 @@ L(shr_1_gobble_loop):
lea 32(%edi), %edi
jz L(shr_1_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_1_gobble_next)
@@ -352,6 +353,7 @@ L(shr_2_gobble_loop):
lea 32(%edi), %edi
jz L(shr_2_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_2_gobble_next)
@@ -434,6 +436,7 @@ L(shr_3_gobble_loop):
lea 32(%edi), %edi
jz L(shr_3_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_3_gobble_next)
@@ -516,6 +519,7 @@ L(shr_4_gobble_loop):
lea 32(%edi), %edi
jz L(shr_4_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_4_gobble_next)
@@ -598,6 +602,7 @@ L(shr_5_gobble_loop):
lea 32(%edi), %edi
jz L(shr_5_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_5_gobble_next)
@@ -680,6 +685,7 @@ L(shr_6_gobble_loop):
lea 32(%edi), %edi
jz L(shr_6_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_6_gobble_next)
@@ -762,6 +768,7 @@ L(shr_7_gobble_loop):
lea 32(%edi), %edi
jz L(shr_7_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_7_gobble_next)
@@ -844,6 +851,7 @@ L(shr_8_gobble_loop):
lea 32(%edi), %edi
jz L(shr_8_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_8_gobble_next)
@@ -926,6 +934,7 @@ L(shr_9_gobble_loop):
lea 32(%edi), %edi
jz L(shr_9_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_9_gobble_next)
@@ -1008,6 +1017,7 @@ L(shr_10_gobble_loop):
lea 32(%edi), %edi
jz L(shr_10_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_10_gobble_next)
@@ -1090,6 +1100,7 @@ L(shr_11_gobble_loop):
lea 32(%edi), %edi
jz L(shr_11_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_11_gobble_next)
@@ -1172,6 +1183,7 @@ L(shr_12_gobble_loop):
lea 32(%edi), %edi
jz L(shr_12_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_12_gobble_next)
@@ -1254,6 +1266,7 @@ L(shr_13_gobble_loop):
lea 32(%edi), %edi
jz L(shr_13_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_13_gobble_next)
@@ -1336,6 +1349,7 @@ L(shr_14_gobble_loop):
lea 32(%edi), %edi
jz L(shr_14_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_14_gobble_next)
@@ -1418,6 +1432,7 @@ L(shr_15_gobble_loop):
lea 32(%edi), %edi
jz L(shr_15_gobble_loop)
+ pand %xmm0, %xmm3
cmp $0, %ecx
jge L(shr_15_gobble_next)