Skip to content

Commit 5e62e16

Browse files
committed
[X86][SSE] Add another shufps+shufps test for fold through commutation
1 parent 30fcd29 commit 5e62e16

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2492,3 +2492,28 @@ define <4 x float> @shuffle_mem_v4f32_0624(<4 x float> %a0, <4 x float>* %a1) {
24922492
%2 = shufflevector <4 x float> %1, <4 x float> %a0, <4 x i32> <i32 0, i32 6, i32 2, i32 4>
24932493
ret <4 x float> %2
24942494
}
2495+
2496+
define <4 x float> @shuffle_mem_v4f32_4760(<4 x float> %a0, <4 x float>* %a1) {
2497+
; SSE-LABEL: shuffle_mem_v4f32_4760:
2498+
; SSE: # %bb.0:
2499+
; SSE-NEXT: movaps (%rdi), %xmm1
2500+
; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[2,0]
2501+
; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,3],xmm1[2,0]
2502+
; SSE-NEXT: retq
2503+
;
2504+
; AVX1OR2-LABEL: shuffle_mem_v4f32_4760:
2505+
; AVX1OR2: # %bb.0:
2506+
; AVX1OR2-NEXT: vmovaps (%rdi), %xmm1
2507+
; AVX1OR2-NEXT: vshufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[2,0]
2508+
; AVX1OR2-NEXT: vshufps {{.*#+}} xmm0 = xmm0[0,3],xmm1[2,0]
2509+
; AVX1OR2-NEXT: retq
2510+
;
2511+
; AVX512VL-LABEL: shuffle_mem_v4f32_4760:
2512+
; AVX512VL: # %bb.0:
2513+
; AVX512VL-NEXT: vmovaps {{.*#+}} xmm1 = [0,3,2,4]
2514+
; AVX512VL-NEXT: vpermt2ps (%rdi), %xmm1, %xmm0
2515+
; AVX512VL-NEXT: retq
2516+
%1 = load <4 x float>, <4 x float>* %a1
2517+
%2 = shufflevector <4 x float> %1, <4 x float> %a0, <4 x i32> <i32 4, i32 7, i32 6, i32 0>
2518+
ret <4 x float> %2
2519+
}

0 commit comments

Comments
 (0)