forked from OSchip/llvm-project
Implement SystemZRegisterInfo::getMatchingSuperRegClass to enable cross-class joins.
llvm-svn: 130857
This commit is contained in:
parent
e7528c45ea
commit
093a94cdae
|
@ -58,6 +58,20 @@ BitVector SystemZRegisterInfo::getReservedRegs(const MachineFunction &MF) const
|
|||
return Reserved;
|
||||
}
|
||||
|
||||
const TargetRegisterClass*
|
||||
SystemZRegisterInfo::getMatchingSuperRegClass(const TargetRegisterClass *A,
|
||||
const TargetRegisterClass *B,
|
||||
unsigned Idx) const {
|
||||
switch(Idx) {
|
||||
// Exact sub-classes don't exist for the other sub-register indexes.
|
||||
default: return 0;
|
||||
case SystemZ::subreg_32bit:
|
||||
if (B == SystemZ::ADDR32RegisterClass)
|
||||
return A->getSize() == 8 ? SystemZ::ADDR64RegisterClass : 0;
|
||||
return A;
|
||||
}
|
||||
}
|
||||
|
||||
void SystemZRegisterInfo::
|
||||
eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const {
|
||||
|
|
|
@ -34,6 +34,10 @@ struct SystemZRegisterInfo : public SystemZGenRegisterInfo {
|
|||
|
||||
BitVector getReservedRegs(const MachineFunction &MF) const;
|
||||
|
||||
const TargetRegisterClass*
|
||||
getMatchingSuperRegClass(const TargetRegisterClass *A,
|
||||
const TargetRegisterClass *B, unsigned Idx) const;
|
||||
|
||||
void eliminateCallFramePseudoInstr(MachineFunction &MF,
|
||||
MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator I) const;
|
||||
|
|
Loading…
Reference in New Issue