2 Copyright (C) 2010-2012 Free Software Foundation, Inc.
3 Contributed by Intel Corporation.
4 This file is part of the GNU C Library.
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
23 #include "asm-syntax.h"
25 #define CFI_PUSH(REG) \
26 cfi_adjust_cfa_offset (4); \
27 cfi_rel_offset (REG, 0)
29 #define CFI_POP(REG) \
30 cfi_adjust_cfa_offset (-4); \
33 #define PUSH(REG) pushl REG; CFI_PUSH (REG)
34 #define POP(REG) popl REG; CFI_POP (REG)
38 # define STRCMP __strncmp_ssse3
43 # define RETURN POP (REM); ret; .p2align 4; CFI_PUSH (REM)
44 # define UPDATE_STRNCMP_COUNTER \
45 /* calculate left number to compare */ \
49 jbe L(more8byteseq); \
53 #elif defined USE_AS_STRCASECMP_L
54 # include "locale-defines.h"
56 # define STRCMP __strcasecmp_l_ssse3
64 # define LOCALE 12 /* Loaded before the adjustement. */
66 # define RETURN POP (%ebx); ret; .p2align 4; CFI_PUSH (%ebx)
68 # define RETURN ret; .p2align 4
70 # define UPDATE_STRNCMP_COUNTER
72 # define NONASCII __strcasecmp_nonascii
73 #elif defined USE_AS_STRNCASECMP_L
74 # include "locale-defines.h"
76 # define STRCMP __strncasecmp_l_ssse3
85 # define LOCALE 16 /* Loaded before the adjustement. */
87 # define RETURN POP (REM); POP (%ebx); ret; \
88 .p2align 4; CFI_PUSH (%ebx); CFI_PUSH (REM)
90 # define RETURN POP (REM); ret; .p2align 4; CFI_PUSH (REM)
92 # define UPDATE_STRNCMP_COUNTER \
93 /* calculate left number to compare */ \
97 jbe L(more8byteseq); \
101 # define NONASCII __strncasecmp_nonascii
104 # define STRCMP __strcmp_ssse3
108 # define RETURN ret; .p2align 4
109 # define UPDATE_STRNCMP_COUNTER
113 .section .text.ssse3,"ax",@progbits
115 #ifdef USE_AS_STRCASECMP_L
116 ENTRY (__strcasecmp_ssse3)
120 movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
121 # ifdef NO_TLS_DIRECT_SEG_REFS
125 movl %gs:(%eax), %eax
128 # ifdef NO_TLS_DIRECT_SEG_REFS
130 movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
132 movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
135 # if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
136 movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
140 testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
141 jne __strcasecmp_nonascii
143 END (__strcasecmp_ssse3)
146 #ifdef USE_AS_STRNCASECMP_L
147 ENTRY (__strncasecmp_ssse3)
151 movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
152 # ifdef NO_TLS_DIRECT_SEG_REFS
156 movl %gs:(%eax), %eax
159 # ifdef NO_TLS_DIRECT_SEG_REFS
161 movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
163 movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
166 # if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
167 movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
171 testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
172 jne __strncasecmp_nonascii
174 END (__strncasecmp_ssse3)
178 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
179 movl LOCALE(%esp), %eax
180 # if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
181 movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
185 testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax)
193 .section .rodata.cst16,"aM",@progbits,16
196 .quad 0x4040404040404040
197 .quad 0x4040404040404040
199 .quad 0x5b5b5b5b5b5b5b5b
200 .quad 0x5b5b5b5b5b5b5b5b
202 .quad 0x2020202020202020
203 .quad 0x2020202020202020
207 # define UCLOW_reg .Lbelowupper@GOTOFF(%ebx)
208 # define UCHIGH_reg .Ltopupper@GOTOFF(%ebx)
209 # define LCQWORD_reg .Ltouppermask@GOTOFF(%ebx)
211 # define UCLOW_reg .Lbelowupper
212 # define UCHIGH_reg .Ltopupper
213 # define LCQWORD_reg .Ltouppermask
217 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
221 movl STR1(%esp), %edx
222 movl STR2(%esp), %eax
223 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
226 jb L(less16bytes_sncmp)
227 #elif !defined USE_AS_STRCASECMP_L
290 movhpd 8(%eax), %xmm1
291 movhpd 8(%edx), %xmm2
292 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
293 # define TOLOWER(reg1, reg2) \
294 movdqa reg1, %xmm5; \
295 movdqa reg2, %xmm7; \
296 movdqa UCHIGH_reg, %xmm6; \
297 pcmpgtb UCLOW_reg, %xmm5; \
298 pcmpgtb UCLOW_reg, %xmm7; \
299 pcmpgtb reg1, %xmm6; \
301 movdqa UCHIGH_reg, %xmm6; \
302 pcmpgtb reg2, %xmm6; \
304 pand LCQWORD_reg, %xmm5; \
306 pand LCQWORD_reg, %xmm7; \
308 TOLOWER (%xmm1, %xmm2)
310 # define TOLOWER(reg1, reg2)
318 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
328 #if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
333 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
335 cfi_adjust_cfa_offset (4)
337 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
347 #if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
393 * The following cases will be handled by ashr_0
394 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
395 * n(0~15) n(0~15) 15(15+ n-n) ashr_0
403 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
405 TOLOWER (%xmm1, %xmm2)
408 pcmpeqb (%edx), %xmm1
417 UPDATE_STRNCMP_COUNTER
423 movdqa (%eax, %ecx), %xmm1
424 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
425 movdqa (%edx, %ecx), %xmm2
426 TOLOWER (%xmm1, %xmm2)
432 pcmpeqb (%edx, %ecx), %xmm1
438 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
447 * The following cases will be handled by ashr_1
448 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
449 * n(15) n -15 0(15 +(n-15) - n) ashr_1
459 TOLOWER (%xmm1, %xmm2)
469 UPDATE_STRNCMP_COUNTER
485 movdqa (%eax, %ecx), %xmm1
486 movdqa (%edx, %ecx), %xmm2
489 palignr $1, %xmm3, %xmm2
490 TOLOWER (%xmm1, %xmm2)
498 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
510 movdqa (%eax, %ecx), %xmm1
511 movdqa (%edx, %ecx), %xmm2
514 palignr $1, %xmm3, %xmm2
515 TOLOWER (%xmm1, %xmm2)
524 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
538 jnz L(ashr_1_exittail)
540 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
542 jbe L(ashr_1_exittail)
550 movdqa (%eax, %ecx), %xmm1
556 * The following cases will be handled by ashr_2
557 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
558 * n(14~15) n -14 1(15 +(n-14) - n) ashr_2
568 TOLOWER (%xmm1, %xmm2)
578 UPDATE_STRNCMP_COUNTER
594 movdqa (%eax, %ecx), %xmm1
595 movdqa (%edx, %ecx), %xmm2
598 palignr $2, %xmm3, %xmm2
599 TOLOWER (%xmm1, %xmm2)
608 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
619 movdqa (%eax, %ecx), %xmm1
620 movdqa (%edx, %ecx), %xmm2
623 palignr $2, %xmm3, %xmm2
624 TOLOWER (%xmm1, %xmm2)
633 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
647 jnz L(ashr_2_exittail)
649 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
651 jbe L(ashr_2_exittail)
660 movdqa (%eax, %ecx), %xmm1
666 * The following cases will be handled by ashr_3
667 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
668 * n(13~15) n -13 2(15 +(n-13) - n) ashr_3
678 TOLOWER (%xmm1, %xmm2)
688 UPDATE_STRNCMP_COUNTER
704 movdqa (%eax, %ecx), %xmm1
705 movdqa (%edx, %ecx), %xmm2
708 palignr $3, %xmm3, %xmm2
709 TOLOWER (%xmm1, %xmm2)
718 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
729 movdqa (%eax, %ecx), %xmm1
730 movdqa (%edx, %ecx), %xmm2
733 palignr $3, %xmm3, %xmm2
734 TOLOWER (%xmm1, %xmm2)
743 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
757 jnz L(ashr_3_exittail)
759 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
761 jbe L(ashr_3_exittail)
769 movdqa (%eax, %ecx), %xmm1
775 * The following cases will be handled by ashr_4
776 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
777 * n(12~15) n -12 3(15 +(n-12) - n) ashr_4
787 TOLOWER (%xmm1, %xmm2)
797 UPDATE_STRNCMP_COUNTER
813 movdqa (%eax, %ecx), %xmm1
814 movdqa (%edx, %ecx), %xmm2
817 palignr $4, %xmm3, %xmm2
818 TOLOWER (%xmm1, %xmm2)
827 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
839 movdqa (%eax, %ecx), %xmm1
840 movdqa (%edx, %ecx), %xmm2
843 palignr $4, %xmm3, %xmm2
844 TOLOWER (%xmm1, %xmm2)
853 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
868 jnz L(ashr_4_exittail)
870 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
872 jbe L(ashr_4_exittail)
881 movdqa (%eax, %ecx), %xmm1
887 * The following cases will be handled by ashr_5
888 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
889 * n(11~15) n -11 4(15 +(n-11) - n) ashr_5
899 TOLOWER (%xmm1, %xmm2)
909 UPDATE_STRNCMP_COUNTER
925 movdqa (%eax, %ecx), %xmm1
926 movdqa (%edx, %ecx), %xmm2
929 palignr $5, %xmm3, %xmm2
930 TOLOWER (%xmm1, %xmm2)
939 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
950 movdqa (%eax, %ecx), %xmm1
951 movdqa (%edx, %ecx), %xmm2
954 palignr $5, %xmm3, %xmm2
955 TOLOWER (%xmm1, %xmm2)
964 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
978 jnz L(ashr_5_exittail)
980 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
982 jbe L(ashr_5_exittail)
990 movdqa (%eax, %ecx), %xmm1
996 * The following cases will be handled by ashr_6
997 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
998 * n(10~15) n -10 5(15 +(n-10) - n) ashr_6
1005 movdqa (%edx), %xmm2
1006 movdqa (%eax), %xmm1
1007 pcmpeqb %xmm1, %xmm0
1009 TOLOWER (%xmm1, %xmm2)
1010 pcmpeqb %xmm1, %xmm2
1012 pmovmskb %xmm2, %edi
1019 UPDATE_STRNCMP_COUNTER
1021 movdqa (%edx), %xmm3
1035 movdqa (%eax, %ecx), %xmm1
1036 movdqa (%edx, %ecx), %xmm2
1039 palignr $6, %xmm3, %xmm2
1040 TOLOWER (%xmm1, %xmm2)
1042 pcmpeqb %xmm1, %xmm0
1043 pcmpeqb %xmm2, %xmm1
1045 pmovmskb %xmm1, %esi
1049 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1061 movdqa (%eax, %ecx), %xmm1
1062 movdqa (%edx, %ecx), %xmm2
1065 palignr $6, %xmm3, %xmm2
1066 TOLOWER (%xmm1, %xmm2)
1068 pcmpeqb %xmm1, %xmm0
1069 pcmpeqb %xmm2, %xmm1
1071 pmovmskb %xmm1, %esi
1074 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1086 pcmpeqb %xmm3, %xmm0
1087 pmovmskb %xmm0, %esi
1089 jnz L(ashr_6_exittail)
1091 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1093 jbe L(ashr_6_exittail)
1097 jmp L(gobble_ashr_6)
1101 movdqa (%eax, %ecx), %xmm1
1107 * The following cases will be handled by ashr_7
1108 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1109 * n(9~15) n - 9 6(15 +(n-9) - n) ashr_7
1116 movdqa (%edx), %xmm2
1117 movdqa (%eax), %xmm1
1118 pcmpeqb %xmm1, %xmm0
1120 TOLOWER (%xmm1, %xmm2)
1121 pcmpeqb %xmm1, %xmm2
1123 pmovmskb %xmm2, %edi
1130 UPDATE_STRNCMP_COUNTER
1132 movdqa (%edx), %xmm3
1146 movdqa (%eax, %ecx), %xmm1
1147 movdqa (%edx, %ecx), %xmm2
1150 palignr $7, %xmm3, %xmm2
1151 TOLOWER (%xmm1, %xmm2)
1153 pcmpeqb %xmm1, %xmm0
1154 pcmpeqb %xmm2, %xmm1
1156 pmovmskb %xmm1, %esi
1160 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1172 movdqa (%eax, %ecx), %xmm1
1173 movdqa (%edx, %ecx), %xmm2
1176 palignr $7, %xmm3, %xmm2
1177 TOLOWER (%xmm1, %xmm2)
1179 pcmpeqb %xmm1, %xmm0
1180 pcmpeqb %xmm2, %xmm1
1182 pmovmskb %xmm1, %esi
1186 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1198 pcmpeqb %xmm3, %xmm0
1199 pmovmskb %xmm0, %esi
1201 jnz L(ashr_7_exittail)
1203 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1205 jbe L(ashr_7_exittail)
1210 jmp L(gobble_ashr_7)
1214 movdqa (%eax, %ecx), %xmm1
1220 * The following cases will be handled by ashr_8
1221 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1222 * n(8~15) n - 8 7(15 +(n-8) - n) ashr_8
1228 movdqa (%edx), %xmm2
1229 movdqa (%eax), %xmm1
1230 pcmpeqb %xmm1, %xmm0
1232 TOLOWER (%xmm1, %xmm2)
1233 pcmpeqb %xmm1, %xmm2
1235 pmovmskb %xmm2, %edi
1242 UPDATE_STRNCMP_COUNTER
1244 movdqa (%edx), %xmm3
1258 movdqa (%eax, %ecx), %xmm1
1259 movdqa (%edx, %ecx), %xmm2
1262 palignr $8, %xmm3, %xmm2
1263 TOLOWER (%xmm1, %xmm2)
1265 pcmpeqb %xmm1, %xmm0
1266 pcmpeqb %xmm2, %xmm1
1268 pmovmskb %xmm1, %esi
1272 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1283 movdqa (%eax, %ecx), %xmm1
1284 movdqa (%edx, %ecx), %xmm2
1287 palignr $8, %xmm3, %xmm2
1288 TOLOWER (%xmm1, %xmm2)
1290 pcmpeqb %xmm1, %xmm0
1291 pcmpeqb %xmm2, %xmm1
1293 pmovmskb %xmm1, %esi
1297 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1308 pcmpeqb %xmm3, %xmm0
1309 pmovmskb %xmm0, %esi
1311 jnz L(ashr_8_exittail)
1313 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1315 jbe L(ashr_8_exittail)
1320 jmp L(gobble_ashr_8)
1324 movdqa (%eax, %ecx), %xmm1
1330 * The following cases will be handled by ashr_9
1331 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1332 * n(7~15) n - 7 8(15 +(n-7) - n) ashr_9
1338 movdqa (%edx), %xmm2
1339 movdqa (%eax), %xmm1
1340 pcmpeqb %xmm1, %xmm0
1342 TOLOWER (%xmm1, %xmm2)
1343 pcmpeqb %xmm1, %xmm2
1345 pmovmskb %xmm2, %edi
1352 UPDATE_STRNCMP_COUNTER
1354 movdqa (%edx), %xmm3
1368 movdqa (%eax, %ecx), %xmm1
1369 movdqa (%edx, %ecx), %xmm2
1372 palignr $9, %xmm3, %xmm2
1373 TOLOWER (%xmm1, %xmm2)
1375 pcmpeqb %xmm1, %xmm0
1376 pcmpeqb %xmm2, %xmm1
1378 pmovmskb %xmm1, %esi
1382 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1393 movdqa (%eax, %ecx), %xmm1
1394 movdqa (%edx, %ecx), %xmm2
1397 palignr $9, %xmm3, %xmm2
1398 TOLOWER (%xmm1, %xmm2)
1400 pcmpeqb %xmm1, %xmm0
1401 pcmpeqb %xmm2, %xmm1
1403 pmovmskb %xmm1, %esi
1407 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1418 pcmpeqb %xmm3, %xmm0
1419 pmovmskb %xmm0, %esi
1421 jnz L(ashr_9_exittail)
1423 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1425 jbe L(ashr_9_exittail)
1429 jmp L(gobble_ashr_9)
1433 movdqa (%eax, %ecx), %xmm1
1439 * The following cases will be handled by ashr_10
1440 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1441 * n(6~15) n - 6 9(15 +(n-6) - n) ashr_10
1447 movdqa (%edx), %xmm2
1448 movdqa (%eax), %xmm1
1449 pcmpeqb %xmm1, %xmm0
1451 TOLOWER (%xmm1, %xmm2)
1452 pcmpeqb %xmm1, %xmm2
1454 pmovmskb %xmm2, %edi
1461 UPDATE_STRNCMP_COUNTER
1463 movdqa (%edx), %xmm3
1474 jg L(nibble_ashr_10)
1477 movdqa (%eax, %ecx), %xmm1
1478 movdqa (%edx, %ecx), %xmm2
1481 palignr $10, %xmm3, %xmm2
1482 TOLOWER (%xmm1, %xmm2)
1484 pcmpeqb %xmm1, %xmm0
1485 pcmpeqb %xmm2, %xmm1
1487 pmovmskb %xmm1, %esi
1491 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1500 jg L(nibble_ashr_10)
1502 movdqa (%eax, %ecx), %xmm1
1503 movdqa (%edx, %ecx), %xmm2
1506 palignr $10, %xmm3, %xmm2
1507 TOLOWER (%xmm1, %xmm2)
1509 pcmpeqb %xmm1, %xmm0
1510 pcmpeqb %xmm2, %xmm1
1512 pmovmskb %xmm1, %esi
1516 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1527 pcmpeqb %xmm3, %xmm0
1528 pmovmskb %xmm0, %esi
1530 jnz L(ashr_10_exittail)
1532 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1534 jbe L(ashr_10_exittail)
1538 jmp L(gobble_ashr_10)
1541 L(ashr_10_exittail):
1542 movdqa (%eax, %ecx), %xmm1
1548 * The following cases will be handled by ashr_11
1549 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1550 * n(5~15) n - 5 10(15 +(n-5) - n) ashr_11
1556 movdqa (%edx), %xmm2
1557 movdqa (%eax), %xmm1
1558 pcmpeqb %xmm1, %xmm0
1560 TOLOWER (%xmm1, %xmm2)
1561 pcmpeqb %xmm1, %xmm2
1563 pmovmskb %xmm2, %edi
1570 UPDATE_STRNCMP_COUNTER
1572 movdqa (%edx), %xmm3
1583 jg L(nibble_ashr_11)
1586 movdqa (%eax, %ecx), %xmm1
1587 movdqa (%edx, %ecx), %xmm2
1590 palignr $11, %xmm3, %xmm2
1591 TOLOWER (%xmm1, %xmm2)
1593 pcmpeqb %xmm1, %xmm0
1594 pcmpeqb %xmm2, %xmm1
1596 pmovmskb %xmm1, %esi
1600 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1609 jg L(nibble_ashr_11)
1611 movdqa (%eax, %ecx), %xmm1
1612 movdqa (%edx, %ecx), %xmm2
1615 palignr $11, %xmm3, %xmm2
1616 TOLOWER (%xmm1, %xmm2)
1618 pcmpeqb %xmm1, %xmm0
1619 pcmpeqb %xmm2, %xmm1
1621 pmovmskb %xmm1, %esi
1625 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1636 pcmpeqb %xmm3, %xmm0
1637 pmovmskb %xmm0, %esi
1639 jnz L(ashr_11_exittail)
1641 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1643 jbe L(ashr_11_exittail)
1647 jmp L(gobble_ashr_11)
1650 L(ashr_11_exittail):
1651 movdqa (%eax, %ecx), %xmm1
1657 * The following cases will be handled by ashr_12
1658 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1659 * n(4~15) n - 4 11(15 +(n-4) - n) ashr_12
1665 movdqa (%edx), %xmm2
1666 movdqa (%eax), %xmm1
1667 pcmpeqb %xmm1, %xmm0
1669 TOLOWER (%xmm1, %xmm2)
1670 pcmpeqb %xmm1, %xmm2
1672 pmovmskb %xmm2, %edi
1679 UPDATE_STRNCMP_COUNTER
1681 movdqa (%edx), %xmm3
1692 jg L(nibble_ashr_12)
1695 movdqa (%eax, %ecx), %xmm1
1696 movdqa (%edx, %ecx), %xmm2
1699 palignr $12, %xmm3, %xmm2
1700 TOLOWER (%xmm1, %xmm2)
1702 pcmpeqb %xmm1, %xmm0
1703 pcmpeqb %xmm2, %xmm1
1705 pmovmskb %xmm1, %esi
1709 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1719 jg L(nibble_ashr_12)
1721 movdqa (%eax, %ecx), %xmm1
1722 movdqa (%edx, %ecx), %xmm2
1725 palignr $12, %xmm3, %xmm2
1726 TOLOWER (%xmm1, %xmm2)
1728 pcmpeqb %xmm1, %xmm0
1729 pcmpeqb %xmm2, %xmm1
1731 pmovmskb %xmm1, %esi
1735 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1746 pcmpeqb %xmm3, %xmm0
1747 pmovmskb %xmm0, %esi
1749 jnz L(ashr_12_exittail)
1751 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1753 jbe L(ashr_12_exittail)
1757 jmp L(gobble_ashr_12)
1760 L(ashr_12_exittail):
1761 movdqa (%eax, %ecx), %xmm1
1767 * The following cases will be handled by ashr_13
1768 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1769 * n(3~15) n - 3 12(15 +(n-3) - n) ashr_13
1775 movdqa (%edx), %xmm2
1776 movdqa (%eax), %xmm1
1777 pcmpeqb %xmm1, %xmm0
1779 TOLOWER (%xmm1, %xmm2)
1780 pcmpeqb %xmm1, %xmm2
1782 pmovmskb %xmm2, %edi
1789 UPDATE_STRNCMP_COUNTER
1791 movdqa (%edx), %xmm3
1802 jg L(nibble_ashr_13)
1805 movdqa (%eax, %ecx), %xmm1
1806 movdqa (%edx, %ecx), %xmm2
1809 palignr $13, %xmm3, %xmm2
1810 TOLOWER (%xmm1, %xmm2)
1812 pcmpeqb %xmm1, %xmm0
1813 pcmpeqb %xmm2, %xmm1
1815 pmovmskb %xmm1, %esi
1819 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1828 jg L(nibble_ashr_13)
1830 movdqa (%eax, %ecx), %xmm1
1831 movdqa (%edx, %ecx), %xmm2
1834 palignr $13, %xmm3, %xmm2
1835 TOLOWER (%xmm1, %xmm2)
1837 pcmpeqb %xmm1, %xmm0
1838 pcmpeqb %xmm2, %xmm1
1840 pmovmskb %xmm1, %esi
1844 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1855 pcmpeqb %xmm3, %xmm0
1856 pmovmskb %xmm0, %esi
1858 jnz L(ashr_13_exittail)
1860 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1862 jbe L(ashr_13_exittail)
1866 jmp L(gobble_ashr_13)
1869 L(ashr_13_exittail):
1870 movdqa (%eax, %ecx), %xmm1
1876 * The following cases will be handled by ashr_14
1877 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1878 * n(2~15) n - 2 13(15 +(n-2) - n) ashr_14
1884 movdqa (%edx), %xmm2
1885 movdqa (%eax), %xmm1
1886 pcmpeqb %xmm1, %xmm0
1888 TOLOWER (%xmm1, %xmm2)
1889 pcmpeqb %xmm1, %xmm2
1891 pmovmskb %xmm2, %edi
1898 UPDATE_STRNCMP_COUNTER
1900 movdqa (%edx), %xmm3
1911 jg L(nibble_ashr_14)
1914 movdqa (%eax, %ecx), %xmm1
1915 movdqa (%edx, %ecx), %xmm2
1918 palignr $14, %xmm3, %xmm2
1919 TOLOWER (%xmm1, %xmm2)
1921 pcmpeqb %xmm1, %xmm0
1922 pcmpeqb %xmm2, %xmm1
1924 pmovmskb %xmm1, %esi
1928 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1937 jg L(nibble_ashr_14)
1939 movdqa (%eax, %ecx), %xmm1
1940 movdqa (%edx, %ecx), %xmm2
1943 palignr $14, %xmm3, %xmm2
1944 TOLOWER (%xmm1, %xmm2)
1946 pcmpeqb %xmm1, %xmm0
1947 pcmpeqb %xmm2, %xmm1
1949 pmovmskb %xmm1, %esi
1953 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1964 pcmpeqb %xmm3, %xmm0
1965 pmovmskb %xmm0, %esi
1967 jnz L(ashr_14_exittail)
1969 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
1971 jbe L(ashr_14_exittail)
1975 jmp L(gobble_ashr_14)
1978 L(ashr_14_exittail):
1979 movdqa (%eax, %ecx), %xmm1
1985 * The following cases will be handled by ashr_14
1986 * ecx(offset of esi) eax(offset of edi) relative offset corresponding case
1987 * n(1~15) n - 1 14(15 +(n-1) - n) ashr_15
1994 movdqa (%edx), %xmm2
1995 movdqa (%eax), %xmm1
1996 pcmpeqb %xmm1, %xmm0
1998 TOLOWER (%xmm1, %xmm2)
1999 pcmpeqb %xmm1, %xmm2
2001 pmovmskb %xmm2, %edi
2008 UPDATE_STRNCMP_COUNTER
2010 movdqa (%edx), %xmm3
2021 jg L(nibble_ashr_15)
2024 movdqa (%eax, %ecx), %xmm1
2025 movdqa (%edx, %ecx), %xmm2
2028 palignr $15, %xmm3, %xmm2
2029 TOLOWER (%xmm1, %xmm2)
2031 pcmpeqb %xmm1, %xmm0
2032 pcmpeqb %xmm2, %xmm1
2034 pmovmskb %xmm1, %esi
2038 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2047 jg L(nibble_ashr_15)
2049 movdqa (%eax, %ecx), %xmm1
2050 movdqa (%edx, %ecx), %xmm2
2053 palignr $15, %xmm3, %xmm2
2054 TOLOWER (%xmm1, %xmm2)
2056 pcmpeqb %xmm1, %xmm0
2057 pcmpeqb %xmm2, %xmm1
2059 pmovmskb %xmm1, %esi
2063 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2074 pcmpeqb %xmm3, %xmm0
2075 pmovmskb %xmm0, %esi
2077 jnz L(ashr_15_exittail)
2079 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2081 jbe L(ashr_15_exittail)
2085 jmp L(gobble_ashr_15)
2088 L(ashr_15_exittail):
2089 movdqa (%eax, %ecx), %xmm1
2096 TOLOWER (%xmm1, %xmm3)
2097 pcmpeqb %xmm3, %xmm1
2099 pmovmskb %xmm1, %esi
2104 lea -16(%edi, %ecx), %edi
2115 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2117 cfi_adjust_cfa_offset (-4)
2121 #if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
2148 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2155 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2157 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2158 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2160 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2161 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2169 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2176 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2178 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2179 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2181 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2182 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2190 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2197 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2199 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2200 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2202 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2203 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2211 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2218 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2220 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2221 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2223 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2224 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2232 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2239 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2241 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2242 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2244 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2245 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2253 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2260 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2262 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2263 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2265 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2266 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2274 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2281 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2283 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2284 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2286 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2287 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2295 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2302 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2304 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2305 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2307 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2308 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2318 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2345 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2352 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2354 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2355 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%eax,4), %eax
2357 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2358 movl _nl_C_LC_CTYPE_tolower+128*4(,%eax,4), %eax
2365 #ifdef USE_AS_STRNCMP
2373 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2375 cfi_adjust_cfa_offset (-4)
2377 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2380 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2387 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2392 # ifdef USE_AS_STRNCASECMP_L
2394 cfi_adjust_cfa_offset (-4)
2398 # ifdef USE_AS_STRNCMP
2403 #ifdef USE_AS_STRNCMP
2408 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2411 #if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
2419 #if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
2421 # if defined USE_AS_STRNCASECMP_L && defined PIC
2425 L(less16bytes_sncmp):
2426 # ifdef USE_AS_STRNCASECMP_L
2433 # ifdef USE_AS_STRNCASECMP_L
2436 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2437 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2439 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2440 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2453 movzbl 1(%eax), %ecx
2454 # ifdef USE_AS_STRNCASECMP_L
2455 movzbl 1(%edx), %esi
2457 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2458 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2460 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2461 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2474 movzbl 2(%eax), %ecx
2475 # ifdef USE_AS_STRNCASECMP_L
2476 movzbl 2(%edx), %esi
2478 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2479 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2481 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2482 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2495 movzbl 3(%eax), %ecx
2496 # ifdef USE_AS_STRNCASECMP_L
2497 movzbl 3(%edx), %esi
2499 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2500 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2502 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2503 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2516 movzbl 4(%eax), %ecx
2517 # ifdef USE_AS_STRNCASECMP_L
2518 movzbl 4(%edx), %esi
2520 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2521 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2523 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2524 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2537 movzbl 5(%eax), %ecx
2538 # ifdef USE_AS_STRNCASECMP_L
2539 movzbl 5(%edx), %esi
2541 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2542 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2544 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2545 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2558 movzbl 6(%eax), %ecx
2559 # ifdef USE_AS_STRNCASECMP_L
2560 movzbl 6(%edx), %esi
2562 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2563 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2565 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2566 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2579 movzbl 7(%eax), %ecx
2580 # ifdef USE_AS_STRNCASECMP_L
2581 movzbl 7(%edx), %esi
2583 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2584 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2586 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2587 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2601 movzbl 8(%eax), %ecx
2602 # ifdef USE_AS_STRNCASECMP_L
2603 movzbl 8(%edx), %esi
2605 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2606 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2608 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2609 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2622 movzbl 9(%eax), %ecx
2623 # ifdef USE_AS_STRNCASECMP_L
2624 movzbl 9(%edx), %esi
2626 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2627 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2629 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2630 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2643 movzbl 10(%eax), %ecx
2644 # ifdef USE_AS_STRNCASECMP_L
2645 movzbl 10(%edx), %esi
2647 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2648 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2650 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2651 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2664 movzbl 11(%eax), %ecx
2665 # ifdef USE_AS_STRNCASECMP_L
2666 movzbl 11(%edx), %esi
2668 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2669 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2671 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2672 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2686 movzbl 12(%eax), %ecx
2687 # ifdef USE_AS_STRNCASECMP_L
2688 movzbl 12(%edx), %esi
2690 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2691 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2693 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2694 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2707 movzbl 13(%eax), %ecx
2708 # ifdef USE_AS_STRNCASECMP_L
2709 movzbl 13(%edx), %esi
2711 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2712 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2714 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2715 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2728 movzbl 14(%eax), %ecx
2729 # ifdef USE_AS_STRNCASECMP_L
2730 movzbl 14(%edx), %esi
2732 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2733 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2735 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2736 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2749 movzbl 15(%eax), %ecx
2750 # ifdef USE_AS_STRNCASECMP_L
2751 movzbl 15(%edx), %esi
2753 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%ecx,4), %ecx
2754 movl _nl_C_LC_CTYPE_tolower@GOTOFF+128*4(%ebx,%esi,4), %esi
2756 movl _nl_C_LC_CTYPE_tolower+128*4(,%ecx,4), %ecx
2757 movl _nl_C_LC_CTYPE_tolower+128*4(,%esi,4), %esi
2765 # ifdef USE_AS_STRNCASECMP_L
2770 # if defined USE_AS_STRNCASECMP_L && defined PIC
2776 # ifdef USE_AS_STRNCASECMP_L