mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-04 21:30:49 +00:00
Added canFoldMemoryOperand for PPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44623 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7db2811f6e
commit
8c24e74b02
@ -613,6 +613,26 @@ MachineInstr *PPCRegisterInfo::foldMemoryOperand(MachineInstr *MI,
|
||||
return NewMI;
|
||||
}
|
||||
|
||||
bool PPCRegisterInfo::canFoldMemoryOperand(MachineInstr *MI,
|
||||
SmallVectorImpl<unsigned> &Ops) const {
|
||||
if (Ops.size() != 1) return NULL;
|
||||
|
||||
// Make sure this is a reg-reg copy. Note that we can't handle MCRF, because
|
||||
// it takes more than one instruction to store it.
|
||||
unsigned Opc = MI->getOpcode();
|
||||
|
||||
if ((Opc == PPC::OR &&
|
||||
MI->getOperand(1).getReg() == MI->getOperand(2).getReg()))
|
||||
return true;
|
||||
else if ((Opc == PPC::OR8 &&
|
||||
MI->getOperand(1).getReg() == MI->getOperand(2).getReg()))
|
||||
return true;
|
||||
else if (Opc == PPC::FMRD || Opc == PPC::FMRS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Stack Frame Processing methods
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -75,6 +75,9 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual bool canFoldMemoryOperand(MachineInstr *MI,
|
||||
SmallVectorImpl<unsigned> &Ops) const;
|
||||
|
||||
const unsigned *getCalleeSavedRegs(const MachineFunction* MF = 0) const;
|
||||
|
||||
const TargetRegisterClass* const*
|
||||
|
Loading…
Reference in New Issue
Block a user