[PATCH] D139616: [TableGen] Emit table mapping physical registers to base classes
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 8 03:29:47 PST 2022
foad added inline comments.
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1202
+ if (llvm::any_of(RegisterClasses, [](const auto &RC) {
+ return RC.getBaseClassOrder() != std::nullopt; })) {
+ OS << " const TargetRegisterClass *getPhysRegBaseClass(MCRegister Reg) const override;\n";
----------------
Comparing with nullopt is weird. Can't you rely on implicit conversion to bool?
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1608
+ for (const auto &RC : RegisterClasses) {
+ if (auto Order = RC.getBaseClassOrder())
+ BaseClasses.push_back(&RC);
----------------
You're not using Order here.
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1612
+ if (!BaseClasses.empty()) {
+ assert(BaseClasses.size() < (UINT8_MAX - 1) && "Too many base register classes");
+
----------------
`< UINT8_MAX` should be enough.
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1622
+ else
+ return LHSOrder < RHSOrder;
+ }
----------------
This is `return std::tie(LHS->getBaseClassOrder(), LHS->EnumValue) < std::tie(RHS->getBaseClassOrder(), RHS->EnumValue)`
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1629
+ std::vector<uint8_t> Mapping;
+ Mapping.resize(Regs.size() + 1, 0);
+ for (int RCIdx = BaseClasses.size() - 1; RCIdx >= 0; --RCIdx) {
----------------
Why `+ 1`?
================
Comment at: llvm/utils/TableGen/RegisterInfoEmitter.cpp:1649
+ OS << " if (Reg >= sizeof(Mapping))\n return nullptr;\n";
+ OS << " if (!Mapping[Reg])\n return nullptr;\n";
+ OS << " return BaseClasses[Mapping[Reg] - 1];\n";
----------------
Put nullptr as the first entry in the table to avoid this `if`?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D139616/new/
https://reviews.llvm.org/D139616
More information about the llvm-commits
mailing list