1 /* memcmp with SSSE3, wmemcmp with SSSE3
2 Copyright (C) 2010-2015 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/>. */
25 # define MEMCMP __memcmp_ssse3
28 # define CFI_PUSH(REG) \
29 cfi_adjust_cfa_offset (4); \
30 cfi_rel_offset (REG, 0)
32 # define CFI_POP(REG) \
33 cfi_adjust_cfa_offset (-4); \
36 # define PUSH(REG) pushl REG; CFI_PUSH (REG)
37 # define POP(REG) popl REG; CFI_POP (REG)
43 # define RETURN_END POP (%edi); POP (%esi); POP (%ebx); ret
44 # define RETURN RETURN_END; cfi_restore_state; cfi_remember_state
47 wmemcmp has to use SIGNED comparison for elements.
48 memcmp has to use UNSIGNED comparison for elemnts.
55 # ifdef USE_AS_WMEMCMP
66 # ifndef USE_AS_WMEMCMP
78 # ifndef USE_AS_WMEMCMP
124 # ifndef USE_AS_WMEMCMP
126 jae L(next_unaligned_table)
144 L(next_unaligned_table):
177 pcmpeqb (%edi), %xmm1
178 movaps 16(%esi), %xmm2
179 pcmpeqb 16(%edi), %xmm2
187 lea (%ecx, %edi,1), %eax
188 lea (%ecx, %esi,1), %edx
200 pcmpeqb (%edi), %xmm0
202 movdqa 16(%esi), %xmm2
203 pcmpeqb 16(%edi), %xmm2
204 L(shr_0_gobble_loop):
209 movdqa 32(%esi), %xmm0
210 movdqa 48(%esi), %xmm2
212 pcmpeqb 32(%edi), %xmm0
213 pcmpeqb 48(%edi), %xmm2
216 jz L(shr_0_gobble_loop)
220 jge L(shr_0_gobble_loop_next)
223 L(shr_0_gobble_loop_next):
233 lea (%ecx, %edi,1), %eax
234 lea (%ecx, %esi,1), %edx
239 # ifndef USE_AS_WMEMCMP
249 movdqa 16(%esi), %xmm1
251 palignr $1,(%esi), %xmm1
252 pcmpeqb (%edi), %xmm1
254 movdqa 32(%esi), %xmm3
255 palignr $1,%xmm2, %xmm3
256 pcmpeqb 16(%edi), %xmm3
264 lea (%ecx, %edi,1), %eax
265 lea 1(%ecx, %esi,1), %edx
275 movdqa 16(%esi), %xmm0
276 palignr $1,(%esi), %xmm0
277 pcmpeqb (%edi), %xmm0
279 movdqa 32(%esi), %xmm3
280 palignr $1,16(%esi), %xmm3
281 pcmpeqb 16(%edi), %xmm3
283 L(shr_1_gobble_loop):
289 movdqa 64(%esi), %xmm3
290 palignr $1,48(%esi), %xmm3
292 movdqa 48(%esi), %xmm0
293 palignr $1,32(%esi), %xmm0
294 pcmpeqb 32(%edi), %xmm0
296 pcmpeqb 48(%edi), %xmm3
299 jz L(shr_1_gobble_loop)
303 jge L(shr_1_gobble_next)
306 L(shr_1_gobble_next):
317 lea (%ecx, %edi,1), %eax
318 lea 1(%ecx, %esi,1), %edx
333 movdqa 16(%esi), %xmm1
335 palignr $2,(%esi), %xmm1
336 pcmpeqb (%edi), %xmm1
338 movdqa 32(%esi), %xmm3
339 palignr $2,%xmm2, %xmm3
340 pcmpeqb 16(%edi), %xmm3
348 lea (%ecx, %edi,1), %eax
349 lea 2(%ecx, %esi,1), %edx
359 movdqa 16(%esi), %xmm0
360 palignr $2,(%esi), %xmm0
361 pcmpeqb (%edi), %xmm0
363 movdqa 32(%esi), %xmm3
364 palignr $2,16(%esi), %xmm3
365 pcmpeqb 16(%edi), %xmm3
367 L(shr_2_gobble_loop):
373 movdqa 64(%esi), %xmm3
374 palignr $2,48(%esi), %xmm3
376 movdqa 48(%esi), %xmm0
377 palignr $2,32(%esi), %xmm0
378 pcmpeqb 32(%edi), %xmm0
380 pcmpeqb 48(%edi), %xmm3
383 jz L(shr_2_gobble_loop)
387 jge L(shr_2_gobble_next)
390 L(shr_2_gobble_next):
401 lea (%ecx, %edi,1), %eax
402 lea 2(%ecx, %esi,1), %edx
416 movdqa 16(%esi), %xmm1
418 palignr $3,(%esi), %xmm1
419 pcmpeqb (%edi), %xmm1
421 movdqa 32(%esi), %xmm3
422 palignr $3,%xmm2, %xmm3
423 pcmpeqb 16(%edi), %xmm3
431 lea (%ecx, %edi,1), %eax
432 lea 3(%ecx, %esi,1), %edx
442 movdqa 16(%esi), %xmm0
443 palignr $3,(%esi), %xmm0
444 pcmpeqb (%edi), %xmm0
446 movdqa 32(%esi), %xmm3
447 palignr $3,16(%esi), %xmm3
448 pcmpeqb 16(%edi), %xmm3
450 L(shr_3_gobble_loop):
456 movdqa 64(%esi), %xmm3
457 palignr $3,48(%esi), %xmm3
459 movdqa 48(%esi), %xmm0
460 palignr $3,32(%esi), %xmm0
461 pcmpeqb 32(%edi), %xmm0
463 pcmpeqb 48(%edi), %xmm3
466 jz L(shr_3_gobble_loop)
470 jge L(shr_3_gobble_next)
473 L(shr_3_gobble_next):
484 lea (%ecx, %edi,1), %eax
485 lea 3(%ecx, %esi,1), %edx
500 movdqa 16(%esi), %xmm1
502 palignr $4,(%esi), %xmm1
503 pcmpeqb (%edi), %xmm1
505 movdqa 32(%esi), %xmm3
506 palignr $4,%xmm2, %xmm3
507 pcmpeqb 16(%edi), %xmm3
515 lea (%ecx, %edi,1), %eax
516 lea 4(%ecx, %esi,1), %edx
526 movdqa 16(%esi), %xmm0
527 palignr $4,(%esi), %xmm0
528 pcmpeqb (%edi), %xmm0
530 movdqa 32(%esi), %xmm3
531 palignr $4,16(%esi), %xmm3
532 pcmpeqb 16(%edi), %xmm3
534 L(shr_4_gobble_loop):
540 movdqa 64(%esi), %xmm3
541 palignr $4,48(%esi), %xmm3
543 movdqa 48(%esi), %xmm0
544 palignr $4,32(%esi), %xmm0
545 pcmpeqb 32(%edi), %xmm0
547 pcmpeqb 48(%edi), %xmm3
550 jz L(shr_4_gobble_loop)
554 jge L(shr_4_gobble_next)
557 L(shr_4_gobble_next):
568 lea (%ecx, %edi,1), %eax
569 lea 4(%ecx, %esi,1), %edx
574 # ifndef USE_AS_WMEMCMP
584 movdqa 16(%esi), %xmm1
586 palignr $5,(%esi), %xmm1
587 pcmpeqb (%edi), %xmm1
589 movdqa 32(%esi), %xmm3
590 palignr $5,%xmm2, %xmm3
591 pcmpeqb 16(%edi), %xmm3
599 lea (%ecx, %edi,1), %eax
600 lea 5(%ecx, %esi,1), %edx
610 movdqa 16(%esi), %xmm0
611 palignr $5,(%esi), %xmm0
612 pcmpeqb (%edi), %xmm0
614 movdqa 32(%esi), %xmm3
615 palignr $5,16(%esi), %xmm3
616 pcmpeqb 16(%edi), %xmm3
618 L(shr_5_gobble_loop):
624 movdqa 64(%esi), %xmm3
625 palignr $5,48(%esi), %xmm3
627 movdqa 48(%esi), %xmm0
628 palignr $5,32(%esi), %xmm0
629 pcmpeqb 32(%edi), %xmm0
631 pcmpeqb 48(%edi), %xmm3
634 jz L(shr_5_gobble_loop)
638 jge L(shr_5_gobble_next)
641 L(shr_5_gobble_next):
652 lea (%ecx, %edi,1), %eax
653 lea 5(%ecx, %esi,1), %edx
667 movdqa 16(%esi), %xmm1
669 palignr $6,(%esi), %xmm1
670 pcmpeqb (%edi), %xmm1
672 movdqa 32(%esi), %xmm3
673 palignr $6,%xmm2, %xmm3
674 pcmpeqb 16(%edi), %xmm3
682 lea (%ecx, %edi,1), %eax
683 lea 6(%ecx, %esi,1), %edx
693 movdqa 16(%esi), %xmm0
694 palignr $6,(%esi), %xmm0
695 pcmpeqb (%edi), %xmm0
697 movdqa 32(%esi), %xmm3
698 palignr $6,16(%esi), %xmm3
699 pcmpeqb 16(%edi), %xmm3
701 L(shr_6_gobble_loop):
707 movdqa 64(%esi), %xmm3
708 palignr $6,48(%esi), %xmm3
710 movdqa 48(%esi), %xmm0
711 palignr $6,32(%esi), %xmm0
712 pcmpeqb 32(%edi), %xmm0
714 pcmpeqb 48(%edi), %xmm3
717 jz L(shr_6_gobble_loop)
721 jge L(shr_6_gobble_next)
724 L(shr_6_gobble_next):
735 lea (%ecx, %edi,1), %eax
736 lea 6(%ecx, %esi,1), %edx
750 movdqa 16(%esi), %xmm1
752 palignr $7,(%esi), %xmm1
753 pcmpeqb (%edi), %xmm1
755 movdqa 32(%esi), %xmm3
756 palignr $7,%xmm2, %xmm3
757 pcmpeqb 16(%edi), %xmm3
765 lea (%ecx, %edi,1), %eax
766 lea 7(%ecx, %esi,1), %edx
776 movdqa 16(%esi), %xmm0
777 palignr $7,(%esi), %xmm0
778 pcmpeqb (%edi), %xmm0
780 movdqa 32(%esi), %xmm3
781 palignr $7,16(%esi), %xmm3
782 pcmpeqb 16(%edi), %xmm3
784 L(shr_7_gobble_loop):
790 movdqa 64(%esi), %xmm3
791 palignr $7,48(%esi), %xmm3
793 movdqa 48(%esi), %xmm0
794 palignr $7,32(%esi), %xmm0
795 pcmpeqb 32(%edi), %xmm0
797 pcmpeqb 48(%edi), %xmm3
800 jz L(shr_7_gobble_loop)
804 jge L(shr_7_gobble_next)
807 L(shr_7_gobble_next):
818 lea (%ecx, %edi,1), %eax
819 lea 7(%ecx, %esi,1), %edx
834 movdqa 16(%esi), %xmm1
836 palignr $8,(%esi), %xmm1
837 pcmpeqb (%edi), %xmm1
839 movdqa 32(%esi), %xmm3
840 palignr $8,%xmm2, %xmm3
841 pcmpeqb 16(%edi), %xmm3
849 lea (%ecx, %edi,1), %eax
850 lea 8(%ecx, %esi,1), %edx
860 movdqa 16(%esi), %xmm0
861 palignr $8,(%esi), %xmm0
862 pcmpeqb (%edi), %xmm0
864 movdqa 32(%esi), %xmm3
865 palignr $8,16(%esi), %xmm3
866 pcmpeqb 16(%edi), %xmm3
868 L(shr_8_gobble_loop):
874 movdqa 64(%esi), %xmm3
875 palignr $8,48(%esi), %xmm3
877 movdqa 48(%esi), %xmm0
878 palignr $8,32(%esi), %xmm0
879 pcmpeqb 32(%edi), %xmm0
881 pcmpeqb 48(%edi), %xmm3
884 jz L(shr_8_gobble_loop)
888 jge L(shr_8_gobble_next)
891 L(shr_8_gobble_next):
902 lea (%ecx, %edi,1), %eax
903 lea 8(%ecx, %esi,1), %edx
908 # ifndef USE_AS_WMEMCMP
918 movdqa 16(%esi), %xmm1
920 palignr $9,(%esi), %xmm1
921 pcmpeqb (%edi), %xmm1
923 movdqa 32(%esi), %xmm3
924 palignr $9,%xmm2, %xmm3
925 pcmpeqb 16(%edi), %xmm3
933 lea (%ecx, %edi,1), %eax
934 lea 9(%ecx, %esi,1), %edx
944 movdqa 16(%esi), %xmm0
945 palignr $9,(%esi), %xmm0
946 pcmpeqb (%edi), %xmm0
948 movdqa 32(%esi), %xmm3
949 palignr $9,16(%esi), %xmm3
950 pcmpeqb 16(%edi), %xmm3
952 L(shr_9_gobble_loop):
958 movdqa 64(%esi), %xmm3
959 palignr $9,48(%esi), %xmm3
961 movdqa 48(%esi), %xmm0
962 palignr $9,32(%esi), %xmm0
963 pcmpeqb 32(%edi), %xmm0
965 pcmpeqb 48(%edi), %xmm3
968 jz L(shr_9_gobble_loop)
972 jge L(shr_9_gobble_next)
975 L(shr_9_gobble_next):
986 lea (%ecx, %edi,1), %eax
987 lea 9(%ecx, %esi,1), %edx
1001 movdqa 16(%esi), %xmm1
1003 palignr $10, (%esi), %xmm1
1004 pcmpeqb (%edi), %xmm1
1006 movdqa 32(%esi), %xmm3
1007 palignr $10,%xmm2, %xmm3
1008 pcmpeqb 16(%edi), %xmm3
1011 pmovmskb %xmm3, %edx
1016 lea (%ecx, %edi,1), %eax
1017 lea 10(%ecx, %esi,1), %edx
1027 movdqa 16(%esi), %xmm0
1028 palignr $10, (%esi), %xmm0
1029 pcmpeqb (%edi), %xmm0
1031 movdqa 32(%esi), %xmm3
1032 palignr $10, 16(%esi), %xmm3
1033 pcmpeqb 16(%edi), %xmm3
1035 L(shr_10_gobble_loop):
1038 pmovmskb %xmm3, %edx
1041 movdqa 64(%esi), %xmm3
1042 palignr $10,48(%esi), %xmm3
1044 movdqa 48(%esi), %xmm0
1045 palignr $10,32(%esi), %xmm0
1046 pcmpeqb 32(%edi), %xmm0
1048 pcmpeqb 48(%edi), %xmm3
1051 jz L(shr_10_gobble_loop)
1055 jge L(shr_10_gobble_next)
1058 L(shr_10_gobble_next):
1062 pmovmskb %xmm3, %edx
1069 lea (%ecx, %edi,1), %eax
1070 lea 10(%ecx, %esi,1), %edx
1082 jae L(shr_11_gobble)
1084 movdqa 16(%esi), %xmm1
1086 palignr $11, (%esi), %xmm1
1087 pcmpeqb (%edi), %xmm1
1089 movdqa 32(%esi), %xmm3
1090 palignr $11, %xmm2, %xmm3
1091 pcmpeqb 16(%edi), %xmm3
1094 pmovmskb %xmm3, %edx
1099 lea (%ecx, %edi,1), %eax
1100 lea 11(%ecx, %esi,1), %edx
1110 movdqa 16(%esi), %xmm0
1111 palignr $11, (%esi), %xmm0
1112 pcmpeqb (%edi), %xmm0
1114 movdqa 32(%esi), %xmm3
1115 palignr $11, 16(%esi), %xmm3
1116 pcmpeqb 16(%edi), %xmm3
1118 L(shr_11_gobble_loop):
1121 pmovmskb %xmm3, %edx
1124 movdqa 64(%esi), %xmm3
1125 palignr $11,48(%esi), %xmm3
1127 movdqa 48(%esi), %xmm0
1128 palignr $11,32(%esi), %xmm0
1129 pcmpeqb 32(%edi), %xmm0
1131 pcmpeqb 48(%edi), %xmm3
1134 jz L(shr_11_gobble_loop)
1138 jge L(shr_11_gobble_next)
1141 L(shr_11_gobble_next):
1145 pmovmskb %xmm3, %edx
1152 lea (%ecx, %edi,1), %eax
1153 lea 11(%ecx, %esi,1), %edx
1166 jae L(shr_12_gobble)
1168 movdqa 16(%esi), %xmm1
1170 palignr $12, (%esi), %xmm1
1171 pcmpeqb (%edi), %xmm1
1173 movdqa 32(%esi), %xmm3
1174 palignr $12, %xmm2, %xmm3
1175 pcmpeqb 16(%edi), %xmm3
1178 pmovmskb %xmm3, %edx
1183 lea (%ecx, %edi,1), %eax
1184 lea 12(%ecx, %esi,1), %edx
1194 movdqa 16(%esi), %xmm0
1195 palignr $12, (%esi), %xmm0
1196 pcmpeqb (%edi), %xmm0
1198 movdqa 32(%esi), %xmm3
1199 palignr $12, 16(%esi), %xmm3
1200 pcmpeqb 16(%edi), %xmm3
1202 L(shr_12_gobble_loop):
1205 pmovmskb %xmm3, %edx
1208 movdqa 64(%esi), %xmm3
1209 palignr $12,48(%esi), %xmm3
1211 movdqa 48(%esi), %xmm0
1212 palignr $12,32(%esi), %xmm0
1213 pcmpeqb 32(%edi), %xmm0
1215 pcmpeqb 48(%edi), %xmm3
1218 jz L(shr_12_gobble_loop)
1222 jge L(shr_12_gobble_next)
1225 L(shr_12_gobble_next):
1229 pmovmskb %xmm3, %edx
1236 lea (%ecx, %edi,1), %eax
1237 lea 12(%ecx, %esi,1), %edx
1242 # ifndef USE_AS_WMEMCMP
1250 jae L(shr_13_gobble)
1252 movdqa 16(%esi), %xmm1
1254 palignr $13, (%esi), %xmm1
1255 pcmpeqb (%edi), %xmm1
1257 movdqa 32(%esi), %xmm3
1258 palignr $13, %xmm2, %xmm3
1259 pcmpeqb 16(%edi), %xmm3
1262 pmovmskb %xmm3, %edx
1267 lea (%ecx, %edi,1), %eax
1268 lea 13(%ecx, %esi,1), %edx
1278 movdqa 16(%esi), %xmm0
1279 palignr $13, (%esi), %xmm0
1280 pcmpeqb (%edi), %xmm0
1282 movdqa 32(%esi), %xmm3
1283 palignr $13, 16(%esi), %xmm3
1284 pcmpeqb 16(%edi), %xmm3
1286 L(shr_13_gobble_loop):
1289 pmovmskb %xmm3, %edx
1292 movdqa 64(%esi), %xmm3
1293 palignr $13,48(%esi), %xmm3
1295 movdqa 48(%esi), %xmm0
1296 palignr $13,32(%esi), %xmm0
1297 pcmpeqb 32(%edi), %xmm0
1299 pcmpeqb 48(%edi), %xmm3
1302 jz L(shr_13_gobble_loop)
1306 jge L(shr_13_gobble_next)
1309 L(shr_13_gobble_next):
1313 pmovmskb %xmm3, %edx
1320 lea (%ecx, %edi,1), %eax
1321 lea 13(%ecx, %esi,1), %edx
1333 jae L(shr_14_gobble)
1335 movdqa 16(%esi), %xmm1
1337 palignr $14, (%esi), %xmm1
1338 pcmpeqb (%edi), %xmm1
1340 movdqa 32(%esi), %xmm3
1341 palignr $14, %xmm2, %xmm3
1342 pcmpeqb 16(%edi), %xmm3
1345 pmovmskb %xmm3, %edx
1350 lea (%ecx, %edi,1), %eax
1351 lea 14(%ecx, %esi,1), %edx
1361 movdqa 16(%esi), %xmm0
1362 palignr $14, (%esi), %xmm0
1363 pcmpeqb (%edi), %xmm0
1365 movdqa 32(%esi), %xmm3
1366 palignr $14, 16(%esi), %xmm3
1367 pcmpeqb 16(%edi), %xmm3
1369 L(shr_14_gobble_loop):
1372 pmovmskb %xmm3, %edx
1375 movdqa 64(%esi), %xmm3
1376 palignr $14,48(%esi), %xmm3
1378 movdqa 48(%esi), %xmm0
1379 palignr $14,32(%esi), %xmm0
1380 pcmpeqb 32(%edi), %xmm0
1382 pcmpeqb 48(%edi), %xmm3
1385 jz L(shr_14_gobble_loop)
1389 jge L(shr_14_gobble_next)
1392 L(shr_14_gobble_next):
1396 pmovmskb %xmm3, %edx
1403 lea (%ecx, %edi,1), %eax
1404 lea 14(%ecx, %esi,1), %edx
1416 jae L(shr_15_gobble)
1418 movdqa 16(%esi), %xmm1
1420 palignr $15, (%esi), %xmm1
1421 pcmpeqb (%edi), %xmm1
1423 movdqa 32(%esi), %xmm3
1424 palignr $15, %xmm2, %xmm3
1425 pcmpeqb 16(%edi), %xmm3
1428 pmovmskb %xmm3, %edx
1433 lea (%ecx, %edi,1), %eax
1434 lea 15(%ecx, %esi,1), %edx
1444 movdqa 16(%esi), %xmm0
1445 palignr $15, (%esi), %xmm0
1446 pcmpeqb (%edi), %xmm0
1448 movdqa 32(%esi), %xmm3
1449 palignr $15, 16(%esi), %xmm3
1450 pcmpeqb 16(%edi), %xmm3
1452 L(shr_15_gobble_loop):
1455 pmovmskb %xmm3, %edx
1458 movdqa 64(%esi), %xmm3
1459 palignr $15,48(%esi), %xmm3
1461 movdqa 48(%esi), %xmm0
1462 palignr $15,32(%esi), %xmm0
1463 pcmpeqb 32(%edi), %xmm0
1465 pcmpeqb 48(%edi), %xmm3
1468 jz L(shr_15_gobble_loop)
1472 jge L(shr_15_gobble_next)
1475 L(shr_15_gobble_next):
1479 pmovmskb %xmm3, %edx
1486 lea (%ecx, %edi,1), %eax
1487 lea 15(%ecx, %esi,1), %edx
1497 pmovmskb %xmm1, %ebx
1508 # ifndef USE_AS_WMEMCMP
1533 movzbl -9(%edi), %eax
1534 movzbl -9(%esi), %edx
1540 movzbl -16(%edi), %eax
1541 movzbl -16(%esi), %edx
1547 movzbl -15(%edi), %eax
1548 movzbl -15(%esi), %edx
1554 movzbl -14(%edi), %eax
1555 movzbl -14(%esi), %edx
1561 movzbl -13(%edi), %eax
1562 movzbl -13(%esi), %edx
1568 movzbl -12(%edi), %eax
1569 movzbl -12(%esi), %edx
1575 movzbl -11(%edi), %eax
1576 movzbl -11(%esi), %edx
1582 movzbl -10(%edi), %eax
1583 movzbl -10(%esi), %edx
1614 movzbl -9(%edi), %eax
1615 movzbl -9(%esi), %edx
1620 /* special for wmemcmp */
1623 jz L(next_two_double_words)
1625 jz L(second_double_word)
1632 L(second_double_word):
1639 L(next_two_double_words):
1641 jz L(fourth_double_word)
1648 L(fourth_double_word):
1674 # ifndef USE_AS_WMEMCMP
1698 # ifndef USE_AS_WMEMCMP
1722 # ifndef USE_AS_WMEMCMP
1746 # ifndef USE_AS_WMEMCMP
1768 # ifndef USE_AS_WMEMCMP
1788 # ifndef USE_AS_WMEMCMP
1915 # ifndef USE_AS_WMEMCMP
1973 movzbl -1(%eax), %ecx
2038 movzwl -2(%eax), %ecx
2039 movzwl -2(%edx), %ebx
2051 movl -47(%eax), %ecx
2052 movl -47(%edx), %ebx
2056 movl -43(%eax), %ecx
2057 movl -43(%edx), %ebx
2061 movl -39(%eax), %ecx
2062 movl -39(%edx), %ebx
2066 movl -35(%eax), %ecx
2067 movl -35(%edx), %ebx
2071 movl -31(%eax), %ecx
2072 movl -31(%edx), %ebx
2076 movl -27(%eax), %ecx
2077 movl -27(%edx), %ebx
2081 movl -23(%eax), %ecx
2082 movl -23(%edx), %ebx
2086 movl -19(%eax), %ecx
2087 movl -19(%edx), %ebx
2091 movl -15(%eax), %ecx
2092 movl -15(%edx), %ebx
2096 movl -11(%eax), %ecx
2097 movl -11(%edx), %ebx
2106 movzwl -3(%eax), %ecx
2107 movzwl -3(%edx), %ebx
2112 movzbl -1(%eax), %eax
2147 jg L(find_diff_bigger)
2152 L(find_diff_bigger):