aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/x86_64/strcmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64/strcmp.S')
-rw-r--r--sysdeps/x86_64/strcmp.S155
1 files changed, 30 insertions, 125 deletions
diff --git a/sysdeps/x86_64/strcmp.S b/sysdeps/x86_64/strcmp.S
index 99d8b36..c38dc62 100644
--- a/sysdeps/x86_64/strcmp.S
+++ b/sysdeps/x86_64/strcmp.S
@@ -59,12 +59,7 @@
# endif
#endif
-#ifndef USE_SSSE3
.text
-#else
- .section .text.ssse3,"ax",@progbits
-#endif
-
#ifdef USE_AS_STRCASECMP_L
# ifndef ENTRY2
# define ENTRY2(name) ENTRY (name)
@@ -343,13 +338,10 @@ LABEL(gobble_ashr_1):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4 /* store for next cycle */
-#ifndef USE_SSSE3
psrldq $1, %xmm3
pslldq $15, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -373,13 +365,10 @@ LABEL(gobble_ashr_1):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4 /* store for next cycle */
-#ifndef USE_SSSE3
psrldq $1, %xmm3
pslldq $15, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -473,13 +462,10 @@ LABEL(gobble_ashr_2):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $2, %xmm3
pslldq $14, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -504,13 +490,10 @@ LABEL(gobble_ashr_2):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $2, %xmm3
pslldq $14, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -598,13 +581,10 @@ LABEL(gobble_ashr_3):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $3, %xmm3
pslldq $13, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -629,13 +609,10 @@ LABEL(gobble_ashr_3):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $3, %xmm3
pslldq $13, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -723,13 +700,10 @@ LABEL(gobble_ashr_4):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $4, %xmm3
pslldq $12, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -754,13 +728,10 @@ LABEL(gobble_ashr_4):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $4, %xmm3
pslldq $12, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -848,13 +819,10 @@ LABEL(gobble_ashr_5):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $5, %xmm3
pslldq $11, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -879,13 +847,10 @@ LABEL(gobble_ashr_5):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $5, %xmm3
pslldq $11, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -973,13 +938,10 @@ LABEL(gobble_ashr_6):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $6, %xmm3
pslldq $10, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1004,13 +966,10 @@ LABEL(gobble_ashr_6):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $6, %xmm3
pslldq $10, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1098,13 +1057,10 @@ LABEL(gobble_ashr_7):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $7, %xmm3
pslldq $9, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1129,13 +1085,10 @@ LABEL(gobble_ashr_7):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $7, %xmm3
pslldq $9, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1223,13 +1176,10 @@ LABEL(gobble_ashr_8):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $8, %xmm3
pslldq $8, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1254,13 +1204,10 @@ LABEL(gobble_ashr_8):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $8, %xmm3
pslldq $8, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1348,13 +1295,10 @@ LABEL(gobble_ashr_9):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $9, %xmm3
pslldq $7, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1379,13 +1323,10 @@ LABEL(gobble_ashr_9):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $9, %xmm3
pslldq $7, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1473,13 +1414,10 @@ LABEL(gobble_ashr_10):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $10, %xmm3
pslldq $6, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1504,13 +1442,10 @@ LABEL(gobble_ashr_10):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $10, %xmm3
pslldq $6, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1598,13 +1533,10 @@ LABEL(gobble_ashr_11):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $11, %xmm3
pslldq $5, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1629,13 +1561,10 @@ LABEL(gobble_ashr_11):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $11, %xmm3
pslldq $5, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1723,13 +1652,10 @@ LABEL(gobble_ashr_12):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $12, %xmm3
pslldq $4, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1754,13 +1680,10 @@ LABEL(gobble_ashr_12):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $12, %xmm3
pslldq $4, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1848,13 +1771,10 @@ LABEL(gobble_ashr_13):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $13, %xmm3
pslldq $3, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1879,13 +1799,10 @@ LABEL(gobble_ashr_13):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $13, %xmm3
pslldq $3, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -1973,13 +1890,10 @@ LABEL(gobble_ashr_14):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $14, %xmm3
pslldq $2, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -2004,13 +1918,10 @@ LABEL(gobble_ashr_14):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $14, %xmm3
pslldq $2, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -2100,13 +2011,10 @@ LABEL(gobble_ashr_15):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $15, %xmm3
pslldq $1, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
@@ -2131,13 +2039,10 @@ LABEL(gobble_ashr_15):
movdqa (%rdi, %rcx), %xmm2
movdqa %xmm2, %xmm4
-#ifndef USE_SSSE3
psrldq $15, %xmm3
pslldq $1, %xmm2
por %xmm3, %xmm2 /* merge into one 16byte value */
-#else
- palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
-#endif
+
TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0