aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/ARM/vget_lane.ll
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-11-03 16:24:50 +0000
committerBob Wilson <bob.wilson@apple.com>2010-11-03 16:24:50 +0000
commit3468c2ee20e26ded1a5182edcc72e36fb09c909b (patch)
treee4274850a1362ebe62915a022704ed44b2256786 /test/CodeGen/ARM/vget_lane.ll
parentd66f2b74f2f01bb1f6c7d0f1b8408bd24ffa654c (diff)
downloadexternal_llvm-3468c2ee20e26ded1a5182edcc72e36fb09c909b.zip
external_llvm-3468c2ee20e26ded1a5182edcc72e36fb09c909b.tar.gz
external_llvm-3468c2ee20e26ded1a5182edcc72e36fb09c909b.tar.bz2
Check for extractelement with a variable operand for the element number.
For NEON we had been assuming this was always an immediate constant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118175 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/ARM/vget_lane.ll')
-rw-r--r--test/CodeGen/ARM/vget_lane.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/vget_lane.ll b/test/CodeGen/ARM/vget_lane.ll
index 0fd1843..512dc5a 100644
--- a/test/CodeGen/ARM/vget_lane.ll
+++ b/test/CodeGen/ARM/vget_lane.ll
@@ -210,3 +210,20 @@ entry:
%0 = insertelement <2 x float> %arg1_float32x2_t, float %arg0_float32_t, i32 1 ; <<2 x float>> [#uses=1]
ret <2 x float> %0
}
+
+; The llvm extractelement instruction does not require that the lane number
+; be an immediate constant. Make sure a variable lane number is handled.
+
+define i32 @vget_variable_lanes8(<8 x i8>* %A, i32 %B) nounwind {
+ %tmp1 = load <8 x i8>* %A
+ %tmp2 = extractelement <8 x i8> %tmp1, i32 %B
+ %tmp3 = sext i8 %tmp2 to i32
+ ret i32 %tmp3
+}
+
+define i32 @vgetQ_variable_lanei32(<4 x i32>* %A, i32 %B) nounwind {
+ %tmp1 = load <4 x i32>* %A
+ %tmp2 = add <4 x i32> %tmp1, %tmp1
+ %tmp3 = extractelement <4 x i32> %tmp2, i32 %B
+ ret i32 %tmp3
+}