• Home
  • Raw
  • Download

Lines Matching refs:X64

7 … -mtriple=x86_64-unknown-unknown               | FileCheck %s --check-prefixes=X64,X64-SSE,X64-SSE2
8 …-mtriple=x86_64-unknown-unknown -mattr=sse4.1 | FileCheck %s --check-prefixes=X64,X64-SSE,X64-SSE41
9 … -mtriple=x86_64-unknown-unknown -mattr=avx | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX1
10 … -mtriple=x86_64-unknown-unknown -mattr=avx2 | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX2
11 …nknown-unknown -mattr=avx512bw,+prefer-256-bit | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX2
12 …-mattr=avx512bw,-prefer-256-bit | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX512,X64-AVX512BW
13 …avx512f,+prefer-256-bit,-prefer-mask-registers | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX2
14 …r-256-bit,-prefer-mask-registers | FileCheck %s --check-prefixes=X64,X64-AVX,X64-AVX512,X64-AVX512F
15 …+prefer-256-bit,+prefer-mask-registers | FileCheck %s --check-prefixes=X64,X64-MIC-AVX,X64-MIC-AVX2
16 …efer-256-bit,+prefer-mask-registers | FileCheck %s --check-prefixes=X64,X64-MIC-AVX,X64-MIC-AVX512F
31 ; X64-LABEL: length0:
32 ; X64: # %bb.0:
33 ; X64-NEXT: xorl %eax, %eax
34 ; X64-NEXT: retq
45 ; X64-LABEL: length0_eq:
46 ; X64: # %bb.0:
47 ; X64-NEXT: movb $1, %al
48 ; X64-NEXT: retq
60 ; X64-LABEL: length0_lt:
61 ; X64: # %bb.0:
62 ; X64-NEXT: xorl %eax, %eax
63 ; X64-NEXT: retq
83 ; X64-LABEL: length2:
84 ; X64: # %bb.0:
85 ; X64-NEXT: movzwl (%rdi), %eax
86 ; X64-NEXT: movzwl (%rsi), %ecx
87 ; X64-NEXT: rolw $8, %ax
88 ; X64-NEXT: rolw $8, %cx
89 ; X64-NEXT: movzwl %ax, %eax
90 ; X64-NEXT: movzwl %cx, %ecx
91 ; X64-NEXT: subl %ecx, %eax
92 ; X64-NEXT: retq
107 ; X64-LABEL: length2_eq:
108 ; X64: # %bb.0:
109 ; X64-NEXT: movzwl (%rdi), %eax
110 ; X64-NEXT: cmpw (%rsi), %ax
111 ; X64-NEXT: sete %al
112 ; X64-NEXT: retq
134 ; X64-LABEL: length2_lt:
135 ; X64: # %bb.0:
136 ; X64-NEXT: movzwl (%rdi), %eax
137 ; X64-NEXT: movzwl (%rsi), %ecx
138 ; X64-NEXT: rolw $8, %ax
139 ; X64-NEXT: rolw $8, %cx
140 ; X64-NEXT: movzwl %ax, %eax
141 ; X64-NEXT: movzwl %cx, %ecx
142 ; X64-NEXT: subl %ecx, %eax
143 ; X64-NEXT: shrl $31, %eax
144 ; X64-NEXT: # kill: def $al killed $al killed $eax
145 ; X64-NEXT: retq
167 ; X64-LABEL: length2_gt:
168 ; X64: # %bb.0:
169 ; X64-NEXT: movzwl (%rdi), %eax
170 ; X64-NEXT: movzwl (%rsi), %ecx
171 ; X64-NEXT: rolw $8, %ax
172 ; X64-NEXT: rolw $8, %cx
173 ; X64-NEXT: movzwl %ax, %eax
174 ; X64-NEXT: movzwl %cx, %ecx
175 ; X64-NEXT: subl %ecx, %eax
176 ; X64-NEXT: testl %eax, %eax
177 ; X64-NEXT: setg %al
178 ; X64-NEXT: retq
193 ; X64-LABEL: length2_eq_const:
194 ; X64: # %bb.0:
195 ; X64-NEXT: movzwl (%rdi), %eax
196 ; X64-NEXT: cmpl $12849, %eax # imm = 0x3231
197 ; X64-NEXT: setne %al
198 ; X64-NEXT: retq
217 ; X64-LABEL: length2_eq_nobuiltin_attr:
218 ; X64: # %bb.0:
219 ; X64-NEXT: pushq %rax
220 ; X64-NEXT: movl $2, %edx
221 ; X64-NEXT: callq memcmp
222 ; X64-NEXT: testl %eax, %eax
223 ; X64-NEXT: sete %al
224 ; X64-NEXT: popq %rcx
225 ; X64-NEXT: retq
256 ; X64-LABEL: length3:
257 ; X64: # %bb.0:
258 ; X64-NEXT: movzwl (%rdi), %eax
259 ; X64-NEXT: movzwl (%rsi), %ecx
260 ; X64-NEXT: rolw $8, %ax
261 ; X64-NEXT: rolw $8, %cx
262 ; X64-NEXT: cmpw %cx, %ax
263 ; X64-NEXT: jne .LBB9_3
264 ; X64-NEXT: # %bb.1: # %loadbb1
265 ; X64-NEXT: movzbl 2(%rdi), %eax
266 ; X64-NEXT: movzbl 2(%rsi), %ecx
267 ; X64-NEXT: subl %ecx, %eax
268 ; X64-NEXT: retq
269 ; X64-NEXT: .LBB9_3: # %res_block
270 ; X64-NEXT: setae %al
271 ; X64-NEXT: movzbl %al, %eax
272 ; X64-NEXT: leal -1(%rax,%rax), %eax
273 ; X64-NEXT: retq
292 ; X64-LABEL: length3_eq:
293 ; X64: # %bb.0:
294 ; X64-NEXT: movzwl (%rdi), %eax
295 ; X64-NEXT: xorw (%rsi), %ax
296 ; X64-NEXT: movb 2(%rdi), %cl
297 ; X64-NEXT: xorb 2(%rsi), %cl
298 ; X64-NEXT: movzbl %cl, %ecx
299 ; X64-NEXT: orw %ax, %cx
300 ; X64-NEXT: setne %al
301 ; X64-NEXT: retq
322 ; X64-LABEL: length4:
323 ; X64: # %bb.0:
324 ; X64-NEXT: movl (%rdi), %ecx
325 ; X64-NEXT: movl (%rsi), %edx
326 ; X64-NEXT: bswapl %ecx
327 ; X64-NEXT: bswapl %edx
328 ; X64-NEXT: xorl %eax, %eax
329 ; X64-NEXT: cmpl %edx, %ecx
330 ; X64-NEXT: seta %al
331 ; X64-NEXT: sbbl $0, %eax
332 ; X64-NEXT: retq
347 ; X64-LABEL: length4_eq:
348 ; X64: # %bb.0:
349 ; X64-NEXT: movl (%rdi), %eax
350 ; X64-NEXT: cmpl (%rsi), %eax
351 ; X64-NEXT: setne %al
352 ; X64-NEXT: retq
375 ; X64-LABEL: length4_lt:
376 ; X64: # %bb.0:
377 ; X64-NEXT: movl (%rdi), %ecx
378 ; X64-NEXT: movl (%rsi), %edx
379 ; X64-NEXT: bswapl %ecx
380 ; X64-NEXT: bswapl %edx
381 ; X64-NEXT: xorl %eax, %eax
382 ; X64-NEXT: cmpl %edx, %ecx
383 ; X64-NEXT: seta %al
384 ; X64-NEXT: sbbl $0, %eax
385 ; X64-NEXT: shrl $31, %eax
386 ; X64-NEXT: # kill: def $al killed $al killed $eax
387 ; X64-NEXT: retq
410 ; X64-LABEL: length4_gt:
411 ; X64: # %bb.0:
412 ; X64-NEXT: movl (%rdi), %eax
413 ; X64-NEXT: movl (%rsi), %ecx
414 ; X64-NEXT: bswapl %eax
415 ; X64-NEXT: bswapl %ecx
416 ; X64-NEXT: xorl %edx, %edx
417 ; X64-NEXT: cmpl %ecx, %eax
418 ; X64-NEXT: seta %dl
419 ; X64-NEXT: sbbl $0, %edx
420 ; X64-NEXT: testl %edx, %edx
421 ; X64-NEXT: setg %al
422 ; X64-NEXT: retq
436 ; X64-LABEL: length4_eq_const:
437 ; X64: # %bb.0:
438 ; X64-NEXT: cmpl $875770417, (%rdi) # imm = 0x34333231
439 ; X64-NEXT: sete %al
440 ; X64-NEXT: retq
471 ; X64-LABEL: length5:
472 ; X64: # %bb.0:
473 ; X64-NEXT: movl (%rdi), %eax
474 ; X64-NEXT: movl (%rsi), %ecx
475 ; X64-NEXT: bswapl %eax
476 ; X64-NEXT: bswapl %ecx
477 ; X64-NEXT: cmpl %ecx, %eax
478 ; X64-NEXT: jne .LBB16_3
479 ; X64-NEXT: # %bb.1: # %loadbb1
480 ; X64-NEXT: movzbl 4(%rdi), %eax
481 ; X64-NEXT: movzbl 4(%rsi), %ecx
482 ; X64-NEXT: subl %ecx, %eax
483 ; X64-NEXT: retq
484 ; X64-NEXT: .LBB16_3: # %res_block
485 ; X64-NEXT: setae %al
486 ; X64-NEXT: movzbl %al, %eax
487 ; X64-NEXT: leal -1(%rax,%rax), %eax
488 ; X64-NEXT: retq
507 ; X64-LABEL: length5_eq:
508 ; X64: # %bb.0:
509 ; X64-NEXT: movl (%rdi), %eax
510 ; X64-NEXT: xorl (%rsi), %eax
511 ; X64-NEXT: movb 4(%rdi), %cl
512 ; X64-NEXT: xorb 4(%rsi), %cl
513 ; X64-NEXT: movzbl %cl, %ecx
514 ; X64-NEXT: orl %eax, %ecx
515 ; X64-NEXT: setne %al
516 ; X64-NEXT: retq
549 ; X64-LABEL: length5_lt:
550 ; X64: # %bb.0:
551 ; X64-NEXT: movl (%rdi), %eax
552 ; X64-NEXT: movl (%rsi), %ecx
553 ; X64-NEXT: bswapl %eax
554 ; X64-NEXT: bswapl %ecx
555 ; X64-NEXT: cmpl %ecx, %eax
556 ; X64-NEXT: jne .LBB18_3
557 ; X64-NEXT: # %bb.1: # %loadbb1
558 ; X64-NEXT: movzbl 4(%rdi), %eax
559 ; X64-NEXT: movzbl 4(%rsi), %ecx
560 ; X64-NEXT: subl %ecx, %eax
561 ; X64-NEXT: shrl $31, %eax
562 ; X64-NEXT: # kill: def $al killed $al killed $eax
563 ; X64-NEXT: retq
564 ; X64-NEXT: .LBB18_3: # %res_block
565 ; X64-NEXT: setae %al
566 ; X64-NEXT: movzbl %al, %eax
567 ; X64-NEXT: leal -1(%rax,%rax), %eax
568 ; X64-NEXT: shrl $31, %eax
569 ; X64-NEXT: # kill: def $al killed $al killed $eax
570 ; X64-NEXT: retq
605 ; X64-LABEL: length7:
606 ; X64: # %bb.0:
607 ; X64-NEXT: movl (%rdi), %ecx
608 ; X64-NEXT: movl (%rsi), %edx
609 ; X64-NEXT: bswapl %ecx
610 ; X64-NEXT: bswapl %edx
611 ; X64-NEXT: cmpl %edx, %ecx
612 ; X64-NEXT: jne .LBB19_2
613 ; X64-NEXT: # %bb.1: # %loadbb1
614 ; X64-NEXT: movl 3(%rdi), %ecx
615 ; X64-NEXT: movl 3(%rsi), %edx
616 ; X64-NEXT: bswapl %ecx
617 ; X64-NEXT: bswapl %edx
618 ; X64-NEXT: xorl %eax, %eax
619 ; X64-NEXT: cmpl %edx, %ecx
620 ; X64-NEXT: je .LBB19_3
621 ; X64-NEXT: .LBB19_2: # %res_block
622 ; X64-NEXT: xorl %eax, %eax
623 ; X64-NEXT: cmpl %edx, %ecx
624 ; X64-NEXT: setae %al
625 ; X64-NEXT: leal -1(%rax,%rax), %eax
626 ; X64-NEXT: .LBB19_3: # %endblock
627 ; X64-NEXT: retq
645 ; X64-LABEL: length7_eq:
646 ; X64: # %bb.0:
647 ; X64-NEXT: movl (%rdi), %eax
648 ; X64-NEXT: movl 3(%rdi), %ecx
649 ; X64-NEXT: xorl (%rsi), %eax
650 ; X64-NEXT: xorl 3(%rsi), %ecx
651 ; X64-NEXT: orl %eax, %ecx
652 ; X64-NEXT: setne %al
653 ; X64-NEXT: retq
690 ; X64-LABEL: length7_lt:
691 ; X64: # %bb.0:
692 ; X64-NEXT: movl (%rdi), %ecx
693 ; X64-NEXT: movl (%rsi), %edx
694 ; X64-NEXT: bswapl %ecx
695 ; X64-NEXT: bswapl %edx
696 ; X64-NEXT: cmpl %edx, %ecx
697 ; X64-NEXT: jne .LBB21_2
698 ; X64-NEXT: # %bb.1: # %loadbb1
699 ; X64-NEXT: movl 3(%rdi), %ecx
700 ; X64-NEXT: movl 3(%rsi), %edx
701 ; X64-NEXT: bswapl %ecx
702 ; X64-NEXT: bswapl %edx
703 ; X64-NEXT: xorl %eax, %eax
704 ; X64-NEXT: cmpl %edx, %ecx
705 ; X64-NEXT: je .LBB21_3
706 ; X64-NEXT: .LBB21_2: # %res_block
707 ; X64-NEXT: xorl %eax, %eax
708 ; X64-NEXT: cmpl %edx, %ecx
709 ; X64-NEXT: setae %al
710 ; X64-NEXT: leal -1(%rax,%rax), %eax
711 ; X64-NEXT: .LBB21_3: # %endblock
712 ; X64-NEXT: shrl $31, %eax
713 ; X64-NEXT: # kill: def $al killed $al killed $eax
714 ; X64-NEXT: retq
749 ; X64-LABEL: length8:
750 ; X64: # %bb.0:
751 ; X64-NEXT: movq (%rdi), %rcx
752 ; X64-NEXT: movq (%rsi), %rdx
753 ; X64-NEXT: bswapq %rcx
754 ; X64-NEXT: bswapq %rdx
755 ; X64-NEXT: xorl %eax, %eax
756 ; X64-NEXT: cmpq %rdx, %rcx
757 ; X64-NEXT: seta %al
758 ; X64-NEXT: sbbl $0, %eax
759 ; X64-NEXT: retq
777 ; X64-LABEL: length8_eq:
778 ; X64: # %bb.0:
779 ; X64-NEXT: movq (%rdi), %rax
780 ; X64-NEXT: cmpq (%rsi), %rax
781 ; X64-NEXT: sete %al
782 ; X64-NEXT: retq
800 ; X64-LABEL: length8_eq_const:
801 ; X64: # %bb.0:
802 ; X64-NEXT: movabsq $3978425819141910832, %rax # imm = 0x3736353433323130
803 ; X64-NEXT: cmpq %rax, (%rdi)
804 ; X64-NEXT: setne %al
805 ; X64-NEXT: retq
830 ; X64-LABEL: length9_eq:
831 ; X64: # %bb.0:
832 ; X64-NEXT: movq (%rdi), %rax
833 ; X64-NEXT: xorq (%rsi), %rax
834 ; X64-NEXT: movb 8(%rdi), %cl
835 ; X64-NEXT: xorb 8(%rsi), %cl
836 ; X64-NEXT: movzbl %cl, %ecx
837 ; X64-NEXT: orq %rax, %rcx
838 ; X64-NEXT: sete %al
839 ; X64-NEXT: retq
864 ; X64-LABEL: length10_eq:
865 ; X64: # %bb.0:
866 ; X64-NEXT: movq (%rdi), %rax
867 ; X64-NEXT: xorq (%rsi), %rax
868 ; X64-NEXT: movzwl 8(%rdi), %ecx
869 ; X64-NEXT: xorw 8(%rsi), %cx
870 ; X64-NEXT: movzwl %cx, %ecx
871 ; X64-NEXT: orq %rax, %rcx
872 ; X64-NEXT: sete %al
873 ; X64-NEXT: retq
897 ; X64-LABEL: length11_eq:
898 ; X64: # %bb.0:
899 ; X64-NEXT: movq (%rdi), %rax
900 ; X64-NEXT: movq 3(%rdi), %rcx
901 ; X64-NEXT: xorq (%rsi), %rax
902 ; X64-NEXT: xorq 3(%rsi), %rcx
903 ; X64-NEXT: orq %rax, %rcx
904 ; X64-NEXT: sete %al
905 ; X64-NEXT: retq
929 ; X64-LABEL: length12_eq:
930 ; X64: # %bb.0:
931 ; X64-NEXT: movq (%rdi), %rax
932 ; X64-NEXT: xorq (%rsi), %rax
933 ; X64-NEXT: movl 8(%rdi), %ecx
934 ; X64-NEXT: xorl 8(%rsi), %ecx
935 ; X64-NEXT: orq %rax, %rcx
936 ; X64-NEXT: setne %al
937 ; X64-NEXT: retq
979 ; X64-LABEL: length12:
980 ; X64: # %bb.0:
981 ; X64-NEXT: movq (%rdi), %rcx
982 ; X64-NEXT: movq (%rsi), %rdx
983 ; X64-NEXT: bswapq %rcx
984 ; X64-NEXT: bswapq %rdx
985 ; X64-NEXT: cmpq %rdx, %rcx
986 ; X64-NEXT: jne .LBB29_2
987 ; X64-NEXT: # %bb.1: # %loadbb1
988 ; X64-NEXT: movl 8(%rdi), %ecx
989 ; X64-NEXT: movl 8(%rsi), %edx
990 ; X64-NEXT: bswapl %ecx
991 ; X64-NEXT: bswapl %edx
992 ; X64-NEXT: xorl %eax, %eax
993 ; X64-NEXT: cmpq %rdx, %rcx
994 ; X64-NEXT: je .LBB29_3
995 ; X64-NEXT: .LBB29_2: # %res_block
996 ; X64-NEXT: xorl %eax, %eax
997 ; X64-NEXT: cmpq %rdx, %rcx
998 ; X64-NEXT: setae %al
999 ; X64-NEXT: leal -1(%rax,%rax), %eax
1000 ; X64-NEXT: .LBB29_3: # %endblock
1001 ; X64-NEXT: retq
1028 ; X64-LABEL: length13_eq:
1029 ; X64: # %bb.0:
1030 ; X64-NEXT: movq (%rdi), %rax
1031 ; X64-NEXT: movq 5(%rdi), %rcx
1032 ; X64-NEXT: xorq (%rsi), %rax
1033 ; X64-NEXT: xorq 5(%rsi), %rcx
1034 ; X64-NEXT: orq %rax, %rcx
1035 ; X64-NEXT: sete %al
1036 ; X64-NEXT: retq
1064 ; X64-LABEL: length14_eq:
1065 ; X64: # %bb.0:
1066 ; X64-NEXT: movq (%rdi), %rax
1067 ; X64-NEXT: movq 6(%rdi), %rcx
1068 ; X64-NEXT: xorq (%rsi), %rax
1069 ; X64-NEXT: xorq 6(%rsi), %rcx
1070 ; X64-NEXT: orq %rax, %rcx
1071 ; X64-NEXT: sete %al
1072 ; X64-NEXT: retq
1099 ; X64-LABEL: length15_eq:
1100 ; X64: # %bb.0:
1101 ; X64-NEXT: movq (%rdi), %rax
1102 ; X64-NEXT: movq 7(%rdi), %rcx
1103 ; X64-NEXT: xorq (%rsi), %rax
1104 ; X64-NEXT: xorq 7(%rsi), %rcx
1105 ; X64-NEXT: orq %rax, %rcx
1106 ; X64-NEXT: sete %al
1107 ; X64-NEXT: retq
1158 ; X64-LABEL: length16:
1159 ; X64: # %bb.0:
1160 ; X64-NEXT: movq (%rdi), %rcx
1161 ; X64-NEXT: movq (%rsi), %rdx
1162 ; X64-NEXT: bswapq %rcx
1163 ; X64-NEXT: bswapq %rdx
1164 ; X64-NEXT: cmpq %rdx, %rcx
1165 ; X64-NEXT: jne .LBB33_2
1166 ; X64-NEXT: # %bb.1: # %loadbb1
1167 ; X64-NEXT: movq 8(%rdi), %rcx
1168 ; X64-NEXT: movq 8(%rsi), %rdx
1169 ; X64-NEXT: bswapq %rcx
1170 ; X64-NEXT: bswapq %rdx
1171 ; X64-NEXT: xorl %eax, %eax
1172 ; X64-NEXT: cmpq %rdx, %rcx
1173 ; X64-NEXT: je .LBB33_3
1174 ; X64-NEXT: .LBB33_2: # %res_block
1175 ; X64-NEXT: xorl %eax, %eax
1176 ; X64-NEXT: cmpq %rdx, %rcx
1177 ; X64-NEXT: setae %al
1178 ; X64-NEXT: leal -1(%rax,%rax), %eax
1179 ; X64-NEXT: .LBB33_3: # %endblock
1180 ; X64-NEXT: retq
1249 ; X64-SSE2-LABEL: length16_eq:
1250 ; X64-SSE2: # %bb.0:
1251 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
1252 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm1
1253 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm1
1254 ; X64-SSE2-NEXT: pmovmskb %xmm1, %eax
1255 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
1256 ; X64-SSE2-NEXT: setne %al
1257 ; X64-SSE2-NEXT: retq
1259 ; X64-SSE41-LABEL: length16_eq:
1260 ; X64-SSE41: # %bb.0:
1261 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
1262 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm1
1263 ; X64-SSE41-NEXT: pxor %xmm0, %xmm1
1264 ; X64-SSE41-NEXT: ptest %xmm1, %xmm1
1265 ; X64-SSE41-NEXT: setne %al
1266 ; X64-SSE41-NEXT: retq
1268 ; X64-AVX-LABEL: length16_eq:
1269 ; X64-AVX: # %bb.0:
1270 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
1271 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
1272 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
1273 ; X64-AVX-NEXT: setne %al
1274 ; X64-AVX-NEXT: retq
1276 ; X64-MIC-AVX-LABEL: length16_eq:
1277 ; X64-MIC-AVX: # %bb.0:
1278 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
1279 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm1
1280 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k0
1281 ; X64-MIC-AVX-NEXT: kortestw %k0, %k0
1282 ; X64-MIC-AVX-NEXT: setne %al
1283 ; X64-MIC-AVX-NEXT: vzeroupper
1284 ; X64-MIC-AVX-NEXT: retq
1335 ; X64-LABEL: length16_lt:
1336 ; X64: # %bb.0:
1337 ; X64-NEXT: movq (%rdi), %rcx
1338 ; X64-NEXT: movq (%rsi), %rdx
1339 ; X64-NEXT: bswapq %rcx
1340 ; X64-NEXT: bswapq %rdx
1341 ; X64-NEXT: cmpq %rdx, %rcx
1342 ; X64-NEXT: jne .LBB35_2
1343 ; X64-NEXT: # %bb.1: # %loadbb1
1344 ; X64-NEXT: movq 8(%rdi), %rcx
1345 ; X64-NEXT: movq 8(%rsi), %rdx
1346 ; X64-NEXT: bswapq %rcx
1347 ; X64-NEXT: bswapq %rdx
1348 ; X64-NEXT: xorl %eax, %eax
1349 ; X64-NEXT: cmpq %rdx, %rcx
1350 ; X64-NEXT: je .LBB35_3
1351 ; X64-NEXT: .LBB35_2: # %res_block
1352 ; X64-NEXT: xorl %eax, %eax
1353 ; X64-NEXT: cmpq %rdx, %rcx
1354 ; X64-NEXT: setae %al
1355 ; X64-NEXT: leal -1(%rax,%rax), %eax
1356 ; X64-NEXT: .LBB35_3: # %endblock
1357 ; X64-NEXT: shrl $31, %eax
1358 ; X64-NEXT: # kill: def $al killed $al killed $eax
1359 ; X64-NEXT: retq
1410 ; X64-LABEL: length16_gt:
1411 ; X64: # %bb.0:
1412 ; X64-NEXT: movq (%rdi), %rax
1413 ; X64-NEXT: movq (%rsi), %rcx
1414 ; X64-NEXT: bswapq %rax
1415 ; X64-NEXT: bswapq %rcx
1416 ; X64-NEXT: cmpq %rcx, %rax
1417 ; X64-NEXT: jne .LBB36_2
1418 ; X64-NEXT: # %bb.1: # %loadbb1
1419 ; X64-NEXT: movq 8(%rdi), %rax
1420 ; X64-NEXT: movq 8(%rsi), %rcx
1421 ; X64-NEXT: bswapq %rax
1422 ; X64-NEXT: bswapq %rcx
1423 ; X64-NEXT: xorl %edx, %edx
1424 ; X64-NEXT: cmpq %rcx, %rax
1425 ; X64-NEXT: je .LBB36_3
1426 ; X64-NEXT: .LBB36_2: # %res_block
1427 ; X64-NEXT: xorl %edx, %edx
1428 ; X64-NEXT: cmpq %rcx, %rax
1429 ; X64-NEXT: setae %dl
1430 ; X64-NEXT: leal -1(%rdx,%rdx), %edx
1431 ; X64-NEXT: .LBB36_3: # %endblock
1432 ; X64-NEXT: testl %edx, %edx
1433 ; X64-NEXT: setg %al
1434 ; X64-NEXT: retq
1498 ; X64-SSE2-LABEL: length16_eq_const:
1499 ; X64-SSE2: # %bb.0:
1500 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
1501 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
1502 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
1503 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
1504 ; X64-SSE2-NEXT: sete %al
1505 ; X64-SSE2-NEXT: retq
1507 ; X64-SSE41-LABEL: length16_eq_const:
1508 ; X64-SSE41: # %bb.0:
1509 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
1510 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
1511 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
1512 ; X64-SSE41-NEXT: sete %al
1513 ; X64-SSE41-NEXT: retq
1515 ; X64-AVX-LABEL: length16_eq_const:
1516 ; X64-AVX: # %bb.0:
1517 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
1518 ; X64-AVX-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
1519 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
1520 ; X64-AVX-NEXT: sete %al
1521 ; X64-AVX-NEXT: retq
1523 ; X64-MIC-AVX-LABEL: length16_eq_const:
1524 ; X64-MIC-AVX: # %bb.0:
1525 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
1526 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [858927408,926299444,825243960,892613426]
1527 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k0
1528 ; X64-MIC-AVX-NEXT: kortestw %k0, %k0
1529 ; X64-MIC-AVX-NEXT: sete %al
1530 ; X64-MIC-AVX-NEXT: vzeroupper
1531 ; X64-MIC-AVX-NEXT: retq
1550 ; X64-LABEL: length24:
1551 ; X64: # %bb.0:
1552 ; X64-NEXT: movq (%rdi), %rcx
1553 ; X64-NEXT: movq (%rsi), %rdx
1554 ; X64-NEXT: bswapq %rcx
1555 ; X64-NEXT: bswapq %rdx
1556 ; X64-NEXT: cmpq %rdx, %rcx
1557 ; X64-NEXT: jne .LBB38_3
1558 ; X64-NEXT: # %bb.1: # %loadbb1
1559 ; X64-NEXT: movq 8(%rdi), %rcx
1560 ; X64-NEXT: movq 8(%rsi), %rdx
1561 ; X64-NEXT: bswapq %rcx
1562 ; X64-NEXT: bswapq %rdx
1563 ; X64-NEXT: cmpq %rdx, %rcx
1564 ; X64-NEXT: jne .LBB38_3
1565 ; X64-NEXT: # %bb.2: # %loadbb2
1566 ; X64-NEXT: movq 16(%rdi), %rcx
1567 ; X64-NEXT: movq 16(%rsi), %rdx
1568 ; X64-NEXT: bswapq %rcx
1569 ; X64-NEXT: bswapq %rdx
1570 ; X64-NEXT: xorl %eax, %eax
1571 ; X64-NEXT: cmpq %rdx, %rcx
1572 ; X64-NEXT: je .LBB38_4
1573 ; X64-NEXT: .LBB38_3: # %res_block
1574 ; X64-NEXT: xorl %eax, %eax
1575 ; X64-NEXT: cmpq %rdx, %rcx
1576 ; X64-NEXT: setae %al
1577 ; X64-NEXT: leal -1(%rax,%rax), %eax
1578 ; X64-NEXT: .LBB38_4: # %endblock
1579 ; X64-NEXT: retq
1640 ; X64-SSE2-LABEL: length24_eq:
1641 ; X64-SSE2: # %bb.0:
1642 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
1643 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm1
1644 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm1
1645 ; X64-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
1646 ; X64-SSE2-NEXT: movq {{.*#+}} xmm2 = mem[0],zero
1647 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm2
1648 ; X64-SSE2-NEXT: pand %xmm1, %xmm2
1649 ; X64-SSE2-NEXT: pmovmskb %xmm2, %eax
1650 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
1651 ; X64-SSE2-NEXT: sete %al
1652 ; X64-SSE2-NEXT: retq
1654 ; X64-SSE41-LABEL: length24_eq:
1655 ; X64-SSE41: # %bb.0:
1656 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
1657 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm1
1658 ; X64-SSE41-NEXT: pxor %xmm0, %xmm1
1659 ; X64-SSE41-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
1660 ; X64-SSE41-NEXT: movq {{.*#+}} xmm2 = mem[0],zero
1661 ; X64-SSE41-NEXT: pxor %xmm0, %xmm2
1662 ; X64-SSE41-NEXT: por %xmm1, %xmm2
1663 ; X64-SSE41-NEXT: ptest %xmm2, %xmm2
1664 ; X64-SSE41-NEXT: sete %al
1665 ; X64-SSE41-NEXT: retq
1667 ; X64-AVX-LABEL: length24_eq:
1668 ; X64-AVX: # %bb.0:
1669 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
1670 ; X64-AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
1671 ; X64-AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
1672 ; X64-AVX-NEXT: vpxor %xmm2, %xmm1, %xmm1
1673 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
1674 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
1675 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
1676 ; X64-AVX-NEXT: sete %al
1677 ; X64-AVX-NEXT: retq
1679 ; X64-MIC-AVX-LABEL: length24_eq:
1680 ; X64-MIC-AVX: # %bb.0:
1681 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
1682 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm1
1683 ; X64-MIC-AVX-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
1684 ; X64-MIC-AVX-NEXT: vmovq {{.*#+}} xmm3 = mem[0],zero
1685 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm2, %k0
1686 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
1687 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
1688 ; X64-MIC-AVX-NEXT: sete %al
1689 ; X64-MIC-AVX-NEXT: vzeroupper
1690 ; X64-MIC-AVX-NEXT: retq
1709 ; X64-LABEL: length24_lt:
1710 ; X64: # %bb.0:
1711 ; X64-NEXT: movq (%rdi), %rcx
1712 ; X64-NEXT: movq (%rsi), %rdx
1713 ; X64-NEXT: bswapq %rcx
1714 ; X64-NEXT: bswapq %rdx
1715 ; X64-NEXT: cmpq %rdx, %rcx
1716 ; X64-NEXT: jne .LBB40_3
1717 ; X64-NEXT: # %bb.1: # %loadbb1
1718 ; X64-NEXT: movq 8(%rdi), %rcx
1719 ; X64-NEXT: movq 8(%rsi), %rdx
1720 ; X64-NEXT: bswapq %rcx
1721 ; X64-NEXT: bswapq %rdx
1722 ; X64-NEXT: cmpq %rdx, %rcx
1723 ; X64-NEXT: jne .LBB40_3
1724 ; X64-NEXT: # %bb.2: # %loadbb2
1725 ; X64-NEXT: movq 16(%rdi), %rcx
1726 ; X64-NEXT: movq 16(%rsi), %rdx
1727 ; X64-NEXT: bswapq %rcx
1728 ; X64-NEXT: bswapq %rdx
1729 ; X64-NEXT: xorl %eax, %eax
1730 ; X64-NEXT: cmpq %rdx, %rcx
1731 ; X64-NEXT: je .LBB40_4
1732 ; X64-NEXT: .LBB40_3: # %res_block
1733 ; X64-NEXT: xorl %eax, %eax
1734 ; X64-NEXT: cmpq %rdx, %rcx
1735 ; X64-NEXT: setae %al
1736 ; X64-NEXT: leal -1(%rax,%rax), %eax
1737 ; X64-NEXT: .LBB40_4: # %endblock
1738 ; X64-NEXT: shrl $31, %eax
1739 ; X64-NEXT: # kill: def $al killed $al killed $eax
1740 ; X64-NEXT: retq
1759 ; X64-LABEL: length24_gt:
1760 ; X64: # %bb.0:
1761 ; X64-NEXT: movq (%rdi), %rax
1762 ; X64-NEXT: movq (%rsi), %rcx
1763 ; X64-NEXT: bswapq %rax
1764 ; X64-NEXT: bswapq %rcx
1765 ; X64-NEXT: cmpq %rcx, %rax
1766 ; X64-NEXT: jne .LBB41_3
1767 ; X64-NEXT: # %bb.1: # %loadbb1
1768 ; X64-NEXT: movq 8(%rdi), %rax
1769 ; X64-NEXT: movq 8(%rsi), %rcx
1770 ; X64-NEXT: bswapq %rax
1771 ; X64-NEXT: bswapq %rcx
1772 ; X64-NEXT: cmpq %rcx, %rax
1773 ; X64-NEXT: jne .LBB41_3
1774 ; X64-NEXT: # %bb.2: # %loadbb2
1775 ; X64-NEXT: movq 16(%rdi), %rax
1776 ; X64-NEXT: movq 16(%rsi), %rcx
1777 ; X64-NEXT: bswapq %rax
1778 ; X64-NEXT: bswapq %rcx
1779 ; X64-NEXT: xorl %edx, %edx
1780 ; X64-NEXT: cmpq %rcx, %rax
1781 ; X64-NEXT: je .LBB41_4
1782 ; X64-NEXT: .LBB41_3: # %res_block
1783 ; X64-NEXT: xorl %edx, %edx
1784 ; X64-NEXT: cmpq %rcx, %rax
1785 ; X64-NEXT: setae %dl
1786 ; X64-NEXT: leal -1(%rdx,%rdx), %edx
1787 ; X64-NEXT: .LBB41_4: # %endblock
1788 ; X64-NEXT: testl %edx, %edx
1789 ; X64-NEXT: setg %al
1790 ; X64-NEXT: retq
1846 ; X64-SSE2-LABEL: length24_eq_const:
1847 ; X64-SSE2: # %bb.0:
1848 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
1849 ; X64-SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
1850 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
1851 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
1852 ; X64-SSE2-NEXT: pand %xmm1, %xmm0
1853 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
1854 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
1855 ; X64-SSE2-NEXT: setne %al
1856 ; X64-SSE2-NEXT: retq
1858 ; X64-SSE41-LABEL: length24_eq_const:
1859 ; X64-SSE41: # %bb.0:
1860 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
1861 ; X64-SSE41-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
1862 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
1863 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
1864 ; X64-SSE41-NEXT: por %xmm1, %xmm0
1865 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
1866 ; X64-SSE41-NEXT: setne %al
1867 ; X64-SSE41-NEXT: retq
1869 ; X64-AVX-LABEL: length24_eq_const:
1870 ; X64-AVX: # %bb.0:
1871 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
1872 ; X64-AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
1873 ; X64-AVX-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
1874 ; X64-AVX-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
1875 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
1876 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
1877 ; X64-AVX-NEXT: setne %al
1878 ; X64-AVX-NEXT: retq
1880 ; X64-MIC-AVX-LABEL: length24_eq_const:
1881 ; X64-MIC-AVX: # %bb.0:
1882 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
1883 ; X64-MIC-AVX-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
1884 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [959985462,858927408,0,0]
1885 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm1, %k0
1886 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [858927408,926299444,825243960,892613426]
1887 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
1888 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
1889 ; X64-MIC-AVX-NEXT: setne %al
1890 ; X64-MIC-AVX-NEXT: vzeroupper
1891 ; X64-MIC-AVX-NEXT: retq
1908 ; X64-LABEL: length31:
1909 ; X64: # %bb.0:
1910 ; X64-NEXT: movq (%rdi), %rcx
1911 ; X64-NEXT: movq (%rsi), %rdx
1912 ; X64-NEXT: bswapq %rcx
1913 ; X64-NEXT: bswapq %rdx
1914 ; X64-NEXT: cmpq %rdx, %rcx
1915 ; X64-NEXT: jne .LBB43_4
1916 ; X64-NEXT: # %bb.1: # %loadbb1
1917 ; X64-NEXT: movq 8(%rdi), %rcx
1918 ; X64-NEXT: movq 8(%rsi), %rdx
1919 ; X64-NEXT: bswapq %rcx
1920 ; X64-NEXT: bswapq %rdx
1921 ; X64-NEXT: cmpq %rdx, %rcx
1922 ; X64-NEXT: jne .LBB43_4
1923 ; X64-NEXT: # %bb.2: # %loadbb2
1924 ; X64-NEXT: movq 16(%rdi), %rcx
1925 ; X64-NEXT: movq 16(%rsi), %rdx
1926 ; X64-NEXT: bswapq %rcx
1927 ; X64-NEXT: bswapq %rdx
1928 ; X64-NEXT: cmpq %rdx, %rcx
1929 ; X64-NEXT: jne .LBB43_4
1930 ; X64-NEXT: # %bb.3: # %loadbb3
1931 ; X64-NEXT: movq 23(%rdi), %rcx
1932 ; X64-NEXT: movq 23(%rsi), %rdx
1933 ; X64-NEXT: bswapq %rcx
1934 ; X64-NEXT: bswapq %rdx
1935 ; X64-NEXT: xorl %eax, %eax
1936 ; X64-NEXT: cmpq %rdx, %rcx
1937 ; X64-NEXT: je .LBB43_5
1938 ; X64-NEXT: .LBB43_4: # %res_block
1939 ; X64-NEXT: xorl %eax, %eax
1940 ; X64-NEXT: cmpq %rdx, %rcx
1941 ; X64-NEXT: setae %al
1942 ; X64-NEXT: leal -1(%rax,%rax), %eax
1943 ; X64-NEXT: .LBB43_5: # %endblock
1944 ; X64-NEXT: retq
2005 ; X64-SSE2-LABEL: length31_eq:
2006 ; X64-SSE2: # %bb.0:
2007 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2008 ; X64-SSE2-NEXT: movdqu 15(%rdi), %xmm1
2009 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm2
2010 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm2
2011 ; X64-SSE2-NEXT: movdqu 15(%rsi), %xmm0
2012 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2013 ; X64-SSE2-NEXT: pand %xmm2, %xmm0
2014 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2015 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2016 ; X64-SSE2-NEXT: sete %al
2017 ; X64-SSE2-NEXT: retq
2019 ; X64-SSE41-LABEL: length31_eq:
2020 ; X64-SSE41: # %bb.0:
2021 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2022 ; X64-SSE41-NEXT: movdqu 15(%rdi), %xmm1
2023 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm2
2024 ; X64-SSE41-NEXT: pxor %xmm0, %xmm2
2025 ; X64-SSE41-NEXT: movdqu 15(%rsi), %xmm0
2026 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
2027 ; X64-SSE41-NEXT: por %xmm2, %xmm0
2028 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2029 ; X64-SSE41-NEXT: sete %al
2030 ; X64-SSE41-NEXT: retq
2032 ; X64-AVX-LABEL: length31_eq:
2033 ; X64-AVX: # %bb.0:
2034 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
2035 ; X64-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2036 ; X64-AVX-NEXT: vpxor 15(%rsi), %xmm1, %xmm1
2037 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
2038 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
2039 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
2040 ; X64-AVX-NEXT: sete %al
2041 ; X64-AVX-NEXT: retq
2043 ; X64-MIC-AVX-LABEL: length31_eq:
2044 ; X64-MIC-AVX: # %bb.0:
2045 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
2046 ; X64-MIC-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2047 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm2
2048 ; X64-MIC-AVX-NEXT: vmovdqu 15(%rsi), %xmm3
2049 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
2050 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm0, %k1
2051 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
2052 ; X64-MIC-AVX-NEXT: sete %al
2053 ; X64-MIC-AVX-NEXT: vzeroupper
2054 ; X64-MIC-AVX-NEXT: retq
2073 ; X64-LABEL: length31_lt:
2074 ; X64: # %bb.0:
2075 ; X64-NEXT: movq (%rdi), %rcx
2076 ; X64-NEXT: movq (%rsi), %rdx
2077 ; X64-NEXT: bswapq %rcx
2078 ; X64-NEXT: bswapq %rdx
2079 ; X64-NEXT: cmpq %rdx, %rcx
2080 ; X64-NEXT: jne .LBB45_4
2081 ; X64-NEXT: # %bb.1: # %loadbb1
2082 ; X64-NEXT: movq 8(%rdi), %rcx
2083 ; X64-NEXT: movq 8(%rsi), %rdx
2084 ; X64-NEXT: bswapq %rcx
2085 ; X64-NEXT: bswapq %rdx
2086 ; X64-NEXT: cmpq %rdx, %rcx
2087 ; X64-NEXT: jne .LBB45_4
2088 ; X64-NEXT: # %bb.2: # %loadbb2
2089 ; X64-NEXT: movq 16(%rdi), %rcx
2090 ; X64-NEXT: movq 16(%rsi), %rdx
2091 ; X64-NEXT: bswapq %rcx
2092 ; X64-NEXT: bswapq %rdx
2093 ; X64-NEXT: cmpq %rdx, %rcx
2094 ; X64-NEXT: jne .LBB45_4
2095 ; X64-NEXT: # %bb.3: # %loadbb3
2096 ; X64-NEXT: movq 23(%rdi), %rcx
2097 ; X64-NEXT: movq 23(%rsi), %rdx
2098 ; X64-NEXT: bswapq %rcx
2099 ; X64-NEXT: bswapq %rdx
2100 ; X64-NEXT: xorl %eax, %eax
2101 ; X64-NEXT: cmpq %rdx, %rcx
2102 ; X64-NEXT: je .LBB45_5
2103 ; X64-NEXT: .LBB45_4: # %res_block
2104 ; X64-NEXT: xorl %eax, %eax
2105 ; X64-NEXT: cmpq %rdx, %rcx
2106 ; X64-NEXT: setae %al
2107 ; X64-NEXT: leal -1(%rax,%rax), %eax
2108 ; X64-NEXT: .LBB45_5: # %endblock
2109 ; X64-NEXT: shrl $31, %eax
2110 ; X64-NEXT: # kill: def $al killed $al killed $eax
2111 ; X64-NEXT: retq
2130 ; X64-LABEL: length31_gt:
2131 ; X64: # %bb.0:
2132 ; X64-NEXT: movq (%rdi), %rax
2133 ; X64-NEXT: movq (%rsi), %rcx
2134 ; X64-NEXT: bswapq %rax
2135 ; X64-NEXT: bswapq %rcx
2136 ; X64-NEXT: cmpq %rcx, %rax
2137 ; X64-NEXT: jne .LBB46_4
2138 ; X64-NEXT: # %bb.1: # %loadbb1
2139 ; X64-NEXT: movq 8(%rdi), %rax
2140 ; X64-NEXT: movq 8(%rsi), %rcx
2141 ; X64-NEXT: bswapq %rax
2142 ; X64-NEXT: bswapq %rcx
2143 ; X64-NEXT: cmpq %rcx, %rax
2144 ; X64-NEXT: jne .LBB46_4
2145 ; X64-NEXT: # %bb.2: # %loadbb2
2146 ; X64-NEXT: movq 16(%rdi), %rax
2147 ; X64-NEXT: movq 16(%rsi), %rcx
2148 ; X64-NEXT: bswapq %rax
2149 ; X64-NEXT: bswapq %rcx
2150 ; X64-NEXT: cmpq %rcx, %rax
2151 ; X64-NEXT: jne .LBB46_4
2152 ; X64-NEXT: # %bb.3: # %loadbb3
2153 ; X64-NEXT: movq 23(%rdi), %rax
2154 ; X64-NEXT: movq 23(%rsi), %rcx
2155 ; X64-NEXT: bswapq %rax
2156 ; X64-NEXT: bswapq %rcx
2157 ; X64-NEXT: xorl %edx, %edx
2158 ; X64-NEXT: cmpq %rcx, %rax
2159 ; X64-NEXT: je .LBB46_5
2160 ; X64-NEXT: .LBB46_4: # %res_block
2161 ; X64-NEXT: xorl %edx, %edx
2162 ; X64-NEXT: cmpq %rcx, %rax
2163 ; X64-NEXT: setae %dl
2164 ; X64-NEXT: leal -1(%rdx,%rdx), %edx
2165 ; X64-NEXT: .LBB46_5: # %endblock
2166 ; X64-NEXT: testl %edx, %edx
2167 ; X64-NEXT: setg %al
2168 ; X64-NEXT: retq
2230 ; X64-SSE2-LABEL: length31_eq_prefer128:
2231 ; X64-SSE2: # %bb.0:
2232 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2233 ; X64-SSE2-NEXT: movdqu 15(%rdi), %xmm1
2234 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm2
2235 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm2
2236 ; X64-SSE2-NEXT: movdqu 15(%rsi), %xmm0
2237 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2238 ; X64-SSE2-NEXT: pand %xmm2, %xmm0
2239 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2240 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2241 ; X64-SSE2-NEXT: sete %al
2242 ; X64-SSE2-NEXT: retq
2244 ; X64-SSE41-LABEL: length31_eq_prefer128:
2245 ; X64-SSE41: # %bb.0:
2246 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2247 ; X64-SSE41-NEXT: movdqu 15(%rdi), %xmm1
2248 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm2
2249 ; X64-SSE41-NEXT: pxor %xmm0, %xmm2
2250 ; X64-SSE41-NEXT: movdqu 15(%rsi), %xmm0
2251 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
2252 ; X64-SSE41-NEXT: por %xmm2, %xmm0
2253 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2254 ; X64-SSE41-NEXT: sete %al
2255 ; X64-SSE41-NEXT: retq
2257 ; X64-AVX-LABEL: length31_eq_prefer128:
2258 ; X64-AVX: # %bb.0:
2259 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
2260 ; X64-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2261 ; X64-AVX-NEXT: vpxor 15(%rsi), %xmm1, %xmm1
2262 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
2263 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
2264 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
2265 ; X64-AVX-NEXT: sete %al
2266 ; X64-AVX-NEXT: retq
2268 ; X64-MIC-AVX-LABEL: length31_eq_prefer128:
2269 ; X64-MIC-AVX: # %bb.0:
2270 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
2271 ; X64-MIC-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2272 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm2
2273 ; X64-MIC-AVX-NEXT: vmovdqu 15(%rsi), %xmm3
2274 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
2275 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm0, %k1
2276 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
2277 ; X64-MIC-AVX-NEXT: sete %al
2278 ; X64-MIC-AVX-NEXT: vzeroupper
2279 ; X64-MIC-AVX-NEXT: retq
2335 ; X64-SSE2-LABEL: length31_eq_const:
2336 ; X64-SSE2: # %bb.0:
2337 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2338 ; X64-SSE2-NEXT: movdqu 15(%rdi), %xmm1
2339 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
2340 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
2341 ; X64-SSE2-NEXT: pand %xmm1, %xmm0
2342 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2343 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2344 ; X64-SSE2-NEXT: setne %al
2345 ; X64-SSE2-NEXT: retq
2347 ; X64-SSE41-LABEL: length31_eq_const:
2348 ; X64-SSE41: # %bb.0:
2349 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2350 ; X64-SSE41-NEXT: movdqu 15(%rdi), %xmm1
2351 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
2352 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
2353 ; X64-SSE41-NEXT: por %xmm1, %xmm0
2354 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2355 ; X64-SSE41-NEXT: setne %al
2356 ; X64-SSE41-NEXT: retq
2358 ; X64-AVX-LABEL: length31_eq_const:
2359 ; X64-AVX: # %bb.0:
2360 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
2361 ; X64-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2362 ; X64-AVX-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
2363 ; X64-AVX-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
2364 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
2365 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
2366 ; X64-AVX-NEXT: setne %al
2367 ; X64-AVX-NEXT: retq
2369 ; X64-MIC-AVX-LABEL: length31_eq_const:
2370 ; X64-MIC-AVX: # %bb.0:
2371 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
2372 ; X64-MIC-AVX-NEXT: vmovdqu 15(%rdi), %xmm1
2373 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} xmm2 = [943142453,842084409,909456435,809056311]
2374 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm1, %k0
2375 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [858927408,926299444,825243960,892613426]
2376 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
2377 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
2378 ; X64-MIC-AVX-NEXT: setne %al
2379 ; X64-MIC-AVX-NEXT: vzeroupper
2380 ; X64-MIC-AVX-NEXT: retq
2397 ; X64-LABEL: length32:
2398 ; X64: # %bb.0:
2399 ; X64-NEXT: movq (%rdi), %rcx
2400 ; X64-NEXT: movq (%rsi), %rdx
2401 ; X64-NEXT: bswapq %rcx
2402 ; X64-NEXT: bswapq %rdx
2403 ; X64-NEXT: cmpq %rdx, %rcx
2404 ; X64-NEXT: jne .LBB49_4
2405 ; X64-NEXT: # %bb.1: # %loadbb1
2406 ; X64-NEXT: movq 8(%rdi), %rcx
2407 ; X64-NEXT: movq 8(%rsi), %rdx
2408 ; X64-NEXT: bswapq %rcx
2409 ; X64-NEXT: bswapq %rdx
2410 ; X64-NEXT: cmpq %rdx, %rcx
2411 ; X64-NEXT: jne .LBB49_4
2412 ; X64-NEXT: # %bb.2: # %loadbb2
2413 ; X64-NEXT: movq 16(%rdi), %rcx
2414 ; X64-NEXT: movq 16(%rsi), %rdx
2415 ; X64-NEXT: bswapq %rcx
2416 ; X64-NEXT: bswapq %rdx
2417 ; X64-NEXT: cmpq %rdx, %rcx
2418 ; X64-NEXT: jne .LBB49_4
2419 ; X64-NEXT: # %bb.3: # %loadbb3
2420 ; X64-NEXT: movq 24(%rdi), %rcx
2421 ; X64-NEXT: movq 24(%rsi), %rdx
2422 ; X64-NEXT: bswapq %rcx
2423 ; X64-NEXT: bswapq %rdx
2424 ; X64-NEXT: xorl %eax, %eax
2425 ; X64-NEXT: cmpq %rdx, %rcx
2426 ; X64-NEXT: je .LBB49_5
2427 ; X64-NEXT: .LBB49_4: # %res_block
2428 ; X64-NEXT: xorl %eax, %eax
2429 ; X64-NEXT: cmpq %rdx, %rcx
2430 ; X64-NEXT: setae %al
2431 ; X64-NEXT: leal -1(%rax,%rax), %eax
2432 ; X64-NEXT: .LBB49_5: # %endblock
2433 ; X64-NEXT: retq
2496 ; X64-SSE2-LABEL: length32_eq:
2497 ; X64-SSE2: # %bb.0:
2498 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2499 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
2500 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm2
2501 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm2
2502 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
2503 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2504 ; X64-SSE2-NEXT: pand %xmm2, %xmm0
2505 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2506 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2507 ; X64-SSE2-NEXT: sete %al
2508 ; X64-SSE2-NEXT: retq
2510 ; X64-SSE41-LABEL: length32_eq:
2511 ; X64-SSE41: # %bb.0:
2512 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2513 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
2514 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm2
2515 ; X64-SSE41-NEXT: pxor %xmm0, %xmm2
2516 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
2517 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
2518 ; X64-SSE41-NEXT: por %xmm2, %xmm0
2519 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2520 ; X64-SSE41-NEXT: sete %al
2521 ; X64-SSE41-NEXT: retq
2523 ; X64-AVX1-LABEL: length32_eq:
2524 ; X64-AVX1: # %bb.0:
2525 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
2526 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
2527 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
2528 ; X64-AVX1-NEXT: sete %al
2529 ; X64-AVX1-NEXT: vzeroupper
2530 ; X64-AVX1-NEXT: retq
2532 ; X64-AVX2-LABEL: length32_eq:
2533 ; X64-AVX2: # %bb.0:
2534 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
2535 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
2536 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
2537 ; X64-AVX2-NEXT: sete %al
2538 ; X64-AVX2-NEXT: vzeroupper
2539 ; X64-AVX2-NEXT: retq
2541 ; X64-AVX512-LABEL: length32_eq:
2542 ; X64-AVX512: # %bb.0:
2543 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
2544 ; X64-AVX512-NEXT: vpxor (%rsi), %ymm0, %ymm0
2545 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
2546 ; X64-AVX512-NEXT: sete %al
2547 ; X64-AVX512-NEXT: vzeroupper
2548 ; X64-AVX512-NEXT: retq
2550 ; X64-MIC-AVX-LABEL: length32_eq:
2551 ; X64-MIC-AVX: # %bb.0:
2552 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
2553 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %ymm1
2554 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k0
2555 ; X64-MIC-AVX-NEXT: kortestw %k0, %k0
2556 ; X64-MIC-AVX-NEXT: sete %al
2557 ; X64-MIC-AVX-NEXT: vzeroupper
2558 ; X64-MIC-AVX-NEXT: retq
2577 ; X64-LABEL: length32_lt:
2578 ; X64: # %bb.0:
2579 ; X64-NEXT: movq (%rdi), %rcx
2580 ; X64-NEXT: movq (%rsi), %rdx
2581 ; X64-NEXT: bswapq %rcx
2582 ; X64-NEXT: bswapq %rdx
2583 ; X64-NEXT: cmpq %rdx, %rcx
2584 ; X64-NEXT: jne .LBB51_4
2585 ; X64-NEXT: # %bb.1: # %loadbb1
2586 ; X64-NEXT: movq 8(%rdi), %rcx
2587 ; X64-NEXT: movq 8(%rsi), %rdx
2588 ; X64-NEXT: bswapq %rcx
2589 ; X64-NEXT: bswapq %rdx
2590 ; X64-NEXT: cmpq %rdx, %rcx
2591 ; X64-NEXT: jne .LBB51_4
2592 ; X64-NEXT: # %bb.2: # %loadbb2
2593 ; X64-NEXT: movq 16(%rdi), %rcx
2594 ; X64-NEXT: movq 16(%rsi), %rdx
2595 ; X64-NEXT: bswapq %rcx
2596 ; X64-NEXT: bswapq %rdx
2597 ; X64-NEXT: cmpq %rdx, %rcx
2598 ; X64-NEXT: jne .LBB51_4
2599 ; X64-NEXT: # %bb.3: # %loadbb3
2600 ; X64-NEXT: movq 24(%rdi), %rcx
2601 ; X64-NEXT: movq 24(%rsi), %rdx
2602 ; X64-NEXT: bswapq %rcx
2603 ; X64-NEXT: bswapq %rdx
2604 ; X64-NEXT: xorl %eax, %eax
2605 ; X64-NEXT: cmpq %rdx, %rcx
2606 ; X64-NEXT: je .LBB51_5
2607 ; X64-NEXT: .LBB51_4: # %res_block
2608 ; X64-NEXT: xorl %eax, %eax
2609 ; X64-NEXT: cmpq %rdx, %rcx
2610 ; X64-NEXT: setae %al
2611 ; X64-NEXT: leal -1(%rax,%rax), %eax
2612 ; X64-NEXT: .LBB51_5: # %endblock
2613 ; X64-NEXT: shrl $31, %eax
2614 ; X64-NEXT: # kill: def $al killed $al killed $eax
2615 ; X64-NEXT: retq
2634 ; X64-LABEL: length32_gt:
2635 ; X64: # %bb.0:
2636 ; X64-NEXT: movq (%rdi), %rax
2637 ; X64-NEXT: movq (%rsi), %rcx
2638 ; X64-NEXT: bswapq %rax
2639 ; X64-NEXT: bswapq %rcx
2640 ; X64-NEXT: cmpq %rcx, %rax
2641 ; X64-NEXT: jne .LBB52_4
2642 ; X64-NEXT: # %bb.1: # %loadbb1
2643 ; X64-NEXT: movq 8(%rdi), %rax
2644 ; X64-NEXT: movq 8(%rsi), %rcx
2645 ; X64-NEXT: bswapq %rax
2646 ; X64-NEXT: bswapq %rcx
2647 ; X64-NEXT: cmpq %rcx, %rax
2648 ; X64-NEXT: jne .LBB52_4
2649 ; X64-NEXT: # %bb.2: # %loadbb2
2650 ; X64-NEXT: movq 16(%rdi), %rax
2651 ; X64-NEXT: movq 16(%rsi), %rcx
2652 ; X64-NEXT: bswapq %rax
2653 ; X64-NEXT: bswapq %rcx
2654 ; X64-NEXT: cmpq %rcx, %rax
2655 ; X64-NEXT: jne .LBB52_4
2656 ; X64-NEXT: # %bb.3: # %loadbb3
2657 ; X64-NEXT: movq 24(%rdi), %rax
2658 ; X64-NEXT: movq 24(%rsi), %rcx
2659 ; X64-NEXT: bswapq %rax
2660 ; X64-NEXT: bswapq %rcx
2661 ; X64-NEXT: xorl %edx, %edx
2662 ; X64-NEXT: cmpq %rcx, %rax
2663 ; X64-NEXT: je .LBB52_5
2664 ; X64-NEXT: .LBB52_4: # %res_block
2665 ; X64-NEXT: xorl %edx, %edx
2666 ; X64-NEXT: cmpq %rcx, %rax
2667 ; X64-NEXT: setae %dl
2668 ; X64-NEXT: leal -1(%rdx,%rdx), %edx
2669 ; X64-NEXT: .LBB52_5: # %endblock
2670 ; X64-NEXT: testl %edx, %edx
2671 ; X64-NEXT: setg %al
2672 ; X64-NEXT: retq
2734 ; X64-SSE2-LABEL: length32_eq_prefer128:
2735 ; X64-SSE2: # %bb.0:
2736 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2737 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
2738 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm2
2739 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm2
2740 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
2741 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2742 ; X64-SSE2-NEXT: pand %xmm2, %xmm0
2743 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2744 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2745 ; X64-SSE2-NEXT: sete %al
2746 ; X64-SSE2-NEXT: retq
2748 ; X64-SSE41-LABEL: length32_eq_prefer128:
2749 ; X64-SSE41: # %bb.0:
2750 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2751 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
2752 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm2
2753 ; X64-SSE41-NEXT: pxor %xmm0, %xmm2
2754 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
2755 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
2756 ; X64-SSE41-NEXT: por %xmm2, %xmm0
2757 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2758 ; X64-SSE41-NEXT: sete %al
2759 ; X64-SSE41-NEXT: retq
2761 ; X64-AVX-LABEL: length32_eq_prefer128:
2762 ; X64-AVX: # %bb.0:
2763 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
2764 ; X64-AVX-NEXT: vmovdqu 16(%rdi), %xmm1
2765 ; X64-AVX-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
2766 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
2767 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
2768 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
2769 ; X64-AVX-NEXT: sete %al
2770 ; X64-AVX-NEXT: retq
2772 ; X64-MIC-AVX-LABEL: length32_eq_prefer128:
2773 ; X64-MIC-AVX: # %bb.0:
2774 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
2775 ; X64-MIC-AVX-NEXT: vmovdqu 16(%rdi), %xmm1
2776 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm2
2777 ; X64-MIC-AVX-NEXT: vmovdqu 16(%rsi), %xmm3
2778 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
2779 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm0, %k1
2780 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
2781 ; X64-MIC-AVX-NEXT: sete %al
2782 ; X64-MIC-AVX-NEXT: vzeroupper
2783 ; X64-MIC-AVX-NEXT: retq
2839 ; X64-SSE2-LABEL: length32_eq_const:
2840 ; X64-SSE2: # %bb.0:
2841 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2842 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
2843 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
2844 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
2845 ; X64-SSE2-NEXT: pand %xmm1, %xmm0
2846 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
2847 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
2848 ; X64-SSE2-NEXT: setne %al
2849 ; X64-SSE2-NEXT: retq
2851 ; X64-SSE41-LABEL: length32_eq_const:
2852 ; X64-SSE41: # %bb.0:
2853 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
2854 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
2855 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
2856 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
2857 ; X64-SSE41-NEXT: por %xmm1, %xmm0
2858 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
2859 ; X64-SSE41-NEXT: setne %al
2860 ; X64-SSE41-NEXT: retq
2862 ; X64-AVX1-LABEL: length32_eq_const:
2863 ; X64-AVX1: # %bb.0:
2864 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
2865 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
2866 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
2867 ; X64-AVX1-NEXT: setne %al
2868 ; X64-AVX1-NEXT: vzeroupper
2869 ; X64-AVX1-NEXT: retq
2871 ; X64-AVX2-LABEL: length32_eq_const:
2872 ; X64-AVX2: # %bb.0:
2873 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
2874 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
2875 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
2876 ; X64-AVX2-NEXT: setne %al
2877 ; X64-AVX2-NEXT: vzeroupper
2878 ; X64-AVX2-NEXT: retq
2880 ; X64-AVX512-LABEL: length32_eq_const:
2881 ; X64-AVX512: # %bb.0:
2882 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
2883 ; X64-AVX512-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
2884 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
2885 ; X64-AVX512-NEXT: setne %al
2886 ; X64-AVX512-NEXT: vzeroupper
2887 ; X64-AVX512-NEXT: retq
2889 ; X64-MIC-AVX-LABEL: length32_eq_const:
2890 ; X64-MIC-AVX: # %bb.0:
2891 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
2892 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,8…
2893 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k0
2894 ; X64-MIC-AVX-NEXT: kortestw %k0, %k0
2895 ; X64-MIC-AVX-NEXT: setne %al
2896 ; X64-MIC-AVX-NEXT: vzeroupper
2897 ; X64-MIC-AVX-NEXT: retq
2914 ; X64-LABEL: length48:
2915 ; X64: # %bb.0:
2916 ; X64-NEXT: movl $48, %edx
2917 ; X64-NEXT: jmp memcmp # TAILCALL
2986 ; X64-SSE2-LABEL: length48_eq:
2987 ; X64-SSE2: # %bb.0:
2988 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
2989 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
2990 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
2991 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm3
2992 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm3
2993 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
2994 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
2995 ; X64-SSE2-NEXT: movdqu 32(%rsi), %xmm1
2996 ; X64-SSE2-NEXT: pcmpeqb %xmm2, %xmm1
2997 ; X64-SSE2-NEXT: pand %xmm0, %xmm1
2998 ; X64-SSE2-NEXT: pand %xmm3, %xmm1
2999 ; X64-SSE2-NEXT: pmovmskb %xmm1, %eax
3000 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3001 ; X64-SSE2-NEXT: sete %al
3002 ; X64-SSE2-NEXT: retq
3004 ; X64-SSE41-LABEL: length48_eq:
3005 ; X64-SSE41: # %bb.0:
3006 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3007 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3008 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3009 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm3
3010 ; X64-SSE41-NEXT: pxor %xmm0, %xmm3
3011 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
3012 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
3013 ; X64-SSE41-NEXT: movdqu 32(%rsi), %xmm1
3014 ; X64-SSE41-NEXT: pxor %xmm2, %xmm1
3015 ; X64-SSE41-NEXT: por %xmm0, %xmm1
3016 ; X64-SSE41-NEXT: por %xmm3, %xmm1
3017 ; X64-SSE41-NEXT: ptest %xmm1, %xmm1
3018 ; X64-SSE41-NEXT: sete %al
3019 ; X64-SSE41-NEXT: retq
3021 ; X64-AVX1-LABEL: length48_eq:
3022 ; X64-AVX1: # %bb.0:
3023 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3024 ; X64-AVX1-NEXT: vmovups 32(%rdi), %xmm1
3025 ; X64-AVX1-NEXT: vmovups 32(%rsi), %xmm2
3026 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
3027 ; X64-AVX1-NEXT: vxorps %ymm2, %ymm1, %ymm1
3028 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3029 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3030 ; X64-AVX1-NEXT: sete %al
3031 ; X64-AVX1-NEXT: vzeroupper
3032 ; X64-AVX1-NEXT: retq
3034 ; X64-AVX2-LABEL: length48_eq:
3035 ; X64-AVX2: # %bb.0:
3036 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3037 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %xmm1
3038 ; X64-AVX2-NEXT: vmovdqu 32(%rsi), %xmm2
3039 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
3040 ; X64-AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1
3041 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
3042 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
3043 ; X64-AVX2-NEXT: sete %al
3044 ; X64-AVX2-NEXT: vzeroupper
3045 ; X64-AVX2-NEXT: retq
3047 ; X64-AVX512-LABEL: length48_eq:
3048 ; X64-AVX512: # %bb.0:
3049 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
3050 ; X64-AVX512-NEXT: vmovdqu 32(%rdi), %xmm1
3051 ; X64-AVX512-NEXT: vmovdqu 32(%rsi), %xmm2
3052 ; X64-AVX512-NEXT: vpxor (%rsi), %ymm0, %ymm0
3053 ; X64-AVX512-NEXT: vpxor %ymm2, %ymm1, %ymm1
3054 ; X64-AVX512-NEXT: vpor %ymm1, %ymm0, %ymm0
3055 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
3056 ; X64-AVX512-NEXT: sete %al
3057 ; X64-AVX512-NEXT: vzeroupper
3058 ; X64-AVX512-NEXT: retq
3060 ; X64-MIC-AVX-LABEL: length48_eq:
3061 ; X64-MIC-AVX: # %bb.0:
3062 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
3063 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %ymm1
3064 ; X64-MIC-AVX-NEXT: vmovdqu 32(%rdi), %xmm2
3065 ; X64-MIC-AVX-NEXT: vmovdqu 32(%rsi), %xmm3
3066 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm2, %k0
3067 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
3068 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
3069 ; X64-MIC-AVX-NEXT: sete %al
3070 ; X64-MIC-AVX-NEXT: vzeroupper
3071 ; X64-MIC-AVX-NEXT: retq
3090 ; X64-LABEL: length48_lt:
3091 ; X64: # %bb.0:
3092 ; X64-NEXT: pushq %rax
3093 ; X64-NEXT: movl $48, %edx
3094 ; X64-NEXT: callq memcmp
3095 ; X64-NEXT: shrl $31, %eax
3096 ; X64-NEXT: # kill: def $al killed $al killed $eax
3097 ; X64-NEXT: popq %rcx
3098 ; X64-NEXT: retq
3117 ; X64-LABEL: length48_gt:
3118 ; X64: # %bb.0:
3119 ; X64-NEXT: pushq %rax
3120 ; X64-NEXT: movl $48, %edx
3121 ; X64-NEXT: callq memcmp
3122 ; X64-NEXT: testl %eax, %eax
3123 ; X64-NEXT: setg %al
3124 ; X64-NEXT: popq %rcx
3125 ; X64-NEXT: retq
3195 ; X64-SSE2-LABEL: length48_eq_prefer128:
3196 ; X64-SSE2: # %bb.0:
3197 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
3198 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
3199 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
3200 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm3
3201 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm3
3202 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
3203 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
3204 ; X64-SSE2-NEXT: movdqu 32(%rsi), %xmm1
3205 ; X64-SSE2-NEXT: pcmpeqb %xmm2, %xmm1
3206 ; X64-SSE2-NEXT: pand %xmm0, %xmm1
3207 ; X64-SSE2-NEXT: pand %xmm3, %xmm1
3208 ; X64-SSE2-NEXT: pmovmskb %xmm1, %eax
3209 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3210 ; X64-SSE2-NEXT: sete %al
3211 ; X64-SSE2-NEXT: retq
3213 ; X64-SSE41-LABEL: length48_eq_prefer128:
3214 ; X64-SSE41: # %bb.0:
3215 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3216 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3217 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3218 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm3
3219 ; X64-SSE41-NEXT: pxor %xmm0, %xmm3
3220 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
3221 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
3222 ; X64-SSE41-NEXT: movdqu 32(%rsi), %xmm1
3223 ; X64-SSE41-NEXT: pxor %xmm2, %xmm1
3224 ; X64-SSE41-NEXT: por %xmm0, %xmm1
3225 ; X64-SSE41-NEXT: por %xmm3, %xmm1
3226 ; X64-SSE41-NEXT: ptest %xmm1, %xmm1
3227 ; X64-SSE41-NEXT: sete %al
3228 ; X64-SSE41-NEXT: retq
3230 ; X64-AVX-LABEL: length48_eq_prefer128:
3231 ; X64-AVX: # %bb.0:
3232 ; X64-AVX-NEXT: vmovdqu (%rdi), %xmm0
3233 ; X64-AVX-NEXT: vmovdqu 16(%rdi), %xmm1
3234 ; X64-AVX-NEXT: vmovdqu 32(%rdi), %xmm2
3235 ; X64-AVX-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
3236 ; X64-AVX-NEXT: vpxor (%rsi), %xmm0, %xmm0
3237 ; X64-AVX-NEXT: vpxor 32(%rsi), %xmm2, %xmm2
3238 ; X64-AVX-NEXT: vpor %xmm2, %xmm1, %xmm1
3239 ; X64-AVX-NEXT: vpor %xmm1, %xmm0, %xmm0
3240 ; X64-AVX-NEXT: vptest %xmm0, %xmm0
3241 ; X64-AVX-NEXT: sete %al
3242 ; X64-AVX-NEXT: retq
3244 ; X64-MIC-AVX-LABEL: length48_eq_prefer128:
3245 ; X64-MIC-AVX: # %bb.0:
3246 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %xmm0
3247 ; X64-MIC-AVX-NEXT: vmovdqu 16(%rdi), %xmm1
3248 ; X64-MIC-AVX-NEXT: vmovdqu 32(%rdi), %xmm2
3249 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %xmm3
3250 ; X64-MIC-AVX-NEXT: vmovdqu 16(%rsi), %xmm4
3251 ; X64-MIC-AVX-NEXT: vmovdqu 32(%rsi), %xmm5
3252 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm4, %zmm1, %k0
3253 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm0, %k1
3254 ; X64-MIC-AVX-NEXT: korw %k0, %k1, %k0
3255 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm5, %zmm2, %k1
3256 ; X64-MIC-AVX-NEXT: kortestw %k1, %k0
3257 ; X64-MIC-AVX-NEXT: sete %al
3258 ; X64-MIC-AVX-NEXT: vzeroupper
3259 ; X64-MIC-AVX-NEXT: retq
3321 ; X64-SSE2-LABEL: length48_eq_const:
3322 ; X64-SSE2: # %bb.0:
3323 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
3324 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
3325 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
3326 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
3327 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
3328 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm2
3329 ; X64-SSE2-NEXT: pand %xmm1, %xmm2
3330 ; X64-SSE2-NEXT: pand %xmm0, %xmm2
3331 ; X64-SSE2-NEXT: pmovmskb %xmm2, %eax
3332 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3333 ; X64-SSE2-NEXT: setne %al
3334 ; X64-SSE2-NEXT: retq
3336 ; X64-SSE41-LABEL: length48_eq_const:
3337 ; X64-SSE41: # %bb.0:
3338 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3339 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3340 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3341 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
3342 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
3343 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm2
3344 ; X64-SSE41-NEXT: por %xmm1, %xmm2
3345 ; X64-SSE41-NEXT: por %xmm0, %xmm2
3346 ; X64-SSE41-NEXT: ptest %xmm2, %xmm2
3347 ; X64-SSE41-NEXT: setne %al
3348 ; X64-SSE41-NEXT: retq
3350 ; X64-AVX1-LABEL: length48_eq_const:
3351 ; X64-AVX1: # %bb.0:
3352 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3353 ; X64-AVX1-NEXT: vmovups 32(%rdi), %xmm1
3354 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
3355 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
3356 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3357 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3358 ; X64-AVX1-NEXT: setne %al
3359 ; X64-AVX1-NEXT: vzeroupper
3360 ; X64-AVX1-NEXT: retq
3362 ; X64-AVX2-LABEL: length48_eq_const:
3363 ; X64-AVX2: # %bb.0:
3364 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3365 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %xmm1
3366 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
3367 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
3368 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
3369 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
3370 ; X64-AVX2-NEXT: setne %al
3371 ; X64-AVX2-NEXT: vzeroupper
3372 ; X64-AVX2-NEXT: retq
3374 ; X64-AVX512-LABEL: length48_eq_const:
3375 ; X64-AVX512: # %bb.0:
3376 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
3377 ; X64-AVX512-NEXT: vmovdqu 32(%rdi), %xmm1
3378 ; X64-AVX512-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
3379 ; X64-AVX512-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
3380 ; X64-AVX512-NEXT: vpor %ymm1, %ymm0, %ymm0
3381 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
3382 ; X64-AVX512-NEXT: setne %al
3383 ; X64-AVX512-NEXT: vzeroupper
3384 ; X64-AVX512-NEXT: retq
3386 ; X64-MIC-AVX-LABEL: length48_eq_const:
3387 ; X64-MIC-AVX: # %bb.0:
3388 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
3389 ; X64-MIC-AVX-NEXT: vmovdqu 32(%rdi), %xmm1
3390 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} ymm2 = [892613426,959985462,858927408,926299444,0,0,0,0]
3391 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm1, %k0
3392 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,8…
3393 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
3394 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
3395 ; X64-MIC-AVX-NEXT: setne %al
3396 ; X64-MIC-AVX-NEXT: vzeroupper
3397 ; X64-MIC-AVX-NEXT: retq
3414 ; X64-LABEL: length63:
3415 ; X64: # %bb.0:
3416 ; X64-NEXT: movl $63, %edx
3417 ; X64-NEXT: jmp memcmp # TAILCALL
3494 ; X64-SSE2-LABEL: length63_eq:
3495 ; X64-SSE2: # %bb.0:
3496 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
3497 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
3498 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
3499 ; X64-SSE2-NEXT: movdqu 47(%rdi), %xmm3
3500 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm4
3501 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm4
3502 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
3503 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
3504 ; X64-SSE2-NEXT: movdqu 32(%rsi), %xmm1
3505 ; X64-SSE2-NEXT: pcmpeqb %xmm2, %xmm1
3506 ; X64-SSE2-NEXT: movdqu 47(%rsi), %xmm2
3507 ; X64-SSE2-NEXT: pcmpeqb %xmm3, %xmm2
3508 ; X64-SSE2-NEXT: pand %xmm1, %xmm2
3509 ; X64-SSE2-NEXT: pand %xmm0, %xmm2
3510 ; X64-SSE2-NEXT: pand %xmm4, %xmm2
3511 ; X64-SSE2-NEXT: pmovmskb %xmm2, %eax
3512 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3513 ; X64-SSE2-NEXT: setne %al
3514 ; X64-SSE2-NEXT: retq
3516 ; X64-SSE41-LABEL: length63_eq:
3517 ; X64-SSE41: # %bb.0:
3518 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3519 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3520 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3521 ; X64-SSE41-NEXT: movdqu 47(%rdi), %xmm3
3522 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm4
3523 ; X64-SSE41-NEXT: pxor %xmm0, %xmm4
3524 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
3525 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
3526 ; X64-SSE41-NEXT: movdqu 32(%rsi), %xmm1
3527 ; X64-SSE41-NEXT: pxor %xmm2, %xmm1
3528 ; X64-SSE41-NEXT: movdqu 47(%rsi), %xmm2
3529 ; X64-SSE41-NEXT: pxor %xmm3, %xmm2
3530 ; X64-SSE41-NEXT: por %xmm1, %xmm2
3531 ; X64-SSE41-NEXT: por %xmm0, %xmm2
3532 ; X64-SSE41-NEXT: por %xmm4, %xmm2
3533 ; X64-SSE41-NEXT: ptest %xmm2, %xmm2
3534 ; X64-SSE41-NEXT: setne %al
3535 ; X64-SSE41-NEXT: retq
3537 ; X64-AVX1-LABEL: length63_eq:
3538 ; X64-AVX1: # %bb.0:
3539 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3540 ; X64-AVX1-NEXT: vmovups 31(%rdi), %ymm1
3541 ; X64-AVX1-NEXT: vxorps 31(%rsi), %ymm1, %ymm1
3542 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
3543 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3544 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3545 ; X64-AVX1-NEXT: setne %al
3546 ; X64-AVX1-NEXT: vzeroupper
3547 ; X64-AVX1-NEXT: retq
3549 ; X64-AVX2-LABEL: length63_eq:
3550 ; X64-AVX2: # %bb.0:
3551 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3552 ; X64-AVX2-NEXT: vmovdqu 31(%rdi), %ymm1
3553 ; X64-AVX2-NEXT: vpxor 31(%rsi), %ymm1, %ymm1
3554 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
3555 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
3556 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
3557 ; X64-AVX2-NEXT: setne %al
3558 ; X64-AVX2-NEXT: vzeroupper
3559 ; X64-AVX2-NEXT: retq
3561 ; X64-AVX512-LABEL: length63_eq:
3562 ; X64-AVX512: # %bb.0:
3563 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
3564 ; X64-AVX512-NEXT: vmovdqu 31(%rdi), %ymm1
3565 ; X64-AVX512-NEXT: vpxor 31(%rsi), %ymm1, %ymm1
3566 ; X64-AVX512-NEXT: vpxor (%rsi), %ymm0, %ymm0
3567 ; X64-AVX512-NEXT: vpor %ymm1, %ymm0, %ymm0
3568 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
3569 ; X64-AVX512-NEXT: setne %al
3570 ; X64-AVX512-NEXT: vzeroupper
3571 ; X64-AVX512-NEXT: retq
3573 ; X64-MIC-AVX-LABEL: length63_eq:
3574 ; X64-MIC-AVX: # %bb.0:
3575 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
3576 ; X64-MIC-AVX-NEXT: vmovdqu 31(%rdi), %ymm1
3577 ; X64-MIC-AVX-NEXT: vmovdqu (%rsi), %ymm2
3578 ; X64-MIC-AVX-NEXT: vmovdqu 31(%rsi), %ymm3
3579 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
3580 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm0, %k1
3581 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
3582 ; X64-MIC-AVX-NEXT: setne %al
3583 ; X64-MIC-AVX-NEXT: vzeroupper
3584 ; X64-MIC-AVX-NEXT: retq
3603 ; X64-LABEL: length63_lt:
3604 ; X64: # %bb.0:
3605 ; X64-NEXT: pushq %rax
3606 ; X64-NEXT: movl $63, %edx
3607 ; X64-NEXT: callq memcmp
3608 ; X64-NEXT: shrl $31, %eax
3609 ; X64-NEXT: # kill: def $al killed $al killed $eax
3610 ; X64-NEXT: popq %rcx
3611 ; X64-NEXT: retq
3630 ; X64-LABEL: length63_gt:
3631 ; X64: # %bb.0:
3632 ; X64-NEXT: pushq %rax
3633 ; X64-NEXT: movl $63, %edx
3634 ; X64-NEXT: callq memcmp
3635 ; X64-NEXT: testl %eax, %eax
3636 ; X64-NEXT: setg %al
3637 ; X64-NEXT: popq %rcx
3638 ; X64-NEXT: retq
3706 ; X64-SSE2-LABEL: length63_eq_const:
3707 ; X64-SSE2: # %bb.0:
3708 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
3709 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
3710 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
3711 ; X64-SSE2-NEXT: movdqu 47(%rdi), %xmm3
3712 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm3
3713 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm2
3714 ; X64-SSE2-NEXT: pand %xmm3, %xmm2
3715 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
3716 ; X64-SSE2-NEXT: pand %xmm2, %xmm1
3717 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
3718 ; X64-SSE2-NEXT: pand %xmm1, %xmm0
3719 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
3720 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3721 ; X64-SSE2-NEXT: sete %al
3722 ; X64-SSE2-NEXT: retq
3724 ; X64-SSE41-LABEL: length63_eq_const:
3725 ; X64-SSE41: # %bb.0:
3726 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3727 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3728 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3729 ; X64-SSE41-NEXT: movdqu 47(%rdi), %xmm3
3730 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm3
3731 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm2
3732 ; X64-SSE41-NEXT: por %xmm3, %xmm2
3733 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
3734 ; X64-SSE41-NEXT: por %xmm2, %xmm1
3735 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
3736 ; X64-SSE41-NEXT: por %xmm1, %xmm0
3737 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
3738 ; X64-SSE41-NEXT: sete %al
3739 ; X64-SSE41-NEXT: retq
3741 ; X64-AVX1-LABEL: length63_eq_const:
3742 ; X64-AVX1: # %bb.0:
3743 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3744 ; X64-AVX1-NEXT: vmovups 31(%rdi), %ymm1
3745 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
3746 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
3747 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3748 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3749 ; X64-AVX1-NEXT: sete %al
3750 ; X64-AVX1-NEXT: vzeroupper
3751 ; X64-AVX1-NEXT: retq
3753 ; X64-AVX2-LABEL: length63_eq_const:
3754 ; X64-AVX2: # %bb.0:
3755 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3756 ; X64-AVX2-NEXT: vmovdqu 31(%rdi), %ymm1
3757 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
3758 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
3759 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
3760 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
3761 ; X64-AVX2-NEXT: sete %al
3762 ; X64-AVX2-NEXT: vzeroupper
3763 ; X64-AVX2-NEXT: retq
3765 ; X64-AVX512-LABEL: length63_eq_const:
3766 ; X64-AVX512: # %bb.0:
3767 ; X64-AVX512-NEXT: vmovdqu (%rdi), %ymm0
3768 ; X64-AVX512-NEXT: vmovdqu 31(%rdi), %ymm1
3769 ; X64-AVX512-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
3770 ; X64-AVX512-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
3771 ; X64-AVX512-NEXT: vpor %ymm1, %ymm0, %ymm0
3772 ; X64-AVX512-NEXT: vptest %ymm0, %ymm0
3773 ; X64-AVX512-NEXT: sete %al
3774 ; X64-AVX512-NEXT: vzeroupper
3775 ; X64-AVX512-NEXT: retq
3777 ; X64-MIC-AVX-LABEL: length63_eq_const:
3778 ; X64-MIC-AVX: # %bb.0:
3779 ; X64-MIC-AVX-NEXT: vmovdqu (%rdi), %ymm0
3780 ; X64-MIC-AVX-NEXT: vmovdqu 31(%rdi), %ymm1
3781 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} ymm2 = [875770417,943142453,842084409,909456435,809056311,8…
3782 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm2, %zmm1, %k0
3783 ; X64-MIC-AVX-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,8…
3784 ; X64-MIC-AVX-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
3785 ; X64-MIC-AVX-NEXT: kortestw %k0, %k1
3786 ; X64-MIC-AVX-NEXT: sete %al
3787 ; X64-MIC-AVX-NEXT: vzeroupper
3788 ; X64-MIC-AVX-NEXT: retq
3805 ; X64-LABEL: length64:
3806 ; X64: # %bb.0:
3807 ; X64-NEXT: movl $64, %edx
3808 ; X64-NEXT: jmp memcmp # TAILCALL
3885 ; X64-SSE2-LABEL: length64_eq:
3886 ; X64-SSE2: # %bb.0:
3887 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
3888 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
3889 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
3890 ; X64-SSE2-NEXT: movdqu 48(%rdi), %xmm3
3891 ; X64-SSE2-NEXT: movdqu (%rsi), %xmm4
3892 ; X64-SSE2-NEXT: pcmpeqb %xmm0, %xmm4
3893 ; X64-SSE2-NEXT: movdqu 16(%rsi), %xmm0
3894 ; X64-SSE2-NEXT: pcmpeqb %xmm1, %xmm0
3895 ; X64-SSE2-NEXT: movdqu 32(%rsi), %xmm1
3896 ; X64-SSE2-NEXT: pcmpeqb %xmm2, %xmm1
3897 ; X64-SSE2-NEXT: movdqu 48(%rsi), %xmm2
3898 ; X64-SSE2-NEXT: pcmpeqb %xmm3, %xmm2
3899 ; X64-SSE2-NEXT: pand %xmm1, %xmm2
3900 ; X64-SSE2-NEXT: pand %xmm0, %xmm2
3901 ; X64-SSE2-NEXT: pand %xmm4, %xmm2
3902 ; X64-SSE2-NEXT: pmovmskb %xmm2, %eax
3903 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
3904 ; X64-SSE2-NEXT: setne %al
3905 ; X64-SSE2-NEXT: retq
3907 ; X64-SSE41-LABEL: length64_eq:
3908 ; X64-SSE41: # %bb.0:
3909 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
3910 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
3911 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
3912 ; X64-SSE41-NEXT: movdqu 48(%rdi), %xmm3
3913 ; X64-SSE41-NEXT: movdqu (%rsi), %xmm4
3914 ; X64-SSE41-NEXT: pxor %xmm0, %xmm4
3915 ; X64-SSE41-NEXT: movdqu 16(%rsi), %xmm0
3916 ; X64-SSE41-NEXT: pxor %xmm1, %xmm0
3917 ; X64-SSE41-NEXT: movdqu 32(%rsi), %xmm1
3918 ; X64-SSE41-NEXT: pxor %xmm2, %xmm1
3919 ; X64-SSE41-NEXT: movdqu 48(%rsi), %xmm2
3920 ; X64-SSE41-NEXT: pxor %xmm3, %xmm2
3921 ; X64-SSE41-NEXT: por %xmm1, %xmm2
3922 ; X64-SSE41-NEXT: por %xmm0, %xmm2
3923 ; X64-SSE41-NEXT: por %xmm4, %xmm2
3924 ; X64-SSE41-NEXT: ptest %xmm2, %xmm2
3925 ; X64-SSE41-NEXT: setne %al
3926 ; X64-SSE41-NEXT: retq
3928 ; X64-AVX1-LABEL: length64_eq:
3929 ; X64-AVX1: # %bb.0:
3930 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3931 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
3932 ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
3933 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
3934 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3935 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3936 ; X64-AVX1-NEXT: setne %al
3937 ; X64-AVX1-NEXT: vzeroupper
3938 ; X64-AVX1-NEXT: retq
3940 ; X64-AVX2-LABEL: length64_eq:
3941 ; X64-AVX2: # %bb.0:
3942 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3943 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
3944 ; X64-AVX2-NEXT: vpxor 32(%rsi), %ymm1, %ymm1
3945 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
3946 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
3947 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
3948 ; X64-AVX2-NEXT: setne %al
3949 ; X64-AVX2-NEXT: vzeroupper
3950 ; X64-AVX2-NEXT: retq
3952 ; X64-AVX512BW-LABEL: length64_eq:
3953 ; X64-AVX512BW: # %bb.0:
3954 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
3955 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k0
3956 ; X64-AVX512BW-NEXT: kortestq %k0, %k0
3957 ; X64-AVX512BW-NEXT: setne %al
3958 ; X64-AVX512BW-NEXT: vzeroupper
3959 ; X64-AVX512BW-NEXT: retq
3961 ; X64-AVX512F-LABEL: length64_eq:
3962 ; X64-AVX512F: # %bb.0:
3963 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
3964 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k0
3965 ; X64-AVX512F-NEXT: kortestw %k0, %k0
3966 ; X64-AVX512F-NEXT: setne %al
3967 ; X64-AVX512F-NEXT: vzeroupper
3968 ; X64-AVX512F-NEXT: retq
3970 ; X64-MIC-AVX2-LABEL: length64_eq:
3971 ; X64-MIC-AVX2: # %bb.0:
3972 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
3973 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
3974 ; X64-MIC-AVX2-NEXT: vmovdqu (%rsi), %ymm2
3975 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rsi), %ymm3
3976 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
3977 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm2, %zmm0, %k1
3978 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
3979 ; X64-MIC-AVX2-NEXT: setne %al
3980 ; X64-MIC-AVX2-NEXT: vzeroupper
3981 ; X64-MIC-AVX2-NEXT: retq
3983 ; X64-MIC-AVX512F-LABEL: length64_eq:
3984 ; X64-MIC-AVX512F: # %bb.0:
3985 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
3986 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k0
3987 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k0
3988 ; X64-MIC-AVX512F-NEXT: setne %al
3989 ; X64-MIC-AVX512F-NEXT: vzeroupper
3990 ; X64-MIC-AVX512F-NEXT: retq
4009 ; X64-LABEL: length64_lt:
4010 ; X64: # %bb.0:
4011 ; X64-NEXT: pushq %rax
4012 ; X64-NEXT: movl $64, %edx
4013 ; X64-NEXT: callq memcmp
4014 ; X64-NEXT: shrl $31, %eax
4015 ; X64-NEXT: # kill: def $al killed $al killed $eax
4016 ; X64-NEXT: popq %rcx
4017 ; X64-NEXT: retq
4036 ; X64-LABEL: length64_gt:
4037 ; X64: # %bb.0:
4038 ; X64-NEXT: pushq %rax
4039 ; X64-NEXT: movl $64, %edx
4040 ; X64-NEXT: callq memcmp
4041 ; X64-NEXT: testl %eax, %eax
4042 ; X64-NEXT: setg %al
4043 ; X64-NEXT: popq %rcx
4044 ; X64-NEXT: retq
4112 ; X64-SSE2-LABEL: length64_eq_const:
4113 ; X64-SSE2: # %bb.0:
4114 ; X64-SSE2-NEXT: movdqu (%rdi), %xmm0
4115 ; X64-SSE2-NEXT: movdqu 16(%rdi), %xmm1
4116 ; X64-SSE2-NEXT: movdqu 32(%rdi), %xmm2
4117 ; X64-SSE2-NEXT: movdqu 48(%rdi), %xmm3
4118 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm3
4119 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm2
4120 ; X64-SSE2-NEXT: pand %xmm3, %xmm2
4121 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm1
4122 ; X64-SSE2-NEXT: pand %xmm2, %xmm1
4123 ; X64-SSE2-NEXT: pcmpeqb {{.*}}(%rip), %xmm0
4124 ; X64-SSE2-NEXT: pand %xmm1, %xmm0
4125 ; X64-SSE2-NEXT: pmovmskb %xmm0, %eax
4126 ; X64-SSE2-NEXT: cmpl $65535, %eax # imm = 0xFFFF
4127 ; X64-SSE2-NEXT: sete %al
4128 ; X64-SSE2-NEXT: retq
4130 ; X64-SSE41-LABEL: length64_eq_const:
4131 ; X64-SSE41: # %bb.0:
4132 ; X64-SSE41-NEXT: movdqu (%rdi), %xmm0
4133 ; X64-SSE41-NEXT: movdqu 16(%rdi), %xmm1
4134 ; X64-SSE41-NEXT: movdqu 32(%rdi), %xmm2
4135 ; X64-SSE41-NEXT: movdqu 48(%rdi), %xmm3
4136 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm3
4137 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm2
4138 ; X64-SSE41-NEXT: por %xmm3, %xmm2
4139 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm1
4140 ; X64-SSE41-NEXT: por %xmm2, %xmm1
4141 ; X64-SSE41-NEXT: pxor {{.*}}(%rip), %xmm0
4142 ; X64-SSE41-NEXT: por %xmm1, %xmm0
4143 ; X64-SSE41-NEXT: ptest %xmm0, %xmm0
4144 ; X64-SSE41-NEXT: sete %al
4145 ; X64-SSE41-NEXT: retq
4147 ; X64-AVX1-LABEL: length64_eq_const:
4148 ; X64-AVX1: # %bb.0:
4149 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4150 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4151 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4152 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4153 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4154 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4155 ; X64-AVX1-NEXT: sete %al
4156 ; X64-AVX1-NEXT: vzeroupper
4157 ; X64-AVX1-NEXT: retq
4159 ; X64-AVX2-LABEL: length64_eq_const:
4160 ; X64-AVX2: # %bb.0:
4161 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4162 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4163 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
4164 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
4165 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4166 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4167 ; X64-AVX2-NEXT: sete %al
4168 ; X64-AVX2-NEXT: vzeroupper
4169 ; X64-AVX2-NEXT: retq
4171 ; X64-AVX512BW-LABEL: length64_eq_const:
4172 ; X64-AVX512BW: # %bb.0:
4173 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4174 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k0
4175 ; X64-AVX512BW-NEXT: kortestq %k0, %k0
4176 ; X64-AVX512BW-NEXT: sete %al
4177 ; X64-AVX512BW-NEXT: vzeroupper
4178 ; X64-AVX512BW-NEXT: retq
4180 ; X64-AVX512F-LABEL: length64_eq_const:
4181 ; X64-AVX512F: # %bb.0:
4182 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4183 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k0
4184 ; X64-AVX512F-NEXT: kortestw %k0, %k0
4185 ; X64-AVX512F-NEXT: sete %al
4186 ; X64-AVX512F-NEXT: vzeroupper
4187 ; X64-AVX512F-NEXT: retq
4189 ; X64-MIC-AVX2-LABEL: length64_eq_const:
4190 ; X64-MIC-AVX2: # %bb.0:
4191 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4192 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4193 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [892613426,959985462,858927408,926299444,825243960,…
4194 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm2, %zmm1, %k0
4195 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,…
4196 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
4197 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
4198 ; X64-MIC-AVX2-NEXT: sete %al
4199 ; X64-MIC-AVX2-NEXT: vzeroupper
4200 ; X64-MIC-AVX2-NEXT: retq
4202 ; X64-MIC-AVX512F-LABEL: length64_eq_const:
4203 ; X64-MIC-AVX512F: # %bb.0:
4204 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4205 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k0
4206 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k0
4207 ; X64-MIC-AVX512F-NEXT: sete %al
4208 ; X64-MIC-AVX512F-NEXT: vzeroupper
4209 ; X64-MIC-AVX512F-NEXT: retq
4226 ; X64-LABEL: length96:
4227 ; X64: # %bb.0:
4228 ; X64-NEXT: movl $96, %edx
4229 ; X64-NEXT: jmp memcmp # TAILCALL
4247 ; X64-SSE-LABEL: length96_eq:
4248 ; X64-SSE: # %bb.0:
4249 ; X64-SSE-NEXT: pushq %rax
4250 ; X64-SSE-NEXT: movl $96, %edx
4251 ; X64-SSE-NEXT: callq memcmp
4252 ; X64-SSE-NEXT: testl %eax, %eax
4253 ; X64-SSE-NEXT: setne %al
4254 ; X64-SSE-NEXT: popq %rcx
4255 ; X64-SSE-NEXT: retq
4257 ; X64-AVX1-LABEL: length96_eq:
4258 ; X64-AVX1: # %bb.0:
4259 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4260 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4261 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4262 ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4263 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4264 ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4265 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4266 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4267 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4268 ; X64-AVX1-NEXT: setne %al
4269 ; X64-AVX1-NEXT: vzeroupper
4270 ; X64-AVX1-NEXT: retq
4272 ; X64-AVX2-LABEL: length96_eq:
4273 ; X64-AVX2: # %bb.0:
4274 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4275 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4276 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4277 ; X64-AVX2-NEXT: vpxor 32(%rsi), %ymm1, %ymm1
4278 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
4279 ; X64-AVX2-NEXT: vpxor 64(%rsi), %ymm2, %ymm2
4280 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
4281 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4282 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4283 ; X64-AVX2-NEXT: setne %al
4284 ; X64-AVX2-NEXT: vzeroupper
4285 ; X64-AVX2-NEXT: retq
4287 ; X64-AVX512BW-LABEL: length96_eq:
4288 ; X64-AVX512BW: # %bb.0:
4289 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4290 ; X64-AVX512BW-NEXT: vmovdqu 64(%rdi), %ymm1
4291 ; X64-AVX512BW-NEXT: vmovdqu 64(%rsi), %ymm2
4292 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k0
4293 ; X64-AVX512BW-NEXT: vpcmpneqb %zmm2, %zmm1, %k1
4294 ; X64-AVX512BW-NEXT: kortestq %k1, %k0
4295 ; X64-AVX512BW-NEXT: setne %al
4296 ; X64-AVX512BW-NEXT: vzeroupper
4297 ; X64-AVX512BW-NEXT: retq
4299 ; X64-AVX512F-LABEL: length96_eq:
4300 ; X64-AVX512F: # %bb.0:
4301 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4302 ; X64-AVX512F-NEXT: vmovdqu 64(%rdi), %ymm1
4303 ; X64-AVX512F-NEXT: vmovdqu 64(%rsi), %ymm2
4304 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k0
4305 ; X64-AVX512F-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
4306 ; X64-AVX512F-NEXT: kortestw %k1, %k0
4307 ; X64-AVX512F-NEXT: setne %al
4308 ; X64-AVX512F-NEXT: vzeroupper
4309 ; X64-AVX512F-NEXT: retq
4311 ; X64-MIC-AVX2-LABEL: length96_eq:
4312 ; X64-MIC-AVX2: # %bb.0:
4313 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4314 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4315 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4316 ; X64-MIC-AVX2-NEXT: vmovdqu (%rsi), %ymm3
4317 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rsi), %ymm4
4318 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rsi), %ymm5
4319 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm4, %zmm1, %k0
4320 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm3, %zmm0, %k1
4321 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
4322 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm5, %zmm2, %k1
4323 ; X64-MIC-AVX2-NEXT: kortestw %k1, %k0
4324 ; X64-MIC-AVX2-NEXT: setne %al
4325 ; X64-MIC-AVX2-NEXT: vzeroupper
4326 ; X64-MIC-AVX2-NEXT: retq
4328 ; X64-MIC-AVX512F-LABEL: length96_eq:
4329 ; X64-MIC-AVX512F: # %bb.0:
4330 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4331 ; X64-MIC-AVX512F-NEXT: vmovdqu 64(%rdi), %ymm1
4332 ; X64-MIC-AVX512F-NEXT: vmovdqu 64(%rsi), %ymm2
4333 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k0
4334 ; X64-MIC-AVX512F-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
4335 ; X64-MIC-AVX512F-NEXT: kortestw %k1, %k0
4336 ; X64-MIC-AVX512F-NEXT: setne %al
4337 ; X64-MIC-AVX512F-NEXT: vzeroupper
4338 ; X64-MIC-AVX512F-NEXT: retq
4357 ; X64-LABEL: length96_lt:
4358 ; X64: # %bb.0:
4359 ; X64-NEXT: pushq %rax
4360 ; X64-NEXT: movl $96, %edx
4361 ; X64-NEXT: callq memcmp
4362 ; X64-NEXT: shrl $31, %eax
4363 ; X64-NEXT: # kill: def $al killed $al killed $eax
4364 ; X64-NEXT: popq %rcx
4365 ; X64-NEXT: retq
4384 ; X64-LABEL: length96_gt:
4385 ; X64: # %bb.0:
4386 ; X64-NEXT: pushq %rax
4387 ; X64-NEXT: movl $96, %edx
4388 ; X64-NEXT: callq memcmp
4389 ; X64-NEXT: testl %eax, %eax
4390 ; X64-NEXT: setg %al
4391 ; X64-NEXT: popq %rcx
4392 ; X64-NEXT: retq
4411 ; X64-SSE-LABEL: length96_eq_const:
4412 ; X64-SSE: # %bb.0:
4413 ; X64-SSE-NEXT: pushq %rax
4414 ; X64-SSE-NEXT: movl $.L.str, %esi
4415 ; X64-SSE-NEXT: movl $96, %edx
4416 ; X64-SSE-NEXT: callq memcmp
4417 ; X64-SSE-NEXT: testl %eax, %eax
4418 ; X64-SSE-NEXT: sete %al
4419 ; X64-SSE-NEXT: popq %rcx
4420 ; X64-SSE-NEXT: retq
4422 ; X64-AVX1-LABEL: length96_eq_const:
4423 ; X64-AVX1: # %bb.0:
4424 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4425 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4426 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4427 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4428 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4429 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
4430 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4431 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4432 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4433 ; X64-AVX1-NEXT: sete %al
4434 ; X64-AVX1-NEXT: vzeroupper
4435 ; X64-AVX1-NEXT: retq
4437 ; X64-AVX2-LABEL: length96_eq_const:
4438 ; X64-AVX2: # %bb.0:
4439 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4440 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4441 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4442 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
4443 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
4444 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm2, %ymm2
4445 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
4446 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4447 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4448 ; X64-AVX2-NEXT: sete %al
4449 ; X64-AVX2-NEXT: vzeroupper
4450 ; X64-AVX2-NEXT: retq
4452 ; X64-AVX512BW-LABEL: length96_eq_const:
4453 ; X64-AVX512BW: # %bb.0:
4454 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4455 ; X64-AVX512BW-NEXT: vmovdqu 64(%rdi), %ymm1
4456 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k0
4457 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm1, %k1
4458 ; X64-AVX512BW-NEXT: kortestq %k1, %k0
4459 ; X64-AVX512BW-NEXT: sete %al
4460 ; X64-AVX512BW-NEXT: vzeroupper
4461 ; X64-AVX512BW-NEXT: retq
4463 ; X64-AVX512F-LABEL: length96_eq_const:
4464 ; X64-AVX512F: # %bb.0:
4465 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4466 ; X64-AVX512F-NEXT: vmovdqu 64(%rdi), %ymm1
4467 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k0
4468 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm1, %k1
4469 ; X64-AVX512F-NEXT: kortestw %k1, %k0
4470 ; X64-AVX512F-NEXT: sete %al
4471 ; X64-AVX512F-NEXT: vzeroupper
4472 ; X64-AVX512F-NEXT: retq
4474 ; X64-MIC-AVX2-LABEL: length96_eq_const:
4475 ; X64-MIC-AVX2: # %bb.0:
4476 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4477 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4478 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4479 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [892613426,959985462,858927408,926299444,825243960,…
4480 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm3, %zmm1, %k0
4481 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,…
4482 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm1, %zmm0, %k1
4483 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
4484 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [926299444,825243960,892613426,959985462,858927408,…
4485 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm0, %zmm2, %k1
4486 ; X64-MIC-AVX2-NEXT: kortestw %k1, %k0
4487 ; X64-MIC-AVX2-NEXT: sete %al
4488 ; X64-MIC-AVX2-NEXT: vzeroupper
4489 ; X64-MIC-AVX2-NEXT: retq
4491 ; X64-MIC-AVX512F-LABEL: length96_eq_const:
4492 ; X64-MIC-AVX512F: # %bb.0:
4493 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4494 ; X64-MIC-AVX512F-NEXT: vmovdqu 64(%rdi), %ymm1
4495 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k0
4496 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm1, %k1
4497 ; X64-MIC-AVX512F-NEXT: kortestw %k1, %k0
4498 ; X64-MIC-AVX512F-NEXT: sete %al
4499 ; X64-MIC-AVX512F-NEXT: vzeroupper
4500 ; X64-MIC-AVX512F-NEXT: retq
4517 ; X64-LABEL: length127:
4518 ; X64: # %bb.0:
4519 ; X64-NEXT: movl $127, %edx
4520 ; X64-NEXT: jmp memcmp # TAILCALL
4538 ; X64-SSE-LABEL: length127_eq:
4539 ; X64-SSE: # %bb.0:
4540 ; X64-SSE-NEXT: pushq %rax
4541 ; X64-SSE-NEXT: movl $127, %edx
4542 ; X64-SSE-NEXT: callq memcmp
4543 ; X64-SSE-NEXT: testl %eax, %eax
4544 ; X64-SSE-NEXT: setne %al
4545 ; X64-SSE-NEXT: popq %rcx
4546 ; X64-SSE-NEXT: retq
4548 ; X64-AVX1-LABEL: length127_eq:
4549 ; X64-AVX1: # %bb.0:
4550 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4551 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4552 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4553 ; X64-AVX1-NEXT: vmovups 95(%rdi), %ymm3
4554 ; X64-AVX1-NEXT: vxorps 95(%rsi), %ymm3, %ymm3
4555 ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4556 ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4557 ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4558 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4559 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4560 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4561 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4562 ; X64-AVX1-NEXT: setne %al
4563 ; X64-AVX1-NEXT: vzeroupper
4564 ; X64-AVX1-NEXT: retq
4566 ; X64-AVX2-LABEL: length127_eq:
4567 ; X64-AVX2: # %bb.0:
4568 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4569 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4570 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4571 ; X64-AVX2-NEXT: vmovdqu 95(%rdi), %ymm3
4572 ; X64-AVX2-NEXT: vpxor 95(%rsi), %ymm3, %ymm3
4573 ; X64-AVX2-NEXT: vpxor 64(%rsi), %ymm2, %ymm2
4574 ; X64-AVX2-NEXT: vpor %ymm3, %ymm2, %ymm2
4575 ; X64-AVX2-NEXT: vpxor 32(%rsi), %ymm1, %ymm1
4576 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
4577 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
4578 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4579 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4580 ; X64-AVX2-NEXT: setne %al
4581 ; X64-AVX2-NEXT: vzeroupper
4582 ; X64-AVX2-NEXT: retq
4584 ; X64-AVX512BW-LABEL: length127_eq:
4585 ; X64-AVX512BW: # %bb.0:
4586 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4587 ; X64-AVX512BW-NEXT: vmovdqu64 63(%rdi), %zmm1
4588 ; X64-AVX512BW-NEXT: vpcmpneqb 63(%rsi), %zmm1, %k0
4589 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k1
4590 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
4591 ; X64-AVX512BW-NEXT: setne %al
4592 ; X64-AVX512BW-NEXT: vzeroupper
4593 ; X64-AVX512BW-NEXT: retq
4595 ; X64-AVX512F-LABEL: length127_eq:
4596 ; X64-AVX512F: # %bb.0:
4597 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4598 ; X64-AVX512F-NEXT: vmovdqu64 63(%rdi), %zmm1
4599 ; X64-AVX512F-NEXT: vpcmpneqd 63(%rsi), %zmm1, %k0
4600 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
4601 ; X64-AVX512F-NEXT: kortestw %k0, %k1
4602 ; X64-AVX512F-NEXT: setne %al
4603 ; X64-AVX512F-NEXT: vzeroupper
4604 ; X64-AVX512F-NEXT: retq
4606 ; X64-MIC-AVX2-LABEL: length127_eq:
4607 ; X64-MIC-AVX2: # %bb.0:
4608 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4609 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4610 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4611 ; X64-MIC-AVX2-NEXT: vmovdqu 95(%rdi), %ymm3
4612 ; X64-MIC-AVX2-NEXT: vmovdqu (%rsi), %ymm4
4613 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rsi), %ymm5
4614 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rsi), %ymm6
4615 ; X64-MIC-AVX2-NEXT: vmovdqu 95(%rsi), %ymm7
4616 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm7, %zmm3, %k0
4617 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm6, %zmm2, %k1
4618 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
4619 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm5, %zmm1, %k1
4620 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm4, %zmm0, %k2
4621 ; X64-MIC-AVX2-NEXT: korw %k1, %k2, %k1
4622 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
4623 ; X64-MIC-AVX2-NEXT: setne %al
4624 ; X64-MIC-AVX2-NEXT: vzeroupper
4625 ; X64-MIC-AVX2-NEXT: retq
4627 ; X64-MIC-AVX512F-LABEL: length127_eq:
4628 ; X64-MIC-AVX512F: # %bb.0:
4629 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4630 ; X64-MIC-AVX512F-NEXT: vmovdqu64 63(%rdi), %zmm1
4631 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 63(%rsi), %zmm1, %k0
4632 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
4633 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
4634 ; X64-MIC-AVX512F-NEXT: setne %al
4635 ; X64-MIC-AVX512F-NEXT: vzeroupper
4636 ; X64-MIC-AVX512F-NEXT: retq
4655 ; X64-LABEL: length127_lt:
4656 ; X64: # %bb.0:
4657 ; X64-NEXT: pushq %rax
4658 ; X64-NEXT: movl $127, %edx
4659 ; X64-NEXT: callq memcmp
4660 ; X64-NEXT: shrl $31, %eax
4661 ; X64-NEXT: # kill: def $al killed $al killed $eax
4662 ; X64-NEXT: popq %rcx
4663 ; X64-NEXT: retq
4682 ; X64-LABEL: length127_gt:
4683 ; X64: # %bb.0:
4684 ; X64-NEXT: pushq %rax
4685 ; X64-NEXT: movl $127, %edx
4686 ; X64-NEXT: callq memcmp
4687 ; X64-NEXT: testl %eax, %eax
4688 ; X64-NEXT: setg %al
4689 ; X64-NEXT: popq %rcx
4690 ; X64-NEXT: retq
4709 ; X64-SSE-LABEL: length127_eq_const:
4710 ; X64-SSE: # %bb.0:
4711 ; X64-SSE-NEXT: pushq %rax
4712 ; X64-SSE-NEXT: movl $.L.str, %esi
4713 ; X64-SSE-NEXT: movl $127, %edx
4714 ; X64-SSE-NEXT: callq memcmp
4715 ; X64-SSE-NEXT: testl %eax, %eax
4716 ; X64-SSE-NEXT: sete %al
4717 ; X64-SSE-NEXT: popq %rcx
4718 ; X64-SSE-NEXT: retq
4720 ; X64-AVX1-LABEL: length127_eq_const:
4721 ; X64-AVX1: # %bb.0:
4722 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4723 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4724 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4725 ; X64-AVX1-NEXT: vmovups 95(%rdi), %ymm3
4726 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm3, %ymm3
4727 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
4728 ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4729 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4730 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4731 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4732 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4733 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4734 ; X64-AVX1-NEXT: sete %al
4735 ; X64-AVX1-NEXT: vzeroupper
4736 ; X64-AVX1-NEXT: retq
4738 ; X64-AVX2-LABEL: length127_eq_const:
4739 ; X64-AVX2: # %bb.0:
4740 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4741 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4742 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4743 ; X64-AVX2-NEXT: vmovdqu 95(%rdi), %ymm3
4744 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm3, %ymm3
4745 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm2, %ymm2
4746 ; X64-AVX2-NEXT: vpor %ymm3, %ymm2, %ymm2
4747 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
4748 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
4749 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
4750 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4751 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4752 ; X64-AVX2-NEXT: sete %al
4753 ; X64-AVX2-NEXT: vzeroupper
4754 ; X64-AVX2-NEXT: retq
4756 ; X64-AVX512BW-LABEL: length127_eq_const:
4757 ; X64-AVX512BW: # %bb.0:
4758 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4759 ; X64-AVX512BW-NEXT: vmovdqu64 63(%rdi), %zmm1
4760 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm1, %k0
4761 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k1
4762 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
4763 ; X64-AVX512BW-NEXT: sete %al
4764 ; X64-AVX512BW-NEXT: vzeroupper
4765 ; X64-AVX512BW-NEXT: retq
4767 ; X64-AVX512F-LABEL: length127_eq_const:
4768 ; X64-AVX512F: # %bb.0:
4769 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4770 ; X64-AVX512F-NEXT: vmovdqu64 63(%rdi), %zmm1
4771 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
4772 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
4773 ; X64-AVX512F-NEXT: kortestw %k0, %k1
4774 ; X64-AVX512F-NEXT: sete %al
4775 ; X64-AVX512F-NEXT: vzeroupper
4776 ; X64-AVX512F-NEXT: retq
4778 ; X64-MIC-AVX2-LABEL: length127_eq_const:
4779 ; X64-MIC-AVX2: # %bb.0:
4780 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4781 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4782 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4783 ; X64-MIC-AVX2-NEXT: vmovdqu 95(%rdi), %ymm3
4784 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [943142453,842084409,909456435,809056311,875770417,…
4785 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm4, %zmm3, %k0
4786 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [926299444,825243960,892613426,959985462,858927408,…
4787 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm3, %zmm2, %k1
4788 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
4789 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [892613426,959985462,858927408,926299444,825243960,…
4790 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
4791 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,…
4792 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm1, %zmm0, %k2
4793 ; X64-MIC-AVX2-NEXT: korw %k1, %k2, %k1
4794 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
4795 ; X64-MIC-AVX2-NEXT: sete %al
4796 ; X64-MIC-AVX2-NEXT: vzeroupper
4797 ; X64-MIC-AVX2-NEXT: retq
4799 ; X64-MIC-AVX512F-LABEL: length127_eq_const:
4800 ; X64-MIC-AVX512F: # %bb.0:
4801 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4802 ; X64-MIC-AVX512F-NEXT: vmovdqu64 63(%rdi), %zmm1
4803 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
4804 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
4805 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
4806 ; X64-MIC-AVX512F-NEXT: sete %al
4807 ; X64-MIC-AVX512F-NEXT: vzeroupper
4808 ; X64-MIC-AVX512F-NEXT: retq
4825 ; X64-LABEL: length128:
4826 ; X64: # %bb.0:
4827 ; X64-NEXT: movl $128, %edx
4828 ; X64-NEXT: jmp memcmp # TAILCALL
4846 ; X64-SSE-LABEL: length128_eq:
4847 ; X64-SSE: # %bb.0:
4848 ; X64-SSE-NEXT: pushq %rax
4849 ; X64-SSE-NEXT: movl $128, %edx
4850 ; X64-SSE-NEXT: callq memcmp
4851 ; X64-SSE-NEXT: testl %eax, %eax
4852 ; X64-SSE-NEXT: setne %al
4853 ; X64-SSE-NEXT: popq %rcx
4854 ; X64-SSE-NEXT: retq
4856 ; X64-AVX1-LABEL: length128_eq:
4857 ; X64-AVX1: # %bb.0:
4858 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4859 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4860 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4861 ; X64-AVX1-NEXT: vmovups 96(%rdi), %ymm3
4862 ; X64-AVX1-NEXT: vxorps 96(%rsi), %ymm3, %ymm3
4863 ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4864 ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4865 ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4866 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4867 ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4868 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4869 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4870 ; X64-AVX1-NEXT: setne %al
4871 ; X64-AVX1-NEXT: vzeroupper
4872 ; X64-AVX1-NEXT: retq
4874 ; X64-AVX2-LABEL: length128_eq:
4875 ; X64-AVX2: # %bb.0:
4876 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4877 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4878 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4879 ; X64-AVX2-NEXT: vmovdqu 96(%rdi), %ymm3
4880 ; X64-AVX2-NEXT: vpxor 96(%rsi), %ymm3, %ymm3
4881 ; X64-AVX2-NEXT: vpxor 64(%rsi), %ymm2, %ymm2
4882 ; X64-AVX2-NEXT: vpor %ymm3, %ymm2, %ymm2
4883 ; X64-AVX2-NEXT: vpxor 32(%rsi), %ymm1, %ymm1
4884 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
4885 ; X64-AVX2-NEXT: vpxor (%rsi), %ymm0, %ymm0
4886 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
4887 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
4888 ; X64-AVX2-NEXT: setne %al
4889 ; X64-AVX2-NEXT: vzeroupper
4890 ; X64-AVX2-NEXT: retq
4892 ; X64-AVX512BW-LABEL: length128_eq:
4893 ; X64-AVX512BW: # %bb.0:
4894 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
4895 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
4896 ; X64-AVX512BW-NEXT: vpcmpneqb 64(%rsi), %zmm1, %k0
4897 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k1
4898 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
4899 ; X64-AVX512BW-NEXT: setne %al
4900 ; X64-AVX512BW-NEXT: vzeroupper
4901 ; X64-AVX512BW-NEXT: retq
4903 ; X64-AVX512F-LABEL: length128_eq:
4904 ; X64-AVX512F: # %bb.0:
4905 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4906 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
4907 ; X64-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k0
4908 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
4909 ; X64-AVX512F-NEXT: kortestw %k0, %k1
4910 ; X64-AVX512F-NEXT: setne %al
4911 ; X64-AVX512F-NEXT: vzeroupper
4912 ; X64-AVX512F-NEXT: retq
4914 ; X64-MIC-AVX2-LABEL: length128_eq:
4915 ; X64-MIC-AVX2: # %bb.0:
4916 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
4917 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
4918 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
4919 ; X64-MIC-AVX2-NEXT: vmovdqu 96(%rdi), %ymm3
4920 ; X64-MIC-AVX2-NEXT: vmovdqu (%rsi), %ymm4
4921 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rsi), %ymm5
4922 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rsi), %ymm6
4923 ; X64-MIC-AVX2-NEXT: vmovdqu 96(%rsi), %ymm7
4924 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm7, %zmm3, %k0
4925 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm6, %zmm2, %k1
4926 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
4927 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm5, %zmm1, %k1
4928 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm4, %zmm0, %k2
4929 ; X64-MIC-AVX2-NEXT: korw %k1, %k2, %k1
4930 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
4931 ; X64-MIC-AVX2-NEXT: setne %al
4932 ; X64-MIC-AVX2-NEXT: vzeroupper
4933 ; X64-MIC-AVX2-NEXT: retq
4935 ; X64-MIC-AVX512F-LABEL: length128_eq:
4936 ; X64-MIC-AVX512F: # %bb.0:
4937 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
4938 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
4939 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k0
4940 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
4941 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
4942 ; X64-MIC-AVX512F-NEXT: setne %al
4943 ; X64-MIC-AVX512F-NEXT: vzeroupper
4944 ; X64-MIC-AVX512F-NEXT: retq
4963 ; X64-LABEL: length128_lt:
4964 ; X64: # %bb.0:
4965 ; X64-NEXT: pushq %rax
4966 ; X64-NEXT: movl $128, %edx
4967 ; X64-NEXT: callq memcmp
4968 ; X64-NEXT: shrl $31, %eax
4969 ; X64-NEXT: # kill: def $al killed $al killed $eax
4970 ; X64-NEXT: popq %rcx
4971 ; X64-NEXT: retq
4990 ; X64-LABEL: length128_gt:
4991 ; X64: # %bb.0:
4992 ; X64-NEXT: pushq %rax
4993 ; X64-NEXT: movl $128, %edx
4994 ; X64-NEXT: callq memcmp
4995 ; X64-NEXT: testl %eax, %eax
4996 ; X64-NEXT: setg %al
4997 ; X64-NEXT: popq %rcx
4998 ; X64-NEXT: retq
5017 ; X64-SSE-LABEL: length128_eq_const:
5018 ; X64-SSE: # %bb.0:
5019 ; X64-SSE-NEXT: pushq %rax
5020 ; X64-SSE-NEXT: movl $.L.str, %esi
5021 ; X64-SSE-NEXT: movl $128, %edx
5022 ; X64-SSE-NEXT: callq memcmp
5023 ; X64-SSE-NEXT: testl %eax, %eax
5024 ; X64-SSE-NEXT: sete %al
5025 ; X64-SSE-NEXT: popq %rcx
5026 ; X64-SSE-NEXT: retq
5028 ; X64-AVX1-LABEL: length128_eq_const:
5029 ; X64-AVX1: # %bb.0:
5030 ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
5031 ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
5032 ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
5033 ; X64-AVX1-NEXT: vmovups 96(%rdi), %ymm3
5034 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm3, %ymm3
5035 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
5036 ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
5037 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
5038 ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
5039 ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
5040 ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
5041 ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
5042 ; X64-AVX1-NEXT: sete %al
5043 ; X64-AVX1-NEXT: vzeroupper
5044 ; X64-AVX1-NEXT: retq
5046 ; X64-AVX2-LABEL: length128_eq_const:
5047 ; X64-AVX2: # %bb.0:
5048 ; X64-AVX2-NEXT: vmovdqu (%rdi), %ymm0
5049 ; X64-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
5050 ; X64-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
5051 ; X64-AVX2-NEXT: vmovdqu 96(%rdi), %ymm3
5052 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm3, %ymm3
5053 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm2, %ymm2
5054 ; X64-AVX2-NEXT: vpor %ymm3, %ymm2, %ymm2
5055 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm1, %ymm1
5056 ; X64-AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
5057 ; X64-AVX2-NEXT: vpxor {{.*}}(%rip), %ymm0, %ymm0
5058 ; X64-AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
5059 ; X64-AVX2-NEXT: vptest %ymm0, %ymm0
5060 ; X64-AVX2-NEXT: sete %al
5061 ; X64-AVX2-NEXT: vzeroupper
5062 ; X64-AVX2-NEXT: retq
5064 ; X64-AVX512BW-LABEL: length128_eq_const:
5065 ; X64-AVX512BW: # %bb.0:
5066 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5067 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5068 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm1, %k0
5069 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k1
5070 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
5071 ; X64-AVX512BW-NEXT: sete %al
5072 ; X64-AVX512BW-NEXT: vzeroupper
5073 ; X64-AVX512BW-NEXT: retq
5075 ; X64-AVX512F-LABEL: length128_eq_const:
5076 ; X64-AVX512F: # %bb.0:
5077 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5078 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5079 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
5080 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
5081 ; X64-AVX512F-NEXT: kortestw %k0, %k1
5082 ; X64-AVX512F-NEXT: sete %al
5083 ; X64-AVX512F-NEXT: vzeroupper
5084 ; X64-AVX512F-NEXT: retq
5086 ; X64-MIC-AVX2-LABEL: length128_eq_const:
5087 ; X64-MIC-AVX2: # %bb.0:
5088 ; X64-MIC-AVX2-NEXT: vmovdqu (%rdi), %ymm0
5089 ; X64-MIC-AVX2-NEXT: vmovdqu 32(%rdi), %ymm1
5090 ; X64-MIC-AVX2-NEXT: vmovdqu 64(%rdi), %ymm2
5091 ; X64-MIC-AVX2-NEXT: vmovdqu 96(%rdi), %ymm3
5092 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm4 = [959985462,858927408,926299444,825243960,892613426,…
5093 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm4, %zmm3, %k0
5094 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [926299444,825243960,892613426,959985462,858927408,…
5095 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm3, %zmm2, %k1
5096 ; X64-MIC-AVX2-NEXT: korw %k0, %k1, %k0
5097 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [892613426,959985462,858927408,926299444,825243960,…
5098 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm2, %zmm1, %k1
5099 ; X64-MIC-AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [858927408,926299444,825243960,892613426,959985462,…
5100 ; X64-MIC-AVX2-NEXT: vpcmpneqd %zmm1, %zmm0, %k2
5101 ; X64-MIC-AVX2-NEXT: korw %k1, %k2, %k1
5102 ; X64-MIC-AVX2-NEXT: kortestw %k0, %k1
5103 ; X64-MIC-AVX2-NEXT: sete %al
5104 ; X64-MIC-AVX2-NEXT: vzeroupper
5105 ; X64-MIC-AVX2-NEXT: retq
5107 ; X64-MIC-AVX512F-LABEL: length128_eq_const:
5108 ; X64-MIC-AVX512F: # %bb.0:
5109 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5110 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5111 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
5112 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
5113 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
5114 ; X64-MIC-AVX512F-NEXT: sete %al
5115 ; X64-MIC-AVX512F-NEXT: vzeroupper
5116 ; X64-MIC-AVX512F-NEXT: retq
5133 ; X64-LABEL: length192:
5134 ; X64: # %bb.0:
5135 ; X64-NEXT: movl $192, %edx
5136 ; X64-NEXT: jmp memcmp # TAILCALL
5154 ; X64-SSE-LABEL: length192_eq:
5155 ; X64-SSE: # %bb.0:
5156 ; X64-SSE-NEXT: pushq %rax
5157 ; X64-SSE-NEXT: movl $192, %edx
5158 ; X64-SSE-NEXT: callq memcmp
5159 ; X64-SSE-NEXT: testl %eax, %eax
5160 ; X64-SSE-NEXT: setne %al
5161 ; X64-SSE-NEXT: popq %rcx
5162 ; X64-SSE-NEXT: retq
5164 ; X64-AVX1-LABEL: length192_eq:
5165 ; X64-AVX1: # %bb.0:
5166 ; X64-AVX1-NEXT: pushq %rax
5167 ; X64-AVX1-NEXT: movl $192, %edx
5168 ; X64-AVX1-NEXT: callq memcmp
5169 ; X64-AVX1-NEXT: testl %eax, %eax
5170 ; X64-AVX1-NEXT: setne %al
5171 ; X64-AVX1-NEXT: popq %rcx
5172 ; X64-AVX1-NEXT: retq
5174 ; X64-AVX2-LABEL: length192_eq:
5175 ; X64-AVX2: # %bb.0:
5176 ; X64-AVX2-NEXT: pushq %rax
5177 ; X64-AVX2-NEXT: movl $192, %edx
5178 ; X64-AVX2-NEXT: callq memcmp
5179 ; X64-AVX2-NEXT: testl %eax, %eax
5180 ; X64-AVX2-NEXT: setne %al
5181 ; X64-AVX2-NEXT: popq %rcx
5182 ; X64-AVX2-NEXT: retq
5184 ; X64-AVX512BW-LABEL: length192_eq:
5185 ; X64-AVX512BW: # %bb.0:
5186 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5187 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5188 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5189 ; X64-AVX512BW-NEXT: vpcmpneqb 64(%rsi), %zmm1, %k0
5190 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k1
5191 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5192 ; X64-AVX512BW-NEXT: vpcmpneqb 128(%rsi), %zmm2, %k1
5193 ; X64-AVX512BW-NEXT: kortestq %k1, %k0
5194 ; X64-AVX512BW-NEXT: setne %al
5195 ; X64-AVX512BW-NEXT: vzeroupper
5196 ; X64-AVX512BW-NEXT: retq
5198 ; X64-AVX512F-LABEL: length192_eq:
5199 ; X64-AVX512F: # %bb.0:
5200 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5201 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5202 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5203 ; X64-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k0
5204 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
5205 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5206 ; X64-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5207 ; X64-AVX512F-NEXT: kortestw %k1, %k0
5208 ; X64-AVX512F-NEXT: setne %al
5209 ; X64-AVX512F-NEXT: vzeroupper
5210 ; X64-AVX512F-NEXT: retq
5212 ; X64-MIC-AVX2-LABEL: length192_eq:
5213 ; X64-MIC-AVX2: # %bb.0:
5214 ; X64-MIC-AVX2-NEXT: pushq %rax
5215 ; X64-MIC-AVX2-NEXT: movl $192, %edx
5216 ; X64-MIC-AVX2-NEXT: callq memcmp
5217 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5218 ; X64-MIC-AVX2-NEXT: setne %al
5219 ; X64-MIC-AVX2-NEXT: popq %rcx
5220 ; X64-MIC-AVX2-NEXT: retq
5222 ; X64-MIC-AVX512F-LABEL: length192_eq:
5223 ; X64-MIC-AVX512F: # %bb.0:
5224 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5225 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5226 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5227 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k0
5228 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k1
5229 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5230 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5231 ; X64-MIC-AVX512F-NEXT: kortestw %k1, %k0
5232 ; X64-MIC-AVX512F-NEXT: setne %al
5233 ; X64-MIC-AVX512F-NEXT: vzeroupper
5234 ; X64-MIC-AVX512F-NEXT: retq
5253 ; X64-LABEL: length192_lt:
5254 ; X64: # %bb.0:
5255 ; X64-NEXT: pushq %rax
5256 ; X64-NEXT: movl $192, %edx
5257 ; X64-NEXT: callq memcmp
5258 ; X64-NEXT: shrl $31, %eax
5259 ; X64-NEXT: # kill: def $al killed $al killed $eax
5260 ; X64-NEXT: popq %rcx
5261 ; X64-NEXT: retq
5280 ; X64-LABEL: length192_gt:
5281 ; X64: # %bb.0:
5282 ; X64-NEXT: pushq %rax
5283 ; X64-NEXT: movl $192, %edx
5284 ; X64-NEXT: callq memcmp
5285 ; X64-NEXT: testl %eax, %eax
5286 ; X64-NEXT: setg %al
5287 ; X64-NEXT: popq %rcx
5288 ; X64-NEXT: retq
5307 ; X64-SSE-LABEL: length192_eq_const:
5308 ; X64-SSE: # %bb.0:
5309 ; X64-SSE-NEXT: pushq %rax
5310 ; X64-SSE-NEXT: movl $.L.str, %esi
5311 ; X64-SSE-NEXT: movl $192, %edx
5312 ; X64-SSE-NEXT: callq memcmp
5313 ; X64-SSE-NEXT: testl %eax, %eax
5314 ; X64-SSE-NEXT: sete %al
5315 ; X64-SSE-NEXT: popq %rcx
5316 ; X64-SSE-NEXT: retq
5318 ; X64-AVX1-LABEL: length192_eq_const:
5319 ; X64-AVX1: # %bb.0:
5320 ; X64-AVX1-NEXT: pushq %rax
5321 ; X64-AVX1-NEXT: movl $.L.str, %esi
5322 ; X64-AVX1-NEXT: movl $192, %edx
5323 ; X64-AVX1-NEXT: callq memcmp
5324 ; X64-AVX1-NEXT: testl %eax, %eax
5325 ; X64-AVX1-NEXT: sete %al
5326 ; X64-AVX1-NEXT: popq %rcx
5327 ; X64-AVX1-NEXT: retq
5329 ; X64-AVX2-LABEL: length192_eq_const:
5330 ; X64-AVX2: # %bb.0:
5331 ; X64-AVX2-NEXT: pushq %rax
5332 ; X64-AVX2-NEXT: movl $.L.str, %esi
5333 ; X64-AVX2-NEXT: movl $192, %edx
5334 ; X64-AVX2-NEXT: callq memcmp
5335 ; X64-AVX2-NEXT: testl %eax, %eax
5336 ; X64-AVX2-NEXT: sete %al
5337 ; X64-AVX2-NEXT: popq %rcx
5338 ; X64-AVX2-NEXT: retq
5340 ; X64-AVX512BW-LABEL: length192_eq_const:
5341 ; X64-AVX512BW: # %bb.0:
5342 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5343 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5344 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5345 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm1, %k0
5346 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k1
5347 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5348 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm2, %k1
5349 ; X64-AVX512BW-NEXT: kortestq %k1, %k0
5350 ; X64-AVX512BW-NEXT: sete %al
5351 ; X64-AVX512BW-NEXT: vzeroupper
5352 ; X64-AVX512BW-NEXT: retq
5354 ; X64-AVX512F-LABEL: length192_eq_const:
5355 ; X64-AVX512F: # %bb.0:
5356 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5357 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5358 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5359 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
5360 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
5361 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5362 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5363 ; X64-AVX512F-NEXT: kortestw %k1, %k0
5364 ; X64-AVX512F-NEXT: sete %al
5365 ; X64-AVX512F-NEXT: vzeroupper
5366 ; X64-AVX512F-NEXT: retq
5368 ; X64-MIC-AVX2-LABEL: length192_eq_const:
5369 ; X64-MIC-AVX2: # %bb.0:
5370 ; X64-MIC-AVX2-NEXT: pushq %rax
5371 ; X64-MIC-AVX2-NEXT: movl $.L.str, %esi
5372 ; X64-MIC-AVX2-NEXT: movl $192, %edx
5373 ; X64-MIC-AVX2-NEXT: callq memcmp
5374 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5375 ; X64-MIC-AVX2-NEXT: sete %al
5376 ; X64-MIC-AVX2-NEXT: popq %rcx
5377 ; X64-MIC-AVX2-NEXT: retq
5379 ; X64-MIC-AVX512F-LABEL: length192_eq_const:
5380 ; X64-MIC-AVX512F: # %bb.0:
5381 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5382 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5383 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5384 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k0
5385 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k1
5386 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5387 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5388 ; X64-MIC-AVX512F-NEXT: kortestw %k1, %k0
5389 ; X64-MIC-AVX512F-NEXT: sete %al
5390 ; X64-MIC-AVX512F-NEXT: vzeroupper
5391 ; X64-MIC-AVX512F-NEXT: retq
5408 ; X64-LABEL: length255:
5409 ; X64: # %bb.0:
5410 ; X64-NEXT: movl $255, %edx
5411 ; X64-NEXT: jmp memcmp # TAILCALL
5429 ; X64-SSE-LABEL: length255_eq:
5430 ; X64-SSE: # %bb.0:
5431 ; X64-SSE-NEXT: pushq %rax
5432 ; X64-SSE-NEXT: movl $255, %edx
5433 ; X64-SSE-NEXT: callq memcmp
5434 ; X64-SSE-NEXT: testl %eax, %eax
5435 ; X64-SSE-NEXT: setne %al
5436 ; X64-SSE-NEXT: popq %rcx
5437 ; X64-SSE-NEXT: retq
5439 ; X64-AVX1-LABEL: length255_eq:
5440 ; X64-AVX1: # %bb.0:
5441 ; X64-AVX1-NEXT: pushq %rax
5442 ; X64-AVX1-NEXT: movl $255, %edx
5443 ; X64-AVX1-NEXT: callq memcmp
5444 ; X64-AVX1-NEXT: testl %eax, %eax
5445 ; X64-AVX1-NEXT: setne %al
5446 ; X64-AVX1-NEXT: popq %rcx
5447 ; X64-AVX1-NEXT: retq
5449 ; X64-AVX2-LABEL: length255_eq:
5450 ; X64-AVX2: # %bb.0:
5451 ; X64-AVX2-NEXT: pushq %rax
5452 ; X64-AVX2-NEXT: movl $255, %edx
5453 ; X64-AVX2-NEXT: callq memcmp
5454 ; X64-AVX2-NEXT: testl %eax, %eax
5455 ; X64-AVX2-NEXT: setne %al
5456 ; X64-AVX2-NEXT: popq %rcx
5457 ; X64-AVX2-NEXT: retq
5459 ; X64-AVX512BW-LABEL: length255_eq:
5460 ; X64-AVX512BW: # %bb.0:
5461 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5462 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5463 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5464 ; X64-AVX512BW-NEXT: vmovdqu64 191(%rdi), %zmm3
5465 ; X64-AVX512BW-NEXT: vpcmpneqb 191(%rsi), %zmm3, %k0
5466 ; X64-AVX512BW-NEXT: vpcmpneqb 128(%rsi), %zmm2, %k1
5467 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5468 ; X64-AVX512BW-NEXT: vpcmpneqb 64(%rsi), %zmm1, %k1
5469 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k2
5470 ; X64-AVX512BW-NEXT: korq %k1, %k2, %k1
5471 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
5472 ; X64-AVX512BW-NEXT: setne %al
5473 ; X64-AVX512BW-NEXT: vzeroupper
5474 ; X64-AVX512BW-NEXT: retq
5476 ; X64-AVX512F-LABEL: length255_eq:
5477 ; X64-AVX512F: # %bb.0:
5478 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5479 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5480 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5481 ; X64-AVX512F-NEXT: vmovdqu64 191(%rdi), %zmm3
5482 ; X64-AVX512F-NEXT: vpcmpneqd 191(%rsi), %zmm3, %k0
5483 ; X64-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5484 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5485 ; X64-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k1
5486 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k2
5487 ; X64-AVX512F-NEXT: korw %k1, %k2, %k1
5488 ; X64-AVX512F-NEXT: kortestw %k0, %k1
5489 ; X64-AVX512F-NEXT: setne %al
5490 ; X64-AVX512F-NEXT: vzeroupper
5491 ; X64-AVX512F-NEXT: retq
5493 ; X64-MIC-AVX2-LABEL: length255_eq:
5494 ; X64-MIC-AVX2: # %bb.0:
5495 ; X64-MIC-AVX2-NEXT: pushq %rax
5496 ; X64-MIC-AVX2-NEXT: movl $255, %edx
5497 ; X64-MIC-AVX2-NEXT: callq memcmp
5498 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5499 ; X64-MIC-AVX2-NEXT: setne %al
5500 ; X64-MIC-AVX2-NEXT: popq %rcx
5501 ; X64-MIC-AVX2-NEXT: retq
5503 ; X64-MIC-AVX512F-LABEL: length255_eq:
5504 ; X64-MIC-AVX512F: # %bb.0:
5505 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5506 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5507 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5508 ; X64-MIC-AVX512F-NEXT: vmovdqu64 191(%rdi), %zmm3
5509 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 191(%rsi), %zmm3, %k0
5510 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5511 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5512 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k1
5513 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k2
5514 ; X64-MIC-AVX512F-NEXT: korw %k1, %k2, %k1
5515 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
5516 ; X64-MIC-AVX512F-NEXT: setne %al
5517 ; X64-MIC-AVX512F-NEXT: vzeroupper
5518 ; X64-MIC-AVX512F-NEXT: retq
5537 ; X64-LABEL: length255_lt:
5538 ; X64: # %bb.0:
5539 ; X64-NEXT: pushq %rax
5540 ; X64-NEXT: movl $255, %edx
5541 ; X64-NEXT: callq memcmp
5542 ; X64-NEXT: shrl $31, %eax
5543 ; X64-NEXT: # kill: def $al killed $al killed $eax
5544 ; X64-NEXT: popq %rcx
5545 ; X64-NEXT: retq
5564 ; X64-LABEL: length255_gt:
5565 ; X64: # %bb.0:
5566 ; X64-NEXT: pushq %rax
5567 ; X64-NEXT: movl $255, %edx
5568 ; X64-NEXT: callq memcmp
5569 ; X64-NEXT: testl %eax, %eax
5570 ; X64-NEXT: setg %al
5571 ; X64-NEXT: popq %rcx
5572 ; X64-NEXT: retq
5591 ; X64-SSE-LABEL: length255_eq_const:
5592 ; X64-SSE: # %bb.0:
5593 ; X64-SSE-NEXT: pushq %rax
5594 ; X64-SSE-NEXT: movl $.L.str, %esi
5595 ; X64-SSE-NEXT: movl $255, %edx
5596 ; X64-SSE-NEXT: callq memcmp
5597 ; X64-SSE-NEXT: testl %eax, %eax
5598 ; X64-SSE-NEXT: sete %al
5599 ; X64-SSE-NEXT: popq %rcx
5600 ; X64-SSE-NEXT: retq
5602 ; X64-AVX1-LABEL: length255_eq_const:
5603 ; X64-AVX1: # %bb.0:
5604 ; X64-AVX1-NEXT: pushq %rax
5605 ; X64-AVX1-NEXT: movl $.L.str, %esi
5606 ; X64-AVX1-NEXT: movl $255, %edx
5607 ; X64-AVX1-NEXT: callq memcmp
5608 ; X64-AVX1-NEXT: testl %eax, %eax
5609 ; X64-AVX1-NEXT: sete %al
5610 ; X64-AVX1-NEXT: popq %rcx
5611 ; X64-AVX1-NEXT: retq
5613 ; X64-AVX2-LABEL: length255_eq_const:
5614 ; X64-AVX2: # %bb.0:
5615 ; X64-AVX2-NEXT: pushq %rax
5616 ; X64-AVX2-NEXT: movl $.L.str, %esi
5617 ; X64-AVX2-NEXT: movl $255, %edx
5618 ; X64-AVX2-NEXT: callq memcmp
5619 ; X64-AVX2-NEXT: testl %eax, %eax
5620 ; X64-AVX2-NEXT: sete %al
5621 ; X64-AVX2-NEXT: popq %rcx
5622 ; X64-AVX2-NEXT: retq
5624 ; X64-AVX512BW-LABEL: length255_eq_const:
5625 ; X64-AVX512BW: # %bb.0:
5626 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5627 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5628 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5629 ; X64-AVX512BW-NEXT: vmovdqu64 191(%rdi), %zmm3
5630 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm3, %k0
5631 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm2, %k1
5632 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5633 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm1, %k1
5634 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k2
5635 ; X64-AVX512BW-NEXT: korq %k1, %k2, %k1
5636 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
5637 ; X64-AVX512BW-NEXT: sete %al
5638 ; X64-AVX512BW-NEXT: vzeroupper
5639 ; X64-AVX512BW-NEXT: retq
5641 ; X64-AVX512F-LABEL: length255_eq_const:
5642 ; X64-AVX512F: # %bb.0:
5643 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5644 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5645 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5646 ; X64-AVX512F-NEXT: vmovdqu64 191(%rdi), %zmm3
5647 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm3, %k0
5648 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5649 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5650 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k1
5651 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k2
5652 ; X64-AVX512F-NEXT: korw %k1, %k2, %k1
5653 ; X64-AVX512F-NEXT: kortestw %k0, %k1
5654 ; X64-AVX512F-NEXT: sete %al
5655 ; X64-AVX512F-NEXT: vzeroupper
5656 ; X64-AVX512F-NEXT: retq
5658 ; X64-MIC-AVX2-LABEL: length255_eq_const:
5659 ; X64-MIC-AVX2: # %bb.0:
5660 ; X64-MIC-AVX2-NEXT: pushq %rax
5661 ; X64-MIC-AVX2-NEXT: movl $.L.str, %esi
5662 ; X64-MIC-AVX2-NEXT: movl $255, %edx
5663 ; X64-MIC-AVX2-NEXT: callq memcmp
5664 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5665 ; X64-MIC-AVX2-NEXT: sete %al
5666 ; X64-MIC-AVX2-NEXT: popq %rcx
5667 ; X64-MIC-AVX2-NEXT: retq
5669 ; X64-MIC-AVX512F-LABEL: length255_eq_const:
5670 ; X64-MIC-AVX512F: # %bb.0:
5671 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5672 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5673 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5674 ; X64-MIC-AVX512F-NEXT: vmovdqu64 191(%rdi), %zmm3
5675 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm3, %k0
5676 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5677 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5678 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k1
5679 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k2
5680 ; X64-MIC-AVX512F-NEXT: korw %k1, %k2, %k1
5681 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
5682 ; X64-MIC-AVX512F-NEXT: sete %al
5683 ; X64-MIC-AVX512F-NEXT: vzeroupper
5684 ; X64-MIC-AVX512F-NEXT: retq
5701 ; X64-LABEL: length256:
5702 ; X64: # %bb.0:
5703 ; X64-NEXT: movl $256, %edx # imm = 0x100
5704 ; X64-NEXT: jmp memcmp # TAILCALL
5722 ; X64-SSE-LABEL: length256_eq:
5723 ; X64-SSE: # %bb.0:
5724 ; X64-SSE-NEXT: pushq %rax
5725 ; X64-SSE-NEXT: movl $256, %edx # imm = 0x100
5726 ; X64-SSE-NEXT: callq memcmp
5727 ; X64-SSE-NEXT: testl %eax, %eax
5728 ; X64-SSE-NEXT: setne %al
5729 ; X64-SSE-NEXT: popq %rcx
5730 ; X64-SSE-NEXT: retq
5732 ; X64-AVX1-LABEL: length256_eq:
5733 ; X64-AVX1: # %bb.0:
5734 ; X64-AVX1-NEXT: pushq %rax
5735 ; X64-AVX1-NEXT: movl $256, %edx # imm = 0x100
5736 ; X64-AVX1-NEXT: callq memcmp
5737 ; X64-AVX1-NEXT: testl %eax, %eax
5738 ; X64-AVX1-NEXT: setne %al
5739 ; X64-AVX1-NEXT: popq %rcx
5740 ; X64-AVX1-NEXT: retq
5742 ; X64-AVX2-LABEL: length256_eq:
5743 ; X64-AVX2: # %bb.0:
5744 ; X64-AVX2-NEXT: pushq %rax
5745 ; X64-AVX2-NEXT: movl $256, %edx # imm = 0x100
5746 ; X64-AVX2-NEXT: callq memcmp
5747 ; X64-AVX2-NEXT: testl %eax, %eax
5748 ; X64-AVX2-NEXT: setne %al
5749 ; X64-AVX2-NEXT: popq %rcx
5750 ; X64-AVX2-NEXT: retq
5752 ; X64-AVX512BW-LABEL: length256_eq:
5753 ; X64-AVX512BW: # %bb.0:
5754 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5755 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5756 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5757 ; X64-AVX512BW-NEXT: vmovdqu64 192(%rdi), %zmm3
5758 ; X64-AVX512BW-NEXT: vpcmpneqb 192(%rsi), %zmm3, %k0
5759 ; X64-AVX512BW-NEXT: vpcmpneqb 128(%rsi), %zmm2, %k1
5760 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5761 ; X64-AVX512BW-NEXT: vpcmpneqb 64(%rsi), %zmm1, %k1
5762 ; X64-AVX512BW-NEXT: vpcmpneqb (%rsi), %zmm0, %k2
5763 ; X64-AVX512BW-NEXT: korq %k1, %k2, %k1
5764 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
5765 ; X64-AVX512BW-NEXT: setne %al
5766 ; X64-AVX512BW-NEXT: vzeroupper
5767 ; X64-AVX512BW-NEXT: retq
5769 ; X64-AVX512F-LABEL: length256_eq:
5770 ; X64-AVX512F: # %bb.0:
5771 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5772 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5773 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5774 ; X64-AVX512F-NEXT: vmovdqu64 192(%rdi), %zmm3
5775 ; X64-AVX512F-NEXT: vpcmpneqd 192(%rsi), %zmm3, %k0
5776 ; X64-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5777 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5778 ; X64-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k1
5779 ; X64-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k2
5780 ; X64-AVX512F-NEXT: korw %k1, %k2, %k1
5781 ; X64-AVX512F-NEXT: kortestw %k0, %k1
5782 ; X64-AVX512F-NEXT: setne %al
5783 ; X64-AVX512F-NEXT: vzeroupper
5784 ; X64-AVX512F-NEXT: retq
5786 ; X64-MIC-AVX2-LABEL: length256_eq:
5787 ; X64-MIC-AVX2: # %bb.0:
5788 ; X64-MIC-AVX2-NEXT: pushq %rax
5789 ; X64-MIC-AVX2-NEXT: movl $256, %edx # imm = 0x100
5790 ; X64-MIC-AVX2-NEXT: callq memcmp
5791 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5792 ; X64-MIC-AVX2-NEXT: setne %al
5793 ; X64-MIC-AVX2-NEXT: popq %rcx
5794 ; X64-MIC-AVX2-NEXT: retq
5796 ; X64-MIC-AVX512F-LABEL: length256_eq:
5797 ; X64-MIC-AVX512F: # %bb.0:
5798 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5799 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5800 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5801 ; X64-MIC-AVX512F-NEXT: vmovdqu64 192(%rdi), %zmm3
5802 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 192(%rsi), %zmm3, %k0
5803 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 128(%rsi), %zmm2, %k1
5804 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5805 ; X64-MIC-AVX512F-NEXT: vpcmpneqd 64(%rsi), %zmm1, %k1
5806 ; X64-MIC-AVX512F-NEXT: vpcmpneqd (%rsi), %zmm0, %k2
5807 ; X64-MIC-AVX512F-NEXT: korw %k1, %k2, %k1
5808 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
5809 ; X64-MIC-AVX512F-NEXT: setne %al
5810 ; X64-MIC-AVX512F-NEXT: vzeroupper
5811 ; X64-MIC-AVX512F-NEXT: retq
5830 ; X64-LABEL: length256_lt:
5831 ; X64: # %bb.0:
5832 ; X64-NEXT: pushq %rax
5833 ; X64-NEXT: movl $256, %edx # imm = 0x100
5834 ; X64-NEXT: callq memcmp
5835 ; X64-NEXT: shrl $31, %eax
5836 ; X64-NEXT: # kill: def $al killed $al killed $eax
5837 ; X64-NEXT: popq %rcx
5838 ; X64-NEXT: retq
5857 ; X64-LABEL: length256_gt:
5858 ; X64: # %bb.0:
5859 ; X64-NEXT: pushq %rax
5860 ; X64-NEXT: movl $256, %edx # imm = 0x100
5861 ; X64-NEXT: callq memcmp
5862 ; X64-NEXT: testl %eax, %eax
5863 ; X64-NEXT: setg %al
5864 ; X64-NEXT: popq %rcx
5865 ; X64-NEXT: retq
5884 ; X64-SSE-LABEL: length256_eq_const:
5885 ; X64-SSE: # %bb.0:
5886 ; X64-SSE-NEXT: pushq %rax
5887 ; X64-SSE-NEXT: movl $.L.str, %esi
5888 ; X64-SSE-NEXT: movl $256, %edx # imm = 0x100
5889 ; X64-SSE-NEXT: callq memcmp
5890 ; X64-SSE-NEXT: testl %eax, %eax
5891 ; X64-SSE-NEXT: sete %al
5892 ; X64-SSE-NEXT: popq %rcx
5893 ; X64-SSE-NEXT: retq
5895 ; X64-AVX1-LABEL: length256_eq_const:
5896 ; X64-AVX1: # %bb.0:
5897 ; X64-AVX1-NEXT: pushq %rax
5898 ; X64-AVX1-NEXT: movl $.L.str, %esi
5899 ; X64-AVX1-NEXT: movl $256, %edx # imm = 0x100
5900 ; X64-AVX1-NEXT: callq memcmp
5901 ; X64-AVX1-NEXT: testl %eax, %eax
5902 ; X64-AVX1-NEXT: sete %al
5903 ; X64-AVX1-NEXT: popq %rcx
5904 ; X64-AVX1-NEXT: retq
5906 ; X64-AVX2-LABEL: length256_eq_const:
5907 ; X64-AVX2: # %bb.0:
5908 ; X64-AVX2-NEXT: pushq %rax
5909 ; X64-AVX2-NEXT: movl $.L.str, %esi
5910 ; X64-AVX2-NEXT: movl $256, %edx # imm = 0x100
5911 ; X64-AVX2-NEXT: callq memcmp
5912 ; X64-AVX2-NEXT: testl %eax, %eax
5913 ; X64-AVX2-NEXT: sete %al
5914 ; X64-AVX2-NEXT: popq %rcx
5915 ; X64-AVX2-NEXT: retq
5917 ; X64-AVX512BW-LABEL: length256_eq_const:
5918 ; X64-AVX512BW: # %bb.0:
5919 ; X64-AVX512BW-NEXT: vmovdqu64 (%rdi), %zmm0
5920 ; X64-AVX512BW-NEXT: vmovdqu64 64(%rdi), %zmm1
5921 ; X64-AVX512BW-NEXT: vmovdqu64 128(%rdi), %zmm2
5922 ; X64-AVX512BW-NEXT: vmovdqu64 192(%rdi), %zmm3
5923 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm3, %k0
5924 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm2, %k1
5925 ; X64-AVX512BW-NEXT: korq %k0, %k1, %k0
5926 ; X64-AVX512BW-NEXT: vpcmpneqb .L.str+{{.*}}(%rip), %zmm1, %k1
5927 ; X64-AVX512BW-NEXT: vpcmpneqb {{.*}}(%rip), %zmm0, %k2
5928 ; X64-AVX512BW-NEXT: korq %k1, %k2, %k1
5929 ; X64-AVX512BW-NEXT: kortestq %k0, %k1
5930 ; X64-AVX512BW-NEXT: sete %al
5931 ; X64-AVX512BW-NEXT: vzeroupper
5932 ; X64-AVX512BW-NEXT: retq
5934 ; X64-AVX512F-LABEL: length256_eq_const:
5935 ; X64-AVX512F: # %bb.0:
5936 ; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5937 ; X64-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5938 ; X64-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5939 ; X64-AVX512F-NEXT: vmovdqu64 192(%rdi), %zmm3
5940 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm3, %k0
5941 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5942 ; X64-AVX512F-NEXT: korw %k0, %k1, %k0
5943 ; X64-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k1
5944 ; X64-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k2
5945 ; X64-AVX512F-NEXT: korw %k1, %k2, %k1
5946 ; X64-AVX512F-NEXT: kortestw %k0, %k1
5947 ; X64-AVX512F-NEXT: sete %al
5948 ; X64-AVX512F-NEXT: vzeroupper
5949 ; X64-AVX512F-NEXT: retq
5951 ; X64-MIC-AVX2-LABEL: length256_eq_const:
5952 ; X64-MIC-AVX2: # %bb.0:
5953 ; X64-MIC-AVX2-NEXT: pushq %rax
5954 ; X64-MIC-AVX2-NEXT: movl $.L.str, %esi
5955 ; X64-MIC-AVX2-NEXT: movl $256, %edx # imm = 0x100
5956 ; X64-MIC-AVX2-NEXT: callq memcmp
5957 ; X64-MIC-AVX2-NEXT: testl %eax, %eax
5958 ; X64-MIC-AVX2-NEXT: sete %al
5959 ; X64-MIC-AVX2-NEXT: popq %rcx
5960 ; X64-MIC-AVX2-NEXT: retq
5962 ; X64-MIC-AVX512F-LABEL: length256_eq_const:
5963 ; X64-MIC-AVX512F: # %bb.0:
5964 ; X64-MIC-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0
5965 ; X64-MIC-AVX512F-NEXT: vmovdqu64 64(%rdi), %zmm1
5966 ; X64-MIC-AVX512F-NEXT: vmovdqu64 128(%rdi), %zmm2
5967 ; X64-MIC-AVX512F-NEXT: vmovdqu64 192(%rdi), %zmm3
5968 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm3, %k0
5969 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm2, %k1
5970 ; X64-MIC-AVX512F-NEXT: korw %k0, %k1, %k0
5971 ; X64-MIC-AVX512F-NEXT: vpcmpneqd .L.str+{{.*}}(%rip), %zmm1, %k1
5972 ; X64-MIC-AVX512F-NEXT: vpcmpneqd {{.*}}(%rip), %zmm0, %k2
5973 ; X64-MIC-AVX512F-NEXT: korw %k1, %k2, %k1
5974 ; X64-MIC-AVX512F-NEXT: kortestw %k0, %k1
5975 ; X64-MIC-AVX512F-NEXT: sete %al
5976 ; X64-MIC-AVX512F-NEXT: vzeroupper
5977 ; X64-MIC-AVX512F-NEXT: retq
5994 ; X64-LABEL: length384:
5995 ; X64: # %bb.0:
5996 ; X64-NEXT: movl $384, %edx # imm = 0x180
5997 ; X64-NEXT: jmp memcmp # TAILCALL
6015 ; X64-LABEL: length384_eq:
6016 ; X64: # %bb.0:
6017 ; X64-NEXT: pushq %rax
6018 ; X64-NEXT: movl $384, %edx # imm = 0x180
6019 ; X64-NEXT: callq memcmp
6020 ; X64-NEXT: testl %eax, %eax
6021 ; X64-NEXT: setne %al
6022 ; X64-NEXT: popq %rcx
6023 ; X64-NEXT: retq
6042 ; X64-LABEL: length384_lt:
6043 ; X64: # %bb.0:
6044 ; X64-NEXT: pushq %rax
6045 ; X64-NEXT: movl $384, %edx # imm = 0x180
6046 ; X64-NEXT: callq memcmp
6047 ; X64-NEXT: shrl $31, %eax
6048 ; X64-NEXT: # kill: def $al killed $al killed $eax
6049 ; X64-NEXT: popq %rcx
6050 ; X64-NEXT: retq
6069 ; X64-LABEL: length384_gt:
6070 ; X64: # %bb.0:
6071 ; X64-NEXT: pushq %rax
6072 ; X64-NEXT: movl $384, %edx # imm = 0x180
6073 ; X64-NEXT: callq memcmp
6074 ; X64-NEXT: testl %eax, %eax
6075 ; X64-NEXT: setg %al
6076 ; X64-NEXT: popq %rcx
6077 ; X64-NEXT: retq
6096 ; X64-LABEL: length384_eq_const:
6097 ; X64: # %bb.0:
6098 ; X64-NEXT: pushq %rax
6099 ; X64-NEXT: movl $.L.str, %esi
6100 ; X64-NEXT: movl $384, %edx # imm = 0x180
6101 ; X64-NEXT: callq memcmp
6102 ; X64-NEXT: testl %eax, %eax
6103 ; X64-NEXT: sete %al
6104 ; X64-NEXT: popq %rcx
6105 ; X64-NEXT: retq
6122 ; X64-LABEL: length511:
6123 ; X64: # %bb.0:
6124 ; X64-NEXT: movl $511, %edx # imm = 0x1FF
6125 ; X64-NEXT: jmp memcmp # TAILCALL
6143 ; X64-LABEL: length511_eq:
6144 ; X64: # %bb.0:
6145 ; X64-NEXT: pushq %rax
6146 ; X64-NEXT: movl $511, %edx # imm = 0x1FF
6147 ; X64-NEXT: callq memcmp
6148 ; X64-NEXT: testl %eax, %eax
6149 ; X64-NEXT: setne %al
6150 ; X64-NEXT: popq %rcx
6151 ; X64-NEXT: retq
6170 ; X64-LABEL: length511_lt:
6171 ; X64: # %bb.0:
6172 ; X64-NEXT: pushq %rax
6173 ; X64-NEXT: movl $511, %edx # imm = 0x1FF
6174 ; X64-NEXT: callq memcmp
6175 ; X64-NEXT: shrl $31, %eax
6176 ; X64-NEXT: # kill: def $al killed $al killed $eax
6177 ; X64-NEXT: popq %rcx
6178 ; X64-NEXT: retq
6197 ; X64-LABEL: length511_gt:
6198 ; X64: # %bb.0:
6199 ; X64-NEXT: pushq %rax
6200 ; X64-NEXT: movl $511, %edx # imm = 0x1FF
6201 ; X64-NEXT: callq memcmp
6202 ; X64-NEXT: testl %eax, %eax
6203 ; X64-NEXT: setg %al
6204 ; X64-NEXT: popq %rcx
6205 ; X64-NEXT: retq
6224 ; X64-LABEL: length511_eq_const:
6225 ; X64: # %bb.0:
6226 ; X64-NEXT: pushq %rax
6227 ; X64-NEXT: movl $.L.str, %esi
6228 ; X64-NEXT: movl $511, %edx # imm = 0x1FF
6229 ; X64-NEXT: callq memcmp
6230 ; X64-NEXT: testl %eax, %eax
6231 ; X64-NEXT: sete %al
6232 ; X64-NEXT: popq %rcx
6233 ; X64-NEXT: retq
6250 ; X64-LABEL: length512:
6251 ; X64: # %bb.0:
6252 ; X64-NEXT: movl $512, %edx # imm = 0x200
6253 ; X64-NEXT: jmp memcmp # TAILCALL
6271 ; X64-LABEL: length512_eq:
6272 ; X64: # %bb.0:
6273 ; X64-NEXT: pushq %rax
6274 ; X64-NEXT: movl $512, %edx # imm = 0x200
6275 ; X64-NEXT: callq memcmp
6276 ; X64-NEXT: testl %eax, %eax
6277 ; X64-NEXT: setne %al
6278 ; X64-NEXT: popq %rcx
6279 ; X64-NEXT: retq
6298 ; X64-LABEL: length512_lt:
6299 ; X64: # %bb.0:
6300 ; X64-NEXT: pushq %rax
6301 ; X64-NEXT: movl $512, %edx # imm = 0x200
6302 ; X64-NEXT: callq memcmp
6303 ; X64-NEXT: shrl $31, %eax
6304 ; X64-NEXT: # kill: def $al killed $al killed $eax
6305 ; X64-NEXT: popq %rcx
6306 ; X64-NEXT: retq
6325 ; X64-LABEL: length512_gt:
6326 ; X64: # %bb.0:
6327 ; X64-NEXT: pushq %rax
6328 ; X64-NEXT: movl $512, %edx # imm = 0x200
6329 ; X64-NEXT: callq memcmp
6330 ; X64-NEXT: testl %eax, %eax
6331 ; X64-NEXT: setg %al
6332 ; X64-NEXT: popq %rcx
6333 ; X64-NEXT: retq
6352 ; X64-LABEL: length512_eq_const:
6353 ; X64: # %bb.0:
6354 ; X64-NEXT: pushq %rax
6355 ; X64-NEXT: movl $.L.str, %esi
6356 ; X64-NEXT: movl $512, %edx # imm = 0x200
6357 ; X64-NEXT: callq memcmp
6358 ; X64-NEXT: testl %eax, %eax
6359 ; X64-NEXT: sete %al
6360 ; X64-NEXT: popq %rcx
6361 ; X64-NEXT: retq
6379 ; X64-LABEL: huge_length:
6380 ; X64: # %bb.0:
6381 ; X64-NEXT: movabsq $9223372036854775807, %rdx # imm = 0x7FFFFFFFFFFFFFFF
6382 ; X64-NEXT: jmp memcmp # TAILCALL
6400 ; X64-LABEL: huge_length_eq:
6401 ; X64: # %bb.0:
6402 ; X64-NEXT: pushq %rax
6403 ; X64-NEXT: movabsq $9223372036854775807, %rdx # imm = 0x7FFFFFFFFFFFFFFF
6404 ; X64-NEXT: callq memcmp
6405 ; X64-NEXT: testl %eax, %eax
6406 ; X64-NEXT: sete %al
6407 ; X64-NEXT: popq %rcx
6408 ; X64-NEXT: retq
6420 ; X64-LABEL: nonconst_length:
6421 ; X64: # %bb.0:
6422 ; X64-NEXT: jmp memcmp # TAILCALL
6440 ; X64-LABEL: nonconst_length_eq:
6441 ; X64: # %bb.0:
6442 ; X64-NEXT: pushq %rax
6443 ; X64-NEXT: callq memcmp
6444 ; X64-NEXT: testl %eax, %eax
6445 ; X64-NEXT: sete %al
6446 ; X64-NEXT: popq %rcx
6447 ; X64-NEXT: retq