mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Add a PrintRegUnit helper similar to PrintReg.
Reg-units are named after their root registers, and most units have a single root, so they simply print as 'AL', 'XMM0', etc. The rare dual root reg-units print as FPSCR~FPSCR_NZCV, FP0~ST7, ... The printing piggybacks on the existing register name tables, so no extra const data space is required. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157754 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -46,6 +46,27 @@ void PrintReg::print(raw_ostream &OS) const {
|
||||
}
|
||||
}
|
||||
|
||||
void PrintRegUnit::print(raw_ostream &OS) const {
|
||||
// Generic printout when TRI is missing.
|
||||
if (!TRI) {
|
||||
OS << "Unit~" << Unit;
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for invalid register units.
|
||||
if (Unit >= TRI->getNumRegUnits()) {
|
||||
OS << "BadUnit~" << Unit;
|
||||
return;
|
||||
}
|
||||
|
||||
// Normal units have at least one root.
|
||||
MCRegUnitRootIterator Roots(Unit, TRI);
|
||||
assert(Roots.isValid() && "Unit has no roots.");
|
||||
OS << TRI->getName(*Roots);
|
||||
for (++Roots; Roots.isValid(); ++Roots)
|
||||
OS << '~' << TRI->getName(*Roots);
|
||||
}
|
||||
|
||||
/// getAllocatableClass - Return the maximal subclass of the given register
|
||||
/// class that is alloctable, or NULL.
|
||||
const TargetRegisterClass *
|
||||
|
Reference in New Issue
Block a user