diff options
| author | Owen Anderson <resistor@mac.com> | 2011-06-27 21:06:21 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2011-06-27 21:06:21 +0000 |
| commit | a84be6c96b677788380b43525273871e23420458 (patch) | |
| tree | 60b068e37b0651ffa87df377eab6e3130b8eb3a9 /llvm/utils/TableGen/FixedLenDecoderEmitter.cpp | |
| parent | 0ceb5473a3875d46e37989f5137a278c7e332bcb (diff) | |
| download | bcm5719-llvm-a84be6c96b677788380b43525273871e23420458.tar.gz bcm5719-llvm-a84be6c96b677788380b43525273871e23420458.zip | |
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.
llvm-svn: 133940
Diffstat (limited to 'llvm/utils/TableGen/FixedLenDecoderEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/FixedLenDecoderEmitter.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp b/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp index 9312fe8d02c..ba6cd863c81 100644 --- a/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp +++ b/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp @@ -1305,8 +1305,10 @@ bool FixedLenDecoderEmitter::populateInstruction(const CodeGenInstruction &CGI, RecordRecTy *Type = dynamic_cast<RecordRecTy*>(TI->getType()); Record *TypeRecord = Type->getRecord(); bool isReg = false; + if (TypeRecord->isSubClassOf("RegisterOperand")) + TypeRecord = TypeRecord->getValueAsDef("RegClass"); if (TypeRecord->isSubClassOf("RegisterClass")) { - Decoder = "Decode" + Type->getRecord()->getName() + "RegisterClass"; + Decoder = "Decode" + TypeRecord->getName() + "RegisterClass"; isReg = true; } |

