Changeset View
Changeset View
Standalone View
Standalone View
llvm/utils/TableGen/RegisterInfoEmitter.cpp
Show First 20 Lines • Show All 1,184 Lines • ▼ Show 20 Lines | OS << " const RegClassWeight &getRegClassWeight(" | ||||
<< " ArrayRef<const char *> getRegMaskNames() const override;\n" | << " ArrayRef<const char *> getRegMaskNames() const override;\n" | ||||
<< " ArrayRef<const uint32_t *> getRegMasks() const override;\n" | << " ArrayRef<const uint32_t *> getRegMasks() const override;\n" | ||||
<< " bool isGeneralPurposeRegister(const MachineFunction &, " | << " bool isGeneralPurposeRegister(const MachineFunction &, " | ||||
<< "MCRegister) const override;\n" | << "MCRegister) const override;\n" | ||||
<< " bool isFixedRegister(const MachineFunction &, " | << " bool isFixedRegister(const MachineFunction &, " | ||||
<< "MCRegister) const override;\n" | << "MCRegister) const override;\n" | ||||
<< " bool isArgumentRegister(const MachineFunction &, " | << " bool isArgumentRegister(const MachineFunction &, " | ||||
<< "MCRegister) const override;\n" | << "MCRegister) const override;\n" | ||||
<< " bool isConstantPhysReg(MCRegister PhysReg) const override final;\n" | |||||
<< " /// Devirtualized TargetFrameLowering.\n" | << " /// Devirtualized TargetFrameLowering.\n" | ||||
<< " static const " << TargetName << "FrameLowering *getFrameLowering(\n" | << " static const " << TargetName << "FrameLowering *getFrameLowering(\n" | ||||
<< " const MachineFunction &MF);\n" | << " const MachineFunction &MF);\n" | ||||
<< "};\n\n"; | << "};\n\n"; | ||||
const auto &RegisterClasses = RegBank.getRegClasses(); | const auto &RegisterClasses = RegBank.getRegClasses(); | ||||
if (!RegisterClasses.empty()) { | if (!RegisterClasses.empty()) { | ||||
▲ Show 20 Lines • Show All 480 Lines • ▼ Show 20 Lines | if (Category.getName() == "ArgumentRegisters") { | ||||
for (const CodeGenRegisterClass *RC : Category.getClasses()) | for (const CodeGenRegisterClass *RC : Category.getClasses()) | ||||
OS << " " << RC->getQualifiedName() | OS << " " << RC->getQualifiedName() | ||||
<< "RegClass.contains(PhysReg) ||\n"; | << "RegClass.contains(PhysReg) ||\n"; | ||||
break; | break; | ||||
} | } | ||||
OS << " false;\n"; | OS << " false;\n"; | ||||
OS << "}\n\n"; | OS << "}\n\n"; | ||||
OS << "bool " << ClassName << "::\n" | |||||
<< "isConstantPhysReg(MCRegister PhysReg) const {\n" | |||||
<< " return\n"; | |||||
for (const auto &Reg : Regs) | |||||
if (Reg.Constant) | |||||
OS << " PhysReg == " << getQualifiedName(Reg.TheDef) << " ||\n"; | |||||
OS << " false;\n"; | |||||
OS << "}\n\n"; | |||||
OS << "ArrayRef<const char *> " << ClassName | OS << "ArrayRef<const char *> " << ClassName | ||||
<< "::getRegMaskNames() const {\n"; | << "::getRegMaskNames() const {\n"; | ||||
if (!CSRSets.empty()) { | if (!CSRSets.empty()) { | ||||
OS << " static const char *Names[] = {\n"; | OS << " static const char *Names[] = {\n"; | ||||
for (Record *CSRSet : CSRSets) | for (Record *CSRSet : CSRSets) | ||||
OS << " " << '"' << CSRSet->getName() << '"' << ",\n"; | OS << " " << '"' << CSRSet->getName() << '"' << ",\n"; | ||||
OS << " };\n"; | OS << " };\n"; | ||||
OS << " return makeArrayRef(Names);\n"; | OS << " return makeArrayRef(Names);\n"; | ||||
▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines |