summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/avx-splat.ll
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2011-08-11 02:49:44 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2011-08-11 02:49:44 +0000
commit5f1d8abf759ab3553abe5e7ed40174bc57a985c8 (patch)
tree6617eaa888714bc7739147857de21d82495f6e2a /test/CodeGen/X86/avx-splat.ll
parenta5134a0ea3ee9e12ae3ca7907b7998e0d7f4d441 (diff)
downloadllvm-5f1d8abf759ab3553abe5e7ed40174bc57a985c8.tar.gz
llvm-5f1d8abf759ab3553abe5e7ed40174bc57a985c8.tar.bz2
llvm-5f1d8abf759ab3553abe5e7ed40174bc57a985c8.tar.xz
Splats for v8i32/v8f32 can be handled by VPERMILPSY. This was causing
infinite recursive calls in legalize. Fix PR10562 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137296 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/avx-splat.ll')
-rw-r--r--test/CodeGen/X86/avx-splat.ll24
1 files changed, 21 insertions, 3 deletions
diff --git a/test/CodeGen/X86/avx-splat.ll b/test/CodeGen/X86/avx-splat.ll
index 243ab9ba31..ca35b7f265 100644
--- a/test/CodeGen/X86/avx-splat.ll
+++ b/test/CodeGen/X86/avx-splat.ll
@@ -51,8 +51,9 @@ entry:
; To:
; shuffle (vload ptr)), undef, <1, 1, 1, 1>
; CHECK: vmovaps
-; CHECK-NEXT: vpextrd
-define void @funcE() nounwind {
+; CHECK-NEXT: vinsertf128 $1
+; CHECK-NEXT: vpermilps $-1
+define <8 x float> @funcE() nounwind {
allocas:
%udx495 = alloca [18 x [18 x float]], align 32
br label %for_test505.preheader
@@ -74,7 +75,7 @@ load.i1247: ; preds = %for_exit499
__load_and_broadcast_32.exit1249: ; preds = %load.i1247, %for_exit499
%load_broadcast12281250 = phi <8 x float> [ %phitmp, %load.i1247 ], [ undef, %for_exit499 ]
- ret void
+ ret <8 x float> %load_broadcast12281250
}
; CHECK: vpshufd $0
@@ -87,3 +88,20 @@ define <8 x float> @funcF(i32* %ptr) nounwind {
ret <8 x float> %tmp
}
+; CHECK: vinsertf128 $1
+; CHECK-NEXT: vpermilps $0
+define <8 x float> @funcG(<8 x float> %a) nounwind uwtable readnone ssp {
+entry:
+ %shuffle = shufflevector <8 x float> %a, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
+ ret <8 x float> %shuffle
+}
+
+; CHECK: vextractf128 $1
+; CHECK-NEXT: vinsertf128 $1
+; CHECK-NEXT: vpermilps $85
+define <8 x float> @funcH(<8 x float> %a) nounwind uwtable readnone ssp {
+entry:
+ %shuffle = shufflevector <8 x float> %a, <8 x float> undef, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
+ ret <8 x float> %shuffle
+}
+