diff options
author | Chris Lattner <sabre@nondot.org> | 2010-11-14 22:03:15 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-11-14 22:03:15 +0000 |
commit | 2f9f63af0b6417160284c0db9c56b49e3e45594d (patch) | |
tree | 48c4998c5b4f6b996a9aabda6cb02b443757b52f /llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | |
parent | cfb62874873b3fb252d8e53cf8798821323b33d7 (diff) | |
download | bcm5719-llvm-2f9f63af0b6417160284c0db9c56b49e3e45594d.tar.gz bcm5719-llvm-2f9f63af0b6417160284c0db9c56b49e3e45594d.zip |
lower PPC::MFCRpseud when transforming to MC, avoiding calling
the aborting printSpecial() method. This gets us to 8 failures.
llvm-svn: 119084
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 039bb4dffac..8cd87de66d4 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -554,13 +554,22 @@ void PPCAsmPrinter::printPredicateOperand(const MachineInstr *MI, unsigned OpNo, /// void PPCAsmPrinter::EmitInstruction(const MachineInstr *MI) { if (UseInstPrinter) { + MCInst TmpInst; + // Lower multi-instruction pseudo operations. switch (MI->getOpcode()) { default: break; - // TODO: implement me. + + case PPC::MFCRpseud: + // Transform: %R3 = MFCRpseud %CR7 + // Into: %R3 = MFCR ;; cr7 + OutStreamer.AddComment(getRegisterName(MI->getOperand(1).getReg())); + TmpInst.setOpcode(PPC::MFCR); + TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(0).getReg())); + OutStreamer.EmitInstruction(TmpInst); + return; } - MCInst TmpInst; LowerPPCMachineInstrToMCInst(MI, TmpInst, *this); OutStreamer.EmitInstruction(TmpInst); return; |