ARM use a dedicated printer for postidx_reg operands.
authorJim Grosbach <grosbach@apple.com>
Fri, 5 Aug 2011 15:48:21 +0000 (15:48 +0000)
committerJim Grosbach <grosbach@apple.com>
Fri, 5 Aug 2011 15:48:21 +0000 (15:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136968 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
lib/Target/ARM/InstPrinter/ARMInstPrinter.h

index 1ef9dbc1f81926f208a434ab01c3f2b963f0e603..99584d4445f88f6f462930f95e304f68d85bde01 100644 (file)
@@ -645,7 +645,7 @@ def PostIdxRegAsmOperand : AsmOperandClass {
 }
 def postidx_reg : Operand<i32> {
   let EncoderMethod = "getPostIdxRegOpValue";
-  let PrintMethod = "printAddrMode3OffsetOperand";
+  let PrintMethod = "printPostIdxRegOperand";
   let ParserMatchClass = PostIdxRegAsmOperand;
   let MIOperandInfo = (ops GPR, i32imm);
 }
index 37359cec7faa6fb2ea58e61fac43459830d917ba..7972b27290f310f660cdfeda7650634237fd609d 100644 (file)
@@ -382,6 +382,15 @@ void ARMInstPrinter::printPostIdxImm8Operand(const MCInst *MI,
   O << '#' << ((Imm & 256) ? "" : "-") << (Imm & 0xff);
 }
 
+void ARMInstPrinter::printPostIdxRegOperand(const MCInst *MI, unsigned OpNum,
+                                            raw_ostream &O) {
+  const MCOperand &MO1 = MI->getOperand(OpNum);
+  const MCOperand &MO2 = MI->getOperand(OpNum+1);
+
+  O << getAddrOpcStr(ARM_AM::getAM3Op(MO2.getImm()))
+    << getRegisterName(MO1.getReg());
+}
+
 void ARMInstPrinter::printPostIdxImm8s4Operand(const MCInst *MI,
                                              unsigned OpNum,
                                              raw_ostream &O) {
index ac78d02835902e024fef1eb37d4eaa09cadb9fbb..8b94ec5f05d0ab9cfbd8e80f2272995d7dbd3004 100644 (file)
@@ -55,6 +55,7 @@ public:
   void printAM3PreOrOffsetIndexOp(const MCInst *MI, unsigned Op,raw_ostream &O);
   void printPostIdxImm8Operand(const MCInst *MI, unsigned OpNum,
                                raw_ostream &O);
+  void printPostIdxRegOperand(const MCInst *MI, unsigned OpNum, raw_ostream &O);
   void printPostIdxImm8s4Operand(const MCInst *MI, unsigned OpNum,
                                raw_ostream &O);