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 | ceb49296efdc0b8cfde95d68eecfd09b28f1adae (patch) | |
| tree | 41dbdf8aa38930699f88339bece7dbc7be736335 /llvm/test/CodeGen | |
| parent | b8211b80bc53699674645172f0af82a72dcbdc41 (diff) | |
| download | bcm5719-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.ll | 17 |
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 +} |

