LLVM 22.0.0git
Legalizer.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "legalizer"

Typedefs

using InstListTy = GISelWorkList<256>
using ArtifactListTy = GISelWorkList<128>

Enumerations

enum class  DebugLocVerifyLevel { None , Legalizations , LegalizationsAndArtifactCombiners }

Functions

 INITIALIZE_PASS_BEGIN (Legalizer, DEBUG_TYPE, "Legalize the Machine IR a function's Machine IR", false, false) INITIALIZE_PASS_END(Legalizer
static bool isArtifact (const MachineInstr &MI)

Variables

static cl::opt< boolEnableCSEInLegalizer ("enable-cse-in-legalizer", cl::desc("Should enable CSE in Legalizer"), cl::Optional, cl::init(false))
static cl::opt< boolAllowGInsertAsArtifact ("allow-ginsert-as-artifact", cl::desc("Allow G_INSERT to be considered an artifact. Hack around AMDGPU " "test infinite loops."), cl::Optional, cl::init(true))
static cl::opt< DebugLocVerifyLevelVerifyDebugLocs ("verify-legalizer-debug-locs", cl::desc("Verify that debug locations are handled"), cl::values(clEnumValN(DebugLocVerifyLevel::None, "none", "No verification"), clEnumValN(DebugLocVerifyLevel::Legalizations, "legalizations", "Verify legalizations"), clEnumValN(DebugLocVerifyLevel::LegalizationsAndArtifactCombiners, "legalizations+artifactcombiners", "Verify legalizations and artifact combines")), cl::init(DebugLocVerifyLevel::Legalizations))
 DEBUG_TYPE
Legalize the Machine IR a function s Machine IR
Legalize the Machine IR a function s Machine false

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "legalizer"

Definition at line 33 of file Legalizer.cpp.

Typedef Documentation

◆ ArtifactListTy

Definition at line 117 of file Legalizer.cpp.

◆ InstListTy

using InstListTy = GISelWorkList<256>

Definition at line 116 of file Legalizer.cpp.

Enumeration Type Documentation

◆ DebugLocVerifyLevel

enum class DebugLocVerifyLevel
strong
Enumerator
None 
Legalizations 
LegalizationsAndArtifactCombiners 

Definition at line 49 of file Legalizer.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( Legalizer ,
DEBUG_TYPE ,
"Legalize the Machine IR a function's Machine IR" ,
false ,
false  )

◆ isArtifact()

bool isArtifact ( const MachineInstr & MI)
static

Definition at line 98 of file Legalizer.cpp.

References AllowGInsertAsArtifact, and MI.

Referenced by llvm::Legalizer::legalizeMachineFunction().

Variable Documentation

◆ AllowGInsertAsArtifact

cl::opt< bool > AllowGInsertAsArtifact("allow-ginsert-as-artifact", cl::desc("Allow G_INSERT to be considered an artifact. Hack around AMDGPU " "test infinite loops."), cl::Optional, cl::init(true)) ( "allow-ginsert-as-artifact" ,
cl::desc("Allow G_INSERT to be considered an artifact. Hack around AMDGPU " "test infinite loops.") ,
cl::Optional ,
cl::init(true)  )
static

Referenced by isArtifact().

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 79 of file Legalizer.cpp.

◆ EnableCSEInLegalizer

cl::opt< bool > EnableCSEInLegalizer("enable-cse-in-legalizer", cl::desc("Should enable CSE in Legalizer"), cl::Optional, cl::init(false)) ( "enable-cse-in-legalizer" ,
cl::desc("Should enable CSE in Legalizer") ,
cl::Optional ,
cl::init(false)  )
static

◆ false

Definition at line 80 of file Legalizer.cpp.

◆ IR

Definition at line 80 of file Legalizer.cpp.

Referenced by llvm::AnalysisManager< IRUnitT, ExtraArgTs >::Invalidator::AnalysisManager, llvm::mca::Scheduler::analyzeDataDependencies(), llvm::IRComparer< T >::analyzeIR(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::cachedResultExists(), canNarrowLoad(), llvm::mca::AMDGPUCustomBehaviour::checkCustomHazard(), llvm::mca::CustomBehaviour::checkCustomHazard(), llvm::mca::Stage::checkNextStage(), llvm::mca::checkRegisterHazard(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::clear(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::clear(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::clearAnalysis(), llvm::mca::Scheduler::cycleEvent(), llvm::mca::ExecuteStage::cycleStart(), llvm::mca::InOrderIssueStage::cycleStart(), llvm::mca::LSUnit::dispatch(), llvm::mca::LSUnitBase::dispatch(), llvm::mca::RetireControlUnit::dispatch(), llvm::mca::Scheduler::dispatch(), llvm::mca::DispatchStage::execute(), llvm::mca::ExecuteStage::execute(), llvm::mca::InOrderIssueStage::execute(), llvm::mca::InstructionTables::execute(), llvm::mca::MicroOpQueueStage::execute(), llvm::mca::RetireStage::execute(), llvm::mca::Stage::execute(), llvm::mca::findFirstWriteBackCycle(), llvm::ChangeReporter< IRUnitT >::generateIRRepresentation(), llvm::DotCfgChangeReporter::generateIRRepresentation(), llvm::InLineChangePrinter::generateIRRepresentation(), llvm::IRChangedPrinter::generateIRRepresentation(), llvm::detail::getAnalysisResult(), llvm::detail::getAnalysisResultUnpackTuple(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::getCachedResult(), llvm::OuterAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::getCachedResult(), GetFunctions(), getIRFileDisplayName(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::getResult(), llvm::DotCfgChangeReporter::handleAfter(), llvm::InLineChangePrinter::handleAfter(), llvm::ChangeReporter< IRUnitT >::handleInitialIR(), llvm::DotCfgChangeReporter::handleInitialIR(), llvm::IRChangedTester::handleInitialIR(), llvm::TextChangeReporter< IRUnitT >::handleInitialIR(), llvm::ChangeReporter< IRUnitT >::handleIRAfterPass(), llvm::mca::LSUnit::hasDependentUsers(), llvm::mca::LSUnitBase::hasDependentUsers(), llvm::mca::hasResourceHazard(), llvm::mca::Scheduler::instructionCheck(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::Invalidator::invalidate(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::Invalidator::invalidate(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::invalidate(), llvm::detail::AnalysisResultConcept< IRUnitT, Invalidator >::invalidate(), llvm::detail::AnalysisResultModel< IRUnitT, PassT, ResultT, InvalidatorT, true >::invalidate(), llvm::FunctionAnalysisManagerMachineFunctionProxy::Result::invalidate(), llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs >::Result::invalidate(), llvm::mca::DispatchStage::isAvailable(), llvm::mca::ExecuteStage::isAvailable(), llvm::mca::InOrderIssueStage::isAvailable(), llvm::mca::LSUnit::isAvailable(), llvm::mca::LSUnitBase::isAvailable(), llvm::mca::MicroOpQueueStage::isAvailable(), llvm::mca::Scheduler::isAvailable(), llvm::mca::Stage::isAvailable(), llvm::mca::LSUnit::isPending(), llvm::mca::LSUnitBase::isPending(), llvm::mca::LSUnit::isReady(), llvm::mca::LSUnitBase::isReady(), llvm::mca::Scheduler::issueInstruction(), llvm::mca::LSUnit::isWaiting(), llvm::mca::LSUnitBase::isWaiting(), llvm::mca::Stage::moveToTheNextStage(), llvm::mca::Scheduler::mustIssueImmediately(), llvm::mca::ExecuteStage::notifyInstructionExecuted(), llvm::mca::ExecuteStage::notifyInstructionIssued(), llvm::mca::ExecuteStage::notifyInstructionPending(), llvm::mca::ExecuteStage::notifyInstructionReady(), llvm::mca::RetireStage::notifyInstructionRetired(), llvm::mca::ExecuteStage::notifyReservedOrReleasedBuffers(), llvm::mca::LSUnit::MemoryGroup::onGroupIssued(), llvm::mca::LSUnit::MemoryGroup::onInstructionExecuted(), llvm::mca::LSUnit::onInstructionExecuted(), llvm::mca::LSUnitBase::onInstructionExecuted(), llvm::mca::RetireControlUnit::onInstructionExecuted(), llvm::mca::LSUnit::MemoryGroup::onInstructionIssued(), llvm::mca::LSUnit::onInstructionIssued(), llvm::mca::LSUnitBase::onInstructionIssued(), llvm::mca::LSUnit::onInstructionRetired(), llvm::mca::LSUnitBase::onInstructionRetired(), llvm::mca::operator<<(), llvm::operator<<(), llvm::TimeProfilingPassesHandler::operator=(), optimizeMaskToEVL(), planContainsAdditionalSimplifications(), llvm::printIRUnitNameForStackTrace(), processCall(), llvm::DebugifyEachInstrumentation::registerCallbacks(), llvm::DroppedVariableStatsIR::registerCallbacks(), llvm::OptNoneInstrumentation::registerCallbacks(), llvm::OptPassGateInstrumentation::registerCallbacks(), llvm::PreservedCFGCheckerInstrumentation::registerCallbacks(), llvm::PrintCrashIRInstrumentation::registerCallbacks(), llvm::PrintIRInstrumentation::registerCallbacks(), llvm::PrintPassInstrumentation::registerCallbacks(), llvm::PseudoProbeVerifier::registerCallbacks(), llvm::TimeProfilingPassesHandler::registerCallbacks(), llvm::VerifyInstrumentation::registerCallbacks(), llvm::ChangeReporter< IRUnitT >::registerRequiredCallbacks(), llvm::detail::AnalysisPassConcept< IRUnitT, Invalidator, ExtraArgTs... >::run(), llvm::detail::AnalysisPassModel< IRUnitT, PassT, InvalidatorT, ExtraArgTs >::run(), llvm::detail::PassConcept< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >::run(), llvm::detail::PassModel< IRUnitT, PassT, AnalysisManagerT, ExtraArgTs >::run(), llvm::FunctionToLoopPassAdaptor::run(), llvm::InlinerPass::run(), llvm::InnerAnalysisManagerProxy< CGSCCAnalysisManager, Module >::run(), llvm::ModuleInlinerPass::run(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run(), llvm::PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >::run(), llvm::PassInstrumentation::runAfterAnalysis(), llvm::DroppedVariableStatsIR::runAfterPass(), llvm::PassInstrumentation::runAfterPass(), llvm::PseudoProbeVerifier::runAfterPass(), llvm::PassInstrumentation::runAnalysisInvalidated(), llvm::PassInstrumentation::runBeforeAnalysis(), llvm::DroppedVariableStatsIR::runBeforePass(), llvm::PassInstrumentation::runBeforePass(), llvm::ChangeReporter< IRUnitT >::saveIRBeforePass(), llvm::mca::Scheduler::select(), llvm::OptPassGateInstrumentation::shouldRun(), unwrapIR(), llvm::mca::verifyInstructionEliminated(), llvm::AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & >::verifyNotInvalidated(), writeIRFileDisplayName(), llvm::mca::AMDGPUCustomBehaviour::~AMDGPUCustomBehaviour(), llvm::mca::CustomBehaviour::~CustomBehaviour(), llvm::InLineChangePrinter::~InLineChangePrinter(), and llvm::IRChangedPrinter::~IRChangedPrinter().

◆ VerifyDebugLocs

cl::opt< DebugLocVerifyLevel > VerifyDebugLocs("verify-legalizer-debug-locs", cl::desc("Verify that debug locations are handled"), cl::values( clEnumValN(DebugLocVerifyLevel::None, "none", "No verification"), clEnumValN(DebugLocVerifyLevel::Legalizations, "legalizations", "Verify legalizations"), clEnumValN(DebugLocVerifyLevel::LegalizationsAndArtifactCombiners, "legalizations+artifactcombiners", "Verify legalizations and artifact combines")), cl::init(DebugLocVerifyLevel::Legalizations)) ( "verify-legalizer-debug-locs" ,
cl::desc("Verify that debug locations are handled") ,
cl::values( clEnumValN(DebugLocVerifyLevel::None, "none", "No verification"), clEnumValN(DebugLocVerifyLevel::Legalizations, "legalizations", "Verify legalizations"), clEnumValN(DebugLocVerifyLevel::LegalizationsAndArtifactCombiners, "legalizations+artifactcombiners", "Verify legalizations and artifact combines")) ,
cl::init(DebugLocVerifyLevel::Legalizations)  )
static