LLVM  8.0.0svn
Macros | Functions | Variables
AArch64AdvSIMDScalarPass.cpp File Reference
#include "AArch64.h"
#include "AArch64InstrInfo.h"
#include "AArch64RegisterInfo.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for AArch64AdvSIMDScalarPass.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "aarch64-simd-scalar"
 
#define AARCH64_ADVSIMD_NAME   "AdvSIMD Scalar Operation Optimization"
 

Functions

 STATISTIC (NumScalarInsnsUsed, "Number of scalar instructions used")
 
 STATISTIC (NumCopiesDeleted, "Number of cross-class copies deleted")
 
 STATISTIC (NumCopiesInserted, "Number of cross-class copies inserted")
 
 INITIALIZE_PASS (AArch64AdvSIMDScalar, "aarch64-simd-scalar", AARCH64_ADVSIMD_NAME, false, false) static bool isGPR64(unsigned Reg
 
 if (TargetRegisterInfo::isVirtualRegister(Reg)) return MRI -> getRegClass(Reg) ->hasSuperClassEq(&AArch64::GPR64RegClass)
 
return AArch64::GPR64RegClass contains (Reg)
 
static bool isFPR64 (unsigned Reg, unsigned SubReg, const MachineRegisterInfo *MRI)
 
static MachineOperandgetSrcFromCopy (MachineInstr *MI, const MachineRegisterInfo *MRI, unsigned &SubReg)
 
static unsigned getTransformOpcode (unsigned Opc)
 
static bool isTransformable (const MachineInstr &MI)
 
static MachineInstrinsertCopy (const TargetInstrInfo *TII, MachineInstr &MI, unsigned Dst, unsigned Src, bool IsKill)
 

Variables

static cl::opt< boolTransformAll ("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden)
 
unsigned SubReg
 
unsigned const MachineRegisterInfoMRI
 

Macro Definition Documentation

◆ AARCH64_ADVSIMD_NAME

#define AARCH64_ADVSIMD_NAME   "AdvSIMD Scalar Operation Optimization"

Definition at line 63 of file AArch64AdvSIMDScalarPass.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-simd-scalar"

Definition at line 50 of file AArch64AdvSIMDScalarPass.cpp.

Function Documentation

◆ contains()

return AArch64::GPR64RegClass contains ( Reg  )

Referenced by llvm::LoopBase< BasicBlock, Loop >::addBasicBlockToLoop(), llvm::X86Operand::addGR32orGR64Operands(), adjustDown(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), canBeFeederToNewValueJump(), CheckBaseRegAndIndexRegAndScale(), computeCalleeSaveRegisterPairs(), llvm::RegionBase< RegionTraits< Function > >::contains(), llvm::AttrBuilder::contains(), llvm::BPFInstrInfo::copyPhysReg(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::MipsSEInstrInfo::copyPhysReg(), llvm::LanaiInstrInfo::copyPhysReg(), llvm::Mips16InstrInfo::copyPhysReg(), llvm::MSP430InstrInfo::copyPhysReg(), llvm::ARCInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::R600InstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::SIInstrInfo::copyPhysReg(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), CopyToFromAsymmetricReg(), countMCSymbolRefExpr(), createBBSelectReg(), llvm::createControlHeightReductionLegacyPass(), llvm::SystemZFrameLowering::determineCalleeSaves(), llvm::RISCVFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::SCEVExpander::expandCodeFor(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::PPCInstrInfo::expandPostRAPseudo(), llvm::R600InstrInfo::fitsConstReadLimitations(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), llvm::HexagonFrameLowering::getAlignaInstr(), llvm::RegionBase< RegionTraits< Function > >::getBBNode(), llvm::ConstantRange::getBitWidth(), llvm::ValueLatticeElement::getCompare(), llvm::HexagonInstrInfo::getCompoundCandidateGroup(), llvm::HexagonInstrInfo::getDuplexCandidateGroup(), llvm::RegionBase< RegionTraits< Function > >::getEnteringBlock(), llvm::ARMTargetLowering::getExceptionSelectorRegister(), llvm::LoopBase< BasicBlock, Loop >::getExitBlocks(), llvm::LoopBase< BasicBlock, Loop >::getExitEdges(), llvm::RegionBase< RegionTraits< Function > >::getExitingBlock(), llvm::LoopBase< BasicBlock, Loop >::getExitingBlocks(), llvm::RegionBase< RegionTraits< Function > >::getExitingBlocks(), llvm::RegionBase< RegionTraits< Function > >::getExpandedRegion(), getHexagonRegisterPair(), llvm::PPCInstrInfo::getLoadOpcodeForSpill(), llvm::LoopBase< BasicBlock, Loop >::getLoopLatch(), llvm::LoopBase< BasicBlock, Loop >::getLoopPredecessor(), getMFHiLoOpc(), llvm::RegionBase< RegionTraits< Function > >::getNameStr(), getNextRegister(), llvm::RegionBase< RegionTraits< Function > >::getNode(), getPairedGPR(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), getPHIDestReg(), getRC32(), getRegClassFromGRPhysReg(), llvm::PPCInstrInfo::getStoreOpcodeForSpill(), llvm::RegionBase< RegionTraits< Function > >::getSubRegionNode(), llvm::MachineLoop::getTopBlock(), llvm::LoopBase< BasicBlock, Loop >::getUniqueExitBlocks(), hasAnyNonFlatUseOfReg(), llvm::AttrBuilder::hasAttributes(), llvm::LoopBase< BasicBlock, Loop >::hasDedicatedExits(), llvm::SITargetLowering::insertCopiesSplitCSR(), llvm::AArch64TargetLowering::insertCopiesSplitCSR(), llvm::PPCTargetLowering::insertCopiesSplitCSR(), isCSRestore(), isEvenReg(), isFPR64(), llvm::AArch64InstrInfo::isFPRCopy(), llvm::AArch64InstrInfo::isGPRCopy(), isHighReg(), llvm::X86TargetLowering::isIntDivCheap(), isMatchingOrAlias(), LowerInterruptReturn(), llvm::SITargetLowering::LowerReturn(), mayTailCallThisCC(), nextReg(), llvm::HexagonBlockRanges::IndexRange::operator<(), llvm::RegionBase< RegionTraits< Function > >::outermostLoopInRegion(), Passv64i1ArgInRegs(), PrepareCall(), printAsmMRegister(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::R600InstrInfo::readsLDSSrcReg(), llvm::PPCInstrInfo::replaceInstrWithLI(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::X86MachineFunctionInfo::setRestoreBasePointer(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::AVRRegisterInfo::splitReg(), swapMIOperands(), llvm::SIInstrInfo::usesConstantBus(), and llvm::LoopBase< BasicBlock, Loop >::verifyLoop().

◆ getSrcFromCopy()

static MachineOperand* getSrcFromCopy ( MachineInstr MI,
const MachineRegisterInfo MRI,
unsigned SubReg 
)
static

◆ getTransformOpcode()

static unsigned getTransformOpcode ( unsigned  Opc)
static

Definition at line 165 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by insertCopy(), and isTransformable().

◆ if()

if ( TargetRegisterInfo::isVirtualRegister(Reg ) -> getRegClass(Reg) ->hasSuperClassEq(&AArch64::GPR64RegClass)

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( AArch64AdvSIMDScalar  ,
"aarch64-simd-scalar"  ,
AARCH64_ADVSIMD_NAME  ,
false  ,
false   
)

◆ insertCopy()

static MachineInstr* insertCopy ( const TargetInstrInfo TII,
MachineInstr MI,
unsigned  Dst,
unsigned  Src,
bool  IsKill 
)
static

◆ isFPR64()

static bool isFPR64 ( unsigned  Reg,
unsigned  SubReg,
const MachineRegisterInfo MRI 
)
static

◆ isTransformable()

static bool isTransformable ( const MachineInstr MI)
static

◆ STATISTIC() [1/3]

STATISTIC ( NumScalarInsnsUsed  ,
"Number of scalar instructions used"   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumCopiesDeleted  ,
"Number of cross-class copies deleted"   
)

◆ STATISTIC() [3/3]

STATISTIC ( NumCopiesInserted  ,
"Number of cross-class copies inserted"   
)

Variable Documentation

◆ MRI

Initial value:
{
if (SubReg)
return false
unsigned SubReg

Definition at line 106 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by llvm::AArch64CallLowering::AArch64CallLowering(), llvm::AliasSetTracker::add(), addCalleeSavedRegs(), llvm::MachineInstr::addImplicitDefUseOperands(), llvm::RegsForValue::AddInlineAsmOperands(), llvm::MachineBasicBlock::addLiveIn(), llvm::MachineFunction::addLiveIn(), llvm::addLiveIns(), llvm::LiveVariables::addNewBlock(), addRegsToSet(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::SITargetLowering::AdjustInstrPostInstrSelection(), llvm::SIMachineFunctionInfo::allocateSGPRSpillToVGPR(), allPhiOperandsUndefined(), llvm::AMDGPUInstructionSelector::AMDGPUInstructionSelector(), llvm::LiveRangeEdit::anyRematerializable(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::rdf::DataFlowGraph::build(), buildEXP(), llvm::LiveRangeEdit::calculateRegClassAndHint(), llvm::calculateSpillWeightsAndHints(), callHasRegMask(), canCompareBeNewValueJump(), canFoldCopy(), llvm::AArch64InstrInfo::canInsertSelect(), llvm::SystemZInstrInfo::canInsertSelect(), llvm::SIInstrInfo::canInsertSelect(), llvm::PPCInstrInfo::canInsertSelect(), llvm::X86InstrInfo::canInsertSelect(), canInstrSubstituteCmpInstr(), canMoveInstsAcrossMemOp(), llvm::X86RegisterInfo::canRealignStack(), llvm::ARMBaseRegisterInfo::canRealignStack(), canTurnIntoCOPY(), CC_MipsO32_FP64(), llvm::dwarf::CFIProgram::CFIProgram(), llvm::dwarf::FrameEntry::cfis(), changeFCMPPredToAArch64CC(), checkFunctionMemoryAccess(), llvm::SplitAnalysis::clear(), CombineCVTAToLocal(), computeBranchTargetAndInversion(), llvm::HexagonBlockRanges::computeDeadMap(), llvm::computeLiveIns(), computeWeight(), llvm::InstructionSelector::constrainOperandRegToRegClass(), llvm::constrainSelectedInstRegOperands(), llvm::LivePhysRegs::contains(), llvm::PPCInstrInfo::convertToImmediateForm(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::WebAssemblyInstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::createAArch64ConditionOptimizerPass(), createBBSelectReg(), llvm::createBPFbeMCCodeEmitter(), llvm::LiveRangeEdit::createFrom(), llvm::createGreedyRegisterAllocator(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), createPHIsForCMOVsInSinkBB(), createPHIsForSelects(), llvm::createR600ISelDag(), llvm::createR600MCCodeEmitter(), llvm::createRegUsageInfoCollector(), llvm::createSIFixWWMLivenessPass(), llvm::createSILowerI1CopiesPass(), llvm::createSIWholeQuadModePass(), llvm::HexagonInstrInfo::createVR(), llvm::createX86FixupSetCC(), llvm::createX86OptimizeLEAs(), llvm::RegPressureTracker::decreaseRegPressure(), llvm::XCoreFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::HexagonFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), doCandidateWalk(), doesIgnoreDataTypeSuffix(), llvm::VirtRegMap::dump(), dumpLocation(), dumpMachineInstrRangeWithSlotIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::RISCVRegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), emitClzero(), llvm::PPCTargetLowering::emitEHSjLjLongJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), emitEncodingByte(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::WebAssemblyFrameLowering::emitEpilogue(), EmitHiLo(), emitIndirectDst(), emitIndirectSrc(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::MipsTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), emitPostSt(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::WebAssemblyFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), emitXBegin(), llvm::PressureDiff::end(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::InstructionSelector::executeMatchTable(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::CallLowering::ValueHandler::extendRegister(), extractRsrcPtr(), llvm::LegalizerHelper::fewerElementsVector(), llvm::SITargetLowering::finalizeLowering(), llvm::findPHICopyInsertPoint(), findPotentialBlockers(), findScratchNonCalleeSaveRegister(), findStartOfTree(), forceReg(), llvm::RegScavenger::forward(), llvm::TargetInstrInfo::genAlternativeCodeSequence(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), GetAEABIUnwindPersonalityName(), getAllSGPRs(), getARClassRegisterMask(), llvm::HexagonFrameLowering::getCalleeSavedSpillSlots(), llvm::FunctionLoweringInfo::getCatchPadExceptionPointerVReg(), getCIEVersion(), getCompareCC(), getComparePred(), getConstant(), llvm::SIRegisterInfo::getConstrainedRegClassForOperand(), getDepthOfOptCmov(), llvm::ConnectedVNInfoEqClasses::getEqClass(), llvm::ARMTargetLowering::getExceptionSelectorRegister(), getFoldableImm(), getFPReg(), llvm::X86AsmInstrumentation::GetFrameRegGeneric(), llvm::R600InstrInfo::getIndirectIndexBegin(), llvm::AMDGPURegisterBankInfo::getInstrAlternativeMappings(), llvm::X86RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrAlternativeMappings(), llvm::ARMRegisterBankInfo::getInstrMapping(), llvm::AMDGPURegisterBankInfo::getInstrMapping(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), getLit64Encoding(), getLiveLanesAt(), llvm::dwarf::FDE::getLSDAAddress(), llvm::dwarf::CIE::getLSDAPointerEncoding(), getMFHiLoOpc(), getMopState(), llvm::RegisterBankInfo::OperandsMapper::getMRI(), llvm::SIScheduleDAGMI::getMRI(), getNextRegister(), getNumAllocatableRegsForConstraints(), llvm::GCNRegPressure::getOccupancy(), getOModValue(), getOpenCLAlignment(), llvm::PPCInstrInfo::getOperandLatency(), llvm::SIInstrInfo::getOpRegClass(), getOrExecSource(), llvm::X86GenRegisterBankInfo::getPartialMappingIdx(), llvm::ARMBaseInstrInfo::getPredicate(), llvm::MachineFrameInfo::getPristineRegs(), getReassignedChan(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::ARMBaseRegisterInfo::getRegAllocationHints(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::SystemZMC::getRegAsVR128(), llvm::RegisterBankInfo::getRegBank(), getRegClassForUnfoldedLoad(), llvm::LanaiInstrInfo::getRegisterInfo(), getRetpolineSymbol(), llvm::Legalizer::getSetProperties(), getSrcFromCopy(), getSubOpcode(), getTag(), llvm::BPFTargetLowering::getTargetNodeName(), getUsedRegMask(), llvm::NVPTXAsmPrinter::getVirtualRegisterName(), llvm::PerFunctionMIParsingState::getVRegInfo(), llvm::MipsCallLowering::MipsHandler::handle(), llvm::LiveIntervals::handleMove(), llvm::LiveIntervals::handleMoveIntoBundle(), llvm::LiveVariables::HandleVirtRegDef(), llvm::LiveVariables::HandleVirtRegUse(), HandleVRSaveUpdate(), hasAnyNonFlatUseOfReg(), HasArgumentDef(), HasConditionalBranch(), llvm::RISCVFrameLowering::hasFP(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), hasOneNonDBGUseInst(), llvm::TargetInstrInfo::hasReassociableOperands(), llvm::TargetInstrInfo::hasReassociableSibling(), llvm::TargetRegisterInfo::hasRegUnit(), hasTiedDef(), hasVGPROperands(), hasVulnerableLoad(), llvm::HexagonBlockRanges::HexagonBlockRanges(), hoistAndMergeSGPRInits(), llvm::RegPressureTracker::increaseRegPressure(), llvm::RegPressureTracker::init(), INITIALIZE_PASS(), llvm::RegPressureTracker::initLiveThru(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::X86FrameLowering::inlineStackProbe(), llvm::SITargetLowering::insertCopiesSplitCSR(), llvm::AArch64TargetLowering::insertCopiesSplitCSR(), llvm::PPCTargetLowering::insertCopiesSplitCSR(), insertCopy(), insertDeleteInstructions(), llvm::SIInstrInfo::insertEQ(), llvm::RISCVInstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertNE(), llvm::AArch64InstrInfo::insertSelect(), llvm::SystemZInstrInfo::insertSelect(), llvm::SIInstrInfo::insertSelect(), llvm::PPCInstrInfo::insertSelect(), llvm::X86InstrInfo::insertSelect(), llvm::SIInstrInfo::insertVectorSelect(), instIsBreakpoint(), isConstant(), llvm::IsCPSRDead< MCInst >(), isCrossCopy(), isCVTAToLocalCombinationCandidate(), isDebug(), isDefBetween(), isEFLAGSLive(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), isEqual(), isFpMulInstruction(), isFullCopyOf(), isFullUndefDef(), isImplicitlyDef(), isImplicitOperandIn(), isInstrUniform(), llvm::X86TargetLowering::isIntDivCheap(), isInvariantStore(), llvm::AMDGPU::isKernel(), isLEA(), llvm::isModOrRefSet(), llvm::isModSet(), isMulPowOf2(), llvm::isMustSet(), llvm::InstructionSelector::isOperandImmEqual(), llvm::SIInstrInfo::isOperandLegal(), isPreISelGenericFloatingPointOpcode(), llvm::isPushOpcode(), isPushPop(), llvm::X86InstrInfo::isReallyTriviallyReMaterializable(), llvm::isRefSet(), llvm::MachineInstr::isRegTiedToDefOperand(), IsSafeAndProfitableToMove(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), isSExtLoad(), llvm::PPCInstrInfo::isSignOrZeroExtended(), isSimpleIf(), IsSmallMemAccess(), isSortedByValueNo(), isSSA(), llvm::AArch64InstrInfo::isSubregFoldable(), llvm::X86InstrInfo::isSubregFoldable(), isSupportedType(), llvm::MCInstrAnalysis::isTerminator(), isTransformable(), llvm::SITargetLowering::isTypeDesirableForOp(), isUseSafeToFold(), llvm::AArch64LegalizerInfo::legalizeCustom(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsSMRD(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::SITargetLowering::legalizeTargetIndependentNode(), LLVMCreateDisasmCPUFeatures(), LLVMSetDisasmOptions(), loadM0FromVGPR(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), loadSRsrcFromVGPR(), llvm::WebAssemblyMCInstLower::Lower(), llvm::LegalizerHelper::lower(), llvm::ARMCallLowering::lowerCall(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::ARMCallLowering::lowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), LowerFPToInt(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::ARMCallLowering::lowerReturn(), llvm::LiveRangeEdit::Delegate::LRE_DidCloneVirtReg(), llvm::BitTracker::MachineEvaluator::MachineEvaluator(), llvm::machineFunctionIsIllegal(), llvm::LiveInterval::markNotSpillable(), llvm::LEONMachineFunctionPass::markRegisterUsed(), MatchingStackOffset(), matchPair(), llvm::SIRegisterInfo::materializeFrameBaseRegister(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), llvm::SIInstrInfo::materializeImmediate(), mayTailCallThisCC(), llvm::MipsSEDAGToDAGISel::MipsSEDAGToDAGISel(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), MoveAndTeeForMultiUse(), llvm::SIInstrInfo::moveToVALU(), needsPCRel(), needToReserveScavengingSpillSlots(), llvm::SIRegisterInfo::opCanUseInlineConstant(), llvm::VirtReg2IndexFunctor::operator()(), llvm::PressureDiffs::operator[](), optimizeCall(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::ARMBaseInstrInfo::optimizeSelect(), packCmovGroup(), llvm::dwarf::CFIProgram::parse(), parseCond(), populateCandidates(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::MIPrinter::print(), llvm::MachineOperand::print(), llvm::MachineBasicBlock::print(), printDwarfFileDirective(), printFPOReg(), printLivenessInfo(), llvm::HexagonBlockRanges::PrintRangeMap::PrintRangeMap(), llvm::AMDGPUInstPrinter::printRegOperand(), profitImm(), propagateLocalCopies(), DeadCodeElimination::SetQueue< T >::push_back(), readsVCCZ(), llvm::TargetInstrInfo::reassociateOps(), llvm::recomputeLivenessFlags(), RegisterMCAsmBackend< MCAsmBackendImpl >::RegisterMCAsmBackend(), llvm::TargetInstrInfo::RegSubRegPairAndIdx::RegSubRegPairAndIdx(), removeIPMBasedCompare(), llvm::LiveVariables::VarInfo::removeKill(), removeRedundantBlockingStores(), llvm::PPCInstrInfo::replaceInstrWithLI(), llvm::ARMTargetLowering::ReplaceNodeResults(), rescheduleCanonically(), llvm::PPCRegisterInfo::resolveFrameIndex(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::SIRegisterInfo::restoreSGPR(), llvm::UnreachableBlockElimPass::run(), runOnBasicBlock(), llvm::InstructionSelect::runOnMachineFunction(), llvm::Legalizer::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::VirtRegMap::runOnMachineFunction(), llvm::ExecutionDomainFix::runOnMachineFunction(), llvm::LiveVariables::runOnMachineFunction(), llvm::scavengeFrameVirtualRegs(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::MachineOperand::setIsDef(), llvm::MachineOperand::setReg(), llvm::RegScavenger::setRegUsed(), llvm::MIRParserImpl::setupRegisterInfo(), llvm::SIInstrInfo::shouldClusterMemOps(), llvm::ARMBaseRegisterInfo::shouldCoalesce(), shrinkScalarCompare(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::SIRegisterInfo::spillSGPR(), splitBlock(), llvm::MachineBasicBlock::SplitCriticalEdge(), splitMBB(), llvm::LiveIntervals::splitSeparateComponents(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), false::Chain::str(), subRangeLiveAt(), SwapBits(), swapMIOperands(), llvm::RegBankSelect::RepairingPlacement::switchTo(), llvm::InstructionSelector::testMIPredicate_MI(), llvm::BitTracker::trace(), tryAddToFoldList(), tryChangeVGPRtoSGPRinCopy(), llvm::CombinerHelper::tryCombineExtendingLoads(), tryFoldInst(), unsupportedBinOp(), updateKillStatus(), updateLiveness(), updateOperand(), UpdateOperandRegClass(), updateOperandRegConstraints(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::ARMBaseRegisterInfo::updateRegAllocHint(), usedAsAddr(), llvm::PPCInstrInfo::useMachineCombiner(), llvm::MachineTraceMetrics::Ensemble::verify(), llvm::SIInstrInfo::verifyInstruction(), verifyLeafProcRegUse(), VisitGlobalVariableForEmission(), llvm::X86CallLowering::X86CallLowering(), X86ChooseCmpImmediateOpcode(), and X86SelectAddress().

◆ SubReg

unsigned SubReg

Definition at line 105 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by llvm::MachineInstrBuilder::addDef(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addUse(), llvm::SIInstrInfo::buildExtractSubReg(), llvm::SIInstrInfo::buildExtractSubRegOrImm(), buildMUBUFOffsetLoadStore(), llvm::LiveRangeCalc::calculate(), llvm::LiveInterval::computeSubRangeUndefs(), llvm::AArch64InstrInfo::copyPhysRegTuple(), llvm::LiveRangeCalc::createDeadDefs(), llvm::MachineOperand::CreateReg(), emitIndirectDst(), emitIndirectSrc(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::finalizeBundle(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldVGPRCopyIntoRegSequence(), llvm::ARMBaseRegisterInfo::getBaseRegister(), GetDSubRegs(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), getMopState(), llvm::SIInstrInfo::getOpSize(), getReassignedChan(), llvm::SuperRegClassIterator::getSubReg(), getUsedRegMask(), llvm::LiveVariables::HandleVirtRegDef(), insertPHI(), isBitfieldExtractOp(), isCrossCopy(), isImplicitOperandIn(), isStackPtrRelative(), isTransformable(), llvm::SIRegisterInfo::isVGPRPressureSet(), llvm::MipsSEInstrInfo::loadImmediate(), narrowIfNeeded(), performBitcastCombine(), llvm::MachineOperand::print(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::SIRegisterInfo::restoreSGPR(), llvm::LiveIntervals::shrinkToUses(), llvm::SIRegisterInfo::spillSGPR(), swapRegAndNonRegOperand(), llvm::HexagonRegisterInfo::trackLivenessAfterRegAlloc(), llvm::SystemZRegisterInfo::trackLivenessAfterRegAlloc(), tryBitfieldInsertOpFromOr(), llvm::LiveIntervals::HMEditor::updateAllRanges(), llvm::AArch64RegisterInfo::UpdateCustomCallPreservedMask(), and Widen().

◆ TransformAll

cl::opt<bool> TransformAll("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden)
static

Referenced by isTransformable().