Add support for the mips inline asm 'm' output modifier.
authorEric Christopher <echristo@apple.com>
Wed, 30 May 2012 19:05:19 +0000 (19:05 +0000)
committerEric Christopher <echristo@apple.com>
Wed, 30 May 2012 19:05:19 +0000 (19:05 +0000)
Patch by Jack Carter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157709 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsAsmPrinter.cpp
test/CodeGen/Mips/inlineasm-operand-code.ll

index 6ed0513ac15f9c6b22d5081b146f7e9fc22a78de..ed8a1871a1f57cfd9017f1496c5aaab031fb56c3 100644 (file)
@@ -377,6 +377,11 @@ bool MipsAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
         return true;
       O << MO.getImm();
       return false;
+    case 'm': // decimal const int minus 1
+      if ((MO.getType()) != MachineOperand::MO_Immediate)
+        return true;
+      O << MO.getImm() - 1;
+      return false;
     }
   }
 
index 92abf84cc7e911a3442184914d45474b535d8e95..2dcc10def2f596cd7f0610ff59a3119e9418c9ff 100644 (file)
@@ -23,5 +23,11 @@ entry:
 ;CHECK:        #NO_APP
   tail call i32 asm sideeffect "addi $0,$1,${2:d}", "=r,r,I"(i32 7, i32 -3) nounwind
 
+; m with -3
+;CHECK:        #APP
+;CHECK:        addi ${{[0-9]+}},${{[0-9]+}},-4
+;CHECK:        #NO_APP
+  tail call i32 asm sideeffect "addi $0,$1,${2:m}", "=r,r,I"(i32 7, i32 -3) nounwind
+
   ret i32 0
 }