mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Add support for alternative register names, useful for instructions whose operands are logically equivalent to existing registers, but happen to be printed specially. For example, an instruciton that prints d0[0] instead of s0.
Patch by Jim Grosbach. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133940 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -248,6 +248,8 @@ struct OperandsSignature {
|
||||
|
||||
// For now, the only other thing we accept is register operands.
|
||||
const CodeGenRegisterClass *RC = 0;
|
||||
if (OpLeafRec->isSubClassOf("RegisterOperand"))
|
||||
OpLeafRec = OpLeafRec->getValueAsDef("RegClass");
|
||||
if (OpLeafRec->isSubClassOf("RegisterClass"))
|
||||
RC = &Target.getRegisterClass(OpLeafRec);
|
||||
else if (OpLeafRec->isSubClassOf("Register"))
|
||||
@@ -454,6 +456,8 @@ void FastISelMap::collectPatterns(CodeGenDAGPatterns &CGP) {
|
||||
std::string SubRegNo;
|
||||
if (Op->getName() != "EXTRACT_SUBREG") {
|
||||
Record *Op0Rec = II.Operands[0].Rec;
|
||||
if (Op0Rec->isSubClassOf("RegisterOperand"))
|
||||
Op0Rec = Op0Rec->getValueAsDef("RegClass");
|
||||
if (!Op0Rec->isSubClassOf("RegisterClass"))
|
||||
continue;
|
||||
DstRC = &Target.getRegisterClass(Op0Rec);
|
||||
|
||||
Reference in New Issue
Block a user