Skip to content

Commit 703e2d5

Browse files
committed
[X86] Add test coverage for #116815
1 parent d3f1b86 commit 703e2d5

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,32 @@ define void @PR63030(ptr %p0) {
924924
ret void
925925
}
926926

927+
define <2 x i64> @PR116815(<4 x i64> %v0, <4 x i64> %v1) {
928+
; CHECK-LABEL: PR116815:
929+
; CHECK: # %bb.0:
930+
; CHECK-NEXT: vpslld $16, %ymm1, %ymm1
931+
; CHECK-NEXT: vpblendw {{.*#+}} ymm0 = ymm0[0],ymm1[1],ymm0[2],ymm1[3],ymm0[4],ymm1[5],ymm0[6],ymm1[7],ymm0[8],ymm1[9],ymm0[10],ymm1[11],ymm0[12],ymm1[13],ymm0[14],ymm1[15]
932+
; CHECK-NEXT: vextracti128 $1, %ymm0, %xmm1
933+
; CHECK-NEXT: vmovq {{.*#+}} xmm2 = [0,4,8,12,2,6,10,14,0,0,0,0,0,0,0,0]
934+
; CHECK-NEXT: vpshufb %xmm2, %xmm1, %xmm1
935+
; CHECK-NEXT: vpshufb %xmm2, %xmm0, %xmm0
936+
; CHECK-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
937+
; CHECK-NEXT: vzeroupper
938+
; CHECK-NEXT: ret{{[l|q]}}
939+
%tmp0 = bitcast <4 x i64> %v1 to <8 x i32>
940+
%tmp1 = shl <8 x i32> %tmp0, splat (i32 16)
941+
%tmp2 = bitcast <8 x i32> %tmp1 to <16 x i16>
942+
%tmp3 = bitcast <4 x i64> %v0 to <16 x i16>
943+
%blend = shufflevector <16 x i16> %tmp3, <16 x i16> %tmp2, <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
944+
%tmp4 = bitcast <16 x i16> %blend to <32 x i8>
945+
%tmp5 = shufflevector <32 x i8> %tmp4, <32 x i8> poison, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 2, i32 6, i32 10, i32 14, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 20, i32 24, i32 28, i32 18, i32 22, i32 26, i32 30, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
946+
%tmp6 = bitcast <32 x i8> %tmp5 to <8 x i32>
947+
%tmp7 = shufflevector <8 x i32> %tmp6, <8 x i32> poison, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 poison, i32 poison, i32 poison, i32 poison>
948+
%tmp8 = bitcast <8 x i32> %tmp7 to <4 x i64>
949+
%shuffle.i = shufflevector <4 x i64> %tmp8, <4 x i64> poison, <2 x i32> <i32 0, i32 1>
950+
ret <2 x i64> %shuffle.i
951+
}
952+
927953
define void @packss_zext_v8i1() {
928954
; X86-LABEL: packss_zext_v8i1:
929955
; X86: # %bb.0:

0 commit comments

Comments
 (0)