[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCInstrInfo.td PPCRegisterInfo.cpp

Evan Cheng evan.cheng at apple.com
Mon Jan 9 10:28:34 PST 2006



Changes in directory llvm/lib/Target/PowerPC:

PPCInstrInfo.td updated: 1.169 -> 1.170
PPCRegisterInfo.cpp updated: 1.38 -> 1.39
---
Log message:

New DAG node properties SNDPInFlag, SNDPOutFlag, and SNDPOptInFlag to replace
hasInFlag, hasOutFlag.


---
Diffs of the changes:  (+6 -11)

 PPCInstrInfo.td     |   14 +++++---------
 PPCRegisterInfo.cpp |    3 +--
 2 files changed, 6 insertions(+), 11 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.169 llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.170
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.169	Wed Jan  4 19:25:28 2006
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td	Mon Jan  9 12:28:21 2006
@@ -47,7 +47,8 @@
 def callseq_end   : SDNode<"ISD::CALLSEQ_END",   SDT_PPCCallSeq,[SDNPHasChain]>;
 
 def SDT_PPCRetFlag : SDTypeProfile<0, 0, []>;
-def retflag       : SDNode<"PPCISD::RET_FLAG", SDT_PPCRetFlag, [SDNPHasChain]>;
+def retflag       : SDNode<"PPCISD::RET_FLAG", SDT_PPCRetFlag,
+	                   [SDNPHasChain, SDNPOptInFlag]>;
 
 //===----------------------------------------------------------------------===//
 // PowerPC specific transformation functions and pattern fragments.
@@ -222,13 +223,10 @@
 }
 
 
-let isTerminator = 1 in {
+let isTerminator = 1, noResults = 1 in {
   // FIXME: temporary workaround for return without an incoming flag.
-  let isReturn = 1, noResults = 1 in
-    def BLRVOID : XLForm_2_ext<19, 16, 20, 0, 0, (ops), "blr", BrB, [(ret)]>;
-  let isReturn = 1, noResults = 1, hasInFlag = 1 in
-    def BLR : XLForm_2_ext<19, 16, 20, 0, 0, (ops), "blr", BrB, []>;
-  let noResults = 1 in
+  let isReturn = 1 in
+    def BLR : XLForm_2_ext<19, 16, 20, 0, 0, (ops), "blr", BrB, [(retflag)]>;
   def BCTR : XLForm_2_ext<19, 528, 20, 0, 0, (ops), "bctr", BrB, []>;
 }
 
@@ -1072,8 +1070,6 @@
 def : Pat<(store (v4i32 VRRC:$rS), xoaddr:$dst),
           (STVX (v4i32 VRRC:$rS), xoaddr:$dst)>;
 
-def : Pat<(retflag), (BLR)>;
-
 // Same as above, but using a temporary. FIXME: implement temporaries :)
 /*
 def : Pattern<(xor GPRC:$in, imm:$imm),


Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.38 llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.39
--- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.38	Fri Dec 23 16:14:32 2005
+++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp	Mon Jan  9 12:28:21 2006
@@ -373,8 +373,7 @@
   const MachineFrameInfo *MFI = MF.getFrameInfo();
   MachineBasicBlock::iterator MBBI = prior(MBB.end());
   MachineInstr *MI;
-  // FIXME: BLRVOID should be removed. See PPCInstrInfo.td
-  assert((MBBI->getOpcode() == PPC::BLR || MBBI->getOpcode() == PPC::BLRVOID) &&
+  assert(MBBI->getOpcode() == PPC::BLR &&
          "Can only insert epilog into returning blocks");
 
   // Get the number of bytes allocated from the FrameInfo...






More information about the llvm-commits mailing list