diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-03-23 08:01:15 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-03-23 08:01:15 +0000 |
commit | fb11288109329cb736d9f49769581a0d0c23fe19 (patch) | |
tree | c2d5d369ef2db0b2fab9a7fc0aa4fbbb6a98a9c5 /test/CodeGen/X86 | |
parent | 7d6d4b360fb8c1895b57eeb1284e792f953ea7ee (diff) | |
download | llvm-fb11288109329cb736d9f49769581a0d0c23fe19.tar.gz llvm-fb11288109329cb736d9f49769581a0d0c23fe19.tar.bz2 llvm-fb11288109329cb736d9f49769581a0d0c23fe19.tar.xz |
Model inline asm constraint which ties an input to an output register as machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67512 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-09-18-inline-asm-2.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll | 3 | ||||
-rw-r--r-- | test/CodeGen/X86/inline-asm-2addr.ll | 9 |
4 files changed, 15 insertions, 5 deletions
diff --git a/test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll b/test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll index d49d5bf9f9..557d00c629 100644 --- a/test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll +++ b/test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll @@ -1,5 +1,5 @@ -; RUN: llvm-as < %s | llc | grep {a: %ecx %ecx} -; RUN: llvm-as < %s | llc | grep {b: %ecx %edx %ecx} +; RUN: llvm-as < %s | llc | grep {a:} | not grep ax +; RUN: llvm-as < %s | llc | grep {b:} | not grep ax ; PR2078 ; The clobber list says that "ax" is clobbered. Make sure that eax isn't ; allocated to the input/output register. diff --git a/test/CodeGen/X86/2008-09-18-inline-asm-2.ll b/test/CodeGen/X86/2008-09-18-inline-asm-2.ll index a5a526354a..62e3233f9b 100644 --- a/test/CodeGen/X86/2008-09-18-inline-asm-2.ll +++ b/test/CodeGen/X86/2008-09-18-inline-asm-2.ll @@ -1,5 +1,5 @@ -; RUN: llvm-as < %s | llc -march=x86 | grep "#%ebp %eax %edx 8(%esi) %ebx (%edi)" -; RUN: llvm-as < %s | llc -march=x86 -regalloc=local | grep "#%ecx %eax %edx 8(%edi) %ebx (%esi)" +; RUN: llvm-as < %s | llc -march=x86 | grep "#%ebp %edi %esi 8(%edx) %eax (%ebx)" +; RUN: llvm-as < %s | llc -march=x86 -regalloc=local | grep "#%edi %edx %ebp 8(%ebx) %eax (%esi)" ; The 1st, 2nd, 3rd and 5th registers above must all be different. The registers ; referenced in the 4th and 6th operands must not be the same as the 1st or 5th ; operand. There are many combinations that work; this is what llc puts out now. diff --git a/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll b/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll index 6442ac7c76..c7fdfb2692 100644 --- a/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll +++ b/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll @@ -1,5 +1,6 @@ -; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | %prcontext End 1 | grep {movl.*%ecx} +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | %prcontext End 2 | grep mov ; PR3149 +; Make sure the copy after inline asm is not coalesced away. @"\01LC" = internal constant [7 x i8] c"n0=%d\0A\00" ; <[7 x i8]*> [#uses=1] @llvm.used = appending global [1 x i8*] [ i8* bitcast (i32 (i64, i64)* @umoddi3 to i8*) ], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0] diff --git a/test/CodeGen/X86/inline-asm-2addr.ll b/test/CodeGen/X86/inline-asm-2addr.ll new file mode 100644 index 0000000000..119495372a --- /dev/null +++ b/test/CodeGen/X86/inline-asm-2addr.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=x86-64 | grep movq | count 1 + +define i64 @t(i64 %a, i64 %b) nounwind ssp { +entry: + %asmtmp = tail call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i64 %a) nounwind ; <i64> [#uses=1] + %asmtmp1 = tail call i64 asm "rorq $1,$0", "=r,J,0,~{dirflag},~{fpsr},~{flags},~{cc}"(i32 1, i64 %b) nounwind ; <i64> [#uses=1] + %0 = add i64 %asmtmp1, %asmtmp ; <i64> [#uses=1] + ret i64 %0 +} |