|
LLVM
3.7.0
|
#include <PPCRegisterInfo.h>
Definition at line 58 of file PPCRegisterInfo.h.
| PPCRegisterInfo::PPCRegisterInfo | ( | const PPCTargetMachine & | TM | ) |
Definition at line 60 of file PPCRegisterInfo.cpp.
References llvm::AArch64DB::LD.
|
override |
Definition at line 160 of file PPCRegisterInfo.cpp.
References llvm::NVPTX::PTXCvtMode::RM.
| bool PPCRegisterInfo::canRealignStack | ( | const MachineFunction & | MF | ) | const |
Definition at line 901 of file PPCRegisterInfo.cpp.
References llvm::MachineFunction::getFunction(), and llvm::Function::hasFnAttribute().
Referenced by needsStackRealignment().
|
override |
Definition at line 726 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::TargetOpcode::DBG_VALUE, llvm::PPCISD::DYNALLOC, 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::TargetOpcode::INLINEASM, is64Bit(), llvm::MachineInstr::isInlineAsm(), llvm::isInt< 16 >(), llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, lowerCRBitRestore(), lowerCRBitSpilling(), lowerCRRestore(), lowerCRSpilling(), lowerDynamicAlloc(), lowerVRSAVERestore(), lowerVRSAVESpilling(), llvm::AArch64CC::MI, llvm::Attribute::Naked, llvm::TargetOpcode::PATCHPOINT, llvm::MachineInstr::setDesc(), llvm::TargetOpcode::STACKMAP, TII, and usesIXAddr().
| unsigned PPCRegisterInfo::getBaseRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 874 of file PPCRegisterInfo.cpp.
References getFrameRegister(), llvm::TargetMachine::getRelocationModel(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::PPCTargetMachine::isPPC64(), llvm::PPCSubtarget::isSVR4ABI(), and llvm::Reloc::PIC_.
Referenced by eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitPrologue(), needsFrameBaseReg(), and llvm::PPCFrameLowering::replaceFPWithRealFP().
|
override |
Code Generation virtual methods...
Definition at line 102 of file PPCRegisterInfo.cpp.
References llvm::CallingConv::AnyReg, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), llvm::PPCSubtarget::hasVSX(), llvm::MachineRegisterInfo::isAllocatable(), llvm::PPCSubtarget::isDarwinABI(), and llvm::PPCTargetMachine::isPPC64().
|
override |
Definition at line 132 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 865 of file PPCRegisterInfo.cpp.
References llvm::PPCFrameLowering::hasFP(), and llvm::PPCTargetMachine::isPPC64().
Referenced by eliminateFrameIndex(), and getBaseRegister().
|
override |
Definition at line 291 of file PPCRegisterInfo.cpp.
References llvm::TargetRegisterInfo::getLargestLegalSuperClass(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasP8Vector(), and llvm::PPCSubtarget::hasVSX().
| const uint32_t * PPCRegisterInfo::getNoPreservedMask | ( | ) | const |
Definition at line 156 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 86 of file PPCRegisterInfo.cpp.
References llvm::PPCTargetMachine::isPPC64().
|
override |
Definition at line 256 of file PPCRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), and llvm::PPCFrameLowering::hasFP().
|
override |
Definition at line 165 of file PPCRegisterInfo.cpp.
References llvm::sys::path::begin(), llvm::MachineFunction::getInfo(), llvm::TargetMachine::getRelocationModel(), llvm::MachineFunction::getSubtarget(), llvm::PPCSubtarget::hasAltivec(), hasBasePointer(), llvm::MachineFunction::hasInlineAsm(), I, llvm::ARM_PROC::IE, llvm::PPCSubtarget::isDarwinABI(), llvm::PPCTargetMachine::isPPC64(), llvm::PPCSubtarget::isSVR4ABI(), llvm::Reloc::PIC_, R2, llvm::Reserved, llvm::BitVector::reset(), llvm::NVPTX::PTXCvtMode::RM, llvm::BitVector::set(), and llvm::PPCFunctionInfo::usesTOCBasePtr().
| bool PPCRegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 889 of file PPCRegisterInfo.cpp.
References AlwaysBasePointer, EnableBasePointer, and needsStackRealignment().
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 675 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 1014 of file PPCRegisterInfo.cpp.
References llvm::TargetOpcode::DBG_VALUE, llvm::MachineOperand::getImm(), getOffsetONFromFION(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isFI(), llvm::isInt< 16 >(), llvm::TargetOpcode::PATCHPOINT, llvm::TargetOpcode::STACKMAP, and usesIXAddr().
Referenced by needsFrameBaseReg().
| void PPCRegisterInfo::lowerCRBitRestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 573 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), 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::TargetOpcode::IMPLICIT_DEF, llvm::PPCTargetMachine::isPPC64(), llvm::RegState::Kill, llvm::PPCISD::MFOCRF, llvm::AArch64CC::MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerCRBitSpilling | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 529 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::TargetOpcode::KILL, llvm::PPCISD::MFOCRF, llvm::AArch64CC::MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerCRRestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 486 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), 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, llvm::AArch64CC::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 441 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, llvm::PPCISD::MFOCRF, llvm::AArch64CC::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 with 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 320 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), AND, 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::AArch64DB::LD, llvm::AArch64CC::MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerVRSAVERestore | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 647 of file PPCRegisterInfo.cpp.
References llvm::addFrameReference(), 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, llvm::AArch64CC::MI, and TII.
Referenced by eliminateFrameIndex().
| void PPCRegisterInfo::lowerVRSAVESpilling | ( | MachineBasicBlock::iterator | II, |
| unsigned | FrameIndex | ||
| ) | const |
Definition at line 621 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, llvm::AArch64CC::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 969 of file PPCRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::DL, llvm::MachineBasicBlock::end(), llvm::PPCSubtarget::getInstrInfo(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MipsISD::Ins, llvm::PPCTargetMachine::isPPC64(), 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 924 of file PPCRegisterInfo.cpp.
References 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(), and isFrameOffsetLegal().
|
override |
Definition at line 908 of file PPCRegisterInfo.cpp.
References canRealignStack(), F(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::MachineFrameInfo::getMaxAlignment(), llvm::TargetFrameLowering::getStackAlignment(), llvm::Function::hasFnAttribute(), and llvm::Attribute::StackAlignment.
Referenced by hasBasePointer().
|
inlineoverride |
Definition at line 91 of file PPCRegisterInfo.h.
|
inlineoverride |
We require the register scavenger.
Definition at line 87 of file PPCRegisterInfo.h.
|
inlineoverride |
Definition at line 99 of file PPCRegisterInfo.h.
|
override |
Definition at line 990 of file PPCRegisterInfo.cpp.
References 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(), and TII.
|
inlineoverride |
Definition at line 95 of file PPCRegisterInfo.h.
1.8.6