Skip to content

Commit 74c3150

Browse files
committed
[X86] Add shuffle tests from Issue #86076
SLP should be doing a better job, but both shuffles lower to poorer codegen than necessary
1 parent e925968 commit 74c3150

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

llvm/test/CodeGen/X86/vector-shuffle-512-v16.ll

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,36 @@ define <16 x float> @shuffle_v16f32_02_03_16_17_06_07_20_21_10_11_24_25_14_15_28
177177
ret <16 x float> %shuffle
178178
}
179179

180+
; PR86076
181+
define <16 x float> @shuffle_f32_v16f32_00_08_01_09_02_10_03_11_04_12_05_13_06_14_07_15(float %a0, float %a1) {
182+
; ALL-LABEL: shuffle_f32_v16f32_00_08_01_09_02_10_03_11_04_12_05_13_06_14_07_15:
183+
; ALL: # %bb.0:
184+
; ALL-NEXT: vbroadcastss %xmm0, %ymm0
185+
; ALL-NEXT: vbroadcastss %xmm1, %ymm1
186+
; ALL-NEXT: vunpcklps {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
187+
; ALL-NEXT: vinsertf64x4 $1, %ymm0, %zmm0, %zmm0
188+
; ALL-NEXT: retq
189+
%v0 = insertelement <8 x float> poison, float %a0, i64 0
190+
%v1 = insertelement <8 x float> poison, float %a1, i64 0
191+
%b0 = shufflevector <8 x float> %v0, <8 x float> poison, <8 x i32> zeroinitializer
192+
%b1 = shufflevector <8 x float> %v1, <8 x float> poison, <8 x i32> zeroinitializer
193+
%r = shufflevector <8 x float> %b0, <8 x float> %b1, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
194+
ret <16 x float> %r
195+
}
196+
197+
; PR86076
198+
define <16 x float> @shuffle_f32_v16f32_00_08_00_08_00_08_00_08_00_08_00_08_00_08_00_08(float %a0, float %a1) {
199+
; ALL-LABEL: shuffle_f32_v16f32_00_08_00_08_00_08_00_08_00_08_00_08_00_08_00_08:
200+
; ALL: # %bb.0:
201+
; ALL-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],zero,zero
202+
; ALL-NEXT: vbroadcastsd %xmm0, %zmm0
203+
; ALL-NEXT: retq
204+
%v0 = insertelement <8 x float> poison, float %a0, i64 0
205+
%v1 = insertelement <8 x float> poison, float %a1, i64 0
206+
%sv = shufflevector <8 x float> %v0, <8 x float> %v1, <16 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
207+
ret <16 x float> %sv
208+
}
209+
180210
define <16 x i32> @shuffle_v16i32_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00(<16 x i32> %a, <16 x i32> %b) {
181211
; ALL-LABEL: shuffle_v16i32_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00:
182212
; ALL: # %bb.0:

0 commit comments

Comments
 (0)