diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-09-21 16:45:31 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-09-21 16:45:31 +0000 |
commit | cbac342e1a0872996d60448c63a3361da1216b9a (patch) | |
tree | 51bb57b51e176d9278f97685451e270364d4bbd0 /llvm/lib/Target/ARM/ARMAsmPrinter.cpp | |
parent | 4b57204e80aaa206d126277456cfc6186b8e1503 (diff) | |
download | bcm5719-llvm-cbac342e1a0872996d60448c63a3361da1216b9a.tar.gz bcm5719-llvm-cbac342e1a0872996d60448c63a3361da1216b9a.zip |
Fix errant printing of [v]ldm instructions that aren't a pop
llvm-svn: 114445
Diffstat (limited to 'llvm/lib/Target/ARM/ARMAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 612b068e5e2..a8102183484 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -1174,47 +1174,39 @@ void ARMAsmPrinter::EmitInstruction(const MachineInstr *MI) { } else // A8.6.123 PUSH if ((MI->getOpcode() == ARM::STM_UPD || MI->getOpcode() == ARM::t2STM_UPD) && - MI->getOperand(0).getReg() == ARM::SP) { - const MachineOperand &MO1 = MI->getOperand(2); - if (ARM_AM::getAM4SubMode(MO1.getImm()) == ARM_AM::db) { - OS << '\t' << "push"; - printPredicateOperand(MI, 3, OS); - OS << '\t'; - printRegisterList(MI, 5, OS); - } + MI->getOperand(0).getReg() == ARM::SP && + ARM_AM::getAM4SubMode(MI->getOperand(2).getImm()) == ARM_AM::db) { + OS << '\t' << "push"; + printPredicateOperand(MI, 3, OS); + OS << '\t'; + printRegisterList(MI, 5, OS); } else // A8.6.122 POP if ((MI->getOpcode() == ARM::LDM_UPD || MI->getOpcode() == ARM::t2LDM_UPD) && - MI->getOperand(0).getReg() == ARM::SP) { - const MachineOperand &MO1 = MI->getOperand(2); - if (ARM_AM::getAM4SubMode(MO1.getImm()) == ARM_AM::ia) { - OS << '\t' << "pop"; - printPredicateOperand(MI, 3, OS); - OS << '\t'; - printRegisterList(MI, 5, OS); - } + MI->getOperand(0).getReg() == ARM::SP && + ARM_AM::getAM4SubMode(MI->getOperand(2).getImm()) == ARM_AM::ia) { + OS << '\t' << "pop"; + printPredicateOperand(MI, 3, OS); + OS << '\t'; + printRegisterList(MI, 5, OS); } else // A8.6.355 VPUSH if ((MI->getOpcode() == ARM::VSTMS_UPD || MI->getOpcode() ==ARM::VSTMD_UPD) && - MI->getOperand(0).getReg() == ARM::SP) { - const MachineOperand &MO1 = MI->getOperand(2); - if (ARM_AM::getAM4SubMode(MO1.getImm()) == ARM_AM::db) { - OS << '\t' << "vpush"; - printPredicateOperand(MI, 3, OS); - OS << '\t'; - printRegisterList(MI, 5, OS); - } + MI->getOperand(0).getReg() == ARM::SP && + ARM_AM::getAM4SubMode(MI->getOperand(2).getImm()) == ARM_AM::db) { + OS << '\t' << "vpush"; + printPredicateOperand(MI, 3, OS); + OS << '\t'; + printRegisterList(MI, 5, OS); } else // A8.6.354 VPOP if ((MI->getOpcode() == ARM::VLDMS_UPD || MI->getOpcode() ==ARM::VLDMD_UPD) && - MI->getOperand(0).getReg() == ARM::SP) { - const MachineOperand &MO1 = MI->getOperand(2); - if (ARM_AM::getAM4SubMode(MO1.getImm()) == ARM_AM::ia) { - OS << '\t' << "vpop"; - printPredicateOperand(MI, 3, OS); - OS << '\t'; - printRegisterList(MI, 5, OS); - } + MI->getOperand(0).getReg() == ARM::SP && + ARM_AM::getAM4SubMode(MI->getOperand(2).getImm()) == ARM_AM::ia) { + OS << '\t' << "vpop"; + printPredicateOperand(MI, 3, OS); + OS << '\t'; + printRegisterList(MI, 5, OS); } else printInstruction(MI, OS); |