LLVM  6.0.0svn
Macros | Functions | Variables
AArch64AdvSIMDScalarPass.cpp File Reference
#include "AArch64.h"
#include "AArch64InstrInfo.h"
#include "AArch64RegisterInfo.h"
#include "AArch64Subtarget.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 64 of file AArch64AdvSIMDScalarPass.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   "aarch64-simd-scalar"

Definition at line 51 of file AArch64AdvSIMDScalarPass.cpp.

Function Documentation

◆ contains()

return AArch64::GPR64RegClass contains ( Reg  )

Referenced by llvm::LoopBase< BasicBlock, Loop >::addBasicBlockToLoop(), llvm::X86Operand::addGR32orGR64Operands(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), CheckBaseRegAndIndexRegAndScale(), computeCalleeSaveRegisterPairs(), llvm::RegionBase< RegionTraits< Function > >::contains(), llvm::AttrBuilder::contains(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::BPFInstrInfo::copyPhysReg(), llvm::Thumb1InstrInfo::copyPhysReg(), llvm::Thumb2InstrInfo::copyPhysReg(), llvm::MipsSEInstrInfo::copyPhysReg(), llvm::LanaiInstrInfo::copyPhysReg(), llvm::Mips16InstrInfo::copyPhysReg(), llvm::MSP430InstrInfo::copyPhysReg(), llvm::ARCInstrInfo::copyPhysReg(), llvm::R600InstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::SIInstrInfo::copyPhysReg(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), CopyToFromAsymmetricReg(), countMCSymbolRefExpr(), createBBSelectReg(), llvm::SystemZFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::X86FrameLowering::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::MachineLoop::getBottomBlock(), 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::LoopBase< BasicBlock, Loop >::getLoopLatch(), llvm::LoopBase< BasicBlock, Loop >::getLoopPredecessor(), getMFHiLoOpc(), llvm::RegionBase< RegionTraits< Function > >::getNameStr(), getNextRegister(), llvm::RegionBase< RegionTraits< Function > >::getNode(), getNumExtraSGPRs(), getPairedGPR(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), getPHIDestReg(), getRC32(), getRegClassFromGRPhysReg(), llvm::RegionBase< RegionTraits< Function > >::getSubRegionNode(), llvm::MachineLoop::getTopBlock(), llvm::AttrBuilder::hasAttributes(), llvm::SITargetLowering::insertCopiesSplitCSR(), llvm::AArch64TargetLowering::insertCopiesSplitCSR(), llvm::PPCTargetLowering::insertCopiesSplitCSR(), isCSRestore(), isEvenReg(), isFPR64(), llvm::AArch64InstrInfo::isFPRCopy(), llvm::AArch64InstrInfo::isGPRCopy(), isHighReg(), llvm::X86TargetLowering::isIntDivCheap(), LowerInterruptReturn(), llvm::SITargetLowering::LowerReturn(), mayTailCallThisCC(), nextReg(), llvm::HexagonBlockRanges::IndexRange::operator<(), llvm::RegionBase< RegionTraits< Function > >::outermostLoopInRegion(), Passv64i1ArgInRegs(), PrepareCall(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::R600InstrInfo::readsLDSSrcReg(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), setRequiredFeatureString(), llvm::X86MachineFunctionInfo::setRestoreBasePointer(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::AVRRegisterInfo::splitReg(), UseReg(), 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 166 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 107 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by llvm::AArch64CallLowering::AArch64CallLowering(), addCalleeSavedRegs(), llvm::RegsForValue::AddInlineAsmOperands(), llvm::MachineBasicBlock::addLiveIn(), llvm::MachineFunction::addLiveIn(), llvm::addLiveIns(), llvm::LiveVariables::addNewBlock(), llvm::MachineInstr::addOperand(), addRegsToSet(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::SITargetLowering::AdjustInstrPostInstrSelection(), llvm::SIMachineFunctionInfo::allocateSGPRSpillToVGPR(), llvm::AMDGPUInstructionSelector::AMDGPUInstructionSelector(), llvm::LiveRangeEdit::anyRematerializable(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), attachMEMCPYScratchRegs(), llvm::rdf::DataFlowGraph::build(), BuildInstOrderMap(), llvm::LiveRangeEdit::calculateRegClassAndHint(), llvm::calculateSpillWeightsAndHints(), callHasRegMask(), canCompareBeNewValueJump(), canFoldCopy(), llvm::PPCInstrInfo::canInsertSelect(), llvm::SystemZInstrInfo::canInsertSelect(), llvm::SIInstrInfo::canInsertSelect(), llvm::AArch64InstrInfo::canInsertSelect(), llvm::X86InstrInfo::canInsertSelect(), canInstrSubstituteCmpInstr(), canMoveInstsAcrossMemOp(), llvm::X86RegisterInfo::canRealignStack(), llvm::ARMBaseRegisterInfo::canRealignStack(), CC_MipsO32_FP64(), changeFCMPPredToAArch64CC(), CheckBaseRegAndIndexRegAndScale(), llvm::SplitAnalysis::clear(), llvm::ModuleSymbolTable::CollectAsmSymbols(), CombineCVTAToLocal(), llvm::HexagonBlockRanges::computeDeadMap(), llvm::computeLiveIns(), computeWeight(), llvm::InstructionSelector::constrainOperandRegToRegClass(), llvm::InstructionSelector::constrainSelectedInstRegOperands(), llvm::LivePhysRegs::contains(), llvm::SystemZInstrInfo::convertToThreeAddress(), llvm::WebAssemblyInstrInfo::copyPhysReg(), llvm::NVPTXInstrInfo::copyPhysReg(), llvm::createAArch64ConditionOptimizerPass(), createBBSelectReg(), llvm::createBPFbeMCCodeEmitter(), llvm::LiveRangeEdit::createEmptyIntervalFrom(), llvm::LiveRangeEdit::createFrom(), llvm::createGreedyRegisterAllocator(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), createPHIsForCMOVsInSinkBB(), llvm::createR600ISelDag(), llvm::createR600MCCodeEmitter(), llvm::createRegUsageInfoCollector(), llvm::createSIFixWWMLivenessPass(), llvm::createSILowerI1CopiesPass(), llvm::createSIWholeQuadModePass(), llvm::HexagonInstrInfo::createVR(), llvm::createWebAssemblyFixIrreducibleControlFlow(), llvm::createWebAssemblyLowerBrUnless(), llvm::createWebAssemblyOptimizeLiveIntervals(), llvm::createWebAssemblyRegNumbering(), llvm::createWebAssemblyReplacePhysRegs(), llvm::createX86FixupSetCC(), llvm::createX86OptimizeLEAs(), llvm::RegPressureTracker::decreaseRegPressure(), llvm::XCoreFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::HexagonFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), doCandidateWalk(), llvm::VirtRegMap::dump(), dumpLocation(), dumpMachineInstrRangeWithSlotIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), emitClzero(), llvm::SparcTargetLowering::emitEHSjLjLongJmp(), llvm::PPCTargetLowering::emitEHSjLjLongJmp(), llvm::SparcTargetLowering::emitEHSjLjSetJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), emitEncodingByte(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::WebAssemblyFrameLowering::emitEpilogue(), EmitHiLo(), emitIndirectDst(), emitIndirectSrc(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), llvm::NVPTXAsmPrinter::emitLineNumberAsDotLoc(), emitPostSt(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::WebAssemblyFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), emitXBegin(), llvm::PressureDiff::end(), llvm::MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval(), eraseGPOpnd(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::InstructionSelector::executeMatchTable(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::CallLowering::ValueHandler::extendRegister(), llvm::LegalizerHelper::fewerElementsVector(), llvm::SITargetLowering::finalizeLowering(), llvm::findPHICopyInsertPoint(), findScratchNonCalleeSaveRegister(), FindStartOfTree(), forceReg(), llvm::RegScavenger::forward(), llvm::TargetInstrInfo::genAlternativeCodeSequence(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), GetAEABIUnwindPersonalityName(), getAllSGPRs(), getARClassRegisterMask(), llvm::HexagonFrameLowering::getCalleeSavedSpillSlots(), llvm::FunctionLoweringInfo::getCatchPadExceptionPointerVReg(), getCIEVersion(), getCompareCC(), getComparePred(), 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(), getLeaOP(), getLit64Encoding(), getLiveLanesAt(), llvm::TargetMachine::getMCRegisterInfo(), getMFHiLoOpc(), llvm::RegisterBankInfo::OperandsMapper::getMRI(), llvm::SIScheduleDAGMI::getMRI(), llvm::GCNDownwardRPTracker::getNext(), getNextRegister(), getNumAllocatableRegsForConstraints(), getNumExtraSGPRs(), llvm::GCNRegPressure::getOccupancy(), getOModValue(), getOpenCLAlignment(), llvm::PPCInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::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(), llvm::LanaiInstrInfo::getRegisterInfo(), llvm::Legalizer::getSetProperties(), getSpecialRegForName(), getSrcFromCopy(), getStoreTarget(), getSubOpcode(), getTag(), getUsedRegMask(), llvm::NVPTXAsmPrinter::getVirtualRegisterName(), llvm::PerFunctionMIParsingState::getVRegInfo(), getX86SSEConditionCode(), llvm::LiveIntervals::handleMove(), llvm::LiveIntervals::handleMoveIntoBundle(), llvm::LiveVariables::HandleVirtRegDef(), llvm::LiveVariables::HandleVirtRegUse(), HandleVRSaveUpdate(), HasArgumentDef(), HasConditionalBranch(), hasCopyImplyingStackAdjustment(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), hasOneNonDBGUseInst(), llvm::TargetInstrInfo::hasReassociableOperands(), llvm::TargetInstrInfo::hasReassociableSibling(), hasTiedDef(), hasTrivialSuccessor(), hasVGPROperands(), 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::SIInstrInfo::insertIndirectBranch(), llvm::SIInstrInfo::insertNE(), insertPHI(), llvm::PPCInstrInfo::insertSelect(), llvm::SystemZInstrInfo::insertSelect(), llvm::SIInstrInfo::insertSelect(), llvm::AArch64InstrInfo::insertSelect(), llvm::X86InstrInfo::insertSelect(), llvm::SIInstrInfo::insertVectorSelect(), instIsBreakpoint(), isConstant(), llvm::IsCPSRDead< MCInst >(), isCrossCopy(), isCVTAToLocalCombinationCandidate(), isDebug(), isDefBetween(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), isEqual(), isFpMulInstruction(), isFullCopyOf(), isFullUndefDef(), isImplicitlyDef(), isImplicitOperandIn(), isInstrUniform(), llvm::X86TargetLowering::isIntDivCheap(), llvm::AMDGPU::isKernel(), isLEA(), isMulPowOf2(), llvm::InstructionSelector::isOperandImmEqual(), llvm::SIInstrInfo::isOperandLegal(), isPreISelGenericFloatingPointOpcode(), llvm::isPushOpcode(), isPushPop(), llvm::X86InstrInfo::isReallyTriviallyReMaterializable(), IsSafeAndProfitableToMove(), isSExtLoad(), llvm::PPCInstrInfo::isSignOrZeroExtended(), isSimpleIf(), IsSmallMemAccess(), isSortedByValueNo(), isSourceDefinedByImplicitDef(), isSSA(), llvm::AArch64InstrInfo::isSubregFoldable(), llvm::X86InstrInfo::isSubregFoldable(), isSupportedType(), isTransformable(), llvm::SITargetLowering::isTypeDesirableForOp(), isUseSafeToFold(), isXor1OfSetCC(), llvm::AArch64LegalizerInfo::legalizeCustom(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsSMRD(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::SITargetLowering::legalizeTargetIndependentNode(), LLVMCreateDisasmCPUFeatures(), LLVMSetDisasmOptions(), loadM0FromVGPR(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::WebAssemblyMCInstLower::Lower(), llvm::LegalizerHelper::lower(), llvm::ARMCallLowering::lowerCall(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::TargetLowering::LowerCustomJumpTableEntry(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::ARMCallLowering::lowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::ARMCallLowering::lowerReturn(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::LiveRangeEdit::Delegate::LRE_DidCloneVirtReg(), llvm::BitTracker::MachineEvaluator::MachineEvaluator(), llvm::LiveInterval::markNotSpillable(), llvm::LEONMachineFunctionPass::markRegisterUsed(), MatchingStackOffset(), llvm::AArch64RegisterInfo::materializeFrameBaseRegister(), llvm::SIRegisterInfo::materializeFrameBaseRegister(), llvm::PPCRegisterInfo::materializeFrameBaseRegister(), llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(), llvm::SIInstrInfo::materializeImmediate(), MaybeRewriteToFallthrough(), mayTailCallThisCC(), llvm::MipsSEDAGToDAGISel::MipsSEDAGToDAGISel(), llvm::LegalizerInfo::moreToWiderTypesAndLessToWidest(), MoveAndTeeForMultiUse(), llvm::SIInstrInfo::moveToVALU(), needsPCRel(), needToReserveScavengingSpillSlots(), llvm::SIRegisterInfo::opCanUseInlineConstant(), llvm::PressureDiffs::operator[](), optimizeCall(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::ARMBaseInstrInfo::optimizeSelect(), packCmovGroup(), parseCond(), populateCandidates(), llvm::SITargetLowering::PostISelFolding(), llvm::HexagonInstrInfo::PredicateInstruction(), llvm::MIPrinter::print(), llvm::MachineInstr::print(), printExtendedName(), printFPOReg(), printLivenessInfo(), PrintQuotedString(), llvm::HexagonBlockRanges::PrintRangeMap::PrintRangeMap(), llvm::AMDGPUInstPrinter::printRegOperand(), profitImm(), DeadCodeElimination::SetQueue< T >::push_back(), readsVCCZ(), llvm::TargetInstrInfo::reassociateOps(), llvm::recomputeLivenessFlags(), RegisterMCAsmBackend< MCAsmBackendImpl >::RegisterMCAsmBackend(), llvm::TargetInstrInfo::RegSubRegPairAndIdx::RegSubRegPairAndIdx(), removeDeadSegment(), removeIPMBasedCompare(), llvm::LiveVariables::VarInfo::removeKill(), llvm::MachineInstr::RemoveOperand(), llvm::ARMTargetLowering::ReplaceNodeResults(), RequiresVFPRegListValidation(), 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::LiveVariables::runOnMachineFunction(), llvm::ExecutionDepsFix::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::SIRegisterInfo::spillSGPR(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::LiveIntervals::splitSeparateComponents(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), false::Chain::str(), subRangeLiveAt(), SwapBits(), llvm::RegBankSelect::RepairingPlacement::switchTo(), llvm::BitTracker::trace(), tryChangeVGPRtoSGPRinCopy(), tryFoldInst(), unsupportedBinOp(), updateLiveness(), UpdateOperandRegClass(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::ARMBaseRegisterInfo::updateRegAllocHint(), usedAsAddr(), llvm::PPCInstrInfo::useMachineCombiner(), llvm::MachineTraceMetrics::Ensemble::verify(), llvm::SIInstrInfo::verifyInstruction(), verifyLeafProcRegUse(), writeSPToMemory(), llvm::X86CallLowering::X86CallLowering(), X86ChooseCmpImmediateOpcode(), and X86SelectAddress().

◆ SubReg

unsigned SubReg

Definition at line 106 of file AArch64AdvSIMDScalarPass.cpp.

Referenced by llvm::MachineInstrBuilder::addDef(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addUse(), llvm::SIInstrInfo::buildExtractSubReg(), llvm::SIInstrInfo::buildExtractSubRegOrImm(), buildMUBUFOffsetLoadStore(), llvm::LiveRangeCalc::calculate(), llvm::LiveInterval::computeSubRangeUndefs(), llvm::AArch64InstrInfo::copyPhysRegTuple(), countOperands(), 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(), getCopyRewriter(), getIntOperandFromRegisterString(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), getReassignedChan(), llvm::SuperRegClassIterator::getSubReg(), getUsedRegMask(), llvm::PerFunctionMIParsingState::getVRegInfo(), llvm::LiveIntervals::handleMoveIntoBundle(), llvm::LiveVariables::HandleVirtRegDef(), isBitfieldExtractOp(), isCrossCopy(), isImplicitOperandIn(), isPreferredADD(), isStackPtrRelative(), isTransformable(), llvm::SIRegisterInfo::isVGPRPressureSet(), llvm::MipsSEInstrInfo::loadImmediate(), narrowIfNeeded(), performBitcastCombine(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::SIRegisterInfo::restoreSGPR(), llvm::LiveIntervals::shrinkToUses(), llvm::SIRegisterInfo::spillSGPR(), swapRegAndNonRegOperand(), llvm::SystemZRegisterInfo::trackLivenessAfterRegAlloc(), llvm::LiveIntervals::HMEditor::updateAllRanges(), 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().