From 44cd8ce6e5e8cdab4e92de225268f6aef6b87db8 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Tue, 31 Jan 2017 18:10:34 +0000 Subject: [PATCH] [X86][XOP] Add test showing failure to combine build vector to vpermil2ps shuffle git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293663 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/vector-shuffle-combining-xop.ll | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/CodeGen/X86/vector-shuffle-combining-xop.ll b/test/CodeGen/X86/vector-shuffle-combining-xop.ll index 73bb5b1f46e..16878c32638 100644 --- a/test/CodeGen/X86/vector-shuffle-combining-xop.ll +++ b/test/CodeGen/X86/vector-shuffle-combining-xop.ll @@ -341,6 +341,34 @@ define void @buildvector_v4f32_0404(float %a, float %b, <4 x float>* %ptr) { ret void } +define void @buildvector_v4f32_07z6(float %a, <4 x float> %b, <4 x float>* %ptr) { +; X32-LABEL: buildvector_v4f32_07z6: +; X32: # BB#0: +; X32-NEXT: movl {{[0-9]+}}(%esp), %eax +; X32-NEXT: vpermilps {{.*#+}} xmm1 = xmm0[3,1,2,3] +; X32-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero +; X32-NEXT: vunpcklps {{.*#+}} xmm1 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] +; X32-NEXT: vinsertps {{.*#+}} xmm0 = xmm1[0,1],zero,xmm0[2] +; X32-NEXT: vmovaps %xmm0, (%eax) +; X32-NEXT: retl +; +; X64-LABEL: buildvector_v4f32_07z6: +; X64: # BB#0: +; X64-NEXT: vpermilps {{.*#+}} xmm2 = xmm1[3,1,2,3] +; X64-NEXT: vunpcklps {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] +; X64-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm1[2] +; X64-NEXT: vmovaps %xmm0, (%rdi) +; X64-NEXT: retq + %b2 = extractelement <4 x float> %b, i32 2 + %b3 = extractelement <4 x float> %b, i32 3 + %v0 = insertelement <4 x float> undef, float %a, i32 0 + %v1 = insertelement <4 x float> %v0, float %b3, i32 1 + %v2 = insertelement <4 x float> %v1, float 0.0, i32 2 + %v3 = insertelement <4 x float> %v2, float %b2, i32 3 + store <4 x float> %v3, <4 x float>* %ptr + ret void +} + define <2 x double> @constant_fold_vpermil2pd() { ; X32-LABEL: constant_fold_vpermil2pd: ; X32: # BB#0: -- 2.11.0