LLVM: llvm::LegalizerInfo Class Reference (original) (raw)

#include "[llvm/CodeGen/GlobalISel/LegalizerInfo.h](LegalizerInfo%5F8h%5Fsource.html)"

Public Member Functions
virtual ~LegalizerInfo ()=default
const LegacyLegalizerInfo & getLegacyLegalizerInfo () const
LegacyLegalizerInfo & getLegacyLegalizerInfo ()
unsigned getOpcodeIdxForOpcode (unsigned Opcode) const
unsigned getActionDefinitionsIdx (unsigned Opcode) const
void verify (const MCInstrInfo &MII) const
Perform simple self-diagnostic and assert if there is anything obviously wrong with the actions set up.
const LegalizeRuleSet & getActionDefinitions (unsigned Opcode) const
Get the action definitions for the given opcode.
LegalizeRuleSet & getActionDefinitionsBuilder (unsigned Opcode)
Get the action definition builder for the given opcode.
LegalizeRuleSet & getActionDefinitionsBuilder (std::initializer_list< unsigned > Opcodes)
Get the action definition builder for the given set of opcodes.
void aliasActionDefinitions (unsigned OpcodeTo, unsigned OpcodeFrom)
LegalizeActionStep getAction (const LegalityQuery &Query) const
Determine what action should be taken to legalize the described instruction.
LegalizeActionStep getAction (const MachineInstr &MI, const MachineRegisterInfo &MRI) const
Determine what action should be taken to legalize the given generic instruction.
bool isLegal (const LegalityQuery &Query) const
bool isLegalOrCustom (const LegalityQuery &Query) const
bool isLegal (const MachineInstr &MI, const MachineRegisterInfo &MRI) const
bool isLegalOrCustom (const MachineInstr &MI, const MachineRegisterInfo &MRI) const
virtual bool legalizeCustom (LegalizerHelper &Helper, MachineInstr &MI, LostDebugLocObserver &LocObserver) const
Called for instructions with the Custom LegalizationAction.
virtual bool legalizeIntrinsic (LegalizerHelper &Helper, MachineInstr &MI) const
virtual unsigned getExtOpcodeForWideningConstant (LLT SmallTy) const
Return the opcode (SEXT/ZEXT/ANYEXT) that should be performed while widening a constant of type SmallTy which targets can override.

Definition at line 1341 of file LegalizerInfo.h.

virtual llvm::LegalizerInfo::~LegalizerInfo ( ) virtualdefault

aliasActionDefinitions()

void LegalizerInfo::aliasActionDefinitions ( unsigned OpcodeTo,
unsigned OpcodeFrom )

getAction() [1/2]

getAction() [2/2]

getActionDefinitions()

getActionDefinitionsBuilder() [1/2]

Get the action definition builder for the given set of opcodes.

Use this to define the action definitions for multiple opcodes at once. The first opcode given will be considered the representative opcode and will hold the definitions whereas the other opcodes will be configured to refer to the representative opcode. This lowers memory requirements and very slightly improves performance.

It would be very easy to introduce unexpected side-effects as a result of this aliasing if it were permitted to request different but intersecting sets of opcodes but that is difficult to keep track of. It is therefore an error to request the same opcode twice using this API, to request an opcode that already has definitions, or to use the single-opcode API on an opcode that has already been requested by this API.

Definition at line 321 of file LegalizerInfo.cpp.

References aliasActionDefinitions(), assert(), llvm::drop_begin(), and getActionDefinitionsBuilder().

getActionDefinitionsBuilder() [2/2]

Get the action definition builder for the given opcode.

Use this to define the action definitions.

It is an error to request an opcode that has already been requested by the multiple-opcode variant.

Definition at line 314 of file LegalizerInfo.cpp.

References assert(), and getActionDefinitionsIdx().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::ARMLegalizerInfo::ARMLegalizerInfo(), getActionDefinitionsBuilder(), llvm::M68kLegalizerInfo::M68kLegalizerInfo(), llvm::MipsLegalizerInfo::MipsLegalizerInfo(), llvm::PPCLegalizerInfo::PPCLegalizerInfo(), llvm::RISCVLegalizerInfo::RISCVLegalizerInfo(), llvm::SPIRVLegalizerInfo::SPIRVLegalizerInfo(), and llvm::X86LegalizerInfo::X86LegalizerInfo().

getActionDefinitionsIdx()

getExtOpcodeForWideningConstant()

unsigned LegalizerInfo::getExtOpcodeForWideningConstant ( LLT SmallTy) const virtual

Return the opcode (SEXT/ZEXT/ANYEXT) that should be performed while widening a constant of type SmallTy which targets can override.

For eg, the DAG does (SmallTy.isByteSized() ? G_SEXT : G_ZEXT) which will be the default.

Definition at line 397 of file LegalizerInfo.cpp.

References llvm::LLT::isByteSized().

getLegacyLegalizerInfo() [1/2]

getLegacyLegalizerInfo() [2/2]

getOpcodeIdxForOpcode()

isLegal() [1/2]

isLegal() [2/2]

isLegalOrCustom() [1/2]

isLegalOrCustom() [2/2]

legalizeCustom()

legalizeIntrinsic()

verify()


The documentation for this class was generated from the following files: