diff options
21 files changed, 66 insertions, 54 deletions
diff --git a/backend/include/rcc/CodeGen/MachineBranchOptimization.h b/backend/include/rcc/CodeGen/MachineBranchOptimization.h index a71c20f..9f120dc 100644 --- a/backend/include/rcc/CodeGen/MachineBranchOptimization.h +++ b/backend/include/rcc/CodeGen/MachineBranchOptimization.h @@ -9,7 +9,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; struct MachineBranchOptimizationOptions final { std::size_t MaximumThreadedEdges = 10'000; @@ -17,7 +17,7 @@ struct MachineBranchOptimizationOptions final { class MachineBranchOptimizationPass final : public MachineFunctionPass { public: - explicit MachineBranchOptimizationPass(const TargetBranchInfo &Info, + explicit MachineBranchOptimizationPass(const TargetInstrInfo &Info, MachineBranchOptimizationOptions Options = {}) noexcept : Info(&Info), Options(Options) {} @@ -30,7 +30,7 @@ private: [[nodiscard]] Expected<MachinePassResult> runImplementation(MachineFunction &Function, const TargetDescription &Target) const; - const TargetBranchInfo *Info; + const TargetInstrInfo *Info; MachineBranchOptimizationOptions Options; }; diff --git a/backend/include/rcc/CodeGen/MachineBranchRelaxation.h b/backend/include/rcc/CodeGen/MachineBranchRelaxation.h index c88c1d5..03c7fa7 100644 --- a/backend/include/rcc/CodeGen/MachineBranchRelaxation.h +++ b/backend/include/rcc/CodeGen/MachineBranchRelaxation.h @@ -9,7 +9,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; struct MachineBranchRelaxationOptions final { std::size_t ConvergenceWatchdog = 1000000; @@ -17,7 +17,7 @@ struct MachineBranchRelaxationOptions final { class MachineBranchRelaxationPass final : public MachineFunctionPass { public: - explicit MachineBranchRelaxationPass(const TargetBranchInfo &Info, + explicit MachineBranchRelaxationPass(const TargetInstrInfo &Info, MachineBranchRelaxationOptions Options = {}) noexcept : Info(&Info), Options(Options) {} @@ -31,7 +31,7 @@ private: const TargetDescription &Target, MachineActionReplay &Actions) const; - const TargetBranchInfo *Info; + const TargetInstrInfo *Info; MachineBranchRelaxationOptions Options; }; diff --git a/backend/include/rcc/CodeGen/MachineFallthrough.h b/backend/include/rcc/CodeGen/MachineFallthrough.h index 413efe2..5793330 100644 --- a/backend/include/rcc/CodeGen/MachineFallthrough.h +++ b/backend/include/rcc/CodeGen/MachineFallthrough.h @@ -7,11 +7,11 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; class MachineFallthroughPass final : public MachineFunctionPass { public: - explicit MachineFallthroughPass(const TargetBranchInfo &Info) noexcept : Info(&Info) {} + explicit MachineFallthroughPass(const TargetInstrInfo &Info) noexcept : Info(&Info) {} [[nodiscard]] const MachinePassContract &contract() const noexcept override; [[nodiscard]] Expected<MachinePassResult> run(MachineFunction &Function, @@ -19,7 +19,7 @@ public: MachineAnalysisManager &Analyses) override; private: - const TargetBranchInfo *Info; + const TargetInstrInfo *Info; }; } // namespace rcc diff --git a/backend/include/rcc/CodeGen/MachineFinalization.h b/backend/include/rcc/CodeGen/MachineFinalization.h index 147da86..1927691 100644 --- a/backend/include/rcc/CodeGen/MachineFinalization.h +++ b/backend/include/rcc/CodeGen/MachineFinalization.h @@ -7,7 +7,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; class FinalizeEmissionPseudosPass final : public MachineFunctionPass { public: @@ -19,7 +19,7 @@ public: class FinalEncodabilityVerifierPass final : public MachineFunctionPass { public: - explicit FinalEncodabilityVerifierPass(const TargetBranchInfo &BranchInfo) noexcept + explicit FinalEncodabilityVerifierPass(const TargetInstrInfo &BranchInfo) noexcept : BranchInfo(&BranchInfo) {} [[nodiscard]] const MachinePassContract &contract() const noexcept override; @@ -28,7 +28,7 @@ public: MachineAnalysisManager &Analyses) override; private: - const TargetBranchInfo *BranchInfo; + const TargetInstrInfo *BranchInfo; }; } // namespace rcc diff --git a/backend/include/rcc/CodeGen/MachineOptimizationPipeline.h b/backend/include/rcc/CodeGen/MachineOptimizationPipeline.h index 0953437..2cf1bcd 100644 --- a/backend/include/rcc/CodeGen/MachineOptimizationPipeline.h +++ b/backend/include/rcc/CodeGen/MachineOptimizationPipeline.h @@ -7,7 +7,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; class TargetFrameLowering; class TargetMachineCombinerInfo; class TargetMemoryFoldingInfo; @@ -22,7 +22,7 @@ struct MachineOptimizationPipelineTargetInfo final { const TargetFrameLowering &FrameLowering; const TargetPseudoExpansionInfo &PseudoExpansion; const TargetSchedulingModel &SchedulingModel; - const TargetBranchInfo &BranchInfo; + const TargetInstrInfo &BranchInfo; }; [[nodiscard]] Expected<void> registerMachineOptimizationAnalyses(MachineAnalysisManager &Analyses); diff --git a/backend/include/rcc/CodeGen/MachinePseudoExpansion.h b/backend/include/rcc/CodeGen/MachinePseudoExpansion.h index 1dfb6ba..8c47441 100644 --- a/backend/include/rcc/CodeGen/MachinePseudoExpansion.h +++ b/backend/include/rcc/CodeGen/MachinePseudoExpansion.h @@ -8,7 +8,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; class TargetPseudoExpansionInfo; class PreparePostRAPseudosPass final : public MachineFunctionPass { @@ -54,7 +54,7 @@ private: class TargetLatePseudoExpansionPass final : public MachineFunctionPass { public: TargetLatePseudoExpansionPass(const TargetPseudoExpansionInfo &Info, - const TargetBranchInfo &BranchInfo) noexcept + const TargetInstrInfo &BranchInfo) noexcept : Info(&Info), BranchInfo(&BranchInfo) {} [[nodiscard]] const MachinePassContract &contract() const noexcept override; @@ -64,7 +64,7 @@ public: private: const TargetPseudoExpansionInfo *Info; - const TargetBranchInfo *BranchInfo; + const TargetInstrInfo *BranchInfo; }; } // namespace rcc diff --git a/backend/include/rcc/CodeGen/MachineTailDuplication.h b/backend/include/rcc/CodeGen/MachineTailDuplication.h index cd62509..1c21bdf 100644 --- a/backend/include/rcc/CodeGen/MachineTailDuplication.h +++ b/backend/include/rcc/CodeGen/MachineTailDuplication.h @@ -9,7 +9,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; struct MachineTailDuplicationOptions final { std::size_t MaximumTailInstructions = 8; @@ -18,7 +18,7 @@ struct MachineTailDuplicationOptions final { class MachineTailDuplicationPass final : public MachineFunctionPass { public: - explicit MachineTailDuplicationPass(const TargetBranchInfo &Info, + explicit MachineTailDuplicationPass(const TargetInstrInfo &Info, MachineTailDuplicationOptions Options = {}) noexcept : Info(&Info), Options(Options) {} @@ -31,7 +31,7 @@ private: [[nodiscard]] Expected<MachinePassResult> runImplementation(MachineFunction &Function, const TargetDescription &Target) const; - const TargetBranchInfo *Info; + const TargetInstrInfo *Info; MachineTailDuplicationOptions Options; }; diff --git a/backend/include/rcc/CodeGen/MachineTailMerge.h b/backend/include/rcc/CodeGen/MachineTailMerge.h index 94084ac..7237d58 100644 --- a/backend/include/rcc/CodeGen/MachineTailMerge.h +++ b/backend/include/rcc/CodeGen/MachineTailMerge.h @@ -9,7 +9,7 @@ namespace rcc { -class TargetBranchInfo; +class TargetInstrInfo; struct MachineTailMergeOptions final { std::size_t MaximumMergedBlocks = 4'096; @@ -17,7 +17,7 @@ struct MachineTailMergeOptions final { class MachineTailMergePass final : public MachineFunctionPass { public: - explicit MachineTailMergePass(const TargetBranchInfo &Info, + explicit MachineTailMergePass(const TargetInstrInfo &Info, MachineTailMergeOptions Options = {}) noexcept : Info(&Info), Options(Options) {} @@ -30,7 +30,7 @@ private: [[nodiscard]] Expected<MachinePassResult> runImplementation(MachineFunction &Function, const TargetDescription &Target) const; - const TargetBranchInfo *Info; + const TargetInstrInfo *Info; MachineTailMergeOptions Options; }; diff --git a/backend/include/rcc/CodeGen/TargetBranchInfo.h b/backend/include/rcc/CodeGen/TargetInstrInfo.h index 39c5122..d9f0906 100644 --- a/backend/include/rcc/CodeGen/TargetBranchInfo.h +++ b/backend/include/rcc/CodeGen/TargetInstrInfo.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef RCC_CODEGEN_TARGETBRANCHINFO_H -#define RCC_CODEGEN_TARGETBRANCHINFO_H +#ifndef RCC_CODEGEN_TARGETINSTRINFO_H +#define RCC_CODEGEN_TARGETINSTRINFO_H #include "rcc/Support/Error.h" @@ -23,9 +23,9 @@ struct MachineBranchAnalysis final { bool HasUnanalyzableTerminator = false; }; -class TargetBranchInfo { +class TargetInstrInfo { public: - virtual ~TargetBranchInfo() = default; + virtual ~TargetInstrInfo(); [[nodiscard]] virtual Expected<MachineBranchAnalysis> analyzeBranch(MachineBasicBlock &Block, MachineFunction &Function, @@ -63,4 +63,4 @@ public: } // namespace rcc -#endif // RCC_CODEGEN_TARGETBRANCHINFO_H +#endif // RCC_CODEGEN_TARGETINSTRINFO_H diff --git a/backend/include/rcc/Target/RISCV/RISCVCodeGen.h b/backend/include/rcc/Target/RISCV/RISCVCodeGen.h index a39a3fa..d68157a 100644 --- a/backend/include/rcc/Target/RISCV/RISCVCodeGen.h +++ b/backend/include/rcc/Target/RISCV/RISCVCodeGen.h @@ -5,9 +5,9 @@ #include "rcc/CodeGen/MachineCombinerPattern.h" #include "rcc/CodeGen/MachineOptimizationPipeline.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetCodeGen.h" #include "rcc/CodeGen/TargetFrameLowering.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include "rcc/CodeGen/TargetMemoryFolding.h" #include "rcc/CodeGen/TargetPseudoExpansion.h" #include "rcc/CodeGen/TargetRegisterAllocationInfo.h" @@ -29,7 +29,7 @@ createLegalizerInfo(RISCVSubtargetFeatures Features); [[nodiscard]] const TargetSchedulingModel &schedulingModel() noexcept; [[nodiscard]] const TargetMachineCombinerInfo &machineCombinerInfo() noexcept; [[nodiscard]] const TargetMemoryFoldingInfo &memoryFoldingInfo() noexcept; -[[nodiscard]] const TargetBranchInfo &branchInfo() noexcept; +[[nodiscard]] const TargetInstrInfo &branchInfo() noexcept; [[nodiscard]] const TargetPseudoExpansionInfo &pseudoExpansionInfo() noexcept; [[nodiscard]] MachineOptimizationPipelineTargetInfo optimizationPipelineInfo() noexcept; diff --git a/backend/lib/CodeGen/CMakeLists.txt b/backend/lib/CodeGen/CMakeLists.txt index e584131..3a1f34c 100644 --- a/backend/lib/CodeGen/CMakeLists.txt +++ b/backend/lib/CodeGen/CMakeLists.txt @@ -75,6 +75,7 @@ set( RegisterMask.cpp TargetConstant.cpp TargetCallLowering.cpp + TargetInstrInfo.cpp TargetDescription.cpp TargetFunctionState.cpp TargetMIRTextInfo.cpp @@ -166,7 +167,7 @@ set( "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/StableID.h" "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetConstant.h" "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetCallLowering.h" - "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetBranchInfo.h" + "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetInstrInfo.h" "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetDescription.h" "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetFunctionState.h" "${RCC_BACKEND_SOURCE_DIR}/include/rcc/CodeGen/TargetMIRTextInfo.h" @@ -279,6 +280,7 @@ rcc_backend_register_format_files( "${CMAKE_CURRENT_SOURCE_DIR}/RegisterMask.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetConstant.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetCallLowering.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/TargetInstrInfo.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetDescription.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetFunctionState.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetMIRTextInfo.cpp" @@ -357,6 +359,7 @@ rcc_backend_register_tidy_files( "${CMAKE_CURRENT_SOURCE_DIR}/RegisterMask.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetConstant.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetCallLowering.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/TargetInstrInfo.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetDescription.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetFunctionState.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TargetMIRTextInfo.cpp" diff --git a/backend/lib/CodeGen/MachineBranchOptimization.cpp b/backend/lib/CodeGen/MachineBranchOptimization.cpp index 6c6ac51..19127ea 100644 --- a/backend/lib/CodeGen/MachineBranchOptimization.cpp +++ b/backend/lib/CodeGen/MachineBranchOptimization.cpp @@ -12,8 +12,8 @@ #include "rcc/CodeGen/MachineInstr.h" #include "rcc/CodeGen/MachineJumpTableInfo.h" #include "rcc/CodeGen/MachineLiveness.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <algorithm> #include <cstddef> @@ -107,7 +107,7 @@ namespace { [[nodiscard]] Expected<bool> foldConstantBranches(MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info) { + const TargetInstrInfo &Info) { bool Changed = false; MachineCFGUpdater CFG = Function.cfgUpdater(); for (MachineBasicBlock *Block = Function.firstBlock(); Block != nullptr; Block = Block->next()) { @@ -198,7 +198,7 @@ namespace { [[nodiscard]] Expected<bool> isForwardingBlock(MachineBasicBlock &Block, MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info) { + const TargetInstrInfo &Info) { if (&Block == Function.firstBlock() || Block.successors().size() != 1 || Block.successors().front().Block == nullptr || Block.successors().front().Block == &Block || hasObservableBlockIdentity(Block, Function)) { @@ -222,7 +222,7 @@ namespace { [[nodiscard]] Expected<bool> threadForwardingBlocks(MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info, + const TargetInstrInfo &Info, std::size_t MaximumEdges) { MachineCFGUpdater CFG = Function.cfgUpdater(); std::size_t ThreadedEdges = 0; diff --git a/backend/lib/CodeGen/MachineBranchRelaxation.cpp b/backend/lib/CodeGen/MachineBranchRelaxation.cpp index b2a330a..9ffb821 100644 --- a/backend/lib/CodeGen/MachineBranchRelaxation.cpp +++ b/backend/lib/CodeGen/MachineBranchRelaxation.cpp @@ -7,8 +7,8 @@ #include "rcc/CodeGen/MachineFunctionCloner.h" #include "rcc/CodeGen/MachineInstr.h" #include "rcc/CodeGen/MachineLiveness.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <cstddef> #include <cstdint> @@ -63,7 +63,7 @@ struct MachineLayout final { [[nodiscard]] Expected<MachineLayout> computeLayout(MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info) { + const TargetInstrInfo &Info) { MachineLayout Result; std::uint64_t Offset = 0; for (MachineBasicBlock *Block = Function.firstBlock(); Block != nullptr; Block = Block->next()) { diff --git a/backend/lib/CodeGen/MachineFallthrough.cpp b/backend/lib/CodeGen/MachineFallthrough.cpp index 06d70ef..a853f96 100644 --- a/backend/lib/CodeGen/MachineFallthrough.cpp +++ b/backend/lib/CodeGen/MachineFallthrough.cpp @@ -7,8 +7,8 @@ #include "rcc/CodeGen/MachineFunctionCloner.h" #include "rcc/CodeGen/MachineLiveness.h" #include "rcc/CodeGen/MachineLivenessRepair.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <optional> #include <string> @@ -43,7 +43,7 @@ namespace { [[nodiscard]] Expected<std::vector<MachineBasicBlock *>> normalizeFallthroughs(MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info) { + const TargetInstrInfo &Info) { std::vector<MachineBasicBlock *> ChangedBlocks; for (MachineBasicBlock *Block = Function.firstBlock(); Block != nullptr; Block = Block->next()) { MachineBasicBlock *LayoutSuccessor = Block->next(); diff --git a/backend/lib/CodeGen/MachineFinalization.cpp b/backend/lib/CodeGen/MachineFinalization.cpp index 8523bb8..8947b86 100644 --- a/backend/lib/CodeGen/MachineFinalization.cpp +++ b/backend/lib/CodeGen/MachineFinalization.cpp @@ -7,8 +7,8 @@ #include "rcc/CodeGen/MachineFunction.h" #include "rcc/CodeGen/MachineInstr.h" #include "rcc/CodeGen/MachineOperand.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <cstdint> #include <limits> diff --git a/backend/lib/CodeGen/MachinePseudoExpansion.cpp b/backend/lib/CodeGen/MachinePseudoExpansion.cpp index 022c63e..b97d926 100644 --- a/backend/lib/CodeGen/MachinePseudoExpansion.cpp +++ b/backend/lib/CodeGen/MachinePseudoExpansion.cpp @@ -11,8 +11,8 @@ #include "rcc/CodeGen/MachineLiveness.h" #include "rcc/CodeGen/MachineOperand.h" #include "rcc/CodeGen/MachineRegisterInfo.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <cstddef> #include <cstdint> @@ -41,7 +41,7 @@ using BlockSizeSnapshot = std::vector<std::pair<MachineBlockStableID, std::uint6 [[nodiscard]] Expected<std::uint64_t> blockSize(const MachineBasicBlock &Block, const MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &BranchInfo) { + const TargetInstrInfo &BranchInfo) { std::uint64_t Size = 0; for (const MachineInstr *Instruction = Block.firstInstruction(); Instruction != nullptr; Instruction = Instruction->next()) { @@ -58,7 +58,7 @@ using BlockSizeSnapshot = std::vector<std::pair<MachineBlockStableID, std::uint6 [[nodiscard]] Expected<BlockSizeSnapshot> snapshotBlockSizes(const MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &BranchInfo) { + const TargetInstrInfo &BranchInfo) { BlockSizeSnapshot Result; for (const MachineBasicBlock *Block = Function.firstBlock(); Block != nullptr; Block = Block->next()) { @@ -248,7 +248,7 @@ prepareImplementation(MachineFunction &Function, const TargetDescription &Target [[nodiscard]] Expected<MachinePassResult> expandImplementation(MachineFunction &Function, const TargetDescription &Target, const TargetPseudoExpansionInfo &Info, MachinePseudoExpansionPhase Phase, - const TargetBranchInfo *BranchInfo, MachineActionReplay &Actions) { + const TargetInstrInfo *BranchInfo, MachineActionReplay &Actions) { const ResourceSnapshot Before = snapshotResources(Function); std::optional<BlockSizeSnapshot> SizesBefore; if (Phase == MachinePseudoExpansionPhase::TargetLate) { @@ -380,7 +380,7 @@ runPreparationTransaction(MachineFunction &Function, const TargetDescription &Ta [[nodiscard]] Expected<MachinePassResult> runExpansionTransaction(MachineFunction &Function, const TargetDescription &Target, const TargetPseudoExpansionInfo &Info, MachinePseudoExpansionPhase Phase, - const TargetBranchInfo *BranchInfo, MachineAnalysisManager &Analyses) { + const TargetInstrInfo *BranchInfo, MachineAnalysisManager &Analyses) { auto Trial = cloneMachineFunction( Function, Target, MachineFunctionCloneOptions{.NewStableID = Function.stableID(), .NewName = std::nullopt}); diff --git a/backend/lib/CodeGen/MachineTailDuplication.cpp b/backend/lib/CodeGen/MachineTailDuplication.cpp index 40d448f..a4b31b2 100644 --- a/backend/lib/CodeGen/MachineTailDuplication.cpp +++ b/backend/lib/CodeGen/MachineTailDuplication.cpp @@ -13,8 +13,8 @@ #include "rcc/CodeGen/MachineLiveness.h" #include "rcc/CodeGen/MachineMemOperand.h" #include "rcc/CodeGen/MachineOperand.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <algorithm> #include <cstddef> @@ -163,7 +163,7 @@ struct TailCandidate final { [[nodiscard]] Expected<std::optional<TailCandidate>> analyzeTail(MachineBasicBlock &Tail, MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info, std::size_t MaximumInstructions) { + const TargetInstrInfo &Info, std::size_t MaximumInstructions) { if (&Tail == Function.firstBlock() || Tail.predecessors().size() < 2 || Tail.successors().size() != 1 || Tail.successors().front().Block == nullptr || hasProtectedIdentity(Tail, Function)) { @@ -201,7 +201,7 @@ analyzeTail(MachineBasicBlock &Tail, MachineFunction &Function, const TargetDesc [[nodiscard]] Expected<bool> duplicateTailIntoPredecessor(const TailCandidate &Candidate, MachineBasicBlock &Tail, MachineBasicBlock &Predecessor, MachineFunction &Function, - const TargetDescription &Target, const TargetBranchInfo &Info) { + const TargetDescription &Target, const TargetInstrInfo &Info) { if (Predecessor.successors().size() != 1 || Predecessor.successors().front().Block != &Tail) { return false; } diff --git a/backend/lib/CodeGen/MachineTailMerge.cpp b/backend/lib/CodeGen/MachineTailMerge.cpp index b754978..c8aad80 100644 --- a/backend/lib/CodeGen/MachineTailMerge.cpp +++ b/backend/lib/CodeGen/MachineTailMerge.cpp @@ -14,8 +14,8 @@ #include "rcc/CodeGen/MachineMemOperand.h" #include "rcc/CodeGen/MachineOperand.h" #include "rcc/CodeGen/RegisterMask.h" -#include "rcc/CodeGen/TargetBranchInfo.h" #include "rcc/CodeGen/TargetDescription.h" +#include "rcc/CodeGen/TargetInstrInfo.h" #include <algorithm> #include <cstddef> @@ -243,7 +243,7 @@ template <typename MaskOperandT> MachineBasicBlock &Duplicate, MachineFunction &Function, const TargetDescription &Target, - const TargetBranchInfo &Info) { + const TargetInstrInfo &Info) { auto Analysis = Info.analyzeBranch(Predecessor, Function, Target); if (!Analysis) return std::unexpected(Analysis.error()); @@ -264,7 +264,7 @@ template <typename MaskOperandT> [[nodiscard]] Expected<bool> redirectPredecessor(MachineBasicBlock &Predecessor, MachineBasicBlock &Duplicate, MachineBasicBlock &Canonical, MachineFunction &Function, - const TargetDescription &Target, const TargetBranchInfo &Info) { + const TargetDescription &Target, const TargetInstrInfo &Info) { auto Analysis = Info.analyzeBranch(Predecessor, Function, Target); if (!Analysis) return std::unexpected(Analysis.error()); diff --git a/backend/lib/CodeGen/TargetInstrInfo.cpp b/backend/lib/CodeGen/TargetInstrInfo.cpp new file mode 100644 index 0000000..14e56ad --- /dev/null +++ b/backend/lib/CodeGen/TargetInstrInfo.cpp @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "rcc/CodeGen/TargetInstrInfo.h" + +namespace rcc { + +TargetInstrInfo::~TargetInstrInfo() = default; + +} // namespace rcc diff --git a/backend/lib/Target/RISCV/RISCVBranchInfo.cpp b/backend/lib/Target/RISCV/RISCVBranchInfo.cpp index a00ed67..059bbef 100644 --- a/backend/lib/Target/RISCV/RISCVBranchInfo.cpp +++ b/backend/lib/Target/RISCV/RISCVBranchInfo.cpp @@ -497,7 +497,7 @@ selectLongBranchScratch(const MachineInstr &Instruction, const MachineBasicBlock return true; } -class RISCVBranchInfo final : public TargetBranchInfo { +class RISCVBranchInfo final : public TargetInstrInfo { public: [[nodiscard]] Expected<MachineBranchAnalysis> analyzeBranch(MachineBasicBlock &Block, MachineFunction &Function, @@ -730,7 +730,7 @@ public: } // namespace -const TargetBranchInfo &branchInfo() noexcept { +const TargetInstrInfo &branchInfo() noexcept { static const RISCVBranchInfo Value; return Value; } diff --git a/backend/unittests/Target/RISCVLateCodeGenTest.cpp b/backend/unittests/Target/RISCVLateCodeGenTest.cpp index 4b11140..97590cd 100644 --- a/backend/unittests/Target/RISCVLateCodeGenTest.cpp +++ b/backend/unittests/Target/RISCVLateCodeGenTest.cpp @@ -102,7 +102,7 @@ public: } }; -class FixedSizeBranchInfo final : public rcc::TargetBranchInfo { +class FixedSizeBranchInfo final : public rcc::TargetInstrInfo { public: [[nodiscard]] rcc::Expected<rcc::MachineBranchAnalysis> analyzeBranch(rcc::MachineBasicBlock &, rcc::MachineFunction &, |
