Is layering violation a strong prohibition for acceptance?
There is formal layering violation that RegisterInfo calls InstPrinter but for me it looks like it is conceptual layering violatoin in LLVM architecture. Assembly is responsibility of MC Layer but inline assembly is responsibility of TargetLowering and RegisterInfo (TargetLowering::getRegForInlineAsmConstraint() and RegisterInfo::getRegAsmName()).
So without code dupplication or major changes in core LLVM I don't see how this violation can be solved.
Possibly we should get used to that we must use names like VGPR13 or rename our Register classes.
The easiest way to avoid a potential layering violation would be to have TableGen emit AMDGPUInstPrinter::getRegisterName(Reg) as static function rather than an AMDGPUInstPrinter member function.
However, if including the InstPrinter headers from the CodeGen files is a layering violation, all targets are already doing this by including InstrPrinter headers in XXXAsmPrinter. So, this change really isn't doing anything that isn't already being done. I'm fine with this being committed.