@@ -483,28 +483,24 @@ define <4 x float> @signbits_ashr_sext_select_shuffle_sitofp(<4 x i64> %a0, <4 x
483
483
define <4 x i32 > @signbits_mask_ashr_smax (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
484
484
; X86-LABEL: signbits_mask_ashr_smax:
485
485
; X86: # %bb.0:
486
- ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
487
- ; X86-NEXT: vpsrad $25, %xmm1, %xmm1
488
- ; X86-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0
486
+ ; X86-NEXT: vpand %xmm1, %xmm0, %xmm0
489
487
; X86-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
488
+ ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
490
489
; X86-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
491
490
; X86-NEXT: retl
492
491
;
493
492
; X64-AVX1-LABEL: signbits_mask_ashr_smax:
494
493
; X64-AVX1: # %bb.0:
495
- ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
496
- ; X64-AVX1-NEXT: vpsrad $25, %xmm1, %xmm1
497
- ; X64-AVX1-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0
494
+ ; X64-AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
498
495
; X64-AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
496
+ ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
499
497
; X64-AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
500
498
; X64-AVX1-NEXT: retq
501
499
;
502
500
; X64-AVX2-LABEL: signbits_mask_ashr_smax:
503
501
; X64-AVX2: # %bb.0:
504
- ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [25,26,27,0]
505
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm0, %xmm0
506
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm1, %xmm1
507
- ; X64-AVX2-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0
502
+ ; X64-AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
503
+ ; X64-AVX2-NEXT: vpsrad $25, %xmm0, %xmm0
508
504
; X64-AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
509
505
; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
510
506
; X64-AVX2-NEXT: retq
@@ -521,28 +517,24 @@ declare <4 x i32> @llvm.smax.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
521
517
define <4 x i32 > @signbits_mask_ashr_smin (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
522
518
; X86-LABEL: signbits_mask_ashr_smin:
523
519
; X86: # %bb.0:
524
- ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
525
- ; X86-NEXT: vpsrad $25, %xmm1, %xmm1
526
- ; X86-NEXT: vpminsd %xmm1, %xmm0, %xmm0
520
+ ; X86-NEXT: vpor %xmm1, %xmm0, %xmm0
527
521
; X86-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
522
+ ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
528
523
; X86-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
529
524
; X86-NEXT: retl
530
525
;
531
526
; X64-AVX1-LABEL: signbits_mask_ashr_smin:
532
527
; X64-AVX1: # %bb.0:
533
- ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
534
- ; X64-AVX1-NEXT: vpsrad $25, %xmm1, %xmm1
535
- ; X64-AVX1-NEXT: vpminsd %xmm1, %xmm0, %xmm0
528
+ ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
536
529
; X64-AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
530
+ ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
537
531
; X64-AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
538
532
; X64-AVX1-NEXT: retq
539
533
;
540
534
; X64-AVX2-LABEL: signbits_mask_ashr_smin:
541
535
; X64-AVX2: # %bb.0:
542
- ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [25,26,27,0]
543
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm0, %xmm0
544
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm1, %xmm1
545
- ; X64-AVX2-NEXT: vpminsd %xmm1, %xmm0, %xmm0
536
+ ; X64-AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
537
+ ; X64-AVX2-NEXT: vpsrad $25, %xmm0, %xmm0
546
538
; X64-AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
547
539
; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
548
540
; X64-AVX2-NEXT: retq
@@ -559,28 +551,24 @@ declare <4 x i32> @llvm.smin.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
559
551
define <4 x i32 > @signbits_mask_ashr_umax (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
560
552
; X86-LABEL: signbits_mask_ashr_umax:
561
553
; X86: # %bb.0:
562
- ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
563
- ; X86-NEXT: vpsrad $25, %xmm1, %xmm1
564
- ; X86-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
554
+ ; X86-NEXT: vpor %xmm1, %xmm0, %xmm0
565
555
; X86-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
556
+ ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
566
557
; X86-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
567
558
; X86-NEXT: retl
568
559
;
569
560
; X64-AVX1-LABEL: signbits_mask_ashr_umax:
570
561
; X64-AVX1: # %bb.0:
571
- ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
572
- ; X64-AVX1-NEXT: vpsrad $25, %xmm1, %xmm1
573
- ; X64-AVX1-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
562
+ ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
574
563
; X64-AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
564
+ ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
575
565
; X64-AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
576
566
; X64-AVX1-NEXT: retq
577
567
;
578
568
; X64-AVX2-LABEL: signbits_mask_ashr_umax:
579
569
; X64-AVX2: # %bb.0:
580
- ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [25,26,27,0]
581
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm0, %xmm0
582
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm1, %xmm1
583
- ; X64-AVX2-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
570
+ ; X64-AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
571
+ ; X64-AVX2-NEXT: vpsrad $25, %xmm0, %xmm0
584
572
; X64-AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
585
573
; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
586
574
; X64-AVX2-NEXT: retq
@@ -597,28 +585,24 @@ declare <4 x i32> @llvm.umax.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
597
585
define <4 x i32 > @signbits_mask_ashr_umin (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
598
586
; X86-LABEL: signbits_mask_ashr_umin:
599
587
; X86: # %bb.0:
600
- ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
601
- ; X86-NEXT: vpsrad $25, %xmm1, %xmm1
602
- ; X86-NEXT: vpminud %xmm1, %xmm0, %xmm0
588
+ ; X86-NEXT: vpand %xmm1, %xmm0, %xmm0
603
589
; X86-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
590
+ ; X86-NEXT: vpsrad $25, %xmm0, %xmm0
604
591
; X86-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
605
592
; X86-NEXT: retl
606
593
;
607
594
; X64-AVX1-LABEL: signbits_mask_ashr_umin:
608
595
; X64-AVX1: # %bb.0:
609
- ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
610
- ; X64-AVX1-NEXT: vpsrad $25, %xmm1, %xmm1
611
- ; X64-AVX1-NEXT: vpminud %xmm1, %xmm0, %xmm0
596
+ ; X64-AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
612
597
; X64-AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
598
+ ; X64-AVX1-NEXT: vpsrad $25, %xmm0, %xmm0
613
599
; X64-AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
614
600
; X64-AVX1-NEXT: retq
615
601
;
616
602
; X64-AVX2-LABEL: signbits_mask_ashr_umin:
617
603
; X64-AVX2: # %bb.0:
618
- ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm2 = [25,26,27,0]
619
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm0, %xmm0
620
- ; X64-AVX2-NEXT: vpsravd %xmm2, %xmm1, %xmm1
621
- ; X64-AVX2-NEXT: vpminud %xmm1, %xmm0, %xmm0
604
+ ; X64-AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
605
+ ; X64-AVX2-NEXT: vpsrad $25, %xmm0, %xmm0
622
606
; X64-AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
623
607
; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
624
608
; X64-AVX2-NEXT: retq
0 commit comments