[llvm-commits] [llvm] r158939 - in /llvm/trunk: lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp test/CodeGen/Generic/asm-large-immediate.ll test/CodeGen/Mips/asm-large-immediate.ll

NAKAMURA Takumi geek4civic at gmail.com
Fri Jun 22 06:43:29 PDT 2012


It fails on ppc-linux. I have suppressed the failure in r158994.

...Takumi

2012/6/22 Jack Carter <jcarter at mips.com>:
> Author: jacksprat
> Date: Thu Jun 21 16:37:54 2012
> New Revision: 158939
>
> URL: http://llvm.org/viewvc/llvm-project?rev=158939&view=rev
> Log:
> 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
>
>
> Modified:
>    llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
>    llvm/trunk/test/CodeGen/Generic/asm-large-immediate.ll
>    llvm/trunk/test/CodeGen/Mips/asm-large-immediate.ll
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp?rev=158939&r1=158938&r2=158939&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Thu Jun 21 16:37:54 2012
> @@ -420,10 +420,15 @@
>     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;
>
> Modified: llvm/trunk/test/CodeGen/Generic/asm-large-immediate.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Generic/asm-large-immediate.ll?rev=158939&r1=158938&r2=158939&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Generic/asm-large-immediate.ll (original)
> +++ llvm/trunk/test/CodeGen/Generic/asm-large-immediate.ll Thu Jun 21 16:37:54 2012
> @@ -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
>  }
>
>
> Modified: llvm/trunk/test/CodeGen/Mips/asm-large-immediate.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/asm-large-immediate.ll?rev=158939&r1=158938&r2=158939&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Mips/asm-large-immediate.ll (original)
> +++ llvm/trunk/test/CodeGen/Mips/asm-large-immediate.ll Thu Jun 21 16:37:54 2012
> @@ -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
>  }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list