diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-06-29 14:02:34 +0000 | 
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-06-29 14:02:34 +0000 | 
| commit | 38a7d7cbc308c6a3f77eac646155ebfa869467ef (patch) | |
| tree | fce9a15fbc3660096672336bbe42dbdafa71004b /llvm/lib/CodeGen | |
| parent | d34bb4e9b0467152bb39eb59cbcb668341b02b0d (diff) | |
| download | bcm5719-llvm-38a7d7cbc308c6a3f77eac646155ebfa869467ef.tar.gz bcm5719-llvm-38a7d7cbc308c6a3f77eac646155ebfa869467ef.zip  | |
Add a VT argument to getMinimalPhysRegClass and replace the copy related uses
of getPhysicalRegisterRegClass with it.
If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.
llvm-svn: 107140
Diffstat (limited to 'llvm/lib/CodeGen')
4 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp index 61a73412bbe..0cb463dcd39 100644 --- a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp @@ -123,7 +123,7 @@ EmitCopyFromReg(SDNode *Node, unsigned ResNo, bool IsClone, bool IsCloned,    EVT VT = Node->getValueType(ResNo);    const TargetRegisterClass *SrcRC = 0, *DstRC = 0; -  SrcRC = TRI->getPhysicalRegisterRegClass(SrcReg, VT); +  SrcRC = TRI->getMinimalPhysRegClass(SrcReg, VT);    // Figure out the register class to create for the destreg.    if (VRBase) { @@ -794,13 +794,13 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned,      if (TargetRegisterInfo::isVirtualRegister(SrcReg))        SrcTRC = MRI->getRegClass(SrcReg);      else -      SrcTRC = TRI->getPhysicalRegisterRegClass(SrcReg,SrcVal.getValueType()); +      SrcTRC = TRI->getMinimalPhysRegClass(SrcReg,SrcVal.getValueType());      if (TargetRegisterInfo::isVirtualRegister(DestReg))        DstTRC = MRI->getRegClass(DestReg);      else -      DstTRC = TRI->getPhysicalRegisterRegClass(DestReg, -                                            Node->getOperand(1).getValueType()); +      DstTRC = TRI->getMinimalPhysRegClass(DestReg, +                                           Node->getOperand(1).getValueType());      bool Emitted = TII->copyRegToReg(*MBB, InsertPos, DestReg, SrcReg,                                       DstTRC, SrcTRC, Node->getDebugLoc()); diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp index ad8630afff4..3b86c328658 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp @@ -535,7 +535,7 @@ void ScheduleDAGFast::ListScheduleBottomUp() {          SUnit *LRDef = LiveRegDefs[Reg];          EVT VT = getPhysicalRegisterVT(LRDef->getNode(), Reg, TII);          const TargetRegisterClass *RC = -          TRI->getPhysicalRegisterRegClass(Reg, VT); +          TRI->getMinimalPhysRegClass(Reg, VT);          const TargetRegisterClass *DestRC = TRI->getCrossCopyRegClass(RC);          // If cross copy register class is null, then it must be possible copy diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index f5d4d658850..3ef521c398e 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -795,7 +795,7 @@ void ScheduleDAGRRList::ListScheduleBottomUp() {          SUnit *LRDef = LiveRegDefs[Reg];          EVT VT = getPhysicalRegisterVT(LRDef->getNode(), Reg, TII);          const TargetRegisterClass *RC = -          TRI->getPhysicalRegisterRegClass(Reg, VT); +          TRI->getMinimalPhysRegClass(Reg, VT);          const TargetRegisterClass *DestRC = TRI->getCrossCopyRegClass(RC);          // If cross copy register class is null, then it must be possible copy diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp index aa6ce05992c..ebc76e9b363 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp @@ -101,7 +101,7 @@ static void CheckForPhysRegDependency(SDNode *Def, SDNode *User, unsigned Op,          II.ImplicitDefs[ResNo - II.getNumDefs()] == Reg) {        PhysReg = Reg;        const TargetRegisterClass *RC = -        TRI->getPhysicalRegisterRegClass(Reg, Def->getValueType(ResNo)); +        TRI->getMinimalPhysRegClass(Reg, Def->getValueType(ResNo));        Cost = RC->getCopyCost();      }    }  | 

