aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/include/rcc/CodeGen/MachineBranchOptimization.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineBranchRelaxation.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineFallthrough.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineFinalization.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineOptimizationPipeline.h4
-rw-r--r--backend/include/rcc/CodeGen/MachinePseudoExpansion.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineTailDuplication.h6
-rw-r--r--backend/include/rcc/CodeGen/MachineTailMerge.h6
-rw-r--r--backend/include/rcc/CodeGen/TargetInstrInfo.h (renamed from backend/include/rcc/CodeGen/TargetBranchInfo.h)10
-rw-r--r--backend/include/rcc/Target/RISCV/RISCVCodeGen.h4
-rw-r--r--backend/lib/CodeGen/CMakeLists.txt5
-rw-r--r--backend/lib/CodeGen/MachineBranchOptimization.cpp8
-rw-r--r--backend/lib/CodeGen/MachineBranchRelaxation.cpp4
-rw-r--r--backend/lib/CodeGen/MachineFallthrough.cpp4
-rw-r--r--backend/lib/CodeGen/MachineFinalization.cpp2
-rw-r--r--backend/lib/CodeGen/MachinePseudoExpansion.cpp10
-rw-r--r--backend/lib/CodeGen/MachineTailDuplication.cpp6
-rw-r--r--backend/lib/CodeGen/MachineTailMerge.cpp6
-rw-r--r--backend/lib/CodeGen/TargetInstrInfo.cpp9
-rw-r--r--backend/lib/Target/RISCV/RISCVBranchInfo.cpp4
-rw-r--r--backend/unittests/Target/RISCVLateCodeGenTest.cpp2
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 &,