139 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the entry points for global functions defined in the LLVM10// RISC-V back-end.11//12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_LIB_TARGET_RISCV_RISCV_H15#define LLVM_LIB_TARGET_RISCV_RISCV_H16 17#include "MCTargetDesc/RISCVBaseInfo.h"18#include "llvm/Target/TargetMachine.h"19 20namespace llvm {21class FunctionPass;22class InstructionSelector;23class ModulePass;24class PassRegistry;25class RISCVRegisterBankInfo;26class RISCVSubtarget;27class RISCVTargetMachine;28 29class RISCVCodeGenPreparePass : public PassInfoMixin<RISCVCodeGenPreparePass> {30private:31 const RISCVTargetMachine *TM;32 33public:34 RISCVCodeGenPreparePass(const RISCVTargetMachine *TM) : TM(TM) {}35 PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM);36};37FunctionPass *createRISCVCodeGenPrepareLegacyPass();38void initializeRISCVCodeGenPrepareLegacyPassPass(PassRegistry &);39 40FunctionPass *createRISCVDeadRegisterDefinitionsPass();41void initializeRISCVDeadRegisterDefinitionsPass(PassRegistry &);42 43FunctionPass *createRISCVIndirectBranchTrackingPass();44void initializeRISCVIndirectBranchTrackingPass(PassRegistry &);45 46FunctionPass *createRISCVLandingPadSetupPass();47void initializeRISCVLandingPadSetupPass(PassRegistry &);48 49FunctionPass *createRISCVISelDag(RISCVTargetMachine &TM,50 CodeGenOptLevel OptLevel);51 52FunctionPass *createRISCVLateBranchOptPass();53void initializeRISCVLateBranchOptPass(PassRegistry &);54 55FunctionPass *createRISCVMakeCompressibleOptPass();56void initializeRISCVMakeCompressibleOptPass(PassRegistry &);57 58FunctionPass *createRISCVGatherScatterLoweringPass();59void initializeRISCVGatherScatterLoweringPass(PassRegistry &);60 61FunctionPass *createRISCVVectorPeepholePass();62void initializeRISCVVectorPeepholePass(PassRegistry &);63 64FunctionPass *createRISCVOptWInstrsPass();65void initializeRISCVOptWInstrsPass(PassRegistry &);66 67FunctionPass *createRISCVFoldMemOffsetPass();68void initializeRISCVFoldMemOffsetPass(PassRegistry &);69 70FunctionPass *createRISCVMergeBaseOffsetOptPass();71void initializeRISCVMergeBaseOffsetOptPass(PassRegistry &);72 73FunctionPass *createRISCVExpandPseudoPass();74void initializeRISCVExpandPseudoPass(PassRegistry &);75 76FunctionPass *createRISCVPreRAExpandPseudoPass();77void initializeRISCVPreRAExpandPseudoPass(PassRegistry &);78 79FunctionPass *createRISCVExpandAtomicPseudoPass();80void initializeRISCVExpandAtomicPseudoPass(PassRegistry &);81 82FunctionPass *createRISCVInsertVSETVLIPass();83void initializeRISCVInsertVSETVLIPass(PassRegistry &);84extern char &RISCVInsertVSETVLIID;85 86FunctionPass *createRISCVPostRAExpandPseudoPass();87void initializeRISCVPostRAExpandPseudoPass(PassRegistry &);88FunctionPass *createRISCVInsertReadWriteCSRPass();89void initializeRISCVInsertReadWriteCSRPass(PassRegistry &);90 91FunctionPass *createRISCVInsertWriteVXRMPass();92void initializeRISCVInsertWriteVXRMPass(PassRegistry &);93 94FunctionPass *createRISCVRedundantCopyEliminationPass();95void initializeRISCVRedundantCopyEliminationPass(PassRegistry &);96 97FunctionPass *createRISCVMoveMergePass();98void initializeRISCVMoveMergePass(PassRegistry &);99 100FunctionPass *createRISCVPushPopOptimizationPass();101void initializeRISCVPushPopOptPass(PassRegistry &);102FunctionPass *createRISCVLoadStoreOptPass();103void initializeRISCVLoadStoreOptPass(PassRegistry &);104 105FunctionPass *createRISCVPreAllocZilsdOptPass();106void initializeRISCVPreAllocZilsdOptPass(PassRegistry &);107 108FunctionPass *createRISCVZacasABIFixPass();109void initializeRISCVZacasABIFixPass(PassRegistry &);110 111InstructionSelector *112createRISCVInstructionSelector(const RISCVTargetMachine &,113 const RISCVSubtarget &,114 const RISCVRegisterBankInfo &);115void initializeRISCVDAGToDAGISelLegacyPass(PassRegistry &);116 117FunctionPass *createRISCVPostLegalizerCombiner();118void initializeRISCVPostLegalizerCombinerPass(PassRegistry &);119 120FunctionPass *createRISCVO0PreLegalizerCombiner();121void initializeRISCVO0PreLegalizerCombinerPass(PassRegistry &);122 123FunctionPass *createRISCVPreLegalizerCombiner();124void initializeRISCVPreLegalizerCombinerPass(PassRegistry &);125 126ModulePass *createRISCVPromoteConstantPass();127void initializeRISCVPromoteConstantPass(PassRegistry &);128 129FunctionPass *createRISCVVLOptimizerPass();130void initializeRISCVVLOptimizerPass(PassRegistry &);131 132FunctionPass *createRISCVVMV0EliminationPass();133void initializeRISCVVMV0EliminationPass(PassRegistry &);134 135void initializeRISCVAsmPrinterPass(PassRegistry &);136} // namespace llvm137 138#endif139