LLVM 24.0.0git
RISCV.h
Go to the documentation of this file.
1//===-- RISCV.h - Top-level interface for RISC-V ----------------*- 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 contains the entry points for global functions defined in the LLVM
10// RISC-V back-end.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_RISCV_RISCV_H
15#define LLVM_LIB_TARGET_RISCV_RISCV_H
16
20#include "llvm/IR/Analysis.h"
21#include "llvm/IR/PassManager.h"
23
24namespace llvm {
25class FunctionPass;
27class ModulePass;
28class PassRegistry;
30class RISCVSubtarget;
32
34 : public OptionalPassInfoMixin<RISCVCodeGenPreparePass> {
35private:
36 const RISCVTargetMachine *TM;
37
38public:
41};
44
46 : public OptionalPassInfoMixin<RISCVDeadRegisterDefinitionsPass> {
47public:
50};
53
55 : public RequiredPassInfoMixin<RISCVIndirectBranchTrackingPass> {
56public:
59};
62
64 : public RequiredPassInfoMixin<RISCVLandingPadSetupPass> {
65public:
68};
71
73 CodeGenOptLevel OptLevel);
74
79
81 : public OptionalPassInfoMixin<RISCVLateBranchOptPass> {
82public:
85};
88
90 : public OptionalPassInfoMixin<RISCVMakeCompressiblePass> {
91public:
94};
97
99 : public OptionalPassInfoMixin<RISCVGatherScatterLoweringPass> {
100private:
101 const RISCVTargetMachine *TM;
102
103public:
106};
107
110
112 : public OptionalPassInfoMixin<RISCVVectorPeepholePass> {
113public:
119};
120
123
124class RISCVOptWInstrsPass : public OptionalPassInfoMixin<RISCVOptWInstrsPass> {
125public:
128};
129
132
134 : public OptionalPassInfoMixin<RISCVFoldMemOffsetPass> {
135public:
138};
139
142
144 : public OptionalPassInfoMixin<RISCVMergeBaseOffsetPass> {
145public:
148};
149
152
154 : public RequiredPassInfoMixin<RISCVExpandPseudoPreRAPass> {
155public:
161};
162
165
167 : public RequiredPassInfoMixin<RISCVExpandPseudoPostRAPass> {
168public:
171};
172
175
177 : public RequiredPassInfoMixin<RISCVExpandPseudoPreEmitPass> {
178public:
181};
182
185
187 : public RequiredPassInfoMixin<RISCVExpandPseudoAtomicsPass> {
188public:
191};
192
195
197 : public RequiredPassInfoMixin<RISCVInsertVSETVLIPass> {
198public:
201};
202
205extern char &RISCVInsertVSETVLILegacyID;
206
208 : public RequiredPassInfoMixin<RISCVInsertReadWriteCSRPass> {
209public:
212};
213
216
218 : public RequiredPassInfoMixin<RISCVInsertWriteVXRMPass> {
219public:
222};
223
226
228 : public OptionalPassInfoMixin<RISCVRedundantCopyEliminationPass> {
229public:
232
236};
237
240
241class RISCVMoveMergePass : public OptionalPassInfoMixin<RISCVMoveMergePass> {
242public:
245};
246
249
250class RISCVPushPopOptPass : public OptionalPassInfoMixin<RISCVPushPopOptPass> {
251public:
254};
255
258
260 : public OptionalPassInfoMixin<RISCVLoadStoreOptPass> {
261public:
264};
265
268
270 : public OptionalPassInfoMixin<RISCVPreAllocZilsdOptPass> {
271public:
274};
275
278
280 : public RequiredPassInfoMixin<RISCVZacasABIFixPass> {
281private:
282 const RISCVTargetMachine *TM;
283
284public:
287};
290
293 const RISCVSubtarget &,
294 const RISCVRegisterBankInfo &);
296
298 : public RequiredPassInfoMixin<RISCVPostLegalizerCombinerPass> {
299public:
302};
303
306
308 : public RequiredPassInfoMixin<RISCVO0PreLegalizerCombinerPass> {
309public:
312};
313
316
318 : public RequiredPassInfoMixin<RISCVPreLegalizerCombinerPass> {
319public:
322};
323
326
328 : public OptionalPassInfoMixin<RISCVPromoteConstantPass> {
329private:
330 const RISCVTargetMachine *TM;
331
332public:
335};
336
339
341 : public OptionalPassInfoMixin<RISCVVLOptimizerPass> {
342public:
345};
346
349
351 : public RequiredPassInfoMixin<RISCVVMV0EliminationPass> {
352public:
355
359};
360
363
365 : public OptionalPassInfoMixin<RISCVQCRelaxMarkingPass> {
366public:
369};
370
373
375} // namespace llvm
376
377#endif
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:54
FunctionAnalysisManager FAM
ModuleAnalysisManager MAM
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:312
Properties which a MachineFunction may have at a given point in time.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:253
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:68
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
RISCVCodeGenPreparePass(const RISCVTargetMachine *TM)
Definition RISCV.h:39
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getRequiredProperties() const
Definition RISCV.h:158
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
RISCVGatherScatterLoweringPass(const RISCVTargetMachine *TM)
Definition RISCV.h:104
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
RISCVISelDAGToDAGPass(RISCVTargetMachine &TM, CodeGenOptLevel OptLevel)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
RISCVPromoteConstantPass(const RISCVTargetMachine *TM)
Definition RISCV.h:333
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getRequiredProperties() const
Definition RISCV.h:233
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
This class provides the information for the target register banks.
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getRequiredProperties() const
Definition RISCV.h:356
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getRequiredProperties() const
Definition RISCV.h:116
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
RISCVZacasABIFixPass(const RISCVTargetMachine *TM)
Definition RISCV.h:285
SelectionDAGISelPass(std::unique_ptr< SelectionDAGISel > Selector)
Pass manager infrastructure for declaring and invalidating analyses.
This is an optimization pass for GlobalISel generic memory operations.
FunctionPass * createRISCVVectorPeepholeLegacyPass()
void initializeRISCVO0PreLegalizerCombinerLegacyPass(PassRegistry &)
void initializeRISCVFoldMemOffsetLegacyPass(PassRegistry &)
void initializeRISCVLateBranchOptLegacyPass(PassRegistry &)
FunctionPass * createRISCVCodeGenPrepareLegacyPass()
FunctionPass * createRISCVISelDagLegacyPass(RISCVTargetMachine &TM, CodeGenOptLevel OptLevel)
FunctionPass * createRISCVOptWInstrsLegacyPass()
void initializeRISCVQCRelaxMarkingLegacyPass(PassRegistry &)
FunctionPass * createRISCVGatherScatterLoweringLegacyPass()
FunctionPass * createRISCVMoveMergeLegacyPass()
Returns an instance of the move merge pass.
FunctionPass * createRISCVLandingPadSetupLegacyPass()
InstructionSelector * createRISCVInstructionSelector(const RISCVTargetMachine &TM, const RISCVSubtarget &Subtarget, const RISCVRegisterBankInfo &RBI)
void initializeRISCVPromoteConstantLegacyPass(PassRegistry &)
void initializeRISCVExpandPseudoPreEmitLegacyPass(PassRegistry &)
FunctionPass * createRISCVExpandPseudoPostRALegacyPass()
FunctionPass * createRISCVExpandPseudoAtomicsLegacyPass()
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
FunctionPass * createRISCVZacasABIFixLegacyPass()
void initializeRISCVCodeGenPrepareLegacyPass(PassRegistry &)
void initializeRISCVRedundantCopyEliminationLegacyPass(PassRegistry &)
FunctionPass * createRISCVLateBranchOptLegacyPass()
ModulePass * createRISCVPromoteConstantLegacyPass()
FunctionPass * createRISCVIndirectBranchTrackingLegacyPass()
FunctionPass * createRISCVDeadRegisterDefinitionsLegacyPass()
void initializeRISCVPostLegalizerCombinerLegacyPass(PassRegistry &)
FunctionPass * createRISCVMakeCompressibleLegacyPass()
Returns an instance of the Make Compressible Optimization pass.
FunctionPass * createRISCVPreLegalizerCombinerLegacyPass()
void initializeRISCVLoadStoreOptLegacyPass(PassRegistry &)
void initializeRISCVExpandPseudoAtomicsLegacyPass(PassRegistry &)
FunctionPass * createRISCVExpandPseudoPreEmitLegacyPass()
void initializeRISCVDAGToDAGISelLegacyPass(PassRegistry &)
void initializeRISCVInsertVSETVLILegacyPass(PassRegistry &)
FunctionPass * createRISCVFoldMemOffsetLegacyPass()
void initializeRISCVMakeCompressibleLegacyPass(PassRegistry &)
FunctionPass * createRISCVMergeBaseOffsetLegacyPass()
Returns an instance of the Merge Base Offset Optimization pass.
void initializeRISCVPushPopOptLegacyPass(PassRegistry &)
FunctionPass * createRISCVPushPopOptLegacyPass()
createRISCVPushPopOptimizationPass - returns an instance of the Push/Pop optimization pass.
FunctionPass * createRISCVQCRelaxMarkingLegacyPass()
FunctionPass * createRISCVLoadStoreOptLegacyPass()
void initializeRISCVExpandPseudoPreRALegacyPass(PassRegistry &)
void initializeRISCVInsertWriteVXRMLegacyPass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:280
void initializeRISCVLandingPadSetupLegacyPass(PassRegistry &)
FunctionPass * createRISCVInsertWriteVXRMLegacyPass()
void initializeRISCVVLOptimizerLegacyPass(PassRegistry &)
FunctionPass * createRISCVPostLegalizerCombinerLegacyPass()
void initializeRISCVDeadRegisterDefinitionsLegacyPass(PassRegistry &)
void initializeRISCVPreAllocZilsdOptLegacyPass(PassRegistry &)
FunctionPass * createRISCVRedundantCopyEliminationLegacyPass()
void initializeRISCVVectorPeepholeLegacyPass(PassRegistry &)
void initializeRISCVVMV0EliminationLegacyPass(PassRegistry &)
void initializeRISCVIndirectBranchTrackingLegacyPass(PassRegistry &)
FunctionPass * createRISCVExpandPseudoPreRALegacyPass()
FunctionPass * createRISCVVMV0EliminationLegacyPass()
FunctionPass * createRISCVO0PreLegalizerCombinerLegacyPass()
void initializeRISCVMergeBaseOffsetLegacyPass(PassRegistry &)
void initializeRISCVAsmPrinterPass(PassRegistry &)
FunctionPass * createRISCVInsertReadWriteCSRLegacyPass()
char & RISCVInsertVSETVLILegacyID
void initializeRISCVOptWInstrsLegacyPass(PassRegistry &)
void initializeRISCVGatherScatterLoweringLegacyPass(PassRegistry &)
void initializeRISCVInsertReadWriteCSRLegacyPass(PassRegistry &)
void initializeRISCVZacasABIFixLegacyPass(PassRegistry &)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
void initializeRISCVPreLegalizerCombinerLegacyPass(PassRegistry &)
FunctionPass * createRISCVVLOptimizerLegacyPass()
void initializeRISCVExpandPseudoPostRALegacyPass(PassRegistry &)
FunctionPass * createRISCVPreAllocZilsdOptLegacyPass()
FunctionPass * createRISCVInsertVSETVLILegacyPass()
Returns an instance of the Insert VSETVLI pass.
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
void initializeRISCVMoveMergeLegacyPass(PassRegistry &)
A CRTP mix-in for passes that can be skipped.
A CRTP mix-in for passes that should not be skipped.