[llvm-commits] [llvm] r79484 - in /llvm/trunk: lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp test/CodeGen/X86/2009-08-19-inline-asm-a-modifier.ll

Chris Lattner clattner at apple.com
Wed Aug 19 16:06:03 PDT 2009


On Aug 19, 2009, at 3:44 PM, Dale Johannesen wrote:

> Author: johannes
> Date: Wed Aug 19 17:44:41 2009
> New Revision: 79484
>
> URL: http://llvm.org/viewvc/llvm-project?rev=79484&view=rev
> Log:
> Handle 'a' modifier in X86 asms.  PR 4742.

hi Dale,

Any reason not to make this be a FileCheck style test?  If you do  
that, you can merge it together with other tests as well.

Also, no reason to use 'else if' after a return, just use 'if'.

-Chris

> +++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Wed  
> Aug 19 17:44:41 2009
> @@ -620,6 +620,18 @@
>
>     switch (ExtraCode[0]) {
>     default: return true;  // Unknown modifier.
> +    case 'a': // This is an address.  Currently only 'i' and 'r'  
> are expected.
> +      if (MO.isImm()) {
> +        O << MO.getImm();
> +        return false;
> +      } else if (MO.isReg()) {
> +        O << '(';
> +        printOperand(MI, OpNo);
> +        O << ')';
> +        return false;
> +      }
> +      return true;
> +
>     case 'c': // Don't print "$" before a global var name or constant.
>       if (MO.isImm())
>         O << MO.getImm();
>
> Added: llvm/trunk/test/CodeGen/X86/2009-08-19-inline-asm-a-modifier.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2009-08-19-inline-asm-a-modifier.ll?rev=79484&view=auto
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/test/CodeGen/X86/2009-08-19-inline-asm-a-modifier.ll  
> (added)
> +++ llvm/trunk/test/CodeGen/X86/2009-08-19-inline-asm-a-modifier.ll  
> Wed Aug 19 17:44:41 2009
> @@ -0,0 +1,18 @@
> +; RUN: llvm-as < %s | llc | grep {%gs:6}
> +; RUN: llvm-as < %s | llc | grep {%gs:\\\(%*\\\)}
> +; ModuleID = 'asm.c'
> +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32- 
> i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64- 
> f80:128:128"
> +target triple = "i386-apple-darwin9.6"
> +
> +define i32 @main() nounwind {
> +entry:
> +  %asmtmp.i = tail call i16 asm "movw\09%gs:${1:a}, ${0:w}",  
> "=r,ir,~{dirflag},~{fpsr},~{flags}"(i32 6) nounwind ; <i16> [#uses=1]
> +  %0 = zext i16 %asmtmp.i to i32                  ; <i32> [#uses=1]
> +  ret i32 %0
> +}
> +
> +define zeroext i16 @readgsword2(i32 %address) nounwind {
> +entry:
> +  %asmtmp = tail call i16 asm "movw\09%gs:${1:a}, ${0:w}",  
> "=r,ir,~{dirflag},~{fpsr},~{flags}"(i32 %address) nounwind ; <i16>  
> [#uses=1]
> +  ret i16 %asmtmp
> +}
>
>
> _______________________________________________
> 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