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
17#include "MCTargetDesc/RISCVBaseInfo.h"
18#include "llvm/Target/TargetMachine.h"
19
20namespace llvm {
21class FunctionPass;
22class InstructionSelector;
23class PassRegistry;
24class RISCVRegisterBankInfo;
25class RISCVSubtarget;
26class RISCVTargetMachine;
27
28FunctionPass *createRISCVCodeGenPreparePass();
29void initializeRISCVCodeGenPreparePass(PassRegistry &);
30
31FunctionPass *createRISCVDeadRegisterDefinitionsPass();
32void initializeRISCVDeadRegisterDefinitionsPass(PassRegistry &);
33
34FunctionPass *createRISCVIndirectBranchTrackingPass();
35void initializeRISCVIndirectBranchTrackingPass(PassRegistry &);
36
37FunctionPass *createRISCVLandingPadSetupPass();
38void initializeRISCVLandingPadSetupPass(PassRegistry &);
39
40FunctionPass *createRISCVISelDag(RISCVTargetMachine &TM,
41 CodeGenOptLevel OptLevel);
42
43FunctionPass *createRISCVLateBranchOptPass();
44void initializeRISCVLateBranchOptPass(PassRegistry &);
45
46FunctionPass *createRISCVMakeCompressibleOptPass();
47void initializeRISCVMakeCompressibleOptPass(PassRegistry &);
48
49FunctionPass *createRISCVGatherScatterLoweringPass();
50void initializeRISCVGatherScatterLoweringPass(PassRegistry &);
51
52FunctionPass *createRISCVVectorPeepholePass();
53void initializeRISCVVectorPeepholePass(PassRegistry &);
54
55FunctionPass *createRISCVOptWInstrsPass();
56void initializeRISCVOptWInstrsPass(PassRegistry &);
57
58FunctionPass *createRISCVFoldMemOffsetPass();
59void initializeRISCVFoldMemOffsetPass(PassRegistry &);
60
61FunctionPass *createRISCVMergeBaseOffsetOptPass();
62void initializeRISCVMergeBaseOffsetOptPass(PassRegistry &);
63
64FunctionPass *createRISCVExpandPseudoPass();
65void initializeRISCVExpandPseudoPass(PassRegistry &);
66
67FunctionPass *createRISCVPreRAExpandPseudoPass();
68void initializeRISCVPreRAExpandPseudoPass(PassRegistry &);
69
70FunctionPass *createRISCVExpandAtomicPseudoPass();
71void initializeRISCVExpandAtomicPseudoPass(PassRegistry &);
72
73FunctionPass *createRISCVInsertVSETVLIPass();
74void initializeRISCVInsertVSETVLIPass(PassRegistry &);
75extern char &RISCVInsertVSETVLIID;
76
77FunctionPass *createRISCVPostRAExpandPseudoPass();
78void initializeRISCVPostRAExpandPseudoPass(PassRegistry &);
79FunctionPass *createRISCVInsertReadWriteCSRPass();
80void initializeRISCVInsertReadWriteCSRPass(PassRegistry &);
81
82FunctionPass *createRISCVInsertWriteVXRMPass();
83void initializeRISCVInsertWriteVXRMPass(PassRegistry &);
84
85FunctionPass *createRISCVRedundantCopyEliminationPass();
86void initializeRISCVRedundantCopyEliminationPass(PassRegistry &);
87
88FunctionPass *createRISCVMoveMergePass();
89void initializeRISCVMoveMergePass(PassRegistry &);
90
91FunctionPass *createRISCVPushPopOptimizationPass();
92void initializeRISCVPushPopOptPass(PassRegistry &);
93FunctionPass *createRISCVLoadStoreOptPass();
94void initializeRISCVLoadStoreOptPass(PassRegistry &);
95
96FunctionPass *createRISCVZacasABIFixPass();
97void initializeRISCVZacasABIFixPass(PassRegistry &);
98
99InstructionSelector *
100createRISCVInstructionSelector(const RISCVTargetMachine &,
101 const RISCVSubtarget &,
102 const RISCVRegisterBankInfo &);
103void initializeRISCVDAGToDAGISelLegacyPass(PassRegistry &);
104
105FunctionPass *createRISCVPostLegalizerCombiner();
106void initializeRISCVPostLegalizerCombinerPass(PassRegistry &);
107
108FunctionPass *createRISCVO0PreLegalizerCombiner();
109void initializeRISCVO0PreLegalizerCombinerPass(PassRegistry &);
110
111FunctionPass *createRISCVPreLegalizerCombiner();
112void initializeRISCVPreLegalizerCombinerPass(PassRegistry &);
113
114FunctionPass *createRISCVVLOptimizerPass();
115void initializeRISCVVLOptimizerPass(PassRegistry &);
116
117FunctionPass *createRISCVVMV0EliminationPass();
118void initializeRISCVVMV0EliminationPass(PassRegistry &);
119
120void initializeRISCVAsmPrinterPass(PassRegistry &);
121} // namespace llvm
122
123#endif
124