Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 14 | pmbaty | 1 | //===- MachinePassRegistry.def - Registry of passes -------------*- C++ -*-===// | 
| 2 | // | ||
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | // See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | // | ||
| 7 | //===----------------------------------------------------------------------===// | ||
| 8 | // | ||
| 9 | // This file is used as the registry of passes that are for target-independent | ||
| 10 | // code generator. | ||
| 11 | // | ||
| 12 | //===----------------------------------------------------------------------===// | ||
| 13 | |||
| 14 | // NOTE: NO INCLUDE GUARD DESIRED! | ||
| 15 | |||
| 16 | #ifndef MODULE_ANALYSIS | ||
| 17 | #define MODULE_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 18 | #endif | ||
| 19 | MODULE_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC)) | ||
| 20 | #undef MODULE_ANALYSIS | ||
| 21 | |||
| 22 | #ifndef MODULE_PASS | ||
| 23 | #define MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 24 | #endif | ||
| 25 | MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass, ()) | ||
| 26 | #undef MODULE_PASS | ||
| 27 | |||
| 28 | #ifndef FUNCTION_ANALYSIS | ||
| 29 | #define FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 30 | #endif | ||
| 31 | FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC)) | ||
| 32 | FUNCTION_ANALYSIS("targetir", TargetIRAnalysis, (std::move(TM.getTargetIRAnalysis()))) | ||
| 33 | #undef FUNCTION_ANALYSIS | ||
| 34 | |||
| 35 | #ifndef FUNCTION_PASS | ||
| 36 | #define FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 37 | #endif | ||
| 38 | FUNCTION_PASS("mergeicmps", MergeICmpsPass, ()) | ||
| 39 | FUNCTION_PASS("lower-constant-intrinsics", LowerConstantIntrinsicsPass, ()) | ||
| 40 | FUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass, ()) | ||
| 41 | FUNCTION_PASS("consthoist", ConstantHoistingPass, ()) | ||
| 42 | FUNCTION_PASS("replace-with-veclib", ReplaceWithVeclib, ()) | ||
| 43 | FUNCTION_PASS("partially-inline-libcalls", PartiallyInlineLibCallsPass, ()) | ||
| 44 | FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass, (false)) | ||
| 45 | FUNCTION_PASS("post-inline-ee-instrument", EntryExitInstrumenterPass, (true)) | ||
| 46 | FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass, ()) | ||
| 47 | FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass, ()) | ||
| 48 | FUNCTION_PASS("expand-reductions", ExpandReductionsPass, ()) | ||
| 49 | FUNCTION_PASS("expandvp", ExpandVectorPredicationPass, ()) | ||
| 50 | FUNCTION_PASS("lowerinvoke", LowerInvokePass, ()) | ||
| 51 | FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass, ()) | ||
| 52 | FUNCTION_PASS("tlshoist", TLSVariableHoistPass, ()) | ||
| 53 | FUNCTION_PASS("verify", VerifierPass, ()) | ||
| 54 | #undef FUNCTION_PASS | ||
| 55 | |||
| 56 | #ifndef LOOP_PASS | ||
| 57 | #define LOOP_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 58 | #endif | ||
| 59 | LOOP_PASS("loop-reduce", LoopStrengthReducePass, ()) | ||
| 60 | #undef LOOP_PASS | ||
| 61 | |||
| 62 | #ifndef MACHINE_MODULE_PASS | ||
| 63 | #define MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 64 | #endif | ||
| 65 | #undef MACHINE_MODULE_PASS | ||
| 66 | |||
| 67 | #ifndef MACHINE_FUNCTION_ANALYSIS | ||
| 68 | #define MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 69 | #endif | ||
| 70 | MACHINE_FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC)) | ||
| 71 | // LiveVariables currently requires pure SSA form. | ||
| 72 | // FIXME: Once TwoAddressInstruction pass no longer uses kill flags, | ||
| 73 | // LiveVariables can be removed completely, and LiveIntervals can be directly | ||
| 74 | // computed. (We still either need to regenerate kill flags after regalloc, or | ||
| 75 | // preferably fix the scavenger to not depend on them). | ||
| 76 | // MACHINE_FUNCTION_ANALYSIS("live-vars", LiveVariablesAnalysis()) | ||
| 77 | |||
| 78 | // MACHINE_FUNCTION_ANALYSIS("live-stacks", LiveStacksPass()) | ||
| 79 | // MACHINE_FUNCTION_ANALYSIS("slot-indexes", SlotIndexesAnalysis()) | ||
| 80 | // MACHINE_FUNCTION_ANALYSIS("edge-bundles", EdgeBundlesAnalysis()) | ||
| 81 | // MACHINE_FUNCTION_ANALYSIS("lazy-machine-bfi", LazyMachineBlockFrequencyInfoAnalysis()) | ||
| 82 | // MACHINE_FUNCTION_ANALYSIS("machine-bfi", MachineBlockFrequencyInfoAnalysis()) | ||
| 83 | // MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopInfoAnalysis()) | ||
| 84 | // MACHINE_FUNCTION_ANALYSIS("machine-dom-frontier", MachineDominanceFrontierAnalysis()) | ||
| 85 | // MACHINE_FUNCTION_ANALYSIS("machine-dom-tree", MachineDominatorTreeAnalysis()) | ||
| 86 | // MACHINE_FUNCTION_ANALYSIS("machine-ore", MachineOptimizationRemarkEmitterPassAnalysis()) | ||
| 87 | // MACHINE_FUNCTION_ANALYSIS("machine-post-dom-tree", MachinePostDominatorTreeAnalysis()) | ||
| 88 | // MACHINE_FUNCTION_ANALYSIS("machine-region-info", MachineRegionInfoPassAnalysis()) | ||
| 89 | // MACHINE_FUNCTION_ANALYSIS("machine-trace-metrics", MachineTraceMetricsAnalysis()) | ||
| 90 | // MACHINE_FUNCTION_ANALYSIS("reaching-def", ReachingDefAnalysisAnalysis()) | ||
| 91 | // MACHINE_FUNCTION_ANALYSIS("live-reg-matrix", LiveRegMatrixAnalysis()) | ||
| 92 | // MACHINE_FUNCTION_ANALYSIS("gc-analysis", GCMachineCodeAnalysisPass()) | ||
| 93 | #undef MACHINE_FUNCTION_ANALYSIS | ||
| 94 | |||
| 95 | #ifndef MACHINE_FUNCTION_PASS | ||
| 96 | #define MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 97 | #endif | ||
| 98 | // MACHINE_FUNCTION_PASS("mir-printer", PrintMIRPass, ()) | ||
| 99 | // MACHINE_FUNCTION_PASS("free-machine-function", FreeMachineFunctionPass, ()) | ||
| 100 | #undef MACHINE_FUNCTION_PASS | ||
| 101 | |||
| 102 | // After a pass is converted to new pass manager, its entry should be moved from | ||
| 103 | // dummy table to the normal one. For example, for a machine function pass, | ||
| 104 | // DUMMY_MACHINE_FUNCTION_PASS to MACHINE_FUNCTION_PASS. | ||
| 105 | |||
| 106 | #ifndef DUMMY_FUNCTION_PASS | ||
| 107 | #define DUMMY_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 108 | #endif | ||
| 109 | DUMMY_FUNCTION_PASS("expandmemcmp", ExpandMemCmpPass, ()) | ||
| 110 | DUMMY_FUNCTION_PASS("gc-lowering", GCLoweringPass, ()) | ||
| 111 | DUMMY_FUNCTION_PASS("shadow-stack-gc-lowering", ShadowStackGCLoweringPass, ()) | ||
| 112 | DUMMY_FUNCTION_PASS("sjljehprepare", SjLjEHPreparePass, ()) | ||
| 113 | DUMMY_FUNCTION_PASS("dwarfehprepare", DwarfEHPass, ()) | ||
| 114 | DUMMY_FUNCTION_PASS("winehprepare", WinEHPass, ()) | ||
| 115 | DUMMY_FUNCTION_PASS("wasmehprepare", WasmEHPass, ()) | ||
| 116 | DUMMY_FUNCTION_PASS("codegenprepare", CodeGenPreparePass, ()) | ||
| 117 | DUMMY_FUNCTION_PASS("safe-stack", SafeStackPass, ()) | ||
| 118 | DUMMY_FUNCTION_PASS("stack-protector", StackProtectorPass, ()) | ||
| 119 | DUMMY_FUNCTION_PASS("atomic-expand", AtomicExpandPass, ()) | ||
| 120 | DUMMY_FUNCTION_PASS("interleaved-access", InterleavedAccessPass, ()) | ||
| 121 | DUMMY_FUNCTION_PASS("indirectbr-expand", IndirectBrExpandPass, ()) | ||
| 122 | DUMMY_FUNCTION_PASS("cfguard-dispatch", CFGuardDispatchPass, ()) | ||
| 123 | DUMMY_FUNCTION_PASS("cfguard-check", CFGuardCheckPass, ()) | ||
| 124 | DUMMY_FUNCTION_PASS("gc-info-printer", GCInfoPrinterPass, ()) | ||
| 125 | DUMMY_FUNCTION_PASS("select-optimize", SelectOptimizePass, ()) | ||
| 126 | #undef DUMMY_FUNCTION_PASS | ||
| 127 | |||
| 128 | #ifndef DUMMY_MODULE_PASS | ||
| 129 | #define DUMMY_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 130 | #endif | ||
| 131 | DUMMY_MODULE_PASS("lower-emutls", LowerEmuTLSPass, ()) | ||
| 132 | #undef DUMMY_MODULE_PASS | ||
| 133 | |||
| 134 | #ifndef DUMMY_MACHINE_MODULE_PASS | ||
| 135 | #define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 136 | #endif | ||
| 137 | DUMMY_MACHINE_MODULE_PASS("machine-outliner", MachineOutlinerPass, ()) | ||
| 138 | #undef DUMMY_MACHINE_MODULE_PASS | ||
| 139 | |||
| 140 | #ifndef DUMMY_MACHINE_FUNCTION_PASS | ||
| 141 | #define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) | ||
| 142 | #endif | ||
| 143 | DUMMY_MACHINE_FUNCTION_PASS("mir-printer", PrintMIRPass, ()) | ||
| 144 | DUMMY_MACHINE_FUNCTION_PASS("free-machine-function", FreeMachineFunctionPass, ()) | ||
| 145 | DUMMY_MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass, ()) | ||
| 146 | DUMMY_MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotPass, ()) | ||
| 147 | DUMMY_MACHINE_FUNCTION_PASS("shrink-wrap", ShrinkWrapPass, ()) | ||
| 148 | DUMMY_MACHINE_FUNCTION_PASS("prologepilog", PrologEpilogInserterPass, ()) | ||
| 149 | DUMMY_MACHINE_FUNCTION_PASS("postrapseudos", ExpandPostRAPseudosPass, ()) | ||
| 150 | DUMMY_MACHINE_FUNCTION_PASS("implicit-null-checks", ImplicitNullChecksPass, ()) | ||
| 151 | DUMMY_MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass, ()) | ||
| 152 | DUMMY_MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass, ()) | ||
| 153 | DUMMY_MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass, ()) | ||
| 154 | DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass, ()) | ||
| 155 | DUMMY_MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass, ()) | ||
| 156 | DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass, ()) | ||
| 157 | DUMMY_MACHINE_FUNCTION_PASS("xray-instrumentation", XRayInstrumentationPass, ()) | ||
| 158 | DUMMY_MACHINE_FUNCTION_PASS("patchable-function", PatchableFunctionPass, ()) | ||
| 159 | DUMMY_MACHINE_FUNCTION_PASS("reg-usage-propagation", RegUsageInfoPropagationPass, ()) | ||
| 160 | DUMMY_MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass, ()) | ||
| 161 | DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass, ()) | ||
| 162 | DUMMY_MACHINE_FUNCTION_PASS("stackmap-liveness", StackMapLivenessPass, ()) | ||
| 163 | DUMMY_MACHINE_FUNCTION_PASS("removeredundantdebugvalues", RemoveRedundantDebugValuesPass, ()) | ||
| 164 | DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter, ()) | ||
| 165 | DUMMY_MACHINE_FUNCTION_PASS("livedebugvalues", LiveDebugValuesPass, ()) | ||
| 166 | DUMMY_MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass, ()) | ||
| 167 | DUMMY_MACHINE_FUNCTION_PASS("opt-phis", OptimizePHIsPass, ()) | ||
| 168 | DUMMY_MACHINE_FUNCTION_PASS("stack-coloring", StackColoringPass, ()) | ||
| 169 | DUMMY_MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass, ()) | ||
| 170 | DUMMY_MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass, ()) | ||
| 171 | DUMMY_MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass, ()) | ||
| 172 | DUMMY_MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass, ()) | ||
| 173 | DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass, ()) | ||
| 174 | DUMMY_MACHINE_FUNCTION_PASS("postra-machine-sink", PostRAMachineSinkingPass, ()) | ||
| 175 | DUMMY_MACHINE_FUNCTION_PASS("peephole-opt", PeepholeOptimizerPass, ()) | ||
| 176 | DUMMY_MACHINE_FUNCTION_PASS("regalloc", RegAllocPass, ()) | ||
| 177 | DUMMY_MACHINE_FUNCTION_PASS("virtregrewriter", VirtRegRewriterPass, ()) | ||
| 178 | DUMMY_MACHINE_FUNCTION_PASS("stack-slot-coloring", StackSlotColoringPass, ()) | ||
| 179 | DUMMY_MACHINE_FUNCTION_PASS("phi-node-elimination", PHIEliminationPass, ()) | ||
| 180 | DUMMY_MACHINE_FUNCTION_PASS("twoaddressinstruction", TwoAddressInstructionPass, ()) | ||
| 181 | DUMMY_MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass, ()) | ||
| 182 | DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass, ()) | ||
| 183 | DUMMY_MACHINE_FUNCTION_PASS("liveintervals", LiveIntervalsPass, ()) | ||
| 184 | DUMMY_MACHINE_FUNCTION_PASS("simple-register-coalescing", RegisterCoalescerPass, ()) | ||
| 185 | DUMMY_MACHINE_FUNCTION_PASS("rename-independent-subregs", RenameIndependentSubregsPass, ()) | ||
| 186 | DUMMY_MACHINE_FUNCTION_PASS("branch-folder", BranchFolderPass, ()) | ||
| 187 | DUMMY_MACHINE_FUNCTION_PASS("tailduplication", TailDuplicatePass, ()) | ||
| 188 | DUMMY_MACHINE_FUNCTION_PASS("block-placement", MachineBlockPlacementPass, ()) | ||
| 189 | DUMMY_MACHINE_FUNCTION_PASS("block-placement-stats", MachineBlockPlacementStatsPass, ()) | ||
| 190 | DUMMY_MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass, ()) | ||
| 191 | DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass, ()) | ||
| 192 | DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass, ()) | ||
| 193 | DUMMY_MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass, ()) | ||
| 194 | DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass, ()) | ||
| 195 | DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass, ()) | ||
| 196 | DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass, ()) | ||
| 197 | DUMMY_MACHINE_FUNCTION_PASS("ra-fast", RAFastPass, ()) | ||
| 198 | DUMMY_MACHINE_FUNCTION_PASS("ra-greedy", RAGreedyPass, ()) | ||
| 199 | DUMMY_MACHINE_FUNCTION_PASS("ra-pbqp", RAPBQPPass, ()) | ||
| 200 | DUMMY_MACHINE_FUNCTION_PASS("legalizer", LegalizerPass, ()) | ||
| 201 | DUMMY_MACHINE_FUNCTION_PASS("irtranslator", IRTranslatorPass, ()) | ||
| 202 | DUMMY_MACHINE_FUNCTION_PASS("regbankselect", RegBankSelectPass, ()) | ||
| 203 | DUMMY_MACHINE_FUNCTION_PASS("instruction-select", InstructionSelectPass, ()) | ||
| 204 | DUMMY_MACHINE_FUNCTION_PASS("reset-machine-function", ResetMachineFunctionPass, ()) | ||
| 205 | DUMMY_MACHINE_FUNCTION_PASS("machineverifier", MachineVerifierPass, ()) | ||
| 206 | DUMMY_MACHINE_FUNCTION_PASS("print-machine-cycles", MachineCycleInfoPrinterPass, ()) | ||
| 207 | DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata, ()) | ||
| 208 | DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass, ()) | ||
| 209 | DUMMY_MACHINE_FUNCTION_PASS("print-machine-uniformity", MachineUniformityInfoPrinterPass, ()) | ||
| 210 | #undef DUMMY_MACHINE_FUNCTION_PASS |