[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