@@ -5109,6 +5109,63 @@ define <32 x i8> @PR55066(<32 x i8> %a0) {
5109
5109
ret <32 x i8 > %shuffle
5110
5110
}
5111
5111
5112
+ define <4 x i64 > @PR66150 (ptr %b ) {
5113
+ ; AVX1-LABEL: PR66150:
5114
+ ; AVX1: # %bb.0:
5115
+ ; AVX1-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5116
+ ; AVX1-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
5117
+ ; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]
5118
+ ; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]
5119
+ ; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
5120
+ ; AVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]
5121
+ ; AVX1-NEXT: retq
5122
+ ;
5123
+ ; AVX2-LABEL: PR66150:
5124
+ ; AVX2: # %bb.0:
5125
+ ; AVX2-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5126
+ ; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5127
+ ; AVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]
5128
+ ; AVX2-NEXT: retq
5129
+ ;
5130
+ ; AVX512VLBW-LABEL: PR66150:
5131
+ ; AVX512VLBW: # %bb.0:
5132
+ ; AVX512VLBW-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5133
+ ; AVX512VLBW-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5134
+ ; AVX512VLBW-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]
5135
+ ; AVX512VLBW-NEXT: retq
5136
+ ;
5137
+ ; AVX512VLVBMI-LABEL: PR66150:
5138
+ ; AVX512VLVBMI: # %bb.0:
5139
+ ; AVX512VLVBMI-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5140
+ ; AVX512VLVBMI-NEXT: vmovdqa {{.*#+}} ymm1 = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3]
5141
+ ; AVX512VLVBMI-NEXT: vpermb %ymm0, %ymm1, %ymm0
5142
+ ; AVX512VLVBMI-NEXT: retq
5143
+ ;
5144
+ ; XOPAVX1-LABEL: PR66150:
5145
+ ; XOPAVX1: # %bb.0:
5146
+ ; XOPAVX1-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5147
+ ; XOPAVX1-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
5148
+ ; XOPAVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]
5149
+ ; XOPAVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]
5150
+ ; XOPAVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
5151
+ ; XOPAVX1-NEXT: vshufps {{.*#+}} ymm0 = ymm0[0,0,1,1,4,4,5,5]
5152
+ ; XOPAVX1-NEXT: retq
5153
+ ;
5154
+ ; XOPAVX2-LABEL: PR66150:
5155
+ ; XOPAVX2: # %bb.0:
5156
+ ; XOPAVX2-NEXT: vmovd {{.*#+}} xmm0 = mem[0],zero,zero,zero
5157
+ ; XOPAVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,1,0,1]
5158
+ ; XOPAVX2-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19]
5159
+ ; XOPAVX2-NEXT: retq
5160
+ %tmp1 = load i32 , ptr %b , align 4
5161
+ %tmp2 = insertelement <8 x i32 > undef , i32 %tmp1 , i64 0
5162
+ %tmp3 = shufflevector <8 x i32 > %tmp2 , <8 x i32 > poison, <8 x i32 > <i32 0 , i32 poison, i32 poison, i32 poison, i32 0 , i32 poison, i32 poison, i32 poison>
5163
+ %tmp4 = bitcast <8 x i32 > %tmp3 to <32 x i8 >
5164
+ %tmp5 = shufflevector <32 x i8 > %tmp4 , <32 x i8 > poison, <32 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 18 , i32 18 , i32 18 , i32 18 , i32 18 , i32 18 , i32 18 , i32 18 , i32 19 , i32 19 , i32 19 , i32 19 , i32 19 , i32 19 , i32 19 , i32 19 >
5165
+ %tmp6 = bitcast <32 x i8 > %tmp5 to <4 x i64 >
5166
+ ret <4 x i64 > %tmp6
5167
+ }
5168
+
5112
5169
define <32 x i8 > @insert_dup_mem_v32i8_i32 (ptr %ptr ) {
5113
5170
; AVX1-LABEL: insert_dup_mem_v32i8_i32:
5114
5171
; AVX1: # %bb.0:
0 commit comments