aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/CellSPU
diff options
context:
space:
mode:
authorKalle Raiskila <kalle.raiskila@nokia.com>2010-11-22 16:28:26 +0000
committerKalle Raiskila <kalle.raiskila@nokia.com>2010-11-22 16:28:26 +0000
commitd87e571e6240c3d7d18b0a5f823a9c622c16c0aa (patch)
treebd47f88894d6aff3c974db15188c954aafee0084 /test/CodeGen/CellSPU
parentcdfecc8759941c2996214070478d30084b79d463 (diff)
downloadexternal_llvm-d87e571e6240c3d7d18b0a5f823a9c622c16c0aa.zip
external_llvm-d87e571e6240c3d7d18b0a5f823a9c622c16c0aa.tar.gz
external_llvm-d87e571e6240c3d7d18b0a5f823a9c622c16c0aa.tar.bz2
Fix a bug with extractelement on SPU.
In the attached testcase, the element was never extracted (missing rotate). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119973 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/CellSPU')
-rw-r--r--test/CodeGen/CellSPU/rotate_ops.ll14
1 files changed, 13 insertions, 1 deletions
diff --git a/test/CodeGen/CellSPU/rotate_ops.ll b/test/CodeGen/CellSPU/rotate_ops.ll
index a504c00..e117208 100644
--- a/test/CodeGen/CellSPU/rotate_ops.ll
+++ b/test/CodeGen/CellSPU/rotate_ops.ll
@@ -1,5 +1,5 @@
; RUN: llc < %s -march=cellspu -o %t1.s
-; RUN: grep rot %t1.s | count 85
+; RUN: grep rot %t1.s | count 86
; RUN: grep roth %t1.s | count 8
; RUN: grep roti.*5 %t1.s | count 1
; RUN: grep roti.*27 %t1.s | count 1
@@ -8,6 +8,7 @@
; RUN grep rothi.*,.3 %t1.s | count 1
; RUN: grep andhi %t1.s | count 4
; RUN: grep shlhi %t1.s | count 4
+; RUN: cat %t1.s | FileCheck %s
target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
target triple = "spu"
@@ -158,3 +159,14 @@ define i8 @rotri8(i8 %A) {
%D = or i8 %B, %C ; <i8> [#uses=1]
ret i8 %D
}
+
+define <2 x float> @test1(<4 x float> %param )
+{
+; CHECK: test1
+; CHECK: rotqbyi
+ %el = extractelement <4 x float> %param, i32 1
+ %vec1 = insertelement <1 x float> undef, float %el, i32 0
+ %rv = shufflevector <1 x float> %vec1, <1 x float> undef, <2 x i32><i32 0,i32 0>
+; CHECK: bi $lr
+ ret <2 x float> %rv
+}