@@ -396,14 +396,10 @@ define <4 x i32> @test_rem7_4i32(<4 x i32> %a) nounwind {
396
396
; SSE2-NEXT: psrld $31, %xmm1
397
397
; SSE2-NEXT: psrad $2, %xmm2
398
398
; SSE2-NEXT: paddd %xmm1, %xmm2
399
- ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [7,7,7,7]
400
- ; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
401
- ; SSE2-NEXT: pmuludq %xmm1, %xmm2
402
- ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
403
- ; SSE2-NEXT: pmuludq %xmm1, %xmm3
404
- ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm3[0,2,2,3]
405
- ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
406
- ; SSE2-NEXT: psubd %xmm2, %xmm0
399
+ ; SSE2-NEXT: movdqa %xmm2, %xmm1
400
+ ; SSE2-NEXT: pslld $3, %xmm1
401
+ ; SSE2-NEXT: psubd %xmm1, %xmm2
402
+ ; SSE2-NEXT: paddd %xmm2, %xmm0
407
403
; SSE2-NEXT: retq
408
404
;
409
405
; SSE41-LABEL: test_rem7_4i32:
@@ -511,16 +507,11 @@ define <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
511
507
; SSE2-NEXT: pand {{.*}}(%rip), %xmm1
512
508
; SSE2-NEXT: paddb %xmm2, %xmm1
513
509
; SSE2-NEXT: movdqa %xmm1, %xmm2
514
- ; SSE2-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm0[8],xmm2[9],xmm0[9],xmm2[10],xmm0[10],xmm2[11],xmm0[11],xmm2[12],xmm0[12],xmm2[13],xmm0[13],xmm2[14],xmm0[14],xmm2[15],xmm0[15]
515
- ; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
516
- ; SSE2-NEXT: pmullw %xmm3, %xmm2
517
- ; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
518
- ; SSE2-NEXT: pand %xmm4, %xmm2
519
- ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
520
- ; SSE2-NEXT: pmullw %xmm3, %xmm1
521
- ; SSE2-NEXT: pand %xmm4, %xmm1
522
- ; SSE2-NEXT: packuswb %xmm2, %xmm1
523
- ; SSE2-NEXT: psubb %xmm1, %xmm0
510
+ ; SSE2-NEXT: psllw $3, %xmm2
511
+ ; SSE2-NEXT: pand {{.*}}(%rip), %xmm2
512
+ ; SSE2-NEXT: psubb %xmm2, %xmm1
513
+ ; SSE2-NEXT: paddb %xmm0, %xmm1
514
+ ; SSE2-NEXT: movdqa %xmm1, %xmm0
524
515
; SSE2-NEXT: retq
525
516
;
526
517
; SSE41-LABEL: test_rem7_16i8:
@@ -544,16 +535,11 @@ define <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
544
535
; SSE41-NEXT: psrlw $7, %xmm1
545
536
; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
546
537
; SSE41-NEXT: paddb %xmm2, %xmm1
547
- ; SSE41-NEXT: pmovzxbw {{.*#+}} xmm2 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
548
- ; SSE41-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
549
- ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
550
- ; SSE41-NEXT: pmullw %xmm3, %xmm1
551
- ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
552
- ; SSE41-NEXT: pand %xmm4, %xmm1
553
- ; SSE41-NEXT: pmullw %xmm3, %xmm2
554
- ; SSE41-NEXT: pand %xmm4, %xmm2
555
- ; SSE41-NEXT: packuswb %xmm1, %xmm2
556
- ; SSE41-NEXT: psubb %xmm2, %xmm0
538
+ ; SSE41-NEXT: movdqa %xmm1, %xmm2
539
+ ; SSE41-NEXT: psllw $3, %xmm2
540
+ ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
541
+ ; SSE41-NEXT: psubb %xmm2, %xmm1
542
+ ; SSE41-NEXT: paddb %xmm1, %xmm0
557
543
; SSE41-NEXT: retq
558
544
;
559
545
; AVX1-LABEL: test_rem7_16i8:
@@ -576,16 +562,10 @@ define <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
576
562
; AVX1-NEXT: vpsrlw $7, %xmm1, %xmm1
577
563
; AVX1-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
578
564
; AVX1-NEXT: vpaddb %xmm1, %xmm2, %xmm1
579
- ; AVX1-NEXT: vpunpckhbw {{.*#+}} xmm2 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
580
- ; AVX1-NEXT: vmovdqa {{.*#+}} xmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
581
- ; AVX1-NEXT: vpmullw %xmm3, %xmm2, %xmm2
582
- ; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
583
- ; AVX1-NEXT: vpand %xmm4, %xmm2, %xmm2
584
- ; AVX1-NEXT: vpmovzxbw {{.*#+}} xmm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
585
- ; AVX1-NEXT: vpmullw %xmm3, %xmm1, %xmm1
586
- ; AVX1-NEXT: vpand %xmm4, %xmm1, %xmm1
587
- ; AVX1-NEXT: vpackuswb %xmm2, %xmm1, %xmm1
588
- ; AVX1-NEXT: vpsubb %xmm1, %xmm0, %xmm0
565
+ ; AVX1-NEXT: vpsllw $3, %xmm1, %xmm2
566
+ ; AVX1-NEXT: vpand {{.*}}(%rip), %xmm2, %xmm2
567
+ ; AVX1-NEXT: vpsubb %xmm2, %xmm1, %xmm1
568
+ ; AVX1-NEXT: vpaddb %xmm1, %xmm0, %xmm0
589
569
; AVX1-NEXT: retq
590
570
;
591
571
; AVX2NOBW-LABEL: test_rem7_16i8:
@@ -604,14 +584,10 @@ define <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
604
584
; AVX2NOBW-NEXT: vpsrlw $7, %xmm1, %xmm1
605
585
; AVX2NOBW-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
606
586
; AVX2NOBW-NEXT: vpaddb %xmm1, %xmm2, %xmm1
607
- ; AVX2NOBW-NEXT: vpmovsxbw %xmm1, %ymm1
608
- ; AVX2NOBW-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
609
- ; AVX2NOBW-NEXT: vextracti128 $1, %ymm1, %xmm2
610
- ; AVX2NOBW-NEXT: vmovdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
611
- ; AVX2NOBW-NEXT: vpshufb %xmm3, %xmm2, %xmm2
612
- ; AVX2NOBW-NEXT: vpshufb %xmm3, %xmm1, %xmm1
613
- ; AVX2NOBW-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
614
- ; AVX2NOBW-NEXT: vpsubb %xmm1, %xmm0, %xmm0
587
+ ; AVX2NOBW-NEXT: vpsllw $3, %xmm1, %xmm2
588
+ ; AVX2NOBW-NEXT: vpand {{.*}}(%rip), %xmm2, %xmm2
589
+ ; AVX2NOBW-NEXT: vpsubb %xmm2, %xmm1, %xmm1
590
+ ; AVX2NOBW-NEXT: vpaddb %xmm1, %xmm0, %xmm0
615
591
; AVX2NOBW-NEXT: vzeroupper
616
592
; AVX2NOBW-NEXT: retq
617
593
;
@@ -630,10 +606,10 @@ define <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
630
606
; AVX512BW-NEXT: vpsrlw $7, %xmm1, %xmm1
631
607
; AVX512BW-NEXT: vpand {{.*}}(%rip), %xmm1, %xmm1
632
608
; AVX512BW-NEXT: vpaddb %xmm1, %xmm2, %xmm1
633
- ; AVX512BW-NEXT: vpmovsxbw %xmm1, %ymm1
634
- ; AVX512BW-NEXT: vpmullw {{.*}}(%rip), %ymm1 , %ymm1
635
- ; AVX512BW-NEXT: vpmovwb %zmm1 , %ymm1
636
- ; AVX512BW-NEXT: vpsubb %xmm1, %xmm0, %xmm0
609
+ ; AVX512BW-NEXT: vpsllw $3, %xmm1, %xmm2
610
+ ; AVX512BW-NEXT: vpand {{.*}}(%rip), %xmm2 , %xmm2
611
+ ; AVX512BW-NEXT: vpsubb %xmm2 , %xmm1, %xmm1
612
+ ; AVX512BW-NEXT: vpaddb %xmm1, %xmm0, %xmm0
637
613
; AVX512BW-NEXT: vzeroupper
638
614
; AVX512BW-NEXT: retq
639
615
%res = srem <16 x i8 > %a , <i8 7 , i8 7 , i8 7 , i8 7 ,i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 , i8 7 ,i8 7 , i8 7 , i8 7 , i8 7 >
0 commit comments