Add support for the mips 'x' inline asm modifier.
authorEric Christopher <echristo@apple.com>
Fri, 18 May 2012 17:39:35 +0000 (17:39 +0000)
committerEric Christopher <echristo@apple.com>
Fri, 18 May 2012 17:39:35 +0000 (17:39 +0000)
Patch by Jack Carter.

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

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

index e62da355eff10545ebedb29ed8cec4733efdb385..3fa773b856cc896d666046d15fe85995f8ef7573 100644 (file)
@@ -383,6 +383,11 @@ bool MipsAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
           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;
     }
   }
 
index 4568a8465856c6c33f05523608958b384bc2c010..63190fa5c42e790d6805a6437ec71979484010e9 100644 (file)
@@ -11,5 +11,11 @@ entry:
 ;CHECK:        #NO_APP
   tail call i32 asm sideeffect "addi $0,$1,${2:X}", "=r,r,I"(i32 7, i32 -3) nounwind
 
+; x with -3
+;CHECK:        #APP
+;CHECK:        addi ${{[0-9]+}},${{[0-9]+}},0xfffd
+;CHECK:        #NO_APP
+  tail call i32 asm sideeffect "addi $0,$1,${2:x}", "=r,r,I"(i32 7, i32 -3) nounwind
+
   ret i32 0
 }