diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-11-03 16:24:50 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-11-03 16:24:50 +0000 |
commit | 3468c2ee20e26ded1a5182edcc72e36fb09c909b (patch) | |
tree | e4274850a1362ebe62915a022704ed44b2256786 /test/CodeGen/ARM/vget_lane.ll | |
parent | d66f2b74f2f01bb1f6c7d0f1b8408bd24ffa654c (diff) | |
download | external_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.ll | 17 |
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 +} |