@@ -3546,6 +3546,65 @@ define <16 x i8> @PR107289(<16 x i8> %0) {
35463546 ret <16 x i8 > %res
35473547}
35483548
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+
35493608; Test case reported on D105827
35503609define void @SpinningCube () {
35513610; SSE2-LABEL: SpinningCube:
@@ -3654,9 +3713,9 @@ define void @autogen_SD25931() {
36543713; CHECK-LABEL: autogen_SD25931:
36553714; CHECK: # %bb.0: # %BB
36563715; CHECK-NEXT: .p2align 4
3657- ; CHECK-NEXT: .LBB142_1 : # %CF242
3716+ ; CHECK-NEXT: .LBB143_1 : # %CF242
36583717; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
3659- ; CHECK-NEXT: jmp .LBB142_1
3718+ ; CHECK-NEXT: jmp .LBB143_1
36603719BB:
36613720 %Cmp16 = icmp uge <2 x i1 > zeroinitializer , zeroinitializer
36623721 %Shuff19 = shufflevector <2 x i1 > zeroinitializer , <2 x i1 > %Cmp16 , <2 x i32 > <i32 3 , i32 1 >
0 commit comments