summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r--test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll7
-rw-r--r--test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll4
-rw-r--r--test/CodeGen/X86/2007-05-05-Personality.ll5
-rw-r--r--test/CodeGen/X86/2007-07-03-GR64ToVR64.ll8
-rw-r--r--test/CodeGen/X86/2007-07-18-Vector-Extract.ll6
-rw-r--r--test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll4
-rw-r--r--test/CodeGen/X86/2007-09-27-LDIntrinsics.ll4
-rw-r--r--test/CodeGen/X86/2008-02-22-ReMatBug.ll2
-rw-r--r--test/CodeGen/X86/2008-03-18-CoalescerBug.ll4
-rw-r--r--test/CodeGen/X86/2008-04-02-unnamedEH.ll2
-rw-r--r--test/CodeGen/X86/2008-04-16-ReMatBug.ll2
-rw-r--r--test/CodeGen/X86/2008-07-11-SpillerBug.ll1
-rw-r--r--test/CodeGen/X86/2008-07-19-movups-spills.ll6
-rw-r--r--test/CodeGen/X86/2008-08-05-SpillerBug.ll44
-rw-r--r--test/CodeGen/X86/2008-09-18-inline-asm-2.ll6
-rw-r--r--test/CodeGen/X86/2008-12-12-PrivateEHSymbol.ll6
-rw-r--r--test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll2
-rw-r--r--test/CodeGen/X86/2009-03-11-CoalescerBug.ll85
-rw-r--r--test/CodeGen/X86/2009-03-16-SpillerBug.ll2
-rw-r--r--test/CodeGen/X86/2009-04-20-LinearScanOpt.ll2
-rw-r--r--test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll2
-rw-r--r--test/CodeGen/X86/2009-04-24.ll2
-rw-r--r--test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll2
-rw-r--r--test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll5
-rw-r--r--test/CodeGen/X86/2010-05-03-CoalescerSubRegClobber.ll4
-rw-r--r--test/CodeGen/X86/2010-05-25-DotDebugLoc.ll1
-rw-r--r--test/CodeGen/X86/2010-05-26-DotDebugLoc.ll18
-rw-r--r--test/CodeGen/X86/2010-05-28-Crash.ll1
-rw-r--r--test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll3
-rw-r--r--test/CodeGen/X86/2010-08-04-StackVariable.ll4
-rw-r--r--test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll10
-rw-r--r--test/CodeGen/X86/2010-09-30-CMOV-JumpTable-PHI.ll2
-rw-r--r--test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll1
-rw-r--r--test/CodeGen/X86/2011-02-27-Fpextend.ll7
-rw-r--r--test/CodeGen/X86/2011-03-02-DAGCombiner.ll51
-rw-r--r--test/CodeGen/X86/2011-03-08-Sched-crash.ll56
-rw-r--r--test/CodeGen/X86/2011-03-09-Physreg-Coalescing.ll22
-rw-r--r--test/CodeGen/X86/2011-03-30-CreateFixedObjCrash.ll10
-rw-r--r--test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll65
-rw-r--r--test/CodeGen/X86/3dnow-intrinsics.ll297
-rw-r--r--test/CodeGen/X86/MachineSink-PHIUse.ll2
-rw-r--r--test/CodeGen/X86/SIMD/dg.exp5
-rw-r--r--test/CodeGen/X86/SIMD/notvunpcklpd.ll20
-rw-r--r--test/CodeGen/X86/SIMD/notvunpcklps.ll20
-rw-r--r--test/CodeGen/X86/SIMD/vunpcklpd.ll20
-rw-r--r--test/CodeGen/X86/SIMD/vunpcklps.ll20
-rw-r--r--test/CodeGen/X86/abi-isel.ll5575
-rw-r--r--test/CodeGen/X86/add.ll15
-rw-r--r--test/CodeGen/X86/adde-carry.ll26
-rw-r--r--test/CodeGen/X86/aliases.ll2
-rw-r--r--test/CodeGen/X86/alignment.ll6
-rw-r--r--test/CodeGen/X86/apm.ll11
-rw-r--r--test/CodeGen/X86/avoid-lea-scale2.ll4
-rw-r--r--test/CodeGen/X86/avx-intrinsics-x86.ll4
-rw-r--r--test/CodeGen/X86/bool-zext.ll35
-rw-r--r--test/CodeGen/X86/break-anti-dependencies.ll3
-rw-r--r--test/CodeGen/X86/byval.ll3
-rw-r--r--test/CodeGen/X86/byval2.ll27
-rw-r--r--test/CodeGen/X86/byval3.ll27
-rw-r--r--test/CodeGen/X86/byval4.ll27
-rw-r--r--test/CodeGen/X86/byval5.ll27
-rw-r--r--test/CodeGen/X86/call-push.ll16
-rw-r--r--test/CodeGen/X86/coalesce-esp.ll2
-rw-r--r--test/CodeGen/X86/coalescer-commute2.ll9
-rw-r--r--test/CodeGen/X86/coalescer-cross.ll6
-rw-r--r--test/CodeGen/X86/commute-two-addr.ll3
-rw-r--r--test/CodeGen/X86/constant-pool-remat-0.ll17
-rw-r--r--test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll10
-rw-r--r--test/CodeGen/X86/crash.ll18
-rw-r--r--test/CodeGen/X86/dbg-declare-arg.ll123
-rw-r--r--test/CodeGen/X86/dbg-file-name.ll19
-rw-r--r--test/CodeGen/X86/dbg-merge-loc-entry.ll3
-rw-r--r--test/CodeGen/X86/dbg-value-inlined-parameter.ll1
-rw-r--r--test/CodeGen/X86/dbg-value-location.ll1
-rw-r--r--test/CodeGen/X86/dbg-value-range.ll17
-rw-r--r--test/CodeGen/X86/divide-by-constant.ll11
-rw-r--r--test/CodeGen/X86/dyn-stackalloc.ll9
-rw-r--r--test/CodeGen/X86/fast-isel-gep.ll19
-rw-r--r--test/CodeGen/X86/fast-isel-i1.ll39
-rw-r--r--test/CodeGen/X86/fast-isel-shift-imm.ll8
-rw-r--r--test/CodeGen/X86/fast-isel-x86-64.ll262
-rw-r--r--test/CodeGen/X86/fast-isel-x86.ll17
-rw-r--r--test/CodeGen/X86/fast-isel.ll11
-rw-r--r--test/CodeGen/X86/fold-mul-lohi.ll5
-rw-r--r--test/CodeGen/X86/fold-pcmpeqd-0.ll16
-rw-r--r--test/CodeGen/X86/fold-pcmpeqd-2.ll17
-rw-r--r--test/CodeGen/X86/fold-zext-trunc.ll23
-rw-r--r--test/CodeGen/X86/fp-stack-compare.ll14
-rw-r--r--test/CodeGen/X86/fp-trunc.ll35
-rw-r--r--test/CodeGen/X86/global-sections-tls.ll2
-rw-r--r--test/CodeGen/X86/global-sections.ll6
-rw-r--r--test/CodeGen/X86/h-register-store.ll32
-rw-r--r--test/CodeGen/X86/h-registers-0.ll26
-rw-r--r--test/CodeGen/X86/h-registers-1.ll2
-rw-r--r--test/CodeGen/X86/hidden-vis-pic.ll2
-rw-r--r--test/CodeGen/X86/i64-mem-copy.ll8
-rw-r--r--test/CodeGen/X86/iabs.ll11
-rw-r--r--test/CodeGen/X86/isel-sink3.ll6
-rw-r--r--test/CodeGen/X86/lea-3.ll17
-rw-r--r--test/CodeGen/X86/lock-inst-encoding.ll5
-rw-r--r--test/CodeGen/X86/loop-strength-reduce4.ll6
-rw-r--r--test/CodeGen/X86/lsr-interesting-step.ll4
-rw-r--r--test/CodeGen/X86/lsr-quadratic-expand.ll22
-rw-r--r--test/CodeGen/X86/lsr-redundant-addressing.ll45
-rw-r--r--test/CodeGen/X86/lsr-reuse-trunc.ll5
-rw-r--r--test/CodeGen/X86/lsr-reuse.ll1
-rw-r--r--test/CodeGen/X86/machine-cse.ll4
-rw-r--r--test/CodeGen/X86/mcinst-lowering-cmp0.ll68
-rw-r--r--test/CodeGen/X86/mmx-copy-gprs.ll10
-rw-r--r--test/CodeGen/X86/narrow-shl-cst.ll101
-rw-r--r--test/CodeGen/X86/no-cfi.ll38
-rw-r--r--test/CodeGen/X86/optimize-max-3.ll4
-rw-r--r--test/CodeGen/X86/or-address.ll8
-rw-r--r--test/CodeGen/X86/peep-vector-extract-concat.ll7
-rw-r--r--test/CodeGen/X86/personality.ll22
-rw-r--r--test/CodeGen/X86/phi-bit-propagation.ll (renamed from test/CodeGen/X86/phi-constants.ll)20
-rw-r--r--test/CodeGen/X86/pic.ll2
-rw-r--r--test/CodeGen/X86/pmulld.ll12
-rw-r--r--test/CodeGen/X86/postra-licm.ll9
-rw-r--r--test/CodeGen/X86/pr2659.ll3
-rw-r--r--test/CodeGen/X86/pr3366.ll2
-rw-r--r--test/CodeGen/X86/pr3495-2.ll2
-rw-r--r--test/CodeGen/X86/pr3495.ll6
-rw-r--r--test/CodeGen/X86/pr9743.ll17
-rw-r--r--test/CodeGen/X86/pre-split1.ll2
-rw-r--r--test/CodeGen/X86/pre-split10.ll2
-rw-r--r--test/CodeGen/X86/pre-split11.ll2
-rw-r--r--test/CodeGen/X86/pre-split2.ll2
-rw-r--r--test/CodeGen/X86/pre-split3.ll2
-rw-r--r--test/CodeGen/X86/pre-split4.ll2
-rw-r--r--test/CodeGen/X86/pre-split5.ll2
-rw-r--r--test/CodeGen/X86/pre-split6.ll2
-rw-r--r--test/CodeGen/X86/pre-split7.ll2
-rw-r--r--test/CodeGen/X86/pre-split8.ll2
-rw-r--r--test/CodeGen/X86/pre-split9.ll2
-rw-r--r--test/CodeGen/X86/remat-scalar-zero.ll1
-rw-r--r--test/CodeGen/X86/scalar-min-max-fill-operand.ll13
-rw-r--r--test/CodeGen/X86/sext-i1.ll4
-rw-r--r--test/CodeGen/X86/shrink-compare.ll36
-rw-r--r--test/CodeGen/X86/sse-align-0.ll3
-rw-r--r--test/CodeGen/X86/sse-align-3.ll7
-rw-r--r--test/CodeGen/X86/sse-align-7.ll4
-rw-r--r--test/CodeGen/X86/sse-commute.ll2
-rw-r--r--test/CodeGen/X86/sse2.ll6
-rw-r--r--test/CodeGen/X86/sse3.ll12
-rw-r--r--test/CodeGen/X86/sse_reload_fold.ll5
-rw-r--r--test/CodeGen/X86/stdarg.ll3
-rw-r--r--test/CodeGen/X86/stride-nine-with-base-reg.ll5
-rw-r--r--test/CodeGen/X86/stride-reuse.ll5
-rw-r--r--test/CodeGen/X86/sub-with-overflow.ll22
-rw-r--r--test/CodeGen/X86/tail-opts.ll30
-rw-r--r--test/CodeGen/X86/tailcall-returndup-void.ll37
-rw-r--r--test/CodeGen/X86/tailcallbyval64.ll25
-rw-r--r--test/CodeGen/X86/tailcallstack64.ll12
-rw-r--r--test/CodeGen/X86/test-nofold.ll8
-rw-r--r--test/CodeGen/X86/twoaddr-lea.ll11
-rw-r--r--test/CodeGen/X86/umulo-64.ll28
-rw-r--r--test/CodeGen/X86/unaligned-load.ll4
-rw-r--r--test/CodeGen/X86/unknown-location.ll13
-rw-r--r--test/CodeGen/X86/unreachable-stack-protector.ll19
-rw-r--r--test/CodeGen/X86/v2f32.ll67
-rw-r--r--test/CodeGen/X86/vec_cast.ll4
-rw-r--r--test/CodeGen/X86/vec_set-8.ll7
-rw-r--r--test/CodeGen/X86/vec_shuffle-16.ll23
-rw-r--r--test/CodeGen/X86/vec_shuffle-17.ll7
-rw-r--r--test/CodeGen/X86/vec_uint_to_fp.ll11
-rw-r--r--test/CodeGen/X86/visibility.ll7
-rw-r--r--test/CodeGen/X86/widen_load-0.ll8
-rw-r--r--test/CodeGen/X86/win64_alloca_dynalloca.ll74
-rw-r--r--test/CodeGen/X86/win64_vararg.ll33
-rw-r--r--test/CodeGen/X86/win_chkstk.ll3
-rw-r--r--test/CodeGen/X86/x86-64-malloc.ll4
-rw-r--r--test/CodeGen/X86/zext-extract_subreg.ll1
-rw-r--r--test/CodeGen/X86/zext-sext.ll1
174 files changed, 5181 insertions, 3316 deletions
diff --git a/test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll b/test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll
index de226a140ad1e..3458550aa103c 100644
--- a/test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll
+++ b/test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll
@@ -1,5 +1,8 @@
-; RUN: llc %s -o - -march=x86-64 | grep {(%rdi,%rax,8)}
-; RUN: llc %s -o - -march=x86-64 | not grep {addq.*8}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK-NOT: {{addq.*8}}
+; CHECK: ({{%rdi|%rcx}},%rax,8)
+; CHECK-NOT: {{addq.*8}}
define void @foo(double* %y) nounwind {
entry:
diff --git a/test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll b/test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll
index a662dd58df574..11c0bf957983a 100644
--- a/test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll
+++ b/test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll
@@ -8,8 +8,8 @@ entry:
bb26: ; preds = %bb26, %entry
-; CHECK: addl %e
-; CHECK: adcl %e
+; CHECK: addl
+; CHECK: adcl
%i.037.0 = phi i32 [ 0, %entry ], [ %tmp25, %bb26 ] ; <i32> [#uses=3]
%sum.035.0 = phi <1 x i64> [ zeroinitializer, %entry ], [ %tmp22, %bb26 ] ; <<1 x i64>> [#uses=1]
diff --git a/test/CodeGen/X86/2007-05-05-Personality.ll b/test/CodeGen/X86/2007-05-05-Personality.ll
index a9b17d3b8f362..0f49d2e10cb9d 100644
--- a/test/CodeGen/X86/2007-05-05-Personality.ll
+++ b/test/CodeGen/X86/2007-05-05-Personality.ll
@@ -1,4 +1,7 @@
-; RUN: llc < %s -mtriple=i686-pc-linux-gnu -o - | grep zPL
+; RUN: llc < %s -mtriple=i686-pc-linux-gnu -o - | FileCheck %s
+
+; CHECK: .cfi_personality 0, __gnat_eh_personality
+; CHECK: .cfi_lsda 0, .Lexception0
@error = external global i8 ; <i8*> [#uses=2]
diff --git a/test/CodeGen/X86/2007-07-03-GR64ToVR64.ll b/test/CodeGen/X86/2007-07-03-GR64ToVR64.ll
index 1c5e6766fd6e9..187c3e4221b5d 100644
--- a/test/CodeGen/X86/2007-07-03-GR64ToVR64.ll
+++ b/test/CodeGen/X86/2007-07-03-GR64ToVR64.ll
@@ -1,6 +1,8 @@
-; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+mmx | grep {movd %rsi, %mm0}
-; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+mmx | grep {movd %rdi, %mm1}
-; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+mmx | grep {paddusw %mm0, %mm1}
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+mmx | FileCheck %s
+
+; CHECK: movd %rsi, [[MM0:%mm[0-9]+]]
+; CHECK: movd %rdi, [[MM1:%mm[0-9]+]]
+; CHECK: paddusw [[MM0]], [[MM1]]
@R = external global x86_mmx ; <x86_mmx*> [#uses=1]
diff --git a/test/CodeGen/X86/2007-07-18-Vector-Extract.ll b/test/CodeGen/X86/2007-07-18-Vector-Extract.ll
index 8625b27717382..6288c4a892c33 100644
--- a/test/CodeGen/X86/2007-07-18-Vector-Extract.ll
+++ b/test/CodeGen/X86/2007-07-18-Vector-Extract.ll
@@ -1,5 +1,7 @@
-; RUN: llc < %s -march=x86-64 -mattr=+sse | grep {movq (%rdi), %rax}
-; RUN: llc < %s -march=x86-64 -mattr=+sse | grep {movq 8(%rdi), %rax}
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse | FileCheck %s
+; CHECK: movq ([[A0:%rdi|%rcx]]), %rax
+; CHECK: movq 8([[A0]]), %rax
define i64 @foo_0(<2 x i64>* %val) {
entry:
%val12 = getelementptr <2 x i64>* %val, i32 0, i32 0 ; <i64*> [#uses=1]
diff --git a/test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll b/test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll
index c3403a0b4eebf..1e43272a84e80 100644
--- a/test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll
+++ b/test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll
@@ -1,4 +1,6 @@
-; RUN: llc < %s -march=x86 -mtriple=i686-apple-darwin | grep {isNullOrNil].eh"} | count 2
+; RUN: llc < %s -disable-cfi -march=x86 -mtriple=i686-apple-darwin | grep {isNullOrNil].eh"} | FileCheck %s
+
+; CHECK: "_-[NSString(local) isNullOrNil].eh":
%struct.NSString = type { }
%struct._objc__method_prototype_list = type opaque
diff --git a/test/CodeGen/X86/2007-09-27-LDIntrinsics.ll b/test/CodeGen/X86/2007-09-27-LDIntrinsics.ll
index 4d6971586c2af..b4a986ff77f9a 100644
--- a/test/CodeGen/X86/2007-09-27-LDIntrinsics.ll
+++ b/test/CodeGen/X86/2007-09-27-LDIntrinsics.ll
@@ -22,8 +22,8 @@ entry:
; CHECK: bar:
; CHECK: fldt 4(%esp)
; CHECK-NEXT: fld %st(0)
-; CHECK-NEXT: fmul %st(1)
-; CHECK-NEXT: fmulp %st(1)
+; CHECK-NEXT: fmul %st(1), %st(0)
+; CHECK-NEXT: fmulp
; CHECK-NEXT: ret
}
diff --git a/test/CodeGen/X86/2008-02-22-ReMatBug.ll b/test/CodeGen/X86/2008-02-22-ReMatBug.ll
index a91ac27f98ddd..8f4d353f28d3a 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 3ae5026197252..33d658ca01f9a 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-04-02-unnamedEH.ll b/test/CodeGen/X86/2008-04-02-unnamedEH.ll
index 27bbbaa2962da..ab8ec801b0494 100644
--- a/test/CodeGen/X86/2008-04-02-unnamedEH.ll
+++ b/test/CodeGen/X86/2008-04-02-unnamedEH.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s | FileCheck %s
+; RUN: llc < %s -disable-cfi | FileCheck %s
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-darwin8"
diff --git a/test/CodeGen/X86/2008-04-16-ReMatBug.ll b/test/CodeGen/X86/2008-04-16-ReMatBug.ll
index 6e8891bfd5b8b..bfe8ef53f5655 100644
--- a/test/CodeGen/X86/2008-04-16-ReMatBug.ll
+++ b/test/CodeGen/X86/2008-04-16-ReMatBug.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin | grep movw | not grep {, %e}
+; RUN: llc < %s -mtriple=i386-apple-darwin -disable-cgp-branch-opts | grep movw | not grep {, %e}
%struct.DBC_t = type { i32, i8*, i16, %struct.DBC_t*, i8*, i8*, i8*, i8*, i8*, %struct.DBC_t*, i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32*, i8, i16, %struct.DRVOPT*, i16 }
%struct.DRVOPT = type { i16, i32, i8, %struct.DRVOPT* }
diff --git a/test/CodeGen/X86/2008-07-11-SpillerBug.ll b/test/CodeGen/X86/2008-07-11-SpillerBug.ll
index d0023b28c6dd2..dee7415b08363 100644
--- a/test/CodeGen/X86/2008-07-11-SpillerBug.ll
+++ b/test/CodeGen/X86/2008-07-11-SpillerBug.ll
@@ -4,7 +4,6 @@
; CHECK: andl $65534, %
; CHECK-NEXT: movl %
; CHECK-NEXT: movzwl
-; CHECK-NEXT: movl $17
@g_5 = external global i16 ; <i16*> [#uses=2]
@g_107 = external global i16 ; <i16*> [#uses=1]
diff --git a/test/CodeGen/X86/2008-07-19-movups-spills.ll b/test/CodeGen/X86/2008-07-19-movups-spills.ll
index cf04dcf0f18c8..368af6d8abde6 100644
--- a/test/CodeGen/X86/2008-07-19-movups-spills.ll
+++ b/test/CodeGen/X86/2008-07-19-movups-spills.ll
@@ -1,7 +1,9 @@
-; RUN: llc < %s -mtriple=i686-pc-linux -realign-stack=1 -mattr=sse2 | grep movaps | count 75
-; RUN: llc < %s -mtriple=i686-pc-linux -realign-stack=0 -mattr=sse2 | grep movaps | count 75
+; RUN: llc < %s -mtriple=i686-pc-linux -realign-stack=1 -mattr=sse2 | grep movups | count 33
+; RUN: llc < %s -mtriple=i686-pc-linux -realign-stack=0 -mattr=sse2 | grep movups | count 33
; PR2539
; PR8969 - make 32-bit linux have a 16-byte aligned stack
+; Verify that movups is still generated with an aligned stack for the globals
+; that must be accessed unaligned
external global <4 x float>, align 1 ; <<4 x float>*>:0 [#uses=2]
external global <4 x float>, align 1 ; <<4 x float>*>:1 [#uses=1]
diff --git a/test/CodeGen/X86/2008-08-05-SpillerBug.ll b/test/CodeGen/X86/2008-08-05-SpillerBug.ll
deleted file mode 100644
index d9d95b595bee4..0000000000000
--- a/test/CodeGen/X86/2008-08-05-SpillerBug.ll
+++ /dev/null
@@ -1,44 +0,0 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah -disable-fp-elim -stats |& grep asm-printer | grep 55
-; PR2568
-
-@g_3 = external global i16 ; <i16*> [#uses=1]
-@g_5 = external global i32 ; <i32*> [#uses=3]
-
-declare i32 @func_15(i16 signext , i16 signext , i32) nounwind
-
-define void @func_9_entry_2E_ce(i8 %p_11) nounwind {
-newFuncRoot:
- br label %entry.ce
-
-entry.ce.ret.exitStub: ; preds = %entry.ce
- ret void
-
-entry.ce: ; preds = %newFuncRoot
- load i16* @g_3, align 2 ; <i16>:0 [#uses=1]
- icmp sgt i16 %0, 0 ; <i1>:1 [#uses=1]
- zext i1 %1 to i32 ; <i32>:2 [#uses=1]
- load i32* @g_5, align 4 ; <i32>:3 [#uses=4]
- icmp ugt i32 %2, %3 ; <i1>:4 [#uses=1]
- zext i1 %4 to i32 ; <i32>:5 [#uses=1]
- icmp eq i32 %3, 0 ; <i1>:6 [#uses=1]
- %.0 = select i1 %6, i32 1, i32 %3 ; <i32> [#uses=1]
- urem i32 1, %.0 ; <i32>:7 [#uses=2]
- sext i8 %p_11 to i16 ; <i16>:8 [#uses=1]
- trunc i32 %3 to i16 ; <i16>:9 [#uses=1]
- tail call i32 @func_15( i16 signext %8, i16 signext %9, i32 1 ) nounwind ; <i32>:10 [#uses=0]
- load i32* @g_5, align 4 ; <i32>:11 [#uses=1]
- trunc i32 %11 to i16 ; <i16>:12 [#uses=1]
- tail call i32 @func_15( i16 signext %12, i16 signext 1, i32 %7 ) nounwind ; <i32>:13 [#uses=0]
- sext i8 %p_11 to i32 ; <i32>:14 [#uses=1]
- %p_11.lobit = lshr i8 %p_11, 7 ; <i8> [#uses=1]
- %tmp = zext i8 %p_11.lobit to i32 ; <i32> [#uses=1]
- %tmp.not = xor i32 %tmp, 1 ; <i32> [#uses=1]
- %.015 = ashr i32 %14, %tmp.not ; <i32> [#uses=2]
- icmp eq i32 %.015, 0 ; <i1>:15 [#uses=1]
- %.016 = select i1 %15, i32 1, i32 %.015 ; <i32> [#uses=1]
- udiv i32 %7, %.016 ; <i32>:16 [#uses=1]
- icmp ult i32 %5, %16 ; <i1>:17 [#uses=1]
- zext i1 %17 to i32 ; <i32>:18 [#uses=1]
- store i32 %18, i32* @g_5, align 4
- br label %entry.ce.ret.exitStub
-}
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 eadfda0394ddf..947a1f17172cd 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/2008-12-12-PrivateEHSymbol.ll b/test/CodeGen/X86/2008-12-12-PrivateEHSymbol.ll
index e97b63db14d97..2e278118b7adc 100644
--- a/test/CodeGen/X86/2008-12-12-PrivateEHSymbol.ll
+++ b/test/CodeGen/X86/2008-12-12-PrivateEHSymbol.ll
@@ -1,7 +1,5 @@
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-unknown-linux-gnu | grep ^.L_Z1fv.eh
-; RUN: llc < %s -march=x86 -mtriple=i686-unknown-linux-gnu | grep ^.L_Z1fv.eh
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-apple-darwin9 | grep ^__Z1fv.eh
-; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin9 | grep ^__Z1fv.eh
+; RUN: llc < %s -disable-cfi -march=x86-64 -mtriple=x86_64-apple-darwin9 | grep ^__Z1fv.eh
+; RUN: llc < %s -disable-cfi -march=x86 -mtriple=i386-apple-darwin9 | grep ^__Z1fv.eh
define void @_Z1fv() {
entry:
diff --git a/test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll b/test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll
index 58a7f9fb75936..aba4bfcbf52f3 100644
--- a/test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll
+++ b/test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin8 -pre-alloc-split
+; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin8 -pre-alloc-split -regalloc=linearscan
define i32 @main() nounwind {
bb4.i.thread:
diff --git a/test/CodeGen/X86/2009-03-11-CoalescerBug.ll b/test/CodeGen/X86/2009-03-11-CoalescerBug.ll
deleted file mode 100644
index d5ba93e10495f..0000000000000
--- a/test/CodeGen/X86/2009-03-11-CoalescerBug.ll
+++ /dev/null
@@ -1,85 +0,0 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin9 -stats |& grep regcoalescing | grep commuting
-
-@lookupTable5B = external global [64 x i32], align 32 ; <[64 x i32]*> [#uses=1]
-@lookupTable3B = external global [16 x i32], align 32 ; <[16 x i32]*> [#uses=1]
-@disparity0 = external global i32 ; <i32*> [#uses=5]
-@disparity1 = external global i32 ; <i32*> [#uses=3]
-
-define i32 @calc(i32 %theWord, i32 %k) nounwind {
-entry:
- %0 = lshr i32 %theWord, 3 ; <i32> [#uses=1]
- %1 = and i32 %0, 31 ; <i32> [#uses=1]
- %2 = shl i32 %k, 5 ; <i32> [#uses=1]
- %3 = or i32 %1, %2 ; <i32> [#uses=1]
- %4 = and i32 %theWord, 7 ; <i32> [#uses=1]
- %5 = shl i32 %k, 3 ; <i32> [#uses=1]
- %6 = or i32 %5, %4 ; <i32> [#uses=1]
- %7 = getelementptr [64 x i32]* @lookupTable5B, i32 0, i32 %3 ; <i32*> [#uses=1]
- %8 = load i32* %7, align 4 ; <i32> [#uses=5]
- %9 = getelementptr [16 x i32]* @lookupTable3B, i32 0, i32 %6 ; <i32*> [#uses=1]
- %10 = load i32* %9, align 4 ; <i32> [#uses=5]
- %11 = and i32 %8, 65536 ; <i32> [#uses=1]
- %12 = icmp eq i32 %11, 0 ; <i1> [#uses=1]
- br i1 %12, label %bb1, label %bb
-
-bb: ; preds = %entry
- %13 = and i32 %8, 994 ; <i32> [#uses=1]
- %14 = load i32* @disparity0, align 4 ; <i32> [#uses=2]
- store i32 %14, i32* @disparity1, align 4
- br label %bb8
-
-bb1: ; preds = %entry
- %15 = lshr i32 %8, 18 ; <i32> [#uses=1]
- %16 = and i32 %15, 1 ; <i32> [#uses=1]
- %17 = load i32* @disparity0, align 4 ; <i32> [#uses=4]
- %18 = icmp eq i32 %16, %17 ; <i1> [#uses=1]
- %not = select i1 %18, i32 0, i32 994 ; <i32> [#uses=1]
- %.masked = and i32 %8, 994 ; <i32> [#uses=1]
- %result.1 = xor i32 %not, %.masked ; <i32> [#uses=2]
- %19 = and i32 %8, 524288 ; <i32> [#uses=1]
- %20 = icmp eq i32 %19, 0 ; <i1> [#uses=1]
- br i1 %20, label %bb7, label %bb6
-
-bb6: ; preds = %bb1
- %21 = xor i32 %17, 1 ; <i32> [#uses=2]
- store i32 %21, i32* @disparity1, align 4
- br label %bb8
-
-bb7: ; preds = %bb1
- store i32 %17, i32* @disparity1, align 4
- br label %bb8
-
-bb8: ; preds = %bb7, %bb6, %bb
- %22 = phi i32 [ %17, %bb7 ], [ %21, %bb6 ], [ %14, %bb ] ; <i32> [#uses=4]
- %result.0 = phi i32 [ %result.1, %bb7 ], [ %result.1, %bb6 ], [ %13, %bb ] ; <i32> [#uses=2]
- %23 = and i32 %10, 65536 ; <i32> [#uses=1]
- %24 = icmp eq i32 %23, 0 ; <i1> [#uses=1]
- br i1 %24, label %bb10, label %bb9
-
-bb9: ; preds = %bb8
- %25 = and i32 %10, 29 ; <i32> [#uses=1]
- %26 = or i32 %result.0, %25 ; <i32> [#uses=1]
- store i32 %22, i32* @disparity0, align 4
- ret i32 %26
-
-bb10: ; preds = %bb8
- %27 = lshr i32 %10, 18 ; <i32> [#uses=1]
- %28 = and i32 %27, 1 ; <i32> [#uses=1]
- %29 = icmp eq i32 %28, %22 ; <i1> [#uses=1]
- %not13 = select i1 %29, i32 0, i32 29 ; <i32> [#uses=1]
- %.masked20 = and i32 %10, 29 ; <i32> [#uses=1]
- %.pn = xor i32 %not13, %.masked20 ; <i32> [#uses=1]
- %result.3 = or i32 %.pn, %result.0 ; <i32> [#uses=2]
- %30 = and i32 %10, 524288 ; <i32> [#uses=1]
- %31 = icmp eq i32 %30, 0 ; <i1> [#uses=1]
- br i1 %31, label %bb17, label %bb16
-
-bb16: ; preds = %bb10
- %32 = xor i32 %22, 1 ; <i32> [#uses=1]
- store i32 %32, i32* @disparity0, align 4
- ret i32 %result.3
-
-bb17: ; preds = %bb10
- store i32 %22, i32* @disparity0, align 4
- ret i32 %result.3
-}
diff --git a/test/CodeGen/X86/2009-03-16-SpillerBug.ll b/test/CodeGen/X86/2009-03-16-SpillerBug.ll
index 80e7639e7c295..951e191cd2935 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/2009-04-20-LinearScanOpt.ll b/test/CodeGen/X86/2009-04-20-LinearScanOpt.ll
index fcb2ed07dc13e..f739216f825a0 100644
--- a/test/CodeGen/X86/2009-04-20-LinearScanOpt.ll
+++ b/test/CodeGen/X86/2009-04-20-LinearScanOpt.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=x86_64-apple-darwin10.0 -relocation-model=pic -disable-fp-elim -stats |& grep asm-printer | grep 82
+; RUN: llc < %s -mtriple=x86_64-apple-darwin10.0 -relocation-model=pic -disable-fp-elim -stats |& grep asm-printer | grep 77
; rdar://6802189
; Test if linearscan is unfavoring registers for allocation to allow more reuse
diff --git a/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll b/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
index 69f644f5834bd..620e0f3667405 100644
--- a/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
+++ b/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
@@ -1,5 +1,5 @@
; RUN: llc -mtriple=i386-apple-darwin10.0 -relocation-model=pic -asm-verbose=false \
-; RUN: -disable-fp-elim -mattr=-sse41,-sse3,+sse2 -post-RA-scheduler=false < %s | \
+; RUN: -disable-fp-elim -mattr=-sse41,-sse3,+sse2 -post-RA-scheduler=false -regalloc=linearscan < %s | \
; RUN: FileCheck %s
; rdar://6808032
diff --git a/test/CodeGen/X86/2009-04-24.ll b/test/CodeGen/X86/2009-04-24.ll
index dd8823574cde5..d6ed0c42230d4 100644
--- a/test/CodeGen/X86/2009-04-24.ll
+++ b/test/CodeGen/X86/2009-04-24.ll
@@ -1,6 +1,6 @@
; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu -regalloc=fast -relocation-model=pic > %t2
; RUN: grep {leaq.*TLSGD} %t2
-; RUN; grep {__tls_get_addr} %t2
+; RUN: grep {__tls_get_addr} %t2
; PR4004
@i = thread_local global i32 15
diff --git a/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll b/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll
index 7325f4ae12517..f6ac2ba606476 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 fa3d5fbcdc485..69787c78cfd62 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 323925c7ff68e..5accfd74c0a9f 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-05-25-DotDebugLoc.ll b/test/CodeGen/X86/2010-05-25-DotDebugLoc.ll
index f9bda7f1007e9..848af82da820b 100644
--- a/test/CodeGen/X86/2010-05-25-DotDebugLoc.ll
+++ b/test/CodeGen/X86/2010-05-25-DotDebugLoc.ll
@@ -1,4 +1,5 @@
; RUN: llc -march=x86-64 -O2 < %s | FileCheck %s
+; RUN: llc -march=x86-64 -O2 -regalloc=basic < %s | FileCheck %s
; Test to check .debug_loc support. This test case emits many debug_loc entries.
; CHECK: Loc expr size
diff --git a/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll b/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll
index 60171eb62973b..6600cc3cae4f6 100644
--- a/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll
+++ b/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll
@@ -1,6 +1,7 @@
; RUN: llc -O2 < %s | FileCheck %s
+; RUN: llc -O2 -regalloc=basic < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
-target triple = "x86_64-apple-darwin"
+target triple = "x86_64-apple-darwin10"
%struct.a = type { i32, %struct.a* }
@@ -55,12 +56,21 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
!29 = metadata !{i32 524299, metadata !9, i32 17, i32 0} ; [ DW_TAG_lexical_block ]
!30 = metadata !{i32 19, i32 0, metadata !29, null}
+; The variable bar:myvar changes registers after the first movq.
+; It is cobbered by popq %rbx
+; CHECK: movq
+; CHECK-NEXT: [[LABEL:Ltmp[0-9]*]]
+; CHECK: .loc 1 19 0
+; CHECK: popq
+; CHECK-NEXT: [[CLOBBER:Ltmp[0-9]*]]
+
+
; CHECK: Ldebug_loc0:
; CHECK-NEXT: .quad Lfunc_begin0
-; CHECK-NEXT: .quad Ltmp3
+; CHECK-NEXT: .quad [[LABEL]]
; CHECK-NEXT: .short 1
; CHECK-NEXT: .byte 85
-; CHECK-NEXT: .quad Ltmp3
-; CHECK-NEXT: .quad Ltmp6
+; CHECK-NEXT: .quad [[LABEL]]
+; CHECK-NEXT: .quad [[CLOBBER]]
; CHECK-NEXT: .short 1
; CHECK-NEXT: .byte 83
diff --git a/test/CodeGen/X86/2010-05-28-Crash.ll b/test/CodeGen/X86/2010-05-28-Crash.ll
index ad8546ef8ce8f..1a0da3177a229 100644
--- a/test/CodeGen/X86/2010-05-28-Crash.ll
+++ b/test/CodeGen/X86/2010-05-28-Crash.ll
@@ -1,4 +1,5 @@
; RUN: llc -mtriple=x86_64-apple-darwin < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-apple-darwin -regalloc=basic < %s | FileCheck %s
; Test to check separate label for inlined function argument.
define i32 @foo(i32 %y) nounwind optsize ssp {
diff --git a/test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll b/test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll
index 812d3720d6f56..a9c03ee563d88 100644
--- a/test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll
+++ b/test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll
@@ -1,4 +1,5 @@
-; RUN: llc -O2 < %s | FileCheck %s
+; RUN: llc -O2 < %s | FileCheck %s
+; RUN: llc -O2 -regalloc=basic < %s | FileCheck %s
; Test to check that unused argument 'this' is not undefined in debug info.
target triple = "x86_64-apple-darwin10.2"
diff --git a/test/CodeGen/X86/2010-08-04-StackVariable.ll b/test/CodeGen/X86/2010-08-04-StackVariable.ll
index edfd1b8687371..ba36fe7c12fd3 100644
--- a/test/CodeGen/X86/2010-08-04-StackVariable.ll
+++ b/test/CodeGen/X86/2010-08-04-StackVariable.ll
@@ -1,5 +1,5 @@
-; RUN: llc -O0 -mtriple=x86_64-apple-darwin < %s | grep DW_OP_fbreg
-; Use DW_OP_fbreg in variable's location expression if the variable is in a stack slot.
+; RUN: llc -O0 -mtriple=x86_64-apple-darwin < %s | grep DW_OP_breg7
+; Use DW_OP_breg7 in variable's location expression if the variable is in a stack slot.
%struct.SVal = type { i8*, i32 }
diff --git a/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll b/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll
index 8fe0309421e50..eaede30f9b552 100644
--- a/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll
+++ b/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll
@@ -18,9 +18,9 @@ entry:
ret i32 0
}
-; CHECK: movq ___stack_chk_guard@GOTPCREL(%rip), %rax
-; CHECK: movb 30(%rsp), %dl
-; CHECK: movb (%rsp), %sil
-; CHECK: movb %sil, (%rsp)
-; CHECK: movb %dl, 30(%rsp)
+; CHECK: movq ___stack_chk_guard@GOTPCREL(%rip)
+; 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/2010-09-30-CMOV-JumpTable-PHI.ll b/test/CodeGen/X86/2010-09-30-CMOV-JumpTable-PHI.ll
index cae81d086ea1a..73e996c5d5530 100644
--- a/test/CodeGen/X86/2010-09-30-CMOV-JumpTable-PHI.ll
+++ b/test/CodeGen/X86/2010-09-30-CMOV-JumpTable-PHI.ll
@@ -1,4 +1,4 @@
-; RUN: llc -verify-machineinstrs -cgp-critical-edge-splitting=0 -mcpu=i386 < %s
+; RUN: llc -verify-machineinstrs -mcpu=i386 < %s
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:32:32-n8:16:32"
target triple = "i386-pc-linux-gnu"
diff --git a/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll b/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll
index 973975b658a30..7f134113b2e3c 100644
--- a/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll
+++ b/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s | FileCheck %s
+; RUN: llc < %s -regalloc=basic | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin10.0.0"
diff --git a/test/CodeGen/X86/2011-02-27-Fpextend.ll b/test/CodeGen/X86/2011-02-27-Fpextend.ll
new file mode 100644
index 0000000000000..c12b9563b3050
--- /dev/null
+++ b/test/CodeGen/X86/2011-02-27-Fpextend.ll
@@ -0,0 +1,7 @@
+; RUN: llc -mtriple=x86_64-pc-linux < %s
+; PR9309
+
+define <4 x double> @f_fu(<4 x float>) nounwind {
+ %float2double.i = fpext <4 x float> %0 to <4 x double>
+ ret <4 x double> %float2double.i
+}
diff --git a/test/CodeGen/X86/2011-03-02-DAGCombiner.ll b/test/CodeGen/X86/2011-03-02-DAGCombiner.ll
new file mode 100644
index 0000000000000..be58cedfdaa74
--- /dev/null
+++ b/test/CodeGen/X86/2011-03-02-DAGCombiner.ll
@@ -0,0 +1,51 @@
+; RUN: llc < %s -march=x86-64
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-apple-darwin11.0.0"
+
+%0 = type { i8, [3 x i8] }
+%struct.anon = type { float, x86_fp80 }
+
+define i32 @main() nounwind ssp {
+entry:
+ %retval = alloca i32, align 4
+ %F = alloca %struct.anon, align 16
+ %K = alloca %0, align 4
+ store i32 0, i32* %retval
+ %0 = bitcast %0* %K to i32*
+ %1 = load i32* %0, align 4
+ %2 = and i32 %1, -121
+ %3 = or i32 %2, 32
+ store i32 %3, i32* %0, align 4
+ %4 = bitcast %0* %K to i32*
+ %5 = load i32* %4, align 4
+ %6 = lshr i32 %5, 3
+ %bf.clear = and i32 %6, 15
+ %conv = sitofp i32 %bf.clear to float
+ %f = getelementptr inbounds %struct.anon* %F, i32 0, i32 0
+ %tmp = load float* %f, align 4
+ %sub = fsub float %tmp, %conv
+ store float %sub, float* %f, align 4
+ %ld = getelementptr inbounds %struct.anon* %F, i32 0, i32 1
+ %tmp1 = load x86_fp80* %ld, align 16
+ %7 = bitcast %0* %K to i32*
+ %8 = load i32* %7, align 4
+ %9 = lshr i32 %8, 7
+ %bf.clear2 = and i32 %9, 1
+ %conv3 = uitofp i32 %bf.clear2 to x86_fp80
+ %sub4 = fsub x86_fp80 %conv3, %tmp1
+ %conv5 = fptoui x86_fp80 %sub4 to i32
+ %bf.value = and i32 %conv5, 1
+ %10 = bitcast %0* %K to i32*
+ %11 = and i32 %bf.value, 1
+ %12 = shl i32 %11, 7
+ %13 = load i32* %10, align 4
+ %14 = and i32 %13, -129
+ %15 = or i32 %14, %12
+ store i32 %15, i32* %10, align 4
+ %call = call i32 (...)* @iequals(i32 1841, i32 %bf.value, i32 0)
+ %16 = load i32* %retval
+ ret i32 %16
+}
+
+declare i32 @iequals(...)
diff --git a/test/CodeGen/X86/2011-03-08-Sched-crash.ll b/test/CodeGen/X86/2011-03-08-Sched-crash.ll
new file mode 100644
index 0000000000000..6329ae670e48a
--- /dev/null
+++ b/test/CodeGen/X86/2011-03-08-Sched-crash.ll
@@ -0,0 +1,56 @@
+; RUN: llc < %s
+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-n8:16:32"
+target triple = "i386-apple-darwin9.0.0"
+
+%0 = type { i32, i1 }
+
+declare %0 @llvm.umul.with.overflow.i32(i32, i32) nounwind readnone
+
+define linkonce_odr hidden void @_ZN2js5QueueINS_7SlotMap8SlotInfoEE6ensureEj(i8* nocapture %this, i32 %size) nounwind align 2 {
+ br i1 undef, label %14, label %1
+
+; <label>:1 ; preds = %0
+ br i1 undef, label %2, label %3
+
+; <label>:2 ; preds = %1
+ br label %3
+
+; <label>:3 ; preds = %2, %1
+ br i1 undef, label %13, label %4
+
+; <label>:4 ; preds = %3
+ %5 = tail call %0 @llvm.umul.with.overflow.i32(i32 undef, i32 16)
+ %6 = extractvalue %0 %5, 1
+ %7 = extractvalue %0 %5, 0
+ %.op = add i32 %7, 7
+ %.op.op = and i32 %.op, -8
+ %8 = select i1 %6, i32 0, i32 %.op.op
+ br i1 undef, label %10, label %9
+
+; <label>:9 ; preds = %4
+ br label %_ZnamRN7nanojit9AllocatorE.exit
+
+; <label>:10 ; preds = %4
+ %11 = tail call i8* @_ZN7nanojit9Allocator9allocSlowEmb(i8* undef, i32 %8, i1 zeroext false) nounwind
+ br label %_ZnamRN7nanojit9AllocatorE.exit
+
+_ZnamRN7nanojit9AllocatorE.exit: ; preds = %10, %9
+ br i1 false, label %._crit_edge, label %.lr.ph
+
+.lr.ph: ; preds = %_ZnamRN7nanojit9AllocatorE.exit
+ br label %12
+
+; <label>:12 ; preds = %12, %.lr.ph
+ br i1 undef, label %._crit_edge, label %12
+
+._crit_edge: ; preds = %12, %_ZnamRN7nanojit9AllocatorE.exit
+ br label %14
+
+; <label>:13 ; preds = %3
+ br label %14
+
+; <label>:14 ; preds = %13, %._crit_edge, %0
+ ret void
+}
+
+declare i8* @_ZN7nanojit9Allocator9allocSlowEmb(i8*, i32, i1 zeroext)
diff --git a/test/CodeGen/X86/2011-03-09-Physreg-Coalescing.ll b/test/CodeGen/X86/2011-03-09-Physreg-Coalescing.ll
new file mode 100644
index 0000000000000..e48edf7e30b4d
--- /dev/null
+++ b/test/CodeGen/X86/2011-03-09-Physreg-Coalescing.ll
@@ -0,0 +1,22 @@
+; RUN: llc -mcpu=yonah < %s
+; PR9438
+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:32:32-n8:16:32"
+target triple = "i386-unknown-freebsd9.0"
+
+; The 'call fastcc' ties down %ebx, %ecx, and %edx.
+; A MUL8r ties down %al, leaving no GR32_ABCD registers available.
+; The coalescer can easily overallocate physical registers,
+; and register allocation fails.
+
+declare fastcc i8* @save_string(i8* %d, i8* nocapture %s) nounwind
+
+define i32 @cvtchar(i8* nocapture %sp) nounwind {
+ %temp.i = alloca [2 x i8], align 1
+ %tmp1 = load i8* %sp, align 1
+ %div = udiv i8 %tmp1, 10
+ %rem = urem i8 %div, 10
+ %arrayidx.i = getelementptr inbounds [2 x i8]* %temp.i, i32 0, i32 0
+ store i8 %rem, i8* %arrayidx.i, align 1
+ %call.i = call fastcc i8* @save_string(i8* %sp, i8* %arrayidx.i) nounwind
+ ret i32 undef
+}
diff --git a/test/CodeGen/X86/2011-03-30-CreateFixedObjCrash.ll b/test/CodeGen/X86/2011-03-30-CreateFixedObjCrash.ll
new file mode 100644
index 0000000000000..38a9b3d4f5cc1
--- /dev/null
+++ b/test/CodeGen/X86/2011-03-30-CreateFixedObjCrash.ll
@@ -0,0 +1,10 @@
+; RUN: llc < %s -march=x86
+
+; rdar://7983260
+
+%struct.T0 = type {}
+
+define void @fn4(%struct.T0* byval %arg0) nounwind ssp {
+entry:
+ ret void
+}
diff --git a/test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll b/test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll
new file mode 100644
index 0000000000000..07b1971218c30
--- /dev/null
+++ b/test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll
@@ -0,0 +1,65 @@
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=yonah | FileCheck %s
+; Reduced from JavaScriptCore
+
+%"class.JSC::CodeLocationCall" = type { [8 x i8] }
+%"class.JSC::JSGlobalData" = type { [4 x i8] }
+%"class.JSC::FunctionPtr" = type { i8* }
+%"class.JSC::Structure" = type { [4 x i8] }
+%"class.JSC::UString" = type { i8* }
+%"class.JSC::JSString" = type { [16 x i8], i32, %"class.JSC::UString", i32 }
+
+declare hidden fastcc void @_ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataENS_16ReturnAddressPtrERS2_(%"class.JSC::JSGlobalData"* nocapture, i8*, %"class.JSC::FunctionPtr"* nocapture) nounwind noinline ssp
+
+; Avoid hoisting the test above loads or copies
+; CHECK: %entry
+; CHECK: cmpq
+; CHECK-NOT: mov
+; CHECK: jb
+define i32 @cti_op_eq(i8** nocapture %args) nounwind ssp {
+entry:
+ %0 = load i8** null, align 8
+ %tmp13 = bitcast i8* %0 to %"class.JSC::CodeLocationCall"*
+ %tobool.i.i.i = icmp ugt i8* undef, inttoptr (i64 281474976710655 to i8*)
+ %or.cond.i = and i1 %tobool.i.i.i, undef
+ br i1 %or.cond.i, label %if.then.i, label %if.end.i
+
+if.then.i: ; preds = %entry
+ br i1 undef, label %if.then.i.i.i, label %_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit
+
+if.then.i.i.i: ; preds = %if.then.i
+ %conv.i.i.i.i = trunc i64 undef to i32
+ br label %_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit
+
+if.end.i: ; preds = %entry
+ br i1 undef, label %land.rhs.i121.i, label %_ZNK3JSC7JSValue8isStringEv.exit122.i
+
+land.rhs.i121.i: ; preds = %if.end.i
+ %tmp.i.i117.i = load %"class.JSC::Structure"** undef, align 8
+ br label %_ZNK3JSC7JSValue8isStringEv.exit122.i
+
+_ZNK3JSC7JSValue8isStringEv.exit122.i: ; preds = %land.rhs.i121.i, %if.end.i
+ %brmerge.i = or i1 undef, false
+ %or.cond = or i1 false, %brmerge.i
+ br i1 %or.cond, label %_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit, label %if.then.i92.i
+
+if.then.i92.i: ; preds = %_ZNK3JSC7JSValue8isStringEv.exit122.i
+ tail call void @_ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE(%"class.JSC::JSString"* undef, %"class.JSC::CodeLocationCall"* %tmp13) nounwind
+ unreachable
+
+_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit: ; preds = %_ZNK3JSC7JSValue8isStringEv.exit122.i, %if.then.i.i.i, %if.then.i
+
+ %1 = load i8** undef, align 8
+ br i1 undef, label %do.end39, label %do.body27
+
+do.body27: ; preds = %_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit
+ %tmp30 = bitcast i8* %1 to %"class.JSC::JSGlobalData"*
+ %2 = getelementptr inbounds i8** %args, i64 -1
+ %3 = bitcast i8** %2 to %"class.JSC::FunctionPtr"*
+ tail call fastcc void @_ZN3JSCL23returnToThrowTrampolineEPNS_12JSGlobalDataENS_16ReturnAddressPtrERS2_(%"class.JSC::JSGlobalData"* %tmp30, i8* undef, %"class.JSC::FunctionPtr"* %3)
+ unreachable
+
+do.end39: ; preds = %_ZN3JSC7JSValue19equalSlowCaseInlineEPNS_9ExecStateES0_S0_.exit
+ ret i32 undef
+}
+
+declare void @_ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE(%"class.JSC::JSString"*, %"class.JSC::CodeLocationCall"*)
diff --git a/test/CodeGen/X86/3dnow-intrinsics.ll b/test/CodeGen/X86/3dnow-intrinsics.ll
new file mode 100644
index 0000000000000..0b27bf2d18531
--- /dev/null
+++ b/test/CodeGen/X86/3dnow-intrinsics.ll
@@ -0,0 +1,297 @@
+; RUN: llc < %s -march=x86 -mattr=+3dnow | FileCheck %s
+
+define <8 x i8> @test_pavgusb(x86_mmx %a.coerce, x86_mmx %b.coerce) nounwind readnone {
+; CHECK: pavgusb
+entry:
+ %0 = bitcast x86_mmx %a.coerce to <8 x i8>
+ %1 = bitcast x86_mmx %b.coerce to <8 x i8>
+ %2 = bitcast <8 x i8> %0 to x86_mmx
+ %3 = bitcast <8 x i8> %1 to x86_mmx
+ %4 = call x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx %2, x86_mmx %3)
+ %5 = bitcast x86_mmx %4 to <8 x i8>
+ ret <8 x i8> %5
+}
+
+declare x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x i32> @test_pf2id(<2 x float> %a) nounwind readnone {
+; CHECK: pf2id
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x i32>
+ ret <2 x i32> %2
+}
+
+declare x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfacc(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfacc
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfadd(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfadd
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x i32> @test_pfcmpeq(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfcmpeq
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x i32>
+ ret <2 x i32> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x i32> @test_pfcmpge(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfcmpge
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x i32>
+ ret <2 x i32> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x i32> @test_pfcmpgt(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfcmpgt
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x i32>
+ ret <2 x i32> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfmax(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfmax
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfmin(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfmin
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfmul(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfmul
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfrcp(<2 x float> %a) nounwind readnone {
+; CHECK: pfrcp
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x float>
+ ret <2 x float> %2
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfrcpit1(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfrcpit1
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfrcpit2(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfrcpit2
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfrsqrt(<2 x float> %a) nounwind readnone {
+; CHECK: pfrsqrt
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x float>
+ ret <2 x float> %2
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfrsqit1(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfrsqit1
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfsub(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfsub
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfsubr(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfsubr
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pi2fd(x86_mmx %a.coerce) nounwind readnone {
+; CHECK: pi2fd
+entry:
+ %0 = bitcast x86_mmx %a.coerce to <2 x i32>
+ %1 = bitcast <2 x i32> %0 to x86_mmx
+ %2 = call x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx) nounwind readnone
+
+define <4 x i16> @test_pmulhrw(x86_mmx %a.coerce, x86_mmx %b.coerce) nounwind readnone {
+; CHECK: pmulhrw
+entry:
+ %0 = bitcast x86_mmx %a.coerce to <4 x i16>
+ %1 = bitcast x86_mmx %b.coerce to <4 x i16>
+ %2 = bitcast <4 x i16> %0 to x86_mmx
+ %3 = bitcast <4 x i16> %1 to x86_mmx
+ %4 = call x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx %2, x86_mmx %3)
+ %5 = bitcast x86_mmx %4 to <4 x i16>
+ ret <4 x i16> %5
+}
+
+declare x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x i32> @test_pf2iw(<2 x float> %a) nounwind readnone {
+; CHECK: pf2iw
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x i32>
+ ret <2 x i32> %2
+}
+
+declare x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfnacc(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfnacc
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pfpnacc(<2 x float> %a, <2 x float> %b) nounwind readnone {
+; CHECK: pfpnacc
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = bitcast <2 x float> %b to x86_mmx
+ %2 = tail call x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx %0, x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx, x86_mmx) nounwind readnone
+
+define <2 x float> @test_pi2fw(x86_mmx %a.coerce) nounwind readnone {
+; CHECK: pi2fw
+entry:
+ %0 = bitcast x86_mmx %a.coerce to <2 x i32>
+ %1 = bitcast <2 x i32> %0 to x86_mmx
+ %2 = call x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx %1)
+ %3 = bitcast x86_mmx %2 to <2 x float>
+ ret <2 x float> %3
+}
+
+declare x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx) nounwind readnone
+
+define <2 x float> @test_pswapdsf(<2 x float> %a) nounwind readnone {
+; CHECK: pswapd
+entry:
+ %0 = bitcast <2 x float> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x float>
+ ret <2 x float> %2
+}
+
+define <2 x i32> @test_pswapdsi(<2 x i32> %a) nounwind readnone {
+; CHECK: pswapd
+entry:
+ %0 = bitcast <2 x i32> %a to x86_mmx
+ %1 = tail call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %0)
+ %2 = bitcast x86_mmx %1 to <2 x i32>
+ ret <2 x i32> %2
+}
+
+declare x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx) nounwind readnone
diff --git a/test/CodeGen/X86/MachineSink-PHIUse.ll b/test/CodeGen/X86/MachineSink-PHIUse.ll
index 728e377360189..3758fd8ce500c 100644
--- a/test/CodeGen/X86/MachineSink-PHIUse.ll
+++ b/test/CodeGen/X86/MachineSink-PHIUse.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=x86_64-appel-darwin -stats |& grep {machine-sink}
+; RUN: llc < %s -mtriple=x86_64-appel-darwin -disable-cgp-branch-opts -stats |& grep {machine-sink}
define fastcc void @t() nounwind ssp {
entry:
diff --git a/test/CodeGen/X86/SIMD/dg.exp b/test/CodeGen/X86/SIMD/dg.exp
new file mode 100644
index 0000000000000..629a147736150
--- /dev/null
+++ b/test/CodeGen/X86/SIMD/dg.exp
@@ -0,0 +1,5 @@
+load_lib llvm.exp
+
+if { [llvm_supports_target X86] } {
+ RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
+}
diff --git a/test/CodeGen/X86/SIMD/notvunpcklpd.ll b/test/CodeGen/X86/SIMD/notvunpcklpd.ll
new file mode 100644
index 0000000000000..3afc2f2305abf
--- /dev/null
+++ b/test/CodeGen/X86/SIMD/notvunpcklpd.ll
@@ -0,0 +1,20 @@
+; RUN: llc < %s -mattr=+avx | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @try_([2 x <4 x double>]* noalias %incarray, [2 x <4 x double>]* noalias %incarrayb ) {
+entry:
+ %incarray1 = alloca [2 x <4 x double>]*, align 8
+ %incarrayb1 = alloca [2 x <4 x double>]*, align 8
+ %carray = alloca [2 x <4 x double>], align 16
+ %r = getelementptr [2 x <4 x double>]* %incarray, i32 0, i32 0
+ %rb = getelementptr [2 x <4 x double>]* %incarrayb, i32 0, i32 0
+ %r3 = load <4 x double>* %r, align 8
+ %r4 = load <4 x double>* %rb, align 8
+ %r11 = shufflevector <4 x double> %r3, <4 x double> %r4, <4 x i32> < i32 0, i32 4, i32 1, i32 5 > ; <<4 x double>> [#uses=1]
+; CHECK-NOT: vunpcklpd
+ %r12 = getelementptr [2 x <4 x double>]* %carray, i32 0, i32 1
+ store <4 x double> %r11, <4 x double>* %r12, align 4
+ ret void
+}
diff --git a/test/CodeGen/X86/SIMD/notvunpcklps.ll b/test/CodeGen/X86/SIMD/notvunpcklps.ll
new file mode 100644
index 0000000000000..19daa3e7d5086
--- /dev/null
+++ b/test/CodeGen/X86/SIMD/notvunpcklps.ll
@@ -0,0 +1,20 @@
+; RUN: llc < %s -mattr=+avx | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @try_([2 x <8 x float>]* noalias %incarray, [2 x <8 x float>]* noalias %incarrayb ) {
+enmtry:
+ %incarray1 = alloca [2 x <8 x float>]*, align 8
+ %incarrayb1 = alloca [2 x <8 x float>]*, align 8
+ %carray = alloca [2 x <8 x float>], align 16
+ %r = getelementptr [2 x <8 x float>]* %incarray, i32 0, i32 0
+ %rb = getelementptr [2 x <8 x float>]* %incarrayb, i32 0, i32 0
+ %r3 = load <8 x float>* %r, align 8
+ %r4 = load <8 x float>* %rb, align 8
+ %r8 = shufflevector <8 x float> %r3, <8 x float> %r4, <8 x i32> < i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11 > ; <<8 x float>> [#uses=1]
+; CHECK-NOT: vunpcklps
+ %r9 = getelementptr [2 x <8 x float>]* %carray, i32 0, i32 0
+ store <8 x float> %r8, <8 x float>* %r9, align 4
+ ret void
+}
diff --git a/test/CodeGen/X86/SIMD/vunpcklpd.ll b/test/CodeGen/X86/SIMD/vunpcklpd.ll
new file mode 100644
index 0000000000000..60d23a4f6789b
--- /dev/null
+++ b/test/CodeGen/X86/SIMD/vunpcklpd.ll
@@ -0,0 +1,20 @@
+; RUN: llc < %s -mattr=+avx | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @try_([2 x <4 x double>]* noalias %incarray, [2 x <4 x double>]* noalias %incarrayb ) {
+entry:
+ %incarray1 = alloca [2 x <4 x double>]*, align 8
+ %incarrayb1 = alloca [2 x <4 x double>]*, align 8
+ %carray = alloca [2 x <4 x double>], align 16
+ %r = getelementptr [2 x <4 x double>]* %incarray, i32 0, i32 0
+ %rb = getelementptr [2 x <4 x double>]* %incarrayb, i32 0, i32 0
+ %r3 = load <4 x double>* %r, align 8
+ %r4 = load <4 x double>* %rb, align 8
+ %r11 = shufflevector <4 x double> %r3, <4 x double> %r4, <4 x i32> < i32 0, i32 4, i32 2, i32 6 > ; <<4 x double>> [#uses=1]
+; CHECK: vunpcklpd
+ %r12 = getelementptr [2 x <4 x double>]* %carray, i32 0, i32 1
+ store <4 x double> %r11, <4 x double>* %r12, align 4
+ ret void
+}
diff --git a/test/CodeGen/X86/SIMD/vunpcklps.ll b/test/CodeGen/X86/SIMD/vunpcklps.ll
new file mode 100644
index 0000000000000..a87b29965eaa0
--- /dev/null
+++ b/test/CodeGen/X86/SIMD/vunpcklps.ll
@@ -0,0 +1,20 @@
+; RUN: llc < %s -mattr=+avx | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @try_([2 x <8 x float>]* noalias %incarray, [2 x <8 x float>]* noalias %incarrayb ) {
+entry:
+ %incarray1 = alloca [2 x <8 x float>]*, align 8
+ %incarrayb1 = alloca [2 x <8 x float>]*, align 8
+ %carray = alloca [2 x <8 x float>], align 16
+ %r = getelementptr [2 x <8 x float>]* %incarray, i32 0, i32 0
+ %rb = getelementptr [2 x <8 x float>]* %incarrayb, i32 0, i32 0
+ %r3 = load <8 x float>* %r, align 8
+ %r4 = load <8 x float>* %rb, align 8
+ %r11 = shufflevector <8 x float> %r3, <8 x float> %r4, <8 x i32> < i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13 > ; <<8 x float>> [#uses=1]
+; CHECK: vunpcklps
+ %r12 = getelementptr [2 x <8 x float>]* %carray, i32 0, i32 1
+ store <8 x float> %r11, <8 x float>* %r12, align 4
+ ret void
+}
diff --git a/test/CodeGen/X86/abi-isel.ll b/test/CodeGen/X86/abi-isel.ll
index 5b4d79fa22b9e..7535e07b809c4 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)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _foo04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _foo04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -587,62 +598,62 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: foo05:
-; LINUX-32-STATIC: movl dsrc, %eax
-; LINUX-32-STATIC-NEXT: movl dptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
+; LINUX-32-STATIC: movl dsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: foo05:
-; LINUX-32-PIC: movl dsrc, %eax
-; LINUX-32-PIC-NEXT: movl dptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
+; LINUX-32-PIC: movl dsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: foo05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %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 dptr@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: _foo05:
-; DARWIN-32-STATIC: movl _dsrc, %eax
-; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-STATIC: movl _dsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _foo05:
-; DARWIN-32-DYNAMIC: movl _dsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-DYNAMIC: movl _dsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _foo05:
; DARWIN-32-PIC: calll L8$pb
; DARWIN-32-PIC-NEXT: L8$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _foo05:
-; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-STATIC: movl _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _foo05:
-; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-DYNAMIC: movl _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _foo05:
-; DARWIN-64-PIC: movl _dsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-PIC: movl _dsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -652,56 +663,56 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
ret void
; LINUX-64-STATIC: foo06:
-; LINUX-64-STATIC: movl lsrc(%rip), %eax
-; LINUX-64-STATIC: movl %eax, ldst(%rip)
+; LINUX-64-STATIC: movl lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: foo06:
-; LINUX-32-STATIC: movl lsrc, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ldst
+; LINUX-32-STATIC: movl lsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ldst
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: foo06:
-; LINUX-32-PIC: movl lsrc, %eax
-; LINUX-32-PIC-NEXT: movl %eax, ldst
+; LINUX-32-PIC: movl lsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ldst
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: foo06:
-; LINUX-64-PIC: movl lsrc(%rip), %eax
-; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)
+; LINUX-64-PIC: movl lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ldst(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _foo06:
-; DARWIN-32-STATIC: movl _lsrc, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ldst
+; DARWIN-32-STATIC: movl _lsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ldst
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _foo06:
-; DARWIN-32-DYNAMIC: movl _lsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst
+; DARWIN-32-DYNAMIC: movl _lsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ldst
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _foo06:
; DARWIN-32-PIC: calll L9$pb
; DARWIN-32-PIC-NEXT: L9$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _ldst-L9$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _foo06:
-; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)
+; DARWIN-64-STATIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ldst(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _foo06:
-; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)
+; DARWIN-64-DYNAMIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ldst(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _foo06:
-; DARWIN-64-PIC: movl _lsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)
+; DARWIN-64-PIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], _ldst(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -722,8 +733,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: foo07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _foo07:
@@ -737,24 +748,24 @@ entry:
; DARWIN-32-PIC: _foo07:
; DARWIN-32-PIC: calll L10$pb
; DARWIN-32-PIC-NEXT: L10$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L10$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _foo07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _foo07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _foo07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -771,60 +782,60 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: foo08:
-; LINUX-32-STATIC: movl lsrc, %eax
-; LINUX-32-STATIC-NEXT: movl lptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
+; LINUX-32-STATIC: movl lsrc, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: foo08:
-; LINUX-32-PIC: movl lsrc, %eax
-; LINUX-32-PIC-NEXT: movl lptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
+; LINUX-32-PIC: movl lsrc, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: foo08:
-; LINUX-64-PIC: movl lsrc(%rip), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
+; LINUX-64-PIC: movl lsrc(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _foo08:
-; DARWIN-32-STATIC: movl _lsrc, %eax
-; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-STATIC: movl _lsrc, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _foo08:
-; DARWIN-32-DYNAMIC: movl _lsrc, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-DYNAMIC: movl _lsrc, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _foo08:
; DARWIN-32-PIC: calll L11$pb
; DARWIN-32-PIC-NEXT: L11$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _foo08:
-; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-STATIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _foo08:
-; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-DYNAMIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _foo08:
-; DARWIN-64-PIC: movl _lsrc(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
+; DARWIN-64-PIC: movl _lsrc(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -834,68 +845,68 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
ret void
; LINUX-64-STATIC: qux00:
-; LINUX-64-STATIC: movl src+64(%rip), %eax
-; LINUX-64-STATIC: movl %eax, dst+64(%rip)
+; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], dst+64(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux00:
-; LINUX-32-STATIC: movl src+64, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, dst+64
+; LINUX-32-STATIC: movl src+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], dst+64
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: qux00:
-; LINUX-32-PIC: movl src+64, %eax
-; LINUX-32-PIC-NEXT: movl %eax, dst+64
+; LINUX-32-PIC: movl src+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], dst+64
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux00:
-; DARWIN-32-STATIC: movl _src+64, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64
+; DARWIN-32-STATIC: movl _src+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dst+64
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux00:
-; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux00:
; DARWIN-32-PIC: calll L12$pb
; DARWIN-32-PIC-NEXT: L12$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -905,68 +916,68 @@ entry:
store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
ret void
; LINUX-64-STATIC: qxx00:
-; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl %eax, xdst+64(%rip)
+; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], xdst+64(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qxx00:
-; LINUX-32-STATIC: movl xsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, xdst+64
+; LINUX-32-STATIC: movl xsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], xdst+64
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: qxx00:
-; LINUX-32-PIC: movl xsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl %eax, xdst+64
+; LINUX-32-PIC: movl xsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], xdst+64
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qxx00:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qxx00:
-; DARWIN-32-STATIC: movl _xsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64
+; DARWIN-32-STATIC: movl _xsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _xdst+64
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qxx00:
-; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qxx00:
; DARWIN-32-PIC: calll L13$pb
; DARWIN-32-PIC-NEXT: L13$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qxx00:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qxx00:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qxx00:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -987,10 +998,10 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux01:
-; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: addq $64, %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: addq $64, [[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: _qux01:
@@ -998,41 +1009,41 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux01:
-; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl $64, %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: addl $64, [[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: _qux01:
; DARWIN-32-PIC: calll L14$pb
; DARWIN-32-PIC-NEXT: L14$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: addl $64, %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: addl $64, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux01:
-; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: addq $64, %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: addq $64, [[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: _qux01:
-; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: addq $64, %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: addq $64, [[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: _qux01:
-; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: addq $64, %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: addq $64, [[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
}
@@ -1053,10 +1064,10 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qxx01:
-; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: addq $64, %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: addq $64, [[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: _qxx01:
@@ -1064,41 +1075,41 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qxx01:
-; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl $64, %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: addl $64, [[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: _qxx01:
; DARWIN-32-PIC: calll L15$pb
; DARWIN-32-PIC-NEXT: L15$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: addl $64, %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: addl $64, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qxx01:
-; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: addq $64, %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: addq $64, [[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: _qxx01:
-; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: addq $64, %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: addq $64, [[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: _qxx01:
-; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: addq $64, %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: addq $64, [[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
}
@@ -1109,79 +1120,79 @@ entry:
%2 = getelementptr i32* %0, i64 16
store i32 %1, i32* %2, align 4
; LINUX-64-STATIC: qux02:
-; LINUX-64-STATIC: movl src+64(%rip), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx)
+; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux02:
-; LINUX-32-STATIC: movl src+64, %eax
-; LINUX-32-STATIC-NEXT: movl ptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-STATIC: movl src+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-STATIC-NEXT: ret
ret void
; LINUX-32-PIC: qux02:
-; LINUX-32-PIC: movl src+64, %eax
-; LINUX-32-PIC-NEXT: movl ptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-PIC: movl src+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux02:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[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]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux02:
-; DARWIN-32-STATIC: movl _src+64, %eax
-; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-STATIC: movl _src+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux02:
-; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%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, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[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]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux02:
; DARWIN-32-PIC: calll L16$pb
; DARWIN-32-PIC-NEXT: L16$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux02:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux02:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux02:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1192,79 +1203,79 @@ entry:
%2 = getelementptr i32* %0, i64 16
store i32 %1, i32* %2, align 4
; LINUX-64-STATIC: qxx02:
-; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx)
+; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qxx02:
-; LINUX-32-STATIC: movl xsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl ptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-STATIC: movl xsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-STATIC-NEXT: ret
ret void
; LINUX-32-PIC: qxx02:
-; LINUX-32-PIC: movl xsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl ptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-PIC: movl xsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qxx02:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[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]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qxx02:
-; DARWIN-32-STATIC: movl _xsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-STATIC: movl _xsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qxx02:
-; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%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, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[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]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qxx02:
; DARWIN-32-PIC: calll L17$pb
; DARWIN-32-PIC-NEXT: L17$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qxx02:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qxx02:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qxx02:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[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]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1274,58 +1285,58 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
ret void
; LINUX-64-STATIC: qux03:
-; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl %eax, ddst+64(%rip)
+; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ddst+64(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux03:
-; LINUX-32-STATIC: movl dsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ddst+64
+; LINUX-32-STATIC: movl dsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ddst+64
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: qux03:
-; LINUX-32-PIC: movl dsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl %eax, ddst+64
+; LINUX-32-PIC: movl dsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ddst+64
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux03:
-; DARWIN-32-STATIC: movl _dsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64
+; DARWIN-32-STATIC: movl _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ddst+64
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux03:
-; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64
+; DARWIN-32-DYNAMIC: movl _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ddst+64
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux03:
; DARWIN-32-PIC: calll L18$pb
; DARWIN-32-PIC-NEXT: L18$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ddst-L18$pb)+64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux03:
-; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)
+; DARWIN-64-STATIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ddst+64(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux03:
-; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)
+; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ddst+64(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux03:
-; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)
+; DARWIN-64-PIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], _ddst+64(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1346,10 +1357,10 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux04:
-; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: addq $64, %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: addq $64, [[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: _qux04:
@@ -1363,24 +1374,24 @@ entry:
; DARWIN-32-PIC: _qux04:
; DARWIN-32-PIC: calll L19$pb
; DARWIN-32-PIC-NEXT: L19$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L19$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux04:
-; DARWIN-64-STATIC: leaq _ddst+64(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-STATIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux04:
-; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux04:
-; DARWIN-64-PIC: leaq _ddst+64(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1391,69 +1402,69 @@ entry:
%2 = getelementptr i32* %0, i64 16
store i32 %1, i32* %2, align 4
; LINUX-64-STATIC: qux05:
-; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq dptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx)
+; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux05:
-; LINUX-32-STATIC: movl dsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl dptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-STATIC: movl dsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-STATIC-NEXT: ret
ret void
; LINUX-32-PIC: qux05:
-; LINUX-32-PIC: movl dsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl dptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-PIC: movl dsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux05:
-; DARWIN-32-STATIC: movl _dsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-STATIC: movl _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux05:
-; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl _dsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux05:
; DARWIN-32-PIC: calll L20$pb
; DARWIN-32-PIC-NEXT: L20$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux05:
-; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux05:
-; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux05:
-; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1463,56 +1474,56 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
ret void
; LINUX-64-STATIC: qux06:
-; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
-; LINUX-64-STATIC: movl %eax, ldst+64
+; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst+64
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux06:
-; LINUX-32-STATIC: movl lsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ldst+64
+; LINUX-32-STATIC: movl lsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ldst+64
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: qux06:
-; LINUX-32-PIC: movl lsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl %eax, ldst+64
+; LINUX-32-PIC: movl lsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ldst+64
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux06:
-; LINUX-64-PIC: movl lsrc+64(%rip), %eax
-; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)
+; LINUX-64-PIC: movl lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ldst+64(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux06:
-; DARWIN-32-STATIC: movl _lsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64
+; DARWIN-32-STATIC: movl _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ldst+64
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux06:
-; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64
+; DARWIN-32-DYNAMIC: movl _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ldst+64
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux06:
; DARWIN-32-PIC: calll L21$pb
; DARWIN-32-PIC-NEXT: L21$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ldst-L21$pb)+64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux06:
-; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)
+; DARWIN-64-STATIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ldst+64(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux06:
-; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)
+; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ldst+64(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux06:
-; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)
+; DARWIN-64-PIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], _ldst+64(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1533,8 +1544,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux07:
-; LINUX-64-PIC: leaq ldst+64(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst+64(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux07:
@@ -1548,24 +1559,24 @@ entry:
; DARWIN-32-PIC: _qux07:
; DARWIN-32-PIC: calll L22$pb
; DARWIN-32-PIC-NEXT: L22$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L22$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux07:
-; DARWIN-64-STATIC: leaq _ldst+64(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux07:
-; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux07:
-; DARWIN-64-PIC: leaq _ldst+64(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1576,67 +1587,67 @@ entry:
%2 = getelementptr i32* %0, i64 16
store i32 %1, i32* %2, align 4
; LINUX-64-STATIC: qux08:
-; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
-; LINUX-64-STATIC: movq lptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx)
+; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: qux08:
-; LINUX-32-STATIC: movl lsrc+64, %eax
-; LINUX-32-STATIC-NEXT: movl lptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-STATIC: movl lsrc+64, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-STATIC-NEXT: ret
ret void
; LINUX-32-PIC: qux08:
-; LINUX-32-PIC: movl lsrc+64, %eax
-; LINUX-32-PIC-NEXT: movl lptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
+; LINUX-32-PIC: movl lsrc+64, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: qux08:
-; LINUX-64-PIC: movl lsrc+64(%rip), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
+; LINUX-64-PIC: movl lsrc+64(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _qux08:
-; DARWIN-32-STATIC: movl _lsrc+64, %eax
-; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-STATIC: movl _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _qux08:
-; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
+; DARWIN-32-DYNAMIC: movl _lsrc+64, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _qux08:
; DARWIN-32-PIC: calll L23$pb
; DARWIN-32-PIC-NEXT: L23$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _qux08:
-; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-STATIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _qux08:
-; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _qux08:
-; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
+; DARWIN-64-PIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1648,73 +1659,73 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: ind00:
-; LINUX-64-STATIC: movl src(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, dst(,%rdi,4)
+; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], dst(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], dst(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, dst(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], dst(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _dst(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind00:
; DARWIN-32-PIC: calll L24$pb
; DARWIN-32-PIC-NEXT: L24$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1726,73 +1737,73 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: ixd00:
-; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, xdst(,%rdi,4)
+; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], xdst(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ixd00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], xdst(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ixd00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, xdst(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], xdst(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ixd00:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ixd00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _xdst(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ixd00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ixd00:
; DARWIN-32-PIC: calll L25$pb
; DARWIN-32-PIC-NEXT: L25$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ixd00:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ixd00:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ixd00:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -1802,73 +1813,73 @@ entry:
store i32* %0, i32** @ptr, align 8
ret void
; LINUX-64-STATIC: ind01:
-; LINUX-64-STATIC: leaq dst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, ptr
+; LINUX-64-STATIC: leaq dst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], ptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, ptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind01:
; LINUX-64-PIC: shlq $2, %rdi
; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
+; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl 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 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: shll $2, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: addl 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: _ind01:
; DARWIN-32-PIC: calll L26$pb
; DARWIN-32-PIC-NEXT: L26$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: shll $2, %ecx
-; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: shll $2, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind01:
; DARWIN-64-STATIC: shlq $2, %rdi
; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind01:
; DARWIN-64-DYNAMIC: shlq $2, %rdi
; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind01:
; DARWIN-64-PIC: shlq $2, %rdi
; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1878,73 +1889,73 @@ entry:
store i32* %0, i32** @ptr, align 8
ret void
; LINUX-64-STATIC: ixd01:
-; LINUX-64-STATIC: leaq xdst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, ptr
+; LINUX-64-STATIC: leaq xdst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], ptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ixd01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal xdst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ixd01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xdst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, ptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xdst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ixd01:
; LINUX-64-PIC: shlq $2, %rdi
; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
+; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ixd01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xdst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ixd01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl 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 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: shll $2, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: addl 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: _ixd01:
; DARWIN-32-PIC: calll L27$pb
; DARWIN-32-PIC-NEXT: L27$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: shll $2, %ecx
-; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: shll $2, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ixd01:
; DARWIN-64-STATIC: shlq $2, %rdi
; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ixd01:
; DARWIN-64-DYNAMIC: shlq $2, %rdi
; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ixd01:
; DARWIN-64-PIC: shlq $2, %rdi
; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
+; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq %rdi, ([[RAX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -1957,83 +1968,83 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: ind02:
-; LINUX-64-STATIC: movl src(,%rdi,4), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl ptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl ptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind02:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind02:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind02:
; DARWIN-32-PIC: calll L28$pb
; DARWIN-32-PIC-NEXT: L28$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind02:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind02:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind02:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2046,83 +2057,83 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: ixd02:
-; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ixd02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl ptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ixd02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl ptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ixd02:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ixd02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _xsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ixd02:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ixd02:
; DARWIN-32-PIC: calll L29$pb
; DARWIN-32-PIC-NEXT: L29$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ixd02:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ixd02:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ixd02:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[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]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2134,69 +2145,69 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: ind03:
-; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ddst(,%rdi,4)
+; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ddst(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind03:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ddst(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind03:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ddst(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ddst(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind03:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ddst(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind03:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ddst(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind03:
; DARWIN-32-PIC: calll L30$pb
; DARWIN-32-PIC-NEXT: L30$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], _ddst-L30$pb([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind03:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind03:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind03:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2206,66 +2217,66 @@ entry:
store i32* %0, i32** @dptr, align 8
ret void
; LINUX-64-STATIC: ind04:
-; LINUX-64-STATIC: leaq ddst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, dptr
+; LINUX-64-STATIC: leaq ddst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], dptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind04:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, dptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ddst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], dptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind04:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ddst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, dptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ddst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], dptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind04:
; LINUX-64-PIC: shlq $2, %rdi
; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind04:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ddst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind04:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind04:
; DARWIN-32-PIC: calll L31$pb
; DARWIN-32-PIC-NEXT: L31$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L31$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind04:
-; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2278,76 +2289,76 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: ind05:
-; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq dptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind05:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl dptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind05:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl dptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind05:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind05:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind05:
; DARWIN-32-PIC: calll L32$pb
; DARWIN-32-PIC-NEXT: L32$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind05:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind05:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind05:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2359,69 +2370,69 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: ind06:
-; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ldst(,%rdi,4)
+; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind06:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ldst(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind06:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ldst(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ldst(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind06:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: leaq ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind06:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ldst(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind06:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ldst(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind06:
; DARWIN-32-PIC: calll L33$pb
; DARWIN-32-PIC-NEXT: L33$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], _ldst-L33$pb([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind06:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind06:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind06:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2431,65 +2442,65 @@ entry:
store i32* %0, i32** @lptr, align 8
ret void
; LINUX-64-STATIC: ind07:
-; LINUX-64-STATIC: leaq ldst(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, lptr
+; LINUX-64-STATIC: leaq ldst(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], lptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind07:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, lptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ldst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], lptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind07:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ldst(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, lptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ldst(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], lptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind07:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ldst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind07:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind07:
; DARWIN-32-PIC: calll L34$pb
; DARWIN-32-PIC-NEXT: L34$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L34$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2502,75 +2513,75 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: ind08:
-; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
-; LINUX-64-STATIC: movq lptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: ind08:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl lptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: ind08:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl lptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: ind08:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _ind08:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _ind08:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _ind08:
; DARWIN-32-PIC: calll L35$pb
; DARWIN-32-PIC-NEXT: L35$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _ind08:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _ind08:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _ind08:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2583,73 +2594,73 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: off00:
-; LINUX-64-STATIC: movl src+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, dst+64(,%rdi,4)
+; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], dst+64(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], dst+64(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, dst+64(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], dst+64(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _dst+64(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off00:
; DARWIN-32-PIC: calll L36$pb
; DARWIN-32-PIC-NEXT: L36$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2662,73 +2673,73 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: oxf00:
-; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, xdst+64(,%rdi,4)
+; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], xdst+64(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: oxf00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], xdst+64(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: oxf00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, xdst+64(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], xdst+64(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: oxf00:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _oxf00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _xdst+64(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _oxf00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _oxf00:
; DARWIN-32-PIC: calll L37$pb
; DARWIN-32-PIC-NEXT: L37$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _oxf00:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _oxf00:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _oxf00:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2739,73 +2750,73 @@ entry:
store i32* %0, i32** @ptr, align 8
ret void
; LINUX-64-STATIC: off01:
-; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, ptr
+; LINUX-64-STATIC: leaq dst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], ptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, ptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off01:
-; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _off01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), [[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: _off01:
; DARWIN-32-PIC: calll L38$pb
; DARWIN-32-PIC-NEXT: L38$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off01:
-; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _off01:
-; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _off01:
-; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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
}
@@ -2816,73 +2827,73 @@ entry:
store i32* %0, i32** @ptr, align 8
ret void
; LINUX-64-STATIC: oxf01:
-; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, ptr
+; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], ptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: oxf01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: oxf01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, ptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: oxf01:
-; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _oxf01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xdst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _oxf01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), [[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: _oxf01:
; DARWIN-32-PIC: calll L39$pb
; DARWIN-32-PIC-NEXT: L39$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _oxf01:
-; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _oxf01:
-; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _oxf01:
-; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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
}
@@ -2896,83 +2907,83 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: off02:
-; LINUX-64-STATIC: movl src+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl ptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl ptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off02:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off02:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off02:
; DARWIN-32-PIC: calll L40$pb
; DARWIN-32-PIC-NEXT: L40$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off02:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off02:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off02:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -2986,83 +2997,83 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: oxf02:
-; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: oxf02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl ptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: oxf02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl ptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: oxf02:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _oxf02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _oxf02:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _oxf02:
; DARWIN-32-PIC: calll L41$pb
; DARWIN-32-PIC-NEXT: L41$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _oxf02:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _oxf02:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _oxf02:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[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]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3075,69 +3086,69 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: off03:
-; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ddst+64(,%rdi,4)
+; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ddst+64(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off03:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ddst+64(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off03:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ddst+64(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ddst+64(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off03:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ddst+64(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off03:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ddst+64(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off03:
; DARWIN-32-PIC: calll L42$pb
; DARWIN-32-PIC-NEXT: L42$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], (_ddst-L42$pb)+64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off03:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off03:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off03:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3148,66 +3159,66 @@ entry:
store i32* %0, i32** @dptr, align 8
ret void
; LINUX-64-STATIC: off04:
-; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, dptr
+; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], dptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off04:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, dptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], dptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off04:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, dptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], dptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off04:
-; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %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: leaq 64([[RAX]],%rdi,4), [[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: _off04:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off04:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off04:
; DARWIN-32-PIC: calll L43$pb
; DARWIN-32-PIC-NEXT: L43$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L43$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off04:
-; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3221,76 +3232,76 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: off05:
-; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq dptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off05:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl dptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off05:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl dptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off05:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off05:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off05:
; DARWIN-32-PIC: calll L44$pb
; DARWIN-32-PIC-NEXT: L44$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off05:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off05:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off05:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3303,69 +3314,69 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: off06:
-; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ldst+64(,%rdi,4)
+; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst+64(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off06:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ldst+64(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off06:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ldst+64(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ldst+64(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off06:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: leaq ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off06:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ldst+64(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off06:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ldst+64(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off06:
; DARWIN-32-PIC: calll L45$pb
; DARWIN-32-PIC-NEXT: L45$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], (_ldst-L45$pb)+64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off06:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off06:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off06:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3376,65 +3387,65 @@ entry:
store i32* %0, i32** @lptr, align 8
ret void
; LINUX-64-STATIC: off07:
-; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, lptr
+; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], lptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off07:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, lptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], lptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off07:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, lptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], lptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off07:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off07:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off07:
; DARWIN-32-PIC: calll L46$pb
; DARWIN-32-PIC-NEXT: L46$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L46$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3448,75 +3459,75 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: off08:
-; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), %eax
-; LINUX-64-STATIC: movq lptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: off08:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl lptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: off08:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl lptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: off08:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _off08:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _off08:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 64([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _off08:
; DARWIN-32-PIC: calll L47$pb
; DARWIN-32-PIC-NEXT: L47$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 64([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _off08:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _off08:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _off08:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 64([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3526,68 +3537,68 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
ret void
; LINUX-64-STATIC: moo00:
-; LINUX-64-STATIC: movl src+262144(%rip), %eax
-; LINUX-64-STATIC: movl %eax, dst+262144(%rip)
+; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], dst+262144(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo00:
-; LINUX-32-STATIC: movl src+262144, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, dst+262144
+; LINUX-32-STATIC: movl src+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], dst+262144
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo00:
-; LINUX-32-PIC: movl src+262144, %eax
-; LINUX-32-PIC-NEXT: movl %eax, dst+262144
+; LINUX-32-PIC: movl src+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], dst+262144
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
-; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo00:
-; DARWIN-32-STATIC: movl _src+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144
+; DARWIN-32-STATIC: movl _src+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dst+262144
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo00:
-; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 262144([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo00:
; DARWIN-32-PIC: calll L48$pb
; DARWIN-32-PIC-NEXT: L48$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 262144([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -3608,10 +3619,10 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo01:
-; LINUX-64-PIC: movl $262144, %eax
-; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
+; LINUX-64-PIC: movl $262144, [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: addq 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: _moo01:
@@ -3619,41 +3630,41 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo01:
-; DARWIN-32-DYNAMIC: movl $262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl 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 $262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: addl 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: _moo01:
; DARWIN-32-PIC: calll L49$pb
; DARWIN-32-PIC-NEXT: L49$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl $262144, %ecx
-; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl $262144, [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo01:
-; DARWIN-64-STATIC: movl $262144, %eax
-; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
+; DARWIN-64-STATIC: movl $262144, [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: addq _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: _moo01:
-; DARWIN-64-DYNAMIC: movl $262144, %eax
-; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
+; DARWIN-64-DYNAMIC: movl $262144, [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: addq _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: _moo01:
-; DARWIN-64-PIC: movl $262144, %eax
-; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
+; DARWIN-64-PIC: movl $262144, [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: addq _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
}
@@ -3665,78 +3676,78 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: moo02:
-; LINUX-64-STATIC: movl src+262144(%rip), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx)
+; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo02:
-; LINUX-32-STATIC: movl src+262144, %eax
-; LINUX-32-STATIC-NEXT: movl ptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-STATIC: movl src+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo02:
-; LINUX-32-PIC: movl src+262144, %eax
-; LINUX-32-PIC-NEXT: movl ptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-PIC: movl src+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo02:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[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]], 262144([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo02:
-; DARWIN-32-STATIC: movl _src+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-STATIC: movl _src+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo02:
-; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 262144(%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, 262144(%ecx)
+; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 262144([[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]], 262144([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo02:
; DARWIN-32-PIC: calll L50$pb
; DARWIN-32-PIC-NEXT: L50$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 262144([[ECX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo02:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[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]], 262144([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo02:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[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]], 262144([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo02:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[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]], 262144([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -3746,58 +3757,58 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
ret void
; LINUX-64-STATIC: moo03:
-; LINUX-64-STATIC: movl dsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movl %eax, ddst+262144(%rip)
+; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ddst+262144(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo03:
-; LINUX-32-STATIC: movl dsrc+262144, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144
+; LINUX-32-STATIC: movl dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ddst+262144
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo03:
-; LINUX-32-PIC: movl dsrc+262144, %eax
-; LINUX-32-PIC-NEXT: movl %eax, ddst+262144
+; LINUX-32-PIC: movl dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ddst+262144
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
-; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo03:
-; DARWIN-32-STATIC: movl _dsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144
+; DARWIN-32-STATIC: movl _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ddst+262144
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo03:
-; DARWIN-32-DYNAMIC: movl _dsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144
+; DARWIN-32-DYNAMIC: movl _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ddst+262144
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo03:
; DARWIN-32-PIC: calll L51$pb
; DARWIN-32-PIC-NEXT: L51$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ddst-L51$pb)+262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo03:
-; DARWIN-64-STATIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip)
+; DARWIN-64-STATIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ddst+262144(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo03:
-; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip)
+; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ddst+262144(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo03:
-; DARWIN-64-PIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip)
+; DARWIN-64-PIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], _ddst+262144(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3818,10 +3829,10 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo04:
-; LINUX-64-PIC: movl $262144, %eax
-; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
+; LINUX-64-PIC: movl $262144, [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: addq 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: _moo04:
@@ -3835,24 +3846,24 @@ entry:
; DARWIN-32-PIC: _moo04:
; DARWIN-32-PIC: calll L52$pb
; DARWIN-32-PIC-NEXT: L52$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L52$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo04:
-; DARWIN-64-STATIC: leaq _ddst+262144(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-STATIC: leaq _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo04:
-; DARWIN-64-DYNAMIC: leaq _ddst+262144(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo04:
-; DARWIN-64-PIC: leaq _ddst+262144(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -3864,68 +3875,68 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: moo05:
-; LINUX-64-STATIC: movl dsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movq dptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx)
+; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo05:
-; LINUX-32-STATIC: movl dsrc+262144, %eax
-; LINUX-32-STATIC-NEXT: movl dptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-STATIC: movl dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo05:
-; LINUX-32-PIC: movl dsrc+262144, %eax
-; LINUX-32-PIC-NEXT: movl dptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-PIC: movl dsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]]), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo05:
-; DARWIN-32-STATIC: movl _dsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-STATIC: movl _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo05:
-; DARWIN-32-DYNAMIC: movl _dsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC: movl _dsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo05:
; DARWIN-32-PIC: calll L53$pb
; DARWIN-32-PIC-NEXT: L53$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo05:
-; DARWIN-64-STATIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-STATIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo05:
-; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo05:
-; DARWIN-64-PIC: movl _dsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-PIC: movl _dsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -3935,56 +3946,56 @@ entry:
store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
ret void
; LINUX-64-STATIC: moo06:
-; LINUX-64-STATIC: movl lsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movl %eax, ldst+262144(%rip)
+; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst+262144(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo06:
-; LINUX-32-STATIC: movl lsrc+262144, %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144
+; LINUX-32-STATIC: movl lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ldst+262144
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo06:
-; LINUX-32-PIC: movl lsrc+262144, %eax
-; LINUX-32-PIC-NEXT: movl %eax, ldst+262144
+; LINUX-32-PIC: movl lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ldst+262144
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo06:
-; LINUX-64-PIC: movl lsrc+262144(%rip), %eax
-; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip)
+; LINUX-64-PIC: movl lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], ldst+262144(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo06:
-; DARWIN-32-STATIC: movl _lsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144
+; DARWIN-32-STATIC: movl _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ldst+262144
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo06:
-; DARWIN-32-DYNAMIC: movl _lsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144
+; DARWIN-32-DYNAMIC: movl _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ldst+262144
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo06:
; DARWIN-32-PIC: calll L54$pb
; DARWIN-32-PIC-NEXT: L54$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ldst-L54$pb)+262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo06:
-; DARWIN-64-STATIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip)
+; DARWIN-64-STATIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ldst+262144(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo06:
-; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip)
+; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ldst+262144(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo06:
-; DARWIN-64-PIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip)
+; DARWIN-64-PIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], _ldst+262144(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4005,8 +4016,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo07:
-; LINUX-64-PIC: leaq ldst+262144(%rip), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst+262144(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo07:
@@ -4020,24 +4031,24 @@ entry:
; DARWIN-32-PIC: _moo07:
; DARWIN-32-PIC: calll L55$pb
; DARWIN-32-PIC-NEXT: L55$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L55$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo07:
-; DARWIN-64-STATIC: leaq _ldst+262144(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo07:
-; DARWIN-64-DYNAMIC: leaq _ldst+262144(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo07:
-; DARWIN-64-PIC: leaq _ldst+262144(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst+262144(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4049,66 +4060,66 @@ entry:
store i32 %1, i32* %2, align 4
ret void
; LINUX-64-STATIC: moo08:
-; LINUX-64-STATIC: movl lsrc+262144(%rip), %eax
-; LINUX-64-STATIC: movq lptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx)
+; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]])
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: moo08:
-; LINUX-32-STATIC: movl lsrc+262144, %eax
-; LINUX-32-STATIC-NEXT: movl lptr, %ecx
-; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-STATIC: movl lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: moo08:
-; LINUX-32-PIC: movl lsrc+262144, %eax
-; LINUX-32-PIC-NEXT: movl lptr, %ecx
-; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
+; LINUX-32-PIC: movl lsrc+262144, [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], 262144([[ECX]])
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: moo08:
-; LINUX-64-PIC: movl lsrc+262144(%rip), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; LINUX-64-PIC: movl lsrc+262144(%rip), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _moo08:
-; DARWIN-32-STATIC: movl _lsrc+262144, %eax
-; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-STATIC: movl _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _moo08:
-; DARWIN-32-DYNAMIC: movl _lsrc+262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
+; DARWIN-32-DYNAMIC: movl _lsrc+262144, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 262144([[ECX]])
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _moo08:
; DARWIN-32-PIC: calll L56$pb
; DARWIN-32-PIC-NEXT: L56$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx
-; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144([[EAX]]), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], 262144([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _moo08:
-; DARWIN-64-STATIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-STATIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _moo08:
-; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _moo08:
-; DARWIN-64-PIC: movl _lsrc+262144(%rip), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
+; DARWIN-64-PIC: movl _lsrc+262144(%rip), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]])
; DARWIN-64-PIC-NEXT: ret
}
@@ -4121,73 +4132,73 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: big00:
-; LINUX-64-STATIC: movl src+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, dst+262144(,%rdi,4)
+; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], dst+262144(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], dst+262144(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, dst+262144(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], dst+262144(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _dst+262144(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big00:
; DARWIN-32-PIC: calll L57$pb
; DARWIN-32-PIC-NEXT: L57$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4198,73 +4209,73 @@ entry:
store i32* %0, i32** @ptr, align 8
ret void
; LINUX-64-STATIC: big01:
-; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, ptr(%rip)
+; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], ptr(%rip)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, ptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, ptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big01:
-; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %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: leaq 262144([[RAX]],%rdi,4), [[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: _big01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), [[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: _big01:
; DARWIN-32-PIC: calll L58$pb
; DARWIN-32-PIC-NEXT: L58$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EDX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big01:
-; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %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: leaq 262144([[RAX]],%rdi,4), [[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: _big01:
-; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %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: leaq 262144([[RAX]],%rdi,4), [[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: _big01:
-; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %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: leaq 262144([[RAX]],%rdi,4), [[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
}
@@ -4278,83 +4289,83 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: big02:
-; LINUX-64-STATIC: movl src+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq ptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl ptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl ptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big02:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[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]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _src+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big02:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big02:
; DARWIN-32-PIC: calll L59$pb
; DARWIN-32-PIC-NEXT: L59$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx
-; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb([[EAX]]), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big02:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[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]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big02:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[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]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big02:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[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]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4367,69 +4378,69 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: big03:
-; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ddst+262144(,%rdi,4)
+; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ddst+262144(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big03:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ddst+262144(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big03:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ddst+262144(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ddst+262144(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big03:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ddst+262144(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big03:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ddst+262144(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big03:
; DARWIN-32-PIC: calll L60$pb
; DARWIN-32-PIC-NEXT: L60$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], (_ddst-L60$pb)+262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big03:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big03:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big03:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4440,66 +4451,66 @@ entry:
store i32* %0, i32** @dptr, align 8
ret void
; LINUX-64-STATIC: big04:
-; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, dptr
+; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], dptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big04:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, dptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], dptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big04:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, dptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], dptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big04:
-; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %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: leaq 262144([[RAX]],%rdi,4), [[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: _big04:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big04:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _dptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big04:
; DARWIN-32-PIC: calll L61$pb
; DARWIN-32-PIC-NEXT: L61$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L61$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big04:
-; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4513,76 +4524,76 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: big05:
-; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq dptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big05:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl dptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big05:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl dptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big05:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
-; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big05:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big05:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big05:
; DARWIN-32-PIC: calll L62$pb
; DARWIN-32-PIC-NEXT: L62$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big05:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big05:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big05:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4595,69 +4606,69 @@ entry:
store i32 %2, i32* %3, align 4
ret void
; LINUX-64-STATIC: big06:
-; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movl %eax, ldst+262144(,%rdi,4)
+; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movl [[EAX]], ldst+262144(,%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big06:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], ldst+262144(,[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big06:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl %ecx, ldst+262144(,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], ldst+262144(,[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big06:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: leaq ldst(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big06:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ldst+262144(,[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big06:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ldst+262144(,[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big06:
; DARWIN-32-PIC: calll L63$pb
; DARWIN-32-PIC-NEXT: L63$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], (_ldst-L63$pb)+262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big06:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big06:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big06:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4668,65 +4679,65 @@ entry:
store i32* %0, i32** @lptr, align 8
ret void
; LINUX-64-STATIC: big07:
-; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), %rax
-; LINUX-64-STATIC: movq %rax, lptr
+; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), [[RAX:%r.x]]
+; LINUX-64-STATIC: movq [[RAX]], lptr
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big07:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
-; LINUX-32-STATIC-NEXT: movl %eax, lptr
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[EAX]], lptr
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big07:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax
-; LINUX-32-PIC-NEXT: movl %eax, lptr
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[EAX]], lptr
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big07:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
-; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big07:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _lptr
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big07:
; DARWIN-32-PIC: calll L64$pb
; DARWIN-32-PIC-NEXT: L64$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx
-; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L64$pb([[EAX]])
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
-; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4740,75 +4751,75 @@ entry:
store i32 %3, i32* %4, align 4
ret void
; LINUX-64-STATIC: big08:
-; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), %eax
-; LINUX-64-STATIC: movq lptr(%rip), %rcx
-; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]]
+; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-STATIC: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: big08:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
-; LINUX-32-STATIC-NEXT: movl lptr, %edx
-; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: big08:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
-; LINUX-32-PIC-NEXT: movl lptr, %edx
-; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[EDX:%e.x]]
+; LINUX-32-PIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: big08:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
-; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
+; LINUX-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _big08:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
-; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _big08:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
-; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[EDX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], 262144([[EDX]],[[EAX]],4)
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _big08:
; DARWIN-32-PIC: calll L65$pb
; DARWIN-32-PIC-NEXT: L65$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx
-; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl [[EDX]], 262144([[EAX]],[[ECX]],4)
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _big08:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _big08:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _big08:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
-; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
-; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl 262144([[RAX]],%rdi,4), [[EAX:%e.x]]
+; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
+; DARWIN-64-PIC-NEXT: movl [[EAX]], 262144([[RCX]],%rdi,4)
; DARWIN-64-PIC-NEXT: ret
}
@@ -4842,8 +4853,8 @@ entry:
; DARWIN-32-PIC: _bar00:
; DARWIN-32-PIC: calll L66$pb
; DARWIN-32-PIC-NEXT: L66$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar00:
@@ -4889,8 +4900,8 @@ entry:
; DARWIN-32-PIC: _bxr00:
; DARWIN-32-PIC: calll L67$pb
; DARWIN-32-PIC-NEXT: L67$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bxr00:
@@ -4936,8 +4947,8 @@ entry:
; DARWIN-32-PIC: _bar01:
; DARWIN-32-PIC: calll L68$pb
; DARWIN-32-PIC-NEXT: L68$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar01:
@@ -4983,8 +4994,8 @@ entry:
; DARWIN-32-PIC: _bxr01:
; DARWIN-32-PIC: calll L69$pb
; DARWIN-32-PIC-NEXT: L69$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bxr01:
@@ -5030,8 +5041,8 @@ entry:
; DARWIN-32-PIC: _bar02:
; DARWIN-32-PIC: calll L70$pb
; DARWIN-32-PIC-NEXT: L70$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar02:
@@ -5077,8 +5088,8 @@ entry:
; DARWIN-32-PIC: _bar03:
; DARWIN-32-PIC: calll L71$pb
; DARWIN-32-PIC-NEXT: L71$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar03:
@@ -5124,8 +5135,8 @@ entry:
; DARWIN-32-PIC: _bar04:
; DARWIN-32-PIC: calll L72$pb
; DARWIN-32-PIC-NEXT: L72$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar04:
@@ -5171,8 +5182,8 @@ entry:
; DARWIN-32-PIC: _bar05:
; DARWIN-32-PIC: calll L73$pb
; DARWIN-32-PIC-NEXT: L73$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar05:
@@ -5218,8 +5229,8 @@ entry:
; DARWIN-32-PIC: _bar06:
; DARWIN-32-PIC: calll L74$pb
; DARWIN-32-PIC-NEXT: L74$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar06:
@@ -5265,8 +5276,8 @@ entry:
; DARWIN-32-PIC: _bar07:
; DARWIN-32-PIC: calll L75$pb
; DARWIN-32-PIC-NEXT: L75$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar07:
@@ -5312,8 +5323,8 @@ entry:
; DARWIN-32-PIC: _bar08:
; DARWIN-32-PIC: calll L76$pb
; DARWIN-32-PIC-NEXT: L76$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bar08:
@@ -5359,8 +5370,8 @@ entry:
; DARWIN-32-PIC: _har00:
; DARWIN-32-PIC: calll L77$pb
; DARWIN-32-PIC-NEXT: L77$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har00:
@@ -5406,8 +5417,8 @@ entry:
; DARWIN-32-PIC: _hxr00:
; DARWIN-32-PIC: calll L78$pb
; DARWIN-32-PIC-NEXT: L78$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _hxr00:
@@ -5453,8 +5464,8 @@ entry:
; DARWIN-32-PIC: _har01:
; DARWIN-32-PIC: calll L79$pb
; DARWIN-32-PIC-NEXT: L79$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har01:
@@ -5500,8 +5511,8 @@ entry:
; DARWIN-32-PIC: _hxr01:
; DARWIN-32-PIC: calll L80$pb
; DARWIN-32-PIC-NEXT: L80$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _hxr01:
@@ -5535,8 +5546,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: har02:
-; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
+; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _har02:
@@ -5544,31 +5555,31 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _har02:
-; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
+; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _har02:
; DARWIN-32-PIC: calll L81$pb
; DARWIN-32-PIC-NEXT: L81$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har02:
-; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
+; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq ([[RAX]]), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _har02:
-; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
+; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq ([[RAX]]), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _har02:
-; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq (%rax), %rax
+; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq ([[RAX]]), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -5602,8 +5613,8 @@ entry:
; DARWIN-32-PIC: _har03:
; DARWIN-32-PIC: calll L82$pb
; DARWIN-32-PIC-NEXT: L82$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har03:
@@ -5649,8 +5660,8 @@ entry:
; DARWIN-32-PIC: _har04:
; DARWIN-32-PIC: calll L83$pb
; DARWIN-32-PIC-NEXT: L83$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har04:
@@ -5684,8 +5695,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: har05:
-; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
+; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _har05:
@@ -5699,8 +5710,8 @@ entry:
; DARWIN-32-PIC: _har05:
; DARWIN-32-PIC: calll L84$pb
; DARWIN-32-PIC-NEXT: L84$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har05:
@@ -5746,8 +5757,8 @@ entry:
; DARWIN-32-PIC: _har06:
; DARWIN-32-PIC: calll L85$pb
; DARWIN-32-PIC-NEXT: L85$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har06:
@@ -5793,8 +5804,8 @@ entry:
; DARWIN-32-PIC: _har07:
; DARWIN-32-PIC: calll L86$pb
; DARWIN-32-PIC-NEXT: L86$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har07:
@@ -5842,8 +5853,8 @@ entry:
; DARWIN-32-PIC: _har08:
; DARWIN-32-PIC: calll L87$pb
; DARWIN-32-PIC-NEXT: L87$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _har08:
@@ -5891,8 +5902,8 @@ entry:
; DARWIN-32-PIC: _bat00:
; DARWIN-32-PIC: calll L88$pb
; DARWIN-32-PIC-NEXT: L88$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -5944,8 +5955,8 @@ entry:
; DARWIN-32-PIC: _bxt00:
; DARWIN-32-PIC: calll L89$pb
; DARWIN-32-PIC-NEXT: L89$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -5997,8 +6008,8 @@ entry:
; DARWIN-32-PIC: _bat01:
; DARWIN-32-PIC: calll L90$pb
; DARWIN-32-PIC-NEXT: L90$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -6050,8 +6061,8 @@ entry:
; DARWIN-32-PIC: _bxt01:
; DARWIN-32-PIC: calll L91$pb
; DARWIN-32-PIC-NEXT: L91$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -6093,8 +6104,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: bat02:
-; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
+; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), %rax
; LINUX-64-PIC-NEXT: addq $64, %rax
; LINUX-64-PIC-NEXT: ret
@@ -6104,35 +6115,35 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _bat02:
-; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
+; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _bat02:
; DARWIN-32-PIC: calll L92$pb
; DARWIN-32-PIC-NEXT: L92$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bat02:
-; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
+; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq ([[RAX]]), %rax
; DARWIN-64-STATIC-NEXT: addq $64, %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _bat02:
-; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
+; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _bat02:
-; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq (%rax), %rax
+; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq ([[RAX]]), %rax
; DARWIN-64-PIC-NEXT: addq $64, %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -6168,8 +6179,8 @@ entry:
; DARWIN-32-PIC: _bat03:
; DARWIN-32-PIC: calll L93$pb
; DARWIN-32-PIC-NEXT: L93$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bat03:
@@ -6216,8 +6227,8 @@ entry:
; DARWIN-32-PIC: _bat04:
; DARWIN-32-PIC: calll L94$pb
; DARWIN-32-PIC-NEXT: L94$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bat04:
@@ -6255,8 +6266,8 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: bat05:
-; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
+; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), %rax
; LINUX-64-PIC-NEXT: addq $64, %rax
; LINUX-64-PIC-NEXT: ret
@@ -6273,8 +6284,8 @@ entry:
; DARWIN-32-PIC: _bat05:
; DARWIN-32-PIC: calll L95$pb
; DARWIN-32-PIC-NEXT: L95$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -6324,8 +6335,8 @@ entry:
; DARWIN-32-PIC: _bat06:
; DARWIN-32-PIC: calll L96$pb
; DARWIN-32-PIC-NEXT: L96$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bat06:
@@ -6371,8 +6382,8 @@ entry:
; DARWIN-32-PIC: _bat07:
; DARWIN-32-PIC: calll L97$pb
; DARWIN-32-PIC-NEXT: L97$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bat07:
@@ -6427,8 +6438,8 @@ entry:
; DARWIN-32-PIC: _bat08:
; DARWIN-32-PIC: calll L98$pb
; DARWIN-32-PIC-NEXT: L98$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: addl $64, %eax
; DARWIN-32-PIC-NEXT: ret
@@ -6480,9 +6491,9 @@ entry:
; DARWIN-32-PIC: _bam00:
; DARWIN-32-PIC: calll L99$pb
; DARWIN-32-PIC-NEXT: L99$pb:
-; DARWIN-32-PIC-NEXT: popl %ecx
+; DARWIN-32-PIC-NEXT: popl [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam00:
@@ -6533,9 +6544,9 @@ entry:
; DARWIN-32-PIC: _bam01:
; DARWIN-32-PIC: calll L100$pb
; DARWIN-32-PIC-NEXT: L100$pb:
-; DARWIN-32-PIC-NEXT: popl %ecx
+; DARWIN-32-PIC-NEXT: popl [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam01:
@@ -6586,9 +6597,9 @@ entry:
; DARWIN-32-PIC: _bxm01:
; DARWIN-32-PIC: calll L101$pb
; DARWIN-32-PIC-NEXT: L101$pb:
-; DARWIN-32-PIC-NEXT: popl %ecx
+; DARWIN-32-PIC-NEXT: popl [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bxm01:
@@ -6629,9 +6640,9 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: bam02:
-; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rcx
+; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
; LINUX-64-PIC-NEXT: movl $262144, %eax
-; LINUX-64-PIC-NEXT: addq (%rcx), %rax
+; LINUX-64-PIC-NEXT: addq ([[RCX]]), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _bam02:
@@ -6640,36 +6651,36 @@ entry:
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _bam02:
-; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %ecx
+; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax
-; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax
+; DARWIN-32-DYNAMIC-NEXT: addl ([[ECX]]), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _bam02:
; DARWIN-32-PIC: calll L102$pb
; DARWIN-32-PIC-NEXT: L102$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb([[EAX]]), [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl (%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl ([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam02:
-; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rcx
+; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
; DARWIN-64-STATIC-NEXT: movl $262144, %eax
-; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax
+; DARWIN-64-STATIC-NEXT: addq ([[RCX]]), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _bam02:
-; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rcx
+; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax
-; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax
+; DARWIN-64-DYNAMIC-NEXT: addq ([[RCX]]), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _bam02:
-; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rcx
+; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
; DARWIN-64-PIC-NEXT: movl $262144, %eax
-; DARWIN-64-PIC-NEXT: addq (%rcx), %rax
+; DARWIN-64-PIC-NEXT: addq ([[RCX]]), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -6704,8 +6715,8 @@ entry:
; DARWIN-32-PIC: _bam03:
; DARWIN-32-PIC: calll L103$pb
; DARWIN-32-PIC-NEXT: L103$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam03:
@@ -6752,8 +6763,8 @@ entry:
; DARWIN-32-PIC: _bam04:
; DARWIN-32-PIC: calll L104$pb
; DARWIN-32-PIC-NEXT: L104$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam04:
@@ -6791,9 +6802,9 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: bam05:
-; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rcx
+; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
; LINUX-64-PIC-NEXT: movl $262144, %eax
-; LINUX-64-PIC-NEXT: addq (%rcx), %rax
+; LINUX-64-PIC-NEXT: addq ([[RCX]]), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _bam05:
@@ -6809,9 +6820,9 @@ entry:
; DARWIN-32-PIC: _bam05:
; DARWIN-32-PIC: calll L105$pb
; DARWIN-32-PIC-NEXT: L105$pb:
-; DARWIN-32-PIC-NEXT: popl %ecx
+; DARWIN-32-PIC-NEXT: popl [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam05:
@@ -6860,8 +6871,8 @@ entry:
; DARWIN-32-PIC: _bam06:
; DARWIN-32-PIC: calll L106$pb
; DARWIN-32-PIC-NEXT: L106$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam06:
@@ -6908,7 +6919,7 @@ entry:
; DARWIN-32-PIC: calll L107$pb
; DARWIN-32-PIC-NEXT: L107$pb:
; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax
+; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam07:
@@ -6963,9 +6974,9 @@ entry:
; DARWIN-32-PIC: _bam08:
; DARWIN-32-PIC: calll L108$pb
; DARWIN-32-PIC-NEXT: L108$pb:
-; DARWIN-32-PIC-NEXT: popl %ecx
+; DARWIN-32-PIC-NEXT: popl [[ECX:%e.x]]
; DARWIN-32-PIC-NEXT: movl $262144, %eax
-; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax
+; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb([[ECX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _bam08:
@@ -6995,53 +7006,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal src+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal src+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal src+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _src+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat00:
; DARWIN-32-PIC: calll L109$pb
; DARWIN-32-PIC-NEXT: L109$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7056,53 +7067,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cxt00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal xsrc+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cxt00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xsrc+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xsrc+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cxt00:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cxt00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cxt00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cxt00:
; DARWIN-32-PIC: calll L110$pb
; DARWIN-32-PIC-NEXT: L110$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cxt00:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cxt00:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cxt00:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7117,53 +7128,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dst+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dst+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat01:
-; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dst+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat01:
; DARWIN-32-PIC: calll L111$pb
; DARWIN-32-PIC-NEXT: L111$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat01:
-; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat01:
-; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat01:
-; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7178,53 +7189,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cxt01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal xdst+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cxt01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xdst+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cxt01:
-; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cxt01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xdst+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cxt01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cxt01:
; DARWIN-32-PIC: calll L112$pb
; DARWIN-32-PIC-NEXT: L112$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cxt01:
-; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cxt01:
-; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cxt01:
-; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7236,67 +7247,67 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cat02:
-; LINUX-64-STATIC: movq ptr(%rip), %rax
-; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl ptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl ptr, %ecx
-; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat02:
-; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat02:
-; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat02:
; DARWIN-32-PIC: calll L113$pb
; DARWIN-32-PIC-NEXT: L113$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat02:
-; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat02:
-; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat02:
-; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq (%rax), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7311,51 +7322,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat03:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dsrc+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat03:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dsrc+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dsrc+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat03:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat03:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat03:
; DARWIN-32-PIC: calll L114$pb
; DARWIN-32-PIC-NEXT: L114$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat03:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat03:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat03:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7370,51 +7381,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat04:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ddst+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat04:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ddst+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat04:
-; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat04:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ddst+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat04:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat04:
; DARWIN-32-PIC: calll L115$pb
; DARWIN-32-PIC-NEXT: L115$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat04:
-; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7426,62 +7437,62 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cat05:
-; LINUX-64-STATIC: movq dptr(%rip), %rax
-; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat05:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat05:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dptr, %ecx
-; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat05:
-; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat05:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat05:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat05:
; DARWIN-32-PIC: calll L116$pb
; DARWIN-32-PIC-NEXT: L116$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat05:
-; DARWIN-64-STATIC: movq _dptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat05:
-; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat05:
-; DARWIN-64-PIC: movq _dptr(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7496,51 +7507,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat06:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal lsrc+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat06:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal lsrc+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal lsrc+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat06:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat06:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat06:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat06:
; DARWIN-32-PIC: calll L117$pb
; DARWIN-32-PIC-NEXT: L117$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat06:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat06:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat06:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7555,51 +7566,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat07:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ldst+64(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat07:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ldst+64(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat07:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ldst+64(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat07:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat07:
; DARWIN-32-PIC: calll L118$pb
; DARWIN-32-PIC-NEXT: L118$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7611,61 +7622,61 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cat08:
-; LINUX-64-STATIC: movq lptr(%rip), %rax
-; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cat08:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cat08:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lptr, %ecx
-; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cat08:
-; LINUX-64-PIC: movq lptr(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cat08:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cat08:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 64([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cat08:
; DARWIN-32-PIC: calll L119$pb
; DARWIN-32-PIC-NEXT: L119$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 64([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cat08:
-; DARWIN-64-STATIC: movq _lptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cat08:
-; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cat08:
-; DARWIN-64-PIC: movq _lptr(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 64([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7680,53 +7691,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal src+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal src+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal src+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam00:
-; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _src+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam00:
; DARWIN-32-PIC: calll L120$pb
; DARWIN-32-PIC-NEXT: L120$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam00:
-; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam00:
-; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam00:
-; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7741,53 +7752,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cxm00:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal xsrc+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cxm00:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xsrc+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cxm00:
-; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cxm00:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cxm00:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cxm00:
; DARWIN-32-PIC: calll L121$pb
; DARWIN-32-PIC-NEXT: L121$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cxm00:
-; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cxm00:
-; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cxm00:
-; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7802,53 +7813,53 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam01:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dst+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dst+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam01:
-; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dst+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam01:
; DARWIN-32-PIC: calll L122$pb
; DARWIN-32-PIC-NEXT: L122$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam01:
-; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam01:
-; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam01:
-; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7864,52 +7875,52 @@ entry:
; LINUX-32-STATIC: cxm01:
; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax
+; LINUX-32-STATIC-NEXT: leal xdst+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cxm01:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal xdst+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal xdst+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cxm01:
-; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cxm01:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cxm01:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cxm01:
; DARWIN-32-PIC: calll L123$pb
; DARWIN-32-PIC-NEXT: L123$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cxm01:
-; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cxm01:
-; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cxm01:
-; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7921,67 +7932,67 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cam02:
-; LINUX-64-STATIC: movq ptr(%rip), %rax
-; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam02:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl ptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam02:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl ptr, %ecx
-; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam02:
-; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam02:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam02:
-; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
-; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam02:
; DARWIN-32-PIC: calll L124$pb
; DARWIN-32-PIC-NEXT: L124$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: movl (%eax), %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam02:
-; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam02:
-; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam02:
-; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
-; DARWIN-64-PIC-NEXT: movq (%rax), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -7996,51 +8007,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam03:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal dsrc+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam03:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal dsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal dsrc+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam03:
-; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam03:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam03:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam03:
; DARWIN-32-PIC: calll L125$pb
; DARWIN-32-PIC-NEXT: L125$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam03:
-; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam03:
-; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam03:
-; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8055,51 +8066,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam04:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ddst+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam04:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ddst+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam04:
-; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam04:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam04:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam04:
; DARWIN-32-PIC: calll L126$pb
; DARWIN-32-PIC-NEXT: L126$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam04:
-; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam04:
-; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam04:
-; DARWIN-64-PIC: leaq _ddst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8111,62 +8122,62 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cam05:
-; LINUX-64-STATIC: movq dptr(%rip), %rax
-; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam05:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl dptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam05:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl dptr, %ecx
-; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam05:
-; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: movq (%rax), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ([[RAX]]), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam05:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam05:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam05:
; DARWIN-32-PIC: calll L127$pb
; DARWIN-32-PIC-NEXT: L127$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam05:
-; DARWIN-64-STATIC: movq _dptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam05:
-; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam05:
-; DARWIN-64-PIC: movq _dptr(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _dptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8181,51 +8192,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam06:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal lsrc+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam06:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal lsrc+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal lsrc+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam06:
-; LINUX-64-PIC: leaq lsrc(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam06:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam06:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam06:
; DARWIN-32-PIC: calll L128$pb
; DARWIN-32-PIC-NEXT: L128$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam06:
-; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam06:
-; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam06:
-; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _lsrc(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8240,51 +8251,51 @@ entry:
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam07:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal ldst+262144(,[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam07:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: leal ldst+262144(,[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam07:
-; LINUX-64-PIC: leaq ldst(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam07:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam07:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam07:
; DARWIN-32-PIC: calll L129$pb
; DARWIN-32-PIC-NEXT: L129$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam07:
-; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam07:
-; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam07:
-; DARWIN-64-PIC: leaq _ldst(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8296,61 +8307,61 @@ entry:
%3 = bitcast i32* %2 to i8*
ret i8* %3
; LINUX-64-STATIC: cam08:
-; LINUX-64-STATIC: movq lptr(%rip), %rax
-; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-STATIC: ret
; LINUX-32-STATIC: cam08:
-; LINUX-32-STATIC: movl 4(%esp), %eax
-; LINUX-32-STATIC-NEXT: movl lptr, %ecx
-; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-STATIC-NEXT: ret
; LINUX-32-PIC: cam08:
-; LINUX-32-PIC: movl 4(%esp), %eax
-; LINUX-32-PIC-NEXT: movl lptr, %ecx
-; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
+; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
+; LINUX-32-PIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: cam08:
-; LINUX-64-PIC: movq lptr(%rip), %rax
-; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; LINUX-64-PIC: movq lptr(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _cam08:
-; DARWIN-32-STATIC: movl 4(%esp), %eax
-; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-STATIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-STATIC-NEXT: ret
; DARWIN-32-DYNAMIC: _cam08:
-; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
-; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
-; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
+; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
+; DARWIN-32-DYNAMIC-NEXT: leal 262144([[ECX]],[[EAX]],4), %eax
; DARWIN-32-DYNAMIC-NEXT: ret
; DARWIN-32-PIC: _cam08:
; DARWIN-32-PIC: calll L130$pb
; DARWIN-32-PIC-NEXT: L130$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
-; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax
-; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb([[EAX]]), [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal 262144([[EAX]],[[ECX]],4), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _cam08:
-; DARWIN-64-STATIC: movq _lptr(%rip), %rax
-; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-STATIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-STATIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _cam08:
-; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
-; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-DYNAMIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _cam08:
-; DARWIN-64-PIC: movq _lptr(%rip), %rax
-; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
+; DARWIN-64-PIC: movq _lptr(%rip), [[RAX:%r.x]]
+; DARWIN-64-PIC-NEXT: leaq 262144([[RAX]],%rdi,4), %rax
; DARWIN-64-PIC-NEXT: ret
}
@@ -8648,8 +8659,8 @@ entry:
; DARWIN-32-PIC: _address:
; DARWIN-32-PIC: calll L133$pb
; DARWIN-32-PIC-NEXT: L133$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _address:
@@ -8697,8 +8708,8 @@ entry:
; DARWIN-32-PIC: _laddress:
; DARWIN-32-PIC: calll L134$pb
; DARWIN-32-PIC-NEXT: L134$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _laddress:
@@ -8744,8 +8755,8 @@ entry:
; DARWIN-32-PIC: _daddress:
; DARWIN-32-PIC: calll L135$pb
; DARWIN-32-PIC-NEXT: L135$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb([[EAX]]), %eax
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _daddress:
@@ -9206,11 +9217,11 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: icaller:
-; LINUX-64-PIC: pushq %rbx
-; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: popq %rbx
+; LINUX-64-PIC: pushq [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: popq [[RBX:%r.x]]
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _icaller:
@@ -9235,8 +9246,8 @@ entry:
; DARWIN-32-PIC-NEXT: subl $8, %esp
; DARWIN-32-PIC-NEXT: calll L142$pb
; DARWIN-32-PIC-NEXT: L142$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb([[EAX]]), %esi
; DARWIN-32-PIC-NEXT: calll *(%esi)
; DARWIN-32-PIC-NEXT: calll *(%esi)
; DARWIN-32-PIC-NEXT: addl $8, %esp
@@ -9244,27 +9255,27 @@ entry:
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _icaller:
-; DARWIN-64-STATIC: pushq %rbx
-; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-STATIC-NEXT: callq *(%rbx)
-; DARWIN-64-STATIC-NEXT: callq *(%rbx)
-; DARWIN-64-STATIC-NEXT: popq %rbx
+; DARWIN-64-STATIC: pushq [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT: callq *([[RBX]])
+; DARWIN-64-STATIC-NEXT: callq *([[RBX]])
+; DARWIN-64-STATIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _icaller:
-; DARWIN-64-DYNAMIC: pushq %rbx
-; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT: popq %rbx
+; DARWIN-64-DYNAMIC: pushq [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: callq *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT: callq *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _icaller:
-; DARWIN-64-PIC: pushq %rbx
-; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-PIC-NEXT: callq *(%rbx)
-; DARWIN-64-PIC-NEXT: callq *(%rbx)
-; DARWIN-64-PIC-NEXT: popq %rbx
+; DARWIN-64-PIC: pushq [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT: callq *([[RBX]])
+; DARWIN-64-PIC-NEXT: callq *([[RBX]])
+; DARWIN-64-PIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-PIC-NEXT: ret
}
@@ -9296,11 +9307,11 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: dicaller:
-; LINUX-64-PIC: pushq %rbx
-; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: popq %rbx
+; LINUX-64-PIC: pushq [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: popq [[RBX:%r.x]]
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _dicaller:
@@ -9461,11 +9472,11 @@ entry:
; LINUX-32-PIC-NEXT: ret
; LINUX-64-PIC: itailcaller:
-; LINUX-64-PIC: pushq %rbx
-; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: callq *(%rbx)
-; LINUX-64-PIC-NEXT: popq %rbx
+; LINUX-64-PIC: pushq [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: callq *([[RBX]])
+; LINUX-64-PIC-NEXT: popq [[RBX:%r.x]]
; LINUX-64-PIC-NEXT: ret
; DARWIN-32-STATIC: _itailcaller:
@@ -9490,8 +9501,8 @@ entry:
; DARWIN-32-PIC-NEXT: subl $8, %esp
; DARWIN-32-PIC-NEXT: calll L145$pb
; DARWIN-32-PIC-NEXT: L145$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb([[EAX]]), %esi
; DARWIN-32-PIC-NEXT: calll *(%esi)
; DARWIN-32-PIC-NEXT: calll *(%esi)
; DARWIN-32-PIC-NEXT: addl $8, %esp
@@ -9499,27 +9510,27 @@ entry:
; DARWIN-32-PIC-NEXT: ret
; DARWIN-64-STATIC: _itailcaller:
-; DARWIN-64-STATIC: pushq %rbx
-; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-STATIC-NEXT: callq *(%rbx)
-; DARWIN-64-STATIC-NEXT: callq *(%rbx)
-; DARWIN-64-STATIC-NEXT: popq %rbx
+; DARWIN-64-STATIC: pushq [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-STATIC-NEXT: callq *([[RBX]])
+; DARWIN-64-STATIC-NEXT: callq *([[RBX]])
+; DARWIN-64-STATIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-STATIC-NEXT: ret
; DARWIN-64-DYNAMIC: _itailcaller:
-; DARWIN-64-DYNAMIC: pushq %rbx
-; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
-; DARWIN-64-DYNAMIC-NEXT: popq %rbx
+; DARWIN-64-DYNAMIC: pushq [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-DYNAMIC-NEXT: callq *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT: callq *([[RBX]])
+; DARWIN-64-DYNAMIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-DYNAMIC-NEXT: ret
; DARWIN-64-PIC: _itailcaller:
-; DARWIN-64-PIC: pushq %rbx
-; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
-; DARWIN-64-PIC-NEXT: callq *(%rbx)
-; DARWIN-64-PIC-NEXT: callq *(%rbx)
-; DARWIN-64-PIC-NEXT: popq %rbx
+; DARWIN-64-PIC: pushq [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
+; DARWIN-64-PIC-NEXT: callq *([[RBX]])
+; DARWIN-64-PIC-NEXT: callq *([[RBX]])
+; DARWIN-64-PIC-NEXT: popq [[RBX:%r.x]]
; DARWIN-64-PIC-NEXT: ret
}
@@ -9547,8 +9558,8 @@ entry:
; LINUX-64-PIC: ditailcaller:
; LINUX-64-PIC: pushq
-; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rax
-; LINUX-64-PIC-NEXT: callq *(%rax)
+; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), [[RAX:%r.x]]
+; LINUX-64-PIC-NEXT: callq *([[RAX]])
; LINUX-64-PIC-NEXT: popq
; LINUX-64-PIC-NEXT: ret
@@ -9568,8 +9579,8 @@ entry:
; DARWIN-32-PIC: subl $12, %esp
; DARWIN-32-PIC-NEXT: calll L146$pb
; DARWIN-32-PIC-NEXT: L146$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb([[EAX]])
; DARWIN-32-PIC-NEXT: addl $12, %esp
; DARWIN-32-PIC-NEXT: ret
@@ -9635,8 +9646,8 @@ entry:
; DARWIN-32-PIC: subl $12, %esp
; DARWIN-32-PIC-NEXT: calll L147$pb
; DARWIN-32-PIC-NEXT: L147$pb:
-; DARWIN-32-PIC-NEXT: popl %eax
-; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax)
+; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
+; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb([[EAX]])
; DARWIN-32-PIC-NEXT: addl $12, %esp
; DARWIN-32-PIC-NEXT: ret
diff --git a/test/CodeGen/X86/add.ll b/test/CodeGen/X86/add.ll
index 62c898025c80a..b95e5b53c2dcf 100644
--- a/test/CodeGen/X86/add.ll
+++ b/test/CodeGen/X86/add.ll
@@ -133,3 +133,18 @@ define i32 @test9(i32 %x, i32 %y) nounwind readnone {
; X64: subl
; X64: ret
}
+
+define i1 @test10(i32 %x) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %x, i32 1)
+ %obit = extractvalue {i32, i1} %t, 1
+ ret i1 %obit
+
+; X32: test10:
+; X32: incl
+; X32-NEXT: seto
+
+; X64: test10:
+; X64: incl
+; X64-NEXT: seto
+}
diff --git a/test/CodeGen/X86/adde-carry.ll b/test/CodeGen/X86/adde-carry.ll
new file mode 100644
index 0000000000000..98c4f9934318f
--- /dev/null
+++ b/test/CodeGen/X86/adde-carry.ll
@@ -0,0 +1,26 @@
+; RUN: llc -march=x86-64 < %s | FileCheck %s -check-prefix=CHECK-64
+; RUN: llc -march=x86 < %s | FileCheck %s -check-prefix=CHECK-32
+
+define void @a(i64* nocapture %s, i64* nocapture %t, i64 %a, i64 %b, i64 %c) nounwind {
+entry:
+ %0 = zext i64 %a to i128
+ %1 = zext i64 %b to i128
+ %2 = add i128 %1, %0
+ %3 = zext i64 %c to i128
+ %4 = shl i128 %3, 64
+ %5 = add i128 %4, %2
+ %6 = lshr i128 %5, 64
+ %7 = trunc i128 %6 to i64
+ store i64 %7, i64* %s, align 8
+ %8 = trunc i128 %2 to i64
+ store i64 %8, i64* %t, align 8
+ ret void
+
+; CHECK-32: addl
+; CHECK-32: adcl
+; CHECK-32: adcl $0
+; CHECK-32: adcl $0
+
+; CHECK-64: addq
+; CHECK-64: adcq $0
+}
diff --git a/test/CodeGen/X86/aliases.ll b/test/CodeGen/X86/aliases.ll
index 3ed3bd67cef17..f92027998a408 100644
--- a/test/CodeGen/X86/aliases.ll
+++ b/test/CodeGen/X86/aliases.ll
@@ -1,6 +1,4 @@
; RUN: llc < %s -mtriple=i686-pc-linux-gnu -asm-verbose=false -o %t
-; RUN: grep { = } %t | count 16
-; RUN: grep set %t | count 18
; RUN: grep globl %t | count 6
; RUN: grep weak %t | count 1
; RUN: grep hidden %t | count 1
diff --git a/test/CodeGen/X86/alignment.ll b/test/CodeGen/X86/alignment.ll
index 9678e6df740ed..7e911159790b0 100644
--- a/test/CodeGen/X86/alignment.ll
+++ b/test/CodeGen/X86/alignment.ll
@@ -6,7 +6,7 @@
; CHECK: .bss
; CHECK: .globl GlobalA
-; CHECK: .align 16
+; CHECK: .align 8
; CHECK: GlobalA:
; CHECK: .zero 384
@@ -15,12 +15,12 @@
; PR6921
@GlobalB = common global { [384 x i8] } zeroinitializer, align 8
-; CHECK: .comm GlobalB,384,16
+; CHECK: .comm GlobalB,384,8
@GlobalC = common global { [384 x i8] } zeroinitializer, align 2
-; CHECK: .comm GlobalC,384,16
+; CHECK: .comm GlobalC,384,2
diff --git a/test/CodeGen/X86/apm.ll b/test/CodeGen/X86/apm.ll
index d0c64f2433865..b514cf6427d53 100644
--- a/test/CodeGen/X86/apm.ll
+++ b/test/CodeGen/X86/apm.ll
@@ -1,10 +1,16 @@
-; RUN: llc < %s -o - -march=x86-64 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -check-prefix=WIN64
; PR8573
; CHECK: foo:
; CHECK: leaq (%rdi), %rax
; CHECK-NEXT: movl %esi, %ecx
; CHECK-NEXT: monitor
+; WIN64: foo:
+; WIN64: leaq (%rcx), %rax
+; WIN64-NEXT: movl %edx, %ecx
+; WIN64-NEXT: movl %r8d, %edx
+; WIN64-NEXT: monitor
define void @foo(i8* %P, i32 %E, i32 %H) nounwind {
entry:
tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
@@ -17,6 +23,9 @@ declare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
; CHECK: movl %edi, %ecx
; CHECK-NEXT: movl %esi, %eax
; CHECK-NEXT: mwait
+; WIN64: bar:
+; WIN64: movl %edx, %eax
+; WIN64-NEXT: mwait
define void @bar(i32 %E, i32 %H) nounwind {
entry:
tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
diff --git a/test/CodeGen/X86/avoid-lea-scale2.ll b/test/CodeGen/X86/avoid-lea-scale2.ll
index 8003de262d2cf..cee2ee4e03992 100644
--- a/test/CodeGen/X86/avoid-lea-scale2.ll
+++ b/test/CodeGen/X86/avoid-lea-scale2.ll
@@ -1,4 +1,6 @@
-; RUN: llc < %s -march=x86-64 | grep {leal.*-2(\[%\]rdi,\[%\]rdi)}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK: leal -2({{%rdi,%rdi|%rcx,%rcx}})
define i32 @foo(i32 %x) nounwind readnone {
%t0 = shl i32 %x, 1
diff --git a/test/CodeGen/X86/avx-intrinsics-x86.ll b/test/CodeGen/X86/avx-intrinsics-x86.ll
index 6c32396a4177a..5201688686d3b 100644
--- a/test/CodeGen/X86/avx-intrinsics-x86.ll
+++ b/test/CodeGen/X86/avx-intrinsics-x86.ll
@@ -247,7 +247,7 @@ declare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind
define <16 x i8> @test_x86_sse2_loadu_dq(i8* %a0) {
; CHECK: movl
- ; CHECK: vmovdqu
+ ; CHECK: vmovups
%res = call <16 x i8> @llvm.x86.sse2.loadu.dq(i8* %a0) ; <<16 x i8>> [#uses=1]
ret <16 x i8> %res
}
@@ -256,7 +256,7 @@ declare <16 x i8> @llvm.x86.sse2.loadu.dq(i8*) nounwind readonly
define <2 x double> @test_x86_sse2_loadu_pd(i8* %a0) {
; CHECK: movl
- ; CHECK: vmovupd
+ ; CHECK: vmovups
%res = call <2 x double> @llvm.x86.sse2.loadu.pd(i8* %a0) ; <<2 x double>> [#uses=1]
ret <2 x double> %res
}
diff --git a/test/CodeGen/X86/bool-zext.ll b/test/CodeGen/X86/bool-zext.ll
new file mode 100644
index 0000000000000..d2c30c64f2373
--- /dev/null
+++ b/test/CodeGen/X86/bool-zext.ll
@@ -0,0 +1,35 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+
+; CHECK: @bar1
+; CHECK: movzbl
+; CHECK: callq
+define void @bar1(i1 zeroext %v1) nounwind ssp {
+entry:
+ %conv = zext i1 %v1 to i32
+ %call = tail call i32 (...)* @foo1(i32 %conv) nounwind
+ ret void
+}
+
+; CHECK: @bar2
+; CHECK-NOT: movzbl
+; CHECK: callq
+define void @bar2(i8 zeroext %v1) nounwind ssp {
+entry:
+ %conv = zext i8 %v1 to i32
+ %call = tail call i32 (...)* @foo1(i32 %conv) nounwind
+ ret void
+}
+
+; CHECK: @bar3
+; CHECK: callq
+; CHECK-NOT: movzbl
+; CHECK-NOT: and
+; CHECK: ret
+define zeroext i1 @bar3() nounwind ssp {
+entry:
+ %call = call i1 @foo2() nounwind
+ ret i1 %call
+}
+
+declare i32 @foo1(...)
+declare zeroext i1 @foo2()
diff --git a/test/CodeGen/X86/break-anti-dependencies.ll b/test/CodeGen/X86/break-anti-dependencies.ll
index 972b3cd43cf65..93b20437e1e89 100644
--- a/test/CodeGen/X86/break-anti-dependencies.ll
+++ b/test/CodeGen/X86/break-anti-dependencies.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 -post-RA-scheduler -break-anti-dependencies=none > %t
+; Without list-burr scheduling we may not see the difference in codegen here.
+; RUN: llc < %s -march=x86-64 -post-RA-scheduler -pre-RA-sched=list-burr -break-anti-dependencies=none > %t
; RUN: grep {%xmm0} %t | count 14
; RUN: not grep {%xmm1} %t
; RUN: llc < %s -march=x86-64 -post-RA-scheduler -break-anti-dependencies=critical > %t
diff --git a/test/CodeGen/X86/byval.ll b/test/CodeGen/X86/byval.ll
index ac0bc094e56ee..185eda1566d48 100644
--- a/test/CodeGen/X86/byval.ll
+++ b/test/CodeGen/X86/byval.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 | FileCheck -check-prefix=X86-64 %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck -check-prefix=X86-64 %s
+; Win64 has not supported byval yet.
; RUN: llc < %s -march=x86 | FileCheck -check-prefix=X86 %s
; X86: movl 4(%esp), %eax
diff --git a/test/CodeGen/X86/byval2.ll b/test/CodeGen/X86/byval2.ll
index 71129f5f6c9bc..03a9f0fb742a9 100644
--- a/test/CodeGen/X86/byval2.ll
+++ b/test/CodeGen/X86/byval2.ll
@@ -1,5 +1,28 @@
-; RUN: llc < %s -march=x86-64 | grep rep.movsq | count 2
-; RUN: llc < %s -march=x86 | grep rep.movsl | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: rep
+; X64-NOT: movsq
+
+; Win64 has not supported byval yet.
+
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: rep
+; X32-NOT: movsl
%struct.s = type { i64, i64, i64, i64, i64, i64, i64, i64,
i64, i64, i64, i64, i64, i64, i64, i64,
diff --git a/test/CodeGen/X86/byval3.ll b/test/CodeGen/X86/byval3.ll
index 504e0bed79168..8d5bb6d972d73 100644
--- a/test/CodeGen/X86/byval3.ll
+++ b/test/CodeGen/X86/byval3.ll
@@ -1,5 +1,28 @@
-; RUN: llc < %s -march=x86-64 | grep rep.movsq | count 2
-; RUN: llc < %s -march=x86 | grep rep.movsl | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: rep
+; X64-NOT: movsq
+
+; Win64 has not supported byval yet.
+
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: rep
+; X32-NOT: movsl
%struct.s = type { i32, i32, i32, i32, i32, i32, i32, i32,
i32, i32, i32, i32, i32, i32, i32, i32,
diff --git a/test/CodeGen/X86/byval4.ll b/test/CodeGen/X86/byval4.ll
index 4db9d650b439c..ae1a79a1e103b 100644
--- a/test/CodeGen/X86/byval4.ll
+++ b/test/CodeGen/X86/byval4.ll
@@ -1,5 +1,28 @@
-; RUN: llc < %s -march=x86-64 | grep rep.movsq | count 2
-; RUN: llc < %s -march=x86 | grep rep.movsl | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: rep
+; X64-NOT: movsq
+
+; Win64 has not supported byval yet.
+
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: rep
+; X32-NOT: movsl
%struct.s = type { i16, i16, i16, i16, i16, i16, i16, i16,
i16, i16, i16, i16, i16, i16, i16, i16,
diff --git a/test/CodeGen/X86/byval5.ll b/test/CodeGen/X86/byval5.ll
index 69c115b97326e..a376709d7346d 100644
--- a/test/CodeGen/X86/byval5.ll
+++ b/test/CodeGen/X86/byval5.ll
@@ -1,5 +1,28 @@
-; RUN: llc < %s -march=x86-64 | grep rep.movsq | count 2
-; RUN: llc < %s -march=x86 | grep rep.movsl | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: movsq
+; X64: rep
+; X64-NOT: rep
+; X64: movsq
+; X64-NOT: rep
+; X64-NOT: movsq
+
+; Win64 has not supported byval yet.
+
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: movsl
+; X32: rep
+; X32-NOT: rep
+; X32: movsl
+; X32-NOT: rep
+; X32-NOT: movsl
%struct.s = type { i8, i8, i8, i8, i8, i8, i8, i8,
i8, i8, i8, i8, i8, i8, i8, i8,
diff --git a/test/CodeGen/X86/call-push.ll b/test/CodeGen/X86/call-push.ll
index 02cbccc1a492f..8cca10c830736 100644
--- a/test/CodeGen/X86/call-push.ll
+++ b/test/CodeGen/X86/call-push.ll
@@ -27,3 +27,19 @@ UnifiedReturnBlock: ; preds = %entry
}
declare i32 @f(%struct.decode_t*)
+
+
+; There should be no store for the undef operand.
+
+; CHECK: _test2:
+; CHECK-NOT: 8(%esp)
+; CHECK: 4(%esp)
+; CHECK-NOT: 8(%esp)
+; CHECK: calll
+declare i32 @foo(i32, i32, i32)
+
+define void @test2() nounwind {
+entry:
+ %call = call i32 @foo(i32 8, i32 6, i32 undef)
+ ret void
+}
diff --git a/test/CodeGen/X86/coalesce-esp.ll b/test/CodeGen/X86/coalesce-esp.ll
index e0f2796f9dce9..a5848763c98d5 100644
--- a/test/CodeGen/X86/coalesce-esp.ll
+++ b/test/CodeGen/X86/coalesce-esp.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s | grep {movl %esp, %ecx}
+; RUN: llc < %s | grep {movl %esp, %ebp}
; PR4572
; Don't coalesce with %esp if it would end up putting %esp in
diff --git a/test/CodeGen/X86/coalescer-commute2.ll b/test/CodeGen/X86/coalescer-commute2.ll
index 5d10bbad09ef0..730692093de02 100644
--- a/test/CodeGen/X86/coalescer-commute2.ll
+++ b/test/CodeGen/X86/coalescer-commute2.ll
@@ -1,5 +1,10 @@
-; RUN: llc < %s -march=x86-64 | grep paddw | count 2
-; RUN: llc < %s -march=x86-64 | not grep mov
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: mov
+; CHECK: paddw
+; CHECK-NOT: mov
+; CHECK: paddw
+; CHECK-NOT: paddw
+; CHECK-NOT: mov
; The 2-addr pass should ensure that identical code is produced for these functions
; no extra copy should be generated.
diff --git a/test/CodeGen/X86/coalescer-cross.ll b/test/CodeGen/X86/coalescer-cross.ll
index 7d6f399930fd4..976db6479e090 100644
--- a/test/CodeGen/X86/coalescer-cross.ll
+++ b/test/CodeGen/X86/coalescer-cross.ll
@@ -1,6 +1,10 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin10 | not grep movaps
+; RUN: llc < %s -mtriple=i386-apple-darwin10 | FileCheck %s
+; RUN: llc < %s -mtriple=i386-apple-darwin10 -regalloc=basic | FileCheck %s
; rdar://6509240
+; CHECK: os_clock
+; CHECK-NOT: movaps
+
type { %struct.TValue } ; type %0
type { %struct.L_Umaxalign, i32, %struct.Node* } ; type %1
%struct.CallInfo = type { %struct.TValue*, %struct.TValue*, %struct.TValue*, i32*, i32, i32 }
diff --git a/test/CodeGen/X86/commute-two-addr.ll b/test/CodeGen/X86/commute-two-addr.ll
index 89b436e75c9e3..ef44a3d119b8a 100644
--- a/test/CodeGen/X86/commute-two-addr.ll
+++ b/test/CodeGen/X86/commute-two-addr.ll
@@ -38,11 +38,10 @@ define i32 @t2(i32 %X, i32 %Y) nounwind {
define %0 @t3(i32 %lb, i8 zeroext %has_lb, i8 zeroext %lb_inclusive, i32 %ub, i8 zeroext %has_ub, i8 zeroext %ub_inclusive) nounwind {
entry:
; DARWIN: t3:
+; DARWIN: shll $16
; DARWIN: shlq $32, %rcx
; DARWIN-NOT: leaq
; DARWIN: orq %rcx, %rax
-; DARWIN-NOT: mov
-; DARWIN: shll $16
%tmp21 = zext i32 %lb to i64
%tmp23 = zext i32 %ub to i64
%tmp24 = shl i64 %tmp23, 32
diff --git a/test/CodeGen/X86/constant-pool-remat-0.ll b/test/CodeGen/X86/constant-pool-remat-0.ll
index 2a44463e5d32e..4be14d2128efa 100644
--- a/test/CodeGen/X86/constant-pool-remat-0.ll
+++ b/test/CodeGen/X86/constant-pool-remat-0.ll
@@ -1,7 +1,16 @@
-; RUN: llc < %s -march=x86-64 | grep LCPI | count 3
-; RUN: llc < %s -march=x86-64 -o /dev/null -stats -info-output-file - | grep asm-printer | grep 6
-; RUN: llc < %s -march=x86 -mattr=+sse2 | grep LCPI | count 3
-; RUN: llc < %s -march=x86 -mattr=+sse2 -o /dev/null -stats -info-output-file - | grep asm-printer | grep 12
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux -regalloc=greedy | FileCheck %s
+; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
+; CHECK: LCPI
+; CHECK: LCPI
+; CHECK: LCPI
+; CHECK-NOT: LCPI
+
+; RUN: llc < %s -mtriple=x86_64-linux -o /dev/null -stats -info-output-file - | FileCheck %s -check-prefix=X64stat
+; X64stat: 6 asm-printer
+
+; RUN: llc < %s -march=x86 -mattr=+sse2 -o /dev/null -stats -info-output-file - | FileCheck %s -check-prefix=X32stat
+; X32stat: 12 asm-printer
declare float @qux(float %y)
diff --git a/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll b/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
index 17cb2b3057215..b82348b32e43c 100644
--- a/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
+++ b/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll
@@ -1,6 +1,10 @@
-; RUN: llc < %s -march=x86-64 -o %t -stats -info-output-file - | \
-; RUN: grep {asm-printer} | grep {Number of machine instrs printed} | grep 9
-; RUN: grep {leal 1(\%rsi),} %t
+; RUN: llc < %s -mtriple=x86_64-linux -o /dev/null -stats |& FileCheck %s -check-prefix=STATS
+; RUN: llc < %s -mtriple=x86_64-win32 -o /dev/null -stats |& FileCheck %s -check-prefix=STATS
+; STATS: 9 asm-printer
+
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK: leal 1({{%rsi|%rdx}}),
define fastcc zeroext i8 @fullGtU(i32 %i1, i32 %i2, i8* %ptr) nounwind optsize {
entry:
diff --git a/test/CodeGen/X86/crash.ll b/test/CodeGen/X86/crash.ll
index 2d8e63e313421..7c4e64cdf6f29 100644
--- a/test/CodeGen/X86/crash.ll
+++ b/test/CodeGen/X86/crash.ll
@@ -189,7 +189,7 @@ for.inc44: ; preds = %for.body
}
; PR9028
-define void @f(i64 %A) nounwind {
+define void @func_60(i64 %A) nounwind {
entry:
%0 = zext i64 %A to i160
%1 = shl i160 %0, 64
@@ -199,3 +199,19 @@ entry:
store i576 %4, i576* undef, align 8
ret void
}
+
+; <rdar://problem/9187792>
+define fastcc void @func_61() nounwind sspreq {
+entry:
+ %t1 = tail call i64 @llvm.objectsize.i64(i8* undef, i1 false)
+ %t2 = icmp eq i64 %t1, -1
+ br i1 %t2, label %bb2, label %bb1
+
+bb1:
+ ret void
+
+bb2:
+ ret void
+}
+
+declare i64 @llvm.objectsize.i64(i8*, i1) nounwind readnone
diff --git a/test/CodeGen/X86/dbg-declare-arg.ll b/test/CodeGen/X86/dbg-declare-arg.ll
new file mode 100644
index 0000000000000..367c1ef36c60e
--- /dev/null
+++ b/test/CodeGen/X86/dbg-declare-arg.ll
@@ -0,0 +1,123 @@
+; RUN: llc -O0 -fast-isel=false < %s | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-apple-macosx10.6.7"
+;Radar 9321650
+
+;CHECK: ##DEBUG_VALUE: my_a
+
+%class.A = type { i32, i32, i32, i32 }
+
+define void @_Z3fooi(%class.A* sret %agg.result, i32 %i) ssp {
+entry:
+ %i.addr = alloca i32, align 4
+ %j = alloca i32, align 4
+ %nrvo = alloca i1
+ %cleanup.dest.slot = alloca i32
+ store i32 %i, i32* %i.addr, align 4
+ call void @llvm.dbg.declare(metadata !{i32* %i.addr}, metadata !26), !dbg !27
+ call void @llvm.dbg.declare(metadata !{i32* %j}, metadata !28), !dbg !30
+ store i32 0, i32* %j, align 4, !dbg !31
+ %tmp = load i32* %i.addr, align 4, !dbg !32
+ %cmp = icmp eq i32 %tmp, 42, !dbg !32
+ br i1 %cmp, label %if.then, label %if.end, !dbg !32
+
+if.then: ; preds = %entry
+ %tmp1 = load i32* %i.addr, align 4, !dbg !33
+ %add = add nsw i32 %tmp1, 1, !dbg !33
+ store i32 %add, i32* %j, align 4, !dbg !33
+ br label %if.end, !dbg !35
+
+if.end: ; preds = %if.then, %entry
+ store i1 false, i1* %nrvo, !dbg !36
+ call void @llvm.dbg.declare(metadata !{%class.A* %agg.result}, metadata !37), !dbg !39
+ %tmp2 = load i32* %j, align 4, !dbg !40
+ %x = getelementptr inbounds %class.A* %agg.result, i32 0, i32 0, !dbg !40
+ store i32 %tmp2, i32* %x, align 4, !dbg !40
+ store i1 true, i1* %nrvo, !dbg !41
+ store i32 1, i32* %cleanup.dest.slot
+ %nrvo.val = load i1* %nrvo, !dbg !42
+ br i1 %nrvo.val, label %nrvo.skipdtor, label %nrvo.unused, !dbg !42
+
+nrvo.unused: ; preds = %if.end
+ call void @_ZN1AD1Ev(%class.A* %agg.result), !dbg !42
+ br label %nrvo.skipdtor, !dbg !42
+
+nrvo.skipdtor: ; preds = %nrvo.unused, %if.end
+ ret void, !dbg !42
+}
+
+declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
+
+define linkonce_odr void @_ZN1AD1Ev(%class.A* %this) unnamed_addr ssp align 2 {
+entry:
+ %this.addr = alloca %class.A*, align 8
+ store %class.A* %this, %class.A** %this.addr, align 8
+ call void @llvm.dbg.declare(metadata !{%class.A** %this.addr}, metadata !43), !dbg !44
+ %this1 = load %class.A** %this.addr
+ call void @_ZN1AD2Ev(%class.A* %this1)
+ ret void, !dbg !45
+}
+
+define linkonce_odr void @_ZN1AD2Ev(%class.A* %this) unnamed_addr nounwind ssp align 2 {
+entry:
+ %this.addr = alloca %class.A*, align 8
+ store %class.A* %this, %class.A** %this.addr, align 8
+ call void @llvm.dbg.declare(metadata !{%class.A** %this.addr}, metadata !46), !dbg !47
+ %this1 = load %class.A** %this.addr
+ %x = getelementptr inbounds %class.A* %this1, i32 0, i32 0, !dbg !48
+ store i32 1, i32* %x, align 4, !dbg !48
+ ret void, !dbg !48
+}
+
+!llvm.dbg.sp = !{!0, !10, !14, !19, !22, !25}
+
+!0 = metadata !{i32 589870, i32 0, metadata !1, metadata !"~A", metadata !"~A", metadata !"", metadata !3, i32 2, metadata !11, i1 false, i1 false, i32 0, i32 0, null, i32 256, i1 false, null, null} ; [ DW_TAG_subprogram ]
+!1 = metadata !{i32 589826, metadata !2, metadata !"A", metadata !3, i32 2, i64 128, i64 32, i32 0, i32 0, null, metadata !4, i32 0, null, null} ; [ DW_TAG_class_type ]
+!2 = metadata !{i32 589841, i32 0, i32 4, metadata !"a.cc", metadata !"/private/tmp", metadata !"clang version 3.0 (trunk 130127)", i1 true, i1 false, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
+!3 = metadata !{i32 589865, metadata !"a.cc", metadata !"/private/tmp", metadata !2} ; [ DW_TAG_file_type ]
+!4 = metadata !{metadata !5, metadata !7, metadata !8, metadata !9, metadata !0, metadata !10, metadata !14}
+!5 = metadata !{i32 589837, metadata !3, metadata !"x", metadata !3, i32 2, i64 32, i64 32, i64 0, i32 0, metadata !6} ; [ DW_TAG_member ]
+!6 = metadata !{i32 589860, metadata !2, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
+!7 = metadata !{i32 589837, metadata !3, metadata !"y", metadata !3, i32 2, i64 32, i64 32, i64 32, i32 0, metadata !6} ; [ DW_TAG_member ]
+!8 = metadata !{i32 589837, metadata !3, metadata !"z", metadata !3, i32 2, i64 32, i64 32, i64 64, i32 0, metadata !6} ; [ DW_TAG_member ]
+!9 = metadata !{i32 589837, metadata !3, metadata !"o", metadata !3, i32 2, i64 32, i64 32, i64 96, i32 0, metadata !6} ; [ DW_TAG_member ]
+!10 = metadata !{i32 589870, i32 0, metadata !1, metadata !"A", metadata !"A", metadata !"", metadata !3, i32 2, metadata !11, i1 false, i1 false, i32 0, i32 0, null, i32 320, i1 false, null, null} ; [ DW_TAG_subprogram ]
+!11 = metadata !{i32 589845, metadata !3, metadata !"", metadata !3, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !12, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+!12 = metadata !{null, metadata !13}
+!13 = metadata !{i32 589839, metadata !2, metadata !"", i32 0, i32 0, i64 64, i64 64, i64 0, i32 64, metadata !1} ; [ DW_TAG_pointer_type ]
+!14 = metadata !{i32 589870, i32 0, metadata !1, metadata !"A", metadata !"A", metadata !"", metadata !3, i32 2, metadata !15, i1 false, i1 false, i32 0, i32 0, null, i32 320, i1 false, null, null} ; [ DW_TAG_subprogram ]
+!15 = metadata !{i32 589845, metadata !3, metadata !"", metadata !3, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !16, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+!16 = metadata !{null, metadata !13, metadata !17}
+!17 = metadata !{i32 589840, metadata !2, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !18} ; [ DW_TAG_reference_type ]
+!18 = metadata !{i32 589862, metadata !2, metadata !"", null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !1} ; [ DW_TAG_const_type ]
+!19 = metadata !{i32 589870, i32 0, metadata !3, metadata !"foo", metadata !"foo", metadata !"_Z3fooi", metadata !3, i32 4, metadata !20, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%class.A*, i32)* @_Z3fooi, null, null} ; [ DW_TAG_subprogram ]
+!20 = metadata !{i32 589845, metadata !3, metadata !"", metadata !3, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !21, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+!21 = metadata !{metadata !1}
+!22 = metadata !{i32 589870, i32 0, metadata !3, metadata !"~A", metadata !"~A", metadata !"_ZN1AD1Ev", metadata !3, i32 2, metadata !23, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%class.A*)* @_ZN1AD1Ev, null, null} ; [ DW_TAG_subprogram ]
+!23 = metadata !{i32 589845, metadata !3, metadata !"", metadata !3, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !24, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
+!24 = metadata !{null}
+!25 = metadata !{i32 589870, i32 0, metadata !3, metadata !"~A", metadata !"~A", metadata !"_ZN1AD2Ev", metadata !3, i32 2, metadata !23, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 false, void (%class.A*)* @_ZN1AD2Ev, null, null} ; [ DW_TAG_subprogram ]
+!26 = metadata !{i32 590081, metadata !19, metadata !"i", metadata !3, i32 16777220, metadata !6, i32 0} ; [ DW_TAG_arg_variable ]
+!27 = metadata !{i32 4, i32 11, metadata !19, null}
+!28 = metadata !{i32 590080, metadata !29, metadata !"j", metadata !3, i32 5, metadata !6, i32 0} ; [ DW_TAG_auto_variable ]
+!29 = metadata !{i32 589835, metadata !19, i32 4, i32 14, metadata !3, i32 0} ; [ DW_TAG_lexical_block ]
+!30 = metadata !{i32 5, i32 7, metadata !29, null}
+!31 = metadata !{i32 5, i32 12, metadata !29, null}
+!32 = metadata !{i32 6, i32 3, metadata !29, null}
+!33 = metadata !{i32 7, i32 5, metadata !34, null}
+!34 = metadata !{i32 589835, metadata !29, i32 6, i32 16, metadata !3, i32 1} ; [ DW_TAG_lexical_block ]
+!35 = metadata !{i32 8, i32 3, metadata !34, null}
+!36 = metadata !{i32 9, i32 9, metadata !29, null}
+!37 = metadata !{i32 590080, metadata !29, metadata !"my_a", metadata !3, i32 9, metadata !38, i32 0} ; [ DW_TAG_auto_variable ]
+!38 = metadata !{i32 589840, metadata !2, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !1} ; [ DW_TAG_reference_type ]
+!39 = metadata !{i32 9, i32 5, metadata !29, null}
+!40 = metadata !{i32 10, i32 3, metadata !29, null}
+!41 = metadata !{i32 11, i32 3, metadata !29, null}
+!42 = metadata !{i32 12, i32 1, metadata !29, null}
+!43 = metadata !{i32 590081, metadata !22, metadata !"this", metadata !3, i32 16777218, metadata !13, i32 64} ; [ DW_TAG_arg_variable ]
+!44 = metadata !{i32 2, i32 47, metadata !22, null}
+!45 = metadata !{i32 2, i32 61, metadata !22, null}
+!46 = metadata !{i32 590081, metadata !25, metadata !"this", metadata !3, i32 16777218, metadata !13, i32 64} ; [ DW_TAG_arg_variable ]
+!47 = metadata !{i32 2, i32 47, metadata !25, null}
+!48 = metadata !{i32 2, i32 54, metadata !49, null}
+!49 = metadata !{i32 589835, metadata !25, i32 2, i32 52, metadata !3, i32 2} ; [ DW_TAG_lexical_block ]
diff --git a/test/CodeGen/X86/dbg-file-name.ll b/test/CodeGen/X86/dbg-file-name.ll
new file mode 100644
index 0000000000000..e7d5f924aa8a5
--- /dev/null
+++ b/test/CodeGen/X86/dbg-file-name.ll
@@ -0,0 +1,19 @@
+; RUN: llc -mtriple x86_64-apple-darwin10.0.0 < %s | FileCheck %s
+
+; Radar 8884898
+; CHECK: file 1 "/Users/manav/one/two/simple.c"
+
+declare i32 @printf(i8*, ...) nounwind
+
+define i32 @main() nounwind {
+ ret i32 0
+}
+
+!llvm.dbg.sp = !{ !6}
+
+!1 = metadata !{i32 589865, metadata !"simple.c", metadata !"/Users/manav/one/two", metadata !2} ; [ DW_TAG_file_type ]
+!2 = metadata !{i32 589841, i32 0, i32 1, metadata !"simple.c", metadata !"/Users/manav/one/two", metadata !"LLVM build 00", i1 true, i1 false, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
+!5 = metadata !{i32 589860, metadata !1, metadata !"int", metadata !1, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
+!6 = metadata !{i32 589870, i32 0, metadata !1, metadata !"main", metadata !"main", metadata !"main", metadata !1, i32 9, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @main} ; [ DW_TAG_subprogram ]
+!7 = metadata !{i32 589845, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, null} ; [ DW_TAG_subroutine_type ]
+!8 = metadata !{metadata !5}
diff --git a/test/CodeGen/X86/dbg-merge-loc-entry.ll b/test/CodeGen/X86/dbg-merge-loc-entry.ll
index 83df1478cf18b..76b93dd427776 100644
--- a/test/CodeGen/X86/dbg-merge-loc-entry.ll
+++ b/test/CodeGen/X86/dbg-merge-loc-entry.ll
@@ -1,10 +1,11 @@
; RUN: llc < %s | FileCheck %s
+; RUN: llc < %s -regalloc=basic | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin8"
;CHECK: Ldebug_loc0:
;CHECK-NEXT: .quad Lfunc_begin0
-;CHECK-NEXT: .quad Lfunc_end0
+;CHECK-NEXT: .quad L
;CHECK-NEXT: .short 1 ## Loc expr size
;CHECK-NEXT: .byte 85 ## DW_OP_reg5
;CHECK-NEXT: .quad 0
diff --git a/test/CodeGen/X86/dbg-value-inlined-parameter.ll b/test/CodeGen/X86/dbg-value-inlined-parameter.ll
index 89bbf34a12862..481c4ba4a49af 100644
--- a/test/CodeGen/X86/dbg-value-inlined-parameter.ll
+++ b/test/CodeGen/X86/dbg-value-inlined-parameter.ll
@@ -1,4 +1,5 @@
; RUN: llc -mtriple=x86_64-apple-darwin < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-apple-darwin -regalloc=basic < %s | FileCheck %s
;CHECK: DW_TAG_inlined_subroutine
;CHECK-NEXT: DW_AT_abstract_origin
diff --git a/test/CodeGen/X86/dbg-value-location.ll b/test/CodeGen/X86/dbg-value-location.ll
index 87d7e910c3391..a0e4d16246ffe 100644
--- a/test/CodeGen/X86/dbg-value-location.ll
+++ b/test/CodeGen/X86/dbg-value-location.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s | FileCheck %s
+; RUN: llc < %s -regalloc=basic | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin10.0.0"
;Radar 8950491
diff --git a/test/CodeGen/X86/dbg-value-range.ll b/test/CodeGen/X86/dbg-value-range.ll
index 2985224d9dbdc..da49f2dee1a77 100644
--- a/test/CodeGen/X86/dbg-value-range.ll
+++ b/test/CodeGen/X86/dbg-value-range.ll
@@ -1,4 +1,5 @@
-; RUN: llc -mtriple=x86_64-apple-darwin < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-apple-darwin10 < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-apple-darwin10 -regalloc=basic < %s | FileCheck %s
%struct.a = type { i32 }
@@ -41,15 +42,17 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
!18 = metadata !{i32 7, i32 2, metadata !12, null}
!19 = metadata !{i32 8, i32 2, metadata !12, null}
-; check that variable bar:b value range is appropriately trucated in debug info. Here Ltmp5 is end of
-; location range.
+; Check that variable bar:b value range is appropriately trucated in debug info.
+; The variable is in %rdi which is clobbered by 'movl %ebx, %edi'
+; Here Ltmp7 is the end of the location range.
-;CHECK:Ltmp6
-;CHECK-NEXT: DEBUG_VALUE: bar:b <- undef
+;CHECK: .loc 1 7 2
+;CHECK: movl
+;CHECK-NEXT: [[CLOBBER:Ltmp[0-9]*]]
;CHECK:Ldebug_loc0:
-;CHECK-NEXT: .quad Ltmp
-;CHECK-NEXT: .quad Ltmp6
+;CHECK-NEXT: .quad
+;CHECK-NEXT: .quad [[CLOBBER]]
;CHECK-NEXT: .short 1
;CHECK-NEXT: .byte 85
;CHECK-NEXT: .quad 0
diff --git a/test/CodeGen/X86/divide-by-constant.ll b/test/CodeGen/X86/divide-by-constant.ll
index fe335b9369cbc..08e3272a37075 100644
--- a/test/CodeGen/X86/divide-by-constant.ll
+++ b/test/CodeGen/X86/divide-by-constant.ll
@@ -60,3 +60,14 @@ entry:
; CHECK: shrl $31, %ecx
; CHECK: sarl $18, %eax
}
+
+define i32 @test7(i32 %x) nounwind {
+ %div = udiv i32 %x, 28
+ ret i32 %div
+; CHECK: test7:
+; CHECK: shrl $2
+; CHECK: movl $613566757
+; CHECK: mull
+; CHECK-NOT: shrl
+; CHECK: ret
+}
diff --git a/test/CodeGen/X86/dyn-stackalloc.ll b/test/CodeGen/X86/dyn-stackalloc.ll
index e577611ebcf1b..7b0fe18f65c1c 100644
--- a/test/CodeGen/X86/dyn-stackalloc.ll
+++ b/test/CodeGen/X86/dyn-stackalloc.ll
@@ -1,6 +1,9 @@
-; RUN: llc < %s -mtriple=i686-linux | not egrep {\\\$4294967289|-7}
-; RUN: llc < %s -mtriple=i686-linux | egrep {\\\$4294967280|-16}
-; RUN: llc < %s -mtriple=x86_64-linux | grep {\\-16}
+; RUN: llc < %s -mtriple=i686-linux | FileCheck %s -check-prefix=X32
+; X32-NOT: {{$429496728|-7}}
+; X32: {{$4294967280|-16}}
+; X32-NOT: {{$429496728|-7}}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64: -16
define void @t() nounwind {
A:
diff --git a/test/CodeGen/X86/fast-isel-gep.ll b/test/CodeGen/X86/fast-isel-gep.ll
index fbe0243716bd6..48abfd0f26e57 100644
--- a/test/CodeGen/X86/fast-isel-gep.ll
+++ b/test/CodeGen/X86/fast-isel-gep.ll
@@ -87,4 +87,23 @@ define i64 @test5(i8* %A, i32 %I, i64 %B) nounwind {
; X64-NEXT: ret
}
+; PR9500, rdar://9156159 - Don't do non-local address mode folding,
+; because it may require values which wouldn't otherwise be live out
+; of their blocks.
+define void @test6() {
+if.end: ; preds = %if.then, %invoke.cont
+ %tmp15 = load i64* undef
+ %dec = add i64 %tmp15, 13
+ store i64 %dec, i64* undef
+ %call17 = invoke i8* @_ZNK18G__FastAllocString4dataEv()
+ to label %invoke.cont16 unwind label %lpad
+invoke.cont16: ; preds = %if.then14
+ %arrayidx18 = getelementptr inbounds i8* %call17, i64 %dec
+ store i8 0, i8* %arrayidx18
+ unreachable
+
+lpad: ; preds = %if.end19, %if.then14, %if.end, %entry
+ unreachable
+}
+declare i8* @_ZNK18G__FastAllocString4dataEv() nounwind
diff --git a/test/CodeGen/X86/fast-isel-i1.ll b/test/CodeGen/X86/fast-isel-i1.ll
index d0665783ce646..5d572c1de5007 100644
--- a/test/CodeGen/X86/fast-isel-i1.ll
+++ b/test/CodeGen/X86/fast-isel-i1.ll
@@ -1,19 +1,40 @@
-; RUN: llc < %s -march=x86 -fast-isel | grep {andb \$1, %}
+; RUN: llc < %s -march=x86 -fast-isel | FileCheck %s
-declare i64 @bar(i64)
+declare i64 @test1a(i64)
-define i32 @foo(i64 %x) nounwind {
- %y = add i64 %x, -3 ; <i64> [#uses=1]
- %t = call i64 @bar(i64 %y) ; <i64> [#uses=1]
- %s = mul i64 %t, 77 ; <i64> [#uses=1]
- %z = trunc i64 %s to i1 ; <i1> [#uses=1]
+define i32 @test1(i64 %x) nounwind {
+; CHECK: test1:
+; CHECK: andb $1, %
+ %y = add i64 %x, -3
+ %t = call i64 @test1a(i64 %y)
+ %s = mul i64 %t, 77
+ %z = trunc i64 %s to i1
br label %next
next: ; preds = %0
- %u = zext i1 %z to i32 ; <i32> [#uses=1]
- %v = add i32 %u, 1999 ; <i32> [#uses=1]
+ %u = zext i1 %z to i32
+ %v = add i32 %u, 1999
br label %exit
exit: ; preds = %next
ret i32 %v
}
+
+define void @test2(i8* %a) nounwind {
+entry:
+; CHECK: test2:
+; CHECK: movb {{.*}} %al
+; CHECK-NEXT: xorb $1, %al
+; CHECK-NEXT: testb $1
+ %tmp = load i8* %a, align 1
+ %tobool = trunc i8 %tmp to i1
+ %tobool2 = xor i1 %tobool, true
+ br i1 %tobool2, label %if.then, label %if.end
+
+if.then:
+ call void @test2(i8* null)
+ br label %if.end
+
+if.end:
+ ret void
+}
diff --git a/test/CodeGen/X86/fast-isel-shift-imm.ll b/test/CodeGen/X86/fast-isel-shift-imm.ll
deleted file mode 100644
index 5c62c1880516e..0000000000000
--- a/test/CodeGen/X86/fast-isel-shift-imm.ll
+++ /dev/null
@@ -1,8 +0,0 @@
-; RUN: llc < %s -march=x86 -O0 | grep {sarl \$80, %e}
-; PR3242
-
-define void @foo(i32 %x, i32* %p) nounwind {
- %y = ashr i32 %x, 50000
- store i32 %y, i32* %p
- ret void
-}
diff --git a/test/CodeGen/X86/fast-isel-x86-64.ll b/test/CodeGen/X86/fast-isel-x86-64.ll
new file mode 100644
index 0000000000000..c4afc10ffab8a
--- /dev/null
+++ b/test/CodeGen/X86/fast-isel-x86-64.ll
@@ -0,0 +1,262 @@
+; RUN: llc < %s -fast-isel -O0 -regalloc=fast -asm-verbose=0 -fast-isel-abort | FileCheck %s
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-apple-darwin10.0.0"
+
+; Make sure that fast-isel folds the immediate into the binop even though it
+; is non-canonical.
+define i32 @test1(i32 %i) nounwind ssp {
+ %and = and i32 8, %i
+ ret i32 %and
+}
+
+; CHECK: test1:
+; CHECK: andl $8,
+
+
+; rdar://9289512 - The load should fold into the compare.
+define void @test2(i64 %x) nounwind ssp {
+entry:
+ %x.addr = alloca i64, align 8
+ store i64 %x, i64* %x.addr, align 8
+ %tmp = load i64* %x.addr, align 8
+ %cmp = icmp sgt i64 %tmp, 42
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then: ; preds = %entry
+ br label %if.end
+
+if.end: ; preds = %if.then, %entry
+ ret void
+; CHECK: test2:
+; CHECK: movq %rdi, -8(%rsp)
+; CHECK: cmpq $42, -8(%rsp)
+}
+
+
+
+
+@G = external global i32
+define i64 @test3() nounwind {
+ %A = ptrtoint i32* @G to i64
+ ret i64 %A
+; CHECK: test3:
+; CHECK: movq _G@GOTPCREL(%rip), %rax
+; CHECK-NEXT: ret
+}
+
+
+
+; rdar://9289558
+@rtx_length = external global [153 x i8]
+
+define i32 @test4(i64 %idxprom9) nounwind {
+ %arrayidx10 = getelementptr inbounds [153 x i8]* @rtx_length, i32 0, i64 %idxprom9
+ %tmp11 = load i8* %arrayidx10, align 1
+ %conv = zext i8 %tmp11 to i32
+ ret i32 %conv
+
+; CHECK: test4:
+; CHECK: movq _rtx_length@GOTPCREL(%rip), %rax
+; CHECK-NEXT: movzbl (%rax,%rdi), %eax
+; CHECK-NEXT: ret
+}
+
+
+; PR3242 - Out of range shifts should not be folded by fastisel.
+define void @test5(i32 %x, i32* %p) nounwind {
+ %y = ashr i32 %x, 50000
+ store i32 %y, i32* %p
+ ret void
+
+; CHECK: test5:
+; CHECK: movl $50000, %ecx
+; CHECK: sarl %cl, %edi
+; CHECK: ret
+}
+
+; rdar://9289501 - fast isel should fold trivial multiplies to shifts.
+define i64 @test6(i64 %x) nounwind ssp {
+entry:
+ %mul = mul nsw i64 %x, 8
+ ret i64 %mul
+
+; CHECK: test6:
+; CHECK: leaq (,%rdi,8), %rax
+}
+
+define i32 @test7(i32 %x) nounwind ssp {
+entry:
+ %mul = mul nsw i32 %x, 8
+ ret i32 %mul
+; CHECK: test7:
+; CHECK: leal (,%rdi,8), %eax
+}
+
+
+; rdar://9289507 - folding of immediates into 64-bit operations.
+define i64 @test8(i64 %x) nounwind ssp {
+entry:
+ %add = add nsw i64 %x, 7
+ ret i64 %add
+
+; CHECK: test8:
+; CHECK: addq $7, %rdi
+}
+
+define i64 @test9(i64 %x) nounwind ssp {
+entry:
+ %add = mul nsw i64 %x, 7
+ ret i64 %add
+; CHECK: test9:
+; CHECK: imulq $7, %rdi, %rax
+}
+
+; rdar://9297011 - Don't reject udiv by a power of 2.
+define i32 @test10(i32 %X) nounwind {
+ %Y = udiv i32 %X, 8
+ ret i32 %Y
+; CHECK: test10:
+; CHECK: shrl $3,
+}
+
+define i32 @test11(i32 %X) nounwind {
+ %Y = sdiv exact i32 %X, 8
+ ret i32 %Y
+; CHECK: test11:
+; CHECK: sarl $3,
+}
+
+
+; rdar://9297006 - Trunc to bool.
+define void @test12(i8 %tmp) nounwind ssp noredzone {
+entry:
+ %tobool = trunc i8 %tmp to i1
+ br i1 %tobool, label %if.then, label %if.end
+
+if.then: ; preds = %entry
+ call void @test12(i8 0) noredzone
+ br label %if.end
+
+if.end: ; preds = %if.then, %entry
+ ret void
+; CHECK: test12:
+; CHECK: testb $1,
+; CHECK-NEXT: je L
+; CHECK-NEXT: movl $0, %edi
+; CHECK-NEXT: callq
+}
+
+declare void @test13f(i1 %X)
+
+define void @test13() nounwind {
+ call void @test13f(i1 0)
+ ret void
+; CHECK: test13:
+; CHECK: movl $0, %edi
+; CHECK-NEXT: callq
+}
+
+
+
+; rdar://9297003 - fast isel bails out on all functions taking bools
+define void @test14(i8 %tmp) nounwind ssp noredzone {
+entry:
+ %tobool = trunc i8 %tmp to i1
+ call void @test13f(i1 zeroext %tobool) noredzone
+ ret void
+; CHECK: test14:
+; CHECK: andb $1,
+; CHECK: callq
+}
+
+declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1)
+
+; rdar://9289488 - fast-isel shouldn't bail out on llvm.memcpy
+define void @test15(i8* %a, i8* %b) nounwind {
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* %a, i8* %b, i64 4, i32 4, i1 false)
+ ret void
+; CHECK: test15:
+; CHECK-NEXT: movl (%rsi), %eax
+; CHECK-NEXT: movl %eax, (%rdi)
+; CHECK-NEXT: ret
+}
+
+; Handling for varargs calls
+declare void @test16callee(...) nounwind
+define void @test16() nounwind {
+; CHECK: test16:
+; CHECK: movl $1, %edi
+; CHECK: movb $0, %al
+; CHECK: callq _test16callee
+ call void (...)* @test16callee(i32 1)
+ br label %block2
+
+block2:
+; CHECK: movabsq $1
+; CHECK: cvtsi2sdq {{.*}} %xmm0
+; CHECK: movb $1, %al
+; CHECK: callq _test16callee
+ call void (...)* @test16callee(double 1.000000e+00)
+ ret void
+}
+
+
+declare void @foo() unnamed_addr ssp align 2
+
+; Verify that we don't fold the load into the compare here. That would move it
+; w.r.t. the call.
+define i32 @test17(i32 *%P) ssp nounwind {
+entry:
+ %tmp = load i32* %P
+ %cmp = icmp ne i32 %tmp, 5
+ call void @foo()
+ br i1 %cmp, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ ret i32 1
+
+if.else: ; preds = %entry
+ ret i32 2
+; CHECK: test17:
+; CHECK: movl (%rdi), %eax
+; CHECK: callq _foo
+; CHECK: cmpl $5, %eax
+; CHECK-NEXT: je
+}
+
+; Check that 0.0 is materialized using pxor
+define void @test18(float* %p1) {
+ store float 0.0, float* %p1
+ ret void
+; CHECK: test18:
+; CHECK: pxor
+}
+define void @test19(double* %p1) {
+ store double 0.0, double* %p1
+ ret void
+; CHECK: test19:
+; CHECK: pxor
+}
+
+; Check that we fast-isel sret
+%struct.a = type { i64, i64, i64 }
+define void @test20() nounwind ssp {
+entry:
+ %tmp = alloca %struct.a, align 8
+ call void @test20sret(%struct.a* sret %tmp)
+ ret void
+; CHECK: test20:
+; CHECK: leaq (%rsp), %rdi
+; CHECK: callq _test20sret
+}
+declare void @test20sret(%struct.a* sret)
+
+; Check that -0.0 is not materialized using pxor
+define void @test21(double* %p1) {
+ store double -0.0, double* %p1
+ ret void
+; CHECK: test21:
+; CHECK-NOT: pxor
+; CHECK: movsd LCPI
+} \ No newline at end of file
diff --git a/test/CodeGen/X86/fast-isel-x86.ll b/test/CodeGen/X86/fast-isel-x86.ll
index 56aeb3a34364b..19972f74b2ba3 100644
--- a/test/CodeGen/X86/fast-isel-x86.ll
+++ b/test/CodeGen/X86/fast-isel-x86.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=x86 -relocation-model=pic < %s
+; RUN: llc -fast-isel -O0 -mtriple=i386-apple-darwin10 -relocation-model=pic < %s | FileCheck %s
; This should use flds to set the return value.
; CHECK: test0:
@@ -31,3 +31,18 @@ define i32 @test2() nounwind {
%t = load i32* @HHH
ret i32 %t
}
+
+; Check that we fast-isel sret, and handle the callee-pops behavior correctly.
+%struct.a = type { i64, i64, i64 }
+define void @test3() nounwind ssp {
+entry:
+ %tmp = alloca %struct.a, align 8
+ call void @test3sret(%struct.a* sret %tmp)
+ ret void
+; CHECK: test3:
+; CHECK: subl $44
+; CHECK: leal 16(%esp)
+; CHECK: calll _test3sret
+; CHECK: addl $40
+}
+declare void @test3sret(%struct.a* sret)
diff --git a/test/CodeGen/X86/fast-isel.ll b/test/CodeGen/X86/fast-isel.ll
index 177c06b45dcd2..5a1d2136ce4ac 100644
--- a/test/CodeGen/X86/fast-isel.ll
+++ b/test/CodeGen/X86/fast-isel.ll
@@ -20,6 +20,7 @@ fast:
%t6 = add i32 %t5, 2
%t7 = getelementptr i32* %y, i32 1
%t8 = getelementptr i32* %t7, i32 %t6
+ call void asm sideeffect "hello world", ""()
br label %exit
exit:
@@ -92,3 +93,13 @@ define void @load_store_i1(i1* %p, i1* %q) nounwind {
store i1 %t, i1* %q
ret void
}
+
+
+@crash_test1x = external global <2 x i32>, align 8
+
+define void @crash_test1() nounwind ssp {
+ %tmp = load <2 x i32>* @crash_test1x, align 8
+ %neg = xor <2 x i32> %tmp, <i32 -1, i32 -1>
+ ret void
+}
+
diff --git a/test/CodeGen/X86/fold-mul-lohi.ll b/test/CodeGen/X86/fold-mul-lohi.ll
index 0351ecab117b2..5614c808d0e60 100644
--- a/test/CodeGen/X86/fold-mul-lohi.ll
+++ b/test/CodeGen/X86/fold-mul-lohi.ll
@@ -1,5 +1,6 @@
-; RUN: llc < %s -march=x86 | not grep lea
-; RUN: llc < %s -march=x86-64 | not grep lea
+; RUN: llc < %s -march=x86 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: lea
@B = external global [1000 x i8], align 32
@A = external global [1000 x i8], align 32
diff --git a/test/CodeGen/X86/fold-pcmpeqd-0.ll b/test/CodeGen/X86/fold-pcmpeqd-0.ll
index e5be58e1aaa3c..647bbdb7f0fde 100644
--- a/test/CodeGen/X86/fold-pcmpeqd-0.ll
+++ b/test/CodeGen/X86/fold-pcmpeqd-0.ll
@@ -1,11 +1,21 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah | not grep pcmpeqd
-; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah | grep orps | grep CPI0_2 | count 2
-; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep pcmpeqd | count 1
+; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=linearscan | FileCheck --check-prefix=I386 %s
+; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck --check-prefix=X86-64 %s
; This testcase shouldn't need to spill the -1 value,
; so it should just use pcmpeqd to materialize an all-ones vector.
; For i386, cp load of -1 are folded.
+; With -regalloc=greedy, the live range is split before spilling, so the first
+; pcmpeq doesn't get folded as a constant pool load.
+
+; I386-NOT: pcmpeqd
+; I386: orps LCPI0_2, %xmm
+; I386-NOT: pcmpeqd
+; I386: orps LCPI0_2, %xmm
+
+; X86-64: pcmpeqd
+; X86-64-NOT: pcmpeqd
+
%struct.__ImageExecInfo = type <{ <4 x i32>, <4 x float>, <2 x i64>, i8*, i8*, i8*, i32, i32, i32, i32, i32 }>
%struct._cl_image_format_t = type <{ i32, i32, i32 }>
%struct._image2d_t = type <{ i8*, %struct._cl_image_format_t, i32, i32, i32, i32, i32, i32 }>
diff --git a/test/CodeGen/X86/fold-pcmpeqd-2.ll b/test/CodeGen/X86/fold-pcmpeqd-2.ll
index 49f879504e063..9f8d9903810d1 100644
--- a/test/CodeGen/X86/fold-pcmpeqd-2.ll
+++ b/test/CodeGen/X86/fold-pcmpeqd-2.ll
@@ -1,10 +1,20 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah | not grep pcmpeqd
-; RUN: llc < %s -mtriple=x86_64-apple-darwin | grep pcmpeqd | count 1
+; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=linearscan | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -regalloc=linearscan | FileCheck %s
-; This testcase should need to spill the -1 value on x86-32,
+; This testcase should need to spill the -1 value on both x86-32 and x86-64,
; so it shouldn't use pcmpeqd to materialize an all-ones vector; it
; should use a constant-pool load instead.
+; Constant pool all-ones vector:
+; CHECK: .long 4294967295
+; CHECK-NEXT: .long 4294967295
+; CHECK-NEXT: .long 4294967295
+; CHECK-NEXT: .long 4294967295
+
+; No pcmpeqd instructions, everybody uses the constant pool.
+; CHECK: program_1:
+; CHECK-NOT: pcmpeqd
+
%struct.__ImageExecInfo = type <{ <4 x i32>, <4 x float>, <2 x i64>, i8*, i8*, i8*, i32, i32, i32, i32, i32 }>
%struct._cl_image_format_t = type <{ i32, i32, i32 }>
%struct._image2d_t = type <{ i8*, %struct._cl_image_format_t, i32, i32, i32, i32, i32, i32 }>
@@ -57,6 +67,7 @@ forbody: ; preds = %forcond
%bitcast11.i6 = bitcast <4 x float> %tmp83 to <4 x i32> ; <<4 x i32>> [#uses=1]
%not.i7 = xor <4 x i32> zeroinitializer, < i32 -1, i32 -1, i32 -1, i32 -1 > ; <<4 x i32>> [#uses=1]
%andnps.i8 = and <4 x i32> %bitcast11.i6, %not.i7 ; <<4 x i32>> [#uses=1]
+ call void null(<4 x float> %mul313, <4 x float> %cmpunord.i11, <4 x float> %tmp83, <4 x float> zeroinitializer, %struct.__ImageExecInfo* null, <4 x i32> zeroinitializer) nounwind
%orps.i9 = or <4 x i32> %andnps.i8, %andps.i5 ; <<4 x i32>> [#uses=1]
%bitcast17.i10 = bitcast <4 x i32> %orps.i9 to <4 x float> ; <<4 x float>> [#uses=1]
%tmp84 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %mul313, <4 x float> zeroinitializer) nounwind ; <<4 x float>> [#uses=1]
diff --git a/test/CodeGen/X86/fold-zext-trunc.ll b/test/CodeGen/X86/fold-zext-trunc.ll
new file mode 100644
index 0000000000000..f901ad280b506
--- /dev/null
+++ b/test/CodeGen/X86/fold-zext-trunc.ll
@@ -0,0 +1,23 @@
+; RUN: llc < %s | FileCheck %s
+; PR9055
+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:32:32-n8:16:32"
+target triple = "i686-pc-linux-gnu"
+
+%struct.S0 = type { i32, [2 x i8], [2 x i8], [4 x i8] }
+
+@g_98 = common global %struct.S0 zeroinitializer, align 4
+
+define void @foo() nounwind {
+; CHECK: movzbl
+; CHECK-NOT: movzbl
+; CHECK: calll
+entry:
+ %tmp17 = load i8* getelementptr inbounds (%struct.S0* @g_98, i32 0, i32 1, i32 0), align 4
+ %tmp54 = zext i8 %tmp17 to i32
+ %foo = load i32* bitcast (i8* getelementptr inbounds (%struct.S0* @g_98, i32 0, i32 1, i32 0) to i32*), align 4
+ %conv.i = trunc i32 %foo to i8
+ tail call void @func_12(i32 %tmp54, i8 zeroext %conv.i) nounwind
+ ret void
+}
+
+declare void @func_12(i32, i8 zeroext)
diff --git a/test/CodeGen/X86/fp-stack-compare.ll b/test/CodeGen/X86/fp-stack-compare.ll
index b216914d23919..f3998b67f6726 100644
--- a/test/CodeGen/X86/fp-stack-compare.ll
+++ b/test/CodeGen/X86/fp-stack-compare.ll
@@ -1,11 +1,11 @@
-; RUN: llc < %s -march=x86 -mcpu=i386 | grep {fucompi.*st.\[12\]}
+; RUN: llc < %s -march=x86 -mcpu=i386 | FileCheck %s
; PR1012
define float @foo(float* %col.2.0) {
- %tmp = load float* %col.2.0 ; <float> [#uses=3]
- %tmp16 = fcmp olt float %tmp, 0.000000e+00 ; <i1> [#uses=1]
- %tmp20 = fsub float -0.000000e+00, %tmp ; <float> [#uses=1]
- %iftmp.2.0 = select i1 %tmp16, float %tmp20, float %tmp ; <float> [#uses=1]
- ret float %iftmp.2.0
+; CHECK: fucompi
+ %tmp = load float* %col.2.0
+ %tmp16 = fcmp olt float %tmp, 0.000000e+00
+ %tmp20 = fsub float -0.000000e+00, %tmp
+ %iftmp.2.0 = select i1 %tmp16, float %tmp20, float %tmp
+ ret float %iftmp.2.0
}
-
diff --git a/test/CodeGen/X86/fp-trunc.ll b/test/CodeGen/X86/fp-trunc.ll
new file mode 100644
index 0000000000000..170637a40ee23
--- /dev/null
+++ b/test/CodeGen/X86/fp-trunc.ll
@@ -0,0 +1,35 @@
+; RUN: llc < %s -march=x86 -mattr=+sse2,-avx | FileCheck %s
+
+define <1 x float> @test1(<1 x double> %x) nounwind {
+; CHECK: cvtsd2ss
+; CHECK: ret
+ %y = fptrunc <1 x double> %x to <1 x float>
+ ret <1 x float> %y
+}
+
+
+define <2 x float> @test2(<2 x double> %x) nounwind {
+; FIXME: It would be nice if this compiled down to a cvtpd2ps
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: ret
+ %y = fptrunc <2 x double> %x to <2 x float>
+ ret <2 x float> %y
+}
+
+define <8 x float> @test3(<8 x double> %x) nounwind {
+; FIXME: It would be nice if this compiled down to a series of cvtpd2ps
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: cvtsd2ss
+; CHECK: ret
+ %y = fptrunc <8 x double> %x to <8 x float>
+ ret <8 x float> %y
+}
+
+
diff --git a/test/CodeGen/X86/global-sections-tls.ll b/test/CodeGen/X86/global-sections-tls.ll
index 2c2303042bc45..d5409a579b2f2 100644
--- a/test/CodeGen/X86/global-sections-tls.ll
+++ b/test/CodeGen/X86/global-sections-tls.ll
@@ -2,7 +2,7 @@
; PR4639
@G1 = internal thread_local global i32 0 ; <i32*> [#uses=1]
-; LINUX: .section .tbss,"awT",@nobits
+; LINUX: .section .tbss,"awT",@nobits
; LINUX: G1:
diff --git a/test/CodeGen/X86/global-sections.ll b/test/CodeGen/X86/global-sections.ll
index 39a69e17a1008..d0a1b4d281fec 100644
--- a/test/CodeGen/X86/global-sections.ll
+++ b/test/CodeGen/X86/global-sections.ll
@@ -99,7 +99,7 @@
; DARWIN: _G7:
; DARWIN: .asciz "abcdefghi"
-; LINUX: .section .rodata.str1.1,"aMS",@progbits,1
+; LINUX: .section .rodata.str1.1,"aMS",@progbits,1
; LINUX: .globl G7
; LINUX: G7:
; LINUX: .asciz "abcdefghi"
@@ -114,7 +114,7 @@
; DARWIN: .globl _G8
; DARWIN: _G8:
-; LINUX: .section .rodata.str2.2,"aMS",@progbits,2
+; LINUX: .section .rodata.str2.2,"aMS",@progbits,2
; LINUX: .globl G8
; LINUX:G8:
@@ -123,7 +123,7 @@
; DARWIN: .globl _G9
; DARWIN: _G9:
-; LINUX: .section .rodata.str4.4,"aMS",@progbits,4
+; LINUX: .section .rodata.str4.4,"aMS",@progbits,4
; LINUX: .globl G9
; LINUX:G9
diff --git a/test/CodeGen/X86/h-register-store.ll b/test/CodeGen/X86/h-register-store.ll
index d30e6b334e8b1..0adb2b148c398 100644
--- a/test/CodeGen/X86/h-register-store.ll
+++ b/test/CodeGen/X86/h-register-store.ll
@@ -1,9 +1,29 @@
-; RUN: llc < %s -march=x86-64 > %t
-; RUN: grep mov %t | count 6
-; RUN: grep {movb %ah, (%rsi)} %t | count 3
-; RUN: llc < %s -march=x86 > %t
-; RUN: grep mov %t | count 3
-; RUN: grep {movb %ah, (%e} %t | count 3
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; X64: mov
+; X64-NEXT: movb %ah, (%rsi)
+; X64: mov
+; X64-NEXT: movb %ah, (%rsi)
+; X64: mov
+; X64-NEXT: movb %ah, (%rsi)
+; X64-NOT: mov
+
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -check-prefix=W64
+; W64-NOT: mov
+; W64: movb %ch, (%rdx)
+; W64-NOT: mov
+; W64: movb %ch, (%rdx)
+; W64-NOT: mov
+; W64: movb %ch, (%rdx)
+; W64-NOT: mov
+
+; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
+; X32-NOT: mov
+; X32: movb %ah, (%e
+; X32-NOT: mov
+; X32: movb %ah, (%e
+; X32-NOT: mov
+; X32: movb %ah, (%e
+; X32-NOT: mov
; Use h-register extract and store.
diff --git a/test/CodeGen/X86/h-registers-0.ll b/test/CodeGen/X86/h-registers-0.ll
index e84bb9a34a26e..cdc75af92e430 100644
--- a/test/CodeGen/X86/h-registers-0.ll
+++ b/test/CodeGen/X86/h-registers-0.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X86-64
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X86-64
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -check-prefix=WIN64
; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X86-32
; Use h registers. On x86-64, codegen doesn't support general allocation
@@ -9,6 +10,12 @@ define void @bar64(i64 inreg %x, i8* inreg %p) nounwind {
; X86-64: shrq $8, %rdi
; X86-64: incb %dil
+; See FIXME: on regclass GR8.
+; It could be optimally transformed like; incb %ch; movb %ch, (%rdx)
+; WIN64: bar64:
+; WIN64: shrq $8, %rcx
+; WIN64: incb %cl
+
; X86-32: bar64:
; X86-32: incb %ah
%t0 = lshr i64 %x, 8
@@ -23,6 +30,10 @@ define void @bar32(i32 inreg %x, i8* inreg %p) nounwind {
; X86-64: shrl $8, %edi
; X86-64: incb %dil
+; WIN64: bar32:
+; WIN64: shrl $8, %ecx
+; WIN64: incb %cl
+
; X86-32: bar32:
; X86-32: incb %ah
%t0 = lshr i32 %x, 8
@@ -37,6 +48,10 @@ define void @bar16(i16 inreg %x, i8* inreg %p) nounwind {
; X86-64: shrl $8, %edi
; X86-64: incb %dil
+; WIN64: bar16:
+; WIN64: shrl $8, %ecx
+; WIN64: incb %cl
+
; X86-32: bar16:
; X86-32: incb %ah
%t0 = lshr i16 %x, 8
@@ -51,6 +66,9 @@ define i64 @qux64(i64 inreg %x) nounwind {
; X86-64: movq %rdi, %rax
; X86-64: movzbl %ah, %eax
+; WIN64: qux64:
+; WIN64: movzbl %ch, %eax
+
; X86-32: qux64:
; X86-32: movzbl %ah, %eax
%t0 = lshr i64 %x, 8
@@ -63,6 +81,9 @@ define i32 @qux32(i32 inreg %x) nounwind {
; X86-64: movl %edi, %eax
; X86-64: movzbl %ah, %eax
+; WIN64: qux32:
+; WIN64: movzbl %ch, %eax
+
; X86-32: qux32:
; X86-32: movzbl %ah, %eax
%t0 = lshr i32 %x, 8
@@ -75,6 +96,9 @@ define i16 @qux16(i16 inreg %x) nounwind {
; X86-64: movl %edi, %eax
; X86-64: movzbl %ah, %eax
+; WIN64: qux16:
+; WIN64: movzbl %ch, %eax
+
; X86-32: qux16:
; X86-32: movzbl %ah, %eax
%t0 = lshr i16 %x, 8
diff --git a/test/CodeGen/X86/h-registers-1.ll b/test/CodeGen/X86/h-registers-1.ll
index e97ebab69712b..402cdfe413b57 100644
--- a/test/CodeGen/X86/h-registers-1.ll
+++ b/test/CodeGen/X86/h-registers-1.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86-64 > %t
+; RUN: llc < %s -mtriple=x86_64-linux > %t
; RUN: grep {movzbl %\[abcd\]h,} %t | count 8
; RUN: grep {%\[abcd\]h} %t | not grep {%r\[\[:digit:\]\]*d}
diff --git a/test/CodeGen/X86/hidden-vis-pic.ll b/test/CodeGen/X86/hidden-vis-pic.ll
index ba130a2c1c863..217dba6944b45 100644
--- a/test/CodeGen/X86/hidden-vis-pic.ll
+++ b/test/CodeGen/X86/hidden-vis-pic.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin9 -relocation-model=pic -disable-fp-elim -unwind-tables | FileCheck %s
+; RUN: llc < %s -disable-cfi -mtriple=i386-apple-darwin9 -relocation-model=pic -disable-fp-elim -unwind-tables | FileCheck %s
diff --git a/test/CodeGen/X86/i64-mem-copy.ll b/test/CodeGen/X86/i64-mem-copy.ll
index 847e2095f4c53..dce12ae124857 100644
--- a/test/CodeGen/X86/i64-mem-copy.ll
+++ b/test/CodeGen/X86/i64-mem-copy.ll
@@ -1,5 +1,9 @@
-; RUN: llc < %s -march=x86-64 | grep {movq.*(%rsi), %rax}
-; RUN: llc < %s -march=x86 -mattr=+sse2 | grep {movsd.*(%eax),}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=X64
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -check-prefix=X64
+; X64: movq ({{%rsi|%rdx}}), %r
+
+; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s -check-prefix=X32
+; X32: movsd (%eax), %xmm
; Uses movsd to load / store i64 values if sse2 is available.
diff --git a/test/CodeGen/X86/iabs.ll b/test/CodeGen/X86/iabs.ll
index 6a79ee879253f..a8ba0155fd10e 100644
--- a/test/CodeGen/X86/iabs.ll
+++ b/test/CodeGen/X86/iabs.ll
@@ -1,12 +1,11 @@
; RUN: llc < %s -march=x86-64 -stats |& \
-; RUN: grep {6 .*Number of machine instrs printed}
+; RUN: grep {5 .*Number of machine instrs printed}
;; Integer absolute value, should produce something at least as good as:
-;; movl %edi, %eax
-;; sarl $31, %eax
-;; addl %eax, %edi
-;; xorl %eax, %edi
-;; movl %edi, %eax
+;; movl %edi, %ecx
+;; sarl $31, %ecx
+;; leal (%rdi,%rcx), %eax
+;; xorl %ecx, %eax
;; ret
define i32 @test(i32 %a) nounwind {
%tmp1neg = sub i32 0, %a
diff --git a/test/CodeGen/X86/isel-sink3.ll b/test/CodeGen/X86/isel-sink3.ll
index 8d3d97a930bef..7012ccefaadbc 100644
--- a/test/CodeGen/X86/isel-sink3.ll
+++ b/test/CodeGen/X86/isel-sink3.ll
@@ -1,9 +1,11 @@
-; RUN: llc < %s | grep {addl.\$4, %ecx}
-; RUN: llc < %s | not grep leal
+; RUN: llc < %s | FileCheck %s
; this should not sink %1 into bb1, that would increase reg pressure.
; rdar://6399178
+; CHECK: addl $4,
+; CHECK-NOT: leal
+
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-darwin7"
diff --git a/test/CodeGen/X86/lea-3.ll b/test/CodeGen/X86/lea-3.ll
index 44413d60785ea..c439ee1d06e36 100644
--- a/test/CodeGen/X86/lea-3.ll
+++ b/test/CodeGen/X86/lea-3.ll
@@ -1,17 +1,20 @@
-; RUN: llc < %s -march=x86-64 | grep {leal (%rdi,%rdi,2), %eax}
-define i32 @test(i32 %a) {
- %tmp2 = mul i32 %a, 3 ; <i32> [#uses=1]
- ret i32 %tmp2
-}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
-; RUN: llc < %s -march=x86-64 | grep {leaq (,%rdi,4), %rax}
+; CHECK: leaq (,[[A0:%rdi|%rcx]],4), %rax
define i64 @test2(i64 %a) {
%tmp2 = shl i64 %a, 2
%tmp3 = or i64 %tmp2, %a
ret i64 %tmp3
}
-;; TODO! LEA instead of shift + copy.
+; CHECK: leal ([[A0]],[[A0]],2), %eax
+define i32 @test(i32 %a) {
+ %tmp2 = mul i32 %a, 3 ; <i32> [#uses=1]
+ ret i32 %tmp2
+}
+
+; CHECK: leaq (,[[A0]],8), %rax
define i64 @test3(i64 %a) {
%tmp2 = shl i64 %a, 3
ret i64 %tmp2
diff --git a/test/CodeGen/X86/lock-inst-encoding.ll b/test/CodeGen/X86/lock-inst-encoding.ll
index 03468e2b3f4f2..2d10fbc611d02 100644
--- a/test/CodeGen/X86/lock-inst-encoding.ll
+++ b/test/CodeGen/X86/lock-inst-encoding.ll
@@ -4,10 +4,9 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-apple-darwin10.0.0"
; CHECK: f0:
-; CHECK: addq %rax, (%rdi)
-; CHECK: # encoding: [0xf0,0x48,0x01,0x07]
+; CHECK: addq %{{.*}}, ({{.*}}){{.*}}encoding: [0xf0,
; CHECK: ret
-define void @f0(i64* %a0) {
+define void @f0(i64* %a0) nounwind {
%t0 = and i64 1, 1
call void @llvm.memory.barrier(i1 true, i1 true, i1 true, i1 true, i1 true) nounwind
%1 = call i64 @llvm.atomic.load.add.i64.p0i64(i64* %a0, i64 %t0) nounwind
diff --git a/test/CodeGen/X86/loop-strength-reduce4.ll b/test/CodeGen/X86/loop-strength-reduce4.ll
index 6556fdeea8340..32e78790abdb8 100644
--- a/test/CodeGen/X86/loop-strength-reduce4.ll
+++ b/test/CodeGen/X86/loop-strength-reduce4.ll
@@ -4,10 +4,10 @@
; By starting the IV at -64 instead of 0, a cmp is eliminated,
; as the flags from the add can be used directly.
-; STATIC: movl $-64, %ecx
+; STATIC: movl $-64, [[ECX:%e..]]
-; STATIC: movl %eax, _state+76(%ecx)
-; STATIC: addl $16, %ecx
+; STATIC: movl [[EAX:%e..]], _state+76([[ECX]])
+; STATIC: addl $16, [[ECX]]
; STATIC: jne
; In PIC mode the symbol can't be folded, so the change-compare-stride
diff --git a/test/CodeGen/X86/lsr-interesting-step.ll b/test/CodeGen/X86/lsr-interesting-step.ll
index 4b7050bd507bf..d1de0510a0462 100644
--- a/test/CodeGen/X86/lsr-interesting-step.ll
+++ b/test/CodeGen/X86/lsr-interesting-step.ll
@@ -1,9 +1,9 @@
-; RUN: llc < %s -march=x86-64 -relocation-model=static -mtriple=x86_64-unknown-linux-gnu
+; RUN: llc < %s -march=x86-64 -relocation-model=static -mtriple=x86_64-unknown-linux-gnu -asm-verbose=0 | FileCheck %s
; The inner loop should require only one add (and no leas either).
; rdar://8100380
-; CHECK: BB0_4:
+; CHECK: BB0_3:
; CHECK-NEXT: movb $0, flags(%rdx)
; CHECK-NEXT: addq %rcx, %rdx
; CHECK-NEXT: cmpq $8192, %rdx
diff --git a/test/CodeGen/X86/lsr-quadratic-expand.ll b/test/CodeGen/X86/lsr-quadratic-expand.ll
new file mode 100644
index 0000000000000..2bbb470929047
--- /dev/null
+++ b/test/CodeGen/X86/lsr-quadratic-expand.ll
@@ -0,0 +1,22 @@
+; RUN: llc -march=x86-64 < %s
+
+define void @dw2102_i2c_transfer() nounwind {
+entry:
+ br label %bb
+
+bb: ; preds = %bb, %entry
+ %z = phi i64 [ 0, %entry ], [ %z3, %bb ]
+ %z1 = phi i16 [ undef, %entry ], [ %z6, %bb ]
+ %z2 = phi i32 [ 0, %entry ], [ %z8, %bb ]
+ %z3 = add i64 %z, 1
+ %z4 = zext i16 %z1 to i32
+ %z5 = add nsw i32 %z4, %z2
+ %z6 = trunc i32 %z5 to i16
+ call fastcc void @dw210x_op_rw(i16 zeroext %z6)
+ %z7 = getelementptr i8* null, i64 %z
+ store i8 undef, i8* %z7, align 1
+ %z8 = add nsw i32 %z2, 1
+ br label %bb
+}
+
+declare fastcc void @dw210x_op_rw(i16 zeroext) nounwind
diff --git a/test/CodeGen/X86/lsr-redundant-addressing.ll b/test/CodeGen/X86/lsr-redundant-addressing.ll
new file mode 100644
index 0000000000000..aaa1426918f24
--- /dev/null
+++ b/test/CodeGen/X86/lsr-redundant-addressing.ll
@@ -0,0 +1,45 @@
+; RUN: llc -march=x86-64 < %s | fgrep {addq $-16,} | count 1
+; rdar://9081094
+
+; LSR shouldn't create lots of redundant address computations.
+
+%0 = type { i32, [3 x i32] }
+%1 = type { i32 (i32, i32, i32)*, i32, i32, [3 x i32], i8*, i8*, i8* }
+
+@pgm = external hidden unnamed_addr global [5 x %0], align 32
+@isa = external hidden unnamed_addr constant [13 x %1], align 32
+
+define void @main_bb.i() nounwind {
+bb:
+ br label %bb38
+
+bb38: ; preds = %bb200, %bb
+ %tmp39 = phi i64 [ %tmp201, %bb200 ], [ 0, %bb ]
+ %tmp40 = sub i64 0, %tmp39
+ %tmp47 = getelementptr [5 x %0]* @pgm, i64 0, i64 %tmp40, i32 0
+ %tmp34 = load i32* %tmp47, align 16
+ %tmp203 = icmp slt i32 %tmp34, 12
+ br i1 %tmp203, label %bb215, label %bb200
+
+bb200: ; preds = %bb38
+ %tmp201 = add i64 %tmp39, 1
+ br label %bb38
+
+bb215: ; preds = %bb38
+ %tmp50 = getelementptr [5 x %0]* @pgm, i64 0, i64 %tmp40, i32 1, i64 2
+ %tmp49 = getelementptr [5 x %0]* @pgm, i64 0, i64 %tmp40, i32 1, i64 1
+ %tmp48 = getelementptr [5 x %0]* @pgm, i64 0, i64 %tmp40, i32 1, i64 0
+ %tmp216 = add nsw i32 %tmp34, 1
+ store i32 %tmp216, i32* %tmp47, align 16
+ %tmp217 = sext i32 %tmp216 to i64
+ %tmp218 = getelementptr inbounds [13 x %1]* @isa, i64 0, i64 %tmp217, i32 3, i64 0
+ %tmp219 = load i32* %tmp218, align 8
+ store i32 %tmp219, i32* %tmp48, align 4
+ %tmp220 = getelementptr inbounds [13 x %1]* @isa, i64 0, i64 %tmp217, i32 3, i64 1
+ %tmp221 = load i32* %tmp220, align 4
+ store i32 %tmp221, i32* %tmp49, align 4
+ %tmp222 = getelementptr inbounds [13 x %1]* @isa, i64 0, i64 %tmp217, i32 3, i64 2
+ %tmp223 = load i32* %tmp222, align 8
+ store i32 %tmp223, i32* %tmp50, align 4
+ ret void
+}
diff --git a/test/CodeGen/X86/lsr-reuse-trunc.ll b/test/CodeGen/X86/lsr-reuse-trunc.ll
index 29f03d68daded..47705190b0f4a 100644
--- a/test/CodeGen/X86/lsr-reuse-trunc.ll
+++ b/test/CodeGen/X86/lsr-reuse-trunc.ll
@@ -4,8 +4,9 @@
; Full strength reduction wouldn't reduce register pressure, so LSR should
; stick with indexing here.
-; CHECK: movaps (%{{rsi|rdx}},%rax,4), %xmm3
-; CHECK: movaps %xmm3, (%{{rdi|rcx}},%rax,4)
+; CHECK: movaps (%{{rsi|rdx}},%rax,4), [[X3:%xmm[0-9]+]]
+; CHECK: movaps
+; CHECK: [[X3]], (%{{rdi|rcx}},%rax,4)
; CHECK: addq $4, %rax
; CHECK: cmpl %eax, (%{{rdx|r8}})
; CHECK-NEXT: jg
diff --git a/test/CodeGen/X86/lsr-reuse.ll b/test/CodeGen/X86/lsr-reuse.ll
index 2a9762928329b..527a5a60e868f 100644
--- a/test/CodeGen/X86/lsr-reuse.ll
+++ b/test/CodeGen/X86/lsr-reuse.ll
@@ -1,3 +1,4 @@
+; XFAIL: *
; RUN: llc < %s -march=x86-64 -O3 -asm-verbose=false | FileCheck %s
target datalayout = "e-p:64:64:64"
target triple = "x86_64-unknown-unknown"
diff --git a/test/CodeGen/X86/machine-cse.ll b/test/CodeGen/X86/machine-cse.ll
index e284776ed02d0..d819fc8f6ecd6 100644
--- a/test/CodeGen/X86/machine-cse.ll
+++ b/test/CodeGen/X86/machine-cse.ll
@@ -6,11 +6,11 @@
%struct.s2 = type { i32, i8*, i8*, [256 x %struct.s1*], [8 x i32], i64, i8*, i32, i64, i64, i32, %struct.s3*, %struct.s3*, [49 x i64] }
%struct.s3 = type { %struct.s3*, %struct.s3*, i32, i32, i32 }
-define fastcc i8* @t(i64 %size) nounwind {
+define fastcc i8* @t(i32 %base) nounwind {
entry:
; CHECK: t:
; CHECK: leaq (%rax,%rax,4)
- %0 = zext i32 undef to i64
+ %0 = zext i32 %base to i64
%1 = getelementptr inbounds %struct.s2* null, i64 %0
br i1 undef, label %bb1, label %bb2
diff --git a/test/CodeGen/X86/mcinst-lowering-cmp0.ll b/test/CodeGen/X86/mcinst-lowering-cmp0.ll
deleted file mode 100644
index 756be1fabfda1..0000000000000
--- a/test/CodeGen/X86/mcinst-lowering-cmp0.ll
+++ /dev/null
@@ -1,68 +0,0 @@
-; RUN: llc --show-mc-encoding -relocation-model=pic -disable-fp-elim -O3 < %s | FileCheck %s
-
-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-n8:16:32"
-target triple = "i386-apple-darwin10.0.0"
-
-%struct.NSConstantString = type { i32*, i32, i8*, i32 }
-%struct._objc_module = type { i32, i32, i8*, %struct._objc_symtab* }
-%struct._objc_symtab = type { i32, i8*, i16, i16, [0 x i8*] }
-
-@"\01L_OBJC_IMAGE_INFO" = internal constant [2 x i32] [i32 0, i32 16], section "__OBJC, __image_info,regular" ; <[2 x i32]*> [#uses=1]
-@"\01L_OBJC_METH_VAR_NAME_" = internal global [4 x i8] c"foo\00", section "__TEXT,__cstring,cstring_literals", align 1 ; <[4 x i8]*> [#uses=1]
-@"\01L_OBJC_SELECTOR_REFERENCES_" = internal global i8* getelementptr inbounds ([4 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), section "__OBJC,__message_refs,literal_pointers,no_dead_strip", align 4 ; <i8**> [#uses=3]
-@__CFConstantStringClassReference = external global [0 x i32] ; <[0 x i32]*> [#uses=1]
-@.str = private constant [3 x i8] c"||\00" ; <[3 x i8]*> [#uses=1]
-@_unnamed_cfstring_ = private constant %struct.NSConstantString { i32* getelementptr inbounds ([0 x i32]* @__CFConstantStringClassReference, i32 0, i32 0), i32 1992, i8* getelementptr inbounds ([3 x i8]* @.str, i32 0, i32 0), i32 2 }, section "__DATA,__cfstring" ; <%struct.NSConstantString*> [#uses=1]
-@"\01L_OBJC_METH_VAR_NAME_1" = internal global [5 x i8] c"baz:\00", section "__TEXT,__cstring,cstring_literals", align 1 ; <[5 x i8]*> [#uses=1]
-@"\01L_OBJC_SELECTOR_REFERENCES_2" = internal global i8* getelementptr inbounds ([5 x i8]* @"\01L_OBJC_METH_VAR_NAME_1", i32 0, i32 0), section "__OBJC,__message_refs,literal_pointers,no_dead_strip", align 4 ; <i8**> [#uses=2]
-@"\01L_OBJC_METH_VAR_NAME_3" = internal global [4 x i8] c"bar\00", section "__TEXT,__cstring,cstring_literals", align 1 ; <[4 x i8]*> [#uses=1]
-@"\01L_OBJC_SELECTOR_REFERENCES_4" = internal global i8* getelementptr inbounds ([4 x i8]* @"\01L_OBJC_METH_VAR_NAME_3", i32 0, i32 0), section "__OBJC,__message_refs,literal_pointers,no_dead_strip", align 4 ; <i8**> [#uses=2]
-@"\01L_OBJC_CLASS_NAME_" = internal global [1 x i8] zeroinitializer, section "__TEXT,__cstring,cstring_literals", align 1 ; <[1 x i8]*> [#uses=1]
-@"\01L_OBJC_MODULES" = internal global %struct._objc_module { i32 7, i32 16, i8* getelementptr inbounds ([1 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), %struct._objc_symtab* null }, section "__OBJC,__module_info,regular,no_dead_strip", align 4 ; <%struct._objc_module*> [#uses=1]
-@llvm.used = appending global [9 x i8*] [i8* bitcast ([2 x i32]* @"\01L_OBJC_IMAGE_INFO" to i8*), i8* getelementptr inbounds ([4 x i8]* @"\01L_OBJC_METH_VAR_NAME_", i32 0, i32 0), i8* bitcast (i8** @"\01L_OBJC_SELECTOR_REFERENCES_" to i8*), i8* getelementptr inbounds ([5 x i8]* @"\01L_OBJC_METH_VAR_NAME_1", i32 0, i32 0), i8* bitcast (i8** @"\01L_OBJC_SELECTOR_REFERENCES_2" to i8*), i8* getelementptr inbounds ([4 x i8]* @"\01L_OBJC_METH_VAR_NAME_3", i32 0, i32 0), i8* bitcast (i8** @"\01L_OBJC_SELECTOR_REFERENCES_4" to i8*), i8* getelementptr inbounds ([1 x i8]* @"\01L_OBJC_CLASS_NAME_", i32 0, i32 0), i8* bitcast (%struct._objc_module* @"\01L_OBJC_MODULES" to i8*)], section "llvm.metadata" ; <[9 x i8*]*> [#uses=0]
-
-define void @f0(i8* nocapture %a, i8* nocapture %b) nounwind optsize ssp {
-entry:
- %call = tail call i32 (...)* @get_name() nounwind optsize ; <i32> [#uses=2]
- %conv = inttoptr i32 %call to i8* ; <i8*> [#uses=1]
- %call1 = tail call i32 (...)* @get_dict() nounwind optsize ; <i32> [#uses=2]
- %conv2 = inttoptr i32 %call1 to i8* ; <i8*> [#uses=2]
-
-; Check that we lower to the short form of cmpl, which has an 8-bit immediate.
-;
-; CHECK: cmpl $0, -16(%ebp) ## 4-byte Folded Reload
-; CHECK: ## encoding: [0x83,0x7d,0xf0,0x00]
-; rdar://7999130
- %cmp = icmp eq i32 %call1, 0 ; <i1> [#uses=1]
- br i1 %cmp, label %if.end, label %if.then
-
-if.then: ; preds = %entry
- %tmp5 = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_" ; <i8*> [#uses=1]
- %call6 = tail call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %conv2, i8* %tmp5) nounwind optsize ; <i8*> [#uses=1]
- %tmp7 = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_2" ; <i8*> [#uses=1]
- %call820 = tail call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %call6, i8* %tmp7, i8* bitcast (%struct.NSConstantString* @_unnamed_cfstring_ to i8*)) nounwind optsize ; <i8*> [#uses=0]
- br label %if.end
-
-if.end: ; preds = %entry, %if.then
- %tmp10 = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_" ; <i8*> [#uses=1]
- %call11 = tail call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %conv2, i8* %tmp10) nounwind optsize ; <i8*> [#uses=1]
- %tmp12 = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_4" ; <i8*> [#uses=1]
- %call13 = tail call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %call11, i8* %tmp12) nounwind optsize ; <i8*> [#uses=0]
- %cmp15 = icmp eq i32 %call, 0 ; <i1> [#uses=1]
- br i1 %cmp15, label %if.end19, label %if.then17
-
-if.then17: ; preds = %if.end
- tail call void (...)* @f1(i8* %conv) nounwind optsize
- ret void
-
-if.end19: ; preds = %if.end
- ret void
-}
-
-declare i32 @get_name(...) optsize
-
-declare i32 @get_dict(...) optsize
-
-declare i8* @objc_msgSend(i8*, i8*, ...)
-
-declare void @f1(...) optsize
diff --git a/test/CodeGen/X86/mmx-copy-gprs.ll b/test/CodeGen/X86/mmx-copy-gprs.ll
index 3607043e94fcc..377875565bf8b 100644
--- a/test/CodeGen/X86/mmx-copy-gprs.ll
+++ b/test/CodeGen/X86/mmx-copy-gprs.ll
@@ -1,10 +1,12 @@
-; RUN: llc < %s -march=x86-64 | grep {movq.*(%rsi), %rax}
-; RUN: llc < %s -march=x86 -mattr=-sse2 | grep {movl.*4(%eax),}
-; RUN: llc < %s -march=x86 -mattr=+sse2 | grep {movsd.(%eax),}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; RUN: llc < %s -march=x86 -mattr=-sse2 | FileCheck %s
+; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
; This test should use GPRs to copy the mmx value, not MMX regs. Using mmx regs,
; increases the places that need to use emms.
-
+; CHECK-NOT: %mm
+; CHECK-NOT: emms
; rdar://5741668
define void @foo(<1 x i64>* %x, <1 x i64>* %y) nounwind {
diff --git a/test/CodeGen/X86/narrow-shl-cst.ll b/test/CodeGen/X86/narrow-shl-cst.ll
new file mode 100644
index 0000000000000..a404f34b9caa2
--- /dev/null
+++ b/test/CodeGen/X86/narrow-shl-cst.ll
@@ -0,0 +1,101 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+; PR5039
+
+define i32 @test1(i32 %x) nounwind {
+ %and = shl i32 %x, 10
+ %shl = and i32 %and, 31744
+ ret i32 %shl
+; CHECK: test1:
+; CHECK: andl $31
+; CHECK: shll $10
+}
+
+define i32 @test2(i32 %x) nounwind {
+ %or = shl i32 %x, 10
+ %shl = or i32 %or, 31744
+ ret i32 %shl
+; CHECK: test2:
+; CHECK: orl $31
+; CHECK: shll $10
+}
+
+define i32 @test3(i32 %x) nounwind {
+ %xor = shl i32 %x, 10
+ %shl = xor i32 %xor, 31744
+ ret i32 %shl
+; CHECK: test3:
+; CHECK: xorl $31
+; CHECK: shll $10
+}
+
+define i64 @test4(i64 %x) nounwind {
+ %and = shl i64 %x, 40
+ %shl = and i64 %and, 264982302294016
+ ret i64 %shl
+; CHECK: test4:
+; CHECK: andq $241
+; CHECK: shlq $40
+}
+
+define i64 @test5(i64 %x) nounwind {
+ %and = shl i64 %x, 40
+ %shl = and i64 %and, 34084860461056
+ ret i64 %shl
+; CHECK: test5:
+; CHECK: andq $31
+; CHECK: shlq $40
+}
+
+define i64 @test6(i64 %x) nounwind {
+ %and = shl i64 %x, 32
+ %shl = and i64 %and, -281474976710656
+ ret i64 %shl
+; CHECK: test6:
+; CHECK: andq $-65536
+; CHECK: shlq $32
+}
+
+define i64 @test7(i64 %x) nounwind {
+ %or = shl i64 %x, 40
+ %shl = or i64 %or, 264982302294016
+ ret i64 %shl
+; CHECK: test7:
+; CHECK: orq $241
+; CHECK: shlq $40
+}
+
+define i64 @test8(i64 %x) nounwind {
+ %or = shl i64 %x, 40
+ %shl = or i64 %or, 34084860461056
+ ret i64 %shl
+; CHECK: test8:
+; CHECK: orq $31
+; CHECK: shlq $40
+}
+
+define i64 @test9(i64 %x) nounwind {
+ %xor = shl i64 %x, 40
+ %shl = xor i64 %xor, 264982302294016
+ ret i64 %shl
+; CHECK: test9:
+; CHECK: orq $241
+; CHECK: shlq $40
+}
+
+define i64 @test10(i64 %x) nounwind {
+ %xor = shl i64 %x, 40
+ %shl = xor i64 %xor, 34084860461056
+ ret i64 %shl
+; CHECK: test10:
+; CHECK: xorq $31
+; CHECK: shlq $40
+}
+
+define i64 @test11(i64 %x) nounwind {
+ %xor = shl i64 %x, 33
+ %shl = xor i64 %xor, -562949953421312
+ ret i64 %shl
+; CHECK: test11:
+; CHECK: xorq $-65536
+; CHECK: shlq $33
+}
diff --git a/test/CodeGen/X86/no-cfi.ll b/test/CodeGen/X86/no-cfi.ll
new file mode 100644
index 0000000000000..f9985d4585128
--- /dev/null
+++ b/test/CodeGen/X86/no-cfi.ll
@@ -0,0 +1,38 @@
+; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -disable-cfi | FileCheck --check-prefix=STATIC %s
+; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -disable-cfi -relocation-model=pic | FileCheck --check-prefix=PIC %s
+
+; STATIC: .ascii "zPLR"
+; STATIC: .byte 3
+; STATIC-NEXT: .long __gxx_personality_v0
+; STATIC-NEXT: .byte 3
+; STATIC-NEXT: .byte 3
+
+; PIC: .ascii "zPLR"
+; PIC: .byte 155
+; PIC-NEXT: .L
+; PIC-NEXT: .long DW.ref.__gxx_personality_v0-.L
+; PIC-NEXT: .byte 27
+; PIC-NEXT: .byte 27
+
+
+define void @bar() {
+entry:
+ %call = invoke i32 @foo()
+ to label %invoke.cont unwind label %lpad
+
+invoke.cont:
+ ret void
+
+lpad:
+ %exn = call i8* @llvm.eh.exception() nounwind
+ %eh.selector = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %exn, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) nounwind
+ ret void
+}
+
+declare i32 @foo()
+
+declare i8* @llvm.eh.exception() nounwind readonly
+
+declare i32 @__gxx_personality_v0(...)
+
+declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind
diff --git a/test/CodeGen/X86/optimize-max-3.ll b/test/CodeGen/X86/optimize-max-3.ll
index b90413d40a0f9..e35eb70367232 100644
--- a/test/CodeGen/X86/optimize-max-3.ll
+++ b/test/CodeGen/X86/optimize-max-3.ll
@@ -45,8 +45,8 @@ for.end: ; preds = %for.body, %entry
; CHECK-NEXT: align
; CHECK-NEXT: BB1_2:
; CHECK-NEXT: callq
-; CHECK-NEXT: incl [[BX:%ebx|%esi]]
-; CHECK-NEXT: cmpl [[R14:%r14d|%edi]], [[BX]]
+; CHECK-NEXT: incl [[BX:%[a-z0-9]+]]
+; CHECK-NEXT: cmpl [[R14:%[a-z0-9]+]], [[BX]]
; CHECK-NEXT: movq %rax, %r{{di|cx}}
; CHECK-NEXT: jl
diff --git a/test/CodeGen/X86/or-address.ll b/test/CodeGen/X86/or-address.ll
index 6447680e623ba..b3fc62736b385 100644
--- a/test/CodeGen/X86/or-address.ll
+++ b/test/CodeGen/X86/or-address.ll
@@ -4,10 +4,10 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
target triple = "x86_64-apple-darwin10.3"
-; CHECK: movl %{{.*}}, (%rdi,%rdx,4)
-; CHECK: movl %{{.*}}, 8(%rdi,%rdx,4)
-; CHECK: movl %{{.*}}, 4(%rdi,%rdx,4)
-; CHECK: movl %{{.*}}, 12(%rdi,%rdx,4)
+; CHECK: movl %{{.*}}, (%rdi,[[R0:.+]],4)
+; CHECK: movl %{{.*}}, 8(%rdi,[[R0]],4)
+; CHECK: movl %{{.*}}, 4(%rdi,[[R0]],4)
+; CHECK: movl %{{.*}}, 12(%rdi,[[R0]],4)
define void @test(i32* nocapture %array, i32 %r0) nounwind ssp noredzone {
bb.nph:
diff --git a/test/CodeGen/X86/peep-vector-extract-concat.ll b/test/CodeGen/X86/peep-vector-extract-concat.ll
index e4ab2b5e05a42..606a9be68bd41 100644
--- a/test/CodeGen/X86/peep-vector-extract-concat.ll
+++ b/test/CodeGen/X86/peep-vector-extract-concat.ll
@@ -1,4 +1,9 @@
-; RUN: llc < %s -march=x86-64 -mattr=+sse2,-sse41 | grep {pshufd \$3, %xmm0, %xmm0}
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse2,-sse41 | FileCheck %s
+; CHECK: pshufd $3, %xmm0, %xmm0
+
+; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse2,-sse41 | FileCheck %s -check-prefix=WIN64
+; %a is passed indirectly on Win64.
+; WIN64: movss 12(%rcx), %xmm0
define float @foo(<8 x float> %a) nounwind {
%c = extractelement <8 x float> %a, i32 3
diff --git a/test/CodeGen/X86/personality.ll b/test/CodeGen/X86/personality.ll
index 6789bb0c0fbe2..e952a9bb25a41 100644
--- a/test/CodeGen/X86/personality.ll
+++ b/test/CodeGen/X86/personality.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -mtriple=x86_64-apple-darwin9 | FileCheck %s -check-prefix=X64
-; RUN: llc < %s -mtriple=i386-apple-darwin9 | FileCheck %s -check-prefix=X32
+; RUN: llc < %s -disable-cfi -mtriple=x86_64-apple-darwin9 -disable-cgp-branch-opts | FileCheck %s -check-prefix=X64
+; RUN: llc < %s -disable-cfi -mtriple=i386-apple-darwin9 -disable-cgp-branch-opts | FileCheck %s -check-prefix=X32
; PR1632
define void @_Z1fv() {
@@ -38,13 +38,15 @@ declare void @__gxx_personality_v0()
declare void @__cxa_end_catch()
-; X64: Leh_frame_common_begin0:
-; X64: .long ___gxx_personality_v0@GOTPCREL+4
+; X64: zPLR
+; X64: .byte 155
+; X64-NEXT: .long ___gxx_personality_v0@GOTPCREL+4
-; X32: Leh_frame_common_begin0:
-; X32: .long L___gxx_personality_v0$non_lazy_ptr-
-; ....
+; X32: .section __IMPORT,__pointers,non_lazy_symbol_pointers
+; X32-NEXT: L___gxx_personality_v0$non_lazy_ptr:
+; X32-NEXT: .indirect_symbol ___gxx_personality_v0
-; X32: .section __IMPORT,__pointers,non_lazy_symbol_pointers
-; X32: L___gxx_personality_v0$non_lazy_ptr:
-; X32: .indirect_symbol ___gxx_personality_v0
+; X32: zPLR
+; X32: .byte 155
+; X32-NEXT: :
+; X32-NEXT: .long L___gxx_personality_v0$non_lazy_ptr-
diff --git a/test/CodeGen/X86/phi-constants.ll b/test/CodeGen/X86/phi-bit-propagation.ll
index da9652f734043..94c97229b092d 100644
--- a/test/CodeGen/X86/phi-constants.ll
+++ b/test/CodeGen/X86/phi-bit-propagation.ll
@@ -33,3 +33,23 @@ return: ; preds = %for.body, %for.cond
%retval.0 = phi i1 [ true, %for.body ], [ false, %for.cond ]
ret i1 %retval.0
}
+
+; This test case caused an assertion failure; see PR9324.
+define void @func_37() noreturn nounwind ssp {
+entry:
+ br i1 undef, label %lbl_919, label %entry.for.inc_crit_edge
+
+entry.for.inc_crit_edge: ; preds = %entry
+ br label %for.inc
+
+lbl_919: ; preds = %for.cond7.preheader, %entry
+ br label %for.cond7.preheader
+
+for.cond7.preheader: ; preds = %for.inc, %lbl_919
+ %storemerge.ph = phi i8 [ 0, %lbl_919 ], [ %add, %for.inc ]
+ br i1 undef, label %for.inc, label %lbl_919
+
+for.inc: ; preds = %for.cond7.preheader, %entry.for.inc_crit_edge
+ %add = add i8 undef, 1
+ br label %for.cond7.preheader
+}
diff --git a/test/CodeGen/X86/pic.ll b/test/CodeGen/X86/pic.ll
index dc5fcd78dc84a..fb60ac2a60b9d 100644
--- a/test/CodeGen/X86/pic.ll
+++ b/test/CodeGen/X86/pic.ll
@@ -79,8 +79,8 @@ entry:
; LINUX-NEXT: .L3$pb:
; LINUX: popl
; LINUX: addl $_GLOBAL_OFFSET_TABLE_+(.L{{.*}}-.L3$pb), %[[REG3:e..]]
-; LINUX: movl pfoo@GOT(%[[REG3]]),
; LINUX: calll afoo@PLT
+; LINUX: movl pfoo@GOT(%[[REG3]]),
; LINUX: calll *
}
diff --git a/test/CodeGen/X86/pmulld.ll b/test/CodeGen/X86/pmulld.ll
index 3ef594112b451..be527aed9a986 100644
--- a/test/CodeGen/X86/pmulld.ll
+++ b/test/CodeGen/X86/pmulld.ll
@@ -1,8 +1,13 @@
-; RUN: llc < %s -march=x86-64 -mattr=+sse41 -asm-verbose=0 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse41 -asm-verbose=0 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse41 -asm-verbose=0 | FileCheck %s -check-prefix=WIN64
define <4 x i32> @test1(<4 x i32> %A, <4 x i32> %B) nounwind {
; CHECK: test1:
; CHECK-NEXT: pmulld
+
+; WIN64: test1:
+; WIN64-NEXT: movdqa (%rcx), %xmm0
+; WIN64-NEXT: pmulld (%rdx), %xmm0
%C = mul <4 x i32> %A, %B
ret <4 x i32> %C
}
@@ -10,6 +15,11 @@ define <4 x i32> @test1(<4 x i32> %A, <4 x i32> %B) nounwind {
define <4 x i32> @test1a(<4 x i32> %A, <4 x i32> *%Bp) nounwind {
; CHECK: test1a:
; CHECK-NEXT: pmulld
+
+; WIN64: test1a:
+; WIN64-NEXT: movdqa (%rcx), %xmm0
+; WIN64-NEXT: pmulld (%rdx), %xmm0
+
%B = load <4 x i32>* %Bp
%C = mul <4 x i32> %A, %B
ret <4 x i32> %C
diff --git a/test/CodeGen/X86/postra-licm.ll b/test/CodeGen/X86/postra-licm.ll
index 902c69b471db1..48c48aebe5bee 100644
--- a/test/CodeGen/X86/postra-licm.ll
+++ b/test/CodeGen/X86/postra-licm.ll
@@ -2,6 +2,7 @@
; RUN: llc < %s -mtriple=x86_64-apple-darwin -relocation-model=pic -disable-fp-elim | FileCheck %s -check-prefix=X86-64
; MachineLICM should be able to hoist loop invariant reload out of the loop.
+; Only linear scan needs this, -regalloc=greedy sinks the spill instead.
; rdar://7233099
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
@@ -68,10 +69,12 @@ bb26.preheader: ; preds = %imix_test.exit
bb23: ; preds = %imix_test.exit
unreachable
+; Verify that there are no loads inside the loop.
; X86-32: %bb26.preheader
-; X86-32: movl -16(%ebp),
-; X86-32-NEXT: .align 4
-; X86-32-NEXT: %bb28
+; X86-32: .align 4
+; X86-32-NOT: (%esp),
+; X86-32-NOT: (%ebp),
+; X86-32: jmp
bb28: ; preds = %bb28, %bb26.preheader
%counter.035 = phi i32 [ %3, %bb28 ], [ 0, %bb26.preheader ] ; <i32> [#uses=2]
diff --git a/test/CodeGen/X86/pr2659.ll b/test/CodeGen/X86/pr2659.ll
index 54d043d54f835..ef0f9ea8b03aa 100644
--- a/test/CodeGen/X86/pr2659.ll
+++ b/test/CodeGen/X86/pr2659.ll
@@ -18,7 +18,8 @@ forcond.preheader: ; preds = %entry
; CHECK: movl $1
; CHECK-NOT: xorl
; CHECK-NOT: movl
-; CHECK-NEXT: je
+; CHECK-NOT: LBB
+; CHECK: je
ifthen: ; preds = %entry
ret i32 0
diff --git a/test/CodeGen/X86/pr3366.ll b/test/CodeGen/X86/pr3366.ll
index f813e2e58801a..1127b6093215b 100644
--- a/test/CodeGen/X86/pr3366.ll
+++ b/test/CodeGen/X86/pr3366.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 | grep movzbl
+; RUN: llc < %s -march=x86 -disable-cgp-branch-opts | grep movzbl
; PR3366
define void @_ada_c34002a() nounwind {
diff --git a/test/CodeGen/X86/pr3495-2.ll b/test/CodeGen/X86/pr3495-2.ll
index 98c064a07db92..a4204e528930f 100644
--- a/test/CodeGen/X86/pr3495-2.ll
+++ b/test/CodeGen/X86/pr3495-2.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -relocation-model=pic -disable-fp-elim -stats |& grep {Number of loads added} | grep 1
+; RUN: llc < %s -march=x86 -relocation-model=pic -disable-fp-elim -stats -regalloc=linearscan |& grep {Number of loads added} | grep 1
; PR3495
;
; This test may not be testing what it was supposed to test.
diff --git a/test/CodeGen/X86/pr3495.ll b/test/CodeGen/X86/pr3495.ll
index e84a84f59bb76..c612a6ec8bbc0 100644
--- a/test/CodeGen/X86/pr3495.ll
+++ b/test/CodeGen/X86/pr3495.ll
@@ -1,6 +1,6 @@
-; RUN: llc < %s -march=x86 -stats |& grep {Number of loads added} | grep 2
-; RUN: llc < %s -march=x86 -stats |& grep {Number of register spills} | grep 1
-; RUN: llc < %s -march=x86 -stats |& grep {Number of machine instrs printed} | grep 34
+; RUN: llc < %s -march=x86 -stats -regalloc=linearscan |& grep {Number of loads added} | grep 2
+; RUN: llc < %s -march=x86 -stats -regalloc=linearscan |& grep {Number of register spills} | grep 1
+; RUN: llc < %s -march=x86 -stats -regalloc=linearscan |& grep {Number of machine instrs printed} | grep 34
; PR3495
target triple = "i386-pc-linux-gnu"
diff --git a/test/CodeGen/X86/pr9743.ll b/test/CodeGen/X86/pr9743.ll
new file mode 100644
index 0000000000000..8feccd9ef1c2b
--- /dev/null
+++ b/test/CodeGen/X86/pr9743.ll
@@ -0,0 +1,17 @@
+; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -disable-fp-elim -asm-verbose=0 | FileCheck %s
+
+define void @f() {
+ ret void
+}
+
+; CHECK: .cfi_startproc
+; CHECK-NEXT: pushq
+; CHECK-NEXT: :
+; CHECK-NEXT: .cfi_def_cfa_offset 16
+; CHECK-NEXT: :
+; CHECK-NEXT: .cfi_offset 6, -16
+; CHECK-NEXT: movq %rsp, %rbp
+; CHECK-NEXT: :
+; CHECK-NEXT: .cfi_def_cfa_register 6
+; CHECK-NEXT: popq %rbp
+; CHECK-NEXT: ret
diff --git a/test/CodeGen/X86/pre-split1.ll b/test/CodeGen/X86/pre-split1.ll
index e89b507414eb6..b55bf5710767d 100644
--- a/test/CodeGen/X86/pre-split1.ll
+++ b/test/CodeGen/X86/pre-split1.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan -stats |& \
; RUN: grep {pre-alloc-split} | grep {Number of intervals split} | grep 1
; XFAIL: *
diff --git a/test/CodeGen/X86/pre-split10.ll b/test/CodeGen/X86/pre-split10.ll
index db039bd97acdf..83c6450c0ab9f 100644
--- a/test/CodeGen/X86/pre-split10.ll
+++ b/test/CodeGen/X86/pre-split10.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan
define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
diff --git a/test/CodeGen/X86/pre-split11.ll b/test/CodeGen/X86/pre-split11.ll
index 0a9f4e33f34c1..3d549f9111ec8 100644
--- a/test/CodeGen/X86/pre-split11.ll
+++ b/test/CodeGen/X86/pre-split11.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+sse2 -pre-alloc-split | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=+sse2 -pre-alloc-split -regalloc=linearscan | FileCheck %s
@.str = private constant [28 x i8] c"\0A\0ADOUBLE D = %f\0A\00", align 1 ; <[28 x i8]*> [#uses=1]
@.str1 = private constant [37 x i8] c"double to long l1 = %ld\09\09(0x%lx)\0A\00", align 8 ; <[37 x i8]*> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split2.ll b/test/CodeGen/X86/pre-split2.ll
index ba902f95513d2..670737b72df1b 100644
--- a/test/CodeGen/X86/pre-split2.ll
+++ b/test/CodeGen/X86/pre-split2.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats -regalloc=linearscan |& \
; RUN: grep {pre-alloc-split} | count 2
define i32 @t(i32 %arg) {
diff --git a/test/CodeGen/X86/pre-split3.ll b/test/CodeGen/X86/pre-split3.ll
index 2e314207c3e34..0c49a913353c8 100644
--- a/test/CodeGen/X86/pre-split3.ll
+++ b/test/CodeGen/X86/pre-split3.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan -stats |& \
; RUN: grep {pre-alloc-split} | grep {Number of intervals split} | grep 1
define i32 @t(i32 %arg) {
diff --git a/test/CodeGen/X86/pre-split4.ll b/test/CodeGen/X86/pre-split4.ll
index 10cef276c62f6..37d1ac6301f08 100644
--- a/test/CodeGen/X86/pre-split4.ll
+++ b/test/CodeGen/X86/pre-split4.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan -stats |& \
; RUN: grep {pre-alloc-split} | grep {Number of intervals split} | grep 2
define i32 @main(i32 %argc, i8** %argv) nounwind {
diff --git a/test/CodeGen/X86/pre-split5.ll b/test/CodeGen/X86/pre-split5.ll
index 8def460809f21..9f41f24c73e5b 100644
--- a/test/CodeGen/X86/pre-split5.ll
+++ b/test/CodeGen/X86/pre-split5.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan
target triple = "i386-apple-darwin9.5"
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
diff --git a/test/CodeGen/X86/pre-split6.ll b/test/CodeGen/X86/pre-split6.ll
index 837e238b62089..d8f274db2c9a8 100644
--- a/test/CodeGen/X86/pre-split6.ll
+++ b/test/CodeGen/X86/pre-split6.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -pre-alloc-split | grep {divsd 24} | count 1
+; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -pre-alloc-split -regalloc=linearscan | grep {divsd 24} | count 1
@current_surfaces.b = external global i1 ; <i1*> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split7.ll b/test/CodeGen/X86/pre-split7.ll
index 0b81c0bc09fe6..8c93faac677c0 100644
--- a/test/CodeGen/X86/pre-split7.ll
+++ b/test/CodeGen/X86/pre-split7.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan
@object_distance = external global double, align 8 ; <double*> [#uses=1]
@axis_slope_angle = external global double, align 8 ; <double*> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split8.ll b/test/CodeGen/X86/pre-split8.ll
index 0684bd036ce24..7e6ad6e17695b 100644
--- a/test/CodeGen/X86/pre-split8.ll
+++ b/test/CodeGen/X86/pre-split8.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan -stats |& \
; RUN: grep {pre-alloc-split} | grep {Number of intervals split} | grep 1
@current_surfaces.b = external global i1 ; <i1*> [#uses=1]
diff --git a/test/CodeGen/X86/pre-split9.ll b/test/CodeGen/X86/pre-split9.ll
index 86dda33533f73..951e6fb28a11e 100644
--- a/test/CodeGen/X86/pre-split9.ll
+++ b/test/CodeGen/X86/pre-split9.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
+; RUN: llc < %s -march=x86 -mattr=+sse2 -pre-alloc-split -regalloc=linearscan -stats |& \
; RUN: grep {pre-alloc-split} | grep {Number of intervals split} | grep 1
@current_surfaces.b = external global i1 ; <i1*> [#uses=1]
diff --git a/test/CodeGen/X86/remat-scalar-zero.ll b/test/CodeGen/X86/remat-scalar-zero.ll
index 2da96aba5531d..f6f0ed10b5141 100644
--- a/test/CodeGen/X86/remat-scalar-zero.ll
+++ b/test/CodeGen/X86/remat-scalar-zero.ll
@@ -1,3 +1,4 @@
+; XFAIL: *
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu > %t
; RUN: not grep xor %t
; RUN: not grep movap %t
diff --git a/test/CodeGen/X86/scalar-min-max-fill-operand.ll b/test/CodeGen/X86/scalar-min-max-fill-operand.ll
index fe40758d8ecd9..2f90932c0ed8f 100644
--- a/test/CodeGen/X86/scalar-min-max-fill-operand.ll
+++ b/test/CodeGen/X86/scalar-min-max-fill-operand.ll
@@ -1,6 +1,13 @@
-; RUN: llc < %s -march=x86-64 | grep min | count 1
-; RUN: llc < %s -march=x86-64 | grep max | count 1
-; RUN: llc < %s -march=x86-64 | grep mov | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: {{(min|max|mov)}}
+; CHECK: mov
+; CHECK-NOT: {{(min|max|mov)}}
+; CHECK: min
+; CHECK-NOT: {{(min|max|mov)}}
+; CHECK: mov
+; CHECK-NOT: {{(min|max|mov)}}
+; CHECK: max
+; CHECK-NOT: {{(min|max|mov)}}
declare float @bar()
diff --git a/test/CodeGen/X86/sext-i1.ll b/test/CodeGen/X86/sext-i1.ll
index 21c418d534e91..574769b430845 100644
--- a/test/CodeGen/X86/sext-i1.ll
+++ b/test/CodeGen/X86/sext-i1.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=32
-; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=64
+; RUN: llc < %s -march=x86 -disable-cgp-branch-opts | FileCheck %s -check-prefix=32
+; RUN: llc < %s -march=x86-64 -disable-cgp-branch-opts | FileCheck %s -check-prefix=64
; rdar://7573216
; PR6146
diff --git a/test/CodeGen/X86/shrink-compare.ll b/test/CodeGen/X86/shrink-compare.ll
new file mode 100644
index 0000000000000..8d4b07f9d9b0e
--- /dev/null
+++ b/test/CodeGen/X86/shrink-compare.ll
@@ -0,0 +1,36 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+
+declare void @bar()
+
+define void @test1(i32* nocapture %X) nounwind {
+entry:
+ %tmp1 = load i32* %X, align 4
+ %and = and i32 %tmp1, 255
+ %cmp = icmp eq i32 %and, 47
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then:
+ tail call void @bar() nounwind
+ br label %if.end
+
+if.end:
+ ret void
+; CHECK: test1:
+; CHECK: cmpb $47, (%{{rdi|rcx}})
+}
+
+define void @test2(i32 %X) nounwind {
+entry:
+ %and = and i32 %X, 255
+ %cmp = icmp eq i32 %and, 47
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then:
+ tail call void @bar() nounwind
+ br label %if.end
+
+if.end:
+ ret void
+; CHECK: test2:
+; CHECK: cmpb $47, %{{dil|cl}}
+}
diff --git a/test/CodeGen/X86/sse-align-0.ll b/test/CodeGen/X86/sse-align-0.ll
index b12a87d614d28..8ffd312477022 100644
--- a/test/CodeGen/X86/sse-align-0.ll
+++ b/test/CodeGen/X86/sse-align-0.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 | not grep mov
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: mov
define <4 x float> @foo(<4 x float>* %p, <4 x float> %x) nounwind {
%t = load <4 x float>* %p
diff --git a/test/CodeGen/X86/sse-align-3.ll b/test/CodeGen/X86/sse-align-3.ll
index c42f7f0bad997..04f216176c366 100644
--- a/test/CodeGen/X86/sse-align-3.ll
+++ b/test/CodeGen/X86/sse-align-3.ll
@@ -1,4 +1,9 @@
-; RUN: llc < %s -march=x86-64 | grep movap | count 2
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: movapd
+; CHECK: movaps
+; CHECK-NOT: movaps
+; CHECK: movapd
+; CHECK-NOT: movap
define void @foo(<4 x float>* %p, <4 x float> %x) nounwind {
store <4 x float> %x, <4 x float>* %p
diff --git a/test/CodeGen/X86/sse-align-7.ll b/test/CodeGen/X86/sse-align-7.ll
index 5784481c5ae9a..e55d5859560e8 100644
--- a/test/CodeGen/X86/sse-align-7.ll
+++ b/test/CodeGen/X86/sse-align-7.ll
@@ -1,4 +1,6 @@
-; RUN: llc < %s -march=x86-64 | grep movaps | count 1
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK: movaps
+; CHECK-NOT: movaps
define void @bar(<2 x i64>* %p, <2 x i64> %x) nounwind {
store <2 x i64> %x, <2 x i64>* %p
diff --git a/test/CodeGen/X86/sse-commute.ll b/test/CodeGen/X86/sse-commute.ll
index 38ed644e952b7..336bf06e557d7 100644
--- a/test/CodeGen/X86/sse-commute.ll
+++ b/test/CodeGen/X86/sse-commute.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=x86-64 < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-linux < %s | FileCheck %s
; Commute the comparison to avoid a move.
; PR7500.
diff --git a/test/CodeGen/X86/sse2.ll b/test/CodeGen/X86/sse2.ll
index 5c3e32f016a7e..70e0a8a177e05 100644
--- a/test/CodeGen/X86/sse2.ll
+++ b/test/CodeGen/X86/sse2.ll
@@ -178,9 +178,9 @@ define <4 x float> @test14(<4 x float>* %x, <4 x float>* %y) nounwind {
%tmp27 = shufflevector <4 x float> %tmp9, <4 x float> %tmp21, <4 x i32> < i32 0, i32 1, i32 4, i32 5 > ; <<4 x float>> [#uses=1]
ret <4 x float> %tmp27
; CHECK: test14:
-; CHECK: addps %xmm1, %xmm0
-; CHECK: subps %xmm1, %xmm2
-; CHECK: movlhps %xmm2, %xmm0
+; CHECK: addps [[X1:%xmm[0-9]+]], [[X0:%xmm[0-9]+]]
+; CHECK: subps [[X1]], [[X2:%xmm[0-9]+]]
+; CHECK: movlhps [[X2]], [[X0]]
}
define <4 x float> @test15(<4 x float>* %x, <4 x float>* %y) nounwind {
diff --git a/test/CodeGen/X86/sse3.ll b/test/CodeGen/X86/sse3.ll
index 9a60091a0cf0e..8e72f133420a9 100644
--- a/test/CodeGen/X86/sse3.ll
+++ b/test/CodeGen/X86/sse3.ll
@@ -168,12 +168,12 @@ define internal void @t10() nounwind {
store <4 x i16> %6, <4 x i16>* @g2, align 8
ret void
; X64: t10:
-; X64: pextrw $4, %xmm0, %eax
-; X64: unpcklpd %xmm1, %xmm1
-; X64: pshuflw $8, %xmm1, %xmm1
-; X64: pinsrw $2, %eax, %xmm1
-; X64: pextrw $6, %xmm0, %eax
-; X64: pinsrw $3, %eax, %xmm1
+; X64: pextrw $4, [[X0:%xmm[0-9]+]], %eax
+; X64: unpcklpd [[X1:%xmm[0-9]+]]
+; X64: pshuflw $8, [[X1]], [[X1]]
+; X64: pinsrw $2, %eax, [[X1]]
+; X64: pextrw $6, [[X0]], %eax
+; X64: pinsrw $3, %eax, [[X1]]
}
diff --git a/test/CodeGen/X86/sse_reload_fold.ll b/test/CodeGen/X86/sse_reload_fold.ll
index dc3d6fe6797dd..02399c4995564 100644
--- a/test/CodeGen/X86/sse_reload_fold.ll
+++ b/test/CodeGen/X86/sse_reload_fold.ll
@@ -1,5 +1,6 @@
-; RUN: llc < %s -march=x86-64 -mattr=+64bit,+sse3 -print-failed-fuse-candidates |& \
-; RUN: grep fail | count 1
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+64bit,+sse3 -print-failed-fuse-candidates |& FileCheck %s
+; CHECK: fail
+; CHECK-NOT: fail
declare float @test_f(float %f)
declare double @test_d(double %f)
diff --git a/test/CodeGen/X86/stdarg.ll b/test/CodeGen/X86/stdarg.ll
index 9778fa1389486..5728daf1ee1ce 100644
--- a/test/CodeGen/X86/stdarg.ll
+++ b/test/CodeGen/X86/stdarg.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 | grep {testb \[%\]al, \[%\]al}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK: testb %al, %al
%struct.__va_list_tag = type { i32, i32, i8*, i8* }
diff --git a/test/CodeGen/X86/stride-nine-with-base-reg.ll b/test/CodeGen/X86/stride-nine-with-base-reg.ll
index f4847a31c81fc..ddf059c675df0 100644
--- a/test/CodeGen/X86/stride-nine-with-base-reg.ll
+++ b/test/CodeGen/X86/stride-nine-with-base-reg.ll
@@ -1,5 +1,6 @@
-; RUN: llc < %s -march=x86 -relocation-model=static | not grep lea
-; RUN: llc < %s -march=x86-64 | not grep lea
+; RUN: llc < %s -march=x86 -relocation-model=static | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: lea
; P should be sunk into the loop and folded into the address mode. There
; shouldn't be any lea instructions inside the loop.
diff --git a/test/CodeGen/X86/stride-reuse.ll b/test/CodeGen/X86/stride-reuse.ll
index 5cbd895250a67..1251a24005556 100644
--- a/test/CodeGen/X86/stride-reuse.ll
+++ b/test/CodeGen/X86/stride-reuse.ll
@@ -1,5 +1,6 @@
-; RUN: llc < %s -march=x86 | not grep lea
-; RUN: llc < %s -march=x86-64 | not grep lea
+; RUN: llc < %s -march=x86 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; CHECK-NOT: lea
@B = external global [1000 x float], align 32
@A = external global [1000 x float], align 32
diff --git a/test/CodeGen/X86/sub-with-overflow.ll b/test/CodeGen/X86/sub-with-overflow.ll
index 19f4079abb5f7..4522e917d315e 100644
--- a/test/CodeGen/X86/sub-with-overflow.ll
+++ b/test/CodeGen/X86/sub-with-overflow.ll
@@ -1,5 +1,4 @@
-; RUN: llc < %s -march=x86 | grep {jo} | count 1
-; RUN: llc < %s -march=x86 | grep {jb} | count 1
+; RUN: llc < %s -march=x86 | FileCheck %s
@ok = internal constant [4 x i8] c"%d\0A\00"
@no = internal constant [4 x i8] c"no\0A\00"
@@ -18,6 +17,10 @@ normal:
overflow:
%t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
ret i1 false
+
+; CHECK: func1:
+; CHECK: subl 20(%esp)
+; CHECK-NEXT: jo
}
define i1 @func2(i32 %v1, i32 %v2) nounwind {
@@ -34,8 +37,23 @@ normal:
carry:
%t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
ret i1 false
+
+; CHECK: func2:
+; CHECK: subl 20(%esp)
+; CHECK-NEXT: jb
}
declare i32 @printf(i8*, ...) nounwind
declare {i32, i1} @llvm.ssub.with.overflow.i32(i32, i32)
declare {i32, i1} @llvm.usub.with.overflow.i32(i32, i32)
+
+define i1 @func3(i32 %x) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.ssub.with.overflow.i32(i32 %x, i32 1)
+ %obit = extractvalue {i32, i1} %t, 1
+ ret i1 %obit
+
+; CHECK: func3:
+; CHECK: decl
+; CHECK-NEXT: seto
+}
diff --git a/test/CodeGen/X86/tail-opts.ll b/test/CodeGen/X86/tail-opts.ll
index 9291695f4d65c..77710ad56bae9 100644
--- a/test/CodeGen/X86/tail-opts.ll
+++ b/test/CodeGen/X86/tail-opts.ll
@@ -109,15 +109,15 @@ altret:
; CHECK: dont_merge_oddly:
; CHECK-NOT: ret
-; CHECK: ucomiss %xmm1, %xmm2
+; CHECK: ucomiss %xmm{{[0-2]}}, %xmm{{[0-2]}}
; CHECK-NEXT: jbe .LBB2_3
-; CHECK-NEXT: ucomiss %xmm0, %xmm1
+; CHECK-NEXT: ucomiss %xmm{{[0-2]}}, %xmm{{[0-2]}}
; CHECK-NEXT: ja .LBB2_4
; CHECK-NEXT: .LBB2_2:
; CHECK-NEXT: movb $1, %al
; CHECK-NEXT: ret
; CHECK-NEXT: .LBB2_3:
-; CHECK-NEXT: ucomiss %xmm0, %xmm2
+; CHECK-NEXT: ucomiss %xmm{{[0-2]}}, %xmm{{[0-2]}}
; CHECK-NEXT: jbe .LBB2_2
; CHECK-NEXT: .LBB2_4:
; CHECK-NEXT: xorb %al, %al
@@ -153,16 +153,20 @@ bb30:
; an unconditional jump to complete a two-way conditional branch.
; CHECK: c_expand_expr_stmt:
-; CHECK: jmp .LBB3_11
-; CHECK-NEXT: .LBB3_9:
-; CHECK-NEXT: movq 8(%rax), %rax
-; CHECK-NEXT: xorb %dl, %dl
-; CHECK-NEXT: movb 16(%rax), %al
-; CHECK-NEXT: cmpb $16, %al
-; CHECK-NEXT: je .LBB3_11
-; CHECK-NEXT: cmpb $23, %al
-; CHECK-NEXT: jne .LBB3_14
-; CHECK-NEXT: .LBB3_11:
+;
+; This test only works when register allocation happens to use %rax for both
+; load addresses.
+;
+; CHE: jmp .LBB3_11
+; CHE-NEXT: .LBB3_9:
+; CHE-NEXT: movq 8(%rax), %rax
+; CHE-NEXT: xorb %dl, %dl
+; CHE-NEXT: movb 16(%rax), %al
+; CHE-NEXT: cmpb $16, %al
+; CHE-NEXT: je .LBB3_11
+; CHE-NEXT: cmpb $23, %al
+; CHE-NEXT: jne .LBB3_14
+; CHE-NEXT: .LBB3_11:
%0 = type { %struct.rtx_def* }
%struct.lang_decl = type opaque
diff --git a/test/CodeGen/X86/tailcall-returndup-void.ll b/test/CodeGen/X86/tailcall-returndup-void.ll
new file mode 100644
index 0000000000000..c1d631225ec7f
--- /dev/null
+++ b/test/CodeGen/X86/tailcall-returndup-void.ll
@@ -0,0 +1,37 @@
+; RUN: llc < %s -march=x86-64 | FileCheck %s
+; CHECK: rBM_info
+; CHECK-NOT: ret
+
+@sES_closure = external global [0 x i64]
+declare cc10 void @sEH_info(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64) align 8
+
+define cc10 void @rBM_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg) nounwind align 8 {
+c263:
+ %ln265 = getelementptr inbounds i64* %Sp_Arg, i64 -2
+ %ln266 = ptrtoint i64* %ln265 to i64
+ %ln268 = icmp ult i64 %ln266, %R3_Arg
+ br i1 %ln268, label %c26a, label %n26p
+
+n26p: ; preds = %c263
+ br i1 icmp ne (i64 and (i64 ptrtoint ([0 x i64]* @sES_closure to i64), i64 7), i64 0), label %c1ZP.i, label %n1ZQ.i
+
+n1ZQ.i: ; preds = %n26p
+ %ln1ZT.i = load i64* getelementptr inbounds ([0 x i64]* @sES_closure, i64 0, i64 0), align 8
+ %ln1ZU.i = inttoptr i64 %ln1ZT.i to void (i64*, i64*, i64*, i64, i64, i64)*
+ tail call cc10 void %ln1ZU.i(i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 ptrtoint ([0 x i64]* @sES_closure to i64), i64 ptrtoint ([0 x i64]* @sES_closure to i64), i64 %R3_Arg) nounwind
+ br label %rBL_info.exit
+
+c1ZP.i: ; preds = %n26p
+ tail call cc10 void @sEH_info(i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 ptrtoint ([0 x i64]* @sES_closure to i64), i64 ptrtoint ([0 x i64]* @sES_closure to i64), i64 %R3_Arg) nounwind
+ br label %rBL_info.exit
+
+rBL_info.exit: ; preds = %c1ZP.i, %n1ZQ.i
+ ret void
+
+c26a: ; preds = %c263
+ %ln27h = getelementptr inbounds i64* %Base_Arg, i64 -2
+ %ln27j = load i64* %ln27h, align 8
+ %ln27k = inttoptr i64 %ln27j to void (i64*, i64*, i64*, i64, i64, i64)*
+ tail call cc10 void %ln27k(i64* %Base_Arg, i64* %Sp_Arg, i64* %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg) nounwind
+ ret void
+}
diff --git a/test/CodeGen/X86/tailcallbyval64.ll b/test/CodeGen/X86/tailcallbyval64.ll
index 7c685b85807e0..1b1efe713c6e3 100644
--- a/test/CodeGen/X86/tailcallbyval64.ll
+++ b/test/CodeGen/X86/tailcallbyval64.ll
@@ -1,15 +1,30 @@
-; RUN: llc < %s -march=x86-64 -tailcallopt | grep TAILCALL
+; RUN: llc < %s -mtriple=x86_64-linux -tailcallopt | FileCheck %s
+
+; FIXME: Win64 does not support byval.
+
+; Expect the entry point.
+; CHECK: tailcaller:
+
; Expect 2 rep;movs because of tail call byval lowering.
-; RUN: llc < %s -march=x86-64 -tailcallopt | grep rep | wc -l | grep 2
+; CHECK: rep;
+; CHECK: rep;
+
; A sequence of copyto/copyfrom virtual registers is used to deal with byval
; lowering appearing after moving arguments to registers. The following two
; checks verify that the register allocator changes those sequences to direct
; moves to argument register where it can (for registers that are not used in
; byval lowering - not rsi, not rdi, not rcx).
; Expect argument 4 to be moved directly to register edx.
-; RUN: llc < %s -march=x86-64 -tailcallopt | grep movl | grep {7} | grep edx
+; CHECK: movl $7, %edx
+
; Expect argument 6 to be moved directly to register r8.
-; RUN: llc < %s -march=x86-64 -tailcallopt | grep movl | grep {17} | grep r8
+; CHECK: movl $17, %r8d
+
+; Expect not call but jmp to @tailcallee.
+; CHECK: jmp tailcallee
+
+; Expect the trailer.
+; CHECK: .size tailcaller
%struct.s = type { i64, i64, i64, i64, i64, i64, i64, i64,
i64, i64, i64, i64, i64, i64, i64, i64,
@@ -25,5 +40,3 @@ entry:
%tmp4 = tail call fastcc i64 @tailcallee(%struct.s* %a byval, i64 %tmp3, i64 %b, i64 7, i64 13, i64 17)
ret i64 %tmp4
}
-
-
diff --git a/test/CodeGen/X86/tailcallstack64.ll b/test/CodeGen/X86/tailcallstack64.ll
index 0c732d56b6ca4..060ce0f7aab4f 100644
--- a/test/CodeGen/X86/tailcallstack64.ll
+++ b/test/CodeGen/X86/tailcallstack64.ll
@@ -2,19 +2,19 @@
; RUN: llc < %s -tailcallopt -mtriple=x86_64-win32 -post-RA-scheduler=true | FileCheck %s
; FIXME: Redundant unused stack allocation could be eliminated.
-; CHECK: subq ${{24|88}}, %rsp
+; CHECK: subq ${{24|72}}, %rsp
; Check that lowered arguments on the stack do not overwrite each other.
; Add %in1 %p1 to a different temporary register (%eax).
-; CHECK: movl [[A1:32|144]](%rsp), %eax
+; CHECK: movl [[A1:32|144]](%rsp), [[R1:%e..]]
; Move param %in1 to temp register (%r10d).
-; CHECK: movl [[A2:40|152]](%rsp), %r10d
+; CHECK: movl [[A2:40|152]](%rsp), [[R2:%[a-z0-9]+]]
; Add %in1 %p1 to a different temporary register (%eax).
-; CHECK: addl {{%edi|%ecx}}, %eax
+; CHECK: addl {{%edi|%ecx}}, [[R1]]
; Move param %in2 to stack.
-; CHECK: movl %r10d, [[A1]](%rsp)
+; CHECK: movl [[R2]], [[A1]](%rsp)
; Move result of addition to stack.
-; CHECK: movl %eax, [[A2]](%rsp)
+; CHECK: movl [[R1]], [[A2]](%rsp)
; Eventually, do a TAILCALL
; CHECK: TAILCALL
diff --git a/test/CodeGen/X86/test-nofold.ll b/test/CodeGen/X86/test-nofold.ll
index f1063dcabf4f4..97db1b340e81c 100644
--- a/test/CodeGen/X86/test-nofold.ll
+++ b/test/CodeGen/X86/test-nofold.ll
@@ -2,10 +2,10 @@
; rdar://5752025
; We want:
-; CHECK: movl 4(%esp), %ecx
-; CHECK-NEXT: andl $15, %ecx
-; CHECK-NEXT: movl $42, %eax
-; CHECK-NEXT: cmovel %ecx, %eax
+; CHECK: movl $42, %ecx
+; CHECK-NEXT: movl 4(%esp), %eax
+; CHECK-NEXT: andl $15, %eax
+; CHECK-NEXT: cmovnel %ecx, %eax
; CHECK-NEXT: ret
;
; We don't want:
diff --git a/test/CodeGen/X86/twoaddr-lea.ll b/test/CodeGen/X86/twoaddr-lea.ll
index ec16dfe172e34..a1d797feeac4d 100644
--- a/test/CodeGen/X86/twoaddr-lea.ll
+++ b/test/CodeGen/X86/twoaddr-lea.ll
@@ -34,3 +34,14 @@ entry:
%add5 = add i32 %add3, %d
ret i32 %add5
}
+
+; rdar://9002648
+define i64 @test3(i64 %x) nounwind readnone ssp {
+entry:
+; CHECK: test3:
+; CHECK: leaq (%rdi,%rdi), %rax
+; CHECK-NOT: addq
+; CHECK-NEXT: ret
+ %0 = shl i64 %x, 1
+ ret i64 %0
+}
diff --git a/test/CodeGen/X86/umulo-64.ll b/test/CodeGen/X86/umulo-64.ll
deleted file mode 100644
index 280bd9cb066d8..0000000000000
--- a/test/CodeGen/X86/umulo-64.ll
+++ /dev/null
@@ -1,28 +0,0 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin
-
-%0 = type { i64, i1 }
-
-define i32 @f0(i64 %a, i64 %b) nounwind ssp {
- %1 = alloca i64, align 4
- %2 = alloca i64, align 4
- store i64 %a, i64* %1, align 8
- store i64 %b, i64* %2, align 8
- %3 = load i64* %1, align 8
- %4 = load i64* %2, align 8
- %5 = call %0 @llvm.smul.with.overflow.i64(i64 %3, i64 %4)
- %6 = extractvalue %0 %5, 0
- %7 = extractvalue %0 %5, 1
- br i1 %7, label %8, label %9
-
-; <label>:8 ; preds = %0
- call void @llvm.trap()
- unreachable
-
-; <label>:9 ; preds = %0
- %10 = trunc i64 %6 to i32
- ret i32 %10
-}
-
-declare %0 @llvm.smul.with.overflow.i64(i64, i64) nounwind readnone
-
-declare void @llvm.trap() nounwind
diff --git a/test/CodeGen/X86/unaligned-load.ll b/test/CodeGen/X86/unaligned-load.ll
index 6a493c0594de3..9f704898d6888 100644
--- a/test/CodeGen/X86/unaligned-load.ll
+++ b/test/CodeGen/X86/unaligned-load.ll
@@ -29,8 +29,8 @@ return:
declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
; CORE2: .section
-; CORE2: .align 4
+; CORE2: .align 3
; CORE2-NEXT: _.str1:
; CORE2-NEXT: .asciz "DHRYSTONE PROGRAM, SOME STRING"
-; CORE2: .align 4
+; CORE2: .align 3
; CORE2-NEXT: _.str3:
diff --git a/test/CodeGen/X86/unknown-location.ll b/test/CodeGen/X86/unknown-location.ll
index 09431b5564ae6..b89c4738af125 100644
--- a/test/CodeGen/X86/unknown-location.ll
+++ b/test/CodeGen/X86/unknown-location.ll
@@ -4,16 +4,11 @@
; represent this in the debug information. This is done by setting line
; and column to 0
-; CHECK: leal (%rdi,%rsi), %eax
+; CHECK: leal
; CHECK-NEXT: .loc 1 0 0
-; CHECK-NEXT: Ltmp
-; CHECK-NEXT: cltd
-; CHECK-NEXT: idivl %r8d
-; CHECK-NEXT: .loc 1 4 3
-; CHECK-NEXT: Ltmp
-; CHECK-NEXT: addl %ecx, %eax
-; CHECK-NEXT: ret
-; CHECK-NEXT: Ltmp
+; CHECK: cltd
+; CHECK-NEXT: idivl
+; CHECK-NEXT: .loc 2 4 3
define i32 @foo(i32 %w, i32 %x, i32 %y, i32 %z) nounwind {
entry:
diff --git a/test/CodeGen/X86/unreachable-stack-protector.ll b/test/CodeGen/X86/unreachable-stack-protector.ll
new file mode 100644
index 0000000000000..eeebceea71d44
--- /dev/null
+++ b/test/CodeGen/X86/unreachable-stack-protector.ll
@@ -0,0 +1,19 @@
+; RUN: llc < %s | FileCheck %s
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
+target triple = "x86_64-apple-darwin10.0.0"
+
+declare i64 @llvm.objectsize.i64(i8*, i1) nounwind readnone
+
+define void @test5() nounwind optsize noinline ssp {
+entry:
+; CHECK: movq ___stack_chk_guard@GOTPCREL(%rip)
+ %buf = alloca [64 x i8], align 16
+ %0 = call i64 @llvm.objectsize.i64(i8* undef, i1 false)
+ br i1 false, label %if.end, label %if.then
+
+if.then: ; preds = %entry
+ unreachable
+
+if.end: ; preds = %entry
+ ret void
+}
diff --git a/test/CodeGen/X86/v2f32.ll b/test/CodeGen/X86/v2f32.ll
index 76c3fdfc060cf..6d14099b5c0cd 100644
--- a/test/CodeGen/X86/v2f32.ll
+++ b/test/CodeGen/X86/v2f32.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -march=x86-64 -mcpu=penryn -asm-verbose=0 -o - | FileCheck %s -check-prefix=X64
+; RUN: llc < %s -mtriple=x86_64-linux -mcpu=penryn -asm-verbose=0 -o - | FileCheck %s -check-prefix=X64
+; RUN: llc < %s -mtriple=x86_64-win32 -mcpu=penryn -asm-verbose=0 -o - | FileCheck %s -check-prefix=W64
; RUN: llc < %s -mcpu=yonah -march=x86 -asm-verbose=0 -o - | FileCheck %s -check-prefix=X32
; PR7518
@@ -15,6 +16,13 @@ define void @test1(<2 x float> %Q, float *%P2) nounwind {
; X64-NEXT: movss %xmm1, (%rdi)
; X64-NEXT: ret
+; W64: test1:
+; W64-NEXT: movdqa (%rcx), %xmm0
+; W64-NEXT: pshufd $1, %xmm0, %xmm1
+; W64-NEXT: addss %xmm0, %xmm1
+; W64-NEXT: movss %xmm1, (%rdx)
+; W64-NEXT: ret
+
; X32: test1:
; X32-NEXT: pshufd $1, %xmm0, %xmm1
; X32-NEXT: addss %xmm0, %xmm1
@@ -31,6 +39,14 @@ define <2 x float> @test2(<2 x float> %Q, <2 x float> %R, <2 x float> *%P) nounw
; X64: test2:
; X64-NEXT: addps %xmm1, %xmm0
; X64-NEXT: ret
+
+; W64: test2:
+; W64-NEXT: movaps (%rcx), %xmm0
+; W64-NEXT: addps (%rdx), %xmm0
+; W64-NEXT: ret
+
+; X32: test2:
+; X32: addps %xmm1, %xmm0
}
@@ -38,17 +54,35 @@ define <2 x float> @test3(<4 x float> %A) nounwind {
%B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1>
%C = fadd <2 x float> %B, %B
ret <2 x float> %C
-; CHECK: test3:
-; CHECK-NEXT: addps %xmm0, %xmm0
-; CHECK-NEXT: ret
+; X64: test3:
+; X64-NEXT: addps %xmm0, %xmm0
+; X64-NEXT: ret
+
+; W64: test3:
+; W64-NEXT: movaps (%rcx), %xmm0
+; W64-NEXT: addps %xmm0, %xmm0
+; W64-NEXT: ret
+
+; X32: test3:
+; X32-NEXT: addps %xmm0, %xmm0
+; X32-NEXT: ret
}
define <2 x float> @test4(<2 x float> %A) nounwind {
%C = fadd <2 x float> %A, %A
ret <2 x float> %C
-; CHECK: test4:
-; CHECK-NEXT: addps %xmm0, %xmm0
-; CHECK-NEXT: ret
+; X64: test4:
+; X64-NEXT: addps %xmm0, %xmm0
+; X64-NEXT: ret
+
+; W64: test4:
+; W64-NEXT: movaps (%rcx), %xmm0
+; W64-NEXT: addps %xmm0, %xmm0
+; W64-NEXT: ret
+
+; X32: test4:
+; X32-NEXT: addps %xmm0, %xmm0
+; X32-NEXT: ret
}
define <4 x float> @test5(<4 x float> %A) nounwind {
@@ -61,10 +95,21 @@ BB:
%E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
ret <4 x float> %E
-; CHECK: _test5:
-; CHECK-NEXT: addps %xmm0, %xmm0
-; CHECK-NEXT: addps %xmm0, %xmm0
-; CHECK-NEXT: ret
+; X64: test5:
+; X64-NEXT: addps %xmm0, %xmm0
+; X64-NEXT: addps %xmm0, %xmm0
+; X64-NEXT: ret
+
+; W64: test5:
+; W64-NEXT: movaps (%rcx), %xmm0
+; W64-NEXT: addps %xmm0, %xmm0
+; W64-NEXT: addps %xmm0, %xmm0
+; W64-NEXT: ret
+
+; X32: test5:
+; X32-NEXT: addps %xmm0, %xmm0
+; X32-NEXT: addps %xmm0, %xmm0
+; X32-NEXT: ret
}
diff --git a/test/CodeGen/X86/vec_cast.ll b/test/CodeGen/X86/vec_cast.ll
index 95289c9685a16..90d39d0b46ab2 100644
--- a/test/CodeGen/X86/vec_cast.ll
+++ b/test/CodeGen/X86/vec_cast.ll
@@ -1,5 +1,5 @@
-; RUN: llc < %s -march=x86-64 -mcpu=core2
-
+; RUN: llc < %s -mtriple=x86_64-linux -mcpu=core2
+; RUN: llc < %s -mtriple=x86_64-win32 -mcpu=core2
define <8 x i32> @a(<8 x i16> %a) nounwind {
%c = sext <8 x i16> %a to <8 x i32>
diff --git a/test/CodeGen/X86/vec_set-8.ll b/test/CodeGen/X86/vec_set-8.ll
index 9697f1186d451..66056d0add9cc 100644
--- a/test/CodeGen/X86/vec_set-8.ll
+++ b/test/CodeGen/X86/vec_set-8.ll
@@ -1,5 +1,8 @@
-; RUN: llc < %s -march=x86-64 | not grep movsd
-; RUN: llc < %s -march=x86-64 | grep {movd.*%rdi,.*%xmm0}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK-NOT: movsd
+; CHECK: movd {{%rdi|%rcx}}, %xmm0
+; CHECK-NOT: movsd
define <2 x i64> @test(i64 %i) nounwind {
entry:
diff --git a/test/CodeGen/X86/vec_shuffle-16.ll b/test/CodeGen/X86/vec_shuffle-16.ll
index 470f676d4627e..2ee87fe4ff860 100644
--- a/test/CodeGen/X86/vec_shuffle-16.ll
+++ b/test/CodeGen/X86/vec_shuffle-16.ll
@@ -1,27 +1,36 @@
-; RUN: llc < %s -march=x86 -mattr=+sse,-sse2 -mtriple=i386-apple-darwin -o %t
-; RUN: grep shufps %t | count 4
-; RUN: grep movaps %t | count 2
-; RUN: llc < %s -march=x86 -mattr=+sse2 -mtriple=i386-apple-darwin -o %t
-; RUN: grep pshufd %t | count 4
-; RUN: not grep shufps %t
-; RUN: not grep mov %t
+; RUN: llc < %s -march=x86 -mattr=+sse,-sse2 -mtriple=i386-apple-darwin | FileCheck %s -check-prefix=sse
+; RUN: llc < %s -march=x86 -mattr=+sse2 -mtriple=i386-apple-darwin | FileCheck %s -check-prefix=sse2
define <4 x float> @t1(<4 x float> %a, <4 x float> %b) nounwind {
+; sse: movaps
+; sse: shufps
+; sse2: pshufd
+; sse2-NEXT: ret
%tmp1 = shufflevector <4 x float> %b, <4 x float> undef, <4 x i32> zeroinitializer
ret <4 x float> %tmp1
}
define <4 x float> @t2(<4 x float> %A, <4 x float> %B) nounwind {
+; sse: shufps
+; sse2: pshufd
+; sse2-NEXT: ret
%tmp = shufflevector <4 x float> %A, <4 x float> %B, <4 x i32> < i32 3, i32 3, i32 3, i32 3 >
ret <4 x float> %tmp
}
define <4 x float> @t3(<4 x float> %A, <4 x float> %B) nounwind {
+; sse: movaps
+; sse: shufps
+; sse2: pshufd
+; sse2-NEXT: ret
%tmp = shufflevector <4 x float> %A, <4 x float> %B, <4 x i32> < i32 4, i32 4, i32 4, i32 4 >
ret <4 x float> %tmp
}
define <4 x float> @t4(<4 x float> %A, <4 x float> %B) nounwind {
+; sse: shufps
+; sse2: pshufd
+; sse2-NEXT: ret
%tmp = shufflevector <4 x float> %A, <4 x float> %B, <4 x i32> < i32 1, i32 3, i32 2, i32 0 >
ret <4 x float> %tmp
}
diff --git a/test/CodeGen/X86/vec_shuffle-17.ll b/test/CodeGen/X86/vec_shuffle-17.ll
index 9c33abb4421a4..ebc8c5b34a90a 100644
--- a/test/CodeGen/X86/vec_shuffle-17.ll
+++ b/test/CodeGen/X86/vec_shuffle-17.ll
@@ -1,5 +1,8 @@
-; RUN: llc < %s -march=x86-64 | grep {movd.*%rdi, %xmm0}
-; RUN: llc < %s -march=x86-64 | not grep xor
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK-NOT: xor
+; CHECK: movd {{%rdi|%rcx}}, %xmm0
+; CHECK-NOT: xor
; PR2108
define <2 x i64> @doload64(i64 %x) nounwind {
diff --git a/test/CodeGen/X86/vec_uint_to_fp.ll b/test/CodeGen/X86/vec_uint_to_fp.ll
new file mode 100644
index 0000000000000..39e7d715c5bb7
--- /dev/null
+++ b/test/CodeGen/X86/vec_uint_to_fp.ll
@@ -0,0 +1,11 @@
+; RUN: llc < %s -march=x86 -mcpu=sandybridge | FileCheck %s
+
+; Test that we are not lowering uinttofp to scalars
+define <4 x float> @test1(<4 x i32> %A) nounwind {
+; CHECK: test1:
+; CHECK-NOT: cvtsd2ss
+; CHECK: ret
+ %C = uitofp <4 x i32> %A to <4 x float>
+ ret <4 x float> %C
+}
+
diff --git a/test/CodeGen/X86/visibility.ll b/test/CodeGen/X86/visibility.ll
index a8d287083a80f..580c3dc9266d6 100644
--- a/test/CodeGen/X86/visibility.ll
+++ b/test/CodeGen/X86/visibility.ll
@@ -1,11 +1,14 @@
; RUN: llc -mtriple=x86_64-unknown-linux-gnu %s -o - | FileCheck %s
+@zed = external hidden constant i32
+
define hidden void @foo() nounwind {
entry:
- call void @bar()
+ call void @bar(i32* @zed)
ret void
}
-declare hidden void @bar()
+declare hidden void @bar(i32*)
+;CHECK: .hidden zed
;CHECK: .hidden bar
diff --git a/test/CodeGen/X86/widen_load-0.ll b/test/CodeGen/X86/widen_load-0.ll
index f6c4af03209be..82c8252e7bbc8 100644
--- a/test/CodeGen/X86/widen_load-0.ll
+++ b/test/CodeGen/X86/widen_load-0.ll
@@ -1,4 +1,5 @@
-; RUN: llc < %s -o - -march=x86-64 | FileCheck %s
+; RUN: llc < %s -o - -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -o - -mtriple=x86_64-win32 | FileCheck %s -check-prefix=WIN64
; PR4891
; Both loads should happen before either store.
@@ -8,6 +9,11 @@
; CHECK: movl %ecx, (%rdi)
; CHECK: movl %eax, (%rsi)
+; WIN64: movl (%rcx), %eax
+; WIN64: movl (%rdx), %esi
+; WIN64: movl %esi, (%rcx)
+; WIN64: movl %eax, (%rdx)
+
define void @short2_int_swap(<2 x i16>* nocapture %b, i32* nocapture %c) nounwind {
entry:
%0 = load <2 x i16>* %b, align 2 ; <<2 x i16>> [#uses=1]
diff --git a/test/CodeGen/X86/win64_alloca_dynalloca.ll b/test/CodeGen/X86/win64_alloca_dynalloca.ll
new file mode 100644
index 0000000000000..cbd38da60e960
--- /dev/null
+++ b/test/CodeGen/X86/win64_alloca_dynalloca.ll
@@ -0,0 +1,74 @@
+; RUN: llc < %s -mtriple=x86_64-mingw32 | FileCheck %s -check-prefix=M64
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -check-prefix=W64
+; RUN: llc < %s -mtriple=x86_64-win32-macho | FileCheck %s -check-prefix=EFI
+; PR8777
+; PR8778
+
+define i64 @foo(i64 %n, i64 %x) nounwind {
+entry:
+
+ %buf0 = alloca i8, i64 4096, align 1
+
+; ___chkstk must adjust %rsp.
+; M64: movq %rsp, %rbp
+; M64: $4096, %rax
+; M64: callq ___chkstk
+; M64-NOT: %rsp
+
+; __chkstk does not adjust %rsp.
+; W64: movq %rsp, %rbp
+; W64: $4096, %rax
+; W64: callq __chkstk
+; W64: subq $4096, %rsp
+
+; Freestanding
+; EFI: movq %rsp, %rbp
+; EFI: $[[B0OFS:4096|4104]], %rsp
+; EFI-NOT: call
+
+ %buf1 = alloca i8, i64 %n, align 1
+
+; M64: leaq 15(%rcx), %rax
+; M64: andq $-16, %rax
+; M64: callq ___chkstk
+; M64-NOT: %rsp
+; M64: movq %rsp, %rax
+
+; W64: leaq 15(%rcx), %rax
+; W64: andq $-16, %rax
+; W64: callq __chkstk
+; W64: subq %rax, %rsp
+; W64: movq %rsp, %rax
+
+; EFI: leaq 15(%rcx), [[R1:%r..]]
+; EFI: andq $-16, [[R1]]
+; EFI: movq %rsp, [[R64:%r..]]
+; EFI: subq [[R1]], [[R64]]
+; EFI: movq [[R64]], %rsp
+
+ %r = call i64 @bar(i64 %n, i64 %x, i64 %n, i8* %buf0, i8* %buf1) nounwind
+
+; M64: subq $48, %rsp
+; M64: leaq -4096(%rbp), %r9
+; M64: movq %rax, 32(%rsp)
+; M64: callq bar
+
+; W64: subq $48, %rsp
+; W64: leaq -4096(%rbp), %r9
+; W64: movq %rax, 32(%rsp)
+; W64: callq bar
+
+; EFI: subq $48, %rsp
+; EFI: leaq -[[B0OFS]](%rbp), %r9
+; EFI: movq [[R64]], 32(%rsp)
+; EFI: callq _bar
+
+ ret i64 %r
+
+; M64: movq %rbp, %rsp
+
+; W64: movq %rbp, %rsp
+
+}
+
+declare i64 @bar(i64, i64, i64, i8* nocapture, i8* nocapture) nounwind
diff --git a/test/CodeGen/X86/win64_vararg.ll b/test/CodeGen/X86/win64_vararg.ll
index a451318f6e8c3..efe8bcacbeae2 100644
--- a/test/CodeGen/X86/win64_vararg.ll
+++ b/test/CodeGen/X86/win64_vararg.ll
@@ -18,3 +18,36 @@ entry:
}
declare void @llvm.va_start(i8*) nounwind
+
+; CHECK: f5:
+; CHECK: pushq
+; CHECK: leaq 56(%rsp),
+define i8* @f5(i64 %a0, i64 %a1, i64 %a2, i64 %a3, i64 %a4, ...) nounwind {
+entry:
+ %ap = alloca i8*, align 8
+ %ap1 = bitcast i8** %ap to i8*
+ call void @llvm.va_start(i8* %ap1)
+ ret i8* %ap1
+}
+
+; CHECK: f4:
+; CHECK: pushq
+; CHECK: leaq 48(%rsp),
+define i8* @f4(i64 %a0, i64 %a1, i64 %a2, i64 %a3, ...) nounwind {
+entry:
+ %ap = alloca i8*, align 8
+ %ap1 = bitcast i8** %ap to i8*
+ call void @llvm.va_start(i8* %ap1)
+ ret i8* %ap1
+}
+
+; CHECK: f3:
+; CHECK: pushq
+; CHECK: leaq 40(%rsp),
+define i8* @f3(i64 %a0, i64 %a1, i64 %a2, ...) nounwind {
+entry:
+ %ap = alloca i8*, align 8
+ %ap1 = bitcast i8** %ap to i8*
+ call void @llvm.va_start(i8* %ap1)
+ ret i8* %ap1
+}
diff --git a/test/CodeGen/X86/win_chkstk.ll b/test/CodeGen/X86/win_chkstk.ll
index 82ce81d4ae70f..e4e4483ff9491 100644
--- a/test/CodeGen/X86/win_chkstk.ll
+++ b/test/CodeGen/X86/win_chkstk.ll
@@ -3,6 +3,7 @@
; RUN: llc < %s -mtriple=i686-pc-mingw32 | FileCheck %s -check-prefix=MINGW_X32
; RUN: llc < %s -mtriple=x86_64-pc-mingw32 | FileCheck %s -check-prefix=MINGW_X64
; RUN: llc < %s -mtriple=i386-pc-linux | FileCheck %s -check-prefix=LINUX
+; RUN: llc < %s -mtriple=x86_64-pc-win32-macho | FileCheck %s -check-prefix=LINUX
; Windows and mingw require a prologue helper routine if more than 4096 bytes area
; allocated on the stack. Windows uses __chkstk and mingw uses __alloca. __alloca
@@ -16,7 +17,7 @@ entry:
; WIN_X32: calll __chkstk
; WIN_X64: callq __chkstk
; MINGW_X32: calll __alloca
-; MINGW_X64: callq __chkstk
+; MINGW_X64: callq ___chkstk
; LINUX-NOT: call __chkstk
%array4096 = alloca [4096 x i8], align 16 ; <[4096 x i8]*> [#uses=0]
ret i32 0
diff --git a/test/CodeGen/X86/x86-64-malloc.ll b/test/CodeGen/X86/x86-64-malloc.ll
index b4f1fa6667205..4aa0ec3dc9f7b 100644
--- a/test/CodeGen/X86/x86-64-malloc.ll
+++ b/test/CodeGen/X86/x86-64-malloc.ll
@@ -1,4 +1,6 @@
-; RUN: llc < %s -march=x86-64 | grep {shll.*3, %edi}
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
+; CHECK: shll $3, {{%edi|%ecx}}
; PR3829
; The generated code should multiply by 3 (sizeof i8*) as an i32,
; not as an i64!
diff --git a/test/CodeGen/X86/zext-extract_subreg.ll b/test/CodeGen/X86/zext-extract_subreg.ll
index e61e8805a2fde..4f1dde3c4f0e3 100644
--- a/test/CodeGen/X86/zext-extract_subreg.ll
+++ b/test/CodeGen/X86/zext-extract_subreg.ll
@@ -13,6 +13,7 @@ if.end: ; preds = %if.end.i
; CHECK: %if.end
; CHECK: movl (%{{.*}}), [[REG:%[a-z]+]]
; CHECK-NOT: movl [[REG]], [[REG]]
+; CHECK-NEXT: testl [[REG]], [[REG]]
; CHECK-NEXT: xorb
%tmp138 = select i1 undef, i32 0, i32 %tmp7.i
%tmp867 = zext i32 %tmp138 to i64
diff --git a/test/CodeGen/X86/zext-sext.ll b/test/CodeGen/X86/zext-sext.ll
index bd109b92d9f75..cea9e9c854db7 100644
--- a/test/CodeGen/X86/zext-sext.ll
+++ b/test/CodeGen/X86/zext-sext.ll
@@ -1,3 +1,4 @@
+; XFAIL: *
; RUN: llc < %s -march=x86-64 | FileCheck %s
; <rdar://problem/8006248>