Define BR in the .td file now that Evan made tblgen smarter.
authorChris Lattner <sabre@nondot.org>
Sun, 4 Dec 2005 18:42:54 +0000 (18:42 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 4 Dec 2005 18:42:54 +0000 (18:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24589 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstrFormats.td
lib/Target/PowerPC/PPCInstrInfo.td

index ef3cf1a7ab60044f59c81f24dfcab963659f780c..4d69c7700bab33f85bf52b4f65a0cbe86dc83202 100644 (file)
@@ -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;
index 38f4ba830efdfa369fd2e9ddcd2ad22ac253c1a9..48ac98176b421cd76b440de589ce76599ff7dcff 100644 (file)
@@ -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>;
 }