aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/TableGen/Parser.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-19 02:50:30 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-19 02:50:30 +0800
commit6c97d54954112be9a5badacaec8efa1d05bd7d15 (patch)
tree9eb4d5db7f05218759e6f6d49cf90ca65f1e53f8 /backend/lib/TableGen/Parser.cpp
parentf5c592905e6e1ef4b78337d76c8215e543607b8d (diff)
downloadrcc-project-6c97d54954112be9a5badacaec8efa1d05bd7d15.tar.gz
rcc-project-6c97d54954112be9a5badacaec8efa1d05bd7d15.tar.xz
[RISCV][GlobalISel] Generate indirect branch selection
Diffstat (limited to 'backend/lib/TableGen/Parser.cpp')
-rw-r--r--backend/lib/TableGen/Parser.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/backend/lib/TableGen/Parser.cpp b/backend/lib/TableGen/Parser.cpp
index 1a2af30..248e831 100644
--- a/backend/lib/TableGen/Parser.cpp
+++ b/backend/lib/TableGen/Parser.cpp
@@ -477,7 +477,7 @@ private:
if (!checkKeys(*Element,
{"id", "symbol", "name", "bank", "size_bits", "spill_size_bits",
"spill_alignment_bits", "lanes", "registers", "allocation_order",
- "allocatable", "copy_cost"},
+ "superclasses", "allocatable", "copy_cost"},
"register class")) {
return false;
}
@@ -522,8 +522,15 @@ private:
.Lanes = *Lanes,
.RegisterSymbols = *Registers,
.AllocationOrderSymbols = *AllocationOrder,
+ .SuperClassSymbols = {},
.Range = Element->range(),
};
+ if (const yaml::Node *SuperClasses = optionalNode(*Element, "superclasses")) {
+ const auto Values = scalarSequence(*SuperClasses, "register class superclasses");
+ if (!Values)
+ return false;
+ RegisterClass.SuperClassSymbols = *Values;
+ }
if (const yaml::Node *Allocatable = optionalNode(*Element, "allocatable")) {
const auto Value = boolean(*Allocatable, "register class allocatable");
if (!Value)