summaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen
diff options
context:
space:
mode:
authorFreddy Ye <freddy.ye@intel.com>2024-08-06 08:52:48 +0800
committerGitHub <noreply@github.com>2024-08-06 08:52:48 +0800
commitf30188797453fc9bccb0ba9e8bdb8fd47369dfa7 (patch)
treef3fe5ece57f2f0b4f0da1984e051f28313abb2ab /llvm/utils/TableGen
parent8ec3049e67a830cd35b46d4a33e8305569c5312f (diff)
[X86][RA] Add two address hints for compressible NDD instructions. (#98603)
To address @topperc 's comment at https://discourse.llvm.org/t/rfc-design-for-apx-feature-egpr-and-ndd-support/73031/5?u=kanrobert
Diffstat (limited to 'llvm/utils/TableGen')
-rw-r--r--llvm/utils/TableGen/RegisterInfoEmitter.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
index 2233072718bb..dce6c2ada917 100644
--- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp
+++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp
@@ -1149,6 +1149,8 @@ void RegisterInfoEmitter::runTargetHeader(raw_ostream &OS,
<< " ArrayRef<const uint32_t *> getRegMasks() const override;\n"
<< " bool isGeneralPurposeRegister(const MachineFunction &, "
<< "MCRegister) const override;\n"
+ << " bool isGeneralPurposeRegisterClass(const TargetRegisterClass *RC)"
+ << " const override;\n"
<< " bool isFixedRegister(const MachineFunction &, "
<< "MCRegister) const override;\n"
<< " bool isArgumentRegister(const MachineFunction &, "
@@ -1740,6 +1742,20 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS, CodeGenTarget &Target,
OS << "}\n\n";
OS << "bool " << ClassName << "::\n"
+ << "isGeneralPurposeRegisterClass(const TargetRegisterClass *RC)"
+ << " const {\n"
+ << " return\n";
+ for (const CodeGenRegisterCategory &Category : RegCategories)
+ if (Category.getName() == "GeneralPurposeRegisters") {
+ for (const CodeGenRegisterClass *RC : Category.getClasses())
+ OS << " " << RC->getQualifiedName()
+ << "RegClass.hasSubClassEq(RC) ||\n";
+ break;
+ }
+ OS << " false;\n";
+ OS << "}\n\n";
+
+ OS << "bool " << ClassName << "::\n"
<< "isFixedRegister(const MachineFunction &MF, "
<< "MCRegister PhysReg) const {\n"
<< " return\n";