summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-12-04 18:42:54 +0000
committerChris Lattner <sabre@nondot.org>2005-12-04 18:42:54 +0000
commitd9d18aff6a3ab86bafa25919d3a3e74091aabd5d (patch)
tree9f0dc204cd44c8aaa22ca3e933a5405a08dc5468 /llvm/lib/Target
parent95cb7638181e36174cc6d4d2b1596dc9efcb6ded (diff)
downloadbcm5719-llvm-d9d18aff6a3ab86bafa25919d3a3e74091aabd5d.tar.gz
bcm5719-llvm-d9d18aff6a3ab86bafa25919d3a3e74091aabd5d.zip
Define BR in the .td file now that Evan made tblgen smarter.
llvm-svn: 24589
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PPCInstrFormats.td3
-rw-r--r--llvm/lib/Target/PowerPC/PPCInstrInfo.td12
2 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrFormats.td b/llvm/lib/Target/PowerPC/PPCInstrFormats.td
index ef3cf1a7ab6..4d69c7700ba 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrFormats.td
+++ b/llvm/lib/Target/PowerPC/PPCInstrFormats.td
@@ -31,8 +31,9 @@ class I<bits<6> opcode, dag OL, string asmstr, InstrItinClass itin>
// 1.7.1 I-Form
class IForm<bits<6> opcode, bit aa, bit lk, dag OL, string asmstr,
- InstrItinClass itin>
+ InstrItinClass itin, list<dag> pattern>
: I<opcode, OL, asmstr, itin> {
+ let Pattern = pattern;
bits<24> LI;
let Inst{6-29} = LI;
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td
index 38f4ba830ef..48ac98176b4 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td
+++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td
@@ -128,7 +128,7 @@ def u16imm : Operand<i32> {
def s16immX4 : Operand<i32> { // Multiply imm by 4 before printing.
let PrintMethod = "printS16X4ImmOperand";
}
-def target : Operand<i32> {
+def target : Operand<OtherVT> {
let PrintMethod = "printBranchOperand";
}
def calltarget : Operand<i32> {
@@ -194,7 +194,9 @@ let isBranch = 1, isTerminator = 1 in {
def COND_BRANCH : Pseudo<(ops CRRC:$crS, u16imm:$opc,
target:$true, target:$false),
"; COND_BRANCH", []>;
- def B : IForm<18, 0, 0, (ops target:$func), "b $func", BrB>;
+ def B : IForm<18, 0, 0, (ops target:$dst),
+ "b $dst", BrB,
+ [(br bb:$dst)]>;
// FIXME: 4*CR# needs to be added to the BI field!
// This will only work for CR0 as it stands now
@@ -223,8 +225,10 @@ let isCall = 1,
LR,CTR,
CR0,CR1,CR5,CR6,CR7] in {
// Convenient aliases for call instructions
- def BL : IForm<18, 0, 1, (ops calltarget:$func, variable_ops), "bl $func", BrB>;
- def BLA : IForm<18, 1, 1, (ops aaddr:$func, variable_ops), "bla $func", BrB>;
+ def BL : IForm<18, 0, 1, (ops calltarget:$func, variable_ops),
+ "bl $func", BrB, []>;
+ def BLA : IForm<18, 1, 1, (ops aaddr:$func, variable_ops),
+ "bla $func", BrB, []>;
def BCTRL : XLForm_2_ext<19, 528, 20, 0, 1, (ops variable_ops), "bctrl", BrB>;
}
OpenPOWER on IntegriCloud