llvm.org GIT mirror llvm / 57b0fb7
Fix one more batch of X86 tests to be register allocation dependent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128919 91177308-0d34-0410-b5e6-96231b3b80d8 Jakob Stoklund Olesen 8 years ago
9 changed file(s) with 2811 addition(s) and 2797 deletion(s). Raw diff Collapse all Expand all
None ; RUN: llc < %s -march=x86 -stats |& grep {Number of re-materialization} | grep 2
0 ; RUN: llc < %s -march=x86 -stats -regalloc=linearscan |& grep {Number of re-materialization} | grep 2
11 ; rdar://5761454
22
33 %struct.quad_struct = type { i32, i32, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct* }
None ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim | grep movss | count 1
1 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -stats |& grep {Number of re-materialization} | grep 1
0 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -regalloc=linearscan | grep movss | count 1
1 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -disable-fp-elim -regalloc=linearscan -stats |& grep {Number of re-materialization} | grep 1
22
33 %struct..0objc_object = type opaque
44 %struct.OhBoy = type { }
None ; RUN: llc < %s -march=x86 | grep "#%ebp %edi %ebx 8(%esi) %eax %dl"
1 ; RUN: llc < %s -march=x86 -regalloc=fast | grep "#%ebx %esi %edi 8(%ebp) %eax %dl"
0 ; RUN: llc < %s -march=x86 -regalloc=linearscan | grep "#%ebp %edi %ebx 8(%esi) %eax %dl"
1 ; RUN: llc < %s -march=x86 -regalloc=fast | grep "#%ebx %esi %edi 8(%ebp) %eax %dl"
2 ; RUN: llc < %s -march=x86 -regalloc=basic | grep "#%ebp %esi %edx 8(%edi) %eax %bl"
3 ; RUN: llc < %s -march=x86 -regalloc=greedy | grep "#%edx %edi %ebp 8(%esi) %eax %bl"
24
35 ; The 1st, 2nd, 3rd and 5th registers above must all be different. The registers
46 ; referenced in the 4th and 6th operands must not be the same as the 1st or 5th
None ; RUN: llc < %s -mtriple=i386-apple-darwin -stats |& grep virtregrewriter | not grep {stores unfolded}
0 ; RUN: llc < %s -mtriple=i386-apple-darwin -regalloc=linearscan -stats |& grep virtregrewriter | not grep {stores unfolded}
11 ; rdar://6682365
22
33 ; Do not clobber a register if another spill slot is available in it and it's marked "do not clobber".
1010 ; Move return address (76(%esp)) to a temporary register (%ebp)
1111 ; CHECK: movl 76(%esp), [[REGISTER:%[a-z]+]]
1212 ; Overwrite return addresss
13 ; CHECK: movl %ebx, 76(%esp)
13 ; CHECK: movl [[EBX:%[a-z]+]], 76(%esp)
1414 ; Move return address from temporary register (%ebp) to new stack location (60(%esp))
1515 ; CHECK: movl [[REGISTER]], 60(%esp)
1616
3030 ret void
3131 }
3232
33 ; CHECK: ti64
3334 define void @ti64(double %a, double %b) nounwind {
3435 entry:
3536 %tmp1 = bitcast double %a to <1 x i64>
3637 %tmp2 = bitcast double %b to <1 x i64>
3738 %tmp3 = add <1 x i64> %tmp1, %tmp2
38 ; CHECK: addq %rax, %rcx
39 ; CHECK: addq
3940 store <1 x i64> %tmp3, <1 x i64>* null
4041 ret void
4142 }
4243
4344 ; MMX intrinsics calls get us MMX instructions.
44
45 ; CHECK: ti8a
4546 define void @ti8a(double %a, double %b) nounwind {
4647 entry:
4748 %tmp1 = bitcast double %a to x86_mmx
2121 %conv = zext i32 %v to i64 ; [#uses=1]
2222 %conv14 = zext i32 %div11 to i64 ; [#uses=1]
2323 ; Verify that we don't clobber %eax after putting the imulq result in %rax
24 ; CHECK: imulq %r{{.}}x, %r[[RES:.]]x
25 ; CHECK-NOT: movl {{.*}}, %e[[RES]]x
24 ; CHECK: imulq %r{{.}}x, %r[[RES:..]]
25 ; CHECK-NOT: movl {{.*}}, %e[[RES]]
2626 ; CHECK: div
2727 %mul = mul i64 %conv14, %conv ; [#uses=1]
2828 %conv16 = zext i32 %div to i64 ; [#uses=1]
1818 }
1919
2020 ; CHECK: movq ___stack_chk_guard@GOTPCREL(%rip), %rax
21 ; CHECK: movb 38(%rsp), %bl
22 ; CHECK: movb 8(%rsp), %dl
23 ; CHECK: movb %dl, 8(%rsp)
24 ; CHECK: movb %bl, 38(%rsp)
21 ; CHECK: movb 38(%rsp), [[R0:%.+]]
22 ; CHECK: movb 8(%rsp), [[R1:%.+]]
23 ; CHECK: movb [[R1]], 8(%rsp)
24 ; CHECK: movb [[R0]], 38(%rsp)
2525 ; CHECK: callq ___stack_chk_fail
1010 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
1111 ; 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
1212 ; 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
13
14 ; 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
15 ; 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
16 ; 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
17 ; 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
18 ; 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
19 ; 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
20 ; 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
21 ; 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
22 ; 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
23 ; 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
1324
1425 @src = external global [131072 x i32]
1526 @dst = external global [131072 x i32]
3748 ret void
3849
3950 ; LINUX-64-STATIC: foo00:
40 ; LINUX-64-STATIC: movl src(%rip), %eax
41 ; LINUX-64-STATIC: movl %eax, dst
51 ; LINUX-64-STATIC: movl src(%rip), [[EAX:%e.x]]
52 ; LINUX-64-STATIC: movl [[EAX]], dst
4253 ; LINUX-64-STATIC: ret
4354
4455 ; LINUX-32-STATIC: foo00:
45 ; LINUX-32-STATIC: movl src, %eax
46 ; LINUX-32-STATIC-NEXT: movl %eax, dst
56 ; LINUX-32-STATIC: movl src, [[EAX:%e.x]]
57 ; LINUX-32-STATIC-NEXT: movl [[EAX]], dst
4758 ; LINUX-32-STATIC-NEXT: ret
4859
4960 ; LINUX-32-PIC: foo00:
50 ; LINUX-32-PIC: movl src, %eax
51 ; LINUX-32-PIC-NEXT: movl %eax, dst
61 ; LINUX-32-PIC: movl src, [[EAX:%e.x]]
62 ; LINUX-32-PIC-NEXT: movl [[EAX]], dst
5263 ; LINUX-32-PIC-NEXT: ret
5364
5465 ; LINUX-64-PIC: foo00:
55 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
56 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
57 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
58 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
66 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r..]]
67 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e..]]
68 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r..]]
69 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
5970 ; LINUX-64-PIC-NEXT: ret
6071
6172 ; DARWIN-32-STATIC: _foo00:
62 ; DARWIN-32-STATIC: movl _src, %eax
63 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst
73 ; DARWIN-32-STATIC: movl _src, [[EAX:%e.x]]
74 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dst
6475 ; DARWIN-32-STATIC-NEXT: ret
6576
6677 ; DARWIN-32-DYNAMIC: _foo00:
67 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
68 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
69 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
70 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
78 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e..]]
79 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e..]]
80 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e..]]
81 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
7182 ; DARWIN-32-DYNAMIC-NEXT: ret
7283
7384 ; DARWIN-32-PIC: _foo00:
7485 ; DARWIN-32-PIC: calll L0$pb
7586 ; DARWIN-32-PIC-NEXT: L0$pb:
76 ; DARWIN-32-PIC-NEXT: popl %eax
77 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx
78 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
79 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax
80 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
87 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e..]]
88 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb([[EAX]]), [[ECX:%e..]]
89 ; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e..]]
90 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb([[EAX]]), [[EAX:%e..]]
91 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
8192 ; DARWIN-32-PIC-NEXT: ret
8293
8394 ; DARWIN-64-STATIC: _foo00:
84 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
85 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
86 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
87 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
95 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]]
96 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e..]]
97 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]]
98 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
8899 ; DARWIN-64-STATIC-NEXT: ret
89100
90101 ; DARWIN-64-DYNAMIC: _foo00:
91 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
92 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
93 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
94 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
102 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]]
103 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e..]]
104 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]]
105 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
95106 ; DARWIN-64-DYNAMIC-NEXT: ret
96107
97108 ; DARWIN-64-PIC: _foo00:
98 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
99 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
100 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
101 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
109 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r..]]
110 ; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e..]]
111 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r..]]
112 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
102113 ; DARWIN-64-PIC-NEXT: ret
103114 }
104115
109120 ret void
110121
111122 ; LINUX-64-STATIC: fxo00:
112 ; LINUX-64-STATIC: movl xsrc(%rip), %eax
113 ; LINUX-64-STATIC: movl %eax, xdst
123 ; LINUX-64-STATIC: movl xsrc(%rip), [[EAX:%e.x]]
124 ; LINUX-64-STATIC: movl [[EAX]], xdst
114125 ; LINUX-64-STATIC: ret
115126
116127 ; LINUX-32-STATIC: fxo00:
117 ; LINUX-32-STATIC: movl xsrc, %eax
118 ; LINUX-32-STATIC-NEXT: movl %eax, xdst
128 ; LINUX-32-STATIC: movl xsrc, [[EAX:%e.x]]
129 ; LINUX-32-STATIC-NEXT: movl [[EAX]], xdst
119130 ; LINUX-32-STATIC-NEXT: ret
120131
121132 ; LINUX-32-PIC: fxo00:
122 ; LINUX-32-PIC: movl xsrc, %eax
123 ; LINUX-32-PIC-NEXT: movl %eax, xdst
133 ; LINUX-32-PIC: movl xsrc, [[EAX:%e.x]]
134 ; LINUX-32-PIC-NEXT: movl [[EAX]], xdst
124135 ; LINUX-32-PIC-NEXT: ret
125136
126137 ; LINUX-64-PIC: fxo00:
127 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
128 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
129 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
130 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
138 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
139 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
140 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
141 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
131142 ; LINUX-64-PIC-NEXT: ret
132143
133144 ; DARWIN-32-STATIC: _fxo00:
134 ; DARWIN-32-STATIC: movl _xsrc, %eax
135 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst
145 ; DARWIN-32-STATIC: movl _xsrc, [[EAX:%e.x]]
146 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _xdst
136147 ; DARWIN-32-STATIC-NEXT: ret
137148
138149 ; DARWIN-32-DYNAMIC: _fxo00:
139 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
140 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
141 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
142 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
150 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
151 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
152 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
153 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
143154 ; DARWIN-32-DYNAMIC-NEXT: ret
144155
145156 ; DARWIN-32-PIC: _fxo00:
146157 ; DARWIN-32-PIC: calll L1$pb
147158 ; DARWIN-32-PIC-NEXT: L1$pb:
148 ; DARWIN-32-PIC-NEXT: popl %eax
149 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx
150 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
151 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax
152 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
159 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
160 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb([[EAX]]), [[ECX:%e.x]]
161 ; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
162 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb([[EAX]]), [[EAX:%e.x]]
163 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
153164 ; DARWIN-32-PIC-NEXT: ret
154165
155166 ; DARWIN-64-STATIC: _fxo00:
156 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
157 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
158 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
159 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
167 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
168 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
169 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
170 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
160171 ; DARWIN-64-STATIC-NEXT: ret
161172
162173 ; DARWIN-64-DYNAMIC: _fxo00:
163 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
164 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
165 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
166 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
174 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
175 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
176 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
177 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
167178 ; DARWIN-64-DYNAMIC-NEXT: ret
168179
169180 ; DARWIN-64-PIC: _fxo00:
170 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
171 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
172 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
173 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
181 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
182 ; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
183 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
184 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
174185 ; DARWIN-64-PIC-NEXT: ret
175186 }
176187
191202 ; LINUX-32-PIC-NEXT: ret
192203
193204 ; LINUX-64-PIC: foo01:
194 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
195 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
196 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
205 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), [[RAX:%r.x]]
206 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
207 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
197208 ; LINUX-64-PIC-NEXT: ret
198209
199210 ; DARWIN-32-STATIC: _foo01:
201212 ; DARWIN-32-STATIC-NEXT: ret
202213
203214 ; DARWIN-32-DYNAMIC: _foo01:
204 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
205 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
206 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
215 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, [[EAX:%e.x]]
216 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
217 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
207218 ; DARWIN-32-DYNAMIC-NEXT: ret
208219
209220 ; DARWIN-32-PIC: _foo01:
210221 ; DARWIN-32-PIC: calll L2$pb
211222 ; DARWIN-32-PIC-NEXT: L2$pb:
212 ; DARWIN-32-PIC-NEXT: popl %eax
213 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx
214 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax
215 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
223 ; DARWIN-32-PIC-NEXT: popl
224 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(
225 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(
226 ; DARWIN-32-PIC-NEXT: movl
216227 ; DARWIN-32-PIC-NEXT: ret
217228
218229 ; DARWIN-64-STATIC: _foo01:
219 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
220 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
221 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
230 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
231 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
232 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]])
222233 ; DARWIN-64-STATIC-NEXT: ret
223234
224235 ; DARWIN-64-DYNAMIC: _foo01:
225 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
226 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
227 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
236 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
237 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
238 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]])
228239 ; DARWIN-64-DYNAMIC-NEXT: ret
229240
230241 ; DARWIN-64-PIC: _foo01:
231 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
232 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
233 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
242 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
243 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
244 ; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
234245 ; DARWIN-64-PIC-NEXT: ret
235246 }
236247
251262 ; LINUX-32-PIC-NEXT: ret
252263
253264 ; LINUX-64-PIC: fxo01:
254 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
255 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
256 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
265 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), [[RAX:%r.x]]
266 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
267 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
257268 ; LINUX-64-PIC-NEXT: ret
258269
259270 ; DARWIN-32-STATIC: _fxo01:
261272 ; DARWIN-32-STATIC-NEXT: ret
262273
263274 ; DARWIN-32-DYNAMIC: _fxo01:
264 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
265 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
266 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
275 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, [[EAX:%e.x]]
276 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
277 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
267278 ; DARWIN-32-DYNAMIC-NEXT: ret
268279
269280 ; DARWIN-32-PIC: _fxo01:
270281 ; DARWIN-32-PIC: calll L3$pb
271282 ; DARWIN-32-PIC-NEXT: L3$pb:
272 ; DARWIN-32-PIC-NEXT: popl %eax
273 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx
274 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax
275 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
283 ; DARWIN-32-PIC-NEXT: popl [[R0:%e..]]
284 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb([[R0]]), [[R1:%e..]]
285 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb([[R0]]), [[R2:%e..]]
286 ; DARWIN-32-PIC-NEXT: movl [[R1:%e..]], ([[R2]])
276287 ; DARWIN-32-PIC-NEXT: ret
277288
278289 ; DARWIN-64-STATIC: _fxo01:
279 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
280 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
281 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
290 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
291 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
292 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]])
282293 ; DARWIN-64-STATIC-NEXT: ret
283294
284295 ; DARWIN-64-DYNAMIC: _fxo01:
285 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
286 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
287 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
296 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
297 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
298 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]])
288299 ; DARWIN-64-DYNAMIC-NEXT: ret
289300
290301 ; DARWIN-64-PIC: _fxo01:
291 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
292 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
293 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
302 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
303 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
304 ; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
294305 ; DARWIN-64-PIC-NEXT: ret
295306 }
296307
307318 ; LINUX-64-STATIC: ret
308319
309320 ; LINUX-32-STATIC: foo02:
310 ; LINUX-32-STATIC: movl src, %eax
311 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
312 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
321 ; LINUX-32-STATIC: movl src, [[EAX:%e.x]]
322 ; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
323 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
313324 ; LINUX-32-STATIC-NEXT: ret
314325
315326 ; LINUX-32-PIC: foo02:
316 ; LINUX-32-PIC: movl src, %eax
317 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
318 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
327 ; LINUX-32-PIC: movl src, [[EAX:%e.x]]
328 ; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
329 ; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
319330 ; LINUX-32-PIC-NEXT: ret
320331
321332 ; LINUX-64-PIC: foo02:
322 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
323 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
324 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
325 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
326 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
333 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
334 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
335 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
336 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
337 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
327338 ; LINUX-64-PIC-NEXT: ret
328339
329340 ; DARWIN-32-STATIC: _foo02:
330 ; DARWIN-32-STATIC: movl _src, %eax
331 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
332 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
341 ; DARWIN-32-STATIC: movl _src, [[EAX:%e.x]]
342 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
343 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
333344 ; DARWIN-32-STATIC-NEXT: ret
334345
335346 ; DARWIN-32-DYNAMIC: _foo02:
336 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
337 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
338 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
339 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
340 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
347 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
348 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
349 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
350 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
351 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
341352 ; DARWIN-32-DYNAMIC-NEXT: ret
342353
343354 ; DARWIN-32-PIC: _foo02:
344355 ; DARWIN-32-PIC: calll L4$pb
345356 ; DARWIN-32-PIC-NEXT: L4$pb:
346 ; DARWIN-32-PIC-NEXT: popl %eax
347 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx
348 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
349 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax
350 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
351 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
357 ; DARWIN-32-PIC-NEXT: popl [[R0:%e..]]
358 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb([[R0]]), [[R1:%e..]]
359 ; DARWIN-32-PIC-NEXT: movl ([[R1]]), [[R2:%e..]]
360 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb([[R0]]), [[R3:%e..]]
361 ; DARWIN-32-PIC-NEXT: movl ([[R3]]), [[R4:%e..]]
362 ; DARWIN-32-PIC-NEXT: movl [[R2]], ([[R4]])
352363 ; DARWIN-32-PIC-NEXT: ret
353364
354365 ; DARWIN-64-STATIC: _foo02:
355 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
356 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
357 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
358 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
359 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
366 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
367 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
368 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
369 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
370 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
360371 ; DARWIN-64-STATIC-NEXT: ret
361372
362373 ; DARWIN-64-DYNAMIC: _foo02:
363 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
364 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
365 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
366 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
367 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
374 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
375 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
376 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
377 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
378 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
368379 ; DARWIN-64-DYNAMIC-NEXT: ret
369380
370381 ; DARWIN-64-PIC: _foo02:
371 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
372 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
373 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
374 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
375 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
382 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
383 ; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
384 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
385 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
386 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
376387 ; DARWIN-64-PIC-NEXT: ret
377388 }
378389
388399 ; LINUX-64-STATIC: ret
389400
390401 ; LINUX-32-STATIC: fxo02:
391 ; LINUX-32-STATIC: movl xsrc, %eax
392 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
393 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
402 ; LINUX-32-STATIC: movl xsrc, [[EAX:%e.x]]
403 ; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
404 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
394405 ; LINUX-32-STATIC-NEXT: ret
395406 ret void
396407
397408 ; LINUX-32-PIC: fxo02:
398 ; LINUX-32-PIC: movl xsrc, %eax
399 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
400 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
409 ; LINUX-32-PIC: movl xsrc, [[EAX:%e.x]]
410 ; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
411 ; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
401412 ; LINUX-32-PIC-NEXT: ret
402413
403414 ; LINUX-64-PIC: fxo02:
404 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
405 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
406 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
407 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
408 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
415 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
416 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
417 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
418 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
419 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
409420 ; LINUX-64-PIC-NEXT: ret
410421
411422 ; DARWIN-32-STATIC: _fxo02:
412 ; DARWIN-32-STATIC: movl _xsrc, %eax
413 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
414 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
423 ; DARWIN-32-STATIC: movl _xsrc, [[EAX:%e.x]]
424 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
425 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
415426 ; DARWIN-32-STATIC-NEXT: ret
416427
417428 ; DARWIN-32-DYNAMIC: _fxo02:
418 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
419 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
420 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
421 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
422 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
429 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
430 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
431 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
432 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
433 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
423434 ; DARWIN-32-DYNAMIC-NEXT: ret
424435
425436 ; DARWIN-32-PIC: _fxo02:
426437 ; DARWIN-32-PIC: calll L5$pb
427438 ; DARWIN-32-PIC-NEXT: L5$pb:
428 ; DARWIN-32-PIC-NEXT: popl %eax
429 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx
430 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
431 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax
432 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
433 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
439 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
440 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb([[EAX]]), [[ECX:%e.x]]
441 ; DARWIN-32-PIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
442 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb([[EAX]]), [[EAX:%e.x]]
443 ; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
444 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
434445 ; DARWIN-32-PIC-NEXT: ret
435446
436447 ; DARWIN-64-STATIC: _fxo02:
437 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
438 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
439 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
440 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
441 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
448 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
449 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
450 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
451 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
452 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
442453 ; DARWIN-64-STATIC-NEXT: ret
443454
444455 ; DARWIN-64-DYNAMIC: _fxo02:
445 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
446 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
447 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
448 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
449 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
456 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
457 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
458 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
459 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
460 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
450461 ; DARWIN-64-DYNAMIC-NEXT: ret
451462
452463 ; DARWIN-64-PIC: _fxo02:
453 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
454 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
455 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
456 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
457 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
464 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
465 ; DARWIN-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
466 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
467 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
468 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
458469 ; DARWIN-64-PIC-NEXT: ret
459470 }
460471
464475 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
465476 ret void
466477 ; LINUX-64-STATIC: foo03:
467 ; LINUX-64-STATIC: movl dsrc(%rip), %eax
468 ; LINUX-64-STATIC: movl %eax, ddst
478 ; LINUX-64-STATIC: movl dsrc(%rip), [[EAX:%e.x]]
479 ; LINUX-64-STATIC: movl [[EAX]], ddst
469480 ; LINUX-64-STATIC: ret
470481
471482 ; LINUX-32-STATIC: foo03:
472 ; LINUX-32-STATIC: movl dsrc, %eax
473 ; LINUX-32-STATIC-NEXT: movl %eax, ddst
483 ; LINUX-32-STATIC: movl dsrc, [[EAX:%e.x]]
484 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ddst
474485 ; LINUX-32-STATIC-NEXT: ret
475486
476487 ; LINUX-32-PIC: foo03:
477 ; LINUX-32-PIC: movl dsrc, %eax
478 ; LINUX-32-PIC-NEXT: movl %eax, ddst
488 ; LINUX-32-PIC: movl dsrc, [[EAX:%e.x]]
489 ; LINUX-32-PIC-NEXT: movl [[EAX]], ddst
479490 ; LINUX-32-PIC-NEXT: ret
480491
481492 ; LINUX-64-PIC: foo03:
482 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
483 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
484 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
485 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
493 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
494 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
495 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
496 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
486497 ; LINUX-64-PIC-NEXT: ret
487498
488499 ; DARWIN-32-STATIC: _foo03:
489 ; DARWIN-32-STATIC: movl _dsrc, %eax
490 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst
500 ; DARWIN-32-STATIC: movl _dsrc, [[EAX:%e.x]]
501 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ddst
491502 ; DARWIN-32-STATIC-NEXT: ret
492503
493504 ; DARWIN-32-DYNAMIC: _foo03:
494 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
495 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst
505 ; DARWIN-32-DYNAMIC: movl _dsrc, [[EAX:%e.x]]
506 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ddst
496507 ; DARWIN-32-DYNAMIC-NEXT: ret
497508
498509 ; DARWIN-32-PIC: _foo03:
499510 ; DARWIN-32-PIC: calll L6$pb
500511 ; DARWIN-32-PIC-NEXT: L6$pb:
501 ; DARWIN-32-PIC-NEXT: popl %eax
502 ; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx
503 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax)
512 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
513 ; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb([[EAX]]), [[ECX:%e.x]]
514 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _ddst-L6$pb([[EAX]])
504515 ; DARWIN-32-PIC-NEXT: ret
505516
506517 ; DARWIN-64-STATIC: _foo03:
507 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
508 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip)
518 ; DARWIN-64-STATIC: movl _dsrc(%rip), [[EAX:%e.x]]
519 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ddst(%rip)
509520 ; DARWIN-64-STATIC-NEXT: ret
510521
511522 ; DARWIN-64-DYNAMIC: _foo03:
512 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
513 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip)
523 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), [[EAX:%e.x]]
524 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ddst(%rip)
514525 ; DARWIN-64-DYNAMIC-NEXT: ret
515526
516527 ; DARWIN-64-PIC: _foo03:
517 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
518 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip)
528 ; DARWIN-64-PIC: movl _dsrc(%rip), [[EAX:%e.x]]
529 ; DARWIN-64-PIC-NEXT: movl [[EAX]], _ddst(%rip)
519530 ; DARWIN-64-PIC-NEXT: ret
520531 }
521532
536547 ; LINUX-32-PIC-NEXT: ret
537548
538549 ; LINUX-64-PIC: foo04:
539 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
540 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
541 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
550 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), [[RAX:%r.x]]
551 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
552 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
542553 ; LINUX-64-PIC-NEXT: ret
543554
544555 ; DARWIN-32-STATIC: _foo04:
552563 ; DARWIN-32-PIC: _foo04:
553564 ; DARWIN-32-PIC: calll L7$pb
554565 ; DARWIN-32-PIC-NEXT: L7$pb:
555 ; DARWIN-32-PIC-NEXT: popl %eax
556 ; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx
557 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax)
566 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
567 ; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb([[EAX]]), [[ECX:%e.x]]
568 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L7$pb([[EAX]])
558569 ; DARWIN-32-PIC-NEXT: ret
559570
560571 ; DARWIN-64-STATIC: _foo04:
561 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
562 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
572 ; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
573 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
563574 ; DARWIN-64-STATIC-NEXT: ret
564575
565576 ; DARWIN-64-DYNAMIC: _foo04:
566 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
567 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
577 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
578 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
568579 ; DARWIN-64-DYNAMIC-NEXT: ret
569580
570581 ; DARWIN-64-PIC: _foo04:
571 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
572 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
582 ; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
583 ; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
573584 ; DARWIN-64-PIC-NEXT: ret
574585 }
575586
586597 ; LINUX-64-STATIC: ret
587598
588599 ; LINUX-32-STATIC: foo05:
589 ; LINUX-32-STATIC: movl dsrc, %eax
590 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
591 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
600 ; LINUX-32-STATIC: movl dsrc, [[EAX:%e.x]]
601 ; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
602 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
592603 ; LINUX-32-STATIC-NEXT: ret
593604
594605 ; LINUX-32-PIC: foo05:
595 ; LINUX-32-PIC: movl dsrc, %eax
596 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
597 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
606 ; LINUX-32-PIC: movl dsrc, [[EAX:%e.x]]
607 ; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
608 ; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
598609 ; LINUX-32-PIC-NEXT: ret
599610
600611 ; LINUX-64-PIC: foo05:
601 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
602 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
603 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
604 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
605 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
612 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
613 ; LINUX-64-PIC-NEXT: movl ([[RAX]]), [[EAX:%e.x]]
614 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
615 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
616 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
606617 ; LINUX-64-PIC-NEXT: ret
607618
608619 ; DARWIN-32-STATIC: _foo05:
609 ; DARWIN-32-STATIC: movl _dsrc, %eax
610 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
611 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
620 ; DARWIN-32-STATIC: movl _dsrc, [[EAX:%e.x]]
621 ; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
622 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
612623 ; DARWIN-32-STATIC-NEXT: ret
613624
614625 ; DARWIN-32-DYNAMIC: _foo05:
615 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
616 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
617 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
626 ; DARWIN-32-DYNAMIC: movl _dsrc, [[EAX:%e.x]]
627 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
628 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
618629 ; DARWIN-32-DYNAMIC-NEXT: ret
619630
620631 ; DARWIN-32-PIC: _foo05:
621632 ; DARWIN-32-PIC: calll L8$pb
622633 ; DARWIN-32-PIC-NEXT: L8$pb:
623 ; DARWIN-32-PIC-NEXT: popl %eax
624 ; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx
625 ; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax
626 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
634 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
635 ; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb([[EAX]]), [[ECX:%e.x]]
636 ; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb([[EAX]]), [[EAX:%e.x]]
637 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
627638 ; DARWIN-32-PIC-NEXT: ret
628639
629640 ; DARWIN-64-STATIC: _foo05:
630 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
631 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
632 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
641 ; DARWIN-64-STATIC: movl _dsrc(%rip), [[EAX:%e.x]]
642 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
643 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
633644 ; DARWIN-64-STATIC-NEXT: ret
634645
635646 ; DARWIN-64-DYNAMIC: _foo05:
636 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
637 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
638 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
647 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), [[EAX:%e.x]]
648 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
649 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
639650 ; DARWIN-64-DYNAMIC-NEXT: ret
640651
641652 ; DARWIN-64-PIC: _foo05:
642 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
643 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
644 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
653 ; DARWIN-64-PIC: movl _dsrc(%rip), [[EAX:%e.x]]
654 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
655 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
645656 ; DARWIN-64-PIC-NEXT: ret
646657 }
647658
651662 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
652663 ret void
653664 ; LINUX-64-STATIC: foo06:
654 ; LINUX-64-STATIC: movl lsrc(%rip), %eax
655 ; LINUX-64-STATIC: movl %eax, ldst(%rip)
665 ; LINUX-64-STATIC: movl lsrc(%rip), [[EAX:%e.x]]
666 ; LINUX-64-STATIC: movl [[EAX]], ldst(%rip)
656667 ; LINUX-64-STATIC: ret
657668
658669 ; LINUX-32-STATIC: foo06:
659 ; LINUX-32-STATIC: movl lsrc, %eax
660 ; LINUX-32-STATIC-NEXT: movl %eax, ldst
670 ; LINUX-32-STATIC: movl lsrc, [[EAX:%e.x]]
671 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ldst
661672 ; LINUX-32-STATIC-NEXT: ret
662673
663674 ; LINUX-32-PIC: foo06:
664 ; LINUX-32-PIC: movl lsrc, %eax
665 ; LINUX-32-PIC-NEXT: movl %eax, ldst
675 ; LINUX-32-PIC: movl lsrc, [[EAX:%e.x]]
676 ; LINUX-32-PIC-NEXT: movl [[EAX]], ldst
666677 ; LINUX-32-PIC-NEXT: ret
667678
668679 ; LINUX-64-PIC: foo06:
669 ; LINUX-64-PIC: movl lsrc(%rip), %eax
670 ; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)
680 ; LINUX-64-PIC: movl lsrc(%rip), [[EAX:%e.x]]
681 ; LINUX-64-PIC-NEXT: movl [[EAX]], ldst(%rip)
671682 ; LINUX-64-PIC-NEXT: ret
672683
673684 ; DARWIN-32-STATIC: _foo06:
674 ; DARWIN-32-STATIC: movl _lsrc, %eax
675 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst
685 ; DARWIN-32-STATIC: movl _lsrc, [[EAX:%e.x]]
686 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ldst
676687 ; DARWIN-32-STATIC-NEXT: ret
677688
678689 ; DARWIN-32-DYNAMIC: _foo06:
679 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
680 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst
690 ; DARWIN-32-DYNAMIC: movl _lsrc, [[EAX:%e.x]]
691 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ldst
681692 ; DARWIN-32-DYNAMIC-NEXT: ret
682693
683694 ; DARWIN-32-PIC: _foo06:
684695 ; DARWIN-32-PIC: calll L9$pb
685696 ; DARWIN-32-PIC-NEXT: L9$pb:
686 ; DARWIN-32-PIC-NEXT: popl %eax
687 ; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx
688 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax)
697 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
698 ; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb([[EAX]]), [[ECX:%e.x]]
699 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _ldst-L9$pb([[EAX]])
689700 ; DARWIN-32-PIC-NEXT: ret
690701
691702 ; DARWIN-64-STATIC: _foo06:
692 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
693 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)
703 ; DARWIN-64-STATIC: movl _lsrc(%rip), [[EAX:%e.x]]
704 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ldst(%rip)
694705 ; DARWIN-64-STATIC-NEXT: ret
695706
696707 ; DARWIN-64-DYNAMIC: _foo06:
697 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
698 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)
708 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), [[EAX:%e.x]]
709 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ldst(%rip)
699710 ; DARWIN-64-DYNAMIC-NEXT: ret
700711
701712 ; DARWIN-64-PIC: _foo06:
702 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
703 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)
713 ; DARWIN-64-PIC: movl _lsrc(%rip), [[EAX:%e.x]]
714 ; DARWIN-64-PIC-NEXT: movl [[EAX]], _ldst(%rip)
704715 ; DARWIN-64-PIC-NEXT: ret
705716 }
706717
721732 ; LINUX-32-PIC-NEXT: ret
722733
723734 ; LINUX-64-PIC: foo07:
724 ; LINUX-64-PIC: leaq ldst(%rip), %rax
725 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
735 ; LINUX-64-PIC: leaq ldst(%rip), [[RAX:%r.x]]
736 ; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
726737 ; LINUX-64-PIC-NEXT: ret
727738
728739 ; DARWIN-32-STATIC: _foo07:
736747 ; DARWIN-32-PIC: _foo07:
737748 ; DARWIN-32-PIC: calll L10$pb
738749 ; DARWIN-32-PIC-NEXT: L10$pb:
739 ; DARWIN-32-PIC-NEXT: popl %eax
740 ; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx
741 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax)
750 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
751 ; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb([[EAX]]), [[ECX:%e.x]]
752 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L10$pb([[EAX]])
742753 ; DARWIN-32-PIC-NEXT: ret
743754
744755 ; DARWIN-64-STATIC: _foo07:
745 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
746 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
756 ; DARWIN-64-STATIC: leaq _ldst(%rip), [[RAX:%r.x]]
757 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
747758 ; DARWIN-64-STATIC-NEXT: ret
748759
749760 ; DARWIN-64-DYNAMIC: _foo07:
750 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
751 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
761 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), [[RAX:%r.x]]
762 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
752763 ; DARWIN-64-DYNAMIC-NEXT: ret
753764
754765 ; DARWIN-64-PIC: _foo07:
755 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
756 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
766 ; DARWIN-64-PIC: leaq _ldst(%rip), [[RAX:%r.x]]
767 ; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
757768 ; DARWIN-64-PIC-NEXT: ret
758769 }
759770
770781 ; LINUX-64-STATIC: ret
771782
772783 ; LINUX-32-STATIC: foo08:
773 ; LINUX-32-STATIC: movl lsrc, %eax
774 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
775 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
784 ; LINUX-32-STATIC: movl lsrc, [[EAX:%e.x]]
785 ; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
786 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
776787 ; LINUX-32-STATIC-NEXT: ret
777788
778789 ; LINUX-32-PIC: foo08:
779 ; LINUX-32-PIC: movl lsrc, %eax
780 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
781 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
790 ; LINUX-32-PIC: movl lsrc, [[EAX:%e.x]]
791 ; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
792 ; LINUX-32-PIC-NEXT: movl [[EAX]], ([[ECX]])
782793 ; LINUX-32-PIC-NEXT: ret
783794
784795 ; LINUX-64-PIC: foo08:
785 ; LINUX-64-PIC: movl lsrc(%rip), %eax
786 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
787 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
796 ; LINUX-64-PIC: movl lsrc(%rip), [[EAX:%e.x]]
797 ; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
798 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
788799 ; LINUX-64-PIC-NEXT: ret
789800
790801 ; DARWIN-32-STATIC: _foo08:
791 ; DARWIN-32-STATIC: movl _lsrc, %eax
792 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
793 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
802 ; DARWIN-32-STATIC: movl _lsrc, [[EAX:%e.x]]
803 ; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
804 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], ([[ECX]])
794805 ; DARWIN-32-STATIC-NEXT: ret
795806
796807 ; DARWIN-32-DYNAMIC: _foo08:
797 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
798 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
799 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
808 ; DARWIN-32-DYNAMIC: movl _lsrc, [[EAX:%e.x]]
809 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
810 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
800811 ; DARWIN-32-DYNAMIC-NEXT: ret
801812
802813 ; DARWIN-32-PIC: _foo08:
803814 ; DARWIN-32-PIC: calll L11$pb
804815 ; DARWIN-32-PIC-NEXT: L11$pb:
805 ; DARWIN-32-PIC-NEXT: popl %eax
806 ; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx
807 ; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax
808 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
816 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
817 ; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb([[EAX]]), [[ECX:%e.x]]
818 ; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb([[EAX]]), [[EAX:%e.x]]
819 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
809820 ; DARWIN-32-PIC-NEXT: ret
810821
811822 ; DARWIN-64-STATIC: _foo08:
812 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
813 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
814 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
823 ; DARWIN-64-STATIC: movl _lsrc(%rip), [[EAX:%e.x]]
824 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
825 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]])
815826 ; DARWIN-64-STATIC-NEXT: ret
816827
817828 ; DARWIN-64-DYNAMIC: _foo08:
818 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
819 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
820 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
829 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), [[EAX:%e.x]]
830 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
831 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]])
821832 ; DARWIN-64-DYNAMIC-NEXT: ret
822833
823834 ; DARWIN-64-PIC: _foo08:
824 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
825 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
826 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
835 ; DARWIN-64-PIC: movl _lsrc(%rip), [[EAX:%e.x]]
836 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
837 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]])
827838 ; DARWIN-64-PIC-NEXT: ret
828839 }
829840
833844 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
834845 ret void
835846 ; LINUX-64-STATIC: qux00:
836 ; LINUX-64-STATIC: movl src+64(%rip), %eax
837 ; LINUX-64-STATIC: movl %eax, dst+64(%rip)
847 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]]
848 ; LINUX-64-STATIC: movl [[EAX]], dst+64(%rip)
838849 ; LINUX-64-STATIC: ret
839850
840851 ; LINUX-32-STATIC: qux00:
841 ; LINUX-32-STATIC: movl src+64, %eax
842 ; LINUX-32-STATIC-NEXT: movl %eax, dst+64
852 ; LINUX-32-STATIC: movl src+64, [[EAX:%e.x]]
853 ; LINUX-32-STATIC-NEXT: movl [[EAX]], dst+64
843854 ; LINUX-32-STATIC-NEXT: ret
844855
845856 ; LINUX-32-PIC: qux00:
846 ; LINUX-32-PIC: movl src+64, %eax
847 ; LINUX-32-PIC-NEXT: movl %eax, dst+64
857 ; LINUX-32-PIC: movl src+64, [[EAX:%e.x]]
858 ; LINUX-32-PIC-NEXT: movl [[EAX]], dst+64
848859 ; LINUX-32-PIC-NEXT: ret
849860
850861 ; LINUX-64-PIC: qux00:
851 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
852 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
853 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
854 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
862 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
863 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
864 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
865 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
855866 ; LINUX-64-PIC-NEXT: ret
856867
857868 ; DARWIN-32-STATIC: _qux00:
858 ; DARWIN-32-STATIC: movl _src+64, %eax
859 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64
869 ; DARWIN-32-STATIC: movl _src+64, [[EAX:%e.x]]
870 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dst+64
860871 ; DARWIN-32-STATIC-NEXT: ret
861872
862873 ; DARWIN-32-DYNAMIC: _qux00:
863 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
864 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
865 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
866 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
874 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
875 ; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
876 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[ECX:%e.x]]
877 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
867878 ; DARWIN-32-DYNAMIC-NEXT: ret
868879
869880 ; DARWIN-32-PIC: _qux00:
870881 ; DARWIN-32-PIC: calll L12$pb
871882 ; DARWIN-32-PIC-NEXT: L12$pb:
872 ; DARWIN-32-PIC-NEXT: popl %eax
873 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx
874 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
875 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax
876 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
883 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
884 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb([[EAX]]), [[ECX:%e.x]]
885 ; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
886 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb([[EAX]]), [[EAX:%e.x]]
887 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
877888 ; DARWIN-32-PIC-NEXT: ret
878889
879890 ; DARWIN-64-STATIC: _qux00:
880 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
881 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
882 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
883 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
891 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
892 ; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
893 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
894 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
884895 ; DARWIN-64-STATIC-NEXT: ret
885896
886897 ; DARWIN-64-DYNAMIC: _qux00:
887 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
888 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
889 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
890 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
898 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
899 ; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
900 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
901 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
891902 ; DARWIN-64-DYNAMIC-NEXT: ret
892903
893904 ; DARWIN-64-PIC: _qux00:
894 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
895 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
896 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
897 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
905 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
906 ; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
907 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
908 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
898909 ; DARWIN-64-PIC-NEXT: ret
899910 }
900911
904915 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
905916 ret void
906917 ; LINUX-64-STATIC: qxx00:
907 ; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
908 ; LINUX-64-STATIC: movl %eax, xdst+64(%rip)
918 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]]
919 ; LINUX-64-STATIC: movl [[EAX]], xdst+64(%rip)
909920 ; LINUX-64-STATIC: ret
910921
911922 ; LINUX-32-STATIC: qxx00:
912 ; LINUX-32-STATIC: movl xsrc+64, %eax
913 ; LINUX-32-STATIC-NEXT: movl %eax, xdst+64
923 ; LINUX-32-STATIC: movl xsrc+64, [[EAX:%e.x]]
924 ; LINUX-32-STATIC-NEXT: movl [[EAX]], xdst+64
914925 ; LINUX-32-STATIC-NEXT: ret
915926
916927 ; LINUX-32-PIC: qxx00:
917 ; LINUX-32-PIC: movl xsrc+64, %eax
918 ; LINUX-32-PIC-NEXT: movl %eax, xdst+64
928 ; LINUX-32-PIC: movl xsrc+64, [[EAX:%e.x]]
929 ; LINUX-32-PIC-NEXT: movl [[EAX]], xdst+64
919930 ; LINUX-32-PIC-NEXT: ret
920931
921932 ; LINUX-64-PIC: qxx00:
922 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
923 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
924 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
925 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
933 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
934 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
935 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
936 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
926937 ; LINUX-64-PIC-NEXT: ret
927938
928939 ; DARWIN-32-STATIC: _qxx00:
929 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
930 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64
940 ; DARWIN-32-STATIC: movl _xsrc+64, [[EAX:%e.x]]
941 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _xdst+64
931942 ; DARWIN-32-STATIC-NEXT: ret
932943
933944 ; DARWIN-32-DYNAMIC: _qxx00:
934 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
935 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
936 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
937 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
945 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
946 ; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
947 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[ECX:%e.x]]
948 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
938949 ; DARWIN-32-DYNAMIC-NEXT: ret
939950
940951 ; DARWIN-32-PIC: _qxx00:
941952 ; DARWIN-32-PIC: calll L13$pb
942953 ; DARWIN-32-PIC-NEXT: L13$pb:
943 ; DARWIN-32-PIC-NEXT: popl %eax
944 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx
945 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
946 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax
947 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
954 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
955 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb([[EAX]]), [[ECX:%e.x]]
956 ; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
957 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb([[EAX]]), [[EAX:%e.x]]
958 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
948959 ; DARWIN-32-PIC-NEXT: ret
949960
950961 ; DARWIN-64-STATIC: _qxx00:
951 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
952 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
953 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
954 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
962 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
963 ; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
964 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
965 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
955966 ; DARWIN-64-STATIC-NEXT: ret
956967
957968 ; DARWIN-64-DYNAMIC: _qxx00:
958 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
959 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
960 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
961 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
969 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
970 ; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
971 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
972 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
962973 ; DARWIN-64-DYNAMIC-NEXT: ret
963974
964975 ; DARWIN-64-PIC: _qxx00:
965 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
966 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
967 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
968 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
976 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
977 ; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
978 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
979 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
969980 ; DARWIN-64-PIC-NEXT: ret
970981 }
971982
986997 ; LINUX-32-PIC-NEXT: ret
987998
988999 ; LINUX-64-PIC: qux01:
989 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
990 ; LINUX-64-PIC-NEXT: addq $64, %rax
991 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
992 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1000 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), [[RAX:%r.x]]
1001 ; LINUX-64-PIC-NEXT: addq $64, [[RAX:%r.x]]
1002 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1003 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
9931004 ; LINUX-64-PIC-NEXT: ret
9941005
9951006 ; DARWIN-32-STATIC: _qux01:
9971008 ; DARWIN-32-STATIC-NEXT: ret
9981009
9991010 ; DARWIN-32-DYNAMIC: _qux01:
1000 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
1001 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1002 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1003 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1011 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, [[EAX:%e.x]]
1012 ; DARWIN-32-DYNAMIC-NEXT: addl $64, [[EAX:%e.x]]
1013 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1014 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
10041015 ; DARWIN-32-DYNAMIC-NEXT: ret
10051016
10061017 ; DARWIN-32-PIC: _qux01:
10071018 ; DARWIN-32-PIC: calll L14$pb
10081019 ; DARWIN-32-PIC-NEXT: L14$pb:
1009 ; DARWIN-32-PIC-NEXT: popl %eax
1010 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx
1011 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1012 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax
1013 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1020 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1021 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb([[EAX]]), [[ECX:%e.x]]
1022 ; DARWIN-32-PIC-NEXT: addl $64, [[ECX:%e.x]]
1023 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb([[EAX]]), [[EAX:%e.x]]
1024 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
10141025 ; DARWIN-32-PIC-NEXT: ret
10151026
10161027 ; DARWIN-64-STATIC: _qux01:
1017 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
1018 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1019 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1020 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1028 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
1029 ; DARWIN-64-STATIC-NEXT: addq $64, [[RAX:%r.x]]
1030 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1031 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]])
10211032 ; DARWIN-64-STATIC-NEXT: ret
10221033
10231034 ; DARWIN-64-DYNAMIC: _qux01:
1024 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
1025 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1026 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1027 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1035 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
1036 ; DARWIN-64-DYNAMIC-NEXT: addq $64, [[RAX:%r.x]]
1037 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1038 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]])
10281039 ; DARWIN-64-DYNAMIC-NEXT: ret
10291040
10301041 ; DARWIN-64-PIC: _qux01:
1031 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
1032 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1033 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1034 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1042 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), [[RAX:%r.x]]
1043 ; DARWIN-64-PIC-NEXT: addq $64, [[RAX:%r.x]]
1044 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1045 ; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
10351046 ; DARWIN-64-PIC-NEXT: ret
10361047 }
10371048
10521063 ; LINUX-32-PIC-NEXT: ret
10531064
10541065 ; LINUX-64-PIC: qxx01:
1055 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
1056 ; LINUX-64-PIC-NEXT: addq $64, %rax
1057 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1058 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1066 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), [[RAX:%r.x]]
1067 ; LINUX-64-PIC-NEXT: addq $64, [[RAX:%r.x]]
1068 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1069 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
10591070 ; LINUX-64-PIC-NEXT: ret
10601071
10611072 ; DARWIN-32-STATIC: _qxx01:
10631074 ; DARWIN-32-STATIC-NEXT: ret
10641075
10651076 ; DARWIN-32-DYNAMIC: _qxx01:
1066 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
1067 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1068 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1069 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1077 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, [[EAX:%e.x]]
1078 ; DARWIN-32-DYNAMIC-NEXT: addl $64, [[EAX:%e.x]]
1079 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1080 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
10701081 ; DARWIN-32-DYNAMIC-NEXT: ret
10711082
10721083 ; DARWIN-32-PIC: _qxx01:
10731084 ; DARWIN-32-PIC: calll L15$pb
10741085 ; DARWIN-32-PIC-NEXT: L15$pb:
1075 ; DARWIN-32-PIC-NEXT: popl %eax
1076 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx
1077 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1078 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax
1079 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1086 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1087 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb([[EAX]]), [[ECX:%e.x]]
1088 ; DARWIN-32-PIC-NEXT: addl $64, [[ECX:%e.x]]
1089 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb([[EAX]]), [[EAX:%e.x]]
1090 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
10801091 ; DARWIN-32-PIC-NEXT: ret
10811092
10821093 ; DARWIN-64-STATIC: _qxx01:
1083 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
1084 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1085 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1086 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1094 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
1095 ; DARWIN-64-STATIC-NEXT: addq $64, [[RAX:%r.x]]
1096 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1097 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], ([[RCX]])
10871098 ; DARWIN-64-STATIC-NEXT: ret
10881099
10891100 ; DARWIN-64-DYNAMIC: _qxx01:
1090 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
1091 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1092 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1093 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1101 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
1102 ; DARWIN-64-DYNAMIC-NEXT: addq $64, [[RAX:%r.x]]
1103 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1104 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], ([[RCX]])
10941105 ; DARWIN-64-DYNAMIC-NEXT: ret
10951106
10961107 ; DARWIN-64-PIC: _qxx01:
1097 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
1098 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1099 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1100 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1108 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), [[RAX:%r.x]]
1109 ; DARWIN-64-PIC-NEXT: addq $64, [[RAX:%r.x]]
1110 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1111 ; DARWIN-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
11011112 ; DARWIN-64-PIC-NEXT: ret
11021113 }
11031114
11081119 %2 = getelementptr i32* %0, i64 16
11091120 store i32 %1, i32* %2, align 4
11101121 ; LINUX-64-STATIC: qux02:
1111 ; LINUX-64-STATIC: movl src+64(%rip), %eax
1112 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1113 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1122 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]]
1123 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
1124 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
11141125 ; LINUX-64-STATIC: ret
11151126
11161127 ; LINUX-32-STATIC: qux02:
1117 ; LINUX-32-STATIC: movl src+64, %eax
1118 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1119 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1128 ; LINUX-32-STATIC: movl src+64, [[EAX:%e.x]]
1129 ; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
1130 ; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
11201131 ; LINUX-32-STATIC-NEXT: ret
11211132 ret void
11221133
11231134 ; LINUX-32-PIC: qux02:
1124 ; LINUX-32-PIC: movl src+64, %eax
1125 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1126 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1135 ; LINUX-32-PIC: movl src+64, [[EAX:%e.x]]
1136 ; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
1137 ; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
11271138 ; LINUX-32-PIC-NEXT: ret
11281139
11291140 ; LINUX-64-PIC: qux02:
1130 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1131 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1132 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1133 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1134 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1141 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
1142 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1143 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1144 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1145 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
11351146 ; LINUX-64-PIC-NEXT: ret
11361147
11371148 ; DARWIN-32-STATIC: _qux02:
1138 ; DARWIN-32-STATIC: movl _src+64, %eax
1139 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1140 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1149 ; DARWIN-32-STATIC: movl _src+64, [[EAX:%e.x]]
1150 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
1151 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
11411152 ; DARWIN-32-STATIC-NEXT: ret
11421153
11431154 ; DARWIN-32-DYNAMIC: _qux02:
1144 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
1145 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1146 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1147 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1148 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1155 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, [[EAX:%e.x]]
1156 ; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
1157 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1158 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
1159 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
11491160 ; DARWIN-32-DYNAMIC-NEXT: ret
11501161
11511162 ; DARWIN-32-PIC: _qux02:
11521163 ; DARWIN-32-PIC: calll L16$pb
11531164 ; DARWIN-32-PIC-NEXT: L16$pb:
1154 ; DARWIN-32-PIC-NEXT: popl %eax
1155 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx
1156 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1157 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax
1158 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1159 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1165 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1166 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb([[EAX]]), [[ECX:%e.x]]
1167 ; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
1168 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb([[EAX]]), [[EAX:%e.x]]
1169 ; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
1170 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
11601171 ; DARWIN-32-PIC-NEXT: ret
11611172
11621173 ; DARWIN-64-STATIC: _qux02:
1163 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1164 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1165 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1166 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1167 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1174 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1175 ; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1176 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1177 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1178 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
11681179 ; DARWIN-64-STATIC-NEXT: ret
11691180
11701181 ; DARWIN-64-DYNAMIC: _qux02:
1171 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1172 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1173 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1174 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1175 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1182 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1183 ; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1184 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1185 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1186 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
11761187 ; DARWIN-64-DYNAMIC-NEXT: ret
11771188
11781189 ; DARWIN-64-PIC: _qux02:
1179 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1180 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1181 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1182 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1183 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1190 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1191 ; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1192 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1193 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1194 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
11841195 ; DARWIN-64-PIC-NEXT: ret
11851196 }
11861197
11911202 %2 = getelementptr i32* %0, i64 16
11921203 store i32 %1, i32* %2, align 4
11931204 ; LINUX-64-STATIC: qxx02:
1194 ; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
1195 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1196 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1205 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]]
1206 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
1207 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
11971208 ; LINUX-64-STATIC: ret
11981209
11991210 ; LINUX-32-STATIC: qxx02:
1200 ; LINUX-32-STATIC: movl xsrc+64, %eax
1201 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1202 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1211 ; LINUX-32-STATIC: movl xsrc+64, [[EAX:%e.x]]
1212 ; LINUX-32-STATIC-NEXT: movl ptr, [[ECX:%e.x]]
1213 ; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
12031214 ; LINUX-32-STATIC-NEXT: ret
12041215 ret void
12051216
12061217 ; LINUX-32-PIC: qxx02:
1207 ; LINUX-32-PIC: movl xsrc+64, %eax
1208 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1209 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1218 ; LINUX-32-PIC: movl xsrc+64, [[EAX:%e.x]]
1219 ; LINUX-32-PIC-NEXT: movl ptr, [[ECX:%e.x]]
1220 ; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
12101221 ; LINUX-32-PIC-NEXT: ret
12111222
12121223 ; LINUX-64-PIC: qxx02:
1213 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1214 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1215 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1216 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1217 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1224 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1225 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1226 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1227 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1228 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
12181229 ; LINUX-64-PIC-NEXT: ret
12191230
12201231 ; DARWIN-32-STATIC: _qxx02:
1221 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
1222 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1223 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1232 ; DARWIN-32-STATIC: movl _xsrc+64, [[EAX:%e.x]]
1233 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[ECX:%e.x]]
1234 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
12241235 ; DARWIN-32-STATIC-NEXT: ret
12251236
12261237 ; DARWIN-32-DYNAMIC: _qxx02:
1227 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
1228 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1229 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1230 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1231 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1238 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
1239 ; DARWIN-32-DYNAMIC-NEXT: movl 64([[EAX]]), [[EAX:%e.x]]
1240 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1241 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]]), [[ECX:%e.x]]
1242 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
12321243 ; DARWIN-32-DYNAMIC-NEXT: ret
12331244
12341245 ; DARWIN-32-PIC: _qxx02:
12351246 ; DARWIN-32-PIC: calll L17$pb
12361247 ; DARWIN-32-PIC-NEXT: L17$pb:
1237 ; DARWIN-32-PIC-NEXT: popl %eax
1238 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx
1239 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1240 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax
1241 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1242 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1248 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1249 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb([[EAX]]), [[ECX:%e.x]]
1250 ; DARWIN-32-PIC-NEXT: movl 64([[ECX]]), [[ECX:%e.x]]
1251 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb([[EAX]]), [[EAX:%e.x]]
1252 ; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
1253 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
12431254 ; DARWIN-32-PIC-NEXT: ret
12441255
12451256 ; DARWIN-64-STATIC: _qxx02:
1246 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1247 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1248 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1249 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1250 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1257 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1258 ; DARWIN-64-STATIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1259 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1260 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1261 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
12511262 ; DARWIN-64-STATIC-NEXT: ret
12521263
12531264 ; DARWIN-64-DYNAMIC: _qxx02:
1254 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1255 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1256 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1257 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1258 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1265 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1266 ; DARWIN-64-DYNAMIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1267 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1268 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1269 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
12591270 ; DARWIN-64-DYNAMIC-NEXT: ret
12601271
12611272 ; DARWIN-64-PIC: _qxx02:
1262 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1263 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1264 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1265 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1266 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1273 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1274 ; DARWIN-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1275 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1276 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1277 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
12671278 ; DARWIN-64-PIC-NEXT: ret
12681279 }
12691280
12731284 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
12741285 ret void
12751286 ; LINUX-64-STATIC: qux03:
1276 ; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
1277 ; LINUX-64-STATIC: movl %eax, ddst+64(%rip)
1287 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]]
1288 ; LINUX-64-STATIC: movl [[EAX]], ddst+64(%rip)
12781289 ; LINUX-64-STATIC: ret
12791290
12801291 ; LINUX-32-STATIC: qux03:
1281 ; LINUX-32-STATIC: movl dsrc+64, %eax
1282 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+64
1292 ; LINUX-32-STATIC: movl dsrc+64, [[EAX:%e.x]]
1293 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ddst+64
12831294 ; LINUX-32-STATIC-NEXT: ret
12841295
12851296 ; LINUX-32-PIC: qux03:
1286 ; LINUX-32-PIC: movl dsrc+64, %eax
1287 ; LINUX-32-PIC-NEXT: movl %eax, ddst+64
1297 ; LINUX-32-PIC: movl dsrc+64, [[EAX:%e.x]]
1298 ; LINUX-32-PIC-NEXT: movl [[EAX]], ddst+64
12881299 ; LINUX-32-PIC-NEXT: ret
12891300
12901301 ; LINUX-64-PIC: qux03:
1291 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1292 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1293 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
1294 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1302 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1303 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1304 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
1305 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
12951306 ; LINUX-64-PIC-NEXT: ret
12961307
12971308 ; DARWIN-32-STATIC: _qux03:
1298 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1299 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64
1309 ; DARWIN-32-STATIC: movl _dsrc+64, [[EAX:%e.x]]
1310 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ddst+64
13001311 ; DARWIN-32-STATIC-NEXT: ret
13011312
13021313 ; DARWIN-32-DYNAMIC: _qux03:
1303 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1304 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64
1314 ; DARWIN-32-DYNAMIC: movl _dsrc+64, [[EAX:%e.x]]
1315 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ddst+64
13051316 ; DARWIN-32-DYNAMIC-NEXT: ret
13061317
13071318 ; DARWIN-32-PIC: _qux03:
13081319 ; DARWIN-32-PIC: calll L18$pb
13091320 ; DARWIN-32-PIC-NEXT: L18$pb:
1310 ; DARWIN-32-PIC-NEXT: popl %eax
1311 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx
1312 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax)
1321 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1322 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64([[EAX]]), [[ECX:%e.x]]
1323 ; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ddst-L18$pb)+64([[EAX]])
13131324 ; DARWIN-32-PIC-NEXT: ret
13141325
13151326 ; DARWIN-64-STATIC: _qux03:
1316 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1317 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)
1327 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1328 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ddst+64(%rip)
13181329 ; DARWIN-64-STATIC-NEXT: ret
13191330
13201331 ; DARWIN-64-DYNAMIC: _qux03:
1321 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1322 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)
1332 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1333 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ddst+64(%rip)
13231334 ; DARWIN-64-DYNAMIC-NEXT: ret
13241335
13251336 ; DARWIN-64-PIC: _qux03:
1326 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1327 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)
1337 ; DARWIN-64-PIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1338 ; DARWIN-64-PIC-NEXT: movl [[EAX]], _ddst+64(%rip)
13281339 ; DARWIN-64-PIC-NEXT: ret
13291340 }
13301341
13451356 ; LINUX-32-PIC-NEXT: ret
13461357
13471358 ; LINUX-64-PIC: qux04:
1348 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
1349 ; LINUX-64-PIC-NEXT: addq $64, %rax
1350 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1351 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1359 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), [[RAX:%r.x]]
1360 ; LINUX-64-PIC-NEXT: addq $64, [[RAX:%r.x]]
1361 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
1362 ; LINUX-64-PIC-NEXT: movq [[RAX]], ([[RCX]])
13521363 ; LINUX-64-PIC-NEXT: ret
13531364
13541365 ; DARWIN-32-STATIC: _qux04:
13621373 ; DARWIN-32-PIC: _qux04:
13631374 ; DARWIN-32-PIC: calll L19$pb
13641375 ; DARWIN-32-PIC-NEXT: L19$pb:
1365 ; DARWIN-32-PIC-NEXT: popl %eax
1366 ; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx
1367 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax)
1376 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1377 ; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64([[EAX]]), [[ECX:%e.x]]
1378 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L19$pb([[EAX]])
13681379 ; DARWIN-32-PIC-NEXT: ret
13691380
13701381 ; DARWIN-64-STATIC: _qux04:
1371 ; DARWIN-64-STATIC: leaq _ddst+64(%rip), %rax
1372 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
1382 ; DARWIN-64-STATIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
1383 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
13731384 ; DARWIN-64-STATIC-NEXT: ret
13741385
13751386 ; DARWIN-64-DYNAMIC: _qux04:
1376 ; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), %rax
1377 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
1387 ; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
1388 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
13781389 ; DARWIN-64-DYNAMIC-NEXT: ret
13791390
13801391 ; DARWIN-64-PIC: _qux04:
1381 ; DARWIN-64-PIC: leaq _ddst+64(%rip), %rax
1382 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
1392 ; DARWIN-64-PIC: leaq _ddst+64(%rip), [[RAX:%r.x]]
1393 ; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
13831394 ; DARWIN-64-PIC-NEXT: ret
13841395 }
13851396
13901401 %2 = getelementptr i32* %0, i64 16
13911402 store i32 %1, i32* %2, align 4
13921403 ; LINUX-64-STATIC: qux05:
1393 ; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
1394 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
1395 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1404 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]]
1405 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
1406 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
13961407 ; LINUX-64-STATIC: ret
13971408
13981409 ; LINUX-32-STATIC: qux05:
1399 ; LINUX-32-STATIC: movl dsrc+64, %eax
1400 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
1401 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1410 ; LINUX-32-STATIC: movl dsrc+64, [[EAX:%e.x]]
1411 ; LINUX-32-STATIC-NEXT: movl dptr, [[ECX:%e.x]]
1412 ; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
14021413 ; LINUX-32-STATIC-NEXT: ret
14031414 ret void
14041415
14051416 ; LINUX-32-PIC: qux05:
1406 ; LINUX-32-PIC: movl dsrc+64, %eax
1407 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
1408 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1417 ; LINUX-32-PIC: movl dsrc+64, [[EAX:%e.x]]
1418 ; LINUX-32-PIC-NEXT: movl dptr, [[ECX:%e.x]]
1419 ; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
14091420 ; LINUX-32-PIC-NEXT: ret
14101421
14111422 ; LINUX-64-PIC: qux05:
1412 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1413 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1414 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1415 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1416 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1423 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1424 ; LINUX-64-PIC-NEXT: movl 64([[RAX]]), [[EAX:%e.x]]
1425 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
1426 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1427 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
14171428 ; LINUX-64-PIC-NEXT: ret
14181429
14191430 ; DARWIN-32-STATIC: _qux05:
1420 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1421 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
1422 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1431 ; DARWIN-32-STATIC: movl _dsrc+64, [[EAX:%e.x]]
1432 ; DARWIN-32-STATIC-NEXT: movl _dptr, [[ECX:%e.x]]
1433 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
14231434 ; DARWIN-32-STATIC-NEXT: ret
14241435
14251436 ; DARWIN-32-DYNAMIC: _qux05:
1426 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1427 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
1428 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1437 ; DARWIN-32-DYNAMIC: movl _dsrc+64, [[EAX:%e.x]]
1438 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[ECX:%e.x]]
1439 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
14291440 ; DARWIN-32-DYNAMIC-NEXT: ret
14301441
14311442 ; DARWIN-32-PIC: _qux05:
14321443 ; DARWIN-32-PIC: calll L20$pb
14331444 ; DARWIN-32-PIC-NEXT: L20$pb:
1434 ; DARWIN-32-PIC-NEXT: popl %eax
1435 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx
1436 ; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax
1437 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1445 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1446 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64([[EAX]]), [[ECX:%e.x]]
1447 ; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb([[EAX]]), [[EAX:%e.x]]
1448 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
14381449 ; DARWIN-32-PIC-NEXT: ret
14391450
14401451 ; DARWIN-64-STATIC: _qux05:
1441 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1442 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
1443 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1452 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1453 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
1454 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
14441455 ; DARWIN-64-STATIC-NEXT: ret
14451456
14461457 ; DARWIN-64-DYNAMIC: _qux05:
1447 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1448 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
1449 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1458 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1459 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
1460 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
14501461 ; DARWIN-64-DYNAMIC-NEXT: ret
14511462
14521463 ; DARWIN-64-PIC: _qux05:
1453 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1454 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
1455 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1464 ; DARWIN-64-PIC: movl _dsrc+64(%rip), [[EAX:%e.x]]
1465 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
1466 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
14561467 ; DARWIN-64-PIC-NEXT: ret
14571468 }
14581469
14621473 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
14631474 ret void
14641475 ; LINUX-64-STATIC: qux06:
1465 ; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
1466 ; LINUX-64-STATIC: movl %eax, ldst+64
1476 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]]
1477 ; LINUX-64-STATIC: movl [[EAX]], ldst+64
14671478 ; LINUX-64-STATIC: ret
14681479
14691480 ; LINUX-32-STATIC: qux06:
1470 ; LINUX-32-STATIC: movl lsrc+64, %eax
1471 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+64
1481 ; LINUX-32-STATIC: movl lsrc+64, [[EAX:%e.x]]
1482 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ldst+64
14721483 ; LINUX-32-STATIC-NEXT: ret
14731484
14741485 ; LINUX-32-PIC: qux06:
1475 ; LINUX-32-PIC: movl lsrc+64, %eax
1476 ; LINUX-32-PIC-NEXT: movl %eax, ldst+64
1486 ; LINUX-32-PIC: movl lsrc+64, [[EAX:%e.x]]
1487 ; LINUX-32-PIC-NEXT: movl [[EAX]], ldst+64
14771488 ; LINUX-32-PIC-NEXT: ret
14781489
14791490 ; LINUX-64-PIC: qux06:
1480 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1481 ; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)
1491 ; LINUX-64-PIC: movl lsrc+64(%rip), [[EAX:%e.x]]
1492 ; LINUX-64-PIC-NEXT: movl [[EAX]], ldst+64(%rip)
14821493 ; LINUX-64-PIC-NEXT: ret
14831494
14841495 ; DARWIN-32-STATIC: _qux06:
1485 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1486 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64
1496 ; DARWIN-32-STATIC: movl _lsrc+64, [[EAX:%e.x]]
1497 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ldst+64
14871498 ; DARWIN-32-STATIC-NEXT: ret
14881499
14891500 ; DARWIN-32-DYNAMIC: _qux06:
1490 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1491 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64
1501 ; DARWIN-32-DYNAMIC: movl _lsrc+64, [[EAX:%e.x]]
1502 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _ldst+64
14921503 ; DARWIN-32-DYNAMIC-NEXT: ret
14931504
14941505 ; DARWIN-32-PIC: _qux06:
14951506 ; DARWIN-32-PIC: calll L21$pb
14961507 ; DARWIN-32-PIC-NEXT: L21$pb:
1497 ; DARWIN-32-PIC-NEXT: popl %eax
1498 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx
1499 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax)
1508 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1509 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64([[EAX]]), [[ECX:%e.x]]
1510 ; DARWIN-32-PIC-NEXT: movl [[ECX]], (_ldst-L21$pb)+64([[EAX]])
15001511 ; DARWIN-32-PIC-NEXT: ret
15011512
15021513 ; DARWIN-64-STATIC: _qux06:
1503 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1504 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)
1514 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1515 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], _ldst+64(%rip)
15051516 ; DARWIN-64-STATIC-NEXT: ret
15061517
15071518 ; DARWIN-64-DYNAMIC: _qux06:
1508 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1509 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)
1519 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1520 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], _ldst+64(%rip)
15101521 ; DARWIN-64-DYNAMIC-NEXT: ret
15111522
15121523 ; DARWIN-64-PIC: _qux06:
1513 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1514 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)
1524 ; DARWIN-64-PIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1525 ; DARWIN-64-PIC-NEXT: movl [[EAX]], _ldst+64(%rip)
15151526 ; DARWIN-64-PIC-NEXT: ret
15161527 }
15171528
15321543 ; LINUX-32-PIC-NEXT: ret
15331544
15341545 ; LINUX-64-PIC: qux07:
1535 ; LINUX-64-PIC: leaq ldst+64(%rip), %rax
1536 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
1546 ; LINUX-64-PIC: leaq ldst+64(%rip), [[RAX:%r.x]]
1547 ; LINUX-64-PIC-NEXT: movq [[RAX]], lptr(%rip)
15371548 ; LINUX-64-PIC-NEXT: ret
15381549
15391550 ; DARWIN-32-STATIC: _qux07:
15471558 ; DARWIN-32-PIC: _qux07:
15481559 ; DARWIN-32-PIC: calll L22$pb
15491560 ; DARWIN-32-PIC-NEXT: L22$pb:
1550 ; DARWIN-32-PIC-NEXT: popl %eax
1551 ; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx
1552 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax)
1561 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1562 ; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64([[EAX]]), [[ECX:%e.x]]
1563 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _lptr-L22$pb([[EAX]])
15531564 ; DARWIN-32-PIC-NEXT: ret
15541565
15551566 ; DARWIN-64-STATIC: _qux07:
1556 ; DARWIN-64-STATIC: leaq _ldst+64(%rip), %rax
1557 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
1567 ; DARWIN-64-STATIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
1568 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], _lptr(%rip)
15581569 ; DARWIN-64-STATIC-NEXT: ret
15591570
15601571 ; DARWIN-64-DYNAMIC: _qux07:
1561 ; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), %rax
1562 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
1572 ; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
1573 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _lptr(%rip)
15631574 ; DARWIN-64-DYNAMIC-NEXT: ret
15641575
15651576 ; DARWIN-64-PIC: _qux07:
1566 ; DARWIN-64-PIC: leaq _ldst+64(%rip), %rax
1567 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
1577 ; DARWIN-64-PIC: leaq _ldst+64(%rip), [[RAX:%r.x]]
1578 ; DARWIN-64-PIC-NEXT: movq [[RAX]], _lptr(%rip)
15681579 ; DARWIN-64-PIC-NEXT: ret
15691580 }
15701581
15751586 %2 = getelementptr i32* %0, i64 16
15761587 store i32 %1, i32* %2, align 4
15771588 ; LINUX-64-STATIC: qux08:
1578 ; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
1579 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
1580 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1589 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]]
1590 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]]
1591 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]])
15811592 ; LINUX-64-STATIC: ret
15821593
15831594 ; LINUX-32-STATIC: qux08:
1584 ; LINUX-32-STATIC: movl lsrc+64, %eax
1585 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
1586 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1595 ; LINUX-32-STATIC: movl lsrc+64, [[EAX:%e.x]]
1596 ; LINUX-32-STATIC-NEXT: movl lptr, [[ECX:%e.x]]
1597 ; LINUX-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
15871598 ; LINUX-32-STATIC-NEXT: ret
15881599 ret void
15891600
15901601 ; LINUX-32-PIC: qux08:
1591 ; LINUX-32-PIC: movl lsrc+64, %eax
1592 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
1593 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1602 ; LINUX-32-PIC: movl lsrc+64, [[EAX:%e.x]]
1603 ; LINUX-32-PIC-NEXT: movl lptr, [[ECX:%e.x]]
1604 ; LINUX-32-PIC-NEXT: movl [[EAX]], 64([[ECX]])
15941605 ; LINUX-32-PIC-NEXT: ret
15951606
15961607 ; LINUX-64-PIC: qux08:
1597 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1598 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
1599 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1608 ; LINUX-64-PIC: movl lsrc+64(%rip), [[EAX:%e.x]]
1609 ; LINUX-64-PIC-NEXT: movq lptr(%rip), [[RCX:%r.x]]
1610 ; LINUX-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
16001611 ; LINUX-64-PIC-NEXT: ret
16011612
16021613 ; DARWIN-32-STATIC: _qux08:
1603 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1604 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
1605 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1614 ; DARWIN-32-STATIC: movl _lsrc+64, [[EAX:%e.x]]
1615 ; DARWIN-32-STATIC-NEXT: movl _lptr, [[ECX:%e.x]]
1616 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], 64([[ECX]])
16061617 ; DARWIN-32-STATIC-NEXT: ret
16071618
16081619 ; DARWIN-32-DYNAMIC: _qux08:
1609 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1610 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
1611 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1620 ; DARWIN-32-DYNAMIC: movl _lsrc+64, [[EAX:%e.x]]
1621 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, [[ECX:%e.x]]
1622 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], 64([[ECX]])
16121623 ; DARWIN-32-DYNAMIC-NEXT: ret
16131624
16141625 ; DARWIN-32-PIC: _qux08:
16151626 ; DARWIN-32-PIC: calll L23$pb
16161627 ; DARWIN-32-PIC-NEXT: L23$pb:
1617 ; DARWIN-32-PIC-NEXT: popl %eax
1618 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx
1619 ; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax
1620 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1628 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1629 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64([[EAX]]), [[ECX:%e.x]]
1630 ; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb([[EAX]]), [[EAX:%e.x]]
1631 ; DARWIN-32-PIC-NEXT: movl [[ECX]], 64([[EAX]])
16211632 ; DARWIN-32-PIC-NEXT: ret
16221633
16231634 ; DARWIN-64-STATIC: _qux08:
1624 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1625 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
1626 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1635 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1636 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
1637 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], 64([[RCX]])
16271638 ; DARWIN-64-STATIC-NEXT: ret
16281639
16291640 ; DARWIN-64-DYNAMIC: _qux08:
1630 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1631 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
1632 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1641 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1642 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
1643 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], 64([[RCX]])
16331644 ; DARWIN-64-DYNAMIC-NEXT: ret
16341645
16351646 ; DARWIN-64-PIC: _qux08:
1636 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1637 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
1638 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1647 ; DARWIN-64-PIC: movl _lsrc+64(%rip), [[EAX:%e.x]]
1648 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), [[RCX:%r.x]]
1649 ; DARWIN-64-PIC-NEXT: movl [[EAX]], 64([[RCX]])
16391650 ; DARWIN-64-PIC-NEXT: ret
16401651 }
16411652
16471658 store i32 %1, i32* %2, align 4
16481659 ret void
16491660 ; LINUX-64-STATIC: ind00:
1650 ; LINUX-64-STATIC: movl src(,%rdi,4), %eax
1651 ; LINUX-64-STATIC: movl %eax, dst(,%rdi,4)
1661 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]]
1662 ; LINUX-64-STATIC: movl [[EAX]], dst(,%rdi,4)
16521663 ; LINUX-64-STATIC: ret
16531664
16541665 ; LINUX-32-STATIC: ind00:
1655 ; LINUX-32-STATIC: movl 4(%esp), %eax
1656 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1657 ; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)
1666 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1667 ; LINUX-32-STATIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
1668 ; LINUX-32-STATIC-NEXT: movl [[ECX]], dst(,[[EAX]],4)
16581669 ; LINUX-32-STATIC-NEXT: ret
16591670
16601671 ; LINUX-32-PIC: ind00:
1661 ; LINUX-32-PIC: movl 4(%esp), %eax
1662 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1663 ; LINUX-32-PIC-NEXT: movl %ecx, dst(,%eax,4)
1672 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
1673 ; LINUX-32-PIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
1674 ; LINUX-32-PIC-NEXT: movl [[ECX]], dst(,[[EAX]],4)
16641675 ; LINUX-32-PIC-NEXT: ret
16651676
16661677 ; LINUX-64-PIC: ind00:
1667 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1668 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1669 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
1670 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1678 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
1679 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1680 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), [[RCX:%r.x]]
1681 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
16711682 ; LINUX-64-PIC-NEXT: ret
16721683
16731684 ; DARWIN-32-STATIC: _ind00:
1674 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1675 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1676 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)
1685 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1686 ; DARWIN-32-STATIC-NEXT: movl _src(,[[EAX]],4), [[ECX:%e.x]]
1687 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], _dst(,[[EAX]],4)
16771688 ; DARWIN-32-STATIC-NEXT: ret
16781689
16791690 ; DARWIN-32-DYNAMIC: _ind00:
1680 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1681 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1682 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1683 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
1684 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1691 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
1692 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
1693 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
1694 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, [[EDX:%e.x]]
1695 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
16851696 ; DARWIN-32-DYNAMIC-NEXT: ret
16861697
16871698 ; DARWIN-32-PIC: _ind00:
16881699 ; DARWIN-32-PIC: calll L24$pb
16891700 ; DARWIN-32-PIC-NEXT: L24$pb:
1690 ; DARWIN-32-PIC-NEXT: popl %eax
1691 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1692 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx
1693 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1694 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax
1695 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1701 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1702 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
1703 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb([[EAX]]), [[EDX:%e.x]]
1704 ; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
1705 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb([[EAX]]), [[EAX:%e.x]]
1706 ; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
16961707 ; DARWIN-32-PIC-NEXT: ret
16971708
16981709 ; DARWIN-64-STATIC: _ind00:
1699 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1700 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1701 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1702 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1710 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1711 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1712 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
1713 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17031714 ; DARWIN-64-STATIC-NEXT: ret
17041715
17051716 ; DARWIN-64-DYNAMIC: _ind00:
1706 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1707 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1708 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1709 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1717 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1718 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1719 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
1720 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17101721 ; DARWIN-64-DYNAMIC-NEXT: ret
17111722
17121723 ; DARWIN-64-PIC: _ind00:
1713 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1714 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1715 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1716 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1724 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
1725 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1726 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), [[RCX:%r.x]]
1727 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17171728 ; DARWIN-64-PIC-NEXT: ret
17181729 }
17191730
17251736 store i32 %1, i32* %2, align 4
17261737 ret void
17271738 ; LINUX-64-STATIC: ixd00:
1728 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
1729 ; LINUX-64-STATIC: movl %eax, xdst(,%rdi,4)
1739 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]]
1740 ; LINUX-64-STATIC: movl [[EAX]], xdst(,%rdi,4)
17301741 ; LINUX-64-STATIC: ret
17311742
17321743 ; LINUX-32-STATIC: ixd00:
1733 ; LINUX-32-STATIC: movl 4(%esp), %eax
1734 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
1735 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)
1744 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1745 ; LINUX-32-STATIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
1746 ; LINUX-32-STATIC-NEXT: movl [[ECX]], xdst(,[[EAX]],4)
17361747 ; LINUX-32-STATIC-NEXT: ret
17371748
17381749 ; LINUX-32-PIC: ixd00:
1739 ; LINUX-32-PIC: movl 4(%esp), %eax
1740 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
1741 ; LINUX-32-PIC-NEXT: movl %ecx, xdst(,%eax,4)
1750 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
1751 ; LINUX-32-PIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
1752 ; LINUX-32-PIC-NEXT: movl [[ECX]], xdst(,[[EAX]],4)
17421753 ; LINUX-32-PIC-NEXT: ret
17431754
17441755 ; LINUX-64-PIC: ixd00:
1745 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1746 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1747 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
1748 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1756 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1757 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1758 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), [[RCX:%r.x]]
1759 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17491760 ; LINUX-64-PIC-NEXT: ret
17501761
17511762 ; DARWIN-32-STATIC: _ixd00:
1752 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1753 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
1754 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)
1763 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1764 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,[[EAX]],4), [[ECX:%e.x]]
1765 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], _xdst(,[[EAX]],4)
17551766 ; DARWIN-32-STATIC-NEXT: ret
17561767
17571768 ; DARWIN-32-DYNAMIC: _ixd00:
1758 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1759 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
1760 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1761 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
1762 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1769 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
1770 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
1771 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
1772 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, [[EDX:%e.x]]
1773 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
17631774 ; DARWIN-32-DYNAMIC-NEXT: ret
17641775
17651776 ; DARWIN-32-PIC: _ixd00:
17661777 ; DARWIN-32-PIC: calll L25$pb
17671778 ; DARWIN-32-PIC-NEXT: L25$pb:
1768 ; DARWIN-32-PIC-NEXT: popl %eax
1769 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1770 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx
1771 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1772 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax
1773 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1779 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1780 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
1781 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb([[EAX]]), [[EDX:%e.x]]
1782 ; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
1783 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb([[EAX]]), [[EAX:%e.x]]
1784 ; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
17741785 ; DARWIN-32-PIC-NEXT: ret
17751786
17761787 ; DARWIN-64-STATIC: _ixd00:
1777 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1778 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1779 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1780 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1788 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1789 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1790 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
1791 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17811792 ; DARWIN-64-STATIC-NEXT: ret
17821793
17831794 ; DARWIN-64-DYNAMIC: _ixd00:
1784 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1785 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1786 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1787 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1795 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1796 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1797 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
1798 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17881799 ; DARWIN-64-DYNAMIC-NEXT: ret
17891800
17901801 ; DARWIN-64-PIC: _ixd00:
1791 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1792 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1793 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1794 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1802 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
1803 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1804 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), [[RCX:%r.x]]
1805 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
17951806 ; DARWIN-64-PIC-NEXT: ret
17961807 }
17971808
18011812 store i32* %0, i32** @ptr, align 8
18021813 ret void
18031814 ; LINUX-64-STATIC: ind01:
1804 ; LINUX-64-STATIC: leaq dst(,%rdi,4), %rax
1805 ; LINUX-64-STATIC: movq %rax, ptr
1815 ; LINUX-64-STATIC: leaq dst(,%rdi,4), [[RAX:%r.x]]
1816 ; LINUX-64-STATIC: movq [[RAX]], ptr
18061817 ; LINUX-64-STATIC: ret
18071818
18081819 ; LINUX-32-STATIC: ind01:
1809 ; LINUX-32-STATIC: movl 4(%esp), %eax
1810 ; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax
1811 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1820 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1821 ; LINUX-32-STATIC-NEXT: leal dst(,[[EAX]],4), [[EAX:%e.x]]
1822 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
18121823 ; LINUX-32-STATIC-NEXT: ret
18131824
18141825 ; LINUX-32-PIC: ind01:
1815 ; LINUX-32-PIC: movl 4(%esp), %eax
1816 ; LINUX-32-PIC-NEXT: leal dst(,%eax,4), %eax
1817 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1826 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
1827 ; LINUX-32-PIC-NEXT: leal dst(,[[EAX]],4), [[EAX:%e.x]]
1828 ; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
18181829 ; LINUX-32-PIC-NEXT: ret
18191830
18201831 ; LINUX-64-PIC: ind01:
18211832 ; LINUX-64-PIC: shlq $2, %rdi
18221833 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi
1823 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1824 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1834 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1835 ; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
18251836 ; LINUX-64-PIC-NEXT: ret
18261837
18271838 ; DARWIN-32-STATIC: _ind01:
1828 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1829 ; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax
1830 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1839 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1840 ; DARWIN-32-STATIC-NEXT: leal _dst(,[[EAX]],4), [[EAX:%e.x]]
1841 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
18311842 ; DARWIN-32-STATIC-NEXT: ret
18321843
18331844 ; DARWIN-32-DYNAMIC: _ind01:
1834 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1835 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1836 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
1837 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1838 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1845 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
1846 ; DARWIN-32-DYNAMIC-NEXT: shll $2, [[EAX:%e.x]]
1847 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, [[EAX:%e.x]]
1848 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1849 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
18391850 ; DARWIN-32-DYNAMIC-NEXT: ret
18401851
18411852 ; DARWIN-32-PIC: _ind01:
18421853 ; DARWIN-32-PIC: calll L26$pb
18431854 ; DARWIN-32-PIC-NEXT: L26$pb:
1844 ; DARWIN-32-PIC-NEXT: popl %eax
1845 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1846 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1847 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx
1848 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax
1849 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1855 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1856 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
1857 ; DARWIN-32-PIC-NEXT: shll $2, [[ECX:%e.x]]
1858 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb([[EAX]]), [[ECX:%e.x]]
1859 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb([[EAX]]), [[EAX:%e.x]]
1860 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
18501861 ; DARWIN-32-PIC-NEXT: ret
18511862
18521863 ; DARWIN-64-STATIC: _ind01:
18531864 ; DARWIN-64-STATIC: shlq $2, %rdi
18541865 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1855 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1856 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1866 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1867 ; DARWIN-64-STATIC-NEXT: movq %rdi, ([[RAX]])
18571868 ; DARWIN-64-STATIC-NEXT: ret
18581869
18591870 ; DARWIN-64-DYNAMIC: _ind01:
18601871 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
18611872 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1862 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1863 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1873 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1874 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, ([[RAX]])
18641875 ; DARWIN-64-DYNAMIC-NEXT: ret
18651876
18661877 ; DARWIN-64-PIC: _ind01:
18671878 ; DARWIN-64-PIC: shlq $2, %rdi
18681879 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1869 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1870 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1880 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1881 ; DARWIN-64-PIC-NEXT: movq %rdi, ([[RAX]])
18711882 ; DARWIN-64-PIC-NEXT: ret
18721883 }
18731884
18771888 store i32* %0, i32** @ptr, align 8
18781889 ret void
18791890 ; LINUX-64-STATIC: ixd01:
1880 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), %rax
1881 ; LINUX-64-STATIC: movq %rax, ptr
1891 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), [[RAX:%r.x]]
1892 ; LINUX-64-STATIC: movq [[RAX]], ptr
18821893 ; LINUX-64-STATIC: ret
18831894
18841895 ; LINUX-32-STATIC: ixd01:
1885 ; LINUX-32-STATIC: movl 4(%esp), %eax
1886 ; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax
1887 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1896 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1897 ; LINUX-32-STATIC-NEXT: leal xdst(,[[EAX]],4), [[EAX:%e.x]]
1898 ; LINUX-32-STATIC-NEXT: movl [[EAX]], ptr
18881899 ; LINUX-32-STATIC-NEXT: ret
18891900
18901901 ; LINUX-32-PIC: ixd01:
1891 ; LINUX-32-PIC: movl 4(%esp), %eax
1892 ; LINUX-32-PIC-NEXT: leal xdst(,%eax,4), %eax
1893 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1902 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
1903 ; LINUX-32-PIC-NEXT: leal xdst(,[[EAX]],4), [[EAX:%e.x]]
1904 ; LINUX-32-PIC-NEXT: movl [[EAX]], ptr
18941905 ; LINUX-32-PIC-NEXT: ret
18951906
18961907 ; LINUX-64-PIC: ixd01:
18971908 ; LINUX-64-PIC: shlq $2, %rdi
18981909 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi
1899 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1900 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1910 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1911 ; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
19011912 ; LINUX-64-PIC-NEXT: ret
19021913
19031914 ; DARWIN-32-STATIC: _ixd01:
1904 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1905 ; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax
1906 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1915 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1916 ; DARWIN-32-STATIC-NEXT: leal _xdst(,[[EAX]],4), [[EAX:%e.x]]
1917 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _ptr
19071918 ; DARWIN-32-STATIC-NEXT: ret
19081919
19091920 ; DARWIN-32-DYNAMIC: _ixd01:
1910 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1911 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1912 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
1913 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1914 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1921 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
1922 ; DARWIN-32-DYNAMIC-NEXT: shll $2, [[EAX:%e.x]]
1923 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, [[EAX:%e.x]]
1924 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[ECX:%e.x]]
1925 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], ([[ECX]])
19151926 ; DARWIN-32-DYNAMIC-NEXT: ret
19161927
19171928 ; DARWIN-32-PIC: _ixd01:
19181929 ; DARWIN-32-PIC: calll L27$pb
19191930 ; DARWIN-32-PIC-NEXT: L27$pb:
1920 ; DARWIN-32-PIC-NEXT: popl %eax
1921 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1922 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1923 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx
1924 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax
1925 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1931 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
1932 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
1933 ; DARWIN-32-PIC-NEXT: shll $2, [[ECX:%e.x]]
1934 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb([[EAX]]), [[ECX:%e.x]]
1935 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb([[EAX]]), [[EAX:%e.x]]
1936 ; DARWIN-32-PIC-NEXT: movl [[ECX]], ([[EAX]])
19261937 ; DARWIN-32-PIC-NEXT: ret
19271938
19281939 ; DARWIN-64-STATIC: _ixd01:
19291940 ; DARWIN-64-STATIC: shlq $2, %rdi
19301941 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1931 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1932 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1942 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1943 ; DARWIN-64-STATIC-NEXT: movq %rdi, ([[RAX]])
19331944 ; DARWIN-64-STATIC-NEXT: ret
19341945
19351946 ; DARWIN-64-DYNAMIC: _ixd01:
19361947 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
19371948 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1938 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1939 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1949 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1950 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, ([[RAX]])
19401951 ; DARWIN-64-DYNAMIC-NEXT: ret
19411952
19421953 ; DARWIN-64-PIC: _ixd01:
19431954 ; DARWIN-64-PIC: shlq $2, %rdi
19441955 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1945 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1946 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1956 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RAX:%r.x]]
1957 ; DARWIN-64-PIC-NEXT: movq %rdi, ([[RAX]])
19471958 ; DARWIN-64-PIC-NEXT: ret
19481959 }
19491960
19561967 store i32 %2, i32* %3, align 4
19571968 ret void
19581969 ; LINUX-64-STATIC: ind02:
1959 ; LINUX-64-STATIC: movl src(,%rdi,4), %eax
1960 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1961 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
1970 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]]
1971 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
1972 ; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
19621973 ; LINUX-64-STATIC: ret
19631974
19641975 ; LINUX-32-STATIC: ind02:
1965 ; LINUX-32-STATIC: movl 4(%esp), %eax
1966 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1967 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
1968 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1976 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1977 ; LINUX-32-STATIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
1978 ; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
1979 ; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
19691980 ; LINUX-32-STATIC-NEXT: ret
19701981
19711982 ; LINUX-32-PIC: ind02:
1972 ; LINUX-32-PIC: movl 4(%esp), %eax
1973 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1974 ; LINUX-32-PIC-NEXT: movl ptr, %edx
1975 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
1983 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
1984 ; LINUX-32-PIC-NEXT: movl src(,[[EAX]],4), [[ECX:%e.x]]
1985 ; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
1986 ; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
19761987 ; LINUX-32-PIC-NEXT: ret
19771988
19781989 ; LINUX-64-PIC: ind02:
1979 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1980 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1981 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1982 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1983 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1990 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), [[RAX:%r.x]]
1991 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
1992 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
1993 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
1994 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
19841995 ; LINUX-64-PIC-NEXT: ret
19851996
19861997 ; DARWIN-32-STATIC: _ind02:
1987 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1988 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1989 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
1990 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1998 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
1999 ; DARWIN-32-STATIC-NEXT: movl _src(,[[EAX]],4), [[ECX:%e.x]]
2000 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
2001 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
19912002 ; DARWIN-32-STATIC-NEXT: ret
19922003
19932004 ; DARWIN-32-DYNAMIC: _ind02:
1994 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1995 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1996 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1997 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
1998 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
1999 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2005 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2006 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, [[ECX:%e.x]]
2007 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
2008 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
2009 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
2010 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
20002011 ; DARWIN-32-DYNAMIC-NEXT: ret
20012012
20022013 ; DARWIN-32-PIC: _ind02:
20032014 ; DARWIN-32-PIC: calll L28$pb
20042015 ; DARWIN-32-PIC-NEXT: L28$pb:
2005 ; DARWIN-32-PIC-NEXT: popl %eax
2006 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2007 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx
2008 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2009 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax
2010 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2011 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2016 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2017 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2018 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb([[EAX]]), [[EDX:%e.x]]
2019 ; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
2020 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb([[EAX]]), [[EAX:%e.x]]
2021 ; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
2022 ; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
20122023 ; DARWIN-32-PIC-NEXT: ret
20132024
20142025 ; DARWIN-64-STATIC: _ind02:
2015 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2016 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2017 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2018 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2019 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2026 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
2027 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2028 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2029 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2030 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
20202031 ; DARWIN-64-STATIC-NEXT: ret
20212032
20222033 ; DARWIN-64-DYNAMIC: _ind02:
2023 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2024 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2025 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2026 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2027 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2034 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
2035 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2036 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2037 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2038 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
20282039 ; DARWIN-64-DYNAMIC-NEXT: ret
20292040
20302041 ; DARWIN-64-PIC: _ind02:
2031 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2032 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2033 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2034 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2035 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2042 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), [[RAX:%r.x]]
2043 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2044 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2045 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2046 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
20362047 ; DARWIN-64-PIC-NEXT: ret
20372048 }
20382049
20452056 store i32 %2, i32* %3, align 4
20462057 ret void
20472058 ; LINUX-64-STATIC: ixd02:
2048 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
2049 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
2050 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
2059 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]]
2060 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]]
2061 ; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
20512062 ; LINUX-64-STATIC: ret
20522063
20532064 ; LINUX-32-STATIC: ixd02:
2054 ; LINUX-32-STATIC: movl 4(%esp), %eax
2055 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
2056 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2057 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2065 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2066 ; LINUX-32-STATIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
2067 ; LINUX-32-STATIC-NEXT: movl ptr, [[EDX:%e.x]]
2068 ; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
20582069 ; LINUX-32-STATIC-NEXT: ret
20592070
20602071 ; LINUX-32-PIC: ixd02:
2061 ; LINUX-32-PIC: movl 4(%esp), %eax
2062 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
2063 ; LINUX-32-PIC-NEXT: movl ptr, %edx
2064 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2072 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
2073 ; LINUX-32-PIC-NEXT: movl xsrc(,[[EAX]],4), [[ECX:%e.x]]
2074 ; LINUX-32-PIC-NEXT: movl ptr, [[EDX:%e.x]]
2075 ; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
20652076 ; LINUX-32-PIC-NEXT: ret
20662077
20672078 ; LINUX-64-PIC: ixd02:
2068 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
2069 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2070 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2071 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2072 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2079 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2080 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2081 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2082 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2083 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
20732084 ; LINUX-64-PIC-NEXT: ret
20742085
20752086 ; DARWIN-32-STATIC: _ixd02:
2076 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2077 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
2078 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2079 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2087 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2088 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,[[EAX]],4), [[ECX:%e.x]]
2089 ; DARWIN-32-STATIC-NEXT: movl _ptr, [[EDX:%e.x]]
2090 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
20802091 ; DARWIN-32-STATIC-NEXT: ret
20812092
20822093 ; DARWIN-32-DYNAMIC: _ixd02:
2083 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2084 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2085 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2086 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2087 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2088 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2094 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2095 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
2096 ; DARWIN-32-DYNAMIC-NEXT: movl ([[ECX]],[[EAX]],4), [[ECX:%e.x]]
2097 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, [[EDX:%e.x]]
2098 ; DARWIN-32-DYNAMIC-NEXT: movl ([[EDX]]), [[EDX:%e.x]]
2099 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
20892100 ; DARWIN-32-DYNAMIC-NEXT: ret
20902101
20912102 ; DARWIN-32-PIC: _ixd02:
20922103 ; DARWIN-32-PIC: calll L29$pb
20932104 ; DARWIN-32-PIC-NEXT: L29$pb:
2094 ; DARWIN-32-PIC-NEXT: popl %eax
2095 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2096 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx
2097 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2098 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax
2099 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2100 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2105 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2106 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2107 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb([[EAX]]), [[EDX:%e.x]]
2108 ; DARWIN-32-PIC-NEXT: movl ([[EDX]],[[ECX]],4), [[EDX:%e.x]]
2109 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb([[EAX]]), [[EAX:%e.x]]
2110 ; DARWIN-32-PIC-NEXT: movl ([[EAX]]), [[EAX:%e.x]]
2111 ; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
21012112 ; DARWIN-32-PIC-NEXT: ret
21022113
21032114 ; DARWIN-64-STATIC: _ixd02:
2104 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
2105 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2106 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2107 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2108 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2115 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2116 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2117 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2118 ; DARWIN-64-STATIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2119 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21092120 ; DARWIN-64-STATIC-NEXT: ret
21102121
21112122 ; DARWIN-64-DYNAMIC: _ixd02:
2112 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
2113 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2114 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2115 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2116 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2123 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2124 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2125 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2126 ; DARWIN-64-DYNAMIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2127 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21172128 ; DARWIN-64-DYNAMIC-NEXT: ret
21182129
21192130 ; DARWIN-64-PIC: _ixd02:
2120 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
2121 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2122 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2123 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2124 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2131 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2132 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2133 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), [[RCX:%r.x]]
2134 ; DARWIN-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2135 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21252136 ; DARWIN-64-PIC-NEXT: ret
21262137 }
21272138
21332144 store i32 %1, i32* %2, align 4
21342145 ret void
21352146 ; LINUX-64-STATIC: ind03:
2136 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
2137 ; LINUX-64-STATIC: movl %eax, ddst(,%rdi,4)
2147 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]]
2148 ; LINUX-64-STATIC: movl [[EAX]], ddst(,%rdi,4)
21382149 ; LINUX-64-STATIC: ret
21392150
21402151 ; LINUX-32-STATIC: ind03:
2141 ; LINUX-32-STATIC: movl 4(%esp), %eax
2142 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2143 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)
2152 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2153 ; LINUX-32-STATIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
2154 ; LINUX-32-STATIC-NEXT: movl [[ECX]], ddst(,[[EAX]],4)
21442155 ; LINUX-32-STATIC-NEXT: ret
21452156
21462157 ; LINUX-32-PIC: ind03:
2147 ; LINUX-32-PIC: movl 4(%esp), %eax
2148 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2149 ; LINUX-32-PIC-NEXT: movl %ecx, ddst(,%eax,4)
2158 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
2159 ; LINUX-32-PIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
2160 ; LINUX-32-PIC-NEXT: movl [[ECX]], ddst(,[[EAX]],4)
21502161 ; LINUX-32-PIC-NEXT: ret
21512162
21522163 ; LINUX-64-PIC: ind03:
2153 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2154 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2155 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
2156 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2164 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2165 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2166 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), [[RCX:%r.x]]
2167 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21572168 ; LINUX-64-PIC-NEXT: ret
21582169
21592170 ; DARWIN-32-STATIC: _ind03:
2160 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2161 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2162 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)
2171 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2172 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
2173 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ddst(,[[EAX]],4)
21632174 ; DARWIN-32-STATIC-NEXT: ret
21642175
21652176 ; DARWIN-32-DYNAMIC: _ind03:
2166 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2167 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2168 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)
2177 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2178 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
2179 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ddst(,[[EAX]],4)
21692180 ; DARWIN-32-DYNAMIC-NEXT: ret
21702181
21712182 ; DARWIN-32-PIC: _ind03:
21722183 ; DARWIN-32-PIC: calll L30$pb
21732184 ; DARWIN-32-PIC-NEXT: L30$pb:
2174 ; DARWIN-32-PIC-NEXT: popl %eax
2175 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2176 ; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx
2177 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4)
2185 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2186 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2187 ; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
2188 ; DARWIN-32-PIC-NEXT: movl [[EDX]], _ddst-L30$pb([[EAX]],[[ECX]],4)
21782189 ; DARWIN-32-PIC-NEXT: ret
21792190
21802191 ; DARWIN-64-STATIC: _ind03:
2181 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2182 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2183 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
2184 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2192 ; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2193 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2194 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
2195 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21852196 ; DARWIN-64-STATIC-NEXT: ret
21862197
21872198 ; DARWIN-64-DYNAMIC: _ind03:
2188 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2189 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2190 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
2191 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2199 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2200 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2201 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
2202 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21922203 ; DARWIN-64-DYNAMIC-NEXT: ret
21932204
21942205 ; DARWIN-64-PIC: _ind03:
2195 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2196 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2197 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
2198 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2206 ; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2207 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2208 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), [[RCX:%r.x]]
2209 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
21992210 ; DARWIN-64-PIC-NEXT: ret
22002211 }
22012212
22052216 store i32* %0, i32** @dptr, align 8
22062217 ret void
22072218 ; LINUX-64-STATIC: ind04:
2208 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), %rax
2209 ; LINUX-64-STATIC: movq %rax, dptr
2219 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), [[RAX:%r.x]]
2220 ; LINUX-64-STATIC: movq [[RAX]], dptr
22102221 ; LINUX-64-STATIC: ret
22112222
22122223 ; LINUX-32-STATIC: ind04:
2213 ; LINUX-32-STATIC: movl 4(%esp), %eax
2214 ; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax
2215 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
2224 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2225 ; LINUX-32-STATIC-NEXT: leal ddst(,[[EAX]],4), [[EAX:%e.x]]
2226 ; LINUX-32-STATIC-NEXT: movl [[EAX]], dptr
22162227 ; LINUX-32-STATIC-NEXT: ret
22172228
22182229 ; LINUX-32-PIC: ind04:
2219 ; LINUX-32-PIC: movl 4(%esp), %eax
2220 ; LINUX-32-PIC-NEXT: leal ddst(,%eax,4), %eax
2221 ; LINUX-32-PIC-NEXT: movl %eax, dptr
2230 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
2231 ; LINUX-32-PIC-NEXT: leal ddst(,[[EAX]],4), [[EAX:%e.x]]
2232 ; LINUX-32-PIC-NEXT: movl [[EAX]], dptr
22222233 ; LINUX-32-PIC-NEXT: ret
22232234
22242235 ; LINUX-64-PIC: ind04:
22252236 ; LINUX-64-PIC: shlq $2, %rdi
22262237 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi
2227 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
2228 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2238 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RAX:%r.x]]
2239 ; LINUX-64-PIC-NEXT: movq %rdi, ([[RAX]])
22292240 ; LINUX-64-PIC-NEXT: ret
22302241
22312242 ; DARWIN-32-STATIC: _ind04:
2232 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2233 ; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax
2234 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
2243 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2244 ; DARWIN-32-STATIC-NEXT: leal _ddst(,[[EAX]],4), [[EAX:%e.x]]
2245 ; DARWIN-32-STATIC-NEXT: movl [[EAX]], _dptr
22352246 ; DARWIN-32-STATIC-NEXT: ret
22362247
22372248 ; DARWIN-32-DYNAMIC: _ind04:
2238 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2239 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax
2240 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
2249 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2250 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,[[EAX]],4), [[EAX:%e.x]]
2251 ; DARWIN-32-DYNAMIC-NEXT: movl [[EAX]], _dptr
22412252 ; DARWIN-32-DYNAMIC-NEXT: ret
22422253
22432254 ; DARWIN-32-PIC: _ind04:
22442255 ; DARWIN-32-PIC: calll L31$pb
22452256 ; DARWIN-32-PIC-NEXT: L31$pb:
2246 ; DARWIN-32-PIC-NEXT: popl %eax
2247 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2248 ; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx
2249 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax)
2257 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2258 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2259 ; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
2260 ; DARWIN-32-PIC-NEXT: movl [[ECX]], _dptr-L31$pb([[EAX]])
22502261 ; DARWIN-32-PIC-NEXT: ret
22512262
22522263 ; DARWIN-64-STATIC: _ind04:
2253 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
2254 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2255 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
2264 ; DARWIN-64-STATIC: leaq _ddst(%rip), [[RAX:%r.x]]
2265 ; DARWIN-64-STATIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
2266 ; DARWIN-64-STATIC-NEXT: movq [[RAX]], _dptr(%rip)
22562267 ; DARWIN-64-STATIC-NEXT: ret
22572268
22582269 ; DARWIN-64-DYNAMIC: _ind04:
2259 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
2260 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2261 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
2270 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), [[RAX:%r.x]]
2271 ; DARWIN-64-DYNAMIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
2272 ; DARWIN-64-DYNAMIC-NEXT: movq [[RAX]], _dptr(%rip)
22622273 ; DARWIN-64-DYNAMIC-NEXT: ret
22632274
22642275 ; DARWIN-64-PIC: _ind04:
2265 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
2266 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2267 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
2276 ; DARWIN-64-PIC: leaq _ddst(%rip), [[RAX:%r.x]]
2277 ; DARWIN-64-PIC-NEXT: leaq ([[RAX]],%rdi,4), [[RAX:%r.x]]
2278 ; DARWIN-64-PIC-NEXT: movq [[RAX]], _dptr(%rip)
22682279 ; DARWIN-64-PIC-NEXT: ret
22692280 }
22702281
22772288 store i32 %2, i32* %3, align 4
22782289 ret void
22792290 ; LINUX-64-STATIC: ind05:
2280 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
2281 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
2282 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
2291 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]]
2292 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]]
2293 ; LINUX-64-STATIC: movl [[EAX]], ([[RCX]],%rdi,4)
22832294 ; LINUX-64-STATIC: ret
22842295
22852296 ; LINUX-32-STATIC: ind05:
2286 ; LINUX-32-STATIC: movl 4(%esp), %eax
2287 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2288 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
2289 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2297 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2298 ; LINUX-32-STATIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
2299 ; LINUX-32-STATIC-NEXT: movl dptr, [[EDX:%e.x]]
2300 ; LINUX-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
22902301 ; LINUX-32-STATIC-NEXT: ret
22912302
22922303 ; LINUX-32-PIC: ind05:
2293 ; LINUX-32-PIC: movl 4(%esp), %eax
2294 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2295 ; LINUX-32-PIC-NEXT: movl dptr, %edx
2296 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2304 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
2305 ; LINUX-32-PIC-NEXT: movl dsrc(,[[EAX]],4), [[ECX:%e.x]]
2306 ; LINUX-32-PIC-NEXT: movl dptr, [[EDX:%e.x]]
2307 ; LINUX-32-PIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
22972308 ; LINUX-32-PIC-NEXT: ret
22982309
22992310 ; LINUX-64-PIC: ind05:
2300 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2301 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2302 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
2303 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2304 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2311 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
2312 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2313 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), [[RCX:%r.x]]
2314 ; LINUX-64-PIC-NEXT: movq ([[RCX]]), [[RCX:%r.x]]
2315 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
23052316 ; LINUX-64-PIC-NEXT: ret
23062317
23072318 ; DARWIN-32-STATIC: _ind05:
2308 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2309 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2310 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
2311 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2319 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2320 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
2321 ; DARWIN-32-STATIC-NEXT: movl _dptr, [[EDX:%e.x]]
2322 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
23122323 ; DARWIN-32-STATIC-NEXT: ret
23132324
23142325 ; DARWIN-32-DYNAMIC: _ind05:
2315 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2316 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2317 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
2318 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2326 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2327 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,[[EAX]],4), [[ECX:%e.x]]
2328 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, [[EDX:%e.x]]
2329 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], ([[EDX]],[[EAX]],4)
23192330 ; DARWIN-32-DYNAMIC-NEXT: ret
23202331
23212332 ; DARWIN-32-PIC: _ind05:
23222333 ; DARWIN-32-PIC: calll L32$pb
23232334 ; DARWIN-32-PIC-NEXT: L32$pb:
2324 ; DARWIN-32-PIC-NEXT: popl %eax
2325 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2326 ; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx
2327 ; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax
2328 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2335 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2336 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2337 ; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
2338 ; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb([[EAX]]), [[EAX:%e.x]]
2339 ; DARWIN-32-PIC-NEXT: movl [[EDX]], ([[EAX]],[[ECX]],4)
23292340 ; DARWIN-32-PIC-NEXT: ret
23302341
23312342 ; DARWIN-64-STATIC: _ind05:
2332 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2333 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2334 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
2335 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2343 ; DARWIN-64-STATIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2344 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2345 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
2346 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
23362347 ; DARWIN-64-STATIC-NEXT: ret
23372348
23382349 ; DARWIN-64-DYNAMIC: _ind05:
2339 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2340 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2341 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
2342 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2350 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2351 ; DARWIN-64-DYNAMIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2352 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
2353 ; DARWIN-64-DYNAMIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
23432354 ; DARWIN-64-DYNAMIC-NEXT: ret
23442355
23452356 ; DARWIN-64-PIC: _ind05:
2346 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2347 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2348 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
2349 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2357 ; DARWIN-64-PIC: leaq _dsrc(%rip), [[RAX:%r.x]]
2358 ; DARWIN-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2359 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), [[RCX:%r.x]]
2360 ; DARWIN-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
23502361 ; DARWIN-64-PIC-NEXT: ret
23512362 }
23522363
23582369 store i32 %1, i32* %2, align 4
23592370 ret void
23602371 ; LINUX-64-STATIC: ind06:
2361 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
2362 ; LINUX-64-STATIC: movl %eax, ldst(,%rdi,4)
2372 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]]
2373 ; LINUX-64-STATIC: movl [[EAX]], ldst(,%rdi,4)
23632374 ; LINUX-64-STATIC: ret
23642375
23652376 ; LINUX-32-STATIC: ind06:
2366 ; LINUX-32-STATIC: movl 4(%esp), %eax
2367 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2368 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)
2377 ; LINUX-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2378 ; LINUX-32-STATIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
2379 ; LINUX-32-STATIC-NEXT: movl [[ECX]], ldst(,[[EAX]],4)
23692380 ; LINUX-32-STATIC-NEXT: ret
23702381
23712382 ; LINUX-32-PIC: ind06:
2372 ; LINUX-32-PIC: movl 4(%esp), %eax
2373 ; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
2374 ; LINUX-32-PIC-NEXT: movl %ecx, ldst(,%eax,4)
2383 ; LINUX-32-PIC: movl 4(%esp), [[EAX:%e.x]]
2384 ; LINUX-32-PIC-NEXT: movl lsrc(,[[EAX]],4), [[ECX:%e.x]]
2385 ; LINUX-32-PIC-NEXT: movl [[ECX]], ldst(,[[EAX]],4)
23752386 ; LINUX-32-PIC-NEXT: ret
23762387
23772388 ; LINUX-64-PIC: ind06:
2378 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
2379 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2380 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
2381 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2389 ; LINUX-64-PIC: leaq lsrc(%rip), [[RAX:%r.x]]
2390 ; LINUX-64-PIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2391 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), [[RCX:%r.x]]
2392 ; LINUX-64-PIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
23822393 ; LINUX-64-PIC-NEXT: ret
23832394
23842395 ; DARWIN-32-STATIC: _ind06:
2385 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2386 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2387 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)
2396 ; DARWIN-32-STATIC: movl 4(%esp), [[EAX:%e.x]]
2397 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
2398 ; DARWIN-32-STATIC-NEXT: movl [[ECX]], _ldst(,[[EAX]],4)
23882399 ; DARWIN-32-STATIC-NEXT: ret
23892400
23902401 ; DARWIN-32-DYNAMIC: _ind06:
2391 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2392 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2393 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)
2402 ; DARWIN-32-DYNAMIC: movl 4(%esp), [[EAX:%e.x]]
2403 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,[[EAX]],4), [[ECX:%e.x]]
2404 ; DARWIN-32-DYNAMIC-NEXT: movl [[ECX]], _ldst(,[[EAX]],4)
23942405 ; DARWIN-32-DYNAMIC-NEXT: ret
23952406
23962407 ; DARWIN-32-PIC: _ind06:
23972408 ; DARWIN-32-PIC: calll L33$pb
23982409 ; DARWIN-32-PIC-NEXT: L33$pb:
2399 ; DARWIN-32-PIC-NEXT: popl %eax
2400 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2401 ; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx
2402 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4)
2410 ; DARWIN-32-PIC-NEXT: popl [[EAX:%e.x]]
2411 ; DARWIN-32-PIC-NEXT: movl 4(%esp), [[ECX:%e.x]]
2412 ; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
2413 ; DARWIN-32-PIC-NEXT: movl [[EDX]], _ldst-L33$pb([[EAX]],[[ECX]],4)
24032414 ; DARWIN-32-PIC-NEXT: ret
24042415
24052416 ; DARWIN-64-STATIC: _ind06:
2406 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
2407 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2408 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
2409 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2417 ; DARWIN-64-STATIC: leaq _lsrc(%rip), [[RAX:%r.x]]
2418 ; DARWIN-64-STATIC-NEXT: movl ([[RAX]],%rdi,4), [[EAX:%e.x]]
2419 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), [[RCX:%r.x]]
2420 ; DARWIN-64-STATIC-NEXT: movl [[EAX]], ([[RCX]],%rdi,4)
24102421 ; DARWIN-64-STATIC-NEXT: ret
24112422
24122423 ; DARWIN-64-DYNAMIC: _ind06:
2413 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
2414 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2415 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
2416 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2424