// SPDX-License-Identifier: GPL-3.0-or-later #ifndef RCC_TARGET_RISCV_RISCVPIPELINE_H #define RCC_TARGET_RISCV_RISCVPIPELINE_H #include "rcc/CodeGen/MachinePassManager.h" #include "rcc/Support/Error.h" #include "rcc/Target/RISCV/RISCVSubtarget.h" #include #include #include #include namespace rcc { class MachineFunction; class TargetDescription; namespace riscv { struct RISCVPipelineOptions final { bool UseTargetCopyInstructions = false; }; [[nodiscard]] Expected addCanonicalPipeline(MachineFunctionPassManager &Pipeline, const MachineFunction &Function, const RISCVSubtarget &Subtarget, RISCVPipelineOptions Options = {}); [[nodiscard]] Expected> createCanonicalPipelinePass(std::string_view Name, const RISCVSubtarget &Subtarget, RISCVPipelineOptions Options = {}); [[nodiscard]] Expected> canonicalPipelinePassNames(const MachineFunction &Function, const RISCVSubtarget &Subtarget); } // namespace riscv } // namespace rcc #endif // RCC_TARGET_RISCV_RISCVPIPELINE_H