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 *createRISCVISelDag(RISCVTargetMachine &TM,
35 CodeGenOptLevel OptLevel);
36
37FunctionPass *createRISCVMakeCompressibleOptPass();
38void initializeRISCVMakeCompressibleOptPass(PassRegistry &);
39
40FunctionPass *createRISCVGatherScatterLoweringPass();
41void initializeRISCVGatherScatterLoweringPass(PassRegistry &);
42
43FunctionPass *createRISCVFoldMasksPass();
44void initializeRISCVFoldMasksPass(PassRegistry &);
45
46FunctionPass *createRISCVOptWInstrsPass();
47void initializeRISCVOptWInstrsPass(PassRegistry &);
48
49FunctionPass *createRISCVMergeBaseOffsetOptPass();
50void initializeRISCVMergeBaseOffsetOptPass(PassRegistry &);
51
52FunctionPass *createRISCVExpandPseudoPass();
53void initializeRISCVExpandPseudoPass(PassRegistry &);
54
55FunctionPass *createRISCVPreRAExpandPseudoPass();
56void initializeRISCVPreRAExpandPseudoPass(PassRegistry &);
57
58FunctionPass *createRISCVExpandAtomicPseudoPass();
59void initializeRISCVExpandAtomicPseudoPass(PassRegistry &);
60
61FunctionPass *createRISCVInsertVSETVLIPass();
62void initializeRISCVInsertVSETVLIPass(PassRegistry &);
63
64FunctionPass *createRISCVCoalesceVSETVLIPass();
65void initializeRISCVCoalesceVSETVLIPass(PassRegistry &);
66
67FunctionPass *createRISCVPostRAExpandPseudoPass();
68void initializeRISCVPostRAExpandPseudoPass(PassRegistry &);
69FunctionPass *createRISCVInsertReadWriteCSRPass();
70void initializeRISCVInsertReadWriteCSRPass(PassRegistry &);
71
72FunctionPass *createRISCVInsertWriteVXRMPass();
73void initializeRISCVInsertWriteVXRMPass(PassRegistry &);
74
75FunctionPass *createRISCVRedundantCopyEliminationPass();
76void initializeRISCVRedundantCopyEliminationPass(PassRegistry &);
77
78FunctionPass *createRISCVMoveMergePass();
79void initializeRISCVMoveMergePass(PassRegistry &);
80
81FunctionPass *createRISCVPushPopOptimizationPass();
82void initializeRISCVPushPopOptPass(PassRegistry &);
83
84InstructionSelector *createRISCVInstructionSelector(const RISCVTargetMachine &,
85 RISCVSubtarget &,
86 RISCVRegisterBankInfo &);
87void initializeRISCVDAGToDAGISelPass(PassRegistry &);
88
89FunctionPass *createRISCVPostLegalizerCombiner();
90void initializeRISCVPostLegalizerCombinerPass(PassRegistry &);
91
92FunctionPass *createRISCVO0PreLegalizerCombiner();
93void initializeRISCVO0PreLegalizerCombinerPass(PassRegistry &);
94
95FunctionPass *createRISCVPreLegalizerCombiner();
96void initializeRISCVPreLegalizerCombinerPass(PassRegistry &);
97} // namespace llvm
98
99#endif
100

source code of llvm/lib/Target/RISCV/RISCV.h