aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalle Raiskila <kalle.raiskila@nokia.com>2011-10-13 11:40:03 +0000
committerKalle Raiskila <kalle.raiskila@nokia.com>2011-10-13 11:40:03 +0000
commit898f336c515e7af607d1ee05a98319912894f24f (patch)
tree2b2436d841336f12656a4df5e359ecaf226dc0c5
parent4e68054b20725f6ec1cac33630258f749fe5debe (diff)
Mark 'branch indirect' instruction as an indirect branch.
Not having it confused assembly printing of jumptables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141862 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/CellSPU/SPUInstrInfo.td6
-rw-r--r--test/CodeGen/CellSPU/jumptable.ll12
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/Target/CellSPU/SPUInstrInfo.td b/lib/Target/CellSPU/SPUInstrInfo.td
index aa6d02ce3c..f76ebd75bf 100644
--- a/lib/Target/CellSPU/SPUInstrInfo.td
+++ b/lib/Target/CellSPU/SPUInstrInfo.td
@@ -3467,8 +3467,10 @@ let isBranch = 1, isTerminator = 1, hasCtrlDep = 1 in {
[/* no pattern */]>;
// Indirect branch
- def BI:
- BIForm<0b00010101100, "bi\t$func", [(brind R32C:$func)]>;
+ let isIndirectBranch = 1 in {
+ def BI:
+ BIForm<0b00010101100, "bi\t$func", [(brind R32C:$func)]>;
+ }
}
// Conditional branches:
diff --git a/test/CodeGen/CellSPU/jumptable.ll b/test/CodeGen/CellSPU/jumptable.ll
index 87376ef6ed..66c2fdeb51 100644
--- a/test/CodeGen/CellSPU/jumptable.ll
+++ b/test/CodeGen/CellSPU/jumptable.ll
@@ -4,18 +4,18 @@ define i32 @test(i32 %param) {
entry:
;CHECK: ai {{\$.}}, $3, -1
;CHECK: clgti {{\$., \$.}}, 3
-;CHECK: brnz {{\$.}},.LBB0_2
- switch i32 %param, label %bb1 [
- i32 1, label %bb3
+;CHECK: brnz {{\$.}},.LBB0_
+ switch i32 %param, label %bb2 [
+ i32 1, label %bb1
i32 2, label %bb2
i32 3, label %bb3
- i32 4, label %bb1
+ i32 4, label %bb2
]
-
+;CHECK-NOT: # BB#2
bb1:
ret i32 1
bb2:
ret i32 2
bb3:
- ret i32 3
+ ret i32 %param
}