forked from OSchip/llvm-project
The inline asm operand modifier 'n' is suppose
to be generic across architectures. It has the following description in the gnu sources: Negate the immediate constant Several Architectures such as x86 have local implementations of operand modifier 'n' which go beyond the above description slightly. This won't affect them. Affected files: lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Added 'n' to the switch cases. test/CodeGen/Generic/asm-large-immediate.ll Generic compiled test (x86 for me) test/CodeGen/Mips/asm-large-immediate.ll Mips compiled version of the generic one Contributer: Jack Carter llvm-svn: 158939
This commit is contained in:
parent
25cb4acdc2
commit
c457f62033
|
@ -420,10 +420,15 @@ bool AsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
|
|||
default:
|
||||
return true; // Unknown modifier.
|
||||
case 'c': // Substitute immediate value without immediate syntax
|
||||
if ((MO.getType()) != MachineOperand::MO_Immediate)
|
||||
if (MO.getType() != MachineOperand::MO_Immediate)
|
||||
return true;
|
||||
O << MO.getImm();
|
||||
return false;
|
||||
case 'n': // Negate the immediate constant.
|
||||
if (MO.getType() != MachineOperand::MO_Immediate)
|
||||
return true;
|
||||
O << -MO.getImm();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
; RUN: llc < %s | grep 68719476738
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
|
||||
define void @test() {
|
||||
entry:
|
||||
; CHECK: /* result: 68719476738 */
|
||||
tail call void asm sideeffect "/* result: ${0:c} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 )
|
||||
; CHECK: /* result: -68719476738 */
|
||||
tail call void asm sideeffect "/* result: ${0:n} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 )
|
||||
ret void
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
; RUNx: llc -march=mipsel < %s | grep 68719476738
|
||||
|
||||
; RUN: llc -march=mipsel < %s | FileCheck %s
|
||||
define void @test() {
|
||||
entry:
|
||||
; CHECK: /* result: 68719476738 */
|
||||
tail call void asm sideeffect "/* result: ${0:c} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 )
|
||||
; CHECK: /* result: -68719476738 */
|
||||
tail call void asm sideeffect "/* result: ${0:n} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 )
|
||||
ret void
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue