aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-10-25 21:59:00 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-10-25 21:59:00 +0000
commit5962d3ebb8f1aa8299648b8eb631412dfc80b2bd (patch)
tree4f27459b55dc69203f70f2fa62941aea84df9cfb
parent9eca5e814da3490ae889a75c93c0191f510b9f1c (diff)
New shuffle test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31187 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/CodeGen/X86/vec_shuffle-9.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGen/X86/vec_shuffle-9.ll b/test/CodeGen/X86/vec_shuffle-9.ll
new file mode 100644
index 0000000000..05b3c77c01
--- /dev/null
+++ b/test/CodeGen/X86/vec_shuffle-9.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 &&
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | grep punpck | wc -l | grep 2 &&
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | not grep pextrw
+
+<4 x int> %test(sbyte** %ptr) {
+entry:
+ %tmp = load sbyte** %ptr
+ %tmp = cast sbyte* %tmp to float*
+ %tmp = load float* %tmp
+ %tmp = insertelement <4 x float> undef, float %tmp, uint 0
+ %tmp9 = insertelement <4 x float> %tmp, float 0.000000e+00, uint 1
+ %tmp10 = insertelement <4 x float> %tmp9, float 0.000000e+00, uint 2
+ %tmp11 = insertelement <4 x float> %tmp10, float 0.000000e+00, uint 3
+ %tmp21 = cast <4 x float> %tmp11 to <16 x sbyte>
+ %tmp22 = shufflevector <16 x sbyte> %tmp21, <16 x sbyte> zeroinitializer, <16 x uint> < uint 0, uint 16, uint 1, uint 17, uint 2, uint 18, uint 3, uint 19, uint 4, uint 20, uint 5, uint 21, uint 6, uint 22, uint 7, uint 23 >
+ %tmp31 = cast <16 x sbyte> %tmp22 to <8 x short>
+ %tmp = shufflevector <8 x short> zeroinitializer, <8 x short> %tmp31, <8 x uint> < uint 0, uint 8, uint 1, uint 9, uint 2, uint 10, uint 3, uint 11 >
+ %tmp36 = cast <8 x short> %tmp to <4 x int>
+ ret <4 x int> %tmp36
+}