Add support for the 'd' mips inline asm output modifier.
authorEric Christopher <echristo@apple.com>
Sat, 19 May 2012 00:51:56 +0000 (00:51 +0000)
committerEric Christopher <echristo@apple.com>
Sat, 19 May 2012 00:51:56 +0000 (00:51 +0000)
Patch by Jack Carter.

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

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

index 3fa773b856cc896d666046d15fe85995f8ef7573..d62df4dcc33cefdfa208bcb9134e861d286e99ff 100644 (file)
@@ -376,18 +376,23 @@ bool MipsAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
 
     const MachineOperand &MO = MI->getOperand(OpNum);
     switch (ExtraCode[0]) {
-      default:
-        return true;  // Unknown modifier.
-      case 'X': // hex const int
-        if ((MO.getType()) != MachineOperand::MO_Immediate)
-          return true;
-        O << "0x" << StringRef(utohexstr(MO.getImm())).lower();
-        return false;
-      case 'x': // hex const int (low 16 bits)
-        if ((MO.getType()) != MachineOperand::MO_Immediate)
-          return true;
-        O << "0x" << StringRef(utohexstr(MO.getImm() & 0xffff)).lower();
-        return false;
+    default:
+      return true;  // Unknown modifier.
+    case 'X': // hex const int
+      if ((MO.getType()) != MachineOperand::MO_Immediate)
+        return true;
+      O << "0x" << StringRef(utohexstr(MO.getImm())).lower();
+      return false;
+    case 'x': // hex const int (low 16 bits)
+      if ((MO.getType()) != MachineOperand::MO_Immediate)
+        return true;
+      O << "0x" << StringRef(utohexstr(MO.getImm() & 0xffff)).lower();
+      return false;
+    case 'd': // decimal const int
+      if ((MO.getType()) != MachineOperand::MO_Immediate)
+        return true;
+      O << MO.getImm();
+      return false;
     }
   }
 
index 63190fa5c42e790d6805a6437ec71979484010e9..92abf84cc7e911a3442184914d45474b535d8e95 100644 (file)
@@ -17,5 +17,11 @@ entry:
 ;CHECK:        #NO_APP
   tail call i32 asm sideeffect "addi $0,$1,${2:x}", "=r,r,I"(i32 7, i32 -3) nounwind
 
+; d with -3
+;CHECK:        #APP
+;CHECK:        addi ${{[0-9]+}},${{[0-9]+}},-3
+;CHECK:        #NO_APP
+  tail call i32 asm sideeffect "addi $0,$1,${2:d}", "=r,r,I"(i32 7, i32 -3) nounwind
+
   ret i32 0
 }