1 /* memcmp with SSSE3, wmemcmp with SSSE3
2 Copyright (C) 2011-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
29 wmemcmp has to use SIGNED comparison for elements.
30 memcmp has to use UNSIGNED comparison for elemnts.
35 # ifdef USE_AS_WMEMCMP
43 jae L(48bytesormore) /* LEN => 48 */
70 # ifndef USE_AS_WMEMCMP
72 jae L(next_unaligned_table)
90 L(next_unaligned_table):
123 pcmpeqb (%rdi), %xmm1
124 movdqa 16(%rsi), %xmm2
125 pcmpeqb 16(%rdi), %xmm2
140 pcmpeqb (%rdi), %xmm0
142 movdqa 16(%rsi), %xmm2
143 pcmpeqb 16(%rdi), %xmm2
144 L(shr_0_gobble_loop):
149 movdqa 32(%rsi), %xmm0
150 movdqa 48(%rsi), %xmm2
152 pcmpeqb 32(%rdi), %xmm0
153 pcmpeqb 48(%rdi), %xmm2
156 jz L(shr_0_gobble_loop)
177 # ifndef USE_AS_WMEMCMP
186 movdqa 16(%rsi), %xmm1
188 palignr $1, (%rsi), %xmm1
189 pcmpeqb (%rdi), %xmm1
191 movdqa 32(%rsi), %xmm3
192 palignr $1, %xmm2, %xmm3
193 pcmpeqb 16(%rdi), %xmm3
209 movdqa 16(%rsi), %xmm0
210 palignr $1, (%rsi), %xmm0
211 pcmpeqb (%rdi), %xmm0
213 movdqa 32(%rsi), %xmm3
214 palignr $1, 16(%rsi), %xmm3
215 pcmpeqb 16(%rdi), %xmm3
217 L(shr_1_gobble_loop):
223 movdqa 64(%rsi), %xmm3
224 palignr $1, 48(%rsi), %xmm3
226 movdqa 48(%rsi), %xmm0
227 palignr $1, 32(%rsi), %xmm0
228 pcmpeqb 32(%rdi), %xmm0
230 pcmpeqb 48(%rdi), %xmm3
233 jz L(shr_1_gobble_loop)
237 jge L(shr_1_gobble_next)
240 L(shr_1_gobble_next):
264 movdqa 16(%rsi), %xmm1
266 palignr $2, (%rsi), %xmm1
267 pcmpeqb (%rdi), %xmm1
269 movdqa 32(%rsi), %xmm3
270 palignr $2, %xmm2, %xmm3
271 pcmpeqb 16(%rdi), %xmm3
287 movdqa 16(%rsi), %xmm0
288 palignr $2, (%rsi), %xmm0
289 pcmpeqb (%rdi), %xmm0
291 movdqa 32(%rsi), %xmm3
292 palignr $2, 16(%rsi), %xmm3
293 pcmpeqb 16(%rdi), %xmm3
295 L(shr_2_gobble_loop):
301 movdqa 64(%rsi), %xmm3
302 palignr $2, 48(%rsi), %xmm3
304 movdqa 48(%rsi), %xmm0
305 palignr $2, 32(%rsi), %xmm0
306 pcmpeqb 32(%rdi), %xmm0
308 pcmpeqb 48(%rdi), %xmm3
311 jz L(shr_2_gobble_loop)
315 jge L(shr_2_gobble_next)
318 L(shr_2_gobble_next):
341 movdqa 16(%rsi), %xmm1
343 palignr $3, (%rsi), %xmm1
344 pcmpeqb (%rdi), %xmm1
346 movdqa 32(%rsi), %xmm3
347 palignr $3, %xmm2, %xmm3
348 pcmpeqb 16(%rdi), %xmm3
364 movdqa 16(%rsi), %xmm0
365 palignr $3, (%rsi), %xmm0
366 pcmpeqb (%rdi), %xmm0
368 movdqa 32(%rsi), %xmm3
369 palignr $3, 16(%rsi), %xmm3
370 pcmpeqb 16(%rdi), %xmm3
372 L(shr_3_gobble_loop):
378 movdqa 64(%rsi), %xmm3
379 palignr $3, 48(%rsi), %xmm3
381 movdqa 48(%rsi), %xmm0
382 palignr $3, 32(%rsi), %xmm0
383 pcmpeqb 32(%rdi), %xmm0
385 pcmpeqb 48(%rdi), %xmm3
388 jz L(shr_3_gobble_loop)
392 jge L(shr_3_gobble_next)
395 L(shr_3_gobble_next):
420 movdqa 16(%rsi), %xmm1
422 palignr $4, (%rsi), %xmm1
423 pcmpeqb (%rdi), %xmm1
425 movdqa 32(%rsi), %xmm3
426 palignr $4, %xmm2, %xmm3
427 pcmpeqb 16(%rdi), %xmm3
443 movdqa 16(%rsi), %xmm0
444 palignr $4, (%rsi), %xmm0
445 pcmpeqb (%rdi), %xmm0
447 movdqa 32(%rsi), %xmm3
448 palignr $4, 16(%rsi), %xmm3
449 pcmpeqb 16(%rdi), %xmm3
451 L(shr_4_gobble_loop):
457 movdqa 64(%rsi), %xmm3
458 palignr $4, 48(%rsi), %xmm3
460 movdqa 48(%rsi), %xmm0
461 palignr $4, 32(%rsi), %xmm0
462 pcmpeqb 32(%rdi), %xmm0
464 pcmpeqb 48(%rdi), %xmm3
467 jz L(shr_4_gobble_loop)
471 jge L(shr_4_gobble_next)
474 L(shr_4_gobble_next):
490 # ifndef USE_AS_WMEMCMP
499 movdqa 16(%rsi), %xmm1
501 palignr $5, (%rsi), %xmm1
502 pcmpeqb (%rdi), %xmm1
504 movdqa 32(%rsi), %xmm3
505 palignr $5, %xmm2, %xmm3
506 pcmpeqb 16(%rdi), %xmm3
522 movdqa 16(%rsi), %xmm0
523 palignr $5, (%rsi), %xmm0
524 pcmpeqb (%rdi), %xmm0
526 movdqa 32(%rsi), %xmm3
527 palignr $5, 16(%rsi), %xmm3
528 pcmpeqb 16(%rdi), %xmm3
530 L(shr_5_gobble_loop):
536 movdqa 64(%rsi), %xmm3
537 palignr $5, 48(%rsi), %xmm3
539 movdqa 48(%rsi), %xmm0
540 palignr $5, 32(%rsi), %xmm0
541 pcmpeqb 32(%rdi), %xmm0
543 pcmpeqb 48(%rdi), %xmm3
546 jz L(shr_5_gobble_loop)
550 jge L(shr_5_gobble_next)
553 L(shr_5_gobble_next):
576 movdqa 16(%rsi), %xmm1
578 palignr $6, (%rsi), %xmm1
579 pcmpeqb (%rdi), %xmm1
581 movdqa 32(%rsi), %xmm3
582 palignr $6, %xmm2, %xmm3
583 pcmpeqb 16(%rdi), %xmm3
599 movdqa 16(%rsi), %xmm0
600 palignr $6, (%rsi), %xmm0
601 pcmpeqb (%rdi), %xmm0
603 movdqa 32(%rsi), %xmm3
604 palignr $6, 16(%rsi), %xmm3
605 pcmpeqb 16(%rdi), %xmm3
607 L(shr_6_gobble_loop):
613 movdqa 64(%rsi), %xmm3
614 palignr $6, 48(%rsi), %xmm3
616 movdqa 48(%rsi), %xmm0
617 palignr $6, 32(%rsi), %xmm0
618 pcmpeqb 32(%rdi), %xmm0
620 pcmpeqb 48(%rdi), %xmm3
623 jz L(shr_6_gobble_loop)
627 jge L(shr_6_gobble_next)
630 L(shr_6_gobble_next):
653 movdqa 16(%rsi), %xmm1
655 palignr $7, (%rsi), %xmm1
656 pcmpeqb (%rdi), %xmm1
658 movdqa 32(%rsi), %xmm3
659 palignr $7, %xmm2, %xmm3
660 pcmpeqb 16(%rdi), %xmm3
676 movdqa 16(%rsi), %xmm0
677 palignr $7, (%rsi), %xmm0
678 pcmpeqb (%rdi), %xmm0
680 movdqa 32(%rsi), %xmm3
681 palignr $7, 16(%rsi), %xmm3
682 pcmpeqb 16(%rdi), %xmm3
684 L(shr_7_gobble_loop):
690 movdqa 64(%rsi), %xmm3
691 palignr $7, 48(%rsi), %xmm3
693 movdqa 48(%rsi), %xmm0
694 palignr $7, 32(%rsi), %xmm0
695 pcmpeqb 32(%rdi), %xmm0
697 pcmpeqb 48(%rdi), %xmm3
700 jz L(shr_7_gobble_loop)
704 jge L(shr_7_gobble_next)
707 L(shr_7_gobble_next):
732 movdqa 16(%rsi), %xmm1
734 palignr $8, (%rsi), %xmm1
735 pcmpeqb (%rdi), %xmm1
737 movdqa 32(%rsi), %xmm3
738 palignr $8, %xmm2, %xmm3
739 pcmpeqb 16(%rdi), %xmm3
755 movdqa 16(%rsi), %xmm0
756 palignr $8, (%rsi), %xmm0
757 pcmpeqb (%rdi), %xmm0
759 movdqa 32(%rsi), %xmm3
760 palignr $8, 16(%rsi), %xmm3
761 pcmpeqb 16(%rdi), %xmm3
763 L(shr_8_gobble_loop):
769 movdqa 64(%rsi), %xmm3
770 palignr $8, 48(%rsi), %xmm3
772 movdqa 48(%rsi), %xmm0
773 palignr $8, 32(%rsi), %xmm0
774 pcmpeqb 32(%rdi), %xmm0
776 pcmpeqb 48(%rdi), %xmm3
779 jz L(shr_8_gobble_loop)
783 jge L(shr_8_gobble_next)
786 L(shr_8_gobble_next):
802 # ifndef USE_AS_WMEMCMP
811 movdqa 16(%rsi), %xmm1
813 palignr $9, (%rsi), %xmm1
814 pcmpeqb (%rdi), %xmm1
816 movdqa 32(%rsi), %xmm3
817 palignr $9, %xmm2, %xmm3
818 pcmpeqb 16(%rdi), %xmm3
834 movdqa 16(%rsi), %xmm0
835 palignr $9, (%rsi), %xmm0
836 pcmpeqb (%rdi), %xmm0
838 movdqa 32(%rsi), %xmm3
839 palignr $9, 16(%rsi), %xmm3
840 pcmpeqb 16(%rdi), %xmm3
842 L(shr_9_gobble_loop):
848 movdqa 64(%rsi), %xmm3
849 palignr $9, 48(%rsi), %xmm3
851 movdqa 48(%rsi), %xmm0
852 palignr $9, 32(%rsi), %xmm0
853 pcmpeqb 32(%rdi), %xmm0
855 pcmpeqb 48(%rdi), %xmm3
858 jz L(shr_9_gobble_loop)
862 jge L(shr_9_gobble_next)
865 L(shr_9_gobble_next):
888 movdqa 16(%rsi), %xmm1
890 palignr $10, (%rsi), %xmm1
891 pcmpeqb (%rdi), %xmm1
893 movdqa 32(%rsi), %xmm3
894 palignr $10, %xmm2, %xmm3
895 pcmpeqb 16(%rdi), %xmm3
911 movdqa 16(%rsi), %xmm0
912 palignr $10, (%rsi), %xmm0
913 pcmpeqb (%rdi), %xmm0
915 movdqa 32(%rsi), %xmm3
916 palignr $10, 16(%rsi), %xmm3
917 pcmpeqb 16(%rdi), %xmm3
919 L(shr_10_gobble_loop):
925 movdqa 64(%rsi), %xmm3
926 palignr $10, 48(%rsi), %xmm3
928 movdqa 48(%rsi), %xmm0
929 palignr $10, 32(%rsi), %xmm0
930 pcmpeqb 32(%rdi), %xmm0
932 pcmpeqb 48(%rdi), %xmm3
935 jz L(shr_10_gobble_loop)
939 jge L(shr_10_gobble_next)
942 L(shr_10_gobble_next):
965 movdqa 16(%rsi), %xmm1
967 palignr $11, (%rsi), %xmm1
968 pcmpeqb (%rdi), %xmm1
970 movdqa 32(%rsi), %xmm3
971 palignr $11, %xmm2, %xmm3
972 pcmpeqb 16(%rdi), %xmm3
988 movdqa 16(%rsi), %xmm0
989 palignr $11, (%rsi), %xmm0
990 pcmpeqb (%rdi), %xmm0
992 movdqa 32(%rsi), %xmm3
993 palignr $11, 16(%rsi), %xmm3
994 pcmpeqb 16(%rdi), %xmm3
996 L(shr_11_gobble_loop):
1002 movdqa 64(%rsi), %xmm3
1003 palignr $11, 48(%rsi), %xmm3
1005 movdqa 48(%rsi), %xmm0
1006 palignr $11, 32(%rsi), %xmm0
1007 pcmpeqb 32(%rdi), %xmm0
1009 pcmpeqb 48(%rdi), %xmm3
1012 jz L(shr_11_gobble_loop)
1016 jge L(shr_11_gobble_next)
1019 L(shr_11_gobble_next):
1023 pmovmskb %xmm3, %edx
1042 jae L(shr_12_gobble)
1044 movdqa 16(%rsi), %xmm1
1046 palignr $12, (%rsi), %xmm1
1047 pcmpeqb (%rdi), %xmm1
1049 movdqa 32(%rsi), %xmm3
1050 palignr $12, %xmm2, %xmm3
1051 pcmpeqb 16(%rdi), %xmm3
1054 pmovmskb %xmm3, %edx
1067 movdqa 16(%rsi), %xmm0
1068 palignr $12, (%rsi), %xmm0
1069 pcmpeqb (%rdi), %xmm0
1071 movdqa 32(%rsi), %xmm3
1072 palignr $12, 16(%rsi), %xmm3
1073 pcmpeqb 16(%rdi), %xmm3
1075 L(shr_12_gobble_loop):
1078 pmovmskb %xmm3, %edx
1081 movdqa 64(%rsi), %xmm3
1082 palignr $12, 48(%rsi), %xmm3
1084 movdqa 48(%rsi), %xmm0
1085 palignr $12, 32(%rsi), %xmm0
1086 pcmpeqb 32(%rdi), %xmm0
1088 pcmpeqb 48(%rdi), %xmm3
1091 jz L(shr_12_gobble_loop)
1095 jge L(shr_12_gobble_next)
1098 L(shr_12_gobble_next):
1102 pmovmskb %xmm3, %edx
1114 # ifndef USE_AS_WMEMCMP
1121 jae L(shr_13_gobble)
1123 movdqa 16(%rsi), %xmm1
1125 palignr $13, (%rsi), %xmm1
1126 pcmpeqb (%rdi), %xmm1
1128 movdqa 32(%rsi), %xmm3
1129 palignr $13, %xmm2, %xmm3
1130 pcmpeqb 16(%rdi), %xmm3
1133 pmovmskb %xmm3, %edx
1146 movdqa 16(%rsi), %xmm0
1147 palignr $13, (%rsi), %xmm0
1148 pcmpeqb (%rdi), %xmm0
1150 movdqa 32(%rsi), %xmm3
1151 palignr $13, 16(%rsi), %xmm3
1152 pcmpeqb 16(%rdi), %xmm3
1154 L(shr_13_gobble_loop):
1157 pmovmskb %xmm3, %edx
1160 movdqa 64(%rsi), %xmm3
1161 palignr $13, 48(%rsi), %xmm3
1163 movdqa 48(%rsi), %xmm0
1164 palignr $13, 32(%rsi), %xmm0
1165 pcmpeqb 32(%rdi), %xmm0
1167 pcmpeqb 48(%rdi), %xmm3
1170 jz L(shr_13_gobble_loop)
1174 jge L(shr_13_gobble_next)
1177 L(shr_13_gobble_next):
1181 pmovmskb %xmm3, %edx
1198 jae L(shr_14_gobble)
1200 movdqa 16(%rsi), %xmm1
1202 palignr $14, (%rsi), %xmm1
1203 pcmpeqb (%rdi), %xmm1
1205 movdqa 32(%rsi), %xmm3
1206 palignr $14, %xmm2, %xmm3
1207 pcmpeqb 16(%rdi), %xmm3
1210 pmovmskb %xmm3, %edx
1223 movdqa 16(%rsi), %xmm0
1224 palignr $14, (%rsi), %xmm0
1225 pcmpeqb (%rdi), %xmm0
1227 movdqa 32(%rsi), %xmm3
1228 palignr $14, 16(%rsi), %xmm3
1229 pcmpeqb 16(%rdi), %xmm3
1231 L(shr_14_gobble_loop):
1234 pmovmskb %xmm3, %edx
1237 movdqa 64(%rsi), %xmm3
1238 palignr $14, 48(%rsi), %xmm3
1240 movdqa 48(%rsi), %xmm0
1241 palignr $14, 32(%rsi), %xmm0
1242 pcmpeqb 32(%rdi), %xmm0
1244 pcmpeqb 48(%rdi), %xmm3
1247 jz L(shr_14_gobble_loop)
1251 jge L(shr_14_gobble_next)
1254 L(shr_14_gobble_next):
1258 pmovmskb %xmm3, %edx
1275 jae L(shr_15_gobble)
1277 movdqa 16(%rsi), %xmm1
1279 palignr $15, (%rsi), %xmm1
1280 pcmpeqb (%rdi), %xmm1
1282 movdqa 32(%rsi), %xmm3
1283 palignr $15, %xmm2, %xmm3
1284 pcmpeqb 16(%rdi), %xmm3
1287 pmovmskb %xmm3, %edx
1300 movdqa 16(%rsi), %xmm0
1301 palignr $15, (%rsi), %xmm0
1302 pcmpeqb (%rdi), %xmm0
1304 movdqa 32(%rsi), %xmm3
1305 palignr $15, 16(%rsi), %xmm3
1306 pcmpeqb 16(%rdi), %xmm3
1308 L(shr_15_gobble_loop):
1311 pmovmskb %xmm3, %edx
1314 movdqa 64(%rsi), %xmm3
1315 palignr $15, 48(%rsi), %xmm3
1317 movdqa 48(%rsi), %xmm0
1318 palignr $15, 32(%rsi), %xmm0
1319 pcmpeqb 32(%rdi), %xmm0
1321 pcmpeqb 48(%rdi), %xmm3
1324 jz L(shr_15_gobble_loop)
1328 jge L(shr_15_gobble_next)
1331 L(shr_15_gobble_next):
1335 pmovmskb %xmm3, %edx
1349 pmovmskb %xmm1, %r8d
1358 # ifndef USE_AS_WMEMCMP
1383 movzbl -9(%rdi), %eax
1384 movzbl -9(%rsi), %edx
1390 movzbl -16(%rdi), %eax
1391 movzbl -16(%rsi), %edx
1397 movzbl -15(%rdi), %eax
1398 movzbl -15(%rsi), %edx
1404 movzbl -14(%rdi), %eax
1405 movzbl -14(%rsi), %edx
1411 movzbl -13(%rdi), %eax
1412 movzbl -13(%rsi), %edx
1418 movzbl -12(%rdi), %eax
1419 movzbl -12(%rsi), %edx
1425 movzbl -11(%rdi), %eax
1426 movzbl -11(%rsi), %edx
1432 movzbl -10(%rdi), %eax
1433 movzbl -10(%rsi), %edx
1462 movzbl -9(%rdi), %eax
1463 movzbl -9(%rsi), %edx
1467 /* special for wmemcmp */
1470 jz L(next_two_double_words)
1472 jz L(second_double_word)
1479 L(second_double_word):
1486 L(next_two_double_words):
1488 jz L(fourth_double_word)
1495 L(fourth_double_word):
1508 # ifndef USE_AS_WMEMCMP
1532 # ifndef USE_AS_WMEMCMP
1556 # ifndef USE_AS_WMEMCMP
1580 # ifndef USE_AS_WMEMCMP
1604 # ifndef USE_AS_WMEMCMP
1626 # ifndef USE_AS_WMEMCMP
1643 movl -44(%rdi), %eax
1644 movl -44(%rsi), %ecx
1648 movl -40(%rdi), %eax
1649 movl -40(%rsi), %ecx
1653 movl -36(%rdi), %eax
1654 movl -36(%rsi), %ecx
1658 movl -32(%rdi), %eax
1659 movl -32(%rsi), %ecx
1663 movl -28(%rdi), %eax
1664 movl -28(%rsi), %ecx
1668 movl -24(%rdi), %eax
1669 movl -24(%rsi), %ecx
1673 movl -20(%rdi), %eax
1674 movl -20(%rsi), %ecx
1678 movl -16(%rdi), %eax
1679 movl -16(%rsi), %ecx
1683 movl -12(%rdi), %eax
1684 movl -12(%rsi), %ecx
1703 movl -44(%rdi), %eax
1707 movl -40(%rdi), %eax
1711 movl -36(%rdi), %eax
1715 movl -32(%rdi), %eax
1719 movl -28(%rdi), %eax
1723 movl -24(%rdi), %eax
1727 movl -20(%rdi), %eax
1731 movl -16(%rdi), %eax
1735 movl -12(%rdi), %eax
1751 # ifndef USE_AS_WMEMCMP
1754 movl -45(%rdi), %eax
1755 movl -45(%rsi), %ecx
1759 movl -41(%rdi), %eax
1760 movl -41(%rsi), %ecx
1764 movl -37(%rdi), %eax
1765 movl -37(%rsi), %ecx
1769 movl -33(%rdi), %eax
1770 movl -33(%rsi), %ecx
1774 movl -29(%rdi), %eax
1775 movl -29(%rsi), %ecx
1779 movl -25(%rdi), %eax
1780 movl -25(%rsi), %ecx
1784 movl -21(%rdi), %eax
1785 movl -21(%rsi), %ecx
1789 movl -17(%rdi), %eax
1790 movl -17(%rsi), %ecx
1794 movl -13(%rdi), %eax
1795 movl -13(%rsi), %ecx
1809 movzbl -1(%rdi), %eax
1817 movl -46(%rdi), %eax
1818 movl -46(%rsi), %ecx
1822 movl -42(%rdi), %eax
1823 movl -42(%rsi), %ecx
1827 movl -38(%rdi), %eax
1828 movl -38(%rsi), %ecx
1832 movl -34(%rdi), %eax
1833 movl -34(%rsi), %ecx
1837 movl -30(%rdi), %eax
1838 movl -30(%rsi), %ecx
1842 movl -26(%rdi), %eax
1843 movl -26(%rsi), %ecx
1847 movl -22(%rdi), %eax
1848 movl -22(%rsi), %ecx
1852 movl -18(%rdi), %eax
1853 movl -18(%rsi), %ecx
1857 movl -14(%rdi), %eax
1858 movl -14(%rsi), %ecx
1862 movl -10(%rdi), %eax
1863 movl -10(%rsi), %ecx
1872 movzwl -2(%rdi), %eax
1873 movzwl -2(%rsi), %ecx
1883 movl -47(%rdi), %eax
1884 movl -47(%rsi), %ecx
1888 movl -43(%rdi), %eax
1889 movl -43(%rsi), %ecx
1893 movl -39(%rdi), %eax
1894 movl -39(%rsi), %ecx
1898 movl -35(%rdi), %eax
1899 movl -35(%rsi), %ecx
1903 movl -31(%rdi), %eax
1904 movl -31(%rsi), %ecx
1908 movl -27(%rdi), %eax
1909 movl -27(%rsi), %ecx
1913 movl -23(%rdi), %eax
1914 movl -23(%rsi), %ecx
1918 movl -19(%rdi), %eax
1919 movl -19(%rsi), %ecx
1923 movl -15(%rdi), %eax
1924 movl -15(%rsi), %ecx
1928 movl -11(%rdi), %eax
1929 movl -11(%rsi), %ecx
1938 movzwl -3(%rdi), %eax
1939 movzwl -3(%rsi), %ecx
1944 movzbl -1(%rdi), %eax
1961 /* We get there only if we already know there is a
1975 jg L(find_diff_bigger)
1980 L(find_diff_bigger):