llvm.org GIT mirror llvm / bd496c7
Revert r291645 "[DAGCombiner] Teach DAG combiner to fold (vselect (N0 xor AllOnes), N1, N2) -> (vselect N0, N2, N1). Only do this if the target indicates its vector boolean type is ZeroOrNegativeOneBooleanContent." Some test appears to be hanging on the build bots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291650 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 3 years ago
4 changed file(s) with 560 addition(s) and 348 deletion(s). Raw diff Collapse all Expand all
59655965 return CV;
59665966 }
59675967
5968 // Fold (vselect (N0 xor AllOnes), N1, N2) -> (vselect N0, N2, N1)
5969 if (N0.getOpcode() == ISD::XOR &&
5970 ISD::isBuildVectorAllOnes(N0.getOperand(1).getNode()) &&
5971 TLI.getBooleanContents(N0.getValueType()) ==
5972 TargetLowering::ZeroOrNegativeOneBooleanContent) {
5973 EVT VT = N->getValueType(0);
5974 return DAG.getNode(ISD::VSELECT, DL, VT, N0.getOperand(0), N2, N1);
5975 }
5976
59775968 return SDValue();
59785969 }
59795970
422422 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
423423 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
424424 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
425 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
426 ; SSE41-NEXT: pand %xmm5, %xmm3
427 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
428 ; SSE41-NEXT: por %xmm3, %xmm0
429 ; SSE41-NEXT: blendvpd %xmm1, %xmm2
430 ; SSE41-NEXT: movapd %xmm2, %xmm0
425 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
426 ; SSE41-NEXT: pand %xmm5, %xmm0
427 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
428 ; SSE41-NEXT: por %xmm0, %xmm3
429 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
430 ; SSE41-NEXT: pxor %xmm3, %xmm0
431 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
432 ; SSE41-NEXT: movapd %xmm1, %xmm0
431433 ; SSE41-NEXT: retq
432434 ;
433435 ; SSE42-LABEL: max_ge_v2i64:
434436 ; SSE42: # BB#0:
435437 ; SSE42-NEXT: movdqa %xmm0, %xmm2
436 ; SSE42-NEXT: movdqa %xmm1, %xmm0
437 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
438 ; SSE42-NEXT: blendvpd %xmm1, %xmm2
439 ; SSE42-NEXT: movapd %xmm2, %xmm0
438 ; SSE42-NEXT: movdqa %xmm1, %xmm3
439 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm3
440 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
441 ; SSE42-NEXT: pxor %xmm3, %xmm0
442 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
443 ; SSE42-NEXT: movapd %xmm1, %xmm0
440444 ; SSE42-NEXT: retq
441445 ;
442446 ; AVX-LABEL: max_ge_v2i64:
443447 ; AVX: # BB#0:
444448 ; AVX-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
445 ; AVX-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
449 ; AVX-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
450 ; AVX-NEXT: vpxor %xmm3, %xmm2, %xmm2
451 ; AVX-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
446452 ; AVX-NEXT: retq
447453 %1 = icmp sge <2 x i64> %a, %b
448454 %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b
492498 ;
493499 ; SSE41-LABEL: max_ge_v4i64:
494500 ; SSE41: # BB#0:
495 ; SSE41-NEXT: movdqa %xmm0, %xmm4
501 ; SSE41-NEXT: movdqa %xmm0, %xmm8
496502 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
497503 ; SSE41-NEXT: movdqa %xmm1, %xmm5
498504 ; SSE41-NEXT: pxor %xmm0, %xmm5
500506 ; SSE41-NEXT: pxor %xmm0, %xmm6
501507 ; SSE41-NEXT: movdqa %xmm6, %xmm7
502508 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
503 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
509 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
504510 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
505511 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
506 ; SSE41-NEXT: pand %xmm8, %xmm6
512 ; SSE41-NEXT: pand %xmm4, %xmm6
507513 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
508514 ; SSE41-NEXT: por %xmm6, %xmm5
509 ; SSE41-NEXT: movdqa %xmm4, %xmm6
515 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
516 ; SSE41-NEXT: pxor %xmm9, %xmm5
517 ; SSE41-NEXT: movdqa %xmm8, %xmm6
510518 ; SSE41-NEXT: pxor %xmm0, %xmm6
511519 ; SSE41-NEXT: pxor %xmm2, %xmm0
512520 ; SSE41-NEXT: movdqa %xmm0, %xmm7
513521 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
514 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
522 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
515523 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
516524 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
517 ; SSE41-NEXT: pand %xmm8, %xmm6
525 ; SSE41-NEXT: pand %xmm4, %xmm6
518526 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
519527 ; SSE41-NEXT: por %xmm6, %xmm0
520 ; SSE41-NEXT: blendvpd %xmm2, %xmm4
528 ; SSE41-NEXT: pxor %xmm9, %xmm0
529 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
521530 ; SSE41-NEXT: movdqa %xmm5, %xmm0
522 ; SSE41-NEXT: blendvpd %xmm3, %xmm1
523 ; SSE41-NEXT: movapd %xmm4, %xmm0
531 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
532 ; SSE41-NEXT: movapd %xmm2, %xmm0
533 ; SSE41-NEXT: movapd %xmm3, %xmm1
524534 ; SSE41-NEXT: retq
525535 ;
526536 ; SSE42-LABEL: max_ge_v4i64:
528538 ; SSE42-NEXT: movdqa %xmm0, %xmm4
529539 ; SSE42-NEXT: movdqa %xmm3, %xmm5
530540 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm5
531 ; SSE42-NEXT: movdqa %xmm2, %xmm0
532 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm0
533 ; SSE42-NEXT: blendvpd %xmm2, %xmm4
541 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
542 ; SSE42-NEXT: pxor %xmm0, %xmm5
543 ; SSE42-NEXT: movdqa %xmm2, %xmm6
544 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm6
545 ; SSE42-NEXT: pxor %xmm6, %xmm0
546 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
534547 ; SSE42-NEXT: movdqa %xmm5, %xmm0
535 ; SSE42-NEXT: blendvpd %xmm3, %xmm1
536 ; SSE42-NEXT: movapd %xmm4, %xmm0
548 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
549 ; SSE42-NEXT: movapd %xmm2, %xmm0
550 ; SSE42-NEXT: movapd %xmm3, %xmm1
537551 ; SSE42-NEXT: retq
538552 ;
539553 ; AVX1-LABEL: max_ge_v4i64:
552566 ; AVX2-LABEL: max_ge_v4i64:
553567 ; AVX2: # BB#0:
554568 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
555 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
569 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
570 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
571 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
556572 ; AVX2-NEXT: retq
557573 ;
558574 ; AVX512-LABEL: max_ge_v4i64:
559575 ; AVX512: # BB#0:
560576 ; AVX512-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
561 ; AVX512-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
577 ; AVX512-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
578 ; AVX512-NEXT: vpxor %ymm3, %ymm2, %ymm2
579 ; AVX512-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
562580 ; AVX512-NEXT: retq
563581 %1 = icmp sge <4 x i64> %a, %b
564582 %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b
11981216 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
11991217 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
12001218 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
1201 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
1202 ; SSE41-NEXT: pand %xmm5, %xmm3
1203 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
1204 ; SSE41-NEXT: por %xmm3, %xmm0
1205 ; SSE41-NEXT: blendvpd %xmm1, %xmm2
1206 ; SSE41-NEXT: movapd %xmm2, %xmm0
1219 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1220 ; SSE41-NEXT: pand %xmm5, %xmm0
1221 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1222 ; SSE41-NEXT: por %xmm0, %xmm3
1223 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
1224 ; SSE41-NEXT: pxor %xmm3, %xmm0
1225 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1226 ; SSE41-NEXT: movapd %xmm1, %xmm0
12071227 ; SSE41-NEXT: retq
12081228 ;
12091229 ; SSE42-LABEL: min_le_v2i64:
12101230 ; SSE42: # BB#0:
12111231 ; SSE42-NEXT: movdqa %xmm0, %xmm2
12121232 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0
1213 ; SSE42-NEXT: blendvpd %xmm1, %xmm2
1214 ; SSE42-NEXT: movapd %xmm2, %xmm0
1233 ; SSE42-NEXT: pcmpeqd %xmm3, %xmm3
1234 ; SSE42-NEXT: pxor %xmm3, %xmm0
1235 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
1236 ; SSE42-NEXT: movapd %xmm1, %xmm0
12151237 ; SSE42-NEXT: retq
12161238 ;
12171239 ; AVX-LABEL: min_le_v2i64:
12181240 ; AVX: # BB#0:
12191241 ; AVX-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
1220 ; AVX-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1242 ; AVX-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
1243 ; AVX-NEXT: vpxor %xmm3, %xmm2, %xmm2
1244 ; AVX-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
12211245 ; AVX-NEXT: retq
12221246 %1 = icmp sle <2 x i64> %a, %b
12231247 %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b
12671291 ;
12681292 ; SSE41-LABEL: min_le_v4i64:
12691293 ; SSE41: # BB#0:
1270 ; SSE41-NEXT: movdqa %xmm0, %xmm4
1294 ; SSE41-NEXT: movdqa %xmm0, %xmm8
12711295 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,0,2147483648,0]
12721296 ; SSE41-NEXT: movdqa %xmm3, %xmm5
12731297 ; SSE41-NEXT: pxor %xmm0, %xmm5
12751299 ; SSE41-NEXT: pxor %xmm0, %xmm6
12761300 ; SSE41-NEXT: movdqa %xmm6, %xmm7
12771301 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
1278 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
1302 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
12791303 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
12801304 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1281 ; SSE41-NEXT: pand %xmm8, %xmm6
1305 ; SSE41-NEXT: pand %xmm4, %xmm6
12821306 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
12831307 ; SSE41-NEXT: por %xmm6, %xmm5
1308 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
1309 ; SSE41-NEXT: pxor %xmm9, %xmm5
12841310 ; SSE41-NEXT: movdqa %xmm2, %xmm6
12851311 ; SSE41-NEXT: pxor %xmm0, %xmm6
1286 ; SSE41-NEXT: pxor %xmm4, %xmm0
1312 ; SSE41-NEXT: pxor %xmm8, %xmm0
12871313 ; SSE41-NEXT: movdqa %xmm0, %xmm7
12881314 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
1289 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
1315 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
12901316 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
12911317 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
1292 ; SSE41-NEXT: pand %xmm8, %xmm6
1318 ; SSE41-NEXT: pand %xmm4, %xmm6
12931319 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
12941320 ; SSE41-NEXT: por %xmm6, %xmm0
1295 ; SSE41-NEXT: blendvpd %xmm2, %xmm4
1321 ; SSE41-NEXT: pxor %xmm9, %xmm0
1322 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
12961323 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1297 ; SSE41-NEXT: blendvpd %xmm3, %xmm1
1298 ; SSE41-NEXT: movapd %xmm4, %xmm0
1324 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1325 ; SSE41-NEXT: movapd %xmm2, %xmm0
1326 ; SSE41-NEXT: movapd %xmm3, %xmm1
12991327 ; SSE41-NEXT: retq
13001328 ;
13011329 ; SSE42-LABEL: min_le_v4i64:
13031331 ; SSE42-NEXT: movdqa %xmm0, %xmm4
13041332 ; SSE42-NEXT: movdqa %xmm1, %xmm5
13051333 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm5
1334 ; SSE42-NEXT: pcmpeqd %xmm6, %xmm6
1335 ; SSE42-NEXT: pxor %xmm6, %xmm5
13061336 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
1307 ; SSE42-NEXT: blendvpd %xmm2, %xmm4
1337 ; SSE42-NEXT: pxor %xmm6, %xmm0
1338 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
13081339 ; SSE42-NEXT: movdqa %xmm5, %xmm0
1309 ; SSE42-NEXT: blendvpd %xmm3, %xmm1
1310 ; SSE42-NEXT: movapd %xmm4, %xmm0
1340 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
1341 ; SSE42-NEXT: movapd %xmm2, %xmm0
1342 ; SSE42-NEXT: movapd %xmm3, %xmm1
13111343 ; SSE42-NEXT: retq
13121344 ;
13131345 ; AVX1-LABEL: min_le_v4i64:
13261358 ; AVX2-LABEL: min_le_v4i64:
13271359 ; AVX2: # BB#0:
13281360 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
1329 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
1361 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
1362 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
1363 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
13301364 ; AVX2-NEXT: retq
13311365 ;
13321366 ; AVX512-LABEL: min_le_v4i64:
13331367 ; AVX512: # BB#0:
13341368 ; AVX512-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
1335 ; AVX512-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
1369 ; AVX512-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
1370 ; AVX512-NEXT: vpxor %ymm3, %ymm2, %ymm2
1371 ; AVX512-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
13361372 ; AVX512-NEXT: retq
13371373 %1 = icmp sle <4 x i64> %a, %b
13381374 %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b
461461 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
462462 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
463463 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
464 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
465 ; SSE41-NEXT: pand %xmm5, %xmm3
466 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
467 ; SSE41-NEXT: por %xmm3, %xmm0
468 ; SSE41-NEXT: blendvpd %xmm1, %xmm2
469 ; SSE41-NEXT: movapd %xmm2, %xmm0
464 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
465 ; SSE41-NEXT: pand %xmm5, %xmm0
466 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
467 ; SSE41-NEXT: por %xmm0, %xmm3
468 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
469 ; SSE41-NEXT: pxor %xmm3, %xmm0
470 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
471 ; SSE41-NEXT: movapd %xmm1, %xmm0
470472 ; SSE41-NEXT: retq
471473 ;
472474 ; SSE42-LABEL: max_ge_v2i64:
473475 ; SSE42: # BB#0:
474476 ; SSE42-NEXT: movdqa %xmm0, %xmm2
475 ; SSE42-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
476 ; SSE42-NEXT: movdqa %xmm2, %xmm3
477 ; SSE42-NEXT: pxor %xmm0, %xmm3
478 ; SSE42-NEXT: pxor %xmm1, %xmm0
479 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0
480 ; SSE42-NEXT: blendvpd %xmm1, %xmm2
481 ; SSE42-NEXT: movapd %xmm2, %xmm0
477 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
478 ; SSE42-NEXT: pxor %xmm3, %xmm0
479 ; SSE42-NEXT: pxor %xmm1, %xmm3
480 ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3
481 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
482 ; SSE42-NEXT: pxor %xmm3, %xmm0
483 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
484 ; SSE42-NEXT: movapd %xmm1, %xmm0
482485 ; SSE42-NEXT: retq
483486 ;
484487 ; AVX-LABEL: max_ge_v2i64:
487490 ; AVX-NEXT: vpxor %xmm2, %xmm0, %xmm3
488491 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm2
489492 ; AVX-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
490 ; AVX-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
493 ; AVX-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
494 ; AVX-NEXT: vpxor %xmm3, %xmm2, %xmm2
495 ; AVX-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
491496 ; AVX-NEXT: retq
492497 %1 = icmp uge <2 x i64> %a, %b
493498 %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b
537542 ;
538543 ; SSE41-LABEL: max_ge_v4i64:
539544 ; SSE41: # BB#0:
540 ; SSE41-NEXT: movdqa %xmm0, %xmm4
545 ; SSE41-NEXT: movdqa %xmm0, %xmm8
541546 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
542547 ; SSE41-NEXT: movdqa %xmm1, %xmm5
543548 ; SSE41-NEXT: pxor %xmm0, %xmm5
545550 ; SSE41-NEXT: pxor %xmm0, %xmm6
546551 ; SSE41-NEXT: movdqa %xmm6, %xmm7
547552 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
548 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
553 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
549554 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
550555 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
551 ; SSE41-NEXT: pand %xmm8, %xmm6
556 ; SSE41-NEXT: pand %xmm4, %xmm6
552557 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
553558 ; SSE41-NEXT: por %xmm6, %xmm5
554 ; SSE41-NEXT: movdqa %xmm4, %xmm6
559 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
560 ; SSE41-NEXT: pxor %xmm9, %xmm5
561 ; SSE41-NEXT: movdqa %xmm8, %xmm6
555562 ; SSE41-NEXT: pxor %xmm0, %xmm6
556563 ; SSE41-NEXT: pxor %xmm2, %xmm0
557564 ; SSE41-NEXT: movdqa %xmm0, %xmm7
558565 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
559 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
566 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
560567 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
561568 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
562 ; SSE41-NEXT: pand %xmm8, %xmm6
569 ; SSE41-NEXT: pand %xmm4, %xmm6
563570 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
564571 ; SSE41-NEXT: por %xmm6, %xmm0
565 ; SSE41-NEXT: blendvpd %xmm2, %xmm4
572 ; SSE41-NEXT: pxor %xmm9, %xmm0
573 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
566574 ; SSE41-NEXT: movdqa %xmm5, %xmm0
567 ; SSE41-NEXT: blendvpd %xmm3, %xmm1
568 ; SSE41-NEXT: movapd %xmm4, %xmm0
575 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
576 ; SSE41-NEXT: movapd %xmm2, %xmm0
577 ; SSE41-NEXT: movapd %xmm3, %xmm1
569578 ; SSE41-NEXT: retq
570579 ;
571580 ; SSE42-LABEL: max_ge_v4i64:
577586 ; SSE42-NEXT: movdqa %xmm3, %xmm5
578587 ; SSE42-NEXT: pxor %xmm0, %xmm5
579588 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm5
580 ; SSE42-NEXT: movdqa %xmm4, %xmm6
581 ; SSE42-NEXT: pxor %xmm0, %xmm6
589 ; SSE42-NEXT: pcmpeqd %xmm6, %xmm6
590 ; SSE42-NEXT: pxor %xmm6, %xmm5
591 ; SSE42-NEXT: movdqa %xmm4, %xmm7
592 ; SSE42-NEXT: pxor %xmm0, %xmm7
582593 ; SSE42-NEXT: pxor %xmm2, %xmm0
583 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0
584 ; SSE42-NEXT: blendvpd %xmm2, %xmm4
594 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0
595 ; SSE42-NEXT: pxor %xmm6, %xmm0
596 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
585597 ; SSE42-NEXT: movdqa %xmm5, %xmm0
586 ; SSE42-NEXT: blendvpd %xmm3, %xmm1
587 ; SSE42-NEXT: movapd %xmm4, %xmm0
598 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
599 ; SSE42-NEXT: movapd %xmm2, %xmm0
600 ; SSE42-NEXT: movapd %xmm3, %xmm1
588601 ; SSE42-NEXT: retq
589602 ;
590603 ; AVX1-LABEL: max_ge_v4i64:
611624 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm3
612625 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm2
613626 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
614 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
627 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
628 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
629 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
615630 ; AVX2-NEXT: retq
616631 ;
617632 ; AVX512-LABEL: max_ge_v4i64:
620635 ; AVX512-NEXT: vpxor %ymm2, %ymm0, %ymm3
621636 ; AVX512-NEXT: vpxor %ymm2, %ymm1, %ymm2
622637 ; AVX512-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
623 ; AVX512-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
638 ; AVX512-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
639 ; AVX512-NEXT: vpxor %ymm3, %ymm2, %ymm2
640 ; AVX512-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
624641 ; AVX512-NEXT: retq
625642 %1 = icmp uge <4 x i64> %a, %b
626643 %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b
13061323 ; SSE41-NEXT: pcmpgtd %xmm3, %xmm4
13071324 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]
13081325 ; SSE41-NEXT: pcmpeqd %xmm3, %xmm0
1309 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
1310 ; SSE41-NEXT: pand %xmm5, %xmm3
1311 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
1312 ; SSE41-NEXT: por %xmm3, %xmm0
1313 ; SSE41-NEXT: blendvpd %xmm1, %xmm2
1314 ; SSE41-NEXT: movapd %xmm2, %xmm0
1326 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1327 ; SSE41-NEXT: pand %xmm5, %xmm0
1328 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]
1329 ; SSE41-NEXT: por %xmm0, %xmm3
1330 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
1331 ; SSE41-NEXT: pxor %xmm3, %xmm0
1332 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1333 ; SSE41-NEXT: movapd %xmm1, %xmm0
13151334 ; SSE41-NEXT: retq
13161335 ;
13171336 ; SSE42-LABEL: min_le_v2i64:
13181337 ; SSE42: # BB#0:
13191338 ; SSE42-NEXT: movdqa %xmm0, %xmm2
1320 ; SSE42-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
1321 ; SSE42-NEXT: movdqa %xmm1, %xmm3
1322 ; SSE42-NEXT: pxor %xmm0, %xmm3
1323 ; SSE42-NEXT: pxor %xmm2, %xmm0
1324 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0
1325 ; SSE42-NEXT: blendvpd %xmm1, %xmm2
1326 ; SSE42-NEXT: movapd %xmm2, %xmm0
1339 ; SSE42-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
1340 ; SSE42-NEXT: movdqa %xmm1, %xmm0
1341 ; SSE42-NEXT: pxor %xmm3, %xmm0
1342 ; SSE42-NEXT: pxor %xmm2, %xmm3
1343 ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3
1344 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
1345 ; SSE42-NEXT: pxor %xmm3, %xmm0
1346 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
1347 ; SSE42-NEXT: movapd %xmm1, %xmm0
13271348 ; SSE42-NEXT: retq
13281349 ;
13291350 ; AVX-LABEL: min_le_v2i64:
13321353 ; AVX-NEXT: vpxor %xmm2, %xmm1, %xmm3
13331354 ; AVX-NEXT: vpxor %xmm2, %xmm0, %xmm2
13341355 ; AVX-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
1335 ; AVX-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1356 ; AVX-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
1357 ; AVX-NEXT: vpxor %xmm3, %xmm2, %xmm2
1358 ; AVX-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
13361359 ; AVX-NEXT: retq
13371360 %1 = icmp ule <2 x i64> %a, %b
13381361 %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b
13821405 ;
13831406 ; SSE41-LABEL: min_le_v4i64:
13841407 ; SSE41: # BB#0:
1385 ; SSE41-NEXT: movdqa %xmm0, %xmm4
1408 ; SSE41-NEXT: movdqa %xmm0, %xmm8
13861409 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [2147483648,2147483648,2147483648,2147483648]
13871410 ; SSE41-NEXT: movdqa %xmm3, %xmm5
13881411 ; SSE41-NEXT: pxor %xmm0, %xmm5
13901413 ; SSE41-NEXT: pxor %xmm0, %xmm6
13911414 ; SSE41-NEXT: movdqa %xmm6, %xmm7
13921415 ; SSE41-NEXT: pcmpgtd %xmm5, %xmm7
1393 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
1416 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
13941417 ; SSE41-NEXT: pcmpeqd %xmm5, %xmm6
13951418 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]
1396 ; SSE41-NEXT: pand %xmm8, %xmm6
1419 ; SSE41-NEXT: pand %xmm4, %xmm6
13971420 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]
13981421 ; SSE41-NEXT: por %xmm6, %xmm5
1422 ; SSE41-NEXT: pcmpeqd %xmm9, %xmm9
1423 ; SSE41-NEXT: pxor %xmm9, %xmm5
13991424 ; SSE41-NEXT: movdqa %xmm2, %xmm6
14001425 ; SSE41-NEXT: pxor %xmm0, %xmm6
1401 ; SSE41-NEXT: pxor %xmm4, %xmm0
1426 ; SSE41-NEXT: pxor %xmm8, %xmm0
14021427 ; SSE41-NEXT: movdqa %xmm0, %xmm7
14031428 ; SSE41-NEXT: pcmpgtd %xmm6, %xmm7
1404 ; SSE41-NEXT: pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]
1429 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm7[0,0,2,2]
14051430 ; SSE41-NEXT: pcmpeqd %xmm6, %xmm0
14061431 ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm0[1,1,3,3]
1407 ; SSE41-NEXT: pand %xmm8, %xmm6
1432 ; SSE41-NEXT: pand %xmm4, %xmm6
14081433 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
14091434 ; SSE41-NEXT: por %xmm6, %xmm0
1410 ; SSE41-NEXT: blendvpd %xmm2, %xmm4
1435 ; SSE41-NEXT: pxor %xmm9, %xmm0
1436 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
14111437 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1412 ; SSE41-NEXT: blendvpd %xmm3, %xmm1
1413 ; SSE41-NEXT: movapd %xmm4, %xmm0
1438 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1439 ; SSE41-NEXT: movapd %xmm2, %xmm0
1440 ; SSE41-NEXT: movapd %xmm3, %xmm1
14141441 ; SSE41-NEXT: retq
14151442 ;
14161443 ; SSE42-LABEL: min_le_v4i64:
14221449 ; SSE42-NEXT: movdqa %xmm1, %xmm5
14231450 ; SSE42-NEXT: pxor %xmm0, %xmm5
14241451 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm5
1425 ; SSE42-NEXT: movdqa %xmm2, %xmm6
1426 ; SSE42-NEXT: pxor %xmm0, %xmm6
1452 ; SSE42-NEXT: pcmpeqd %xmm6, %xmm6
1453 ; SSE42-NEXT: pxor %xmm6, %xmm5
1454 ; SSE42-NEXT: movdqa %xmm2, %xmm7
1455 ; SSE42-NEXT: pxor %xmm0, %xmm7
14271456 ; SSE42-NEXT: pxor %xmm4, %xmm0
1428 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0
1429 ; SSE42-NEXT: blendvpd %xmm2, %xmm4
1457 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0
1458 ; SSE42-NEXT: pxor %xmm6, %xmm0
1459 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
14301460 ; SSE42-NEXT: movdqa %xmm5, %xmm0
1431 ; SSE42-NEXT: blendvpd %xmm3, %xmm1
1432 ; SSE42-NEXT: movapd %xmm4, %xmm0
1461 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
1462 ; SSE42-NEXT: movapd %xmm2, %xmm0
1463 ; SSE42-NEXT: movapd %xmm3, %xmm1
14331464 ; SSE42-NEXT: retq
14341465 ;
14351466 ; AVX1-LABEL: min_le_v4i64:
14561487 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm3
14571488 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm2
14581489 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
1459 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
1490 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
1491 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
1492 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
14601493 ; AVX2-NEXT: retq
14611494 ;
14621495 ; AVX512-LABEL: min_le_v4i64:
14651498 ; AVX512-NEXT: vpxor %ymm2, %ymm1, %ymm3
14661499 ; AVX512-NEXT: vpxor %ymm2, %ymm0, %ymm2
14671500 ; AVX512-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
1468 ; AVX512-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
1501 ; AVX512-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
1502 ; AVX512-NEXT: vpxor %ymm3, %ymm2, %ymm2
1503 ; AVX512-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
14691504 ; AVX512-NEXT: retq
14701505 %1 = icmp ule <4 x i64> %a, %b
14711506 %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b
49724972 ; SSE4-NEXT: movdqa %xmm0, %xmm8
49734973 ; SSE4-NEXT: movdqa %xmm3, %xmm9
49744974 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm9
4975 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
4976 ; SSE4-NEXT: pxor %xmm12, %xmm9
49754977 ; SSE4-NEXT: movdqa %xmm2, %xmm10
49764978 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm10
4979 ; SSE4-NEXT: pxor %xmm12, %xmm10
49774980 ; SSE4-NEXT: movdqa %xmm1, %xmm11
49784981 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11
4982 ; SSE4-NEXT: pxor %xmm12, %xmm11
49794983 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
4980 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
4984 ; SSE4-NEXT: pxor %xmm12, %xmm0
4985 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
49814986 ; SSE4-NEXT: movdqa %xmm11, %xmm0
4982 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
4987 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
49834988 ; SSE4-NEXT: movdqa %xmm10, %xmm0
4984 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
4989 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
49854990 ; SSE4-NEXT: movdqa %xmm9, %xmm0
4986 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
4987 ; SSE4-NEXT: movapd %xmm8, %xmm0
4991 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
4992 ; SSE4-NEXT: movapd %xmm4, %xmm0
4993 ; SSE4-NEXT: movapd %xmm5, %xmm1
4994 ; SSE4-NEXT: movapd %xmm6, %xmm2
4995 ; SSE4-NEXT: movapd %xmm7, %xmm3
49884996 ; SSE4-NEXT: retq
49894997 ;
49904998 ; AVX1-LABEL: test122:
50115019 ; AVX2-LABEL: test122:
50125020 ; AVX2: # BB#0: # %entry
50135021 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm4
5014 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm5
5015 ; AVX2-NEXT: vblendvpd %ymm5, %ymm2, %ymm0, %ymm0
5016 ; AVX2-NEXT: vblendvpd %ymm4, %ymm3, %ymm1, %ymm1
5022 ; AVX2-NEXT: vpcmpeqd %ymm5, %ymm5, %ymm5
5023 ; AVX2-NEXT: vpxor %ymm5, %ymm4, %ymm4
5024 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm6
5025 ; AVX2-NEXT: vpxor %ymm5, %ymm6, %ymm5
5026 ; AVX2-NEXT: vblendvpd %ymm5, %ymm0, %ymm2, %ymm0
5027 ; AVX2-NEXT: vblendvpd %ymm4, %ymm1, %ymm3, %ymm1
50175028 ; AVX2-NEXT: retq
50185029 ;
50195030 ; AVX512F-LABEL: test122:
52365247 ; SSE4-NEXT: movdqa %xmm0, %xmm8
52375248 ; SSE4-NEXT: movdqa %xmm7, %xmm9
52385249 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm9
5250 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
5251 ; SSE4-NEXT: pxor %xmm0, %xmm9
52395252 ; SSE4-NEXT: movdqa %xmm6, %xmm10
52405253 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm10
5254 ; SSE4-NEXT: pxor %xmm0, %xmm10
52415255 ; SSE4-NEXT: movdqa %xmm5, %xmm11
52425256 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11
5243 ; SSE4-NEXT: movdqa %xmm4, %xmm0
5244 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0
5245 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
5257 ; SSE4-NEXT: pxor %xmm0, %xmm11
5258 ; SSE4-NEXT: movdqa %xmm4, %xmm12
5259 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12
5260 ; SSE4-NEXT: pxor %xmm12, %xmm0
5261 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
52465262 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5247 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
5263 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
52485264 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5249 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
5265 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
52505266 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5251 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
5252 ; SSE4-NEXT: movapd %xmm8, %xmm0
5267 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5268 ; SSE4-NEXT: movapd %xmm4, %xmm0
5269 ; SSE4-NEXT: movapd %xmm5, %xmm1
5270 ; SSE4-NEXT: movapd %xmm6, %xmm2
5271 ; SSE4-NEXT: movapd %xmm7, %xmm3
52535272 ; SSE4-NEXT: retq
52545273 ;
52555274 ; AVX1-LABEL: test124:
52765295 ; AVX2-LABEL: test124:
52775296 ; AVX2: # BB#0: # %entry
52785297 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm3, %ymm4
5279 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm2, %ymm5
5280 ; AVX2-NEXT: vblendvpd %ymm5, %ymm2, %ymm0, %ymm0
5281 ; AVX2-NEXT: vblendvpd %ymm4, %ymm3, %ymm1, %ymm1
5298 ; AVX2-NEXT: vpcmpeqd %ymm5, %ymm5, %ymm5
5299 ; AVX2-NEXT: vpxor %ymm5, %ymm4, %ymm4
5300 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm2, %ymm6
5301 ; AVX2-NEXT: vpxor %ymm5, %ymm6, %ymm5
5302 ; AVX2-NEXT: vblendvpd %ymm5, %ymm0, %ymm2, %ymm0
5303 ; AVX2-NEXT: vblendvpd %ymm4, %ymm1, %ymm3, %ymm1
52825304 ; AVX2-NEXT: retq
52835305 ;
52845306 ; AVX512F-LABEL: test124:
55245546 ;
55255547 ; SSE4-LABEL: test126:
55265548 ; SSE4: # BB#0: # %entry
5527 ; SSE4-NEXT: movdqa %xmm0, %xmm8
5549 ; SSE4-NEXT: movdqa %xmm0, %xmm9
55285550 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
55295551 ; SSE4-NEXT: movdqa %xmm7, %xmm10
55305552 ; SSE4-NEXT: pxor %xmm0, %xmm10
5531 ; SSE4-NEXT: movdqa %xmm3, %xmm9
5532 ; SSE4-NEXT: pxor %xmm0, %xmm9
5533 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm9
5553 ; SSE4-NEXT: movdqa %xmm3, %xmm8
5554 ; SSE4-NEXT: pxor %xmm0, %xmm8
5555 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm8
5556 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
5557 ; SSE4-NEXT: pxor %xmm12, %xmm8
55345558 ; SSE4-NEXT: movdqa %xmm6, %xmm11
55355559 ; SSE4-NEXT: pxor %xmm0, %xmm11
55365560 ; SSE4-NEXT: movdqa %xmm2, %xmm10
55375561 ; SSE4-NEXT: pxor %xmm0, %xmm10
55385562 ; SSE4-NEXT: pcmpgtq %xmm11, %xmm10
5539 ; SSE4-NEXT: movdqa %xmm5, %xmm12
5540 ; SSE4-NEXT: pxor %xmm0, %xmm12
5563 ; SSE4-NEXT: pxor %xmm12, %xmm10
5564 ; SSE4-NEXT: movdqa %xmm5, %xmm13
5565 ; SSE4-NEXT: pxor %xmm0, %xmm13
55415566 ; SSE4-NEXT: movdqa %xmm1, %xmm11
55425567 ; SSE4-NEXT: pxor %xmm0, %xmm11
5543 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm11
5544 ; SSE4-NEXT: movdqa %xmm4, %xmm12
5545 ; SSE4-NEXT: pxor %xmm0, %xmm12
5546 ; SSE4-NEXT: pxor %xmm8, %xmm0
5547 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
5548 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
5568 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm11
5569 ; SSE4-NEXT: pxor %xmm12, %xmm11
5570 ; SSE4-NEXT: movdqa %xmm4, %xmm13
5571 ; SSE4-NEXT: pxor %xmm0, %xmm13
5572 ; SSE4-NEXT: pxor %xmm9, %xmm0
5573 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
5574 ; SSE4-NEXT: pxor %xmm12, %xmm0
5575 ; SSE4-NEXT: blendvpd %xmm9, %xmm4
55495576 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5550 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
5577 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
55515578 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5552 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
5553 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5554 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
5555 ; SSE4-NEXT: movapd %xmm8, %xmm0
5579 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5580 ; SSE4-NEXT: movdqa %xmm8, %xmm0
5581 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5582 ; SSE4-NEXT: movapd %xmm4, %xmm0
5583 ; SSE4-NEXT: movapd %xmm5, %xmm1
5584 ; SSE4-NEXT: movapd %xmm6, %xmm2
5585 ; SSE4-NEXT: movapd %xmm7, %xmm3
55565586 ; SSE4-NEXT: retq
55575587 ;
55585588 ; AVX1-LABEL: test126:
55915621 ; AVX2-NEXT: vpxor %ymm4, %ymm3, %ymm5
55925622 ; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm6
55935623 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm6, %ymm5
5594 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm6
5624 ; AVX2-NEXT: vpcmpeqd %ymm6, %ymm6, %ymm6
5625 ; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5
5626 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm7
55955627 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm4
5596 ; AVX2-NEXT: vpcmpgtq %ymm6, %ymm4, %ymm4
5597 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0
5598 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm1, %ymm1
5628 ; AVX2-NEXT: vpcmpgtq %ymm7, %ymm4, %ymm4
5629 ; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm4
5630 ; AVX2-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
5631 ; AVX2-NEXT: vblendvpd %ymm5, %ymm1, %ymm3, %ymm1
55995632 ; AVX2-NEXT: retq
56005633 ;
56015634 ; AVX512F-LABEL: test126:
58425875 ;
58435876 ; SSE4-LABEL: test128:
58445877 ; SSE4: # BB#0: # %entry
5845 ; SSE4-NEXT: movdqa %xmm0, %xmm8
5878 ; SSE4-NEXT: movdqa %xmm0, %xmm9
58465879 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
58475880 ; SSE4-NEXT: movdqa %xmm3, %xmm10
58485881 ; SSE4-NEXT: pxor %xmm0, %xmm10
5849 ; SSE4-NEXT: movdqa %xmm7, %xmm9
5850 ; SSE4-NEXT: pxor %xmm0, %xmm9
5851 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm9
5882 ; SSE4-NEXT: movdqa %xmm7, %xmm8
5883 ; SSE4-NEXT: pxor %xmm0, %xmm8
5884 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm8
5885 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
5886 ; SSE4-NEXT: pxor %xmm12, %xmm8
58525887 ; SSE4-NEXT: movdqa %xmm2, %xmm11
58535888 ; SSE4-NEXT: pxor %xmm0, %xmm11
58545889 ; SSE4-NEXT: movdqa %xmm6, %xmm10
58555890 ; SSE4-NEXT: pxor %xmm0, %xmm10
58565891 ; SSE4-NEXT: pcmpgtq %xmm11, %xmm10
5857 ; SSE4-NEXT: movdqa %xmm1, %xmm12
5858 ; SSE4-NEXT: pxor %xmm0, %xmm12
5892 ; SSE4-NEXT: pxor %xmm12, %xmm10
5893 ; SSE4-NEXT: movdqa %xmm1, %xmm13
5894 ; SSE4-NEXT: pxor %xmm0, %xmm13
58595895 ; SSE4-NEXT: movdqa %xmm5, %xmm11
58605896 ; SSE4-NEXT: pxor %xmm0, %xmm11
5861 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm11
5862 ; SSE4-NEXT: movdqa %xmm8, %xmm12
5863 ; SSE4-NEXT: pxor %xmm0, %xmm12
5897 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm11
5898 ; SSE4-NEXT: pxor %xmm12, %xmm11
5899 ; SSE4-NEXT: movdqa %xmm9, %xmm13
5900 ; SSE4-NEXT: pxor %xmm0, %xmm13
58645901 ; SSE4-NEXT: pxor %xmm4, %xmm0
5865 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
5866 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
5902 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
5903 ; SSE4-NEXT: pxor %xmm12, %xmm0
5904 ; SSE4-NEXT: blendvpd %xmm9, %xmm4
58675905 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5868 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
5906 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
58695907 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5870 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
5871 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5872 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
5873 ; SSE4-NEXT: movapd %xmm8, %xmm0
5908 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5909 ; SSE4-NEXT: movdqa %xmm8, %xmm0
5910 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5911 ; SSE4-NEXT: movapd %xmm4, %xmm0
5912 ; SSE4-NEXT: movapd %xmm5, %xmm1
5913 ; SSE4-NEXT: movapd %xmm6, %xmm2
5914 ; SSE4-NEXT: movapd %xmm7, %xmm3
58745915 ; SSE4-NEXT: retq
58755916 ;
58765917 ; AVX1-LABEL: test128:
59095950 ; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm5
59105951 ; AVX2-NEXT: vpxor %ymm4, %ymm3, %ymm6
59115952 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm6, %ymm5
5912 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm6
5953 ; AVX2-NEXT: vpcmpeqd %ymm6, %ymm6, %ymm6
5954 ; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5
5955 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm7
59135956 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm4
5914 ; AVX2-NEXT: vpcmpgtq %ymm6, %ymm4, %ymm4
5915 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0
5916 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm1, %ymm1
5957 ; AVX2-NEXT: vpcmpgtq %ymm7, %ymm4, %ymm4
5958 ; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm4
5959 ; AVX2-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
5960 ; AVX2-NEXT: vblendvpd %ymm5, %ymm1, %ymm3, %ymm1
59175961 ; AVX2-NEXT: retq
59185962 ;
59195963 ; AVX512F-LABEL: test128:
76487692 ; SSE4-NEXT: movdqa %xmm0, %xmm8
76497693 ; SSE4-NEXT: movdqa %xmm3, %xmm9
76507694 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm9
7695 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
7696 ; SSE4-NEXT: pxor %xmm12, %xmm9
76517697 ; SSE4-NEXT: movdqa %xmm2, %xmm10
76527698 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm10
7699 ; SSE4-NEXT: pxor %xmm12, %xmm10
76537700 ; SSE4-NEXT: movdqa %xmm1, %xmm11
76547701 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11
7702 ; SSE4-NEXT: pxor %xmm12, %xmm11
76557703 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
7656 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
7704 ; SSE4-NEXT: pxor %xmm12, %xmm0
7705 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
76577706 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7658 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
7707 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
76597708 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7660 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
7709 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
76617710 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7662 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
7663 ; SSE4-NEXT: movapd %xmm4, %xmm0
7664 ; SSE4-NEXT: movapd %xmm5, %xmm1
7665 ; SSE4-NEXT: movapd %xmm6, %xmm2
7666 ; SSE4-NEXT: movapd %xmm7, %xmm3
7711 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7712 ; SSE4-NEXT: movapd %xmm8, %xmm0
76677713 ; SSE4-NEXT: retq
76687714 ;
76697715 ; AVX1-LABEL: test154:
76907736 ; AVX2-LABEL: test154:
76917737 ; AVX2: # BB#0: # %entry
76927738 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm1, %ymm4
7693 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm5
7694 ; AVX2-NEXT: vblendvpd %ymm5, %ymm0, %ymm2, %ymm0
7695 ; AVX2-NEXT: vblendvpd %ymm4, %ymm1, %ymm3, %ymm1
7739 ; AVX2-NEXT: vpcmpeqd %ymm5, %ymm5, %ymm5
7740 ; AVX2-NEXT: vpxor %ymm5, %ymm4, %ymm4
7741 ; AVX2-NEXT: vpcmpgtq %ymm2, %ymm0, %ymm6
7742 ; AVX2-NEXT: vpxor %ymm5, %ymm6, %ymm5
7743 ; AVX2-NEXT: vblendvpd %ymm5, %ymm2, %ymm0, %ymm0
7744 ; AVX2-NEXT: vblendvpd %ymm4, %ymm3, %ymm1, %ymm1
76967745 ; AVX2-NEXT: retq
76977746 ;
76987747 ; AVX512F-LABEL: test154:
79167965 ; SSE4-NEXT: movdqa %xmm0, %xmm8
79177966 ; SSE4-NEXT: movdqa %xmm7, %xmm9
79187967 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm9
7968 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
7969 ; SSE4-NEXT: pxor %xmm0, %xmm9
79197970 ; SSE4-NEXT: movdqa %xmm6, %xmm10
79207971 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm10
7972 ; SSE4-NEXT: pxor %xmm0, %xmm10
79217973 ; SSE4-NEXT: movdqa %xmm5, %xmm11
79227974 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11
7923 ; SSE4-NEXT: movdqa %xmm4, %xmm0
7924 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0
7925 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
7975 ; SSE4-NEXT: pxor %xmm0, %xmm11
7976 ; SSE4-NEXT: movdqa %xmm4, %xmm12
7977 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12
7978 ; SSE4-NEXT: pxor %xmm12, %xmm0
7979 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
79267980 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7927 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
7981 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
79287982 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7929 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
7983 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
79307984 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7931 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
7932 ; SSE4-NEXT: movapd %xmm4, %xmm0
7933 ; SSE4-NEXT: movapd %xmm5, %xmm1
7934 ; SSE4-NEXT: movapd %xmm6, %xmm2
7935 ; SSE4-NEXT: movapd %xmm7, %xmm3
7985 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7986 ; SSE4-NEXT: movapd %xmm8, %xmm0
79367987 ; SSE4-NEXT: retq
79377988 ;
79387989 ; AVX1-LABEL: test156:
79598010 ; AVX2-LABEL: test156:
79608011 ; AVX2: # BB#0: # %entry
79618012 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm3, %ymm4
7962 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm2, %ymm5
7963 ; AVX2-NEXT: vblendvpd %ymm5, %ymm0, %ymm2, %ymm0
7964 ; AVX2-NEXT: vblendvpd %ymm4, %ymm1, %ymm3, %ymm1
8013 ; AVX2-NEXT: vpcmpeqd %ymm5, %ymm5, %ymm5
8014 ; AVX2-NEXT: vpxor %ymm5, %ymm4, %ymm4
8015 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm2, %ymm6
8016 ; AVX2-NEXT: vpxor %ymm5, %ymm6, %ymm5
8017 ; AVX2-NEXT: vblendvpd %ymm5, %ymm2, %ymm0, %ymm0
8018 ; AVX2-NEXT: vblendvpd %ymm4, %ymm3, %ymm1, %ymm1
79658019 ; AVX2-NEXT: retq
79668020 ;
79678021 ; AVX512F-LABEL: test156:
82158269 ; SSE4-NEXT: movdqa %xmm3, %xmm9
82168270 ; SSE4-NEXT: pxor %xmm0, %xmm9
82178271 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm9
8272 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
8273 ; SSE4-NEXT: pxor %xmm12, %xmm9
82188274 ; SSE4-NEXT: movdqa %xmm6, %xmm11
82198275 ; SSE4-NEXT: pxor %xmm0, %xmm11
82208276 ; SSE4-NEXT: movdqa %xmm2, %xmm10
82218277 ; SSE4-NEXT: pxor %xmm0, %xmm10
82228278 ; SSE4-NEXT: pcmpgtq %xmm11, %xmm10
8223 ; SSE4-NEXT: movdqa %xmm5, %xmm12
8224 ; SSE4-NEXT: pxor %xmm0, %xmm12
8279 ; SSE4-NEXT: pxor %xmm12, %xmm10
8280 ; SSE4-NEXT: movdqa %xmm5, %xmm13
8281 ; SSE4-NEXT: pxor %xmm0, %xmm13
82258282 ; SSE4-NEXT: movdqa %xmm1, %xmm11
82268283 ; SSE4-NEXT: pxor %xmm0, %xmm11
8227 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm11
8228 ; SSE4-NEXT: movdqa %xmm4, %xmm12
8229 ; SSE4-NEXT: pxor %xmm0, %xmm12
8284 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm11
8285 ; SSE4-NEXT: pxor %xmm12, %xmm11
8286 ; SSE4-NEXT: movdqa %xmm4, %xmm13
8287 ; SSE4-NEXT: pxor %xmm0, %xmm13
82308288 ; SSE4-NEXT: pxor %xmm8, %xmm0
8231 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
8232 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
8289 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
8290 ; SSE4-NEXT: pxor %xmm12, %xmm0
8291 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
82338292 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8234 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
8293 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
82358294 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8236 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
8295 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
82378296 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8238 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
8239 ; SSE4-NEXT: movapd %xmm4, %xmm0
8240 ; SSE4-NEXT: movapd %xmm5, %xmm1
8241 ; SSE4-NEXT: movapd %xmm6, %xmm2
8242 ; SSE4-NEXT: movapd %xmm7, %xmm3
8297 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8298 ; SSE4-NEXT: movapd %xmm8, %xmm0
82438299 ; SSE4-NEXT: retq
82448300 ;
82458301 ; AVX1-LABEL: test158:
82788334 ; AVX2-NEXT: vpxor %ymm4, %ymm3, %ymm5
82798335 ; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm6
82808336 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm6, %ymm5
8281 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm6
8337 ; AVX2-NEXT: vpcmpeqd %ymm6, %ymm6, %ymm6
8338 ; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5
8339 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm7
82828340 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm4
8283 ; AVX2-NEXT: vpcmpgtq %ymm6, %ymm4, %ymm4
8284 ; AVX2-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
8285 ; AVX2-NEXT: vblendvpd %ymm5, %ymm1, %ymm3, %ymm1
8341 ; AVX2-NEXT: vpcmpgtq %ymm7, %ymm4, %ymm4
8342 ; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm4
8343 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0
8344 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm1, %ymm1
82868345 ; AVX2-NEXT: retq
82878346 ;
82888347 ; AVX512F-LABEL: test158:
85378596 ; SSE4-NEXT: movdqa %xmm7, %xmm9
85388597 ; SSE4-NEXT: pxor %xmm0, %xmm9
85398598 ; SSE4-NEXT: pcmpgtq %xmm10, %xmm9
8599 ; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
8600 ; SSE4-NEXT: pxor %xmm12, %xmm9
85408601 ; SSE4-NEXT: movdqa %xmm2, %xmm11
85418602 ; SSE4-NEXT: pxor %xmm0, %xmm11
85428603 ; SSE4-NEXT: movdqa %xmm6, %xmm10
85438604 ; SSE4-NEXT: pxor %xmm0, %xmm10
85448605 ; SSE4-NEXT: pcmpgtq %xmm11, %xmm10
8545 ; SSE4-NEXT: movdqa %xmm1, %xmm12
8546 ; SSE4-NEXT: pxor %xmm0, %xmm12
8606 ; SSE4-NEXT: pxor %xmm12, %xmm10
8607 ; SSE4-NEXT: movdqa %xmm1, %xmm13
8608 ; SSE4-NEXT: pxor %xmm0, %xmm13
85478609 ; SSE4-NEXT: movdqa %xmm5, %xmm11
85488610 ; SSE4-NEXT: pxor %xmm0, %xmm11
8549 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm11
8550 ; SSE4-NEXT: movdqa %xmm8, %xmm12
8551 ; SSE4-NEXT: pxor %xmm0, %xmm12
8611 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm11
8612 ; SSE4-NEXT: pxor %xmm12, %xmm11
8613 ; SSE4-NEXT: movdqa %xmm8, %xmm13
8614 ; SSE4-NEXT: pxor %xmm0, %xmm13
85528615 ; SSE4-NEXT: pxor %xmm4, %xmm0
8553 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
8554 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
8616 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
8617 ; SSE4-NEXT: pxor %xmm12, %xmm0
8618 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
85558619 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8556 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
8620 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
85578621 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8558 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
8622 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
85598623 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8560 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
8561 ; SSE4-NEXT: movapd %xmm4, %xmm0
8562 ; SSE4-NEXT: movapd %xmm5, %xmm1
8563 ; SSE4-NEXT: movapd %xmm6, %xmm2
8564 ; SSE4-NEXT: movapd %xmm7, %xmm3
8624 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8625 ; SSE4-NEXT: movapd %xmm8, %xmm0
85658626 ; SSE4-NEXT: retq
85668627 ;
85678628 ; AVX1-LABEL: test160:
86008661 ; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm5
86018662 ; AVX2-NEXT: vpxor %ymm4, %ymm3, %ymm6
86028663 ; AVX2-NEXT: vpcmpgtq %ymm5, %ymm6, %ymm5
8603 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm6
8664 ; AVX2-NEXT: vpcmpeqd %ymm6, %ymm6, %ymm6
8665 ; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5
8666 ; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm7
86048667 ; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm4
8605 ; AVX2-NEXT: vpcmpgtq %ymm6, %ymm4, %ymm4
8606 ; AVX2-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
8607 ; AVX2-NEXT: vblendvpd %ymm5, %ymm1, %ymm3, %ymm1
8668 ; AVX2-NEXT: vpcmpgtq %ymm7, %ymm4, %ymm4
8669 ; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm4
8670 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm0, %ymm0
8671 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm1, %ymm1
86088672 ; AVX2-NEXT: retq
86098673 ;
86108674 ; AVX512F-LABEL: test160:
87388802 ; SSE4-NEXT: movdqa %xmm0, %xmm4
87398803 ; SSE4-NEXT: movdqa %xmm1, %xmm5
87408804 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5
8805 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
8806 ; SSE4-NEXT: pxor %xmm6, %xmm5
87418807 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
8742 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
8808 ; SSE4-NEXT: pxor %xmm6, %xmm0
8809 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
87438810 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8744 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
8745 ; SSE4-NEXT: movapd %xmm4, %xmm0
8811 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8812 ; SSE4-NEXT: movapd %xmm2, %xmm0
8813 ; SSE4-NEXT: movapd %xmm3, %xmm1
87468814 ; SSE4-NEXT: retq
87478815 ;
87488816 ; AVX1-LABEL: test162:
87618829 ; AVX2-LABEL: test162:
87628830 ; AVX2: # BB#0: # %entry
87638831 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
8764 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
8832 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
8833 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
8834 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
87658835 ; AVX2-NEXT: retq
87668836 ;
87678837 ; AVX512BW-LABEL: test162:
88948964 ; SSE4-NEXT: movdqa %xmm0, %xmm4
88958965 ; SSE4-NEXT: movdqa %xmm3, %xmm5
88968966 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5
8897 ; SSE4-NEXT: movdqa %xmm2, %xmm0
8898 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
8899 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
8967 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
8968 ; SSE4-NEXT: pxor %xmm0, %xmm5
8969 ; SSE4-NEXT: movdqa %xmm2, %xmm6
8970 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6
8971 ; SSE4-NEXT: pxor %xmm6, %xmm0
8972 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
89008973 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8901 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
8902 ; SSE4-NEXT: movapd %xmm4, %xmm0
8974 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8975 ; SSE4-NEXT: movapd %xmm2, %xmm0
8976 ; SSE4-NEXT: movapd %xmm3, %xmm1
89038977 ; SSE4-NEXT: retq
89048978 ;
89058979 ; AVX1-LABEL: test164:
89188992 ; AVX2-LABEL: test164:
89198993 ; AVX2: # BB#0: # %entry
89208994 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
8921 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
8995 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
8996 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
8997 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
89228998 ; AVX2-NEXT: retq
89238999 ;
89249000 ; AVX512BW-LABEL: test164:
90709146 ; SSE4-NEXT: movdqa %xmm1, %xmm5
90719147 ; SSE4-NEXT: pxor %xmm0, %xmm5
90729148 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm5
9073 ; SSE4-NEXT: movdqa %xmm2, %xmm6
9074 ; SSE4-NEXT: pxor %xmm0, %xmm6
9149 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
9150 ; SSE4-NEXT: pxor %xmm6, %xmm5
9151 ; SSE4-NEXT: movdqa %xmm2, %xmm7
9152 ; SSE4-NEXT: pxor %xmm0, %xmm7
90759153 ; SSE4-NEXT: pxor %xmm4, %xmm0
9076 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9077 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9154 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
9155 ; SSE4-NEXT: pxor %xmm6, %xmm0
9156 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
90789157 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9079 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9080 ; SSE4-NEXT: movapd %xmm4, %xmm0
9158 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9159 ; SSE4-NEXT: movapd %xmm2, %xmm0
9160 ; SSE4-NEXT: movapd %xmm3, %xmm1
90819161 ; SSE4-NEXT: retq
90829162 ;
90839163 ; AVX1-LABEL: test166:
91049184 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm3
91059185 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm2
91069186 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
9107 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
9187 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
9188 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
9189 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
91089190 ; AVX2-NEXT: retq
91099191 ;
91109192 ; AVX512BW-LABEL: test166:
92569338 ; SSE4-NEXT: movdqa %xmm3, %xmm5
92579339 ; SSE4-NEXT: pxor %xmm0, %xmm5
92589340 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm5
9259 ; SSE4-NEXT: movdqa %xmm4, %xmm6
9260 ; SSE4-NEXT: pxor %xmm0, %xmm6
9341 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
9342 ; SSE4-NEXT: pxor %xmm6, %xmm5
9343 ; SSE4-NEXT: movdqa %xmm4, %xmm7
9344 ; SSE4-NEXT: pxor %xmm0, %xmm7
92619345 ; SSE4-NEXT: pxor %xmm2, %xmm0
9262 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9263 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9346 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
9347 ; SSE4-NEXT: pxor %xmm6, %xmm0
9348 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
92649349 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9265 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9266 ; SSE4-NEXT: movapd %xmm4, %xmm0
9350 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9351 ; SSE4-NEXT: movapd %xmm2, %xmm0
9352 ; SSE4-NEXT: movapd %xmm3, %xmm1
92679353 ; SSE4-NEXT: retq
92689354 ;
92699355 ; AVX1-LABEL: test168:
92909376 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm3
92919377 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm2
92929378 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
9293 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
9379 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
9380 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
9381 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
92949382 ; AVX2-NEXT: retq
92959383 ;
92969384 ; AVX512BW-LABEL: test168:
94259513 ; SSE4-NEXT: movdqa %xmm0, %xmm4
94269514 ; SSE4-NEXT: movdqa %xmm1, %xmm5
94279515 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5
9516 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
9517 ; SSE4-NEXT: pxor %xmm6, %xmm5
94289518 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
9429 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9519 ; SSE4-NEXT: pxor %xmm6, %xmm0
9520 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
94309521 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9431 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9432 ; SSE4-NEXT: movapd %xmm2, %xmm0
9433 ; SSE4-NEXT: movapd %xmm3, %xmm1
9522 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9523 ; SSE4-NEXT: movapd %xmm4, %xmm0
94349524 ; SSE4-NEXT: retq
94359525 ;
94369526 ; AVX1-LABEL: test170:
94499539 ; AVX2-LABEL: test170:
94509540 ; AVX2: # BB#0: # %entry
94519541 ; AVX2-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm2
9452 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
9542 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
9543 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
9544 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
94539545 ; AVX2-NEXT: retq
94549546 ;
94559547 ; AVX512BW-LABEL: test170:
95839675 ; SSE4-NEXT: movdqa %xmm0, %xmm4
95849676 ; SSE4-NEXT: movdqa %xmm3, %xmm5
95859677 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5
9586 ; SSE4-NEXT: movdqa %xmm2, %xmm0
9587 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
9588 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9678 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
9679 ; SSE4-NEXT: pxor %xmm0, %xmm5
9680 ; SSE4-NEXT: movdqa %xmm2, %xmm6
9681 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6
9682 ; SSE4-NEXT: pxor %xmm6, %xmm0
9683 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
95899684 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9590 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9591 ; SSE4-NEXT: movapd %xmm2, %xmm0
9592 ; SSE4-NEXT: movapd %xmm3, %xmm1
9685 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9686 ; SSE4-NEXT: movapd %xmm4, %xmm0
95939687 ; SSE4-NEXT: retq
95949688 ;
95959689 ; AVX1-LABEL: test172:
96089702 ; AVX2-LABEL: test172:
96099703 ; AVX2: # BB#0: # %entry
96109704 ; AVX2-NEXT: vpcmpgtq %ymm0, %ymm1, %ymm2
9611 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
9705 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
9706 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
9707 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
96129708 ; AVX2-NEXT: retq
96139709 ;
96149710 ; AVX512BW-LABEL: test172:
97619857 ; SSE4-NEXT: movdqa %xmm1, %xmm5
97629858 ; SSE4-NEXT: pxor %xmm0, %xmm5
97639859 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm5
9764 ; SSE4-NEXT: movdqa %xmm2, %xmm6
9765 ; SSE4-NEXT: pxor %xmm0, %xmm6
9860 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
9861 ; SSE4-NEXT: pxor %xmm6, %xmm5
9862 ; SSE4-NEXT: movdqa %xmm2, %xmm7
9863 ; SSE4-NEXT: pxor %xmm0, %xmm7
97669864 ; SSE4-NEXT: pxor %xmm4, %xmm0
9767 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9768 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9865 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
9866 ; SSE4-NEXT: pxor %xmm6, %xmm0
9867 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
97699868 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9770 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9771 ; SSE4-NEXT: movapd %xmm2, %xmm0
9772 ; SSE4-NEXT: movapd %xmm3, %xmm1
9869 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9870 ; SSE4-NEXT: movapd %xmm4, %xmm0
97739871 ; SSE4-NEXT: retq
97749872 ;
97759873 ; AVX1-LABEL: test174:
97969894 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm3
97979895 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm2
97989896 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
9799 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
9897 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
9898 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
9899 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
98009900 ; AVX2-NEXT: retq
98019901 ;
98029902 ; AVX512BW-LABEL: test174:
994910049 ; SSE4-NEXT: movdqa %xmm3, %xmm5
995010050 ; SSE4-NEXT: pxor %xmm0, %xmm5
995110051 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm5
9952 ; SSE4-NEXT: movdqa %xmm4, %xmm6
9953 ; SSE4-NEXT: pxor %xmm0, %xmm6
10052 ; SSE4-NEXT: pcmpeqd %xmm6, %xmm6
10053 ; SSE4-NEXT: pxor %xmm6, %xmm5
10054 ; SSE4-NEXT: movdqa %xmm4, %xmm7
10055 ; SSE4-NEXT: pxor %xmm0, %xmm7
995410056 ; SSE4-NEXT: pxor %xmm2, %xmm0
9955 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9956 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
10057 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
10058 ; SSE4-NEXT: pxor %xmm6, %xmm0
10059 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
995710060 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9958 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9959 ; SSE4-NEXT: movapd %xmm2, %xmm0
9960 ; SSE4-NEXT: movapd %xmm3, %xmm1
10061 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
10062 ; SSE4-NEXT: movapd %xmm4, %xmm0
996110063 ; SSE4-NEXT: retq
996210064 ;
996310065 ; AVX1-LABEL: test176:
998410086 ; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm3
998510087 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm2
998610088 ; AVX2-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm2
9987 ; AVX2-NEXT: vblendvpd %ymm2, %ymm0, %ymm1, %ymm0
10089 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm3, %ymm3
10090 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
10091 ; AVX2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
998810092 ; AVX2-NEXT: retq
998910093 ;
999010094 ; AVX512BW-LABEL: test176:
1007510179 ; SSE4: # BB#0: # %entry
1007610180 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1007710181 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
10078 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10079 ; SSE4-NEXT: movapd %xmm2, %xmm0
10182 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3
10183 ; SSE4-NEXT: pxor %xmm3, %xmm0
10184 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10185 ; SSE4-NEXT: movapd %xmm1, %xmm0
1008010186 ; SSE4-NEXT: retq
1008110187 ;
1008210188 ; AVX1-LABEL: test178:
1008310189 ; AVX1: # BB#0: # %entry
1008410190 ; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
10085 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10191 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10192 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10193 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1008610194 ; AVX1-NEXT: retq
1008710195 ;
1008810196 ; AVX2-LABEL: test178:
1008910197 ; AVX2: # BB#0: # %entry
1009010198 ; AVX2-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
10091 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10199 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10200 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10201 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1009210202 ; AVX2-NEXT: retq
1009310203 ;
1009410204 ; AVX512BW-LABEL: test178:
1017710287 ; SSE4-LABEL: test180:
1017810288 ; SSE4: # BB#0: # %entry
1017910289 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10180 ; SSE4-NEXT: movdqa %xmm1, %xmm0
10181 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
10182 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10183 ; SSE4-NEXT: movapd %xmm2, %xmm0
10290 ; SSE4-NEXT: movdqa %xmm1, %xmm3
10291 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3
10292 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
10293 ; SSE4-NEXT: pxor %xmm3, %xmm0
10294 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10295 ; SSE4-NEXT: movapd %xmm1, %xmm0
1018410296 ; SSE4-NEXT: retq
1018510297 ;
1018610298 ; AVX1-LABEL: test180:
1018710299 ; AVX1: # BB#0: # %entry
1018810300 ; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
10189 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10301 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10302 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10303 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1019010304 ; AVX1-NEXT: retq
1019110305 ;
1019210306 ; AVX2-LABEL: test180:
1019310307 ; AVX2: # BB#0: # %entry
1019410308 ; AVX2-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
10195 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10309 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10310 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10311 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1019610312 ; AVX2-NEXT: retq
1019710313 ;
1019810314 ; AVX512BW-LABEL: test180:
1029110407 ; SSE4-LABEL: test182:
1029210408 ; SSE4: # BB#0: # %entry
1029310409 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10294 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
10295 ; SSE4-NEXT: movdqa %xmm1, %xmm3
10296 ; SSE4-NEXT: pxor %xmm0, %xmm3
10297 ; SSE4-NEXT: pxor %xmm2, %xmm0
10298 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10299 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10300 ; SSE4-NEXT: movapd %xmm2, %xmm0
10410 ; SSE4-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
10411 ; SSE4-NEXT: movdqa %xmm1, %xmm0
10412 ; SSE4-NEXT: pxor %xmm3, %xmm0
10413 ; SSE4-NEXT: pxor %xmm2, %xmm3
10414 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
10415 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
10416 ; SSE4-NEXT: pxor %xmm3, %xmm0
10417 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10418 ; SSE4-NEXT: movapd %xmm1, %xmm0
1030110419 ; SSE4-NEXT: retq
1030210420 ;
1030310421 ; AVX1-LABEL: test182:
1030610424 ; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
1030710425 ; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm2
1030810426 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10309 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10427 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10428 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10429 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1031010430 ; AVX1-NEXT: retq
1031110431 ;
1031210432 ; AVX2-LABEL: test182:
1031510435 ; AVX2-NEXT: vpxor %xmm2, %xmm1, %xmm3
1031610436 ; AVX2-NEXT: vpxor %xmm2, %xmm0, %xmm2
1031710437 ; AVX2-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10318 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10438 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10439 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10440 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1031910441 ; AVX2-NEXT: retq
1032010442 ;
1032110443 ; AVX512BW-LABEL: test182:
1041410536 ; SSE4-LABEL: test184:
1041510537 ; SSE4: # BB#0: # %entry
1041610538 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10417 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
10418 ; SSE4-NEXT: movdqa %xmm2, %xmm3
10419 ; SSE4-NEXT: pxor %xmm0, %xmm3
10420 ; SSE4-NEXT: pxor %xmm1, %xmm0
10421 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10422 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10423 ; SSE4-NEXT: movapd %xmm2, %xmm0
10539 ; SSE4-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
10540 ; SSE4-NEXT: pxor %xmm3, %xmm0
10541 ; SSE4-NEXT: pxor %xmm1, %xmm3
10542 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
10543 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
10544 ; SSE4-NEXT: pxor %xmm3, %xmm0
10545 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10546 ; SSE4-NEXT: movapd %xmm1, %xmm0
1042410547 ; SSE4-NEXT: retq
1042510548 ;
1042610549 ; AVX1-LABEL: test184:
1042910552 ; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm3
1043010553 ; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm2
1043110554 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10432 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10555 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10556 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10557 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1043310558 ; AVX1-NEXT: retq
1043410559 ;
1043510560 ; AVX2-LABEL: test184:
1043810563 ; AVX2-NEXT: vpxor %xmm2, %xmm0, %xmm3
1043910564 ; AVX2-NEXT: vpxor %xmm2, %xmm1, %xmm2
1044010565 ; AVX2-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10441 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
10566 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10567 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10568 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
1044210569 ; AVX2-NEXT: retq
1044310570 ;
1044410571 ; AVX512BW-LABEL: test184:
1053010657 ; SSE4: # BB#0: # %entry
1053110658 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1053210659 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
10533 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10534 ; SSE4-NEXT: movapd %xmm1, %xmm0
10660 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3
10661 ; SSE4-NEXT: pxor %xmm3, %xmm0
10662 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10663 ; SSE4-NEXT: movapd %xmm2, %xmm0
1053510664 ; SSE4-NEXT: retq
1053610665 ;
1053710666 ; AVX1-LABEL: test186:
1053810667 ; AVX1: # BB#0: # %entry
1053910668 ; AVX1-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
10540 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10669 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10670 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10671 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1054110672 ; AVX1-NEXT: retq
1054210673 ;
1054310674 ; AVX2-LABEL: test186:
1054410675 ; AVX2: # BB#0: # %entry
1054510676 ; AVX2-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm2
10546 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10677 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10678 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10679 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1054710680 ; AVX2-NEXT: retq
1054810681 ;
1054910682 ; AVX512BW-LABEL: test186:
1063310766 ; SSE4-LABEL: test188:
1063410767 ; SSE4: # BB#0: # %entry
1063510768 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10636 ; SSE4-NEXT: movdqa %xmm1, %xmm0
10637 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
10638 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10639 ; SSE4-NEXT: movapd %xmm1, %xmm0
10769 ; SSE4-NEXT: movdqa %xmm1, %xmm3
10770 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3
10771 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
10772 ; SSE4-NEXT: pxor %xmm3, %xmm0
10773 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10774 ; SSE4-NEXT: movapd %xmm2, %xmm0
1064010775 ; SSE4-NEXT: retq
1064110776 ;
1064210777 ; AVX1-LABEL: test188:
1064310778 ; AVX1: # BB#0: # %entry
1064410779 ; AVX1-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
10645 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10780 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10781 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10782 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1064610783 ; AVX1-NEXT: retq
1064710784 ;
1064810785 ; AVX2-LABEL: test188:
1064910786 ; AVX2: # BB#0: # %entry
1065010787 ; AVX2-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm2
10651 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10788 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10789 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10790 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1065210791 ; AVX2-NEXT: retq
1065310792 ;
1065410793 ; AVX512BW-LABEL: test188:
1074810887 ; SSE4-LABEL: test190:
1074910888 ; SSE4: # BB#0: # %entry
1075010889 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10751 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
10752 ; SSE4-NEXT: movdqa %xmm1, %xmm3
10753 ; SSE4-NEXT: pxor %xmm0, %xmm3
10754 ; SSE4-NEXT: pxor %xmm2, %xmm0
10755 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10756 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10757 ; SSE4-NEXT: movapd %xmm1, %xmm0
10890 ; SSE4-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
10891 ; SSE4-NEXT: movdqa %xmm1, %xmm0
10892 ; SSE4-NEXT: pxor %xmm3, %xmm0
10893 ; SSE4-NEXT: pxor %xmm2, %xmm3
10894 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
10895 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
10896 ; SSE4-NEXT: pxor %xmm3, %xmm0
10897 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10898 ; SSE4-NEXT: movapd %xmm2, %xmm0
1075810899 ; SSE4-NEXT: retq
1075910900 ;
1076010901 ; AVX1-LABEL: test190:
1076310904 ; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm3
1076410905 ; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm2
1076510906 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10766 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10907 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10908 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
10909 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1076710910 ; AVX1-NEXT: retq
1076810911 ;
1076910912 ; AVX2-LABEL: test190:
1077210915 ; AVX2-NEXT: vpxor %xmm2, %xmm1, %xmm3
1077310916 ; AVX2-NEXT: vpxor %xmm2, %xmm0, %xmm2
1077410917 ; AVX2-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10775 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
10918 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
10919 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
10920 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1077610921 ; AVX2-NEXT: retq
1077710922 ;
1077810923 ; AVX512BW-LABEL: test190:
1087211017 ; SSE4-LABEL: test192:
1087311018 ; SSE4: # BB#0: # %entry
1087411019 ; SSE4-NEXT: movdqa %xmm0, %xmm2
10875 ; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
10876 ; SSE4-NEXT: movdqa %xmm2, %xmm3
10877 ; SSE4-NEXT: pxor %xmm0, %xmm3
10878 ; SSE4-NEXT: pxor %xmm1, %xmm0
10879 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10880 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10881 ; SSE4-NEXT: movapd %xmm1, %xmm0
11020 ; SSE4-NEXT: movdqa {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]
11021 ; SSE4-NEXT: pxor %xmm3, %xmm0
11022 ; SSE4-NEXT: pxor %xmm1, %xmm3
11023 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
11024 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
11025 ; SSE4-NEXT: pxor %xmm3, %xmm0
11026 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
11027 ; SSE4-NEXT: movapd %xmm2, %xmm0
1088211028 ; SSE4-NEXT: retq
1088311029 ;
1088411030 ; AVX1-LABEL: test192:
1088711033 ; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm3
1088811034 ; AVX1-NEXT: vpxor %xmm2, %xmm1, %xmm2
1088911035 ; AVX1-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10890 ; AVX1-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
11036 ; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
11037 ; AVX1-NEXT: vpxor %xmm3, %xmm2, %xmm2
11038 ; AVX1-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1089111039 ; AVX1-NEXT: retq
1089211040 ;
1089311041 ; AVX2-LABEL: test192:
1089611044 ; AVX2-NEXT: vpxor %xmm2, %xmm0, %xmm3
1089711045 ; AVX2-NEXT: vpxor %xmm2, %xmm1, %xmm2
1089811046 ; AVX2-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm2
10899 ; AVX2-NEXT: vblendvpd %xmm2, %xmm0, %xmm1, %xmm0
11047 ; AVX2-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
11048 ; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm2
11049 ; AVX2-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0
1090011050 ; AVX2-NEXT: retq
1090111051 ;
1090211052 ; AVX512BW-LABEL: test192: