LLVM 18.0.0git
|
FunctionLoweringInfo - This contains information that is global to a function that is used when lowering a region of the function. More...
#include "llvm/CodeGen/FunctionLoweringInfo.h"
Classes | |
struct | LiveOutInfo |
struct | StatepointRelocationRecord |
Helper object to track which of three possible relocation mechanisms are used for a particular value being relocated over a statepoint. More... | |
Public Types | |
using | StatepointSpillMapTy = DenseMap< const Value *, StatepointRelocationRecord > |
Keep track of each value which was relocated and the strategy used to relocate that value. | |
Public Member Functions | |
const Value * | getValueFromVirtualReg (Register Vreg) |
This method is called from TargetLowerinInfo::isSDNodeSourceOfDivergence to get the Value corresponding to the live-in virtual register. | |
void | set (const Function &Fn, MachineFunction &MF, SelectionDAG *DAG) |
set - Initialize this FunctionLoweringInfo with the given Function and its associated MachineFunction. | |
void | clear () |
clear - Clear out all the function-specific state. | |
bool | isExportedInst (const Value *V) const |
isExportedInst - Return true if the specified value is an instruction exported from its block. | |
Register | CreateReg (MVT VT, bool isDivergent=false) |
CreateReg - Allocate a single virtual register for the given type. | |
Register | CreateRegs (const Value *V) |
Register | CreateRegs (Type *Ty, bool isDivergent=false) |
CreateRegs - Allocate the appropriate number of virtual registers of the correctly promoted or expanded types. | |
Register | InitializeRegForValue (const Value *V) |
const LiveOutInfo * | GetLiveOutRegInfo (Register Reg) |
GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid. | |
const LiveOutInfo * | GetLiveOutRegInfo (Register Reg, unsigned BitWidth) |
GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid. | |
void | AddLiveOutRegInfo (Register Reg, unsigned NumSignBits, const KnownBits &Known) |
AddLiveOutRegInfo - Adds LiveOutInfo for a register. | |
void | ComputePHILiveOutRegInfo (const PHINode *) |
ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination register based on the LiveOutInfo of its operands. | |
void | InvalidatePHILiveOutRegInfo (const PHINode *PN) |
InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be called when a block is visited before all of its predecessors. | |
void | setArgumentFrameIndex (const Argument *A, int FI) |
setArgumentFrameIndex - Record frame index for the byval argument. | |
int | getArgumentFrameIndex (const Argument *A) |
getArgumentFrameIndex - Get frame index for the byval argument. | |
Register | getCatchPadExceptionPointerVReg (const Value *CPI, const TargetRegisterClass *RC) |
Public Attributes | |
const Function * | Fn |
MachineFunction * | MF |
const TargetLowering * | TLI |
MachineRegisterInfo * | RegInfo |
BranchProbabilityInfo * | BPI |
const UniformityInfo * | UA |
bool | CanLowerReturn |
CanLowerReturn - true iff the function's return value can be lowered to registers. | |
bool | SplitCSR |
True if part of the CSRs will be handled via explicit copies. | |
Register | DemoteRegister |
DemoteRegister - if CanLowerReturn is false, DemoteRegister is a vreg allocated to hold a pointer to the hidden sret parameter. | |
DenseMap< const BasicBlock *, MachineBasicBlock * > | MBBMap |
MBBMap - A mapping from LLVM basic blocks to their machine code entry. | |
DenseMap< const Value *, Register > | ValueMap |
ValueMap - Since we emit code for the function a basic block at a time, we must remember which virtual registers hold the values for cross-basic-block values. | |
DenseMap< Register, const Value * > | VirtReg2Value |
VirtReg2Value map is needed by the Divergence Analysis driven instruction selection. | |
DenseMap< const Value *, Register > | CatchPadExceptionPointers |
Track virtual registers created for exception pointers. | |
DenseMap< const Instruction *, StatepointSpillMapTy > | StatepointRelocationMaps |
DenseMap< const AllocaInst *, int > | StaticAllocaMap |
StaticAllocaMap - Keep track of frame indices for fixed sized allocas in the entry block. | |
DenseMap< const Argument *, int > | ByValArgFrameIndexMap |
ByValArgFrameIndexMap - Keep track of frame indices for byval arguments. | |
SmallVector< MachineInstr *, 8 > | ArgDbgValues |
ArgDbgValues - A list of DBG_VALUE instructions created during isel for function arguments that are inserted after scheduling is completed. | |
BitVector | DescribedArgs |
Bitvector with a bit set if corresponding argument is described in ArgDbgValues. | |
DenseMap< Register, Register > | RegFixups |
RegFixups - Registers which need to be replaced after isel is done. | |
DenseSet< Register > | RegsWithFixups |
SmallVector< unsigned, 50 > | StatepointStackSlots |
StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint. | |
MachineBasicBlock * | MBB |
MBB - The current block. | |
MachineBasicBlock::iterator | InsertPt |
MBB - The current insert position inside the current block. | |
DenseMap< const Value *, ISD::NodeType > | PreferredExtendType |
Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value. | |
SmallPtrSet< const BasicBlock *, 4 > | VisitedBBs |
VisitedBBs - The set of basic blocks visited thus far by instruction selection. | |
std::vector< std::pair< MachineInstr *, unsigned > > | PHINodesToUpdate |
PHINodesToUpdate - A list of phi instructions whose operand list will be updated after processing the current basic block. | |
unsigned | OrigNumPHINodesToUpdate |
unsigned | ExceptionPointerVirtReg |
If the current MBB is a landing pad, the exception pointer and exception selector registers are copied into these virtual registers by SelectionDAGISel::PrepareEHLandingPad(). | |
unsigned | ExceptionSelectorVirtReg |
SmallPtrSet< const DbgDeclareInst *, 8 > | PreprocessedDbgDeclares |
Collection of dbg.declare instructions handled after argument lowering and before ISel proper. | |
FunctionLoweringInfo - This contains information that is global to a function that is used when lowering a region of the function.
Definition at line 57 of file FunctionLoweringInfo.h.
using llvm::FunctionLoweringInfo::StatepointSpillMapTy = DenseMap<const Value *, StatepointRelocationRecord> |
Keep track of each value which was relocated and the strategy used to relocate that value.
This information is required when visiting gc.relocates which may appear in following blocks.
Definition at line 126 of file FunctionLoweringInfo.h.
|
inline |
AddLiveOutRegInfo - Adds LiveOutInfo for a register.
Definition at line 248 of file FunctionLoweringInfo.h.
References llvm::KnownBits::isUnknown(), llvm::FunctionLoweringInfo::LiveOutInfo::Known, llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits, llvm::KnownBits::One, Reg, and llvm::KnownBits::Zero.
void FunctionLoweringInfo::clear | ( | ) |
clear - Clear out all the function-specific state.
This returns this FunctionLoweringInfo to an empty state, ready to be used for a different function.
Definition at line 337 of file FunctionLoweringInfo.cpp.
References ArgDbgValues, ByValArgFrameIndexMap, llvm::BitVector::clear(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::clear(), llvm::SmallVectorImpl< T >::clear(), llvm::ValueMap< KeyT, ValueT, Config >::clear(), DescribedArgs, MBBMap, PreferredExtendType, PreprocessedDbgDeclares, RegFixups, RegsWithFixups, StatepointRelocationMaps, StatepointStackSlots, StaticAllocaMap, VirtReg2Value, and VisitedBBs.
ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination register based on the LiveOutInfo of its operands.
Definition at line 414 of file FunctionLoweringInfo.cpp.
References assert(), llvm::BitWidth, llvm::ComputeValueVTs(), llvm::ValueMap< KeyT, ValueT, Config >::count(), llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), llvm::APInt::getBitWidth(), llvm::Value::getContext(), llvm::MachineFunction::getDataLayout(), llvm::PHINode::getIncomingValue(), GetLiveOutRegInfo(), llvm::PHINode::getNumIncomingValues(), llvm::TargetLoweringBase::getNumRegisters(), llvm::APInt::getNumSignBits(), llvm::EVT::getSizeInBits(), llvm::Value::getType(), llvm::TargetLoweringBase::getTypeToTransformTo(), llvm::KnownBits::intersectWith(), llvm::Type::isIntegerTy(), llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, llvm::Type::isVectorTy(), llvm::Register::isVirtual(), llvm::FunctionLoweringInfo::LiveOutInfo::Known, llvm::KnownBits::makeConstant(), MF, llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits, llvm::KnownBits::One, llvm::APInt::sext(), llvm::TargetLoweringBase::signExtendConstant(), llvm::SmallVectorBase< Size_T >::size(), TLI, llvm::KnownBits::Zero, and llvm::APInt::zext().
CreateReg - Allocate a single virtual register for the given type.
Definition at line 356 of file FunctionLoweringInfo.cpp.
References llvm::MachineRegisterInfo::createVirtualRegister(), llvm::TargetLoweringBase::getRegClassFor(), RegInfo, and TLI.
Referenced by CreateRegs(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
Definition at line 385 of file FunctionLoweringInfo.cpp.
References CreateRegs(), llvm::GenericUniformityInfo< ContextT >::isDivergent(), MF, llvm::TargetLoweringBase::requiresUniformRegister(), TLI, and UA.
Referenced by CreateRegs(), InitializeRegForValue(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), and llvm::SelectionDAGBuilder::LowerStatepoint().
CreateRegs - Allocate the appropriate number of virtual registers of the correctly promoted or expanded types.
Assign these registers consecutive vreg numbers and return the first assigned number.
In the case that the given value has struct or array type, this function will assign registers for each member or element.
Definition at line 367 of file FunctionLoweringInfo.cpp.
References llvm::ComputeValueVTs(), CreateReg(), llvm::Type::getContext(), llvm::MachineFunction::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), llvm::TargetLoweringBase::getRegisterType(), MF, llvm::SmallVectorBase< Size_T >::size(), and TLI.
getArgumentFrameIndex - Get frame index for the byval argument.
If the argument does not have any assigned frame index then 0 is returned.
Definition at line 524 of file FunctionLoweringInfo.cpp.
References A, ByValArgFrameIndexMap, llvm::dbgs(), I, and LLVM_DEBUG.
Referenced by lowerStatepointMetaArgs(), and processDbgDeclare().
Register FunctionLoweringInfo::getCatchPadExceptionPointerVReg | ( | const Value * | CPI, |
const TargetRegisterClass * | RC | ||
) |
Definition at line 532 of file FunctionLoweringInfo.cpp.
References assert(), CatchPadExceptionPointers, llvm::MachineFunction::getRegInfo(), I, MF, and MRI.
|
inline |
GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.
Definition at line 229 of file FunctionLoweringInfo.h.
References llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, and Reg.
Referenced by ComputePHILiveOutRegInfo(), and llvm::RegsForValue::getCopyFromRegs().
const FunctionLoweringInfo::LiveOutInfo * FunctionLoweringInfo::GetLiveOutRegInfo | ( | Register | Reg, |
unsigned | BitWidth | ||
) |
GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.
If the register's LiveOutInfo is for a smaller bit width, it is extended to the larger bit width by zero extension. The bit width must be no smaller than the LiveOutInfo's existing bit width.
Definition at line 396 of file FunctionLoweringInfo.cpp.
References llvm::KnownBits::anyext(), llvm::BitWidth, llvm::KnownBits::getBitWidth(), llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, llvm::FunctionLoweringInfo::LiveOutInfo::Known, and llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits.
This method is called from TargetLowerinInfo::isSDNodeSourceOfDivergence to get the Value corresponding to the live-in virtual register.
Definition at line 544 of file FunctionLoweringInfo.cpp.
References llvm::SmallVectorImpl< T >::clear(), llvm::ComputeValueVTs(), Fn, llvm::Function::getContext(), llvm::Module::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), llvm::GlobalValue::getParent(), P, TLI, and VirtReg2Value.
Referenced by llvm::SITargetLowering::isSDNodeSourceOfDivergence().
Definition at line 217 of file FunctionLoweringInfo.h.
References assert(), CreateRegs(), and VirtReg2Value.
Referenced by llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), llvm::FastISel::getRegForValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::FastISel::selectExtractValue(), llvm::FastISel::selectIntrinsicCall(), and set().
InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be called when a block is visited before all of its predecessors.
Definition at line 267 of file FunctionLoweringInfo.h.
References llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), and Reg.
isExportedInst - Return true if the specified value is an instruction exported from its block.
Definition at line 207 of file FunctionLoweringInfo.h.
References llvm::ValueMap< KeyT, ValueT, Config >::count().
Referenced by llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), llvm::SelectionDAGBuilder::isExportableFromCurrentBlock(), and isFoldedOrDeadInstruction().
void FunctionLoweringInfo::set | ( | const Function & | Fn, |
MachineFunction & | MF, | ||
SelectionDAG * | DAG | ||
) |
set - Initialize this FunctionLoweringInfo with the given Function and its associated MachineFunction.
Definition at line 79 of file FunctionLoweringInfo.cpp.
References assert(), llvm::BuildMI(), llvm::calculateClrEHStateNumbers(), llvm::calculateSEHStateNumbers(), llvm::calculateWasmEHInfo(), llvm::calculateWinCXXEHStateNumbers(), CanLowerReturn, llvm::TargetLowering::CanLowerReturn(), CC, llvm::classifyEHPersonality(), llvm::CxxUnwindMapEntry::Cleanup, llvm::WinEHFuncInfo::ClrEHUnwindMap, llvm::TargetLowering::ComputeConstraintToUse(), llvm::ComputeValueVTs(), llvm::CoreCLR, llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineFrameInfo::CreateStackObject(), llvm::MachineFrameInfo::CreateVariableSizedObject(), llvm::WinEHFuncInfo::CxxUnwindMap, DL, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), Fn, llvm::Function::getAttributes(), llvm::Function::getCallingConv(), llvm::Function::getContext(), llvm::MachineFunction::getDataLayout(), llvm::Module::getDataLayout(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::TargetLoweringBase::getNumRegisters(), llvm::GlobalValue::getParent(), llvm::Function::getPersonalityFn(), getPreferredExtendForValue(), llvm::TargetLowering::getRegForInlineAsmConstraint(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::GetReturnInfo(), llvm::Function::getReturnType(), llvm::TargetFrameLowering::getStackAlign(), llvm::TargetFrameLowering::getStackIDForScalableVectors(), llvm::TargetLoweringBase::getStackPointerRegisterToSaveRestore(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::DataLayout::getTypeAllocSize(), llvm::SelectionDAG::getUniformityInfo(), llvm::MachineFunction::getWasmEHFuncInfo(), llvm::MachineFunction::getWinEHFuncInfo(), llvm::ConstantInt::getZExtValue(), H, llvm::ClrEHUnwindMapEntry::Handler, llvm::WinEHTryBlockMapEntry::HandlerArray, llvm::Function::hasPersonalityFn(), I, InitializeRegForValue(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::isAsynchronousEHPersonality(), llvm::InlineAsm::isClobber, llvm::isFuncletEHPersonality(), llvm::Type::isScalableTy(), llvm::TargetFrameLowering::isStackRealignable(), isUsedOutsideOfDefiningBlock(), llvm::Function::isVarArg(), MBB, MBBMap, MF, llvm::MSVC_CXX, llvm::TargetLoweringBase::needsFixedCatchObjects(), P, llvm::TargetLowering::ParseConstraints(), PreferredExtendType, llvm::MachineFunction::push_back(), RegInfo, llvm::WinEHFuncInfo::SEHUnwindMap, llvm::MachineBasicBlock::setAddressTakenIRBlock(), llvm::MachineFunction::setHasEHFunclets(), llvm::MachineFunction::setHasEHScopes(), llvm::MachineFrameInfo::setHasMustTailInVarArgFunc(), llvm::MachineFrameInfo::setHasOpaqueSPAdjustment(), llvm::MachineFrameInfo::setHasVAStart(), llvm::MachineBasicBlock::setIsEHPad(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::MachineFrameInfo::setStackID(), llvm::WasmEHFuncInfo::SrcToUnwindDest, StaticAllocaMap, TII, TLI, TRI, llvm::WinEHFuncInfo::TryBlockMap, UA, llvm::WasmEHFuncInfo::UnwindDestToSrcs, and llvm::Wasm_CXX.
setArgumentFrameIndex - Record frame index for the byval argument.
This overrides previous frame index entry for this argument, if any.
Definition at line 516 of file FunctionLoweringInfo.cpp.
References A, and ByValArgFrameIndexMap.
SmallVector<MachineInstr*, 8> llvm::FunctionLoweringInfo::ArgDbgValues |
ArgDbgValues - A list of DBG_VALUE instructions created during isel for function arguments that are inserted after scheduling is completed.
Definition at line 140 of file FunctionLoweringInfo.h.
Referenced by clear().
BranchProbabilityInfo* llvm::FunctionLoweringInfo::BPI |
Definition at line 63 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::fastEmitBranch(), findUnwindDestinations(), llvm::FastISel::finishCondBranch(), getBranchHint(), and llvm::IRTranslator::runOnMachineFunction().
ByValArgFrameIndexMap - Keep track of frame indices for byval arguments.
Definition at line 136 of file FunctionLoweringInfo.h.
Referenced by clear(), getArgumentFrameIndex(), and setArgumentFrameIndex().
bool llvm::FunctionLoweringInfo::CanLowerReturn |
CanLowerReturn - true iff the function's return value can be lowered to registers.
Definition at line 67 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::lowerArguments(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::X86CallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::X86CallLowering::lowerReturn(), llvm::AArch64CallLowering::lowerReturn(), llvm::IRTranslator::runOnMachineFunction(), and set().
Track virtual registers created for exception pointers.
Definition at line 96 of file FunctionLoweringInfo.h.
Referenced by getCatchPadExceptionPointerVReg().
Register llvm::FunctionLoweringInfo::DemoteRegister |
DemoteRegister - if CanLowerReturn is false, DemoteRegister is a vreg allocated to hold a pointer to the hidden sret parameter.
Definition at line 74 of file FunctionLoweringInfo.h.
Referenced by llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::X86CallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::X86CallLowering::lowerReturn(), and llvm::AArch64CallLowering::lowerReturn().
BitVector llvm::FunctionLoweringInfo::DescribedArgs |
Bitvector with a bit set if corresponding argument is described in ArgDbgValues.
Using arg numbers according to Argument numbering.
Definition at line 144 of file FunctionLoweringInfo.h.
Referenced by clear().
unsigned llvm::FunctionLoweringInfo::ExceptionPointerVirtReg |
If the current MBB is a landing pad, the exception pointer and exception selector registers are copied into these virtual registers by SelectionDAGISel::PrepareEHLandingPad().
Definition at line 189 of file FunctionLoweringInfo.h.
unsigned llvm::FunctionLoweringInfo::ExceptionSelectorVirtReg |
Definition at line 189 of file FunctionLoweringInfo.h.
Definition at line 59 of file FunctionLoweringInfo.h.
Referenced by llvm::AArch64::createFastISel(), llvm::FastISel::fastEmit_ri_(), findArgumentCopyElisionCandidates(), findUnwindDestinations(), getBranchHint(), getValueFromVirtualReg(), llvm::FastISel::lowerArguments(), processDbgDeclares(), llvm::FastISel::selectExtractValue(), and set().
MachineBasicBlock::iterator llvm::FunctionLoweringInfo::InsertPt |
MBB - The current insert position inside the current block.
Definition at line 161 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::constrainOperandRegClass(), llvm::FastISel::enterLocalValueArea(), llvm::FastISel::fastEmitInst_(), llvm::FastISel::fastEmitInst_extractsubreg(), llvm::FastISel::fastEmitInst_f(), llvm::FastISel::fastEmitInst_i(), llvm::FastISel::fastEmitInst_r(), llvm::FastISel::fastEmitInst_ri(), llvm::FastISel::fastEmitInst_rii(), llvm::FastISel::fastEmitInst_rr(), llvm::FastISel::fastEmitInst_rri(), llvm::FastISel::fastEmitInst_rrr(), llvm::FastISel::leaveLocalValueArea(), llvm::FastISel::recomputeInsertPt(), llvm::FastISel::selectCall(), llvm::FastISel::selectFreeze(), llvm::FastISel::selectInstruction(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), and llvm::FastISel::tryToFoldLoad().
MachineBasicBlock* llvm::FunctionLoweringInfo::MBB |
MBB - The current block.
Definition at line 158 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::canFoldAddIntoGEP(), llvm::FastISel::constrainOperandRegClass(), llvm::FastISel::fastEmitBranch(), llvm::FastISel::fastEmitInst_(), llvm::FastISel::fastEmitInst_extractsubreg(), llvm::FastISel::fastEmitInst_f(), llvm::FastISel::fastEmitInst_i(), llvm::FastISel::fastEmitInst_r(), llvm::FastISel::fastEmitInst_ri(), llvm::FastISel::fastEmitInst_rii(), llvm::FastISel::fastEmitInst_rr(), llvm::FastISel::fastEmitInst_rri(), llvm::FastISel::fastEmitInst_rrr(), llvm::FastISel::finishCondBranch(), getBranchHint(), llvm::FastISel::leaveLocalValueArea(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::FastISel::recomputeInsertPt(), llvm::FastISel::selectCall(), llvm::FastISel::selectFreeze(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), set(), llvm::SelectionDAG::shouldOptForSize(), llvm::FastISel::startNewBlock(), and llvm::FastISel::tryToFoldLoad().
DenseMap<const BasicBlock*, MachineBasicBlock *> llvm::FunctionLoweringInfo::MBBMap |
MBBMap - A mapping from LLVM basic blocks to their machine code entry.
Definition at line 77 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::canFoldAddIntoGEP(), clear(), findUnwindDestinations(), findWasmUnwindDestinations(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::FastISel::selectOperator(), and set().
MachineFunction* llvm::FunctionLoweringInfo::MF |
Definition at line 60 of file FunctionLoweringInfo.h.
Referenced by ComputePHILiveOutRegInfo(), llvm::FastISel::constrainOperandRegClass(), llvm::ARM::createFastISel(), llvm::PPC::createFastISel(), llvm::MipsTargetLowering::createFastISel(), llvm::FastISel::createMachineMemOperandFor(), CreateRegs(), getCatchPadExceptionPointerVReg(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::FastISel::lowerCallTo(), processDbgDeclare(), processIfEntryValueDbgDeclare(), llvm::IRTranslator::runOnMachineFunction(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), set(), and tryToElideArgumentCopy().
unsigned llvm::FunctionLoweringInfo::OrigNumPHINodesToUpdate |
Definition at line 184 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::selectInstruction().
std::vector<std::pair<MachineInstr*, unsigned> > llvm::FunctionLoweringInfo::PHINodesToUpdate |
PHINodesToUpdate - A list of phi instructions whose operand list will be updated after processing the current basic block.
TODO: This isn't per-function state, it's per-basic-block state. But there's no other convenient place for it to live right now.
Definition at line 183 of file FunctionLoweringInfo.h.
Referenced by isRegUsedByPhiNodes(), and llvm::FastISel::selectInstruction().
DenseMap<const Value *, ISD::NodeType> llvm::FunctionLoweringInfo::PreferredExtendType |
Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value.
Definition at line 173 of file FunctionLoweringInfo.h.
Referenced by clear(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), and set().
SmallPtrSet<const DbgDeclareInst *, 8> llvm::FunctionLoweringInfo::PreprocessedDbgDeclares |
Collection of dbg.declare instructions handled after argument lowering and before ISel proper.
Definition at line 193 of file FunctionLoweringInfo.h.
Referenced by clear(), processDbgDeclares(), and llvm::FastISel::selectIntrinsicCall().
RegFixups - Registers which need to be replaced after isel is done.
Definition at line 147 of file FunctionLoweringInfo.h.
Referenced by clear(), and llvm::FastISel::updateValueMap().
MachineRegisterInfo* llvm::FunctionLoweringInfo::RegInfo |
Definition at line 62 of file FunctionLoweringInfo.h.
Referenced by CreateReg(), processIfEntryValueDbgDeclare(), llvm::FastISel::selectIntrinsicCall(), and set().
Definition at line 149 of file FunctionLoweringInfo.h.
Referenced by clear(), llvm::FastISel::tryToFoldLoad(), and llvm::FastISel::updateValueMap().
bool llvm::FunctionLoweringInfo::SplitCSR |
True if part of the CSRs will be handled via explicit copies.
Definition at line 70 of file FunctionLoweringInfo.h.
DenseMap<const Instruction *, StatepointSpillMapTy> llvm::FunctionLoweringInfo::StatepointRelocationMaps |
Definition at line 128 of file FunctionLoweringInfo.h.
Referenced by clear(), findPreviousSpillSlot(), and llvm::SelectionDAGBuilder::LowerAsSTATEPOINT().
SmallVector<unsigned, 50> llvm::FunctionLoweringInfo::StatepointStackSlots |
StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint.
We store them here to enable reuse of the same stack slots across different statepoints in different basic blocks.
Definition at line 155 of file FunctionLoweringInfo.h.
Referenced by llvm::StatepointLoweringState::allocateStackSlot(), clear(), reservePreviousStackSlotForValue(), and llvm::StatepointLoweringState::startNewStatepoint().
DenseMap<const AllocaInst*, int> llvm::FunctionLoweringInfo::StaticAllocaMap |
StaticAllocaMap - Keep track of frame indices for fixed sized allocas in the entry block.
This allows the allocas to be efficiently referenced anywhere in the function.
Definition at line 133 of file FunctionLoweringInfo.h.
Referenced by clear(), findArgumentCopyElisionCandidates(), llvm::FastISel::getRegForValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SelectionDAGBuilder::handleDebugValue(), processDbgDeclare(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectOperator(), set(), and tryToElideArgumentCopy().
const TargetLowering* llvm::FunctionLoweringInfo::TLI |
Definition at line 61 of file FunctionLoweringInfo.h.
Referenced by ComputePHILiveOutRegInfo(), CreateReg(), CreateRegs(), getValueFromVirtualReg(), and set().
const UniformityInfo* llvm::FunctionLoweringInfo::UA |
Definition at line 64 of file FunctionLoweringInfo.h.
Referenced by CreateRegs(), and set().
ValueMap - Since we emit code for the function a basic block at a time, we must remember which virtual registers hold the values for cross-basic-block values.
Definition at line 82 of file FunctionLoweringInfo.h.
Referenced by llvm::SelectionDAGBuilder::CopyToExportRegsIfNeeded(), llvm::SelectionDAGBuilder::getCopyFromRegs(), llvm::SelectionDAGBuilder::handleDebugValue(), llvm::FastISel::lookUpRegForValue(), llvm::FastISel::lowerArguments(), llvm::SelectionDAGBuilder::LowerStatepoint(), processIfEntryValueDbgDeclare(), llvm::FastISel::selectExtractValue(), and llvm::FastISel::updateValueMap().
VirtReg2Value map is needed by the Divergence Analysis driven instruction selection.
It is reverted ValueMap. It is computed in lazy style - on demand. It is used to get the Value corresponding to the live in virtual register and is called from the TargetLowerinInfo::isSDNodeSourceOfDivergence.
Definition at line 89 of file FunctionLoweringInfo.h.
Referenced by clear(), getValueFromVirtualReg(), and InitializeRegForValue().
SmallPtrSet<const BasicBlock*, 4> llvm::FunctionLoweringInfo::VisitedBBs |
VisitedBBs - The set of basic blocks visited thus far by instruction selection.
Definition at line 177 of file FunctionLoweringInfo.h.
Referenced by clear().