@@ -3546,6 +3546,65 @@ define <16 x i8> @PR107289(<16 x i8> %0) {
3546
3546
ret <16 x i8 > %res
3547
3547
}
3548
3548
3549
+ define <8 x i16 > @PR141475 (i32 %in ) {
3550
+ ; SSE2-LABEL: PR141475:
3551
+ ; SSE2: # %bb.0:
3552
+ ; SSE2-NEXT: movd %edi, %xmm0
3553
+ ; SSE2-NEXT: pslld $1, %xmm0
3554
+ ; SSE2-NEXT: xorps %xmm1, %xmm1
3555
+ ; SSE2-NEXT: movss {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3]
3556
+ ; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,0,0,0,4,5,6,7]
3557
+ ; SSE2-NEXT: retq
3558
+ ;
3559
+ ; SSSE3-LABEL: PR141475:
3560
+ ; SSSE3: # %bb.0:
3561
+ ; SSSE3-NEXT: movd %edi, %xmm0
3562
+ ; SSSE3-NEXT: pslld $1, %xmm0
3563
+ ; SSSE3-NEXT: xorps %xmm1, %xmm1
3564
+ ; SSSE3-NEXT: movss {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3]
3565
+ ; SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,0,0,0,4,5,6,7]
3566
+ ; SSSE3-NEXT: retq
3567
+ ;
3568
+ ; SSE41-LABEL: PR141475:
3569
+ ; SSE41: # %bb.0:
3570
+ ; SSE41-NEXT: movd %edi, %xmm0
3571
+ ; SSE41-NEXT: pslld $1, %xmm0
3572
+ ; SSE41-NEXT: pxor %xmm1, %xmm1
3573
+ ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm0[0,1],xmm1[2,3,4,5,6,7]
3574
+ ; SSE41-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,0,0,0,4,5,6,7]
3575
+ ; SSE41-NEXT: retq
3576
+ ;
3577
+ ; AVX1-LABEL: PR141475:
3578
+ ; AVX1: # %bb.0:
3579
+ ; AVX1-NEXT: vmovd %edi, %xmm0
3580
+ ; AVX1-NEXT: vpslld $1, %xmm0, %xmm0
3581
+ ; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1
3582
+ ; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3,4,5,6,7]
3583
+ ; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3584
+ ; AVX1-NEXT: retq
3585
+ ;
3586
+ ; AVX2-SLOW-LABEL: PR141475:
3587
+ ; AVX2-SLOW: # %bb.0:
3588
+ ; AVX2-SLOW-NEXT: vmovd %edi, %xmm0
3589
+ ; AVX2-SLOW-NEXT: vpslld $1, %xmm0, %xmm0
3590
+ ; AVX2-SLOW-NEXT: vpxor %xmm1, %xmm1, %xmm1
3591
+ ; AVX2-SLOW-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3,4,5,6,7]
3592
+ ; AVX2-SLOW-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,0,0,4,5,6,7]
3593
+ ; AVX2-SLOW-NEXT: retq
3594
+ ;
3595
+ ; AVX2-FAST-LABEL: PR141475:
3596
+ ; AVX2-FAST: # %bb.0:
3597
+ ; AVX2-FAST-NEXT: vmovd %edi, %xmm0
3598
+ ; AVX2-FAST-NEXT: vpslld $1, %xmm0, %xmm0
3599
+ ; AVX2-FAST-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,0,1,0,1,0,1],zero,zero,zero,zero,zero,zero,zero,zero
3600
+ ; AVX2-FAST-NEXT: retq
3601
+ %mul = shl i32 %in , 1
3602
+ %vecinit = insertelement <4 x i32 > zeroinitializer , i32 %mul , i64 0
3603
+ %cast = bitcast <4 x i32 > %vecinit to <8 x i16 >
3604
+ %shuf = shufflevector <8 x i16 > %cast , <8 x i16 > poison, <8 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 4 , i32 5 , i32 6 , i32 7 >
3605
+ ret <8 x i16 > %shuf
3606
+ }
3607
+
3549
3608
; Test case reported on D105827
3550
3609
define void @SpinningCube () {
3551
3610
; SSE2-LABEL: SpinningCube:
@@ -3654,9 +3713,9 @@ define void @autogen_SD25931() {
3654
3713
; CHECK-LABEL: autogen_SD25931:
3655
3714
; CHECK: # %bb.0: # %BB
3656
3715
; CHECK-NEXT: .p2align 4
3657
- ; CHECK-NEXT: .LBB142_1 : # %CF242
3716
+ ; CHECK-NEXT: .LBB143_1 : # %CF242
3658
3717
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
3659
- ; CHECK-NEXT: jmp .LBB142_1
3718
+ ; CHECK-NEXT: jmp .LBB143_1
3660
3719
BB:
3661
3720
%Cmp16 = icmp uge <2 x i1 > zeroinitializer , zeroinitializer
3662
3721
%Shuff19 = shufflevector <2 x i1 > zeroinitializer , <2 x i1 > %Cmp16 , <2 x i32 > <i32 3 , i32 1 >
0 commit comments