forked from OSchip/llvm-project
Add support for the 'd' mips inline asm output modifier.
Patch by Jack Carter. llvm-svn: 157093
This commit is contained in:
parent
7fa4e0fea6
commit
bc5d24999c
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue