LLVM 20.0.0git
Public Member Functions | List of all members
llvm::AArch64LegalizerInfo Class Reference

#include "Target/AArch64/GISel/AArch64LegalizerInfo.h"

Inheritance diagram for llvm::AArch64LegalizerInfo:
Inheritance graph
[legend]

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 LegacyLegalizerInfogetLegacyLegalizerInfo () const
 
LegacyLegalizerInfogetLegacyLegalizerInfo ()
 
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 LegalizeRuleSetgetActionDefinitions (unsigned Opcode) const
 Get the action definitions for the given opcode.
 
LegalizeRuleSetgetActionDefinitionsBuilder (unsigned Opcode)
 Get the action definition builder for the given opcode.
 
LegalizeRuleSetgetActionDefinitionsBuilder (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.
 

Detailed Description

Definition at line 26 of file AArch64LegalizerInfo.h.

Constructor & Destructor Documentation

◆ AArch64LegalizerInfo()

AArch64LegalizerInfo::AArch64LegalizerInfo ( const AArch64Subtarget ST)

Definition at line 41 of file AArch64LegalizerInfo.cpp.

References llvm::Acquire, llvm::LegalityPredicates::all(), llvm::LegalityPredicates::any(), llvm::LegalityPredicates::atomicOrderingAtLeastOrStrongerThan(), llvm::LegalizeRuleSet::bitcastIf(), 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::LegalityPredicates::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::lower(), llvm::LegalizeRuleSet::lowerFor(), llvm::LegalizeRuleSet::lowerIf(), llvm::LegalizeRuleSet::lowerIfMemSizeNotByteSizePow2(), llvm::LegalizeRuleSet::lowerIfMemSizeNotPow2(), llvm::LegalizeRuleSet::maxScalar(), llvm::LegalizeRuleSet::maxScalarEltSameAsIf(), 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::LegalizeRuleSet::narrowScalarIf(), llvm::NotAtomic, llvm::LLT::pointer(), llvm::Release, llvm::LLT::scalable_vector(), llvm::LLT::scalar(), llvm::LegalizeMutations::scalarize(), llvm::LegalizeRuleSet::scalarize(), llvm::LegalizeRuleSet::scalarizeIf(), llvm::LegalityPredicates::scalarOrEltWiderThan(), llvm::LegalizeRuleSet::scalarSameSizeAs(), llvm::LegalityPredicates::scalarWiderThan(), llvm::CodeModel::Small, llvm::LegalityPredicates::smallerThan(), llvm::LegalityPredicates::typeInSet(), llvm::LegalityPredicates::typeIs(), llvm::LegalityQuery::Types, llvm::Unordered, llvm::LegalizeRuleSet::unsupported(), unsupported(), llvm::LegalizeRuleSet::unsupportedIf(), llvm::LLT::vector(), verify, llvm::LegalizeRuleSet::widenScalarIf(), llvm::LegalizeMutations::widenScalarOrEltToNextPow2(), llvm::LegalizeRuleSet::widenScalarOrEltToNextPow2(), llvm::LegalizeRuleSet::widenScalarOrEltToNextPow2OrMinSize(), llvm::LegalizeRuleSet::widenScalarToNextPow2(), and llvm::LegalizeRuleSet::widenVectorEltsToVectorMinSize().

Member Function Documentation

◆ legalizeCustom()

bool AArch64LegalizerInfo::legalizeCustom ( LegalizerHelper Helper,
MachineInstr MI,
LostDebugLocObserver LocObserver 
) const
overridevirtual

Called for instructions with the Custom LegalizationAction.

Reimplemented from llvm::LegalizerInfo.

Definition at line 1353 of file AArch64LegalizerInfo.cpp.

References llvm::MachineIRBuilder::getMRI(), llvm_unreachable, llvm::LegalizerHelper::lowerAbsToCNeg(), MI, llvm::LegalizerHelper::MIRBuilder, MRI, and llvm::LegalizerHelper::Observer.

◆ legalizeIntrinsic()

bool AArch64LegalizerInfo::legalizeIntrinsic ( LegalizerHelper Helper,
MachineInstr MI 
) const
overridevirtual
Returns
true if MI is either legal or has been legalized and false if not legal. Return true if MI is either legal or has been legalized and false if not legal.

Reimplemented from llvm::LegalizerInfo.

Definition at line 1567 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::buildStore(), llvm::MachineIRBuilder::buildTrunc(), 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().


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