1 /* memcmp with SSSE3, wmemcmp with SSSE3
2 Copyright (C) 2010-2022 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
24 # define MEMCMP __memcmp_ssse3
27 # define CFI_PUSH(REG) \
28 cfi_adjust_cfa_offset (4); \
29 cfi_rel_offset (REG, 0)
31 # define CFI_POP(REG) \
32 cfi_adjust_cfa_offset (-4); \
35 # define PUSH(REG) pushl REG; CFI_PUSH (REG)
36 # define POP(REG) popl REG; CFI_POP (REG)
42 # define RETURN_END POP (%edi); POP (%esi); POP (%ebx); ret
43 # define RETURN RETURN_END; cfi_restore_state; cfi_remember_state
46 wmemcmp has to use SIGNED comparison for elements.
47 memcmp has to use UNSIGNED comparison for elemnts.
54 # ifdef USE_AS_WMEMCMP
65 # ifndef USE_AS_WMEMCMP
77 # ifndef USE_AS_WMEMCMP
123 # ifndef USE_AS_WMEMCMP
125 jae L(next_unaligned_table)
143 L(next_unaligned_table):
176 pcmpeqb (%edi), %xmm1
177 movaps 16(%esi), %xmm2
178 pcmpeqb 16(%edi), %xmm2
186 lea (%ecx, %edi,1), %eax
187 lea (%ecx, %esi,1), %edx
199 pcmpeqb (%edi), %xmm0
201 movdqa 16(%esi), %xmm2
202 pcmpeqb 16(%edi), %xmm2
203 L(shr_0_gobble_loop):
208 movdqa 32(%esi), %xmm0
209 movdqa 48(%esi), %xmm2
211 pcmpeqb 32(%edi), %xmm0
212 pcmpeqb 48(%edi), %xmm2
215 jz L(shr_0_gobble_loop)
219 jge L(shr_0_gobble_loop_next)
222 L(shr_0_gobble_loop_next):
232 lea (%ecx, %edi,1), %eax
233 lea (%ecx, %esi,1), %edx
238 # ifndef USE_AS_WMEMCMP
248 movdqa 16(%esi), %xmm1
250 palignr $1,(%esi), %xmm1
251 pcmpeqb (%edi), %xmm1
253 movdqa 32(%esi), %xmm3
254 palignr $1,%xmm2, %xmm3
255 pcmpeqb 16(%edi), %xmm3
263 lea (%ecx, %edi,1), %eax
264 lea 1(%ecx, %esi,1), %edx
274 movdqa 16(%esi), %xmm0
275 palignr $1,(%esi), %xmm0
276 pcmpeqb (%edi), %xmm0
278 movdqa 32(%esi), %xmm3
279 palignr $1,16(%esi), %xmm3
280 pcmpeqb 16(%edi), %xmm3
282 L(shr_1_gobble_loop):
288 movdqa 64(%esi), %xmm3
289 palignr $1,48(%esi), %xmm3
291 movdqa 48(%esi), %xmm0
292 palignr $1,32(%esi), %xmm0
293 pcmpeqb 32(%edi), %xmm0
295 pcmpeqb 48(%edi), %xmm3
298 jz L(shr_1_gobble_loop)
302 jge L(shr_1_gobble_next)
305 L(shr_1_gobble_next):
316 lea (%ecx, %edi,1), %eax
317 lea 1(%ecx, %esi,1), %edx
332 movdqa 16(%esi), %xmm1
334 palignr $2,(%esi), %xmm1
335 pcmpeqb (%edi), %xmm1
337 movdqa 32(%esi), %xmm3
338 palignr $2,%xmm2, %xmm3
339 pcmpeqb 16(%edi), %xmm3
347 lea (%ecx, %edi,1), %eax
348 lea 2(%ecx, %esi,1), %edx
358 movdqa 16(%esi), %xmm0
359 palignr $2,(%esi), %xmm0
360 pcmpeqb (%edi), %xmm0
362 movdqa 32(%esi), %xmm3
363 palignr $2,16(%esi), %xmm3
364 pcmpeqb 16(%edi), %xmm3
366 L(shr_2_gobble_loop):
372 movdqa 64(%esi), %xmm3
373 palignr $2,48(%esi), %xmm3
375 movdqa 48(%esi), %xmm0
376 palignr $2,32(%esi), %xmm0
377 pcmpeqb 32(%edi), %xmm0
379 pcmpeqb 48(%edi), %xmm3
382 jz L(shr_2_gobble_loop)
386 jge L(shr_2_gobble_next)
389 L(shr_2_gobble_next):
400 lea (%ecx, %edi,1), %eax
401 lea 2(%ecx, %esi,1), %edx
415 movdqa 16(%esi), %xmm1
417 palignr $3,(%esi), %xmm1
418 pcmpeqb (%edi), %xmm1
420 movdqa 32(%esi), %xmm3
421 palignr $3,%xmm2, %xmm3
422 pcmpeqb 16(%edi), %xmm3
430 lea (%ecx, %edi,1), %eax
431 lea 3(%ecx, %esi,1), %edx
441 movdqa 16(%esi), %xmm0
442 palignr $3,(%esi), %xmm0
443 pcmpeqb (%edi), %xmm0
445 movdqa 32(%esi), %xmm3
446 palignr $3,16(%esi), %xmm3
447 pcmpeqb 16(%edi), %xmm3
449 L(shr_3_gobble_loop):
455 movdqa 64(%esi), %xmm3
456 palignr $3,48(%esi), %xmm3
458 movdqa 48(%esi), %xmm0
459 palignr $3,32(%esi), %xmm0
460 pcmpeqb 32(%edi), %xmm0
462 pcmpeqb 48(%edi), %xmm3
465 jz L(shr_3_gobble_loop)
469 jge L(shr_3_gobble_next)
472 L(shr_3_gobble_next):
483 lea (%ecx, %edi,1), %eax
484 lea 3(%ecx, %esi,1), %edx
499 movdqa 16(%esi), %xmm1
501 palignr $4,(%esi), %xmm1
502 pcmpeqb (%edi), %xmm1
504 movdqa 32(%esi), %xmm3
505 palignr $4,%xmm2, %xmm3
506 pcmpeqb 16(%edi), %xmm3
514 lea (%ecx, %edi,1), %eax
515 lea 4(%ecx, %esi,1), %edx
525 movdqa 16(%esi), %xmm0
526 palignr $4,(%esi), %xmm0
527 pcmpeqb (%edi), %xmm0
529 movdqa 32(%esi), %xmm3
530 palignr $4,16(%esi), %xmm3
531 pcmpeqb 16(%edi), %xmm3
533 L(shr_4_gobble_loop):
539 movdqa 64(%esi), %xmm3
540 palignr $4,48(%esi), %xmm3
542 movdqa 48(%esi), %xmm0
543 palignr $4,32(%esi), %xmm0
544 pcmpeqb 32(%edi), %xmm0
546 pcmpeqb 48(%edi), %xmm3
549 jz L(shr_4_gobble_loop)
553 jge L(shr_4_gobble_next)
556 L(shr_4_gobble_next):
567 lea (%ecx, %edi,1), %eax
568 lea 4(%ecx, %esi,1), %edx
573 # ifndef USE_AS_WMEMCMP
583 movdqa 16(%esi), %xmm1
585 palignr $5,(%esi), %xmm1
586 pcmpeqb (%edi), %xmm1
588 movdqa 32(%esi), %xmm3
589 palignr $5,%xmm2, %xmm3
590 pcmpeqb 16(%edi), %xmm3
598 lea (%ecx, %edi,1), %eax
599 lea 5(%ecx, %esi,1), %edx
609 movdqa 16(%esi), %xmm0
610 palignr $5,(%esi), %xmm0
611 pcmpeqb (%edi), %xmm0
613 movdqa 32(%esi), %xmm3
614 palignr $5,16(%esi), %xmm3
615 pcmpeqb 16(%edi), %xmm3
617 L(shr_5_gobble_loop):
623 movdqa 64(%esi), %xmm3
624 palignr $5,48(%esi), %xmm3
626 movdqa 48(%esi), %xmm0
627 palignr $5,32(%esi), %xmm0
628 pcmpeqb 32(%edi), %xmm0
630 pcmpeqb 48(%edi), %xmm3
633 jz L(shr_5_gobble_loop)
637 jge L(shr_5_gobble_next)
640 L(shr_5_gobble_next):
651 lea (%ecx, %edi,1), %eax
652 lea 5(%ecx, %esi,1), %edx
666 movdqa 16(%esi), %xmm1
668 palignr $6,(%esi), %xmm1
669 pcmpeqb (%edi), %xmm1
671 movdqa 32(%esi), %xmm3
672 palignr $6,%xmm2, %xmm3
673 pcmpeqb 16(%edi), %xmm3
681 lea (%ecx, %edi,1), %eax
682 lea 6(%ecx, %esi,1), %edx
692 movdqa 16(%esi), %xmm0
693 palignr $6,(%esi), %xmm0
694 pcmpeqb (%edi), %xmm0
696 movdqa 32(%esi), %xmm3
697 palignr $6,16(%esi), %xmm3
698 pcmpeqb 16(%edi), %xmm3
700 L(shr_6_gobble_loop):
706 movdqa 64(%esi), %xmm3
707 palignr $6,48(%esi), %xmm3
709 movdqa 48(%esi), %xmm0
710 palignr $6,32(%esi), %xmm0
711 pcmpeqb 32(%edi), %xmm0
713 pcmpeqb 48(%edi), %xmm3
716 jz L(shr_6_gobble_loop)
720 jge L(shr_6_gobble_next)
723 L(shr_6_gobble_next):
734 lea (%ecx, %edi,1), %eax
735 lea 6(%ecx, %esi,1), %edx
749 movdqa 16(%esi), %xmm1
751 palignr $7,(%esi), %xmm1
752 pcmpeqb (%edi), %xmm1
754 movdqa 32(%esi), %xmm3
755 palignr $7,%xmm2, %xmm3
756 pcmpeqb 16(%edi), %xmm3
764 lea (%ecx, %edi,1), %eax
765 lea 7(%ecx, %esi,1), %edx
775 movdqa 16(%esi), %xmm0
776 palignr $7,(%esi), %xmm0
777 pcmpeqb (%edi), %xmm0
779 movdqa 32(%esi), %xmm3
780 palignr $7,16(%esi), %xmm3
781 pcmpeqb 16(%edi), %xmm3
783 L(shr_7_gobble_loop):
789 movdqa 64(%esi), %xmm3
790 palignr $7,48(%esi), %xmm3
792 movdqa 48(%esi), %xmm0
793 palignr $7,32(%esi), %xmm0
794 pcmpeqb 32(%edi), %xmm0
796 pcmpeqb 48(%edi), %xmm3
799 jz L(shr_7_gobble_loop)
803 jge L(shr_7_gobble_next)
806 L(shr_7_gobble_next):
817 lea (%ecx, %edi,1), %eax
818 lea 7(%ecx, %esi,1), %edx
833 movdqa 16(%esi), %xmm1
835 palignr $8,(%esi), %xmm1
836 pcmpeqb (%edi), %xmm1
838 movdqa 32(%esi), %xmm3
839 palignr $8,%xmm2, %xmm3
840 pcmpeqb 16(%edi), %xmm3
848 lea (%ecx, %edi,1), %eax
849 lea 8(%ecx, %esi,1), %edx
859 movdqa 16(%esi), %xmm0
860 palignr $8,(%esi), %xmm0
861 pcmpeqb (%edi), %xmm0
863 movdqa 32(%esi), %xmm3
864 palignr $8,16(%esi), %xmm3
865 pcmpeqb 16(%edi), %xmm3
867 L(shr_8_gobble_loop):
873 movdqa 64(%esi), %xmm3
874 palignr $8,48(%esi), %xmm3
876 movdqa 48(%esi), %xmm0
877 palignr $8,32(%esi), %xmm0
878 pcmpeqb 32(%edi), %xmm0
880 pcmpeqb 48(%edi), %xmm3
883 jz L(shr_8_gobble_loop)
887 jge L(shr_8_gobble_next)
890 L(shr_8_gobble_next):
901 lea (%ecx, %edi,1), %eax
902 lea 8(%ecx, %esi,1), %edx
907 # ifndef USE_AS_WMEMCMP
917 movdqa 16(%esi), %xmm1
919 palignr $9,(%esi), %xmm1
920 pcmpeqb (%edi), %xmm1
922 movdqa 32(%esi), %xmm3
923 palignr $9,%xmm2, %xmm3
924 pcmpeqb 16(%edi), %xmm3
932 lea (%ecx, %edi,1), %eax
933 lea 9(%ecx, %esi,1), %edx
943 movdqa 16(%esi), %xmm0
944 palignr $9,(%esi), %xmm0
945 pcmpeqb (%edi), %xmm0
947 movdqa 32(%esi), %xmm3
948 palignr $9,16(%esi), %xmm3
949 pcmpeqb 16(%edi), %xmm3
951 L(shr_9_gobble_loop):
957 movdqa 64(%esi), %xmm3
958 palignr $9,48(%esi), %xmm3
960 movdqa 48(%esi), %xmm0
961 palignr $9,32(%esi), %xmm0
962 pcmpeqb 32(%edi), %xmm0
964 pcmpeqb 48(%edi), %xmm3
967 jz L(shr_9_gobble_loop)
971 jge L(shr_9_gobble_next)
974 L(shr_9_gobble_next):
985 lea (%ecx, %edi,1), %eax
986 lea 9(%ecx, %esi,1), %edx
1000 movdqa 16(%esi), %xmm1
1002 palignr $10, (%esi), %xmm1
1003 pcmpeqb (%edi), %xmm1
1005 movdqa 32(%esi), %xmm3
1006 palignr $10,%xmm2, %xmm3
1007 pcmpeqb 16(%edi), %xmm3
1010 pmovmskb %xmm3, %edx
1015 lea (%ecx, %edi,1), %eax
1016 lea 10(%ecx, %esi,1), %edx
1026 movdqa 16(%esi), %xmm0
1027 palignr $10, (%esi), %xmm0
1028 pcmpeqb (%edi), %xmm0
1030 movdqa 32(%esi), %xmm3
1031 palignr $10, 16(%esi), %xmm3
1032 pcmpeqb 16(%edi), %xmm3
1034 L(shr_10_gobble_loop):
1037 pmovmskb %xmm3, %edx
1040 movdqa 64(%esi), %xmm3
1041 palignr $10,48(%esi), %xmm3
1043 movdqa 48(%esi), %xmm0
1044 palignr $10,32(%esi), %xmm0
1045 pcmpeqb 32(%edi), %xmm0
1047 pcmpeqb 48(%edi), %xmm3
1050 jz L(shr_10_gobble_loop)
1054 jge L(shr_10_gobble_next)
1057 L(shr_10_gobble_next):
1061 pmovmskb %xmm3, %edx
1068 lea (%ecx, %edi,1), %eax
1069 lea 10(%ecx, %esi,1), %edx
1081 jae L(shr_11_gobble)
1083 movdqa 16(%esi), %xmm1
1085 palignr $11, (%esi), %xmm1
1086 pcmpeqb (%edi), %xmm1
1088 movdqa 32(%esi), %xmm3
1089 palignr $11, %xmm2, %xmm3
1090 pcmpeqb 16(%edi), %xmm3
1093 pmovmskb %xmm3, %edx
1098 lea (%ecx, %edi,1), %eax
1099 lea 11(%ecx, %esi,1), %edx
1109 movdqa 16(%esi), %xmm0
1110 palignr $11, (%esi), %xmm0
1111 pcmpeqb (%edi), %xmm0
1113 movdqa 32(%esi), %xmm3
1114 palignr $11, 16(%esi), %xmm3
1115 pcmpeqb 16(%edi), %xmm3
1117 L(shr_11_gobble_loop):
1120 pmovmskb %xmm3, %edx
1123 movdqa 64(%esi), %xmm3
1124 palignr $11,48(%esi), %xmm3
1126 movdqa 48(%esi), %xmm0
1127 palignr $11,32(%esi), %xmm0
1128 pcmpeqb 32(%edi), %xmm0
1130 pcmpeqb 48(%edi), %xmm3
1133 jz L(shr_11_gobble_loop)
1137 jge L(shr_11_gobble_next)
1140 L(shr_11_gobble_next):
1144 pmovmskb %xmm3, %edx
1151 lea (%ecx, %edi,1), %eax
1152 lea 11(%ecx, %esi,1), %edx
1165 jae L(shr_12_gobble)
1167 movdqa 16(%esi), %xmm1
1169 palignr $12, (%esi), %xmm1
1170 pcmpeqb (%edi), %xmm1
1172 movdqa 32(%esi), %xmm3
1173 palignr $12, %xmm2, %xmm3
1174 pcmpeqb 16(%edi), %xmm3
1177 pmovmskb %xmm3, %edx
1182 lea (%ecx, %edi,1), %eax
1183 lea 12(%ecx, %esi,1), %edx
1193 movdqa 16(%esi), %xmm0
1194 palignr $12, (%esi), %xmm0
1195 pcmpeqb (%edi), %xmm0
1197 movdqa 32(%esi), %xmm3
1198 palignr $12, 16(%esi), %xmm3
1199 pcmpeqb 16(%edi), %xmm3
1201 L(shr_12_gobble_loop):
1204 pmovmskb %xmm3, %edx
1207 movdqa 64(%esi), %xmm3
1208 palignr $12,48(%esi), %xmm3
1210 movdqa 48(%esi), %xmm0
1211 palignr $12,32(%esi), %xmm0
1212 pcmpeqb 32(%edi), %xmm0
1214 pcmpeqb 48(%edi), %xmm3
1217 jz L(shr_12_gobble_loop)
1221 jge L(shr_12_gobble_next)
1224 L(shr_12_gobble_next):
1228 pmovmskb %xmm3, %edx
1235 lea (%ecx, %edi,1), %eax
1236 lea 12(%ecx, %esi,1), %edx
1241 # ifndef USE_AS_WMEMCMP
1249 jae L(shr_13_gobble)
1251 movdqa 16(%esi), %xmm1
1253 palignr $13, (%esi), %xmm1
1254 pcmpeqb (%edi), %xmm1
1256 movdqa 32(%esi), %xmm3
1257 palignr $13, %xmm2, %xmm3
1258 pcmpeqb 16(%edi), %xmm3
1261 pmovmskb %xmm3, %edx
1266 lea (%ecx, %edi,1), %eax
1267 lea 13(%ecx, %esi,1), %edx
1277 movdqa 16(%esi), %xmm0
1278 palignr $13, (%esi), %xmm0
1279 pcmpeqb (%edi), %xmm0
1281 movdqa 32(%esi), %xmm3
1282 palignr $13, 16(%esi), %xmm3
1283 pcmpeqb 16(%edi), %xmm3
1285 L(shr_13_gobble_loop):
1288 pmovmskb %xmm3, %edx
1291 movdqa 64(%esi), %xmm3
1292 palignr $13,48(%esi), %xmm3
1294 movdqa 48(%esi), %xmm0
1295 palignr $13,32(%esi), %xmm0
1296 pcmpeqb 32(%edi), %xmm0
1298 pcmpeqb 48(%edi), %xmm3
1301 jz L(shr_13_gobble_loop)
1305 jge L(shr_13_gobble_next)
1308 L(shr_13_gobble_next):
1312 pmovmskb %xmm3, %edx
1319 lea (%ecx, %edi,1), %eax
1320 lea 13(%ecx, %esi,1), %edx
1332 jae L(shr_14_gobble)
1334 movdqa 16(%esi), %xmm1
1336 palignr $14, (%esi), %xmm1
1337 pcmpeqb (%edi), %xmm1
1339 movdqa 32(%esi), %xmm3
1340 palignr $14, %xmm2, %xmm3
1341 pcmpeqb 16(%edi), %xmm3
1344 pmovmskb %xmm3, %edx
1349 lea (%ecx, %edi,1), %eax
1350 lea 14(%ecx, %esi,1), %edx
1360 movdqa 16(%esi), %xmm0
1361 palignr $14, (%esi), %xmm0
1362 pcmpeqb (%edi), %xmm0
1364 movdqa 32(%esi), %xmm3
1365 palignr $14, 16(%esi), %xmm3
1366 pcmpeqb 16(%edi), %xmm3
1368 L(shr_14_gobble_loop):
1371 pmovmskb %xmm3, %edx
1374 movdqa 64(%esi), %xmm3
1375 palignr $14,48(%esi), %xmm3
1377 movdqa 48(%esi), %xmm0
1378 palignr $14,32(%esi), %xmm0
1379 pcmpeqb 32(%edi), %xmm0
1381 pcmpeqb 48(%edi), %xmm3
1384 jz L(shr_14_gobble_loop)
1388 jge L(shr_14_gobble_next)
1391 L(shr_14_gobble_next):
1395 pmovmskb %xmm3, %edx
1402 lea (%ecx, %edi,1), %eax
1403 lea 14(%ecx, %esi,1), %edx
1415 jae L(shr_15_gobble)
1417 movdqa 16(%esi), %xmm1
1419 palignr $15, (%esi), %xmm1
1420 pcmpeqb (%edi), %xmm1
1422 movdqa 32(%esi), %xmm3
1423 palignr $15, %xmm2, %xmm3
1424 pcmpeqb 16(%edi), %xmm3
1427 pmovmskb %xmm3, %edx
1432 lea (%ecx, %edi,1), %eax
1433 lea 15(%ecx, %esi,1), %edx
1443 movdqa 16(%esi), %xmm0
1444 palignr $15, (%esi), %xmm0
1445 pcmpeqb (%edi), %xmm0
1447 movdqa 32(%esi), %xmm3
1448 palignr $15, 16(%esi), %xmm3
1449 pcmpeqb 16(%edi), %xmm3
1451 L(shr_15_gobble_loop):
1454 pmovmskb %xmm3, %edx
1457 movdqa 64(%esi), %xmm3
1458 palignr $15,48(%esi), %xmm3
1460 movdqa 48(%esi), %xmm0
1461 palignr $15,32(%esi), %xmm0
1462 pcmpeqb 32(%edi), %xmm0
1464 pcmpeqb 48(%edi), %xmm3
1467 jz L(shr_15_gobble_loop)
1471 jge L(shr_15_gobble_next)
1474 L(shr_15_gobble_next):
1478 pmovmskb %xmm3, %edx
1485 lea (%ecx, %edi,1), %eax
1486 lea 15(%ecx, %esi,1), %edx
1496 pmovmskb %xmm1, %ebx
1507 # ifndef USE_AS_WMEMCMP
1532 movzbl -9(%edi), %eax
1533 movzbl -9(%esi), %edx
1539 movzbl -16(%edi), %eax
1540 movzbl -16(%esi), %edx
1546 movzbl -15(%edi), %eax
1547 movzbl -15(%esi), %edx
1553 movzbl -14(%edi), %eax
1554 movzbl -14(%esi), %edx
1560 movzbl -13(%edi), %eax
1561 movzbl -13(%esi), %edx
1567 movzbl -12(%edi), %eax
1568 movzbl -12(%esi), %edx
1574 movzbl -11(%edi), %eax
1575 movzbl -11(%esi), %edx
1581 movzbl -10(%edi), %eax
1582 movzbl -10(%esi), %edx
1613 movzbl -9(%edi), %eax
1614 movzbl -9(%esi), %edx
1619 /* special for wmemcmp */
1622 jz L(next_two_double_words)
1624 jz L(second_double_word)
1631 L(second_double_word):
1638 L(next_two_double_words):
1640 jz L(fourth_double_word)
1647 L(fourth_double_word):
1673 # ifndef USE_AS_WMEMCMP
1697 # ifndef USE_AS_WMEMCMP
1721 # ifndef USE_AS_WMEMCMP
1745 # ifndef USE_AS_WMEMCMP
1767 # ifndef USE_AS_WMEMCMP
1787 # ifndef USE_AS_WMEMCMP
1914 # ifndef USE_AS_WMEMCMP
1972 movzbl -1(%eax), %ecx
2037 movzwl -2(%eax), %ecx
2038 movzwl -2(%edx), %ebx
2050 movl -47(%eax), %ecx
2051 movl -47(%edx), %ebx
2055 movl -43(%eax), %ecx
2056 movl -43(%edx), %ebx
2060 movl -39(%eax), %ecx
2061 movl -39(%edx), %ebx
2065 movl -35(%eax), %ecx
2066 movl -35(%edx), %ebx
2070 movl -31(%eax), %ecx
2071 movl -31(%edx), %ebx
2075 movl -27(%eax), %ecx
2076 movl -27(%edx), %ebx
2080 movl -23(%eax), %ecx
2081 movl -23(%edx), %ebx
2085 movl -19(%eax), %ecx
2086 movl -19(%edx), %ebx
2090 movl -15(%eax), %ecx
2091 movl -15(%edx), %ebx
2095 movl -11(%eax), %ecx
2096 movl -11(%edx), %ebx
2105 movzwl -3(%eax), %ecx
2106 movzwl -3(%edx), %ebx
2111 movzbl -1(%eax), %eax
2146 jg L(find_diff_bigger)
2151 L(find_diff_bigger):