diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 20:39:04 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 20:39:04 +0800 |
| commit | 8721893d3ba605f5374d9c0c7987af6110355638 (patch) | |
| tree | e734a1358a80fbb4dbdc62f1575475da51fabcb8 /backend/lib/CodeGen | |
| parent | 2ef71f86a2b3e23967e8af08ba1eaaa950f0e1b5 (diff) | |
| download | rcc-project-8721893d3ba605f5374d9c0c7987af6110355638.tar.gz rcc-project-8721893d3ba605f5374d9c0c7987af6110355638.tar.xz | |
[CodeGen] Add TargetInstrInfo ownership
Diffstat (limited to 'backend/lib/CodeGen')
| -rw-r--r-- | backend/lib/CodeGen/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineBranchOptimization.cpp | 8 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineBranchRelaxation.cpp | 4 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineFallthrough.cpp | 4 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineFinalization.cpp | 2 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachinePseudoExpansion.cpp | 10 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineTailDuplication.cpp | 6 | ||||
| -rw-r--r-- | backend/lib/CodeGen/MachineTailMerge.cpp | 6 | ||||
| -rw-r--r-- | backend/lib/CodeGen/TargetInstrInfo.cpp | 9 |
9 files changed, 33 insertions, 21 deletions
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 |
