[llvm-commits] [llvm] r121790 - /llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
Jim Grosbach
grosbach at apple.com
Tue Dec 14 13:10:47 PST 2010
Author: grosbach
Date: Tue Dec 14 15:10:47 2010
New Revision: 121790
URL: http://llvm.org/viewvc/llvm-project?rev=121790&view=rev
Log:
Refactor a bit for legibility.
Modified:
llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp?rev=121790&r1=121789&r2=121790&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Tue Dec 14 15:10:47 2010
@@ -713,6 +713,18 @@
printOperand(MI, NOps-2, OS);
}
+static void populateADROperands(MCInst &Inst, unsigned Dest,
+ const MCSymbol *Label,
+ unsigned pred, unsigned ccreg,
+ MCContext &Ctx) {
+ const MCExpr *SymbolExpr = MCSymbolRefExpr::Create(Label, Ctx);
+ Inst.addOperand(MCOperand::CreateReg(Dest));
+ Inst.addOperand(MCOperand::CreateExpr(SymbolExpr));
+ // Add predicate operands.
+ Inst.addOperand(MCOperand::CreateImm(pred));
+ Inst.addOperand(MCOperand::CreateReg(ccreg));
+}
+
void ARMAsmPrinter::EmitInstruction(const MachineInstr *MI) {
switch (MI->getOpcode()) {
default: break;
@@ -734,42 +746,29 @@
}
return;
}
- case ARM::t2LEApcrel:
- case ARM::LEApcrel: {
+ case ARM::LEApcrel:
+ case ARM::t2LEApcrel: {
// FIXME: Need to also handle globals and externals
- assert (MI->getOperand(1).isCPI());
- unsigned LabelId = MI->getOperand(1).getIndex();
- MCSymbol *Sym = GetCPISymbol(LabelId);
- const MCExpr *SymbolExpr = MCSymbolRefExpr::Create(Sym, OutContext);
MCInst TmpInst;
- if (MI->getOpcode() == ARM::LEApcrel)
- TmpInst.setOpcode(ARM::ADR);
- else
- TmpInst.setOpcode(ARM::t2ADR);
- TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(0).getReg()));
- TmpInst.addOperand(MCOperand::CreateExpr(SymbolExpr));
- // Add predicate operands.
- TmpInst.addOperand(MCOperand::CreateImm(MI->getOperand(2).getImm()));
- TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(3).getReg()));
+ TmpInst.setOpcode(MI->getOpcode() == ARM::t2LEApcrel
+ ? ARM::t2ADR : ARM::ADR);
+ populateADROperands(TmpInst, MI->getOperand(0).getReg(),
+ GetCPISymbol(MI->getOperand(1).getIndex()),
+ MI->getOperand(2).getImm(), MI->getOperand(3).getReg(),
+ OutContext);
OutStreamer.EmitInstruction(TmpInst);
return;
}
case ARM::t2LEApcrelJT:
case ARM::LEApcrelJT: {
- unsigned JTI = MI->getOperand(1).getIndex();
- unsigned Id = MI->getOperand(2).getImm();
- MCSymbol *JTISymbol = GetARMJTIPICJumpTableLabel2(JTI, Id);
- const MCExpr *SymbolExpr = MCSymbolRefExpr::Create(JTISymbol, OutContext);
MCInst TmpInst;
- if (MI->getOpcode() == ARM::LEApcrelJT)
- TmpInst.setOpcode(ARM::ADR);
- else
- TmpInst.setOpcode(ARM::t2ADR);
- TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(0).getReg()));
- TmpInst.addOperand(MCOperand::CreateExpr(SymbolExpr));
- // Add predicate operands.
- TmpInst.addOperand(MCOperand::CreateImm(MI->getOperand(3).getImm()));
- TmpInst.addOperand(MCOperand::CreateReg(MI->getOperand(4).getReg()));
+ TmpInst.setOpcode(MI->getOpcode() == ARM::t2LEApcrelJT
+ ? ARM::t2ADR : ARM::ADR);
+ populateADROperands(TmpInst, MI->getOperand(0).getReg(),
+ GetARMJTIPICJumpTableLabel2(MI->getOperand(1).getIndex(),
+ MI->getOperand(2).getImm()),
+ MI->getOperand(3).getImm(), MI->getOperand(4).getReg(),
+ OutContext);
OutStreamer.EmitInstruction(TmpInst);
return;
}
More information about the llvm-commits
mailing list