diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-04-05 20:20:30 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-04-05 20:20:30 +0000 |
commit | 57b0fb7850bcfc676bf2927fdf530024454c89c6 (patch) | |
tree | 2c3d27f9d53f104080b65eb1e88aafa4ec7ae067 | |
parent | 3520019931c2bad615c35edcb943cd1e8582ebac (diff) |
Fix one more batch of X86 tests to be register allocation dependent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128919 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/CodeGen/X86/2008-02-22-ReMatBug.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-03-18-CoalescerBug.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-09-18-inline-asm-2.ll | 6 | ||||
-rw-r--r-- | test/CodeGen/X86/2009-03-16-SpillerBug.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll | 5 | ||||
-rw-r--r-- | test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll | 8 | ||||
-rw-r--r-- | test/CodeGen/X86/abi-isel.ll | 5575 |
9 files changed, 2811 insertions, 2797 deletions
diff --git a/test/CodeGen/X86/2008-02-22-ReMatBug.ll b/test/CodeGen/X86/2008-02-22-ReMatBug.ll index a91ac27f98..8f4d353f28 100644 --- a/test/CodeGen/X86/2008-02-22-ReMatBug.ll +++ b/test/CodeGen/X86/2008-02-22-ReMatBug.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -march=x86 -stats |& grep {Number of re-materialization} | grep 2 +; RUN: llc < %s -march=x86 -stats -regalloc=linearscan |& grep {Number of re-materialization} | grep 2 ; rdar://5761454 %struct.quad_struct = type { i32, i32, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct* } diff --git a/test/CodeGen/X86/2008-03-18-CoalescerBug.ll b/test/CodeGen/X86/2008-03-18-CoalescerBug.ll index 3ae5026197..33d658ca01 100644 --- a/test/CodeGen/X86/2008-03-18-CoalescerBug.ll +++ b/test/CodeGen/X86/2008-03-18-CoalescerBug.ll @@ -1,5 +1,5 @@ -; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim | grep movss | count 1 -; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -stats |& grep {Number of re-materialization} | grep 1 +; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -regalloc=linearscan | grep movss | count 1 +; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -regalloc=linearscan -stats |& grep {Number of re-materialization} | grep 1 %struct..0objc_object = type opaque %struct.OhBoy = type { } 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 eadfda0394..947a1f1717 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,7 @@ -; RUN: llc < %s -march=x86 | grep "#%ebp %edi %ebx 8(%esi) %eax %dl" -; RUN: llc < %s -march=x86 -regalloc=fast | grep "#%ebx %esi %edi 8(%ebp) %eax %dl" +; RUN: llc < %s -march=x86 -regalloc=linearscan | grep "#%ebp %edi %ebx 8(%esi) %eax %dl" +; RUN: llc < %s -march=x86 -regalloc=fast | grep "#%ebx %esi %edi 8(%ebp) %eax %dl" +; RUN: llc < %s -march=x86 -regalloc=basic | grep "#%ebp %esi %edx 8(%edi) %eax %bl" +; RUN: llc < %s -march=x86 -regalloc=greedy | grep "#%edx %edi %ebp 8(%esi) %eax %bl" ; 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 diff --git a/test/CodeGen/X86/2009-03-16-SpillerBug.ll b/test/CodeGen/X86/2009-03-16-SpillerBug.ll index 80e7639e7c..951e191cd2 100644 --- a/test/CodeGen/X86/2009-03-16-SpillerBug.ll +++ b/test/CodeGen/X86/2009-03-16-SpillerBug.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=i386-apple-darwin -stats |& grep virtregrewriter | not grep {stores unfolded} +; RUN: llc < %s -mtriple=i386-apple-darwin -regalloc=linearscan -stats |& grep virtregrewriter | not grep {stores unfolded} ; rdar://6682365 ; Do not clobber a register if another spill slot is available in it and it's marked "do not clobber". diff --git a/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll b/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll index 7325f4ae12..f6ac2ba606 100644 --- a/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll +++ b/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll @@ -11,7 +11,7 @@ ; Move return address (76(%esp)) to a temporary register (%ebp) ; CHECK: movl 76(%esp), [[REGISTER:%[a-z]+]] ; Overwrite return addresss -; CHECK: movl %ebx, 76(%esp) +; CHECK: movl [[EBX:%[a-z]+]], 76(%esp) ; Move return address from temporary register (%ebp) to new stack location (60(%esp)) ; CHECK: movl [[REGISTER]], 60(%esp) diff --git a/test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll b/test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll index fa3d5fbcdc..69787c78cf 100644 --- a/test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll +++ b/test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll @@ -31,18 +31,19 @@ entry: ret void } +; CHECK: ti64 define void @ti64(double %a, double %b) nounwind { entry: %tmp1 = bitcast double %a to <1 x i64> %tmp2 = bitcast double %b to <1 x i64> %tmp3 = add <1 x i64> %tmp1, %tmp2 -; CHECK: addq %rax, %rcx +; CHECK: addq store <1 x i64> %tmp3, <1 x i64>* null ret void } ; MMX intrinsics calls get us MMX instructions. - +; CHECK: ti8a define void @ti8a(double %a, double %b) nounwind { entry: %tmp1 = bitcast double %a to x86_mmx diff --git a/test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll b/test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll index 323925c7ff..5accfd74c0 100644 --- a/test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll +++ b/test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll @@ -22,8 +22,8 @@ while.end: ; preds = %while.cond, %entry %conv = zext i32 %v to i64 ; <i64> [#uses=1] %conv14 = zext i32 %div11 to i64 ; <i64> [#uses=1] ; Verify that we don't clobber %eax after putting the imulq result in %rax -; CHECK: imulq %r{{.}}x, %r[[RES:.]]x -; CHECK-NOT: movl {{.*}}, %e[[RES]]x +; CHECK: imulq %r{{.}}x, %r[[RES:..]] +; CHECK-NOT: movl {{.*}}, %e[[RES]] ; CHECK: div %mul = mul i64 %conv14, %conv ; <i64> [#uses=1] %conv16 = zext i32 %div to i64 ; <i64> [#uses=1] diff --git a/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll b/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll index 38c3862001..f12001cfb6 100644 --- a/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll +++ b/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll @@ -19,8 +19,8 @@ entry: } ; CHECK: movq ___stack_chk_guard@GOTPCREL(%rip), %rax -; CHECK: movb 38(%rsp), %bl -; CHECK: movb 8(%rsp), %dl -; CHECK: movb %dl, 8(%rsp) -; CHECK: movb %bl, 38(%rsp) +; CHECK: movb 38(%rsp), [[R0:%.+]] +; CHECK: movb 8(%rsp), [[R1:%.+]] +; CHECK: movb [[R1]], 8(%rsp) +; CHECK: movb [[R0]], 38(%rsp) ; CHECK: callq ___stack_chk_fail diff --git a/test/CodeGen/X86/abi-isel.ll b/test/CodeGen/X86/abi-isel.ll index 5b4d79fa22..7535e07b80 100644 --- a/test/CodeGen/X86/abi-isel.ll +++ b/test/CodeGen/X86/abi-isel.ll @@ -12,6 +12,17 @@ ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC +; RUN: llc < %s -asm-verbose=0 -regalloc=basic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC + @src = external global [131072 x i32] @dst = external global [131072 x i32] @xsrc = external global [32 x i32] @@ -38,68 +49,68 @@ entry: ret void ; LINUX-64-STATIC: foo00: -; LINUX-64-STATIC: movl src(%rip), %eax -; LINUX-64-STATIC: movl %eax, dst +; LINUX-64-STATIC: movl src(%rip), [[EAX:%e.x]] +; LINUX-64-STATIC: movl [[EAX]], dst ; LINUX-64-STATIC: ret ; LINUX-32-STATIC: foo00: -; LINUX-32-STATIC: movl src, %eax -; LINUX-32-STATIC-NEXT: movl %eax, dst +; LINUX-32-STATIC: movl src, [[EAX:%e.x]] +; LINUX-32-STATIC-NEXT: movl [[EAX]], dst ; LINUX-32-STATIC-NEXT: ret ; LINUX-32-PIC: foo00: -; LINUX-32-PIC: movl src, %eax -; LINUX-32-PIC-NEXT: movl %eax, dst +; LINUX-32-PIC: movl src, [[EAX:%e.x]] +; LINUX-32-PIC-NEXT: movl [[EAX]], dst ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: foo00: -; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movl (%rax), %eax -; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movl %eax, (%rcx) +; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r..]] +; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e..]] +; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r..]] +; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _foo00: -; DARWIN-32-STATIC: movl _src, %eax -; DARWIN-32-STATIC-NEXT: movl %eax, _dst +; DARWIN-32-STATIC: movl _src, [[EAX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dst ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _foo00: -; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e..]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e..]] +; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e..]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _foo00: ; DARWIN-32-PIC: calll L0$pb ; DARWIN-32-PIC-NEXT: L0$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl [[EAX:%e..]] +; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb([[EAX]]), [[ECX:%e..]] +; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e..]] +; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb([[EAX]]), [[EAX:%e..]] +; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _foo00: -; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movl (%rax), %eax -; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]] +; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e..]] +; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]] +; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _foo00: -; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax -; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]] +; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e..]] +; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]] +; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _foo00: -; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movl (%rax), %eax -; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]] +; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e..]] +; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]] +; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -110,68 +121,68 @@ entry: ret void ; LINUX-64-STATIC: fxo00: -; LINUX-64-STATIC: movl xsrc(%rip), %eax -; LINUX-64-STATIC: movl %eax, xdst +; LINUX-64-STATIC: movl xsrc(%rip), [[EAX:%e.x]] +; LINUX-64-STATIC: movl [[EAX]], xdst ; LINUX-64-STATIC: ret ; LINUX-32-STATIC: fxo00: -; LINUX-32-STATIC: movl xsrc, %eax -; LINUX-32-STATIC-NEXT: movl %eax, xdst +; LINUX-32-STATIC: movl xsrc, [[EAX:%e.x]] +; LINUX-32-STATIC-NEXT: movl [[EAX]], xdst ; LINUX-32-STATIC-NEXT: ret ; LINUX-32-PIC: fxo00: -; LINUX-32-PIC: movl xsrc, %eax -; LINUX-32-PIC-NEXT: movl %eax, xdst +; LINUX-32-PIC: movl xsrc, [[EAX:%e.x]] +; LINUX-32-PIC-NEXT: movl [[EAX]], xdst ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: fxo00: -; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movl (%rax), %eax -; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movl %eax, (%rcx) +; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _fxo00: -; DARWIN-32-STATIC: movl _xsrc, %eax -; DARWIN-32-STATIC-NEXT: movl %eax, _xdst +; DARWIN-32-STATIC: movl _xsrc, [[EAX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl [[EAX]], _xdst ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _fxo00: -; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _fxo00: ; DARWIN-32-PIC: calll L1$pb ; DARWIN-32-PIC-NEXT: L1$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb([[EAX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _fxo00: -; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movl (%rax), %eax -; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _fxo00: -; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax -; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _fxo00: -; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movl (%rax), %eax -; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -192,9 +203,9 @@ entry: ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: foo01: -; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movq %rax, (%rcx) +; LINUX-64-PIC: movq dst@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _foo01: @@ -202,36 +213,36 @@ entry: ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _foo01: -; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _foo01: ; DARWIN-32-PIC: calll L2$pb ; DARWIN-32-PIC-NEXT: L2$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl +; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb( +; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb( +; DARWIN-32-PIC-NEXT: movl ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _foo01: -; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _foo01: -; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _foo01: -; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -252,9 +263,9 @@ entry: ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: fxo01: -; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movq %rax, (%rcx) +; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _fxo01: @@ -262,36 +273,36 @@ entry: ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _fxo01: -; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _fxo01: ; DARWIN-32-PIC: calll L3$pb ; DARWIN-32-PIC-NEXT: L3$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl [[R0:%e..]] +; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb([[R0]]), [[R1:%e..]] +; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb([[R0]]), [[R2:%e..]] +; DARWIN-32-PIC-NEXT: movl [[R1:%e..]], ([[R2]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _fxo01: -; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _fxo01: -; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _fxo01: -; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) +; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -308,72 +319,72 @@ entry: ; LINUX-64-STATIC: ret ; LINUX-32-STATIC: foo02: -; LINUX-32-STATIC: movl src, %eax -; LINUX-32-STATIC-NEXT: movl ptr, %ecx -; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) +; LINUX-32-STATIC: movl src, [[EAX:%e.x]] +; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]] +; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]]) ; LINUX-32-STATIC-NEXT: ret ; LINUX-32-PIC: foo02: -; LINUX-32-PIC: movl src, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC: movl src, [[EAX:%e.x]] +; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]] +; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]]) ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: foo02: -; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movl (%rax), %eax -; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movq (%rcx), %rcx -; LINUX-64-PIC-NEXT: movl %eax, (%rcx) +; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _foo02: -; DARWIN-32-STATIC: movl _src, %eax -; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx -; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-STATIC: movl _src, [[EAX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _foo02: -; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _foo02: ; DARWIN-32-PIC: calll L4$pb ; DARWIN-32-PIC-NEXT: L4$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl (%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl [[R0:%e..]] +; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb([[R0]]), [[R1:%e..]] +; DARWIN-32-PIC-NEXT: movl ([[R1]]), [[R2:%e..]] +; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb([[R0]]), [[R3:%e..]] +; DARWIN-32-PIC-NEXT: movl ([[R3]]), [[R4:%e..]] +; DARWIN-32-PIC-NEXT: movl [[R2]], ([[R4]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _foo02: -; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movl (%rax), %eax -; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _foo02: -; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax -; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _foo02: -; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movl (%rax), %eax -; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -389,73 +400,73 @@ entry: ; LINUX-64-STATIC: ret ; LINUX-32-STATIC: fxo02: -; LINUX-32-STATIC: movl xsrc, %eax -; LINUX-32-STATIC-NEXT: movl ptr, %ecx -; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) +; LINUX-32-STATIC: movl xsrc, [[EAX:%e.x]] +; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]] +; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]]) ; LINUX-32-STATIC-NEXT: ret ret void ; LINUX-32-PIC: fxo02: -; LINUX-32-PIC: movl xsrc, %eax -; LINUX-32-PIC-NEXT: movl ptr, %ecx -; LINUX-32-PIC-NEXT: movl %eax, (%ecx) +; LINUX-32-PIC: movl xsrc, [[EAX:%e.x]] +; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]] +; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]]) ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: fxo02: -; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movl (%rax), %eax -; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movq (%rcx), %rcx -; LINUX-64-PIC-NEXT: movl %eax, (%rcx) +; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _fxo02: -; DARWIN-32-STATIC: movl _xsrc, %eax -; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx -; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-STATIC: movl _xsrc, [[EAX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _fxo02: -; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax -; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax -; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx -; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) +; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]]) ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _fxo02: ; DARWIN-32-PIC: calll L5$pb ; DARWIN-32-PIC-NEXT: L5$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx -; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax -; DARWIN-32-PIC-NEXT: movl (%eax), %eax -; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) +; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb([[EAX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _fxo02: -; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-STATIC-NEXT: movl (%rax), %eax -; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _fxo02: -; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax -; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _fxo02: -; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax -; DARWIN-64-PIC-NEXT: movl (%rax), %eax -; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx -; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx -; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) +; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]] +; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; DARWIN-64-PIC-NEXT: ret } @@ -465,58 +476,58 @@ entry: store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32 ret void ; LINUX-64-STATIC: foo03: -; LINUX-64-STATIC: movl dsrc(%rip), %eax -; LINUX-64-STATIC: movl %eax, ddst +; LINUX-64-STATIC: movl dsrc(%rip), [[EAX:%e.x]] +; LINUX-64-STATIC: movl [[EAX]], ddst ; LINUX-64-STATIC: ret ; LINUX-32-STATIC: foo03: -; LINUX-32-STATIC: movl dsrc, %eax -; LINUX-32-STATIC-NEXT: movl %eax, ddst +; LINUX-32-STATIC: movl dsrc, [[EAX:%e.x]] +; LINUX-32-STATIC-NEXT: movl [[EAX]], ddst ; LINUX-32-STATIC-NEXT: ret ; LINUX-32-PIC: foo03: -; LINUX-32-PIC: movl dsrc, %eax -; LINUX-32-PIC-NEXT: movl %eax, ddst +; LINUX-32-PIC: movl dsrc, [[EAX:%e.x]] +; LINUX-32-PIC-NEXT: movl [[EAX]], ddst ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: foo03: -; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movl (%rax), %eax -; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movl %eax, (%rcx) +; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]] +; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _foo03: -; DARWIN-32-STATIC: movl _dsrc, %eax -; DARWIN-32-STATIC-NEXT: movl %eax, _ddst +; DARWIN-32-STATIC: movl _dsrc, [[EAX:%e.x]] +; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ddst ; DARWIN-32-STATIC-NEXT: ret ; DARWIN-32-DYNAMIC: _foo03: -; DARWIN-32-DYNAMIC: movl _dsrc, %eax -; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst +; DARWIN-32-DYNAMIC: movl _dsrc, [[EAX:%e.x]] +; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ddst ; DARWIN-32-DYNAMIC-NEXT: ret ; DARWIN-32-PIC: _foo03: ; DARWIN-32-PIC: calll L6$pb ; DARWIN-32-PIC-NEXT: L6$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax) +; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb([[EAX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl [[ECX]], _ddst-L6$pb([[EAX]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _foo03: -; DARWIN-64-STATIC: movl _dsrc(%rip), %eax -; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip) +; DARWIN-64-STATIC: movl _dsrc(%rip), [[EAX:%e.x]] +; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ddst(%rip) ; DARWIN-64-STATIC-NEXT: ret ; DARWIN-64-DYNAMIC: _foo03: -; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax -; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip) +; DARWIN-64-DYNAMIC: movl _dsrc(%rip), [[EAX:%e.x]] +; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ddst(%rip) ; DARWIN-64-DYNAMIC-NEXT: ret ; DARWIN-64-PIC: _foo03: -; DARWIN-64-PIC: movl _dsrc(%rip), %eax -; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip) +; DARWIN-64-PIC: movl _dsrc(%rip), [[EAX:%e.x]] +; DARWIN-64-PIC-NEXT: movl [[EAX]], _ddst(%rip) ; DARWIN-64-PIC-NEXT: ret } @@ -537,9 +548,9 @@ entry: ; LINUX-32-PIC-NEXT: ret ; LINUX-64-PIC: foo04: -; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax -; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx -; LINUX-64-PIC-NEXT: movq %rax, (%rcx) +; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), [[RAX:%r.x]] +; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]] +; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]]) ; LINUX-64-PIC-NEXT: ret ; DARWIN-32-STATIC: _foo04: @@ -553,24 +564,24 @@ entry: ; DARWIN-32-PIC: _foo04: ; DARWIN-32-PIC: calll L7$pb ; DARWIN-32-PIC-NEXT: L7$pb: -; DARWIN-32-PIC-NEXT: popl %eax -; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx -; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax) +; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]] +; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb([[EAX]]), [[ECX:%e.x]] +; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L7$pb([[EAX]]) ; DARWIN-32-PIC-NEXT: ret ; DARWIN-64-STATIC: _foo04: -; DARWIN-64-STATIC: leaq _ddst(%rip), %rax -; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) +; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]] +; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip) |