Skip to content

Commit 37d9dc4

Browse files
committed
[X86] Add test case for Issue #66150
1 parent cdc5e00 commit 37d9dc4

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5109,6 +5109,63 @@ define <32 x i8> @PR55066(<32 x i8> %a0) {
51095109
ret <32 x i8> %shuffle
51105110
}
51115111

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+
51125169
define <32 x i8> @insert_dup_mem_v32i8_i32(ptr %ptr) {
51135170
; AVX1-LABEL: insert_dup_mem_v32i8_i32:
51145171
; AVX1: # %bb.0:

0 commit comments

Comments
 (0)