diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-04-19 05:41:52 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-04-19 05:41:52 +0000 |
| commit | 53c40624f9bf5d71fbd50331b1bcffb0d535f33b (patch) | |
| tree | 2c488d2f1b53395276a7bb519729b6bafc87e19d /llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp | |
| parent | baa9be572b8a2545be4d3eecbb9486fca9129b29 (diff) | |
| download | bcm5719-llvm-53c40624f9bf5d71fbd50331b1bcffb0d535f33b.tar.gz bcm5719-llvm-53c40624f9bf5d71fbd50331b1bcffb0d535f33b.zip | |
Add completely untested support for mtcrf/mfcrf encoding
llvm-svn: 21353
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp b/llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp index 57b92b4f161..574e21e7cb5 100644 --- a/llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp +++ b/llvm/lib/Target/PowerPC/PPC32CodeEmitter.cpp @@ -186,6 +186,13 @@ int PPC32CodeEmitter::getMachineOpValue(MachineInstr &MI, MachineOperand &MO) { // or things that get fixed up later by the JIT. if (MO.isRegister()) { rv = enumRegToMachineReg(MO.getReg()); + + // Special encoding for MTCRF and MFCRF, which uses a bit mask for the + // register, not the register number directly. + if ((MI.getOpcode() == PPC::MTCRF || MI.getOpcode() == PPC::MFCRF) && + (MO.getReg() >= PPC::CR0 && MO.getReg() <= PPC::CR7)) { + rv = 0x80 >> rv; + } } else if (MO.isImmediate()) { rv = MO.getImmedValue(); } else if (MO.isGlobalAddress() || MO.isExternalSymbol()) { |

