Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/llvm/Passes/MachinePassRegistry.def is written in an unsupported language. File is not indexed.

0001 //===- MachinePassRegistry.def - Registry of passes -------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file is used as the registry of passes that are for target-independent
0010 // code generator.
0011 //
0012 //===----------------------------------------------------------------------===//
0013 
0014 // NOTE: NO INCLUDE GUARD DESIRED!
0015 
0016 #ifndef MODULE_ANALYSIS
0017 #define MODULE_ANALYSIS(NAME, CREATE_PASS)
0018 #endif
0019 MODULE_ANALYSIS("collector-metadata", CollectorMetadataAnalysis())
0020 MODULE_ANALYSIS("machine-module-info", MachineModuleAnalysis())
0021 MODULE_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
0022 #undef MODULE_ANALYSIS
0023 
0024 #ifndef MODULE_PASS
0025 #define MODULE_PASS(NAME, CREATE_PASS)
0026 #endif
0027 MODULE_PASS("global-merge", GlobalMergePass(TM, GlobalMergeOptions()))
0028 MODULE_PASS("jmc-instrumenter", JMCInstrumenterPass())
0029 MODULE_PASS("lower-emutls", LowerEmuTLSPass())
0030 MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass())
0031 MODULE_PASS("print<regusage>", PhysicalRegisterUsageInfoPrinterPass(errs()))
0032 MODULE_PASS("shadow-stack-gc-lowering", ShadowStackGCLoweringPass())
0033 MODULE_PASS("global-merge-func", GlobalMergeFuncPass())
0034 #undef MODULE_PASS
0035 
0036 #ifndef FUNCTION_ANALYSIS
0037 #define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
0038 #endif
0039 FUNCTION_ANALYSIS("gc-function", GCFunctionAnalysis())
0040 FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
0041 FUNCTION_ANALYSIS("ssp-layout", SSPLayoutAnalysis())
0042 FUNCTION_ANALYSIS("target-ir", TargetIRAnalysis(std::move(TM.getTargetIRAnalysis())))
0043 #undef FUNCTION_ANALYSIS
0044 
0045 #ifndef FUNCTION_PASS
0046 #define FUNCTION_PASS(NAME, CREATE_PASS)
0047 #endif
0048 FUNCTION_PASS("callbr-prepare", CallBrPreparePass())
0049 FUNCTION_PASS("cfguard", CFGuardPass())
0050 FUNCTION_PASS("codegenprepare", CodeGenPreparePass(TM))
0051 FUNCTION_PASS("consthoist", ConstantHoistingPass())
0052 FUNCTION_PASS("dwarf-eh-prepare", DwarfEHPreparePass(TM))
0053 FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass(false))
0054 FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass(TM))
0055 FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass(TM))
0056 FUNCTION_PASS("expand-memcmp", ExpandMemCmpPass(TM))
0057 FUNCTION_PASS("expand-reductions", ExpandReductionsPass())
0058 FUNCTION_PASS("gc-lowering", GCLoweringPass())
0059 FUNCTION_PASS("indirectbr-expand", IndirectBrExpandPass(TM))
0060 FUNCTION_PASS("interleaved-access", InterleavedAccessPass(TM))
0061 FUNCTION_PASS("interleaved-load-combine", InterleavedLoadCombinePass(TM))
0062 FUNCTION_PASS("lower-constant-intrinsics", LowerConstantIntrinsicsPass())
0063 FUNCTION_PASS("lower-invoke", LowerInvokePass())
0064 FUNCTION_PASS("mergeicmps", MergeICmpsPass())
0065 FUNCTION_PASS("partially-inline-libcalls", PartiallyInlineLibCallsPass())
0066 FUNCTION_PASS("post-inline-ee-instrument", EntryExitInstrumenterPass(true))
0067 FUNCTION_PASS("replace-with-veclib", ReplaceWithVeclib())
0068 FUNCTION_PASS("safe-stack", SafeStackPass(TM))
0069 FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass())
0070 FUNCTION_PASS("select-optimize", SelectOptimizePass(TM))
0071 FUNCTION_PASS("sjlj-eh-prepare", SjLjEHPreparePass(TM))
0072 FUNCTION_PASS("stack-protector", StackProtectorPass(TM))
0073 FUNCTION_PASS("tlshoist", TLSVariableHoistPass())
0074 FUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass())
0075 FUNCTION_PASS("verify", VerifierPass())
0076 FUNCTION_PASS("wasm-eh-prepare", WasmEHPreparePass())
0077 FUNCTION_PASS("win-eh-prepare", WinEHPreparePass())
0078 #undef FUNCTION_PASS
0079 
0080 #ifndef LOOP_PASS
0081 #define LOOP_PASS(NAME, CREATE_PASS)
0082 #endif
0083 LOOP_PASS("loop-reduce", LoopStrengthReducePass())
0084 LOOP_PASS("loop-term-fold", LoopTermFoldPass())
0085 #undef LOOP_PASS
0086 
0087 #ifndef MACHINE_MODULE_PASS
0088 #define MACHINE_MODULE_PASS(NAME, CREATE_PASS)
0089 #endif
0090 #undef MACHINE_MODULE_PASS
0091 
0092 #ifndef MACHINE_FUNCTION_ANALYSIS
0093 #define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS)
0094 #endif
0095 // LiveVariables currently requires pure SSA form.
0096 // FIXME: Once TwoAddressInstruction pass no longer uses kill flags,
0097 // LiveVariables can be removed completely, and LiveIntervals can be directly
0098 // computed. (We still either need to regenerate kill flags after regalloc, or
0099 // preferably fix the scavenger to not depend on them).
0100 MACHINE_FUNCTION_ANALYSIS("edge-bundles", EdgeBundlesAnalysis())
0101 MACHINE_FUNCTION_ANALYSIS("livedebugvars", LiveDebugVariablesAnalysis())
0102 MACHINE_FUNCTION_ANALYSIS("live-intervals", LiveIntervalsAnalysis())
0103 MACHINE_FUNCTION_ANALYSIS("live-reg-matrix", LiveRegMatrixAnalysis())
0104 MACHINE_FUNCTION_ANALYSIS("live-stacks", LiveStacksAnalysis())
0105 MACHINE_FUNCTION_ANALYSIS("live-vars", LiveVariablesAnalysis())
0106 MACHINE_FUNCTION_ANALYSIS("machine-block-freq", MachineBlockFrequencyAnalysis())
0107 MACHINE_FUNCTION_ANALYSIS("machine-branch-prob",
0108                           MachineBranchProbabilityAnalysis())
0109 MACHINE_FUNCTION_ANALYSIS("machine-dom-tree", MachineDominatorTreeAnalysis())
0110 MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopAnalysis())
0111 MACHINE_FUNCTION_ANALYSIS("machine-opt-remark-emitter",
0112                           MachineOptimizationRemarkEmitterAnalysis())
0113 MACHINE_FUNCTION_ANALYSIS("machine-post-dom-tree",
0114                           MachinePostDominatorTreeAnalysis())
0115 MACHINE_FUNCTION_ANALYSIS("machine-trace-metrics", MachineTraceMetricsAnalysis())
0116 MACHINE_FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
0117 MACHINE_FUNCTION_ANALYSIS("slot-indexes", SlotIndexesAnalysis())
0118 MACHINE_FUNCTION_ANALYSIS("spill-code-placement", SpillPlacementAnalysis())
0119 MACHINE_FUNCTION_ANALYSIS("virtregmap", VirtRegMapAnalysis())
0120 // MACHINE_FUNCTION_ANALYSIS("lazy-machine-bfi",
0121 // LazyMachineBlockFrequencyInfoAnalysis())
0122 // MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopInfoAnalysis())
0123 // MACHINE_FUNCTION_ANALYSIS("machine-dom-frontier",
0124 // MachineDominanceFrontierAnalysis())
0125 // MACHINE_FUNCTION_ANALYSIS("machine-post-dom-tree",
0126 // MachinePostDominatorTreeAnalysis())
0127 // MACHINE_FUNCTION_ANALYSIS("machine-region-info",
0128 // MachineRegionInfoPassAnalysis())
0129 // MACHINE_FUNCTION_ANALYSIS("reaching-def",
0130 // ReachingDefAnalysisAnalysis()) MACHINE_FUNCTION_ANALYSIS("gc-analysis",
0131 // GCMachineCodeAnalysisPass())
0132 #undef MACHINE_FUNCTION_ANALYSIS
0133 
0134 #ifndef MACHINE_FUNCTION_PASS
0135 #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
0136 #endif
0137 MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass())
0138 MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass())
0139 MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass())
0140 MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass())
0141 MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass())
0142 MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass())
0143 MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
0144 MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass())
0145 MACHINE_FUNCTION_PASS("no-op-machine-function", NoOpMachineFunctionPass())
0146 MACHINE_FUNCTION_PASS("opt-phis", OptimizePHIsPass())
0147 MACHINE_FUNCTION_PASS("peephole-opt", PeepholeOptimizerPass())
0148 MACHINE_FUNCTION_PASS("phi-node-elimination", PHIEliminationPass())
0149 MACHINE_FUNCTION_PASS("print", PrintMIRPass())
0150 MACHINE_FUNCTION_PASS("print<livedebugvars>", LiveDebugVariablesPrinterPass(errs()))
0151 MACHINE_FUNCTION_PASS("print<live-intervals>", LiveIntervalsPrinterPass(errs()))
0152 MACHINE_FUNCTION_PASS("print<live-stacks>", LiveStacksPrinterPass(errs()))
0153 MACHINE_FUNCTION_PASS("print<live-vars>", LiveVariablesPrinterPass(errs()))
0154 MACHINE_FUNCTION_PASS("print<machine-block-freq>",
0155                       MachineBlockFrequencyPrinterPass(errs()))
0156 MACHINE_FUNCTION_PASS("print<machine-branch-prob>",
0157                       MachineBranchProbabilityPrinterPass(errs()))
0158 MACHINE_FUNCTION_PASS("print<machine-dom-tree>",
0159                       MachineDominatorTreePrinterPass(errs()))
0160 MACHINE_FUNCTION_PASS("print<machine-loops>", MachineLoopPrinterPass(errs()))
0161 MACHINE_FUNCTION_PASS("print<machine-post-dom-tree>",
0162                       MachinePostDominatorTreePrinterPass(errs()))
0163 MACHINE_FUNCTION_PASS("print<slot-indexes>", SlotIndexesPrinterPass(errs()))
0164 MACHINE_FUNCTION_PASS("print<virtregmap>", VirtRegMapPrinterPass(errs()))
0165 MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass())
0166 MACHINE_FUNCTION_PASS("reg-usage-propagation", RegUsageInfoPropagationPass())
0167 MACHINE_FUNCTION_PASS("require-all-machine-function-properties",
0168                       RequireAllMachineFunctionPropertiesPass())
0169 MACHINE_FUNCTION_PASS("stack-coloring", StackColoringPass())
0170 MACHINE_FUNCTION_PASS("tailduplication", TailDuplicatePass())
0171 MACHINE_FUNCTION_PASS("trigger-verifier-error", TriggerVerifierErrorPass())
0172 MACHINE_FUNCTION_PASS("two-address-instruction", TwoAddressInstructionPass())
0173 MACHINE_FUNCTION_PASS("verify", MachineVerifierPass())
0174 MACHINE_FUNCTION_PASS("verify<machine-trace-metrics>", MachineTraceMetricsVerifierPass())
0175 #undef MACHINE_FUNCTION_PASS
0176 
0177 #ifndef MACHINE_FUNCTION_PASS_WITH_PARAMS
0178 #define MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER,    \
0179                                           PARAMS)
0180 #endif
0181 MACHINE_FUNCTION_PASS_WITH_PARAMS(
0182     "regallocfast", "RegAllocFastPass",
0183     [](RegAllocFastPassOptions Opts) { return RegAllocFastPass(Opts); },
0184     [PB = this](StringRef Params) {
0185       return parseRegAllocFastPassOptions(*PB, Params);
0186     },
0187     "filter=reg-filter;no-clear-vregs")
0188 #undef MACHINE_FUNCTION_PASS_WITH_PARAMS
0189 
0190 // After a pass is converted to new pass manager, its entry should be moved from
0191 // dummy table to the normal one. For example, for a machine function pass,
0192 // DUMMY_MACHINE_FUNCTION_PASS to MACHINE_FUNCTION_PASS.
0193 
0194 #ifndef DUMMY_FUNCTION_PASS
0195 #define DUMMY_FUNCTION_PASS(NAME, PASS_NAME)
0196 #endif
0197 #undef DUMMY_FUNCTION_PASS
0198 
0199 #ifndef DUMMY_MACHINE_MODULE_PASS
0200 #define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME)
0201 #endif
0202 DUMMY_MACHINE_MODULE_PASS("machine-outliner", MachineOutlinerPass)
0203 DUMMY_MACHINE_MODULE_PASS("pseudo-probe-inserter", PseudoProbeInserterPass)
0204 DUMMY_MACHINE_MODULE_PASS("mir-debugify", DebugifyMachineModule)
0205 DUMMY_MACHINE_MODULE_PASS("mir-check-debugify", CheckDebugMachineModulePass)
0206 DUMMY_MACHINE_MODULE_PASS("mir-strip-debug", StripDebugMachineModulePass)
0207 #undef DUMMY_MACHINE_MODULE_PASS
0208 
0209 #ifndef DUMMY_MACHINE_FUNCTION_PASS
0210 #define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME)
0211 #endif
0212 DUMMY_MACHINE_FUNCTION_PASS("bbsections-prepare", BasicBlockSectionsPass)
0213 DUMMY_MACHINE_FUNCTION_PASS("bbsections-profile-reader", BasicBlockSectionsProfileReaderPass)
0214 DUMMY_MACHINE_FUNCTION_PASS("block-placement", MachineBlockPlacementPass)
0215 DUMMY_MACHINE_FUNCTION_PASS("block-placement-stats", MachineBlockPlacementStatsPass)
0216 DUMMY_MACHINE_FUNCTION_PASS("branch-folder", BranchFolderPass)
0217 DUMMY_MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass)
0218 DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass)
0219 DUMMY_MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass)
0220 DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass)
0221 DUMMY_MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass)
0222 DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter)
0223 DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass)
0224 DUMMY_MACHINE_FUNCTION_PASS("fixup-statepoint-caller-saved", FixupStatepointCallerSavedPass)
0225 DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass)
0226 DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass)
0227 DUMMY_MACHINE_FUNCTION_PASS("gc-empty-basic-blocks", GCEmptyBasicBlocksPass)
0228 DUMMY_MACHINE_FUNCTION_PASS("implicit-null-checks", ImplicitNullChecksPass)
0229 DUMMY_MACHINE_FUNCTION_PASS("init-undef-pass", InitUndefPass)
0230 DUMMY_MACHINE_FUNCTION_PASS("instruction-select", InstructionSelectPass)
0231 DUMMY_MACHINE_FUNCTION_PASS("irtranslator", IRTranslatorPass)
0232 DUMMY_MACHINE_FUNCTION_PASS("kcfi", MachineKCFIPass)
0233 DUMMY_MACHINE_FUNCTION_PASS("legalizer", LegalizerPass)
0234 DUMMY_MACHINE_FUNCTION_PASS("livedebugvalues", LiveDebugValuesPass)
0235 DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass)
0236 DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass)
0237 DUMMY_MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass)
0238 DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
0239 DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
0240 DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass)
0241 DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata)
0242 DUMMY_MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass)
0243 DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass)
0244 DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass)
0245 DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
0246 DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)
0247 DUMMY_MACHINE_FUNCTION_PASS("patchable-function", PatchableFunctionPass)
0248 DUMMY_MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass)
0249 DUMMY_MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass)
0250 DUMMY_MACHINE_FUNCTION_PASS("postra-machine-sink", PostRAMachineSinkingPass)
0251 DUMMY_MACHINE_FUNCTION_PASS("postrapseudos", ExpandPostRAPseudosPass)
0252 DUMMY_MACHINE_FUNCTION_PASS("print-machine-cycles", MachineCycleInfoPrinterPass)
0253 DUMMY_MACHINE_FUNCTION_PASS("print-machine-uniformity", MachineUniformityInfoPrinterPass)
0254 DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass)
0255 DUMMY_MACHINE_FUNCTION_PASS("prologepilog", PrologEpilogInserterPass)
0256 DUMMY_MACHINE_FUNCTION_PASS("prologepilog-code", PrologEpilogCodeInserterPass)
0257 DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass)
0258 DUMMY_MACHINE_FUNCTION_PASS("ra-greedy", RAGreedyPass)
0259 DUMMY_MACHINE_FUNCTION_PASS("ra-pbqp", RAPBQPPass)
0260 DUMMY_MACHINE_FUNCTION_PASS("regalloc", RegAllocPass)
0261 DUMMY_MACHINE_FUNCTION_PASS("regallocscoringpass", RegAllocScoringPass)
0262 DUMMY_MACHINE_FUNCTION_PASS("regbankselect", RegBankSelectPass)
0263 DUMMY_MACHINE_FUNCTION_PASS("remove-loads-into-fake-uses", RemoveLoadsIntoFakeUsesPass)
0264 DUMMY_MACHINE_FUNCTION_PASS("removeredundantdebugvalues", RemoveRedundantDebugValuesPass)
0265 DUMMY_MACHINE_FUNCTION_PASS("rename-independent-subregs", RenameIndependentSubregsPass)
0266 DUMMY_MACHINE_FUNCTION_PASS("reset-machine-function", ResetMachineFunctionPass)
0267 DUMMY_MACHINE_FUNCTION_PASS("shrink-wrap", ShrinkWrapPass)
0268 DUMMY_MACHINE_FUNCTION_PASS("simple-register-coalescing", RegisterCoalescerPass)
0269 DUMMY_MACHINE_FUNCTION_PASS("stack-frame-layout", StackFrameLayoutAnalysisPass)
0270 DUMMY_MACHINE_FUNCTION_PASS("stack-slot-coloring", StackSlotColoringPass)
0271 DUMMY_MACHINE_FUNCTION_PASS("stackmap-liveness", StackMapLivenessPass)
0272 DUMMY_MACHINE_FUNCTION_PASS("unpack-mi-bundles", UnpackMachineBundlesPass)
0273 DUMMY_MACHINE_FUNCTION_PASS("virtregrewriter", VirtRegRewriterPass)
0274 DUMMY_MACHINE_FUNCTION_PASS("xray-instrumentation", XRayInstrumentationPass)
0275 #undef DUMMY_MACHINE_FUNCTION_PASS