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 |