diff options
author | Eric Christopher <echristo@apple.com> | 2012-05-18 17:39:35 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-05-18 17:39:35 +0000 |
commit | 9ca26cfb5fb5b334d886a0ca211220a48f34b00d (patch) | |
tree | 451fc6667061fbe828562a159be821d3d33e962d | |
parent | d78d7b05ae3c42e228f41132090161e753bc103a (diff) | |
download | bcm5719-llvm-9ca26cfb5fb5b334d886a0ca211220a48f34b00d.tar.gz bcm5719-llvm-9ca26cfb5fb5b334d886a0ca211220a48f34b00d.zip |
Add support for the mips 'x' inline asm modifier.
Patch by Jack Carter.
llvm-svn: 157057
-rw-r--r-- | llvm/lib/Target/Mips/MipsAsmPrinter.cpp | 5 | ||||
-rw-r--r-- | llvm/test/CodeGen/Mips/inlineasm-operand-code.ll | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp index e62da355eff..3fa773b856c 100644 --- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp +++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp @@ -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; } } diff --git a/llvm/test/CodeGen/Mips/inlineasm-operand-code.ll b/llvm/test/CodeGen/Mips/inlineasm-operand-code.ll index 4568a846585..63190fa5c42 100644 --- a/llvm/test/CodeGen/Mips/inlineasm-operand-code.ll +++ b/llvm/test/CodeGen/Mips/inlineasm-operand-code.ll @@ -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 } |