|
LLVM
4.0.0
|
#include <PPCRegisterInfo.h>
Definition at line 57 of file PPCRegisterInfo.h.
| PPCRegisterInfo::PPCRegisterInfo | ( | const PPCTargetMachine & | TM | ) |
Definition at line 60 of file PPCRegisterInfo.cpp.
References llvm::ARM_MB::LD.
|
override |
Definition at line 200 of file PPCRegisterInfo.cpp.
References llvm::NVPTX::PTXCvtMode::RM.
|
override |
Definition at line 786 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), assert(), llvm::BuildMI(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::PPCISD::DYNALLOC, llvm::PPCISD::DYNAREAOFFSET, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::ISD::FrameIndex, llvm::DebugLoc::get(), getBaseRegister(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::PPCFunctionInfo::getFramePointerSaveIndex(), getFrameRegister(), llvm::MachineFunction::getFunction(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineFunction::getInfo(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineFrameInfo::getObjectOffset(), getOffsetONFromFION(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::Function::hasFnAttribute(), llvm::ISD::INLINEASM, is64Bit(), llvm::MachineInstr::isInlineAsm(), llvm::isInt< 16 >(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, lowerCRBitRestore(), lowerCRBitSpilling(), lowerCRRestore(), lowerCRSpilling(), lowerDynamicAlloc(), lowerDynamicAreaOffset(), lowerVRSAVERestore(), lowerVRSAVESpilling(), MBB, MI, Offset, llvm::MachineInstr::setDesc(), TII, and usesIXAddr().
| unsigned PPCRegisterInfo::getBaseRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 940 of file PPCRegisterInfo.cpp.
References getFrameRegister(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::TargetMachine::isPositionIndependent(), llvm::PPCTargetMachine::isPPC64(), and llvm::PPCSubtarget::isSVR4ABI().
Referenced by llvm::PPCFrameLowering::determineCalleeSaves(), eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitPrologue(), needsFrameBaseReg(), and llvm::PPCFrameLowering::replaceFPWithRealFP().
|
override |
Code Generation virtual methods...
Definition at line 114 of file PPCRegisterInfo.cpp.
References llvm::CallingConv::AnyReg, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), llvm::PPCSubtarget::hasVSX(), llvm::MachineRegisterInfo::isAllocatable(), llvm::PPCSubtarget::isDarwinABI(), and llvm::PPCTargetMachine::isPPC64().
| const MCPhysReg * PPCRegisterInfo::getCalleeSavedRegsViaCopy | ( | const MachineFunction * | MF | ) | const |
Definition at line 147 of file PPCRegisterInfo.cpp.
References assert(), llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), getReservedRegs(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), llvm::PPCSubtarget::isDarwinABI(), llvm::PPCTargetMachine::isPPC64(), llvm::PPCFunctionInfo::isSplitCSR(), and llvm::BitVector::test().
Referenced by llvm::PPCTargetLowering::insertCopiesSplitCSR().
|
override |
Definition at line 172 of file PPCRegisterInfo.cpp.
References llvm::CallingConv::AnyReg, llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), llvm::PPCSubtarget::hasVSX(), llvm::PPCSubtarget::isDarwinABI(), and llvm::PPCTargetMachine::isPPC64().
|
override |
Definition at line 931 of file PPCRegisterInfo.cpp.
References llvm::PPCFrameLowering::hasFP(), and llvm::PPCTargetMachine::isPPC64().
Referenced by eliminateFrameIndex(), and getBaseRegister().
|
override |
Definition at line 329 of file PPCRegisterInfo.cpp.
References llvm::TargetRegisterInfo::getLargestLegalSuperClass(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasP8Vector(), and llvm::PPCSubtarget::hasVSX().
Definition at line 196 of file PPCRegisterInfo.cpp.
Referenced by llvm::PPCTargetLowering::emitEHSjLjSetJmp().
|
override |
getPointerRegClass - Return the register class to use to hold pointers.
This is used for addressing modes.
Definition at line 98 of file PPCRegisterInfo.cpp.
References llvm::PPCTargetMachine::isPPC64().
|
override |
Definition at line 295 of file PPCRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), and llvm::PPCFrameLowering::hasFP().
|
override |
Definition at line 205 of file PPCRegisterInfo.cpp.
References llvm::sys::path::begin(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), hasBasePointer(), llvm::MachineFunction::hasInlineAsm(), I, llvm::ARM_PROC::IE, llvm::PPCSubtarget::isDarwinABI(), llvm::TargetMachine::isPositionIndependent(), llvm::PPCTargetMachine::isPPC64(), llvm::PPCSubtarget::isSVR4ABI(), R2, llvm::BitVector::reset(), llvm::NVPTX::PTXCvtMode::RM, llvm::BitVector::set(), and llvm::PPCFunctionInfo::usesTOCBasePtr().
Referenced by getCalleeSavedRegsViaCopy().
| bool PPCRegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 954 of file PPCRegisterInfo.cpp.
References AlwaysBasePointer, and EnableBasePointer.
Referenced by llvm::PPCFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineFrameLayout(), eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitPrologue(), getBaseRegister(), getReservedRegs(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and llvm::PPCFrameLowering::replaceFPWithRealFP().
|
override |
Definition at line 735 of file PPCRegisterInfo.cpp.
References llvm::PPCFunctionInfo::getCRSpillFrameIndex(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getSubtarget(), llvm::PPCTargetMachine::isPPC64(), and llvm::PPCSubtarget::isSVR4ABI().
|
override |
Definition at line 1061 of file PPCRegisterInfo.cpp.
References assert(), llvm::MachineOperand::getImm(), getOffsetONFromFION(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isFI(), llvm::isInt< 16 >(), Offset, and usesIXAddr().
Referenced by needsFrameBaseReg().
| void PPCRegisterInfo::lowerCRBitRestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 632 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineInstr::definesRegister(), llvm::MachineBasicBlock::erase(), llvm::DebugLoc::get(), llvm::getCRFromCRBit(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::RegState::Implicit, llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, MBB, llvm::PPCISD::MFOCRF, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerCRBitSpilling | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 588 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineBasicBlock::erase(), llvm::ISD::FrameIndex, llvm::DebugLoc::get(), llvm::getCRFromCRBit(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::getKillRegState(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::isKill(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, llvm::AMDGPUISD::KILL, MBB, llvm::PPCISD::MFOCRF, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerCRRestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 545 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineInstr::definesRegister(), llvm::MachineBasicBlock::erase(), llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, MBB, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerCRSpilling | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
lowerCRSpilling - Generate the code for spilling a CR register.
Instead of reserving a whole register (R0), we scrounge for one here. This generates code like this:
mfcr rA ; Move the conditional register into GPR rA. rlwinm rA, rA, SB, 0, 31 ; Shift the bits left so they are in CR0's slot. stw rA, FI ; Store rA to the frame.
Definition at line 500 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineBasicBlock::erase(), llvm::ISD::FrameIndex, llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::getKillRegState(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::isKill(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, MBB, llvm::PPCISD::MFOCRF, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerDynamicAlloc | ( | MachineBasicBlock::iterator | II | ) | const |
lowerDynamicAlloc - Generate the code for allocating an object in the current frame.
The sequence of code will be in the general form
addi R0, SP, #frameSize ; get the address of the previous frame stwxu R0, SP, Rnegsize ; add and update the SP with the negated size addi Rnew, SP, #maxCalFrameSize ; get the top of the allocation
Definition at line 358 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::ISD::AND, assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineBasicBlock::erase(), llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::PPCSubtarget::getInstrInfo(), llvm::getKillRegState(), llvm::MachineFrameInfo::getMaxAlignment(), llvm::MachineFrameInfo::getMaxCallFrameSize(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::TargetFrameLowering::getStackAlignment(), llvm::MachineFrameInfo::getStackSize(), llvm::MachineFunction::getSubtarget(), llvm::isInt< 16 >(), llvm::MachineOperand::isKill(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, llvm::ARM_MB::LD, MBB, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerDynamicAreaOffset | ( | MachineBasicBlock::iterator | II | ) | const |
Definition at line 471 of file PPCRegisterInfo.cpp.
References llvm::BuildMI(), llvm::MachineBasicBlock::erase(), llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineFrameInfo::getMaxCallFrameSize(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getSubtarget(), MBB, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerVRSAVERestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 708 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), assert(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineInstr::definesRegister(), llvm::MachineBasicBlock::erase(), llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::RegState::Kill, MBB, MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerVRSAVESpilling | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 682 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineBasicBlock::erase(), llvm::ISD::FrameIndex, llvm::DebugLoc::get(), llvm::MachineInstr::getDebugLoc(), llvm::PPCSubtarget::getInstrInfo(), llvm::getKillRegState(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::isKill(), llvm::RegState::Kill, MBB, MI, and TII.
Referenced by eliminateFrameIndex().
|
override |
Insert defining instruction(s) for BaseReg to be a pointer to FrameIdx at the beginning of the basic block.
Definition at line 1016 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::MachineBasicBlock::end(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MipsISD::Ins, llvm::PPCTargetMachine::isPPC64(), MRI, and TII.
|
override |
Returns true if the instruction's frame index reference would be better served by a base register other than FP or SP.
Used by LocalStackFrameAllocation to determine which frame index references it should create new base registers for.
Definition at line 971 of file PPCRegisterInfo.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::PPCFrameLowering::determineFrameLayout(), getBaseRegister(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), isFrameOffsetLegal(), and MBB.
|
inlineoverride |
Definition at line 92 of file PPCRegisterInfo.h.
|
inlineoverride |
We require the register scavenger.
Definition at line 88 of file PPCRegisterInfo.h.
|
inlineoverride |
Definition at line 100 of file PPCRegisterInfo.h.
|
override |
Definition at line 1037 of file PPCRegisterInfo.cpp.
References assert(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::MachineInstr::getDesc(), llvm::MachineOperand::getImm(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineInstr::getNumOperands(), getOffsetONFromFION(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::isFI(), MBB, MRI, and TII.
|
inlineoverride |
Definition at line 96 of file PPCRegisterInfo.h.
1.8.6