LLVM 22.0.0git
AArch64ExpandPseudoInsts.cpp File Reference

Go to the source code of this file.

Macros

#define AARCH64_EXPAND_PSEUDO_NAME   "AArch64 pseudo instruction expansion pass"

Functions

 INITIALIZE_PASS (AArch64ExpandPseudo, "aarch64-expand-pseudo", AARCH64_EXPAND_PSEUDO_NAME, false, false) static void transferImpOps(MachineInstr &OldMI
 Transfer implicit operands on the pseudo instruction to the instructions created from the expansion.
 for (const MachineOperand &MO :llvm::drop_begin(OldMI.operands(), Desc.getNumOperands()))
static MachineInstrcreateCallWithOps (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const AArch64InstrInfo *TII, unsigned Opcode, ArrayRef< MachineOperand > ExplicitOps, unsigned RegMaskStartIdx)
static MachineInstrcreateCall (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const AArch64InstrInfo *TII, MachineOperand &CallTarget, unsigned RegMaskStartIdx)

Variables

MachineInstrBuilderUseMI
MachineInstrBuilder MachineInstrBuilderDefMI
static constexpr unsigned ZERO_ALL_ZA_MASK = 0b11111111

Macro Definition Documentation

◆ AARCH64_EXPAND_PSEUDO_NAME

#define AARCH64_EXPAND_PSEUDO_NAME   "AArch64 pseudo instruction expansion pass"

Definition at line 43 of file AArch64ExpandPseudoInsts.cpp.

Referenced by INITIALIZE_PASS().

Function Documentation

◆ createCall()

◆ createCallWithOps()

◆ for()

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( AArch64ExpandPseudo ,
"aarch64-expand-pseudo" ,
AARCH64_EXPAND_PSEUDO_NAME ,
false ,
false  ) &

Transfer implicit operands on the pseudo instruction to the instructions created from the expansion.

References AARCH64_EXPAND_PSEUDO_NAME.

Variable Documentation

◆ DefMI

Initial value:
{
const MCInstrDesc &Desc = OldMI.getDesc()
Describe properties that are true of each instruction in the target description file.
Op::Description Desc

Definition at line 112 of file AArch64ExpandPseudoInsts.cpp.

Referenced by adjustDefLatency(), llvm::AArch64Subtarget::adjustSchedDependency(), llvm::AMDGPU::RegBankLegalizeHelper::applyMappingPHI(), llvm::AArch64InstrInfo::canFoldIntoAddrMode(), canFoldIntoCSel(), llvm::LiveRangeEdit::checkRematerializable(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::TargetSchedModel::computeOperandLatency(), llvm::TargetSchedModel::computeOutputLatency(), llvm::GCNSchedStage::computeSUnitReadyCycle(), RegBankSelectHelper::constrainRegBankUse(), llvm::PPCInstrInfo::convertToImmediateForm(), llvm::SIInstrInfo::convertToThreeAddress(), llvm::TargetInstrInfo::defaultDefLatency(), llvm::CombinerHelper::dominates(), llvm::InstrEmitter::EmitDbgInstrRef(), llvm::execMayBeModifiedBeforeAnyUse(), llvm::execMayBeModifiedBeforeUse(), llvm::MachineFunction::finalizeDebugInstrRefs(), findImplictDefMIFromReg(), llvm::ARMBaseInstrInfo::foldImmediate(), llvm::PPCInstrInfo::foldImmediate(), llvm::SIInstrInfo::foldImmediate(), llvm::SystemZInstrInfo::foldImmediate(), llvm::TargetInstrInfo::foldImmediate(), llvm::VEInstrInfo::foldImmediate(), llvm::X86InstrInfo::foldImmediate(), llvm::PPCInstrInfo::getConstantFromConstantPool(), llvm::getConstFromIntrinsic(), llvm::getDefSrcRegIgnoringCopies(), getFoldableImm(), getFoldableImm(), llvm::ARMHazardRecognizerFPMLx::getHazardType(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::PPCRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::X86RegisterBankInfo::getInstrMapping(), llvm::getOpcodeDef(), llvm::getOpcodeDef(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::PPCInstrInfo::getOperandLatency(), llvm::TargetInstrInfo::getOperandLatency(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::TargetInstrInfo::hasHighOperandLatency(), llvm::X86InstrInfo::hasHighOperandLatency(), llvm::PPCInstrInfo::hasLowDefLatency(), llvm::TargetInstrInfo::hasLowDefLatency(), hasRAWHazard(), INITIALIZE_PASS(), llvm::MachineTraceMetrics::Trace::isDepInTrace(), llvm::isKnownNeverNaN(), llvm::isNZCVTouchedInInstructionRange(), llvm::CombinerHelper::isPredecessor(), llvm::CombinerHelper::matchExtendThroughPhis(), llvm::PPCInstrInfo::onlyFoldImmediate(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::TargetInstrInfo::optimizeLoadInstr(), llvm::ARMBaseInstrInfo::optimizeSelect(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::RISCVInstrInfo::optimizeSelect(), llvm::LiveVariables::recomputeForSingleDefVirtReg(), regIsPICBase(), removeCopies(), scavengeVReg(), llvm::X86FrameLowering::spillFPBP(), stripVRegCopies(), llvm::TailDuplicator::tailDuplicateAndUpdate(), llvm::MachineTraceMetrics::Ensemble::Trace, llvm::LegalizationArtifactCombiner::tryFoldImplicitDef(), updatePHIs(), and valueIsKnownNeverF32Denorm().

◆ UseMI

Definition at line 111 of file AArch64ExpandPseudoInsts.cpp.

Referenced by llvm::Combiner::WorkListMaintainerImpl< Lvl >::addUsersToWorkList(), llvm::AArch64Subtarget::adjustSchedDependency(), llvm::Combiner::WorkListMaintainerImpl< Lvl >::appliedCombine(), llvm::CombinerHelper::applyCombineExtendingLoads(), llvm::TargetSchedModel::computeOperandLatency(), llvm::CombinerHelper::dominates(), llvm::execMayBeModifiedBeforeUse(), llvm::ModuloScheduleExpander::expand(), llvm::PeelingModuloScheduleExpander::filterInstructions(), findAssignTypeInstr(), llvm::ARMBaseInstrInfo::foldImmediate(), llvm::PPCInstrInfo::foldImmediate(), llvm::SIInstrInfo::foldImmediate(), llvm::SystemZInstrInfo::foldImmediate(), llvm::TargetInstrInfo::foldImmediate(), llvm::VEInstrInfo::foldImmediate(), llvm::X86InstrInfo::foldImmediate(), generateAssignInstrs(), getDataDeps(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::PPCRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::X86RegisterBankInfo::getInstrMapping(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::PPCInstrInfo::getOperandLatency(), llvm::TargetInstrInfo::getOperandLatency(), getPHIDeps(), llvm::TargetInstrInfo::hasHighOperandLatency(), llvm::X86InstrInfo::hasHighOperandLatency(), isCopyFeedingInvariantStore(), isDefLiveOut(), llvm::MachineTraceMetrics::Trace::isDepInTrace(), llvm::isNZCVTouchedInInstructionRange(), llvm::CombinerHelper::isPredecessor(), llvm::MachineRegisterInfo::markUsesInDebugValueAsUndef(), llvm::CombinerHelper::matchCombineDivRem(), llvm::CombinerHelper::matchCombineExtendingLoads(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::Mips16RegisterInfo::Mips16RegisterInfo(), llvm::PPCInstrInfo::onlyFoldImmediate(), llvm::PPCInstrInfo::optimizeCompareInstr(), processNewInstrs(), pushDepHeight(), llvm::SIInstrInfo::readlaneVGPRToSGPR(), RegBankSelectHelper::reAssignRegBankOnDef(), llvm::LiveVariables::recomputeForSingleDefVirtReg(), llvm::LegalizationArtifactCombiner::replaceRegOrBuildCopy(), llvm::MachineSSAUpdater::RewriteUse(), llvm::PeelingModuloScheduleExpander::rewriteUsesOf(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::Mips16RegisterInfo::saveScavengerRegister(), llvm::TargetRegisterInfo::saveScavengerRegister(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::LiveIntervals::shrinkToUses(), llvm::LiveIntervals::shrinkToUses(), llvm::TailDuplicator::tailDuplicateAndUpdate(), tryChangeVGPRtoSGPRinCopy(), llvm::MachineTraceMetrics::Ensemble::updateDepth(), llvm::MachineTraceMetrics::Ensemble::updateDepth(), updatePhysDepsDownwards(), and verifyCFIntrinsic().

◆ ZERO_ALL_ZA_MASK

unsigned ZERO_ALL_ZA_MASK = 0b11111111
staticconstexpr

Definition at line 994 of file AArch64ExpandPseudoInsts.cpp.