@@ -2492,3 +2492,28 @@ define <4 x float> @shuffle_mem_v4f32_0624(<4 x float> %a0, <4 x float>* %a1) {
2492
2492
%2 = shufflevector <4 x float > %1 , <4 x float > %a0 , <4 x i32 > <i32 0 , i32 6 , i32 2 , i32 4 >
2493
2493
ret <4 x float > %2
2494
2494
}
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