aboutsummaryrefslogtreecommitdiff
path: root/backend/utils/TableGen/Common/CodeGenTarget.h
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-22 19:16:18 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-22 19:16:18 +0800
commit75f1223070749b0df3002226ebbb474c68c71f90 (patch)
treee3b386180f6ea394381862d5ff9b5394ac0a6481 /backend/utils/TableGen/Common/CodeGenTarget.h
parent36b0be1ec1558f88d4f031a1817c3a4c2cba07a6 (diff)
downloadrcc-project-75f1223070749b0df3002226ebbb474c68c71f90.tar.gz
rcc-project-75f1223070749b0df3002226ebbb474c68c71f90.tar.xz
[RISCV] Generate MC pseudo lowering
Diffstat (limited to 'backend/utils/TableGen/Common/CodeGenTarget.h')
-rw-r--r--backend/utils/TableGen/Common/CodeGenTarget.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/backend/utils/TableGen/Common/CodeGenTarget.h b/backend/utils/TableGen/Common/CodeGenTarget.h
index 6d3e185..43c7383 100644
--- a/backend/utils/TableGen/Common/CodeGenTarget.h
+++ b/backend/utils/TableGen/Common/CodeGenTarget.h
@@ -151,6 +151,24 @@ struct NormalizedMacroFusionRule final {
bool RequireSecondDestinationTie = false;
};
+enum class NormalizedMCPseudoOperandKind : std::uint8_t {
+ SourceOperand,
+ Register,
+ Immediate,
+};
+
+struct NormalizedMCPseudoOperand final {
+ NormalizedMCPseudoOperandKind Kind = NormalizedMCPseudoOperandKind::SourceOperand;
+ std::uint32_t Value = 0;
+ std::int64_t Immediate = 0;
+};
+
+struct NormalizedMCPseudoExpansion final {
+ std::uint32_t PseudoOpcode = 0;
+ std::uint32_t ResultOpcode = 0;
+ std::vector<NormalizedMCPseudoOperand> Operands;
+};
+
struct NormalizedEncodingCategory final {
std::uint32_t ID = 0;
std::string Symbol;
@@ -393,6 +411,7 @@ struct NormalizedTargetModel final {
std::vector<NormalizedSelectionRule> SelectionRules;
std::vector<NormalizedCombinerRule> CombinerRules;
std::vector<NormalizedMacroFusionRule> MacroFusionRules;
+ std::vector<NormalizedMCPseudoExpansion> MCPseudoExpansions;
};
[[nodiscard]] std::optional<std::string_view>
@@ -437,6 +456,7 @@ private:
[[nodiscard]] bool normalizeSelectionRules(NormalizedTargetModel &Result);
[[nodiscard]] bool normalizeCombinerRules(NormalizedTargetModel &Result);
[[nodiscard]] bool normalizeMacroFusionRules(NormalizedTargetModel &Result);
+ [[nodiscard]] bool normalizeMCPseudoExpansions(NormalizedTargetModel &Result);
const DescriptionAST &Input;
std::string SourceName;