LLVM  9.0.0svn
Macros | Functions | Variables
AArch64ExpandPseudoInsts.cpp File Reference
#include "AArch64ExpandImm.h"
#include "AArch64InstrInfo.h"
#include "AArch64Subtarget.h"
#include "MCTargetDesc/AArch64AddressingModes.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Triple.h"
#include "llvm/CodeGen/LivePhysRegs.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/Pass.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Target/TargetMachine.h"
#include <cassert>
#include <cstdint>
#include <iterator>
#include <limits>
#include <utility>
Include dependency graph for AArch64ExpandPseudoInsts.cpp:

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. More...
 
 for (unsigned i=Desc.getNumOperands(), e=OldMI.getNumOperands();i !=e;++i)
 

Variables

MachineInstrBuilderUseMI
 
MachineInstrBuilder MachineInstrBuilderDefMI
 

Macro Definition Documentation

◆ AARCH64_EXPAND_PSEUDO_NAME

#define AARCH64_EXPAND_PSEUDO_NAME   "AArch64 pseudo instruction expansion pass"

Definition at line 45 of file AArch64ExpandPseudoInsts.cpp.

Function Documentation

◆ for()

for ( unsigned  i = Desc.getNumOperands(),
= OldMI.getNumOperands(); i != e; ++i 
)

Definition at line 91 of file AArch64ExpandPseudoInsts.cpp.

References add(), llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addExternalSymbol(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addReg(), llvm::MachineBasicBlock::addSuccessor(), llvm::MachineInstrBuilder::addUse(), llvm::AArch64ISD::ADRP, assert(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::computeAndAddLiveIns(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::RegState::Define, E, llvm::SmallVectorTemplateCommon< T >::end(), llvm::MachineBasicBlock::end(), llvm::AArch64CC::EQ, llvm::MachineInstr::eraseFromParent(), llvm::AArch64_IMM::expandMOVImm(), llvm::AArch64_AM::getArithExtendImm(), llvm::MachineBasicBlock::getBasicBlock(), llvm::TargetMachine::getCodeModel(), llvm::getDeadRegState(), llvm::MachineInstr::getDebugLoc(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::getKillRegState(), llvm::MachineOperand::getOffset(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::AArch64_AM::getShifterImm(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::getSymbolName(), llvm::MachineFunction::getTarget(), llvm::MachineOperand::getTargetFlags(), llvm::TargetMachine::getTargetTriple(), I, llvm::RegState::Implicit, llvm::MachineFunction::insert(), llvm::MachineOperand::isCPI(), llvm::MachineOperand::isDead(), llvm::MachineOperand::isGlobal(), llvm::Triple::isOSFuchsia(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isSymbol(), llvm::MachineOperand::isUndef(), llvm::MachineOperand::isUse(), llvm::CodeModel::Kernel, llvm::RegState::Kill, llvm_unreachable, llvm::AArch64ISD::LOADgot, llvm::AArch64_AM::LSL, MI, llvm::AArch64II::MO_NC, llvm::AArch64II::MO_PAGE, llvm::AArch64II::MO_PAGEOFF, Modified, llvm::AArch64CC::NE, llvm::ARCISD::RET, llvm::SmallVectorBase::size(), TII, llvm::CodeModel::Tiny, llvm::RegState::Undef, llvm::AArch64Subtarget::useEL1ForTP(), llvm::AArch64Subtarget::useEL2ForTP(), llvm::AArch64Subtarget::useEL3ForTP(), UseMI, llvm::AArch64_AM::UXTB, and llvm::AArch64_AM::UXTH.

Referenced by analyzeGlobalAux(), llvm::DwarfDebug::beginModule(), CalcNodeSethiUllmanNumber(), checkDyldCommand(), checkDylibCommand(), checkRpathCommand(), checkSubCommand(), collectBitParts(), llvm::AppleAcceleratorTable::dump(), llvm::BitTracker::RegisterCell::extract(), llvm::sampleprof::FunctionSamples::findFunctionSamplesAt(), firstch(), freeset(), freezeset(), getLayoutSuccessorProbThreshold(), llvm::TargetLowering::getMultipleConstraintMatchWeight(), llvm::SelectionDAGBuilder::handleDebugValue(), llvm::MCCodePadder::handleInstructionEnd(), INITIALIZE_PASS(), llvm::InsertPointAnalysis::InsertPointAnalysis(), isLoadConditional(), isProfitableChain(), mayUsePostIncMode(), nch(), llvm::BitVector::operator &=(), llvm::operator<<(), and llvm::UnrollLoop().

◆ 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.

Variable Documentation

◆ DefMI

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

Definition at line 89 of file AArch64ExpandPseudoInsts.cpp.

Referenced by addSegmentsWithValNo(), allPhiOperandsUndefined(), llvm::CombinerHelper::applyCombineCopy(), canFoldIntoCSel(), llvm::LiveRangeEdit::checkRematerializable(), llvm::SIInstrInfo::commuteOpcode(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::PPCInstrInfo::convertToImmediateForm(), llvm::LiveRangeEdit::create(), llvm::createSIWholeQuadModePass(), llvm::createX86OptimizeLEAs(), CriticalPathStep(), definesFullReg(), llvm::SplitEditor::dump(), llvm::LiveRangeEdit::eraseVirtReg(), getDepthOfOptCmov(), llvm::ARMHazardRecognizer::getHazardType(), llvm::MachineTraceMetrics::Trace::getInstrCycles(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::getOpcodeDef(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::TargetSchedModel::getResourceBufferSize(), getSingleDef(), getUnderlyingObjects(), hoistAndMergeSGPRInits(), INITIALIZE_PASS(), isCrossCopy(), isFullCopyOf(), isKilled(), llvm::ARMBaseInstrInfo::isProfitableToDupForIfCvt(), llvm::X86InstrInfo::isSafeToClobberEFLAGS(), isVirtualRegisterOperand(), llvm::TargetInstrInfo::isZeroCost(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::ARMBaseInstrInfo::optimizeSelect(), pushDepHeight(), regIsPICBase(), removeCopies(), llvm::PPCInstrInfo::replaceInstrWithLI(), scavengeVReg(), swapMIOperands(), llvm::TailDuplicator::tailDuplicateAndUpdate(), llvm::LegalizationArtifactCombiner::tryCombineInstruction(), llvm::LegalizationArtifactCombiner::tryFoldImplicitDef(), updatePHIs(), updatePhysDepsDownwards(), usedAsAddr(), and llvm::MachineTraceMetrics::Ensemble::verify().

◆ UseMI

Definition at line 88 of file AArch64ExpandPseudoInsts.cpp.

Referenced by addSegmentsWithValNo(), llvm::CombinerHelper::applyCombineCopy(), llvm::CombinerHelper::applyCombineExtendingLoads(), llvm::SIInstrInfo::commuteOpcode(), computeBranchTargetAndInversion(), CriticalPathStep(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::SMSchedule::finalizeSchedule(), findOnlyInterestingUse(), llvm::ARMBaseInstrInfo::FoldImmediate(), for(), llvm::MachineTraceMetrics::Trace::getInstrCycles(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::RegScavenger::getRegsAvailable(), llvm::TargetSchedModel::getResourceBufferSize(), getUnderlyingObjects(), INITIALIZE_PASS(), isCallerPreservedOrConstPhysReg(), isCoalescable(), isCopyFeedingInvariantStore(), isCrossCopy(), isDefLiveOut(), isEFLAGSLive(), isFullCopyOf(), llvm::ARMBaseInstrInfo::isProfitableToDupForIfCvt(), llvm::X86InstrInfo::isSafeToClobberEFLAGS(), llvm::PPCInstrInfo::isSameClassPhysRegCopy(), isUseSafeToFold(), isVirtualRegisterOperand(), llvm::TargetInstrInfo::isZeroCost(), llvm::MachineRegisterInfo::markUsesInDebugValueAsUndef(), llvm::CombinerHelper::matchCombineExtendingLoads(), llvm::SIInstrInfo::moveToVALU(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::SIInstrInfo::readlaneVGPRToSGPR(), regOverlapsSet(), llvm::MachineSSAUpdater::RewriteUse(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::ThumbRegisterInfo::saveScavengerRegister(), llvm::RegScavenger::scavengeRegister(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::LiveIntervals::shrinkToUses(), llvm::TailDuplicator::tailDuplicateAndUpdate(), tryChangeVGPRtoSGPRinCopy(), llvm::MachineTraceMetrics::Ensemble::updateDepth(), updatePhysDepsDownwards(), and usedAsAddr().