summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
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
commitceb49296efdc0b8cfde95d68eecfd09b28f1adae (patch)
tree41dbdf8aa38930699f88339bece7dbc7be736335 /llvm/test/CodeGen
parentb8211b80bc53699674645172f0af82a72dcbdc41 (diff)
downloadbcm5719-llvm-ceb49296efdc0b8cfde95d68eecfd09b28f1adae.tar.gz
bcm5719-llvm-ceb49296efdc0b8cfde95d68eecfd09b28f1adae.zip
Check for extractelement with a variable operand for the element number.
For NEON we had been assuming this was always an immediate constant. llvm-svn: 118175
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/ARM/vget_lane.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/vget_lane.ll b/llvm/test/CodeGen/ARM/vget_lane.ll
index 0fd184388da..512dc5a67fb 100644
--- a/llvm/test/CodeGen/ARM/vget_lane.ll
+++ b/llvm/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
+}
OpenPOWER on IntegriCloud