LLVM 20.0.0git
|
#include "Target/AArch64/GISel/AArch64LegalizerInfo.h"
Public Member Functions | |
AArch64LegalizerInfo (const AArch64Subtarget &ST) | |
bool | legalizeCustom (LegalizerHelper &Helper, MachineInstr &MI, LostDebugLocObserver &LocObserver) const override |
Called for instructions with the Custom LegalizationAction. | |
bool | legalizeIntrinsic (LegalizerHelper &Helper, MachineInstr &MI) const override |
Public Member Functions inherited from llvm::LegalizerInfo | |
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 26 of file AArch64LegalizerInfo.h.
AArch64LegalizerInfo::AArch64LegalizerInfo | ( | const AArch64Subtarget & | ST | ) |
Definition at line 43 of file AArch64LegalizerInfo.cpp.
References llvm::Acquire, llvm::LegalityPredicates::all(), llvm::LegalityPredicates::atomicOrderingAtLeastOrStrongerThan(), llvm::LLT::changeElementCount(), llvm::LLT::changeElementSize(), llvm::LegalizeMutations::changeElementSizeTo(), llvm::LegalizeMutations::changeTo(), llvm::LegalizeRuleSet::clampMaxNumElements(), llvm::LegalizeRuleSet::clampMinNumElements(), llvm::LegalizeRuleSet::clampNumElements(), llvm::LegalizeRuleSet::clampScalar(), llvm::LegacyLegalizerInfo::computeTables(), llvm::LegalizeRuleSet::custom(), llvm::LegalizeRuleSet::customForCartesianProduct(), llvm::LegalizeRuleSet::customIf(), llvm::LLT::divide(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy(), llvm::LLT::fixed_vector(), llvm::LegalizerInfo::getActionDefinitionsBuilder(), llvm::LLT::getAddressSpace(), llvm::LLT::getElementCount(), llvm::LLT::getElementType(), llvm::LegalizerInfo::getLegacyLegalizerInfo(), llvm::LLT::getNumElements(), llvm::LLT::getScalarSizeInBits(), llvm::LLT::getSizeInBits(), if(), llvm::is_contained(), llvm::LLT::isPointerVector(), llvm::isPowerOf2_32(), llvm::LLT::isScalar(), llvm::LLT::isVector(), llvm::LegalityPredicates::isVector(), llvm::LegalizeRuleSet::legalFor(), llvm::LegalizeRuleSet::legalForCartesianProduct(), llvm::LegalizeRuleSet::legalForTypesWithMemDesc(), llvm::LegalizeRuleSet::legalIf(), libcall, llvm::LegalizeRuleSet::libcallFor(), llvm::LegalizeRuleSet::libcallIf(), llvm::LegalizeRuleSet::lower(), llvm::LegalizeRuleSet::lowerIf(), llvm::LegalizeRuleSet::maxScalar(), llvm::LegalizeRuleSet::maxScalarIf(), llvm::LegalizeRuleSet::minScalar(), llvm::LegalizeRuleSet::minScalarEltSameAsIf(), llvm::LegalizeRuleSet::minScalarOrElt(), llvm::LegalizeRuleSet::minScalarOrEltIf(), llvm::LegalizeRuleSet::minScalarSameAs(), llvm::LegalityQuery::MMODescrs, llvm::LegalizeRuleSet::moreElementsIf(), llvm::LegalizeRuleSet::moreElementsToNextPow2(), llvm::LegalizeMutations::moreElementsToNextPow2(), llvm::NotAtomic, llvm::LLT::pointer(), llvm::LegalityPredicates::predNot(), llvm::Release, llvm::LLT::scalable_vector(), llvm::LLT::scalar(), llvm::LegalizeMutations::scalarize(), llvm::LegalizeRuleSet::scalarize(), llvm::LegalityPredicates::scalarOrEltWiderThan(), llvm::LegalizeRuleSet::scalarSameSizeAs(), llvm::CodeModel::Small, llvm::LegalityPredicates::smallerThan(), llvm::LegalityPredicates::typeInSet(), llvm::LegalityPredicates::typeIs(), llvm::LegalityQuery::Types, llvm::Unordered, llvm::LegalizeRuleSet::unsupported(), unsupported(), llvm::LegalizeRuleSet::unsupportedIf(), verify, llvm::LegalizeMutations::widenScalarOrEltToNextPow2(), llvm::LegalizeRuleSet::widenScalarOrEltToNextPow2(), llvm::LegalizeRuleSet::widenScalarToNextPow2(), and llvm::LegalizeRuleSet::widenVectorEltsToVectorMinSize().
|
overridevirtual |
Called for instructions with the Custom LegalizationAction.
Reimplemented from llvm::LegalizerInfo.
Definition at line 1300 of file AArch64LegalizerInfo.cpp.
References llvm::MachineIRBuilder::getMRI(), llvm_unreachable, llvm::LegalizerHelper::lowerAbsToCNeg(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, and llvm::LegalizerHelper::Observer.
|
overridevirtual |
Reimplemented from llvm::LegalizerInfo.
Definition at line 1514 of file AArch64LegalizerInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), assert(), llvm::MachineIRBuilder::buildAnyExt(), llvm::MachineIRBuilder::buildConstant(), llvm::MachineIRBuilder::buildCopy(), llvm::MachineIRBuilder::buildExtOrTrunc(), llvm::MachineIRBuilder::buildInstr(), llvm::MachineIRBuilder::buildLoad(), llvm::MachineIRBuilder::buildSMax(), llvm::MachineIRBuilder::buildSMin(), llvm::MachineIRBuilder::buildStore(), llvm::MachineIRBuilder::buildTrunc(), llvm::MachineIRBuilder::buildUMax(), llvm::MachineIRBuilder::buildUMin(), llvm::GISelChangeObserver::changedInstr(), llvm::GISelChangeObserver::changingInstr(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), llvm::LLT::fixed_vector(), llvm::MachineIRBuilder::getInsertPt(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineIRBuilder::getMBB(), llvm::MachineIRBuilder::getMRI(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), getReg(), llvm::MachineInstrBuilder::getReg(), llvm::MachineFunction::getRegInfo(), llvm::LLT::getScalarSizeInBits(), llvm::LLT::isScalar(), llvm::AArch64Subtarget::isTargetDarwin(), llvm::AArch64Subtarget::isTargetILP32(), llvm::AArch64Subtarget::isTargetWindows(), MI, llvm::LegalizerHelper::MIRBuilder, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, MRI, llvm::LegalizerHelper::Observer, llvm::LLT::scalar(), and llvm::MachineIRBuilder::setInsertPt().