struct MRegisterDesc {
const char *Name; // Assembly language name for the register
const unsigned *AliasSet; // Register Alias Set, described above
- unsigned char SpillSize; // Size of this register in bytes
- unsigned char SpillAlignment; // Alignment of stack slot for this reg
};
class TargetRegisterClass {
return get(RegNo).Name;
}
- /// getSpillSize - Return the size in bits required of a stack slot used to
- /// spill register into.
- unsigned getSpillSize(unsigned RegNo) const {
- return get(RegNo).SpillSize;
- }
-
- /// getSpillAlignment - Return the alignment required by a stack slot used to
- /// spill register into.
- unsigned getSpillAlignment(unsigned RegNo) const {
- return get(RegNo).SpillAlignment;
- }
-
/// getNumRegs - Return the number of registers this target has
/// (useful for sizing arrays holding per register information)
unsigned getNumRegs() const {
OS << Reg.getName();
OS << "\",\t";
if (RegisterAliases.count(Reg.TheDef))
- OS << Reg.getName() << "_AliasSet,\t";
+ OS << Reg.getName() << "_AliasSet },\n";
else
- OS << "Empty_AliasSet,\t";
-
- // Figure out what the size and alignment of the spill slots are for this
- // reg. This may be explicitly declared in the register, or it may be
- // inferred from the register classes it is part of.
- std::multimap<Record*, const CodeGenRegisterClass*>::iterator I, E;
- tie(I, E) = RegClassesBelongedTo.equal_range(Reg.TheDef);
- unsigned SpillSize = Reg.DeclaredSpillSize;
- unsigned SpillAlign = Reg.DeclaredSpillAlignment;
- for (; I != E; ++I) { // For each reg class this belongs to.
- const CodeGenRegisterClass *RC = I->second;
- SpillSize = std::max(SpillSize, RC->SpillSize);
- SpillAlign = std::max(SpillAlign, RC->SpillAlignment);
- }
-
- OS << SpillSize << ", " << SpillAlign << " },\n";
+ OS << "Empty_AliasSet },\n";
}
OS << " };\n"; // End of register descriptors...
OS << "}\n\n"; // End of anonymous namespace...