1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; NOTE: Use the --no_x86_scrub_rip additional argument to keep the rip address math.
4 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC
5 ; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC
6 ; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC
7 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC
9 ; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC
10 ; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin9 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
11 ; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin9 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC
13 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-STATIC
14 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
15 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-PIC
17 @src = external global [131072 x i32]
18 @dst = external global [131072 x i32]
19 @xsrc = external global [32 x i32]
20 @xdst = external global [32 x i32]
21 @ptr = external global i32*
22 @dsrc = global [131072 x i32] zeroinitializer, align 32
23 @ddst = global [131072 x i32] zeroinitializer, align 32
24 @dptr = global i32* null
25 @lsrc = internal global [131072 x i32] zeroinitializer
26 @ldst = internal global [131072 x i32] zeroinitializer
27 @lptr = internal global i32* null
28 @ifunc = external global void ()*
29 @difunc = global void ()* null
30 @lifunc = internal global void ()* null
31 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
32 @lxdst = internal global [32 x i32] zeroinitializer, align 32
33 @dxsrc = global [32 x i32] zeroinitializer, align 32
34 @dxdst = global [32 x i32] zeroinitializer, align 32
36 define void @foo00() nounwind {
37 ; LINUX-64-STATIC-LABEL: foo00:
38 ; LINUX-64-STATIC: # %bb.0: # %entry
39 ; LINUX-64-STATIC-NEXT: movl src(%rip), %eax
40 ; LINUX-64-STATIC-NEXT: movl %eax, dst(%rip)
41 ; LINUX-64-STATIC-NEXT: retq
43 ; LINUX-32-STATIC-LABEL: foo00:
44 ; LINUX-32-STATIC: # %bb.0: # %entry
45 ; LINUX-32-STATIC-NEXT: movl src, %eax
46 ; LINUX-32-STATIC-NEXT: movl %eax, dst
47 ; LINUX-32-STATIC-NEXT: retl
49 ; LINUX-32-PIC-LABEL: foo00:
50 ; LINUX-32-PIC: # %bb.0: # %entry
51 ; LINUX-32-PIC-NEXT: calll .L0$pb
52 ; LINUX-32-PIC-NEXT: .L0$pb:
53 ; LINUX-32-PIC-NEXT: popl %eax
54 ; LINUX-32-PIC-NEXT: .Ltmp0:
55 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax
56 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
57 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
58 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
59 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
60 ; LINUX-32-PIC-NEXT: retl
62 ; LINUX-64-PIC-LABEL: foo00:
63 ; LINUX-64-PIC: # %bb.0: # %entry
64 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
65 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
66 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
67 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
68 ; LINUX-64-PIC-NEXT: retq
70 ; DARWIN-32-STATIC-LABEL: foo00:
71 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
72 ; DARWIN-32-STATIC-NEXT: movl _src, %eax
73 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst
74 ; DARWIN-32-STATIC-NEXT: retl
76 ; DARWIN-32-DYNAMIC-LABEL: foo00:
77 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
78 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
79 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
80 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
81 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
82 ; DARWIN-32-DYNAMIC-NEXT: retl
84 ; DARWIN-32-PIC-LABEL: foo00:
85 ; DARWIN-32-PIC: ## %bb.0: ## %entry
86 ; DARWIN-32-PIC-NEXT: calll L0$pb
87 ; DARWIN-32-PIC-NEXT: L0$pb:
88 ; DARWIN-32-PIC-NEXT: popl %eax
89 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx
90 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
91 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax
92 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
93 ; DARWIN-32-PIC-NEXT: retl
95 ; DARWIN-64-STATIC-LABEL: foo00:
96 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
97 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
98 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
99 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
100 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
101 ; DARWIN-64-STATIC-NEXT: retq
103 ; DARWIN-64-DYNAMIC-LABEL: foo00:
104 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
105 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
106 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
107 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
108 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
109 ; DARWIN-64-DYNAMIC-NEXT: retq
111 ; DARWIN-64-PIC-LABEL: foo00:
112 ; DARWIN-64-PIC: ## %bb.0: ## %entry
113 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
114 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
115 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
116 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
117 ; DARWIN-64-PIC-NEXT: retq
120 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
121 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4
126 define void @fxo00() nounwind {
127 ; LINUX-64-STATIC-LABEL: fxo00:
128 ; LINUX-64-STATIC: # %bb.0: # %entry
129 ; LINUX-64-STATIC-NEXT: movl xsrc(%rip), %eax
130 ; LINUX-64-STATIC-NEXT: movl %eax, xdst(%rip)
131 ; LINUX-64-STATIC-NEXT: retq
133 ; LINUX-32-STATIC-LABEL: fxo00:
134 ; LINUX-32-STATIC: # %bb.0: # %entry
135 ; LINUX-32-STATIC-NEXT: movl xsrc, %eax
136 ; LINUX-32-STATIC-NEXT: movl %eax, xdst
137 ; LINUX-32-STATIC-NEXT: retl
139 ; LINUX-32-PIC-LABEL: fxo00:
140 ; LINUX-32-PIC: # %bb.0: # %entry
141 ; LINUX-32-PIC-NEXT: calll .L1$pb
142 ; LINUX-32-PIC-NEXT: .L1$pb:
143 ; LINUX-32-PIC-NEXT: popl %eax
144 ; LINUX-32-PIC-NEXT: .Ltmp1:
145 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax
146 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx
147 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
148 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
149 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
150 ; LINUX-32-PIC-NEXT: retl
152 ; LINUX-64-PIC-LABEL: fxo00:
153 ; LINUX-64-PIC: # %bb.0: # %entry
154 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
155 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
156 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
157 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
158 ; LINUX-64-PIC-NEXT: retq
160 ; DARWIN-32-STATIC-LABEL: fxo00:
161 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
162 ; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax
163 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst
164 ; DARWIN-32-STATIC-NEXT: retl
166 ; DARWIN-32-DYNAMIC-LABEL: fxo00:
167 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
168 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
169 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
170 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
171 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
172 ; DARWIN-32-DYNAMIC-NEXT: retl
174 ; DARWIN-32-PIC-LABEL: fxo00:
175 ; DARWIN-32-PIC: ## %bb.0: ## %entry
176 ; DARWIN-32-PIC-NEXT: calll L1$pb
177 ; DARWIN-32-PIC-NEXT: L1$pb:
178 ; DARWIN-32-PIC-NEXT: popl %eax
179 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx
180 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
181 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax
182 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
183 ; DARWIN-32-PIC-NEXT: retl
185 ; DARWIN-64-STATIC-LABEL: fxo00:
186 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
187 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
188 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
189 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
190 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
191 ; DARWIN-64-STATIC-NEXT: retq
193 ; DARWIN-64-DYNAMIC-LABEL: fxo00:
194 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
195 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
196 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
197 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
198 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
199 ; DARWIN-64-DYNAMIC-NEXT: retq
201 ; DARWIN-64-PIC-LABEL: fxo00:
202 ; DARWIN-64-PIC: ## %bb.0: ## %entry
203 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
204 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
205 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
206 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
207 ; DARWIN-64-PIC-NEXT: retq
210 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
211 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4
216 define void @foo01() nounwind {
217 ; LINUX-64-STATIC-LABEL: foo01:
218 ; LINUX-64-STATIC: # %bb.0: # %entry
219 ; LINUX-64-STATIC-NEXT: movq $dst, ptr(%rip)
220 ; LINUX-64-STATIC-NEXT: retq
222 ; LINUX-32-STATIC-LABEL: foo01:
223 ; LINUX-32-STATIC: # %bb.0: # %entry
224 ; LINUX-32-STATIC-NEXT: movl $dst, ptr
225 ; LINUX-32-STATIC-NEXT: retl
227 ; LINUX-32-PIC-LABEL: foo01:
228 ; LINUX-32-PIC: # %bb.0: # %entry
229 ; LINUX-32-PIC-NEXT: calll .L2$pb
230 ; LINUX-32-PIC-NEXT: .L2$pb:
231 ; LINUX-32-PIC-NEXT: popl %eax
232 ; LINUX-32-PIC-NEXT: .Ltmp2:
233 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax
234 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx
235 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
236 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
237 ; LINUX-32-PIC-NEXT: retl
239 ; LINUX-64-PIC-LABEL: foo01:
240 ; LINUX-64-PIC: # %bb.0: # %entry
241 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
242 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
243 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
244 ; LINUX-64-PIC-NEXT: retq
246 ; DARWIN-32-STATIC-LABEL: foo01:
247 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
248 ; DARWIN-32-STATIC-NEXT: movl $_dst, _ptr
249 ; DARWIN-32-STATIC-NEXT: retl
251 ; DARWIN-32-DYNAMIC-LABEL: foo01:
252 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
253 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax
254 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
255 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
256 ; DARWIN-32-DYNAMIC-NEXT: retl
258 ; DARWIN-32-PIC-LABEL: foo01:
259 ; DARWIN-32-PIC: ## %bb.0: ## %entry
260 ; DARWIN-32-PIC-NEXT: calll L2$pb
261 ; DARWIN-32-PIC-NEXT: L2$pb:
262 ; DARWIN-32-PIC-NEXT: popl %eax
263 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx
264 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax
265 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
266 ; DARWIN-32-PIC-NEXT: retl
268 ; DARWIN-64-STATIC-LABEL: foo01:
269 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
270 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
271 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
272 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
273 ; DARWIN-64-STATIC-NEXT: retq
275 ; DARWIN-64-DYNAMIC-LABEL: foo01:
276 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
277 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
278 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
279 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
280 ; DARWIN-64-DYNAMIC-NEXT: retq
282 ; DARWIN-64-PIC-LABEL: foo01:
283 ; DARWIN-64-PIC: ## %bb.0: ## %entry
284 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
285 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
286 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
287 ; DARWIN-64-PIC-NEXT: retq
290 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
294 define void @fxo01() nounwind {
295 ; LINUX-64-STATIC-LABEL: fxo01:
296 ; LINUX-64-STATIC: # %bb.0: # %entry
297 ; LINUX-64-STATIC-NEXT: movq $xdst, ptr(%rip)
298 ; LINUX-64-STATIC-NEXT: retq
300 ; LINUX-32-STATIC-LABEL: fxo01:
301 ; LINUX-32-STATIC: # %bb.0: # %entry
302 ; LINUX-32-STATIC-NEXT: movl $xdst, ptr
303 ; LINUX-32-STATIC-NEXT: retl
305 ; LINUX-32-PIC-LABEL: fxo01:
306 ; LINUX-32-PIC: # %bb.0: # %entry
307 ; LINUX-32-PIC-NEXT: calll .L3$pb
308 ; LINUX-32-PIC-NEXT: .L3$pb:
309 ; LINUX-32-PIC-NEXT: popl %eax
310 ; LINUX-32-PIC-NEXT: .Ltmp3:
311 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax
312 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx
313 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
314 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
315 ; LINUX-32-PIC-NEXT: retl
317 ; LINUX-64-PIC-LABEL: fxo01:
318 ; LINUX-64-PIC: # %bb.0: # %entry
319 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
320 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
321 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
322 ; LINUX-64-PIC-NEXT: retq
324 ; DARWIN-32-STATIC-LABEL: fxo01:
325 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
326 ; DARWIN-32-STATIC-NEXT: movl $_xdst, _ptr
327 ; DARWIN-32-STATIC-NEXT: retl
329 ; DARWIN-32-DYNAMIC-LABEL: fxo01:
330 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
331 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax
332 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
333 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
334 ; DARWIN-32-DYNAMIC-NEXT: retl
336 ; DARWIN-32-PIC-LABEL: fxo01:
337 ; DARWIN-32-PIC: ## %bb.0: ## %entry
338 ; DARWIN-32-PIC-NEXT: calll L3$pb
339 ; DARWIN-32-PIC-NEXT: L3$pb:
340 ; DARWIN-32-PIC-NEXT: popl %eax
341 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx
342 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax
343 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
344 ; DARWIN-32-PIC-NEXT: retl
346 ; DARWIN-64-STATIC-LABEL: fxo01:
347 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
348 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
349 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
350 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
351 ; DARWIN-64-STATIC-NEXT: retq
353 ; DARWIN-64-DYNAMIC-LABEL: fxo01:
354 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
355 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
356 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
357 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
358 ; DARWIN-64-DYNAMIC-NEXT: retq
360 ; DARWIN-64-PIC-LABEL: fxo01:
361 ; DARWIN-64-PIC: ## %bb.0: ## %entry
362 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
363 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
364 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
365 ; DARWIN-64-PIC-NEXT: retq
368 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
372 define void @foo02() nounwind {
373 ; LINUX-64-STATIC-LABEL: foo02:
374 ; LINUX-64-STATIC: # %bb.0: # %entry
375 ; LINUX-64-STATIC-NEXT: movl src(%rip), %eax
376 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
377 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)
378 ; LINUX-64-STATIC-NEXT: retq
380 ; LINUX-32-STATIC-LABEL: foo02:
381 ; LINUX-32-STATIC: # %bb.0: # %entry
382 ; LINUX-32-STATIC-NEXT: movl src, %eax
383 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
384 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
385 ; LINUX-32-STATIC-NEXT: retl
387 ; LINUX-32-PIC-LABEL: foo02:
388 ; LINUX-32-PIC: # %bb.0: # %entry
389 ; LINUX-32-PIC-NEXT: calll .L4$pb
390 ; LINUX-32-PIC-NEXT: .L4$pb:
391 ; LINUX-32-PIC-NEXT: popl %eax
392 ; LINUX-32-PIC-NEXT: .Ltmp4:
393 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax
394 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
395 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
396 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
397 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
398 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
399 ; LINUX-32-PIC-NEXT: retl
401 ; LINUX-64-PIC-LABEL: foo02:
402 ; LINUX-64-PIC: # %bb.0: # %entry
403 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
404 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
405 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
406 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
407 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
408 ; LINUX-64-PIC-NEXT: retq
410 ; DARWIN-32-STATIC-LABEL: foo02:
411 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
412 ; DARWIN-32-STATIC-NEXT: movl _src, %eax
413 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
414 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
415 ; DARWIN-32-STATIC-NEXT: retl
417 ; DARWIN-32-DYNAMIC-LABEL: foo02:
418 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
419 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
420 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
421 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
422 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
423 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
424 ; DARWIN-32-DYNAMIC-NEXT: retl
426 ; DARWIN-32-PIC-LABEL: foo02:
427 ; DARWIN-32-PIC: ## %bb.0: ## %entry
428 ; DARWIN-32-PIC-NEXT: calll L4$pb
429 ; DARWIN-32-PIC-NEXT: L4$pb:
430 ; DARWIN-32-PIC-NEXT: popl %eax
431 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx
432 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
433 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax
434 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
435 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
436 ; DARWIN-32-PIC-NEXT: retl
438 ; DARWIN-64-STATIC-LABEL: foo02:
439 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
440 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
441 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
442 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
443 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
444 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
445 ; DARWIN-64-STATIC-NEXT: retq
447 ; DARWIN-64-DYNAMIC-LABEL: foo02:
448 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
449 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
450 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
451 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
452 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
453 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
454 ; DARWIN-64-DYNAMIC-NEXT: retq
456 ; DARWIN-64-PIC-LABEL: foo02:
457 ; DARWIN-64-PIC: ## %bb.0: ## %entry
458 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
459 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
460 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
461 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
462 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
463 ; DARWIN-64-PIC-NEXT: retq
466 %0 = load i32*, i32** @ptr, align 8
467 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4
468 store i32 %1, i32* %0, align 4
472 define void @fxo02() nounwind {
473 ; LINUX-64-STATIC-LABEL: fxo02:
474 ; LINUX-64-STATIC: # %bb.0: # %entry
475 ; LINUX-64-STATIC-NEXT: movl xsrc(%rip), %eax
476 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
477 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)
478 ; LINUX-64-STATIC-NEXT: retq
480 ; LINUX-32-STATIC-LABEL: fxo02:
481 ; LINUX-32-STATIC: # %bb.0: # %entry
482 ; LINUX-32-STATIC-NEXT: movl xsrc, %eax
483 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
484 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
485 ; LINUX-32-STATIC-NEXT: retl
487 ; LINUX-32-PIC-LABEL: fxo02:
488 ; LINUX-32-PIC: # %bb.0: # %entry
489 ; LINUX-32-PIC-NEXT: calll .L5$pb
490 ; LINUX-32-PIC-NEXT: .L5$pb:
491 ; LINUX-32-PIC-NEXT: popl %eax
492 ; LINUX-32-PIC-NEXT: .Ltmp5:
493 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax
494 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx
495 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
496 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
497 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
498 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
499 ; LINUX-32-PIC-NEXT: retl
501 ; LINUX-64-PIC-LABEL: fxo02:
502 ; LINUX-64-PIC: # %bb.0: # %entry
503 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
504 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
505 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
506 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
507 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
508 ; LINUX-64-PIC-NEXT: retq
510 ; DARWIN-32-STATIC-LABEL: fxo02:
511 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
512 ; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax
513 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
514 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
515 ; DARWIN-32-STATIC-NEXT: retl
517 ; DARWIN-32-DYNAMIC-LABEL: fxo02:
518 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
519 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
520 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
521 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
522 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
523 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
524 ; DARWIN-32-DYNAMIC-NEXT: retl
526 ; DARWIN-32-PIC-LABEL: fxo02:
527 ; DARWIN-32-PIC: ## %bb.0: ## %entry
528 ; DARWIN-32-PIC-NEXT: calll L5$pb
529 ; DARWIN-32-PIC-NEXT: L5$pb:
530 ; DARWIN-32-PIC-NEXT: popl %eax
531 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx
532 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
533 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax
534 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
535 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
536 ; DARWIN-32-PIC-NEXT: retl
538 ; DARWIN-64-STATIC-LABEL: fxo02:
539 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
540 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
541 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
542 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
543 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
544 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
545 ; DARWIN-64-STATIC-NEXT: retq
547 ; DARWIN-64-DYNAMIC-LABEL: fxo02:
548 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
549 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
550 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
551 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
552 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
553 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
554 ; DARWIN-64-DYNAMIC-NEXT: retq
556 ; DARWIN-64-PIC-LABEL: fxo02:
557 ; DARWIN-64-PIC: ## %bb.0: ## %entry
558 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
559 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
560 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
561 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
562 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
563 ; DARWIN-64-PIC-NEXT: retq
566 %0 = load i32*, i32** @ptr, align 8
567 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4
568 store i32 %1, i32* %0, align 4
572 define void @foo03() nounwind {
573 ; LINUX-64-STATIC-LABEL: foo03:
574 ; LINUX-64-STATIC: # %bb.0: # %entry
575 ; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax
576 ; LINUX-64-STATIC-NEXT: movl %eax, ddst(%rip)
577 ; LINUX-64-STATIC-NEXT: retq
579 ; LINUX-32-STATIC-LABEL: foo03:
580 ; LINUX-32-STATIC: # %bb.0: # %entry
581 ; LINUX-32-STATIC-NEXT: movl dsrc, %eax
582 ; LINUX-32-STATIC-NEXT: movl %eax, ddst
583 ; LINUX-32-STATIC-NEXT: retl
585 ; LINUX-32-PIC-LABEL: foo03:
586 ; LINUX-32-PIC: # %bb.0: # %entry
587 ; LINUX-32-PIC-NEXT: calll .L6$pb
588 ; LINUX-32-PIC-NEXT: .L6$pb:
589 ; LINUX-32-PIC-NEXT: popl %eax
590 ; LINUX-32-PIC-NEXT: .Ltmp6:
591 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax
592 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
593 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
594 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
595 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
596 ; LINUX-32-PIC-NEXT: retl
598 ; LINUX-64-PIC-LABEL: foo03:
599 ; LINUX-64-PIC: # %bb.0: # %entry
600 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
601 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
602 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
603 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
604 ; LINUX-64-PIC-NEXT: retq
606 ; DARWIN-32-STATIC-LABEL: foo03:
607 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
608 ; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax
609 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst
610 ; DARWIN-32-STATIC-NEXT: retl
612 ; DARWIN-32-DYNAMIC-LABEL: foo03:
613 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
614 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax
615 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst
616 ; DARWIN-32-DYNAMIC-NEXT: retl
618 ; DARWIN-32-PIC-LABEL: foo03:
619 ; DARWIN-32-PIC: ## %bb.0: ## %entry
620 ; DARWIN-32-PIC-NEXT: calll L6$pb
621 ; DARWIN-32-PIC-NEXT: L6$pb:
622 ; DARWIN-32-PIC-NEXT: popl %eax
623 ; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx
624 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax)
625 ; DARWIN-32-PIC-NEXT: retl
627 ; DARWIN-64-STATIC-LABEL: foo03:
628 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
629 ; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax
630 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip)
631 ; DARWIN-64-STATIC-NEXT: retq
633 ; DARWIN-64-DYNAMIC-LABEL: foo03:
634 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
635 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax
636 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip)
637 ; DARWIN-64-DYNAMIC-NEXT: retq
639 ; DARWIN-64-PIC-LABEL: foo03:
640 ; DARWIN-64-PIC: ## %bb.0: ## %entry
641 ; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax
642 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip)
643 ; DARWIN-64-PIC-NEXT: retq
646 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
647 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32
651 define void @foo04() nounwind {
652 ; LINUX-64-STATIC-LABEL: foo04:
653 ; LINUX-64-STATIC: # %bb.0: # %entry
654 ; LINUX-64-STATIC-NEXT: movq $ddst, dptr(%rip)
655 ; LINUX-64-STATIC-NEXT: retq
657 ; LINUX-32-STATIC-LABEL: foo04:
658 ; LINUX-32-STATIC: # %bb.0: # %entry
659 ; LINUX-32-STATIC-NEXT: movl $ddst, dptr
660 ; LINUX-32-STATIC-NEXT: retl
662 ; LINUX-32-PIC-LABEL: foo04:
663 ; LINUX-32-PIC: # %bb.0: # %entry
664 ; LINUX-32-PIC-NEXT: calll .L7$pb
665 ; LINUX-32-PIC-NEXT: .L7$pb:
666 ; LINUX-32-PIC-NEXT: popl %eax
667 ; LINUX-32-PIC-NEXT: .Ltmp7:
668 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax
669 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx
670 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
671 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
672 ; LINUX-32-PIC-NEXT: retl
674 ; LINUX-64-PIC-LABEL: foo04:
675 ; LINUX-64-PIC: # %bb.0: # %entry
676 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
677 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
678 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
679 ; LINUX-64-PIC-NEXT: retq
681 ; DARWIN-32-STATIC-LABEL: foo04:
682 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
683 ; DARWIN-32-STATIC-NEXT: movl $_ddst, _dptr
684 ; DARWIN-32-STATIC-NEXT: retl
686 ; DARWIN-32-DYNAMIC-LABEL: foo04:
687 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
688 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, _dptr
689 ; DARWIN-32-DYNAMIC-NEXT: retl
691 ; DARWIN-32-PIC-LABEL: foo04:
692 ; DARWIN-32-PIC: ## %bb.0: ## %entry
693 ; DARWIN-32-PIC-NEXT: calll L7$pb
694 ; DARWIN-32-PIC-NEXT: L7$pb:
695 ; DARWIN-32-PIC-NEXT: popl %eax
696 ; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx
697 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax)
698 ; DARWIN-32-PIC-NEXT: retl
700 ; DARWIN-64-STATIC-LABEL: foo04:
701 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
702 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
703 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
704 ; DARWIN-64-STATIC-NEXT: retq
706 ; DARWIN-64-DYNAMIC-LABEL: foo04:
707 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
708 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
709 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
710 ; DARWIN-64-DYNAMIC-NEXT: retq
712 ; DARWIN-64-PIC-LABEL: foo04:
713 ; DARWIN-64-PIC: ## %bb.0: ## %entry
714 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
715 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
716 ; DARWIN-64-PIC-NEXT: retq
719 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
723 define void @foo05() nounwind {
724 ; LINUX-64-STATIC-LABEL: foo05:
725 ; LINUX-64-STATIC: # %bb.0: # %entry
726 ; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax
727 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
728 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)
729 ; LINUX-64-STATIC-NEXT: retq
731 ; LINUX-32-STATIC-LABEL: foo05:
732 ; LINUX-32-STATIC: # %bb.0: # %entry
733 ; LINUX-32-STATIC-NEXT: movl dsrc, %eax
734 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
735 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
736 ; LINUX-32-STATIC-NEXT: retl
738 ; LINUX-32-PIC-LABEL: foo05:
739 ; LINUX-32-PIC: # %bb.0: # %entry
740 ; LINUX-32-PIC-NEXT: calll .L8$pb
741 ; LINUX-32-PIC-NEXT: .L8$pb:
742 ; LINUX-32-PIC-NEXT: popl %eax
743 ; LINUX-32-PIC-NEXT: .Ltmp8:
744 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax
745 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
746 ; LINUX-32-PIC-NEXT: movl (%ecx), %ecx
747 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
748 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
749 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
750 ; LINUX-32-PIC-NEXT: retl
752 ; LINUX-64-PIC-LABEL: foo05:
753 ; LINUX-64-PIC: # %bb.0: # %entry
754 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
755 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
756 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
757 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
758 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
759 ; LINUX-64-PIC-NEXT: retq
761 ; DARWIN-32-STATIC-LABEL: foo05:
762 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
763 ; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax
764 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
765 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
766 ; DARWIN-32-STATIC-NEXT: retl
768 ; DARWIN-32-DYNAMIC-LABEL: foo05:
769 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
770 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax
771 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
772 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
773 ; DARWIN-32-DYNAMIC-NEXT: retl
775 ; DARWIN-32-PIC-LABEL: foo05:
776 ; DARWIN-32-PIC: ## %bb.0: ## %entry
777 ; DARWIN-32-PIC-NEXT: calll L8$pb
778 ; DARWIN-32-PIC-NEXT: L8$pb:
779 ; DARWIN-32-PIC-NEXT: popl %eax
780 ; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx
781 ; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax
782 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
783 ; DARWIN-32-PIC-NEXT: retl
785 ; DARWIN-64-STATIC-LABEL: foo05:
786 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
787 ; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax
788 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
789 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
790 ; DARWIN-64-STATIC-NEXT: retq
792 ; DARWIN-64-DYNAMIC-LABEL: foo05:
793 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
794 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax
795 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
796 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
797 ; DARWIN-64-DYNAMIC-NEXT: retq
799 ; DARWIN-64-PIC-LABEL: foo05:
800 ; DARWIN-64-PIC: ## %bb.0: ## %entry
801 ; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax
802 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
803 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
804 ; DARWIN-64-PIC-NEXT: retq
807 %0 = load i32*, i32** @dptr, align 8
808 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32
809 store i32 %1, i32* %0, align 4
813 define void @foo06() nounwind {
814 ; LINUX-64-STATIC-LABEL: foo06:
815 ; LINUX-64-STATIC: # %bb.0: # %entry
816 ; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax
817 ; LINUX-64-STATIC-NEXT: movl %eax, ldst(%rip)
818 ; LINUX-64-STATIC-NEXT: retq
820 ; LINUX-32-STATIC-LABEL: foo06:
821 ; LINUX-32-STATIC: # %bb.0: # %entry
822 ; LINUX-32-STATIC-NEXT: movl lsrc, %eax
823 ; LINUX-32-STATIC-NEXT: movl %eax, ldst
824 ; LINUX-32-STATIC-NEXT: retl
826 ; LINUX-32-PIC-LABEL: foo06:
827 ; LINUX-32-PIC: # %bb.0: # %entry
828 ; LINUX-32-PIC-NEXT: calll .L9$pb
829 ; LINUX-32-PIC-NEXT: .L9$pb:
830 ; LINUX-32-PIC-NEXT: popl %eax
831 ; LINUX-32-PIC-NEXT: .Ltmp9:
832 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax
833 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx
834 ; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax)
835 ; LINUX-32-PIC-NEXT: retl
837 ; LINUX-64-PIC-LABEL: foo06:
838 ; LINUX-64-PIC: # %bb.0: # %entry
839 ; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax
840 ; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)
841 ; LINUX-64-PIC-NEXT: retq
843 ; DARWIN-32-STATIC-LABEL: foo06:
844 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
845 ; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax
846 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst
847 ; DARWIN-32-STATIC-NEXT: retl
849 ; DARWIN-32-DYNAMIC-LABEL: foo06:
850 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
851 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax
852 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst
853 ; DARWIN-32-DYNAMIC-NEXT: retl
855 ; DARWIN-32-PIC-LABEL: foo06:
856 ; DARWIN-32-PIC: ## %bb.0: ## %entry
857 ; DARWIN-32-PIC-NEXT: calll L9$pb
858 ; DARWIN-32-PIC-NEXT: L9$pb:
859 ; DARWIN-32-PIC-NEXT: popl %eax
860 ; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx
861 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax)
862 ; DARWIN-32-PIC-NEXT: retl
864 ; DARWIN-64-STATIC-LABEL: foo06:
865 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
866 ; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax
867 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)
868 ; DARWIN-64-STATIC-NEXT: retq
870 ; DARWIN-64-DYNAMIC-LABEL: foo06:
871 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
872 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax
873 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)
874 ; DARWIN-64-DYNAMIC-NEXT: retq
876 ; DARWIN-64-PIC-LABEL: foo06:
877 ; DARWIN-64-PIC: ## %bb.0: ## %entry
878 ; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax
879 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)
880 ; DARWIN-64-PIC-NEXT: retq
883 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
884 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4
888 define void @foo07() nounwind {
889 ; LINUX-64-STATIC-LABEL: foo07:
890 ; LINUX-64-STATIC: # %bb.0: # %entry
891 ; LINUX-64-STATIC-NEXT: movq $ldst, lptr(%rip)
892 ; LINUX-64-STATIC-NEXT: retq
894 ; LINUX-32-STATIC-LABEL: foo07:
895 ; LINUX-32-STATIC: # %bb.0: # %entry
896 ; LINUX-32-STATIC-NEXT: movl $ldst, lptr
897 ; LINUX-32-STATIC-NEXT: retl
899 ; LINUX-32-PIC-LABEL: foo07:
900 ; LINUX-32-PIC: # %bb.0: # %entry
901 ; LINUX-32-PIC-NEXT: calll .L10$pb
902 ; LINUX-32-PIC-NEXT: .L10$pb:
903 ; LINUX-32-PIC-NEXT: popl %eax
904 ; LINUX-32-PIC-NEXT: .Ltmp10:
905 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax
906 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx
907 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
908 ; LINUX-32-PIC-NEXT: retl
910 ; LINUX-64-PIC-LABEL: foo07:
911 ; LINUX-64-PIC: # %bb.0: # %entry
912 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
913 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
914 ; LINUX-64-PIC-NEXT: retq
916 ; DARWIN-32-STATIC-LABEL: foo07:
917 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
918 ; DARWIN-32-STATIC-NEXT: movl $_ldst, _lptr
919 ; DARWIN-32-STATIC-NEXT: retl
921 ; DARWIN-32-DYNAMIC-LABEL: foo07:
922 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
923 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, _lptr
924 ; DARWIN-32-DYNAMIC-NEXT: retl
926 ; DARWIN-32-PIC-LABEL: foo07:
927 ; DARWIN-32-PIC: ## %bb.0: ## %entry
928 ; DARWIN-32-PIC-NEXT: calll L10$pb
929 ; DARWIN-32-PIC-NEXT: L10$pb:
930 ; DARWIN-32-PIC-NEXT: popl %eax
931 ; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx
932 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax)
933 ; DARWIN-32-PIC-NEXT: retl
935 ; DARWIN-64-STATIC-LABEL: foo07:
936 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
937 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
938 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
939 ; DARWIN-64-STATIC-NEXT: retq
941 ; DARWIN-64-DYNAMIC-LABEL: foo07:
942 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
943 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
944 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
945 ; DARWIN-64-DYNAMIC-NEXT: retq
947 ; DARWIN-64-PIC-LABEL: foo07:
948 ; DARWIN-64-PIC: ## %bb.0: ## %entry
949 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
950 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
951 ; DARWIN-64-PIC-NEXT: retq
954 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
958 define void @foo08() nounwind {
959 ; LINUX-64-STATIC-LABEL: foo08:
960 ; LINUX-64-STATIC: # %bb.0: # %entry
961 ; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax
962 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
963 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx)
964 ; LINUX-64-STATIC-NEXT: retq
966 ; LINUX-32-STATIC-LABEL: foo08:
967 ; LINUX-32-STATIC: # %bb.0: # %entry
968 ; LINUX-32-STATIC-NEXT: movl lsrc, %eax
969 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
970 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
971 ; LINUX-32-STATIC-NEXT: retl
973 ; LINUX-32-PIC-LABEL: foo08:
974 ; LINUX-32-PIC: # %bb.0: # %entry
975 ; LINUX-32-PIC-NEXT: calll .L11$pb
976 ; LINUX-32-PIC-NEXT: .L11$pb:
977 ; LINUX-32-PIC-NEXT: popl %eax
978 ; LINUX-32-PIC-NEXT: .Ltmp11:
979 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax
980 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx
981 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
982 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
983 ; LINUX-32-PIC-NEXT: retl
985 ; LINUX-64-PIC-LABEL: foo08:
986 ; LINUX-64-PIC: # %bb.0: # %entry
987 ; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax
988 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
989 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
990 ; LINUX-64-PIC-NEXT: retq
992 ; DARWIN-32-STATIC-LABEL: foo08:
993 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
994 ; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax
995 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
996 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
997 ; DARWIN-32-STATIC-NEXT: retl
999 ; DARWIN-32-DYNAMIC-LABEL: foo08:
1000 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1001 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax
1002 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
1003 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1004 ; DARWIN-32-DYNAMIC-NEXT: retl
1006 ; DARWIN-32-PIC-LABEL: foo08:
1007 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1008 ; DARWIN-32-PIC-NEXT: calll L11$pb
1009 ; DARWIN-32-PIC-NEXT: L11$pb:
1010 ; DARWIN-32-PIC-NEXT: popl %eax
1011 ; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx
1012 ; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax
1013 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1014 ; DARWIN-32-PIC-NEXT: retl
1016 ; DARWIN-64-STATIC-LABEL: foo08:
1017 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1018 ; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax
1019 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
1020 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
1021 ; DARWIN-64-STATIC-NEXT: retq
1023 ; DARWIN-64-DYNAMIC-LABEL: foo08:
1024 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1025 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax
1026 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
1027 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
1028 ; DARWIN-64-DYNAMIC-NEXT: retq
1030 ; DARWIN-64-PIC-LABEL: foo08:
1031 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1032 ; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax
1033 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
1034 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
1035 ; DARWIN-64-PIC-NEXT: retq
1038 %0 = load i32*, i32** @lptr, align 8
1039 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4
1040 store i32 %1, i32* %0, align 4
1044 define void @qux00() nounwind {
1045 ; LINUX-64-STATIC-LABEL: qux00:
1046 ; LINUX-64-STATIC: # %bb.0: # %entry
1047 ; LINUX-64-STATIC-NEXT: movl src+64(%rip), %eax
1048 ; LINUX-64-STATIC-NEXT: movl %eax, dst+64(%rip)
1049 ; LINUX-64-STATIC-NEXT: retq
1051 ; LINUX-32-STATIC-LABEL: qux00:
1052 ; LINUX-32-STATIC: # %bb.0: # %entry
1053 ; LINUX-32-STATIC-NEXT: movl src+64, %eax
1054 ; LINUX-32-STATIC-NEXT: movl %eax, dst+64
1055 ; LINUX-32-STATIC-NEXT: retl
1057 ; LINUX-32-PIC-LABEL: qux00:
1058 ; LINUX-32-PIC: # %bb.0: # %entry
1059 ; LINUX-32-PIC-NEXT: calll .L12$pb
1060 ; LINUX-32-PIC-NEXT: .L12$pb:
1061 ; LINUX-32-PIC-NEXT: popl %eax
1062 ; LINUX-32-PIC-NEXT: .Ltmp12:
1063 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax
1064 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
1065 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1066 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
1067 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1068 ; LINUX-32-PIC-NEXT: retl
1070 ; LINUX-64-PIC-LABEL: qux00:
1071 ; LINUX-64-PIC: # %bb.0: # %entry
1072 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
1073 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1074 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
1075 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1076 ; LINUX-64-PIC-NEXT: retq
1078 ; DARWIN-32-STATIC-LABEL: qux00:
1079 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1080 ; DARWIN-32-STATIC-NEXT: movl _src+64, %eax
1081 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64
1082 ; DARWIN-32-STATIC-NEXT: retl
1084 ; DARWIN-32-DYNAMIC-LABEL: qux00:
1085 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1086 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
1087 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1088 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
1089 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1090 ; DARWIN-32-DYNAMIC-NEXT: retl
1092 ; DARWIN-32-PIC-LABEL: qux00:
1093 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1094 ; DARWIN-32-PIC-NEXT: calll L12$pb
1095 ; DARWIN-32-PIC-NEXT: L12$pb:
1096 ; DARWIN-32-PIC-NEXT: popl %eax
1097 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx
1098 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1099 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax
1100 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1101 ; DARWIN-32-PIC-NEXT: retl
1103 ; DARWIN-64-STATIC-LABEL: qux00:
1104 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1105 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1106 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1107 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1108 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1109 ; DARWIN-64-STATIC-NEXT: retq
1111 ; DARWIN-64-DYNAMIC-LABEL: qux00:
1112 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1113 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1114 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1115 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1116 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1117 ; DARWIN-64-DYNAMIC-NEXT: retq
1119 ; DARWIN-64-PIC-LABEL: qux00:
1120 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1121 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1122 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1123 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1124 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1125 ; DARWIN-64-PIC-NEXT: retq
1128 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
1129 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4
1133 define void @qxx00() nounwind {
1134 ; LINUX-64-STATIC-LABEL: qxx00:
1135 ; LINUX-64-STATIC: # %bb.0: # %entry
1136 ; LINUX-64-STATIC-NEXT: movl xsrc+64(%rip), %eax
1137 ; LINUX-64-STATIC-NEXT: movl %eax, xdst+64(%rip)
1138 ; LINUX-64-STATIC-NEXT: retq
1140 ; LINUX-32-STATIC-LABEL: qxx00:
1141 ; LINUX-32-STATIC: # %bb.0: # %entry
1142 ; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax
1143 ; LINUX-32-STATIC-NEXT: movl %eax, xdst+64
1144 ; LINUX-32-STATIC-NEXT: retl
1146 ; LINUX-32-PIC-LABEL: qxx00:
1147 ; LINUX-32-PIC: # %bb.0: # %entry
1148 ; LINUX-32-PIC-NEXT: calll .L13$pb
1149 ; LINUX-32-PIC-NEXT: .L13$pb:
1150 ; LINUX-32-PIC-NEXT: popl %eax
1151 ; LINUX-32-PIC-NEXT: .Ltmp13:
1152 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax
1153 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx
1154 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1155 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
1156 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1157 ; LINUX-32-PIC-NEXT: retl
1159 ; LINUX-64-PIC-LABEL: qxx00:
1160 ; LINUX-64-PIC: # %bb.0: # %entry
1161 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
1162 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1163 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
1164 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1165 ; LINUX-64-PIC-NEXT: retq
1167 ; DARWIN-32-STATIC-LABEL: qxx00:
1168 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1169 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax
1170 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64
1171 ; DARWIN-32-STATIC-NEXT: retl
1173 ; DARWIN-32-DYNAMIC-LABEL: qxx00:
1174 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1175 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
1176 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1177 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
1178 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1179 ; DARWIN-32-DYNAMIC-NEXT: retl
1181 ; DARWIN-32-PIC-LABEL: qxx00:
1182 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1183 ; DARWIN-32-PIC-NEXT: calll L13$pb
1184 ; DARWIN-32-PIC-NEXT: L13$pb:
1185 ; DARWIN-32-PIC-NEXT: popl %eax
1186 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx
1187 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1188 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax
1189 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1190 ; DARWIN-32-PIC-NEXT: retl
1192 ; DARWIN-64-STATIC-LABEL: qxx00:
1193 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1194 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1195 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1196 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1197 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1198 ; DARWIN-64-STATIC-NEXT: retq
1200 ; DARWIN-64-DYNAMIC-LABEL: qxx00:
1201 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1202 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1203 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1204 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1205 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1206 ; DARWIN-64-DYNAMIC-NEXT: retq
1208 ; DARWIN-64-PIC-LABEL: qxx00:
1209 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1210 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1211 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1212 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1213 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1214 ; DARWIN-64-PIC-NEXT: retq
1217 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
1218 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4
1222 define void @qux01() nounwind {
1223 ; LINUX-64-STATIC-LABEL: qux01:
1224 ; LINUX-64-STATIC: # %bb.0: # %entry
1225 ; LINUX-64-STATIC-NEXT: movq $dst+64, ptr(%rip)
1226 ; LINUX-64-STATIC-NEXT: retq
1228 ; LINUX-32-STATIC-LABEL: qux01:
1229 ; LINUX-32-STATIC: # %bb.0: # %entry
1230 ; LINUX-32-STATIC-NEXT: movl $dst+64, ptr
1231 ; LINUX-32-STATIC-NEXT: retl
1233 ; LINUX-32-PIC-LABEL: qux01:
1234 ; LINUX-32-PIC: # %bb.0: # %entry
1235 ; LINUX-32-PIC-NEXT: calll .L14$pb
1236 ; LINUX-32-PIC-NEXT: .L14$pb:
1237 ; LINUX-32-PIC-NEXT: popl %eax
1238 ; LINUX-32-PIC-NEXT: .Ltmp14:
1239 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax
1240 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx
1241 ; LINUX-32-PIC-NEXT: addl $64, %ecx
1242 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
1243 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
1244 ; LINUX-32-PIC-NEXT: retl
1246 ; LINUX-64-PIC-LABEL: qux01:
1247 ; LINUX-64-PIC: # %bb.0: # %entry
1248 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
1249 ; LINUX-64-PIC-NEXT: addq $64, %rax
1250 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1251 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1252 ; LINUX-64-PIC-NEXT: retq
1254 ; DARWIN-32-STATIC-LABEL: qux01:
1255 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1256 ; DARWIN-32-STATIC-NEXT: movl $_dst+64, _ptr
1257 ; DARWIN-32-STATIC-NEXT: retl
1259 ; DARWIN-32-DYNAMIC-LABEL: qux01:
1260 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1261 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax
1262 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1263 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1264 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1265 ; DARWIN-32-DYNAMIC-NEXT: retl
1267 ; DARWIN-32-PIC-LABEL: qux01:
1268 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1269 ; DARWIN-32-PIC-NEXT: calll L14$pb
1270 ; DARWIN-32-PIC-NEXT: L14$pb:
1271 ; DARWIN-32-PIC-NEXT: popl %eax
1272 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx
1273 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1274 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax
1275 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1276 ; DARWIN-32-PIC-NEXT: retl
1278 ; DARWIN-64-STATIC-LABEL: qux01:
1279 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1280 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
1281 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1282 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1283 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1284 ; DARWIN-64-STATIC-NEXT: retq
1286 ; DARWIN-64-DYNAMIC-LABEL: qux01:
1287 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1288 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
1289 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1290 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1291 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1292 ; DARWIN-64-DYNAMIC-NEXT: retq
1294 ; DARWIN-64-PIC-LABEL: qux01:
1295 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1296 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
1297 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1298 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1299 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1300 ; DARWIN-64-PIC-NEXT: retq
1303 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
1307 define void @qxx01() nounwind {
1308 ; LINUX-64-STATIC-LABEL: qxx01:
1309 ; LINUX-64-STATIC: # %bb.0: # %entry
1310 ; LINUX-64-STATIC-NEXT: movq $xdst+64, ptr(%rip)
1311 ; LINUX-64-STATIC-NEXT: retq
1313 ; LINUX-32-STATIC-LABEL: qxx01:
1314 ; LINUX-32-STATIC: # %bb.0: # %entry
1315 ; LINUX-32-STATIC-NEXT: movl $xdst+64, ptr
1316 ; LINUX-32-STATIC-NEXT: retl
1318 ; LINUX-32-PIC-LABEL: qxx01:
1319 ; LINUX-32-PIC: # %bb.0: # %entry
1320 ; LINUX-32-PIC-NEXT: calll .L15$pb
1321 ; LINUX-32-PIC-NEXT: .L15$pb:
1322 ; LINUX-32-PIC-NEXT: popl %eax
1323 ; LINUX-32-PIC-NEXT: .Ltmp15:
1324 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax
1325 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx
1326 ; LINUX-32-PIC-NEXT: addl $64, %ecx
1327 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
1328 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
1329 ; LINUX-32-PIC-NEXT: retl
1331 ; LINUX-64-PIC-LABEL: qxx01:
1332 ; LINUX-64-PIC: # %bb.0: # %entry
1333 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
1334 ; LINUX-64-PIC-NEXT: addq $64, %rax
1335 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1336 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1337 ; LINUX-64-PIC-NEXT: retq
1339 ; DARWIN-32-STATIC-LABEL: qxx01:
1340 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1341 ; DARWIN-32-STATIC-NEXT: movl $_xdst+64, _ptr
1342 ; DARWIN-32-STATIC-NEXT: retl
1344 ; DARWIN-32-DYNAMIC-LABEL: qxx01:
1345 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1346 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax
1347 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1348 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1349 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1350 ; DARWIN-32-DYNAMIC-NEXT: retl
1352 ; DARWIN-32-PIC-LABEL: qxx01:
1353 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1354 ; DARWIN-32-PIC-NEXT: calll L15$pb
1355 ; DARWIN-32-PIC-NEXT: L15$pb:
1356 ; DARWIN-32-PIC-NEXT: popl %eax
1357 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx
1358 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1359 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax
1360 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1361 ; DARWIN-32-PIC-NEXT: retl
1363 ; DARWIN-64-STATIC-LABEL: qxx01:
1364 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1365 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
1366 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1367 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1368 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1369 ; DARWIN-64-STATIC-NEXT: retq
1371 ; DARWIN-64-DYNAMIC-LABEL: qxx01:
1372 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1373 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
1374 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1375 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1376 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1377 ; DARWIN-64-DYNAMIC-NEXT: retq
1379 ; DARWIN-64-PIC-LABEL: qxx01:
1380 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1381 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
1382 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1383 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1384 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1385 ; DARWIN-64-PIC-NEXT: retq
1388 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
1392 define void @qux02() nounwind {
1393 ; LINUX-64-STATIC-LABEL: qux02:
1394 ; LINUX-64-STATIC: # %bb.0: # %entry
1395 ; LINUX-64-STATIC-NEXT: movl src+64(%rip), %eax
1396 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
1397 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)
1398 ; LINUX-64-STATIC-NEXT: retq
1400 ; LINUX-32-STATIC-LABEL: qux02:
1401 ; LINUX-32-STATIC: # %bb.0: # %entry
1402 ; LINUX-32-STATIC-NEXT: movl src+64, %eax
1403 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1404 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1405 ; LINUX-32-STATIC-NEXT: retl
1407 ; LINUX-32-PIC-LABEL: qux02:
1408 ; LINUX-32-PIC: # %bb.0: # %entry
1409 ; LINUX-32-PIC-NEXT: calll .L16$pb
1410 ; LINUX-32-PIC-NEXT: .L16$pb:
1411 ; LINUX-32-PIC-NEXT: popl %eax
1412 ; LINUX-32-PIC-NEXT: .Ltmp16:
1413 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax
1414 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
1415 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1416 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
1417 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
1418 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1419 ; LINUX-32-PIC-NEXT: retl
1421 ; LINUX-64-PIC-LABEL: qux02:
1422 ; LINUX-64-PIC: # %bb.0: # %entry
1423 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
1424 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1425 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1426 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1427 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1428 ; LINUX-64-PIC-NEXT: retq
1430 ; DARWIN-32-STATIC-LABEL: qux02:
1431 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1432 ; DARWIN-32-STATIC-NEXT: movl _src+64, %eax
1433 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1434 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1435 ; DARWIN-32-STATIC-NEXT: retl
1437 ; DARWIN-32-DYNAMIC-LABEL: qux02:
1438 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1439 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
1440 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1441 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1442 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1443 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1444 ; DARWIN-32-DYNAMIC-NEXT: retl
1446 ; DARWIN-32-PIC-LABEL: qux02:
1447 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1448 ; DARWIN-32-PIC-NEXT: calll L16$pb
1449 ; DARWIN-32-PIC-NEXT: L16$pb:
1450 ; DARWIN-32-PIC-NEXT: popl %eax
1451 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx
1452 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1453 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax
1454 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1455 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1456 ; DARWIN-32-PIC-NEXT: retl
1458 ; DARWIN-64-STATIC-LABEL: qux02:
1459 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1460 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1461 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1462 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1463 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1464 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1465 ; DARWIN-64-STATIC-NEXT: retq
1467 ; DARWIN-64-DYNAMIC-LABEL: qux02:
1468 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1469 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1470 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1471 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1472 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1473 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1474 ; DARWIN-64-DYNAMIC-NEXT: retq
1476 ; DARWIN-64-PIC-LABEL: qux02:
1477 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1478 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
1479 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1480 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1481 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1482 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1483 ; DARWIN-64-PIC-NEXT: retq
1486 %0 = load i32*, i32** @ptr, align 8
1487 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4
1488 %2 = getelementptr i32, i32* %0, i64 16
1489 store i32 %1, i32* %2, align 4
1493 define void @qxx02() nounwind {
1494 ; LINUX-64-STATIC-LABEL: qxx02:
1495 ; LINUX-64-STATIC: # %bb.0: # %entry
1496 ; LINUX-64-STATIC-NEXT: movl xsrc+64(%rip), %eax
1497 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
1498 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)
1499 ; LINUX-64-STATIC-NEXT: retq
1501 ; LINUX-32-STATIC-LABEL: qxx02:
1502 ; LINUX-32-STATIC: # %bb.0: # %entry
1503 ; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax
1504 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1505 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1506 ; LINUX-32-STATIC-NEXT: retl
1508 ; LINUX-32-PIC-LABEL: qxx02:
1509 ; LINUX-32-PIC: # %bb.0: # %entry
1510 ; LINUX-32-PIC-NEXT: calll .L17$pb
1511 ; LINUX-32-PIC-NEXT: .L17$pb:
1512 ; LINUX-32-PIC-NEXT: popl %eax
1513 ; LINUX-32-PIC-NEXT: .Ltmp17:
1514 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax
1515 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx
1516 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1517 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
1518 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
1519 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1520 ; LINUX-32-PIC-NEXT: retl
1522 ; LINUX-64-PIC-LABEL: qxx02:
1523 ; LINUX-64-PIC: # %bb.0: # %entry
1524 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
1525 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1526 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1527 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1528 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1529 ; LINUX-64-PIC-NEXT: retq
1531 ; DARWIN-32-STATIC-LABEL: qxx02:
1532 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1533 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax
1534 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1535 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1536 ; DARWIN-32-STATIC-NEXT: retl
1538 ; DARWIN-32-DYNAMIC-LABEL: qxx02:
1539 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1540 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
1541 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1542 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1543 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1544 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1545 ; DARWIN-32-DYNAMIC-NEXT: retl
1547 ; DARWIN-32-PIC-LABEL: qxx02:
1548 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1549 ; DARWIN-32-PIC-NEXT: calll L17$pb
1550 ; DARWIN-32-PIC-NEXT: L17$pb:
1551 ; DARWIN-32-PIC-NEXT: popl %eax
1552 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx
1553 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1554 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax
1555 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1556 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1557 ; DARWIN-32-PIC-NEXT: retl
1559 ; DARWIN-64-STATIC-LABEL: qxx02:
1560 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1561 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1562 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1563 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1564 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1565 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1566 ; DARWIN-64-STATIC-NEXT: retq
1568 ; DARWIN-64-DYNAMIC-LABEL: qxx02:
1569 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1570 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1571 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1572 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1573 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1574 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1575 ; DARWIN-64-DYNAMIC-NEXT: retq
1577 ; DARWIN-64-PIC-LABEL: qxx02:
1578 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1579 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
1580 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1581 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1582 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1583 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1584 ; DARWIN-64-PIC-NEXT: retq
1587 %0 = load i32*, i32** @ptr, align 8
1588 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4
1589 %2 = getelementptr i32, i32* %0, i64 16
1590 store i32 %1, i32* %2, align 4
1594 define void @qux03() nounwind {
1595 ; LINUX-64-STATIC-LABEL: qux03:
1596 ; LINUX-64-STATIC: # %bb.0: # %entry
1597 ; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax
1598 ; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(%rip)
1599 ; LINUX-64-STATIC-NEXT: retq
1601 ; LINUX-32-STATIC-LABEL: qux03:
1602 ; LINUX-32-STATIC: # %bb.0: # %entry
1603 ; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax
1604 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+64
1605 ; LINUX-32-STATIC-NEXT: retl
1607 ; LINUX-32-PIC-LABEL: qux03:
1608 ; LINUX-32-PIC: # %bb.0: # %entry
1609 ; LINUX-32-PIC-NEXT: calll .L18$pb
1610 ; LINUX-32-PIC-NEXT: .L18$pb:
1611 ; LINUX-32-PIC-NEXT: popl %eax
1612 ; LINUX-32-PIC-NEXT: .Ltmp18:
1613 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax
1614 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
1615 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1616 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
1617 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1618 ; LINUX-32-PIC-NEXT: retl
1620 ; LINUX-64-PIC-LABEL: qux03:
1621 ; LINUX-64-PIC: # %bb.0: # %entry
1622 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
1623 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1624 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
1625 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1626 ; LINUX-64-PIC-NEXT: retq
1628 ; DARWIN-32-STATIC-LABEL: qux03:
1629 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1630 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax
1631 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64
1632 ; DARWIN-32-STATIC-NEXT: retl
1634 ; DARWIN-32-DYNAMIC-LABEL: qux03:
1635 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1636 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax
1637 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64
1638 ; DARWIN-32-DYNAMIC-NEXT: retl
1640 ; DARWIN-32-PIC-LABEL: qux03:
1641 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1642 ; DARWIN-32-PIC-NEXT: calll L18$pb
1643 ; DARWIN-32-PIC-NEXT: L18$pb:
1644 ; DARWIN-32-PIC-NEXT: popl %eax
1645 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx
1646 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax)
1647 ; DARWIN-32-PIC-NEXT: retl
1649 ; DARWIN-64-STATIC-LABEL: qux03:
1650 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1651 ; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax
1652 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)
1653 ; DARWIN-64-STATIC-NEXT: retq
1655 ; DARWIN-64-DYNAMIC-LABEL: qux03:
1656 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1657 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax
1658 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)
1659 ; DARWIN-64-DYNAMIC-NEXT: retq
1661 ; DARWIN-64-PIC-LABEL: qux03:
1662 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1663 ; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax
1664 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)
1665 ; DARWIN-64-PIC-NEXT: retq
1668 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
1669 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32
1673 define void @qux04() nounwind {
1674 ; LINUX-64-STATIC-LABEL: qux04:
1675 ; LINUX-64-STATIC: # %bb.0: # %entry
1676 ; LINUX-64-STATIC-NEXT: movq $ddst+64, dptr(%rip)
1677 ; LINUX-64-STATIC-NEXT: retq
1679 ; LINUX-32-STATIC-LABEL: qux04:
1680 ; LINUX-32-STATIC: # %bb.0: # %entry
1681 ; LINUX-32-STATIC-NEXT: movl $ddst+64, dptr
1682 ; LINUX-32-STATIC-NEXT: retl
1684 ; LINUX-32-PIC-LABEL: qux04:
1685 ; LINUX-32-PIC: # %bb.0: # %entry
1686 ; LINUX-32-PIC-NEXT: calll .L19$pb
1687 ; LINUX-32-PIC-NEXT: .L19$pb:
1688 ; LINUX-32-PIC-NEXT: popl %eax
1689 ; LINUX-32-PIC-NEXT: .Ltmp19:
1690 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax
1691 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx
1692 ; LINUX-32-PIC-NEXT: addl $64, %ecx
1693 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
1694 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
1695 ; LINUX-32-PIC-NEXT: retl
1697 ; LINUX-64-PIC-LABEL: qux04:
1698 ; LINUX-64-PIC: # %bb.0: # %entry
1699 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
1700 ; LINUX-64-PIC-NEXT: addq $64, %rax
1701 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1702 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1703 ; LINUX-64-PIC-NEXT: retq
1705 ; DARWIN-32-STATIC-LABEL: qux04:
1706 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1707 ; DARWIN-32-STATIC-NEXT: movl $_ddst+64, _dptr
1708 ; DARWIN-32-STATIC-NEXT: retl
1710 ; DARWIN-32-DYNAMIC-LABEL: qux04:
1711 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1712 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, _dptr
1713 ; DARWIN-32-DYNAMIC-NEXT: retl
1715 ; DARWIN-32-PIC-LABEL: qux04:
1716 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1717 ; DARWIN-32-PIC-NEXT: calll L19$pb
1718 ; DARWIN-32-PIC-NEXT: L19$pb:
1719 ; DARWIN-32-PIC-NEXT: popl %eax
1720 ; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx
1721 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax)
1722 ; DARWIN-32-PIC-NEXT: retl
1724 ; DARWIN-64-STATIC-LABEL: qux04:
1725 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1726 ; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax
1727 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
1728 ; DARWIN-64-STATIC-NEXT: retq
1730 ; DARWIN-64-DYNAMIC-LABEL: qux04:
1731 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1732 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax
1733 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
1734 ; DARWIN-64-DYNAMIC-NEXT: retq
1736 ; DARWIN-64-PIC-LABEL: qux04:
1737 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1738 ; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax
1739 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
1740 ; DARWIN-64-PIC-NEXT: retq
1743 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
1747 define void @qux05() nounwind {
1748 ; LINUX-64-STATIC-LABEL: qux05:
1749 ; LINUX-64-STATIC: # %bb.0: # %entry
1750 ; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax
1751 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
1752 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)
1753 ; LINUX-64-STATIC-NEXT: retq
1755 ; LINUX-32-STATIC-LABEL: qux05:
1756 ; LINUX-32-STATIC: # %bb.0: # %entry
1757 ; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax
1758 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
1759 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1760 ; LINUX-32-STATIC-NEXT: retl
1762 ; LINUX-32-PIC-LABEL: qux05:
1763 ; LINUX-32-PIC: # %bb.0: # %entry
1764 ; LINUX-32-PIC-NEXT: calll .L20$pb
1765 ; LINUX-32-PIC-NEXT: .L20$pb:
1766 ; LINUX-32-PIC-NEXT: popl %eax
1767 ; LINUX-32-PIC-NEXT: .Ltmp20:
1768 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax
1769 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
1770 ; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx
1771 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
1772 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
1773 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
1774 ; LINUX-32-PIC-NEXT: retl
1776 ; LINUX-64-PIC-LABEL: qux05:
1777 ; LINUX-64-PIC: # %bb.0: # %entry
1778 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
1779 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1780 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1781 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1782 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1783 ; LINUX-64-PIC-NEXT: retq
1785 ; DARWIN-32-STATIC-LABEL: qux05:
1786 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1787 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax
1788 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
1789 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1790 ; DARWIN-32-STATIC-NEXT: retl
1792 ; DARWIN-32-DYNAMIC-LABEL: qux05:
1793 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1794 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax
1795 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
1796 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1797 ; DARWIN-32-DYNAMIC-NEXT: retl
1799 ; DARWIN-32-PIC-LABEL: qux05:
1800 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1801 ; DARWIN-32-PIC-NEXT: calll L20$pb
1802 ; DARWIN-32-PIC-NEXT: L20$pb:
1803 ; DARWIN-32-PIC-NEXT: popl %eax
1804 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx
1805 ; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax
1806 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1807 ; DARWIN-32-PIC-NEXT: retl
1809 ; DARWIN-64-STATIC-LABEL: qux05:
1810 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1811 ; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax
1812 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
1813 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1814 ; DARWIN-64-STATIC-NEXT: retq
1816 ; DARWIN-64-DYNAMIC-LABEL: qux05:
1817 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1818 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax
1819 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
1820 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1821 ; DARWIN-64-DYNAMIC-NEXT: retq
1823 ; DARWIN-64-PIC-LABEL: qux05:
1824 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1825 ; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax
1826 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
1827 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1828 ; DARWIN-64-PIC-NEXT: retq
1831 %0 = load i32*, i32** @dptr, align 8
1832 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32
1833 %2 = getelementptr i32, i32* %0, i64 16
1834 store i32 %1, i32* %2, align 4
1838 define void @qux06() nounwind {
1839 ; LINUX-64-STATIC-LABEL: qux06:
1840 ; LINUX-64-STATIC: # %bb.0: # %entry
1841 ; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax
1842 ; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(%rip)
1843 ; LINUX-64-STATIC-NEXT: retq
1845 ; LINUX-32-STATIC-LABEL: qux06:
1846 ; LINUX-32-STATIC: # %bb.0: # %entry
1847 ; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax
1848 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+64
1849 ; LINUX-32-STATIC-NEXT: retl
1851 ; LINUX-32-PIC-LABEL: qux06:
1852 ; LINUX-32-PIC: # %bb.0: # %entry
1853 ; LINUX-32-PIC-NEXT: calll .L21$pb
1854 ; LINUX-32-PIC-NEXT: .L21$pb:
1855 ; LINUX-32-PIC-NEXT: popl %eax
1856 ; LINUX-32-PIC-NEXT: .Ltmp21:
1857 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax
1858 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx
1859 ; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax)
1860 ; LINUX-32-PIC-NEXT: retl
1862 ; LINUX-64-PIC-LABEL: qux06:
1863 ; LINUX-64-PIC: # %bb.0: # %entry
1864 ; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax
1865 ; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)
1866 ; LINUX-64-PIC-NEXT: retq
1868 ; DARWIN-32-STATIC-LABEL: qux06:
1869 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1870 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax
1871 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64
1872 ; DARWIN-32-STATIC-NEXT: retl
1874 ; DARWIN-32-DYNAMIC-LABEL: qux06:
1875 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1876 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax
1877 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64
1878 ; DARWIN-32-DYNAMIC-NEXT: retl
1880 ; DARWIN-32-PIC-LABEL: qux06:
1881 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1882 ; DARWIN-32-PIC-NEXT: calll L21$pb
1883 ; DARWIN-32-PIC-NEXT: L21$pb:
1884 ; DARWIN-32-PIC-NEXT: popl %eax
1885 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx
1886 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax)
1887 ; DARWIN-32-PIC-NEXT: retl
1889 ; DARWIN-64-STATIC-LABEL: qux06:
1890 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1891 ; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax
1892 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)
1893 ; DARWIN-64-STATIC-NEXT: retq
1895 ; DARWIN-64-DYNAMIC-LABEL: qux06:
1896 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1897 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax
1898 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)
1899 ; DARWIN-64-DYNAMIC-NEXT: retq
1901 ; DARWIN-64-PIC-LABEL: qux06:
1902 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1903 ; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax
1904 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)
1905 ; DARWIN-64-PIC-NEXT: retq
1908 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
1909 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4
1913 define void @qux07() nounwind {
1914 ; LINUX-64-STATIC-LABEL: qux07:
1915 ; LINUX-64-STATIC: # %bb.0: # %entry
1916 ; LINUX-64-STATIC-NEXT: movq $ldst+64, lptr(%rip)
1917 ; LINUX-64-STATIC-NEXT: retq
1919 ; LINUX-32-STATIC-LABEL: qux07:
1920 ; LINUX-32-STATIC: # %bb.0: # %entry
1921 ; LINUX-32-STATIC-NEXT: movl $ldst+64, lptr
1922 ; LINUX-32-STATIC-NEXT: retl
1924 ; LINUX-32-PIC-LABEL: qux07:
1925 ; LINUX-32-PIC: # %bb.0: # %entry
1926 ; LINUX-32-PIC-NEXT: calll .L22$pb
1927 ; LINUX-32-PIC-NEXT: .L22$pb:
1928 ; LINUX-32-PIC-NEXT: popl %eax
1929 ; LINUX-32-PIC-NEXT: .Ltmp22:
1930 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax
1931 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx
1932 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
1933 ; LINUX-32-PIC-NEXT: retl
1935 ; LINUX-64-PIC-LABEL: qux07:
1936 ; LINUX-64-PIC: # %bb.0: # %entry
1937 ; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax
1938 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
1939 ; LINUX-64-PIC-NEXT: retq
1941 ; DARWIN-32-STATIC-LABEL: qux07:
1942 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
1943 ; DARWIN-32-STATIC-NEXT: movl $_ldst+64, _lptr
1944 ; DARWIN-32-STATIC-NEXT: retl
1946 ; DARWIN-32-DYNAMIC-LABEL: qux07:
1947 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
1948 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, _lptr
1949 ; DARWIN-32-DYNAMIC-NEXT: retl
1951 ; DARWIN-32-PIC-LABEL: qux07:
1952 ; DARWIN-32-PIC: ## %bb.0: ## %entry
1953 ; DARWIN-32-PIC-NEXT: calll L22$pb
1954 ; DARWIN-32-PIC-NEXT: L22$pb:
1955 ; DARWIN-32-PIC-NEXT: popl %eax
1956 ; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx
1957 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax)
1958 ; DARWIN-32-PIC-NEXT: retl
1960 ; DARWIN-64-STATIC-LABEL: qux07:
1961 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
1962 ; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax
1963 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
1964 ; DARWIN-64-STATIC-NEXT: retq
1966 ; DARWIN-64-DYNAMIC-LABEL: qux07:
1967 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
1968 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax
1969 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
1970 ; DARWIN-64-DYNAMIC-NEXT: retq
1972 ; DARWIN-64-PIC-LABEL: qux07:
1973 ; DARWIN-64-PIC: ## %bb.0: ## %entry
1974 ; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax
1975 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
1976 ; DARWIN-64-PIC-NEXT: retq
1979 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
1983 define void @qux08() nounwind {
1984 ; LINUX-64-STATIC-LABEL: qux08:
1985 ; LINUX-64-STATIC: # %bb.0: # %entry
1986 ; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax
1987 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
1988 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx)
1989 ; LINUX-64-STATIC-NEXT: retq
1991 ; LINUX-32-STATIC-LABEL: qux08:
1992 ; LINUX-32-STATIC: # %bb.0: # %entry
1993 ; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax
1994 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
1995 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1996 ; LINUX-32-STATIC-NEXT: retl
1998 ; LINUX-32-PIC-LABEL: qux08:
1999 ; LINUX-32-PIC: # %bb.0: # %entry
2000 ; LINUX-32-PIC-NEXT: calll .L23$pb
2001 ; LINUX-32-PIC-NEXT: .L23$pb:
2002 ; LINUX-32-PIC-NEXT: popl %eax
2003 ; LINUX-32-PIC-NEXT: .Ltmp23:
2004 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax
2005 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx
2006 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
2007 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax)
2008 ; LINUX-32-PIC-NEXT: retl
2010 ; LINUX-64-PIC-LABEL: qux08:
2011 ; LINUX-64-PIC: # %bb.0: # %entry
2012 ; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax
2013 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
2014 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
2015 ; LINUX-64-PIC-NEXT: retq
2017 ; DARWIN-32-STATIC-LABEL: qux08:
2018 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2019 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax
2020 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
2021 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
2022 ; DARWIN-32-STATIC-NEXT: retl
2024 ; DARWIN-32-DYNAMIC-LABEL: qux08:
2025 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2026 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax
2027 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
2028 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
2029 ; DARWIN-32-DYNAMIC-NEXT: retl
2031 ; DARWIN-32-PIC-LABEL: qux08:
2032 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2033 ; DARWIN-32-PIC-NEXT: calll L23$pb
2034 ; DARWIN-32-PIC-NEXT: L23$pb:
2035 ; DARWIN-32-PIC-NEXT: popl %eax
2036 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx
2037 ; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax
2038 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
2039 ; DARWIN-32-PIC-NEXT: retl
2041 ; DARWIN-64-STATIC-LABEL: qux08:
2042 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2043 ; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax
2044 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
2045 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
2046 ; DARWIN-64-STATIC-NEXT: retq
2048 ; DARWIN-64-DYNAMIC-LABEL: qux08:
2049 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2050 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax
2051 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
2052 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
2053 ; DARWIN-64-DYNAMIC-NEXT: retq
2055 ; DARWIN-64-PIC-LABEL: qux08:
2056 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2057 ; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax
2058 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
2059 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
2060 ; DARWIN-64-PIC-NEXT: retq
2063 %0 = load i32*, i32** @lptr, align 8
2064 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4
2065 %2 = getelementptr i32, i32* %0, i64 16
2066 store i32 %1, i32* %2, align 4
2070 define void @ind00(i64 %i) nounwind {
2071 ; LINUX-64-STATIC-LABEL: ind00:
2072 ; LINUX-64-STATIC: # %bb.0: # %entry
2073 ; LINUX-64-STATIC-NEXT: movl src(,%rdi,4), %eax
2074 ; LINUX-64-STATIC-NEXT: movl %eax, dst(,%rdi,4)
2075 ; LINUX-64-STATIC-NEXT: retq
2077 ; LINUX-32-STATIC-LABEL: ind00:
2078 ; LINUX-32-STATIC: # %bb.0: # %entry
2079 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2080 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
2081 ; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)
2082 ; LINUX-32-STATIC-NEXT: retl
2084 ; LINUX-32-PIC-LABEL: ind00:
2085 ; LINUX-32-PIC: # %bb.0: # %entry
2086 ; LINUX-32-PIC-NEXT: calll .L24$pb
2087 ; LINUX-32-PIC-NEXT: .L24$pb:
2088 ; LINUX-32-PIC-NEXT: popl %eax
2089 ; LINUX-32-PIC-NEXT: .Ltmp24:
2090 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax
2091 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2092 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
2093 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2094 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
2095 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2096 ; LINUX-32-PIC-NEXT: retl
2098 ; LINUX-64-PIC-LABEL: ind00:
2099 ; LINUX-64-PIC: # %bb.0: # %entry
2100 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
2101 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2102 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
2103 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2104 ; LINUX-64-PIC-NEXT: retq
2106 ; DARWIN-32-STATIC-LABEL: ind00:
2107 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2108 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2109 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
2110 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)
2111 ; DARWIN-32-STATIC-NEXT: retl
2113 ; DARWIN-32-DYNAMIC-LABEL: ind00:
2114 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2115 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2116 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2117 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2118 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
2119 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2120 ; DARWIN-32-DYNAMIC-NEXT: retl
2122 ; DARWIN-32-PIC-LABEL: ind00:
2123 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2124 ; DARWIN-32-PIC-NEXT: calll L24$pb
2125 ; DARWIN-32-PIC-NEXT: L24$pb:
2126 ; DARWIN-32-PIC-NEXT: popl %eax
2127 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2128 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx
2129 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2130 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax
2131 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2132 ; DARWIN-32-PIC-NEXT: retl
2134 ; DARWIN-64-STATIC-LABEL: ind00:
2135 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2136 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2137 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2138 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2139 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2140 ; DARWIN-64-STATIC-NEXT: retq
2142 ; DARWIN-64-DYNAMIC-LABEL: ind00:
2143 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2144 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2145 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2146 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2147 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2148 ; DARWIN-64-DYNAMIC-NEXT: retq
2150 ; DARWIN-64-PIC-LABEL: ind00:
2151 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2152 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2153 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2154 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2155 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2156 ; DARWIN-64-PIC-NEXT: retq
2159 %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
2160 %1 = load i32, i32* %0, align 4
2161 %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i
2162 store i32 %1, i32* %2, align 4
2166 define void @ixd00(i64 %i) nounwind {
2167 ; LINUX-64-STATIC-LABEL: ixd00:
2168 ; LINUX-64-STATIC: # %bb.0: # %entry
2169 ; LINUX-64-STATIC-NEXT: movl xsrc(,%rdi,4), %eax
2170 ; LINUX-64-STATIC-NEXT: movl %eax, xdst(,%rdi,4)
2171 ; LINUX-64-STATIC-NEXT: retq
2173 ; LINUX-32-STATIC-LABEL: ixd00:
2174 ; LINUX-32-STATIC: # %bb.0: # %entry
2175 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2176 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
2177 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)
2178 ; LINUX-32-STATIC-NEXT: retl
2180 ; LINUX-32-PIC-LABEL: ixd00:
2181 ; LINUX-32-PIC: # %bb.0: # %entry
2182 ; LINUX-32-PIC-NEXT: calll .L25$pb
2183 ; LINUX-32-PIC-NEXT: .L25$pb:
2184 ; LINUX-32-PIC-NEXT: popl %eax
2185 ; LINUX-32-PIC-NEXT: .Ltmp25:
2186 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax
2187 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2188 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx
2189 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2190 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
2191 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2192 ; LINUX-32-PIC-NEXT: retl
2194 ; LINUX-64-PIC-LABEL: ixd00:
2195 ; LINUX-64-PIC: # %bb.0: # %entry
2196 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
2197 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2198 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
2199 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2200 ; LINUX-64-PIC-NEXT: retq
2202 ; DARWIN-32-STATIC-LABEL: ixd00:
2203 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2204 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2205 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
2206 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)
2207 ; DARWIN-32-STATIC-NEXT: retl
2209 ; DARWIN-32-DYNAMIC-LABEL: ixd00:
2210 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2211 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2212 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2213 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2214 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
2215 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2216 ; DARWIN-32-DYNAMIC-NEXT: retl
2218 ; DARWIN-32-PIC-LABEL: ixd00:
2219 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2220 ; DARWIN-32-PIC-NEXT: calll L25$pb
2221 ; DARWIN-32-PIC-NEXT: L25$pb:
2222 ; DARWIN-32-PIC-NEXT: popl %eax
2223 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2224 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx
2225 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2226 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax
2227 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2228 ; DARWIN-32-PIC-NEXT: retl
2230 ; DARWIN-64-STATIC-LABEL: ixd00:
2231 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2232 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2233 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2234 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2235 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2236 ; DARWIN-64-STATIC-NEXT: retq
2238 ; DARWIN-64-DYNAMIC-LABEL: ixd00:
2239 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2240 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2241 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2242 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2243 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2244 ; DARWIN-64-DYNAMIC-NEXT: retq
2246 ; DARWIN-64-PIC-LABEL: ixd00:
2247 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2248 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2249 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2250 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2251 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2252 ; DARWIN-64-PIC-NEXT: retq
2255 %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
2256 %1 = load i32, i32* %0, align 4
2257 %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i
2258 store i32 %1, i32* %2, align 4
2262 define void @ind01(i64 %i) nounwind {
2263 ; LINUX-64-STATIC-LABEL: ind01:
2264 ; LINUX-64-STATIC: # %bb.0: # %entry
2265 ; LINUX-64-STATIC-NEXT: leaq dst(,%rdi,4), %rax
2266 ; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip)
2267 ; LINUX-64-STATIC-NEXT: retq
2269 ; LINUX-32-STATIC-LABEL: ind01:
2270 ; LINUX-32-STATIC: # %bb.0: # %entry
2271 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2272 ; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax
2273 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2274 ; LINUX-32-STATIC-NEXT: retl
2276 ; LINUX-32-PIC-LABEL: ind01:
2277 ; LINUX-32-PIC: # %bb.0: # %entry
2278 ; LINUX-32-PIC-NEXT: calll .L26$pb
2279 ; LINUX-32-PIC-NEXT: .L26$pb:
2280 ; LINUX-32-PIC-NEXT: popl %eax
2281 ; LINUX-32-PIC-NEXT: .Ltmp26:
2282 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax
2283 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2284 ; LINUX-32-PIC-NEXT: shll $2, %ecx
2285 ; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx
2286 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
2287 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
2288 ; LINUX-32-PIC-NEXT: retl
2290 ; LINUX-64-PIC-LABEL: ind01:
2291 ; LINUX-64-PIC: # %bb.0: # %entry
2292 ; LINUX-64-PIC-NEXT: shlq $2, %rdi
2293 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi
2294 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
2295 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2296 ; LINUX-64-PIC-NEXT: retq
2298 ; DARWIN-32-STATIC-LABEL: ind01:
2299 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2300 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2301 ; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax
2302 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2303 ; DARWIN-32-STATIC-NEXT: retl
2305 ; DARWIN-32-DYNAMIC-LABEL: ind01:
2306 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2307 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2308 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
2309 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
2310 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2311 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2312 ; DARWIN-32-DYNAMIC-NEXT: retl
2314 ; DARWIN-32-PIC-LABEL: ind01:
2315 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2316 ; DARWIN-32-PIC-NEXT: calll L26$pb
2317 ; DARWIN-32-PIC-NEXT: L26$pb:
2318 ; DARWIN-32-PIC-NEXT: popl %eax
2319 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2320 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
2321 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx
2322 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax
2323 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2324 ; DARWIN-32-PIC-NEXT: retl
2326 ; DARWIN-64-STATIC-LABEL: ind01:
2327 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2328 ; DARWIN-64-STATIC-NEXT: shlq $2, %rdi
2329 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
2330 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2331 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
2332 ; DARWIN-64-STATIC-NEXT: retq
2334 ; DARWIN-64-DYNAMIC-LABEL: ind01:
2335 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2336 ; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi
2337 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
2338 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2339 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
2340 ; DARWIN-64-DYNAMIC-NEXT: retq
2342 ; DARWIN-64-PIC-LABEL: ind01:
2343 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2344 ; DARWIN-64-PIC-NEXT: shlq $2, %rdi
2345 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
2346 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2347 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
2348 ; DARWIN-64-PIC-NEXT: retq
2351 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i
2352 store i32* %0, i32** @ptr, align 8
2356 define void @ixd01(i64 %i) nounwind {
2357 ; LINUX-64-STATIC-LABEL: ixd01:
2358 ; LINUX-64-STATIC: # %bb.0: # %entry
2359 ; LINUX-64-STATIC-NEXT: leaq xdst(,%rdi,4), %rax
2360 ; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip)
2361 ; LINUX-64-STATIC-NEXT: retq
2363 ; LINUX-32-STATIC-LABEL: ixd01:
2364 ; LINUX-32-STATIC: # %bb.0: # %entry
2365 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2366 ; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax
2367 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2368 ; LINUX-32-STATIC-NEXT: retl
2370 ; LINUX-32-PIC-LABEL: ixd01:
2371 ; LINUX-32-PIC: # %bb.0: # %entry
2372 ; LINUX-32-PIC-NEXT: calll .L27$pb
2373 ; LINUX-32-PIC-NEXT: .L27$pb:
2374 ; LINUX-32-PIC-NEXT: popl %eax
2375 ; LINUX-32-PIC-NEXT: .Ltmp27:
2376 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax
2377 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2378 ; LINUX-32-PIC-NEXT: shll $2, %ecx
2379 ; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx
2380 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
2381 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
2382 ; LINUX-32-PIC-NEXT: retl
2384 ; LINUX-64-PIC-LABEL: ixd01:
2385 ; LINUX-64-PIC: # %bb.0: # %entry
2386 ; LINUX-64-PIC-NEXT: shlq $2, %rdi
2387 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi
2388 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
2389 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2390 ; LINUX-64-PIC-NEXT: retq
2392 ; DARWIN-32-STATIC-LABEL: ixd01:
2393 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2394 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2395 ; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax
2396 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2397 ; DARWIN-32-STATIC-NEXT: retl
2399 ; DARWIN-32-DYNAMIC-LABEL: ixd01:
2400 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2401 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2402 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
2403 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
2404 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2405 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2406 ; DARWIN-32-DYNAMIC-NEXT: retl
2408 ; DARWIN-32-PIC-LABEL: ixd01:
2409 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2410 ; DARWIN-32-PIC-NEXT: calll L27$pb
2411 ; DARWIN-32-PIC-NEXT: L27$pb:
2412 ; DARWIN-32-PIC-NEXT: popl %eax
2413 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2414 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
2415 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx
2416 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax
2417 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2418 ; DARWIN-32-PIC-NEXT: retl
2420 ; DARWIN-64-STATIC-LABEL: ixd01:
2421 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2422 ; DARWIN-64-STATIC-NEXT: shlq $2, %rdi
2423 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
2424 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2425 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
2426 ; DARWIN-64-STATIC-NEXT: retq
2428 ; DARWIN-64-DYNAMIC-LABEL: ixd01:
2429 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2430 ; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi
2431 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
2432 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2433 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
2434 ; DARWIN-64-DYNAMIC-NEXT: retq
2436 ; DARWIN-64-PIC-LABEL: ixd01:
2437 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2438 ; DARWIN-64-PIC-NEXT: shlq $2, %rdi
2439 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
2440 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
2441 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
2442 ; DARWIN-64-PIC-NEXT: retq
2445 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i
2446 store i32* %0, i32** @ptr, align 8
2450 define void @ind02(i64 %i) nounwind {
2451 ; LINUX-64-STATIC-LABEL: ind02:
2452 ; LINUX-64-STATIC: # %bb.0: # %entry
2453 ; LINUX-64-STATIC-NEXT: movl src(,%rdi,4), %eax
2454 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
2455 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2456 ; LINUX-64-STATIC-NEXT: retq
2458 ; LINUX-32-STATIC-LABEL: ind02:
2459 ; LINUX-32-STATIC: # %bb.0: # %entry
2460 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2461 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
2462 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2463 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2464 ; LINUX-32-STATIC-NEXT: retl
2466 ; LINUX-32-PIC-LABEL: ind02:
2467 ; LINUX-32-PIC: # %bb.0: # %entry
2468 ; LINUX-32-PIC-NEXT: calll .L28$pb
2469 ; LINUX-32-PIC-NEXT: .L28$pb:
2470 ; LINUX-32-PIC-NEXT: popl %eax
2471 ; LINUX-32-PIC-NEXT: .Ltmp28:
2472 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax
2473 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2474 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
2475 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2476 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
2477 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
2478 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2479 ; LINUX-32-PIC-NEXT: retl
2481 ; LINUX-64-PIC-LABEL: ind02:
2482 ; LINUX-64-PIC: # %bb.0: # %entry
2483 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
2484 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2485 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2486 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2487 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2488 ; LINUX-64-PIC-NEXT: retq
2490 ; DARWIN-32-STATIC-LABEL: ind02:
2491 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2492 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2493 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
2494 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2495 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2496 ; DARWIN-32-STATIC-NEXT: retl
2498 ; DARWIN-32-DYNAMIC-LABEL: ind02:
2499 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2500 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2501 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2502 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2503 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2504 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2505 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2506 ; DARWIN-32-DYNAMIC-NEXT: retl
2508 ; DARWIN-32-PIC-LABEL: ind02:
2509 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2510 ; DARWIN-32-PIC-NEXT: calll L28$pb
2511 ; DARWIN-32-PIC-NEXT: L28$pb:
2512 ; DARWIN-32-PIC-NEXT: popl %eax
2513 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2514 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx
2515 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2516 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax
2517 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2518 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2519 ; DARWIN-32-PIC-NEXT: retl
2521 ; DARWIN-64-STATIC-LABEL: ind02:
2522 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2523 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2524 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2525 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2526 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2527 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2528 ; DARWIN-64-STATIC-NEXT: retq
2530 ; DARWIN-64-DYNAMIC-LABEL: ind02:
2531 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2532 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2533 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2534 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2535 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2536 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2537 ; DARWIN-64-DYNAMIC-NEXT: retq
2539 ; DARWIN-64-PIC-LABEL: ind02:
2540 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2541 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
2542 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2543 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2544 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2545 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2546 ; DARWIN-64-PIC-NEXT: retq
2549 %0 = load i32*, i32** @ptr, align 8
2550 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i
2551 %2 = load i32, i32* %1, align 4
2552 %3 = getelementptr i32, i32* %0, i64 %i
2553 store i32 %2, i32* %3, align 4
2557 define void @ixd02(i64 %i) nounwind {
2558 ; LINUX-64-STATIC-LABEL: ixd02:
2559 ; LINUX-64-STATIC: # %bb.0: # %entry
2560 ; LINUX-64-STATIC-NEXT: movl xsrc(,%rdi,4), %eax
2561 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
2562 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2563 ; LINUX-64-STATIC-NEXT: retq
2565 ; LINUX-32-STATIC-LABEL: ixd02:
2566 ; LINUX-32-STATIC: # %bb.0: # %entry
2567 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2568 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
2569 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2570 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2571 ; LINUX-32-STATIC-NEXT: retl
2573 ; LINUX-32-PIC-LABEL: ixd02:
2574 ; LINUX-32-PIC: # %bb.0: # %entry
2575 ; LINUX-32-PIC-NEXT: calll .L29$pb
2576 ; LINUX-32-PIC-NEXT: .L29$pb:
2577 ; LINUX-32-PIC-NEXT: popl %eax
2578 ; LINUX-32-PIC-NEXT: .Ltmp29:
2579 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax
2580 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2581 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx
2582 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2583 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
2584 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
2585 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2586 ; LINUX-32-PIC-NEXT: retl
2588 ; LINUX-64-PIC-LABEL: ixd02:
2589 ; LINUX-64-PIC: # %bb.0: # %entry
2590 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
2591 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2592 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2593 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2594 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2595 ; LINUX-64-PIC-NEXT: retq
2597 ; DARWIN-32-STATIC-LABEL: ixd02:
2598 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2599 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2600 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
2601 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2602 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2603 ; DARWIN-32-STATIC-NEXT: retl
2605 ; DARWIN-32-DYNAMIC-LABEL: ixd02:
2606 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2607 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2608 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2609 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2610 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2611 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2612 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2613 ; DARWIN-32-DYNAMIC-NEXT: retl
2615 ; DARWIN-32-PIC-LABEL: ixd02:
2616 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2617 ; DARWIN-32-PIC-NEXT: calll L29$pb
2618 ; DARWIN-32-PIC-NEXT: L29$pb:
2619 ; DARWIN-32-PIC-NEXT: popl %eax
2620 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2621 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx
2622 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2623 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax
2624 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2625 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2626 ; DARWIN-32-PIC-NEXT: retl
2628 ; DARWIN-64-STATIC-LABEL: ixd02:
2629 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2630 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2631 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2632 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2633 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2634 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2635 ; DARWIN-64-STATIC-NEXT: retq
2637 ; DARWIN-64-DYNAMIC-LABEL: ixd02:
2638 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2639 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2640 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2641 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2642 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2643 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2644 ; DARWIN-64-DYNAMIC-NEXT: retq
2646 ; DARWIN-64-PIC-LABEL: ixd02:
2647 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2648 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
2649 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2650 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2651 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2652 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2653 ; DARWIN-64-PIC-NEXT: retq
2656 %0 = load i32*, i32** @ptr, align 8
2657 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i
2658 %2 = load i32, i32* %1, align 4
2659 %3 = getelementptr i32, i32* %0, i64 %i
2660 store i32 %2, i32* %3, align 4
2664 define void @ind03(i64 %i) nounwind {
2665 ; LINUX-64-STATIC-LABEL: ind03:
2666 ; LINUX-64-STATIC: # %bb.0: # %entry
2667 ; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax
2668 ; LINUX-64-STATIC-NEXT: movl %eax, ddst(,%rdi,4)
2669 ; LINUX-64-STATIC-NEXT: retq
2671 ; LINUX-32-STATIC-LABEL: ind03:
2672 ; LINUX-32-STATIC: # %bb.0: # %entry
2673 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2674 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2675 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)
2676 ; LINUX-32-STATIC-NEXT: retl
2678 ; LINUX-32-PIC-LABEL: ind03:
2679 ; LINUX-32-PIC: # %bb.0: # %entry
2680 ; LINUX-32-PIC-NEXT: calll .L30$pb
2681 ; LINUX-32-PIC-NEXT: .L30$pb:
2682 ; LINUX-32-PIC-NEXT: popl %eax
2683 ; LINUX-32-PIC-NEXT: .Ltmp30:
2684 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax
2685 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2686 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
2687 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2688 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
2689 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2690 ; LINUX-32-PIC-NEXT: retl
2692 ; LINUX-64-PIC-LABEL: ind03:
2693 ; LINUX-64-PIC: # %bb.0: # %entry
2694 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
2695 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2696 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
2697 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2698 ; LINUX-64-PIC-NEXT: retq
2700 ; DARWIN-32-STATIC-LABEL: ind03:
2701 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2702 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2703 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2704 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)
2705 ; DARWIN-32-STATIC-NEXT: retl
2707 ; DARWIN-32-DYNAMIC-LABEL: ind03:
2708 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2709 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2710 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2711 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)
2712 ; DARWIN-32-DYNAMIC-NEXT: retl
2714 ; DARWIN-32-PIC-LABEL: ind03:
2715 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2716 ; DARWIN-32-PIC-NEXT: calll L30$pb
2717 ; DARWIN-32-PIC-NEXT: L30$pb:
2718 ; DARWIN-32-PIC-NEXT: popl %eax
2719 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2720 ; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx
2721 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4)
2722 ; DARWIN-32-PIC-NEXT: retl
2724 ; DARWIN-64-STATIC-LABEL: ind03:
2725 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2726 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
2727 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2728 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
2729 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2730 ; DARWIN-64-STATIC-NEXT: retq
2732 ; DARWIN-64-DYNAMIC-LABEL: ind03:
2733 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2734 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
2735 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2736 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
2737 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2738 ; DARWIN-64-DYNAMIC-NEXT: retq
2740 ; DARWIN-64-PIC-LABEL: ind03:
2741 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2742 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
2743 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2744 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
2745 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2746 ; DARWIN-64-PIC-NEXT: retq
2749 %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
2750 %1 = load i32, i32* %0, align 4
2751 %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i
2752 store i32 %1, i32* %2, align 4
2756 define void @ind04(i64 %i) nounwind {
2757 ; LINUX-64-STATIC-LABEL: ind04:
2758 ; LINUX-64-STATIC: # %bb.0: # %entry
2759 ; LINUX-64-STATIC-NEXT: leaq ddst(,%rdi,4), %rax
2760 ; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)
2761 ; LINUX-64-STATIC-NEXT: retq
2763 ; LINUX-32-STATIC-LABEL: ind04:
2764 ; LINUX-32-STATIC: # %bb.0: # %entry
2765 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2766 ; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax
2767 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
2768 ; LINUX-32-STATIC-NEXT: retl
2770 ; LINUX-32-PIC-LABEL: ind04:
2771 ; LINUX-32-PIC: # %bb.0: # %entry
2772 ; LINUX-32-PIC-NEXT: calll .L31$pb
2773 ; LINUX-32-PIC-NEXT: .L31$pb:
2774 ; LINUX-32-PIC-NEXT: popl %eax
2775 ; LINUX-32-PIC-NEXT: .Ltmp31:
2776 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax
2777 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2778 ; LINUX-32-PIC-NEXT: shll $2, %ecx
2779 ; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx
2780 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
2781 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
2782 ; LINUX-32-PIC-NEXT: retl
2784 ; LINUX-64-PIC-LABEL: ind04:
2785 ; LINUX-64-PIC: # %bb.0: # %entry
2786 ; LINUX-64-PIC-NEXT: shlq $2, %rdi
2787 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi
2788 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
2789 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2790 ; LINUX-64-PIC-NEXT: retq
2792 ; DARWIN-32-STATIC-LABEL: ind04:
2793 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2794 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2795 ; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax
2796 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
2797 ; DARWIN-32-STATIC-NEXT: retl
2799 ; DARWIN-32-DYNAMIC-LABEL: ind04:
2800 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2801 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2802 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax
2803 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
2804 ; DARWIN-32-DYNAMIC-NEXT: retl
2806 ; DARWIN-32-PIC-LABEL: ind04:
2807 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2808 ; DARWIN-32-PIC-NEXT: calll L31$pb
2809 ; DARWIN-32-PIC-NEXT: L31$pb:
2810 ; DARWIN-32-PIC-NEXT: popl %eax
2811 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2812 ; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx
2813 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax)
2814 ; DARWIN-32-PIC-NEXT: retl
2816 ; DARWIN-64-STATIC-LABEL: ind04:
2817 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2818 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
2819 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2820 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
2821 ; DARWIN-64-STATIC-NEXT: retq
2823 ; DARWIN-64-DYNAMIC-LABEL: ind04:
2824 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2825 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
2826 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2827 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
2828 ; DARWIN-64-DYNAMIC-NEXT: retq
2830 ; DARWIN-64-PIC-LABEL: ind04:
2831 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2832 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
2833 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2834 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
2835 ; DARWIN-64-PIC-NEXT: retq
2838 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i
2839 store i32* %0, i32** @dptr, align 8
2843 define void @ind05(i64 %i) nounwind {
2844 ; LINUX-64-STATIC-LABEL: ind05:
2845 ; LINUX-64-STATIC: # %bb.0: # %entry
2846 ; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax
2847 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
2848 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2849 ; LINUX-64-STATIC-NEXT: retq
2851 ; LINUX-32-STATIC-LABEL: ind05:
2852 ; LINUX-32-STATIC: # %bb.0: # %entry
2853 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2854 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2855 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
2856 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2857 ; LINUX-32-STATIC-NEXT: retl
2859 ; LINUX-32-PIC-LABEL: ind05:
2860 ; LINUX-32-PIC: # %bb.0: # %entry
2861 ; LINUX-32-PIC-NEXT: calll .L32$pb
2862 ; LINUX-32-PIC-NEXT: .L32$pb:
2863 ; LINUX-32-PIC-NEXT: popl %eax
2864 ; LINUX-32-PIC-NEXT: .Ltmp32:
2865 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax
2866 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2867 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
2868 ; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2869 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
2870 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
2871 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2872 ; LINUX-32-PIC-NEXT: retl
2874 ; LINUX-64-PIC-LABEL: ind05:
2875 ; LINUX-64-PIC: # %bb.0: # %entry
2876 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
2877 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2878 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
2879 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2880 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2881 ; LINUX-64-PIC-NEXT: retq
2883 ; DARWIN-32-STATIC-LABEL: ind05:
2884 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2885 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2886 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2887 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
2888 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2889 ; DARWIN-32-STATIC-NEXT: retl
2891 ; DARWIN-32-DYNAMIC-LABEL: ind05:
2892 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2893 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2894 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2895 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
2896 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2897 ; DARWIN-32-DYNAMIC-NEXT: retl
2899 ; DARWIN-32-PIC-LABEL: ind05:
2900 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2901 ; DARWIN-32-PIC-NEXT: calll L32$pb
2902 ; DARWIN-32-PIC-NEXT: L32$pb:
2903 ; DARWIN-32-PIC-NEXT: popl %eax
2904 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2905 ; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx
2906 ; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax
2907 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2908 ; DARWIN-32-PIC-NEXT: retl
2910 ; DARWIN-64-STATIC-LABEL: ind05:
2911 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
2912 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
2913 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2914 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
2915 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2916 ; DARWIN-64-STATIC-NEXT: retq
2918 ; DARWIN-64-DYNAMIC-LABEL: ind05:
2919 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
2920 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
2921 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2922 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
2923 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2924 ; DARWIN-64-DYNAMIC-NEXT: retq
2926 ; DARWIN-64-PIC-LABEL: ind05:
2927 ; DARWIN-64-PIC: ## %bb.0: ## %entry
2928 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
2929 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2930 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
2931 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2932 ; DARWIN-64-PIC-NEXT: retq
2935 %0 = load i32*, i32** @dptr, align 8
2936 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i
2937 %2 = load i32, i32* %1, align 4
2938 %3 = getelementptr i32, i32* %0, i64 %i
2939 store i32 %2, i32* %3, align 4
2943 define void @ind06(i64 %i) nounwind {
2944 ; LINUX-64-STATIC-LABEL: ind06:
2945 ; LINUX-64-STATIC: # %bb.0: # %entry
2946 ; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax
2947 ; LINUX-64-STATIC-NEXT: movl %eax, ldst(,%rdi,4)
2948 ; LINUX-64-STATIC-NEXT: retq
2950 ; LINUX-32-STATIC-LABEL: ind06:
2951 ; LINUX-32-STATIC: # %bb.0: # %entry
2952 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2953 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2954 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)
2955 ; LINUX-32-STATIC-NEXT: retl
2957 ; LINUX-32-PIC-LABEL: ind06:
2958 ; LINUX-32-PIC: # %bb.0: # %entry
2959 ; LINUX-32-PIC-NEXT: calll .L33$pb
2960 ; LINUX-32-PIC-NEXT: .L33$pb:
2961 ; LINUX-32-PIC-NEXT: popl %eax
2962 ; LINUX-32-PIC-NEXT: .Ltmp33:
2963 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax
2964 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2965 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx
2966 ; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4)
2967 ; LINUX-32-PIC-NEXT: retl
2969 ; LINUX-64-PIC-LABEL: ind06:
2970 ; LINUX-64-PIC: # %bb.0: # %entry
2971 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
2972 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2973 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
2974 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2975 ; LINUX-64-PIC-NEXT: retq
2977 ; DARWIN-32-STATIC-LABEL: ind06:
2978 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
2979 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2980 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2981 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)
2982 ; DARWIN-32-STATIC-NEXT: retl
2984 ; DARWIN-32-DYNAMIC-LABEL: ind06:
2985 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
2986 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
2987 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2988 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)
2989 ; DARWIN-32-DYNAMIC-NEXT: retl
2991 ; DARWIN-32-PIC-LABEL: ind06:
2992 ; DARWIN-32-PIC: ## %bb.0: ## %entry
2993 ; DARWIN-32-PIC-NEXT: calll L33$pb
2994 ; DARWIN-32-PIC-NEXT: L33$pb:
2995 ; DARWIN-32-PIC-NEXT: popl %eax
2996 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
2997 ; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx
2998 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4)
2999 ; DARWIN-32-PIC-NEXT: retl
3001 ; DARWIN-64-STATIC-LABEL: ind06:
3002 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3003 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
3004 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
3005 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
3006 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
3007 ; DARWIN-64-STATIC-NEXT: retq
3009 ; DARWIN-64-DYNAMIC-LABEL: ind06:
3010 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3011 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
3012 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
3013 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
3014 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
3015 ; DARWIN-64-DYNAMIC-NEXT: retq
3017 ; DARWIN-64-PIC-LABEL: ind06:
3018 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3019 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
3020 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
3021 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
3022 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
3023 ; DARWIN-64-PIC-NEXT: retq
3026 %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
3027 %1 = load i32, i32* %0, align 4
3028 %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i
3029 store i32 %1, i32* %2, align 4
3033 define void @ind07(i64 %i) nounwind {
3034 ; LINUX-64-STATIC-LABEL: ind07:
3035 ; LINUX-64-STATIC: # %bb.0: # %entry
3036 ; LINUX-64-STATIC-NEXT: leaq ldst(,%rdi,4), %rax
3037 ; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)
3038 ; LINUX-64-STATIC-NEXT: retq
3040 ; LINUX-32-STATIC-LABEL: ind07:
3041 ; LINUX-32-STATIC: # %bb.0: # %entry
3042 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3043 ; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax
3044 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
3045 ; LINUX-32-STATIC-NEXT: retl
3047 ; LINUX-32-PIC-LABEL: ind07:
3048 ; LINUX-32-PIC: # %bb.0: # %entry
3049 ; LINUX-32-PIC-NEXT: calll .L34$pb
3050 ; LINUX-32-PIC-NEXT: .L34$pb:
3051 ; LINUX-32-PIC-NEXT: popl %eax
3052 ; LINUX-32-PIC-NEXT: .Ltmp34:
3053 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax
3054 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3055 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx
3056 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
3057 ; LINUX-32-PIC-NEXT: retl
3059 ; LINUX-64-PIC-LABEL: ind07:
3060 ; LINUX-64-PIC: # %bb.0: # %entry
3061 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
3062 ; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
3063 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
3064 ; LINUX-64-PIC-NEXT: retq
3066 ; DARWIN-32-STATIC-LABEL: ind07:
3067 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3068 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3069 ; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax
3070 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
3071 ; DARWIN-32-STATIC-NEXT: retl
3073 ; DARWIN-32-DYNAMIC-LABEL: ind07:
3074 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3075 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3076 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax
3077 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
3078 ; DARWIN-32-DYNAMIC-NEXT: retl
3080 ; DARWIN-32-PIC-LABEL: ind07:
3081 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3082 ; DARWIN-32-PIC-NEXT: calll L34$pb
3083 ; DARWIN-32-PIC-NEXT: L34$pb:
3084 ; DARWIN-32-PIC-NEXT: popl %eax
3085 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3086 ; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx
3087 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax)
3088 ; DARWIN-32-PIC-NEXT: retl
3090 ; DARWIN-64-STATIC-LABEL: ind07:
3091 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3092 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
3093 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
3094 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
3095 ; DARWIN-64-STATIC-NEXT: retq
3097 ; DARWIN-64-DYNAMIC-LABEL: ind07:
3098 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3099 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
3100 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
3101 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
3102 ; DARWIN-64-DYNAMIC-NEXT: retq
3104 ; DARWIN-64-PIC-LABEL: ind07:
3105 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3106 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
3107 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
3108 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
3109 ; DARWIN-64-PIC-NEXT: retq
3112 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i
3113 store i32* %0, i32** @lptr, align 8
3117 define void @ind08(i64 %i) nounwind {
3118 ; LINUX-64-STATIC-LABEL: ind08:
3119 ; LINUX-64-STATIC: # %bb.0: # %entry
3120 ; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax
3121 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
3122 ; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
3123 ; LINUX-64-STATIC-NEXT: retq
3125 ; LINUX-32-STATIC-LABEL: ind08:
3126 ; LINUX-32-STATIC: # %bb.0: # %entry
3127 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3128 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
3129 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
3130 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
3131 ; LINUX-32-STATIC-NEXT: retl
3133 ; LINUX-32-PIC-LABEL: ind08:
3134 ; LINUX-32-PIC: # %bb.0: # %entry
3135 ; LINUX-32-PIC-NEXT: calll .L35$pb
3136 ; LINUX-32-PIC-NEXT: .L35$pb:
3137 ; LINUX-32-PIC-NEXT: popl %eax
3138 ; LINUX-32-PIC-NEXT: .Ltmp35:
3139 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax
3140 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3141 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx
3142 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
3143 ; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
3144 ; LINUX-32-PIC-NEXT: retl
3146 ; LINUX-64-PIC-LABEL: ind08:
3147 ; LINUX-64-PIC: # %bb.0: # %entry
3148 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
3149 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
3150 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
3151 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
3152 ; LINUX-64-PIC-NEXT: retq
3154 ; DARWIN-32-STATIC-LABEL: ind08:
3155 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3156 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3157 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
3158 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
3159 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
3160 ; DARWIN-32-STATIC-NEXT: retl
3162 ; DARWIN-32-DYNAMIC-LABEL: ind08:
3163 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3164 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3165 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
3166 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
3167 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
3168 ; DARWIN-32-DYNAMIC-NEXT: retl
3170 ; DARWIN-32-PIC-LABEL: ind08:
3171 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3172 ; DARWIN-32-PIC-NEXT: calll L35$pb
3173 ; DARWIN-32-PIC-NEXT: L35$pb:
3174 ; DARWIN-32-PIC-NEXT: popl %eax
3175 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3176 ; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx
3177 ; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax
3178 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
3179 ; DARWIN-32-PIC-NEXT: retl
3181 ; DARWIN-64-STATIC-LABEL: ind08:
3182 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3183 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
3184 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
3185 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
3186 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
3187 ; DARWIN-64-STATIC-NEXT: retq
3189 ; DARWIN-64-DYNAMIC-LABEL: ind08:
3190 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3191 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
3192 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
3193 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
3194 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
3195 ; DARWIN-64-DYNAMIC-NEXT: retq
3197 ; DARWIN-64-PIC-LABEL: ind08:
3198 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3199 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
3200 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
3201 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
3202 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
3203 ; DARWIN-64-PIC-NEXT: retq
3206 %0 = load i32*, i32** @lptr, align 8
3207 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i
3208 %2 = load i32, i32* %1, align 4
3209 %3 = getelementptr i32, i32* %0, i64 %i
3210 store i32 %2, i32* %3, align 4
3214 define void @off00(i64 %i) nounwind {
3215 ; LINUX-64-STATIC-LABEL: off00:
3216 ; LINUX-64-STATIC: # %bb.0: # %entry
3217 ; LINUX-64-STATIC-NEXT: movl src+64(,%rdi,4), %eax
3218 ; LINUX-64-STATIC-NEXT: movl %eax, dst+64(,%rdi,4)
3219 ; LINUX-64-STATIC-NEXT: retq
3221 ; LINUX-32-STATIC-LABEL: off00:
3222 ; LINUX-32-STATIC: # %bb.0: # %entry
3223 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3224 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
3225 ; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4)
3226 ; LINUX-32-STATIC-NEXT: retl
3228 ; LINUX-32-PIC-LABEL: off00:
3229 ; LINUX-32-PIC: # %bb.0: # %entry
3230 ; LINUX-32-PIC-NEXT: calll .L36$pb
3231 ; LINUX-32-PIC-NEXT: .L36$pb:
3232 ; LINUX-32-PIC-NEXT: popl %eax
3233 ; LINUX-32-PIC-NEXT: .Ltmp36:
3234 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax
3235 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3236 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
3237 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3238 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
3239 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3240 ; LINUX-32-PIC-NEXT: retl
3242 ; LINUX-64-PIC-LABEL: off00:
3243 ; LINUX-64-PIC: # %bb.0: # %entry
3244 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
3245 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3246 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
3247 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3248 ; LINUX-64-PIC-NEXT: retq
3250 ; DARWIN-32-STATIC-LABEL: off00:
3251 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3252 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3253 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
3254 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4)
3255 ; DARWIN-32-STATIC-NEXT: retl
3257 ; DARWIN-32-DYNAMIC-LABEL: off00:
3258 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3259 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3260 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
3261 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3262 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
3263 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3264 ; DARWIN-32-DYNAMIC-NEXT: retl
3266 ; DARWIN-32-PIC-LABEL: off00:
3267 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3268 ; DARWIN-32-PIC-NEXT: calll L36$pb
3269 ; DARWIN-32-PIC-NEXT: L36$pb:
3270 ; DARWIN-32-PIC-NEXT: popl %eax
3271 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3272 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx
3273 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3274 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax
3275 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3276 ; DARWIN-32-PIC-NEXT: retl
3278 ; DARWIN-64-STATIC-LABEL: off00:
3279 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3280 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3281 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3282 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3283 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3284 ; DARWIN-64-STATIC-NEXT: retq
3286 ; DARWIN-64-DYNAMIC-LABEL: off00:
3287 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3288 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3289 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3290 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3291 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3292 ; DARWIN-64-DYNAMIC-NEXT: retq
3294 ; DARWIN-64-PIC-LABEL: off00:
3295 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3296 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3297 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3298 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3299 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3300 ; DARWIN-64-PIC-NEXT: retq
3304 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
3305 %2 = load i32, i32* %1, align 4
3306 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
3307 store i32 %2, i32* %3, align 4
3311 define void @oxf00(i64 %i) nounwind {
3312 ; LINUX-64-STATIC-LABEL: oxf00:
3313 ; LINUX-64-STATIC: # %bb.0: # %entry
3314 ; LINUX-64-STATIC-NEXT: movl xsrc+64(,%rdi,4), %eax
3315 ; LINUX-64-STATIC-NEXT: movl %eax, xdst+64(,%rdi,4)
3316 ; LINUX-64-STATIC-NEXT: retq
3318 ; LINUX-32-STATIC-LABEL: oxf00:
3319 ; LINUX-32-STATIC: # %bb.0: # %entry
3320 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3321 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
3322 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4)
3323 ; LINUX-32-STATIC-NEXT: retl
3325 ; LINUX-32-PIC-LABEL: oxf00:
3326 ; LINUX-32-PIC: # %bb.0: # %entry
3327 ; LINUX-32-PIC-NEXT: calll .L37$pb
3328 ; LINUX-32-PIC-NEXT: .L37$pb:
3329 ; LINUX-32-PIC-NEXT: popl %eax
3330 ; LINUX-32-PIC-NEXT: .Ltmp37:
3331 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax
3332 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3333 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx
3334 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3335 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
3336 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3337 ; LINUX-32-PIC-NEXT: retl
3339 ; LINUX-64-PIC-LABEL: oxf00:
3340 ; LINUX-64-PIC: # %bb.0: # %entry
3341 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
3342 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3343 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
3344 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3345 ; LINUX-64-PIC-NEXT: retq
3347 ; DARWIN-32-STATIC-LABEL: oxf00:
3348 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3349 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3350 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
3351 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4)
3352 ; DARWIN-32-STATIC-NEXT: retl
3354 ; DARWIN-32-DYNAMIC-LABEL: oxf00:
3355 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3356 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3357 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
3358 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3359 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
3360 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3361 ; DARWIN-32-DYNAMIC-NEXT: retl
3363 ; DARWIN-32-PIC-LABEL: oxf00:
3364 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3365 ; DARWIN-32-PIC-NEXT: calll L37$pb
3366 ; DARWIN-32-PIC-NEXT: L37$pb:
3367 ; DARWIN-32-PIC-NEXT: popl %eax
3368 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3369 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx
3370 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3371 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax
3372 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3373 ; DARWIN-32-PIC-NEXT: retl
3375 ; DARWIN-64-STATIC-LABEL: oxf00:
3376 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3377 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3378 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3379 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
3380 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3381 ; DARWIN-64-STATIC-NEXT: retq
3383 ; DARWIN-64-DYNAMIC-LABEL: oxf00:
3384 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3385 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3386 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3387 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
3388 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3389 ; DARWIN-64-DYNAMIC-NEXT: retq
3391 ; DARWIN-64-PIC-LABEL: oxf00:
3392 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3393 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3394 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3395 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
3396 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3397 ; DARWIN-64-PIC-NEXT: retq
3401 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
3402 %2 = load i32, i32* %1, align 4
3403 %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
3404 store i32 %2, i32* %3, align 4
3408 define void @off01(i64 %i) nounwind {
3409 ; LINUX-64-STATIC-LABEL: off01:
3410 ; LINUX-64-STATIC: # %bb.0: # %entry
3411 ; LINUX-64-STATIC-NEXT: leaq dst+64(,%rdi,4), %rax
3412 ; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip)
3413 ; LINUX-64-STATIC-NEXT: retq
3415 ; LINUX-32-STATIC-LABEL: off01:
3416 ; LINUX-32-STATIC: # %bb.0: # %entry
3417 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3418 ; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
3419 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
3420 ; LINUX-32-STATIC-NEXT: retl
3422 ; LINUX-32-PIC-LABEL: off01:
3423 ; LINUX-32-PIC: # %bb.0: # %entry
3424 ; LINUX-32-PIC-NEXT: calll .L38$pb
3425 ; LINUX-32-PIC-NEXT: .L38$pb:
3426 ; LINUX-32-PIC-NEXT: popl %eax
3427 ; LINUX-32-PIC-NEXT: .Ltmp38:
3428 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax
3429 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3430 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx
3431 ; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
3432 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
3433 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
3434 ; LINUX-32-PIC-NEXT: retl
3436 ; LINUX-64-PIC-LABEL: off01:
3437 ; LINUX-64-PIC: # %bb.0: # %entry
3438 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
3439 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3440 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3441 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3442 ; LINUX-64-PIC-NEXT: retq
3444 ; DARWIN-32-STATIC-LABEL: off01:
3445 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3446 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3447 ; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
3448 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
3449 ; DARWIN-32-STATIC-NEXT: retl
3451 ; DARWIN-32-DYNAMIC-LABEL: off01:
3452 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3453 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3454 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
3455 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
3456 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
3457 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
3458 ; DARWIN-32-DYNAMIC-NEXT: retl
3460 ; DARWIN-32-PIC-LABEL: off01:
3461 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3462 ; DARWIN-32-PIC-NEXT: calll L38$pb
3463 ; DARWIN-32-PIC-NEXT: L38$pb:
3464 ; DARWIN-32-PIC-NEXT: popl %eax
3465 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3466 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx
3467 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
3468 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax
3469 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
3470 ; DARWIN-32-PIC-NEXT: retl
3472 ; DARWIN-64-STATIC-LABEL: off01:
3473 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3474 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
3475 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3476 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3477 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
3478 ; DARWIN-64-STATIC-NEXT: retq
3480 ; DARWIN-64-DYNAMIC-LABEL: off01:
3481 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3482 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
3483 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3484 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3485 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
3486 ; DARWIN-64-DYNAMIC-NEXT: retq
3488 ; DARWIN-64-PIC-LABEL: off01:
3489 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3490 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
3491 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3492 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3493 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
3494 ; DARWIN-64-PIC-NEXT: retq
3497 %.sum = add i64 %i, 16
3498 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum
3499 store i32* %0, i32** @ptr, align 8
3503 define void @oxf01(i64 %i) nounwind {
3504 ; LINUX-64-STATIC-LABEL: oxf01:
3505 ; LINUX-64-STATIC: # %bb.0: # %entry
3506 ; LINUX-64-STATIC-NEXT: leaq xdst+64(,%rdi,4), %rax
3507 ; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip)
3508 ; LINUX-64-STATIC-NEXT: retq
3510 ; LINUX-32-STATIC-LABEL: oxf01:
3511 ; LINUX-32-STATIC: # %bb.0: # %entry
3512 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3513 ; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
3514 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
3515 ; LINUX-32-STATIC-NEXT: retl
3517 ; LINUX-32-PIC-LABEL: oxf01:
3518 ; LINUX-32-PIC: # %bb.0: # %entry
3519 ; LINUX-32-PIC-NEXT: calll .L39$pb
3520 ; LINUX-32-PIC-NEXT: .L39$pb:
3521 ; LINUX-32-PIC-NEXT: popl %eax
3522 ; LINUX-32-PIC-NEXT: .Ltmp39:
3523 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax
3524 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3525 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx
3526 ; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
3527 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
3528 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
3529 ; LINUX-32-PIC-NEXT: retl
3531 ; LINUX-64-PIC-LABEL: oxf01:
3532 ; LINUX-64-PIC: # %bb.0: # %entry
3533 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
3534 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3535 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3536 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3537 ; LINUX-64-PIC-NEXT: retq
3539 ; DARWIN-32-STATIC-LABEL: oxf01:
3540 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3541 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3542 ; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
3543 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
3544 ; DARWIN-32-STATIC-NEXT: retl
3546 ; DARWIN-32-DYNAMIC-LABEL: oxf01:
3547 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3548 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3549 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
3550 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
3551 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
3552 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
3553 ; DARWIN-32-DYNAMIC-NEXT: retl
3555 ; DARWIN-32-PIC-LABEL: oxf01:
3556 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3557 ; DARWIN-32-PIC-NEXT: calll L39$pb
3558 ; DARWIN-32-PIC-NEXT: L39$pb:
3559 ; DARWIN-32-PIC-NEXT: popl %eax
3560 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3561 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx
3562 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
3563 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax
3564 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
3565 ; DARWIN-32-PIC-NEXT: retl
3567 ; DARWIN-64-STATIC-LABEL: oxf01:
3568 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3569 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
3570 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3571 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3572 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
3573 ; DARWIN-64-STATIC-NEXT: retq
3575 ; DARWIN-64-DYNAMIC-LABEL: oxf01:
3576 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3577 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
3578 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3579 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3580 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
3581 ; DARWIN-64-DYNAMIC-NEXT: retq
3583 ; DARWIN-64-PIC-LABEL: oxf01:
3584 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3585 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
3586 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3587 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3588 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
3589 ; DARWIN-64-PIC-NEXT: retq
3592 %.sum = add i64 %i, 16
3593 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum
3594 store i32* %0, i32** @ptr, align 8
3598 define void @off02(i64 %i) nounwind {
3599 ; LINUX-64-STATIC-LABEL: off02:
3600 ; LINUX-64-STATIC: # %bb.0: # %entry
3601 ; LINUX-64-STATIC-NEXT: movl src+64(,%rdi,4), %eax
3602 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
3603 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3604 ; LINUX-64-STATIC-NEXT: retq
3606 ; LINUX-32-STATIC-LABEL: off02:
3607 ; LINUX-32-STATIC: # %bb.0: # %entry
3608 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3609 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
3610 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
3611 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3612 ; LINUX-32-STATIC-NEXT: retl
3614 ; LINUX-32-PIC-LABEL: off02:
3615 ; LINUX-32-PIC: # %bb.0: # %entry
3616 ; LINUX-32-PIC-NEXT: calll .L40$pb
3617 ; LINUX-32-PIC-NEXT: .L40$pb:
3618 ; LINUX-32-PIC-NEXT: popl %eax
3619 ; LINUX-32-PIC-NEXT: .Ltmp40:
3620 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax
3621 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3622 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
3623 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3624 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
3625 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
3626 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3627 ; LINUX-32-PIC-NEXT: retl
3629 ; LINUX-64-PIC-LABEL: off02:
3630 ; LINUX-64-PIC: # %bb.0: # %entry
3631 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
3632 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3633 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3634 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3635 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3636 ; LINUX-64-PIC-NEXT: retq
3638 ; DARWIN-32-STATIC-LABEL: off02:
3639 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3640 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3641 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
3642 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
3643 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3644 ; DARWIN-32-STATIC-NEXT: retl
3646 ; DARWIN-32-DYNAMIC-LABEL: off02:
3647 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3648 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3649 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
3650 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3651 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
3652 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
3653 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3654 ; DARWIN-32-DYNAMIC-NEXT: retl
3656 ; DARWIN-32-PIC-LABEL: off02:
3657 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3658 ; DARWIN-32-PIC-NEXT: calll L40$pb
3659 ; DARWIN-32-PIC-NEXT: L40$pb:
3660 ; DARWIN-32-PIC-NEXT: popl %eax
3661 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3662 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx
3663 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3664 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax
3665 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
3666 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3667 ; DARWIN-32-PIC-NEXT: retl
3669 ; DARWIN-64-STATIC-LABEL: off02:
3670 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3671 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3672 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3673 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3674 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
3675 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3676 ; DARWIN-64-STATIC-NEXT: retq
3678 ; DARWIN-64-DYNAMIC-LABEL: off02:
3679 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3680 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3681 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3682 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3683 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
3684 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3685 ; DARWIN-64-DYNAMIC-NEXT: retq
3687 ; DARWIN-64-PIC-LABEL: off02:
3688 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3689 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
3690 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3691 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3692 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
3693 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3694 ; DARWIN-64-PIC-NEXT: retq
3697 %0 = load i32*, i32** @ptr, align 8
3699 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
3700 %3 = load i32, i32* %2, align 4
3701 %4 = getelementptr i32, i32* %0, i64 %1
3702 store i32 %3, i32* %4, align 4
3706 define void @oxf02(i64 %i) nounwind {
3707 ; LINUX-64-STATIC-LABEL: oxf02:
3708 ; LINUX-64-STATIC: # %bb.0: # %entry
3709 ; LINUX-64-STATIC-NEXT: movl xsrc+64(,%rdi,4), %eax
3710 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
3711 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3712 ; LINUX-64-STATIC-NEXT: retq
3714 ; LINUX-32-STATIC-LABEL: oxf02:
3715 ; LINUX-32-STATIC: # %bb.0: # %entry
3716 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3717 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
3718 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
3719 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3720 ; LINUX-32-STATIC-NEXT: retl
3722 ; LINUX-32-PIC-LABEL: oxf02:
3723 ; LINUX-32-PIC: # %bb.0: # %entry
3724 ; LINUX-32-PIC-NEXT: calll .L41$pb
3725 ; LINUX-32-PIC-NEXT: .L41$pb:
3726 ; LINUX-32-PIC-NEXT: popl %eax
3727 ; LINUX-32-PIC-NEXT: .Ltmp41:
3728 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax
3729 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3730 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx
3731 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3732 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
3733 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
3734 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3735 ; LINUX-32-PIC-NEXT: retl
3737 ; LINUX-64-PIC-LABEL: oxf02:
3738 ; LINUX-64-PIC: # %bb.0: # %entry
3739 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
3740 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3741 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3742 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3743 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3744 ; LINUX-64-PIC-NEXT: retq
3746 ; DARWIN-32-STATIC-LABEL: oxf02:
3747 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3748 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3749 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
3750 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
3751 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3752 ; DARWIN-32-STATIC-NEXT: retl
3754 ; DARWIN-32-DYNAMIC-LABEL: oxf02:
3755 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3756 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3757 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
3758 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3759 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
3760 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
3761 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3762 ; DARWIN-32-DYNAMIC-NEXT: retl
3764 ; DARWIN-32-PIC-LABEL: oxf02:
3765 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3766 ; DARWIN-32-PIC-NEXT: calll L41$pb
3767 ; DARWIN-32-PIC-NEXT: L41$pb:
3768 ; DARWIN-32-PIC-NEXT: popl %eax
3769 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3770 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx
3771 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3772 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax
3773 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
3774 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3775 ; DARWIN-32-PIC-NEXT: retl
3777 ; DARWIN-64-STATIC-LABEL: oxf02:
3778 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3779 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3780 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3781 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3782 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
3783 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3784 ; DARWIN-64-STATIC-NEXT: retq
3786 ; DARWIN-64-DYNAMIC-LABEL: oxf02:
3787 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3788 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3789 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3790 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3791 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
3792 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3793 ; DARWIN-64-DYNAMIC-NEXT: retq
3795 ; DARWIN-64-PIC-LABEL: oxf02:
3796 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3797 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
3798 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3799 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3800 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
3801 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3802 ; DARWIN-64-PIC-NEXT: retq
3805 %0 = load i32*, i32** @ptr, align 8
3807 %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1
3808 %3 = load i32, i32* %2, align 4
3809 %4 = getelementptr i32, i32* %0, i64 %1
3810 store i32 %3, i32* %4, align 4
3814 define void @off03(i64 %i) nounwind {
3815 ; LINUX-64-STATIC-LABEL: off03:
3816 ; LINUX-64-STATIC: # %bb.0: # %entry
3817 ; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax
3818 ; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(,%rdi,4)
3819 ; LINUX-64-STATIC-NEXT: retq
3821 ; LINUX-32-STATIC-LABEL: off03:
3822 ; LINUX-32-STATIC: # %bb.0: # %entry
3823 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3824 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3825 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4)
3826 ; LINUX-32-STATIC-NEXT: retl
3828 ; LINUX-32-PIC-LABEL: off03:
3829 ; LINUX-32-PIC: # %bb.0: # %entry
3830 ; LINUX-32-PIC-NEXT: calll .L42$pb
3831 ; LINUX-32-PIC-NEXT: .L42$pb:
3832 ; LINUX-32-PIC-NEXT: popl %eax
3833 ; LINUX-32-PIC-NEXT: .Ltmp42:
3834 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax
3835 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3836 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
3837 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3838 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
3839 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3840 ; LINUX-32-PIC-NEXT: retl
3842 ; LINUX-64-PIC-LABEL: off03:
3843 ; LINUX-64-PIC: # %bb.0: # %entry
3844 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
3845 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3846 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
3847 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3848 ; LINUX-64-PIC-NEXT: retq
3850 ; DARWIN-32-STATIC-LABEL: off03:
3851 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3852 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3853 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3854 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3855 ; DARWIN-32-STATIC-NEXT: retl
3857 ; DARWIN-32-DYNAMIC-LABEL: off03:
3858 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3859 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3860 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3861 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3862 ; DARWIN-32-DYNAMIC-NEXT: retl
3864 ; DARWIN-32-PIC-LABEL: off03:
3865 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3866 ; DARWIN-32-PIC-NEXT: calll L42$pb
3867 ; DARWIN-32-PIC-NEXT: L42$pb:
3868 ; DARWIN-32-PIC-NEXT: popl %eax
3869 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3870 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx
3871 ; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4)
3872 ; DARWIN-32-PIC-NEXT: retl
3874 ; DARWIN-64-STATIC-LABEL: off03:
3875 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3876 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
3877 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3878 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
3879 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3880 ; DARWIN-64-STATIC-NEXT: retq
3882 ; DARWIN-64-DYNAMIC-LABEL: off03:
3883 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3884 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
3885 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3886 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
3887 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3888 ; DARWIN-64-DYNAMIC-NEXT: retq
3890 ; DARWIN-64-PIC-LABEL: off03:
3891 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3892 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
3893 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3894 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
3895 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3896 ; DARWIN-64-PIC-NEXT: retq
3900 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
3901 %2 = load i32, i32* %1, align 4
3902 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
3903 store i32 %2, i32* %3, align 4
3907 define void @off04(i64 %i) nounwind {
3908 ; LINUX-64-STATIC-LABEL: off04:
3909 ; LINUX-64-STATIC: # %bb.0: # %entry
3910 ; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax
3911 ; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)
3912 ; LINUX-64-STATIC-NEXT: retq
3914 ; LINUX-32-STATIC-LABEL: off04:
3915 ; LINUX-32-STATIC: # %bb.0: # %entry
3916 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3917 ; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
3918 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
3919 ; LINUX-32-STATIC-NEXT: retl
3921 ; LINUX-32-PIC-LABEL: off04:
3922 ; LINUX-32-PIC: # %bb.0: # %entry
3923 ; LINUX-32-PIC-NEXT: calll .L43$pb
3924 ; LINUX-32-PIC-NEXT: .L43$pb:
3925 ; LINUX-32-PIC-NEXT: popl %eax
3926 ; LINUX-32-PIC-NEXT: .Ltmp43:
3927 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax
3928 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3929 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx
3930 ; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
3931 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
3932 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
3933 ; LINUX-32-PIC-NEXT: retl
3935 ; LINUX-64-PIC-LABEL: off04:
3936 ; LINUX-64-PIC: # %bb.0: # %entry
3937 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
3938 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3939 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3940 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3941 ; LINUX-64-PIC-NEXT: retq
3943 ; DARWIN-32-STATIC-LABEL: off04:
3944 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
3945 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3946 ; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
3947 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
3948 ; DARWIN-32-STATIC-NEXT: retl
3950 ; DARWIN-32-DYNAMIC-LABEL: off04:
3951 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
3952 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
3953 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
3954 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
3955 ; DARWIN-32-DYNAMIC-NEXT: retl
3957 ; DARWIN-32-PIC-LABEL: off04:
3958 ; DARWIN-32-PIC: ## %bb.0: ## %entry
3959 ; DARWIN-32-PIC-NEXT: calll L43$pb
3960 ; DARWIN-32-PIC-NEXT: L43$pb:
3961 ; DARWIN-32-PIC-NEXT: popl %eax
3962 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
3963 ; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx
3964 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax)
3965 ; DARWIN-32-PIC-NEXT: retl
3967 ; DARWIN-64-STATIC-LABEL: off04:
3968 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
3969 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
3970 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3971 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
3972 ; DARWIN-64-STATIC-NEXT: retq
3974 ; DARWIN-64-DYNAMIC-LABEL: off04:
3975 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
3976 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
3977 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3978 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
3979 ; DARWIN-64-DYNAMIC-NEXT: retq
3981 ; DARWIN-64-PIC-LABEL: off04:
3982 ; DARWIN-64-PIC: ## %bb.0: ## %entry
3983 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
3984 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3985 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
3986 ; DARWIN-64-PIC-NEXT: retq
3989 %.sum = add i64 %i, 16
3990 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum
3991 store i32* %0, i32** @dptr, align 8
3995 define void @off05(i64 %i) nounwind {
3996 ; LINUX-64-STATIC-LABEL: off05:
3997 ; LINUX-64-STATIC: # %bb.0: # %entry
3998 ; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax
3999 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
4000 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4001 ; LINUX-64-STATIC-NEXT: retq
4003 ; LINUX-32-STATIC-LABEL: off05:
4004 ; LINUX-32-STATIC: # %bb.0: # %entry
4005 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4006 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
4007 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
4008 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4009 ; LINUX-32-STATIC-NEXT: retl
4011 ; LINUX-32-PIC-LABEL: off05:
4012 ; LINUX-32-PIC: # %bb.0: # %entry
4013 ; LINUX-32-PIC-NEXT: calll .L44$pb
4014 ; LINUX-32-PIC-NEXT: .L44$pb:
4015 ; LINUX-32-PIC-NEXT: popl %eax
4016 ; LINUX-32-PIC-NEXT: .Ltmp44:
4017 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax
4018 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4019 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
4020 ; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
4021 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
4022 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
4023 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
4024 ; LINUX-32-PIC-NEXT: retl
4026 ; LINUX-64-PIC-LABEL: off05:
4027 ; LINUX-64-PIC: # %bb.0: # %entry
4028 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
4029 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4030 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
4031 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
4032 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4033 ; LINUX-64-PIC-NEXT: retq
4035 ; DARWIN-32-STATIC-LABEL: off05:
4036 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4037 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4038 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
4039 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
4040 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4041 ; DARWIN-32-STATIC-NEXT: retl
4043 ; DARWIN-32-DYNAMIC-LABEL: off05:
4044 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4045 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4046 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
4047 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
4048 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4049 ; DARWIN-32-DYNAMIC-NEXT: retl
4051 ; DARWIN-32-PIC-LABEL: off05:
4052 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4053 ; DARWIN-32-PIC-NEXT: calll L44$pb
4054 ; DARWIN-32-PIC-NEXT: L44$pb:
4055 ; DARWIN-32-PIC-NEXT: popl %eax
4056 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4057 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx
4058 ; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax
4059 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
4060 ; DARWIN-32-PIC-NEXT: retl
4062 ; DARWIN-64-STATIC-LABEL: off05:
4063 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4064 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
4065 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
4066 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
4067 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4068 ; DARWIN-64-STATIC-NEXT: retq
4070 ; DARWIN-64-DYNAMIC-LABEL: off05:
4071 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4072 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
4073 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
4074 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
4075 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4076 ; DARWIN-64-DYNAMIC-NEXT: retq
4078 ; DARWIN-64-PIC-LABEL: off05:
4079 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4080 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
4081 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4082 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
4083 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4084 ; DARWIN-64-PIC-NEXT: retq
4087 %0 = load i32*, i32** @dptr, align 8
4089 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
4090 %3 = load i32, i32* %2, align 4
4091 %4 = getelementptr i32, i32* %0, i64 %1
4092 store i32 %3, i32* %4, align 4
4096 define void @off06(i64 %i) nounwind {
4097 ; LINUX-64-STATIC-LABEL: off06:
4098 ; LINUX-64-STATIC: # %bb.0: # %entry
4099 ; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax
4100 ; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(,%rdi,4)
4101 ; LINUX-64-STATIC-NEXT: retq
4103 ; LINUX-32-STATIC-LABEL: off06:
4104 ; LINUX-32-STATIC: # %bb.0: # %entry
4105 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4106 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
4107 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4)
4108 ; LINUX-32-STATIC-NEXT: retl
4110 ; LINUX-32-PIC-LABEL: off06:
4111 ; LINUX-32-PIC: # %bb.0: # %entry
4112 ; LINUX-32-PIC-NEXT: calll .L45$pb
4113 ; LINUX-32-PIC-NEXT: .L45$pb:
4114 ; LINUX-32-PIC-NEXT: popl %eax
4115 ; LINUX-32-PIC-NEXT: .Ltmp45:
4116 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax
4117 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4118 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx
4119 ; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4)
4120 ; LINUX-32-PIC-NEXT: retl
4122 ; LINUX-64-PIC-LABEL: off06:
4123 ; LINUX-64-PIC: # %bb.0: # %entry
4124 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
4125 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4126 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
4127 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4128 ; LINUX-64-PIC-NEXT: retq
4130 ; DARWIN-32-STATIC-LABEL: off06:
4131 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4132 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4133 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
4134 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
4135 ; DARWIN-32-STATIC-NEXT: retl
4137 ; DARWIN-32-DYNAMIC-LABEL: off06:
4138 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4139 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4140 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
4141 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
4142 ; DARWIN-32-DYNAMIC-NEXT: retl
4144 ; DARWIN-32-PIC-LABEL: off06:
4145 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4146 ; DARWIN-32-PIC-NEXT: calll L45$pb
4147 ; DARWIN-32-PIC-NEXT: L45$pb:
4148 ; DARWIN-32-PIC-NEXT: popl %eax
4149 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4150 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx
4151 ; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4)
4152 ; DARWIN-32-PIC-NEXT: retl
4154 ; DARWIN-64-STATIC-LABEL: off06:
4155 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4156 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
4157 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
4158 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
4159 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4160 ; DARWIN-64-STATIC-NEXT: retq
4162 ; DARWIN-64-DYNAMIC-LABEL: off06:
4163 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4164 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
4165 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
4166 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
4167 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4168 ; DARWIN-64-DYNAMIC-NEXT: retq
4170 ; DARWIN-64-PIC-LABEL: off06:
4171 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4172 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
4173 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4174 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
4175 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4176 ; DARWIN-64-PIC-NEXT: retq
4180 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
4181 %2 = load i32, i32* %1, align 4
4182 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
4183 store i32 %2, i32* %3, align 4
4187 define void @off07(i64 %i) nounwind {
4188 ; LINUX-64-STATIC-LABEL: off07:
4189 ; LINUX-64-STATIC: # %bb.0: # %entry
4190 ; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax
4191 ; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)
4192 ; LINUX-64-STATIC-NEXT: retq
4194 ; LINUX-32-STATIC-LABEL: off07:
4195 ; LINUX-32-STATIC: # %bb.0: # %entry
4196 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4197 ; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
4198 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
4199 ; LINUX-32-STATIC-NEXT: retl
4201 ; LINUX-32-PIC-LABEL: off07:
4202 ; LINUX-32-PIC: # %bb.0: # %entry
4203 ; LINUX-32-PIC-NEXT: calll .L46$pb
4204 ; LINUX-32-PIC-NEXT: .L46$pb:
4205 ; LINUX-32-PIC-NEXT: popl %eax
4206 ; LINUX-32-PIC-NEXT: .Ltmp46:
4207 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax
4208 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4209 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx
4210 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
4211 ; LINUX-32-PIC-NEXT: retl
4213 ; LINUX-64-PIC-LABEL: off07:
4214 ; LINUX-64-PIC: # %bb.0: # %entry
4215 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
4216 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
4217 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
4218 ; LINUX-64-PIC-NEXT: retq
4220 ; DARWIN-32-STATIC-LABEL: off07:
4221 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4222 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4223 ; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
4224 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
4225 ; DARWIN-32-STATIC-NEXT: retl
4227 ; DARWIN-32-DYNAMIC-LABEL: off07:
4228 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4229 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4230 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
4231 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
4232 ; DARWIN-32-DYNAMIC-NEXT: retl
4234 ; DARWIN-32-PIC-LABEL: off07:
4235 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4236 ; DARWIN-32-PIC-NEXT: calll L46$pb
4237 ; DARWIN-32-PIC-NEXT: L46$pb:
4238 ; DARWIN-32-PIC-NEXT: popl %eax
4239 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4240 ; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx
4241 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax)
4242 ; DARWIN-32-PIC-NEXT: retl
4244 ; DARWIN-64-STATIC-LABEL: off07:
4245 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4246 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
4247 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
4248 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
4249 ; DARWIN-64-STATIC-NEXT: retq
4251 ; DARWIN-64-DYNAMIC-LABEL: off07:
4252 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4253 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
4254 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
4255 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
4256 ; DARWIN-64-DYNAMIC-NEXT: retq
4258 ; DARWIN-64-PIC-LABEL: off07:
4259 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4260 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
4261 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
4262 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
4263 ; DARWIN-64-PIC-NEXT: retq
4266 %.sum = add i64 %i, 16
4267 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum
4268 store i32* %0, i32** @lptr, align 8
4272 define void @off08(i64 %i) nounwind {
4273 ; LINUX-64-STATIC-LABEL: off08:
4274 ; LINUX-64-STATIC: # %bb.0: # %entry
4275 ; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax
4276 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
4277 ; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4278 ; LINUX-64-STATIC-NEXT: retq
4280 ; LINUX-32-STATIC-LABEL: off08:
4281 ; LINUX-32-STATIC: # %bb.0: # %entry
4282 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4283 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
4284 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
4285 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4286 ; LINUX-32-STATIC-NEXT: retl
4288 ; LINUX-32-PIC-LABEL: off08:
4289 ; LINUX-32-PIC: # %bb.0: # %entry
4290 ; LINUX-32-PIC-NEXT: calll .L47$pb
4291 ; LINUX-32-PIC-NEXT: .L47$pb:
4292 ; LINUX-32-PIC-NEXT: popl %eax
4293 ; LINUX-32-PIC-NEXT: .Ltmp47:
4294 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax
4295 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4296 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx
4297 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
4298 ; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
4299 ; LINUX-32-PIC-NEXT: retl
4301 ; LINUX-64-PIC-LABEL: off08:
4302 ; LINUX-64-PIC: # %bb.0: # %entry
4303 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
4304 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4305 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
4306 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4307 ; LINUX-64-PIC-NEXT: retq
4309 ; DARWIN-32-STATIC-LABEL: off08:
4310 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4311 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4312 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
4313 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
4314 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4315 ; DARWIN-32-STATIC-NEXT: retl
4317 ; DARWIN-32-DYNAMIC-LABEL: off08:
4318 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4319 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
4320 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
4321 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
4322 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
4323 ; DARWIN-32-DYNAMIC-NEXT: retl
4325 ; DARWIN-32-PIC-LABEL: off08:
4326 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4327 ; DARWIN-32-PIC-NEXT: calll L47$pb
4328 ; DARWIN-32-PIC-NEXT: L47$pb:
4329 ; DARWIN-32-PIC-NEXT: popl %eax
4330 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
4331 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx
4332 ; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax
4333 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
4334 ; DARWIN-32-PIC-NEXT: retl
4336 ; DARWIN-64-STATIC-LABEL: off08:
4337 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4338 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
4339 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
4340 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
4341 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4342 ; DARWIN-64-STATIC-NEXT: retq
4344 ; DARWIN-64-DYNAMIC-LABEL: off08:
4345 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4346 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
4347 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
4348 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
4349 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4350 ; DARWIN-64-DYNAMIC-NEXT: retq
4352 ; DARWIN-64-PIC-LABEL: off08:
4353 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4354 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
4355 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
4356 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
4357 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
4358 ; DARWIN-64-PIC-NEXT: retq
4361 %0 = load i32*, i32** @lptr, align 8
4363 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
4364 %3 = load i32, i32* %2, align 4
4365 %4 = getelementptr i32, i32* %0, i64 %1
4366 store i32 %3, i32* %4, align 4
4370 define void @moo00(i64 %i) nounwind {
4371 ; LINUX-64-STATIC-LABEL: moo00:
4372 ; LINUX-64-STATIC: # %bb.0: # %entry
4373 ; LINUX-64-STATIC-NEXT: movl src+262144(%rip), %eax
4374 ; LINUX-64-STATIC-NEXT: movl %eax, dst+262144(%rip)
4375 ; LINUX-64-STATIC-NEXT: retq
4377 ; LINUX-32-STATIC-LABEL: moo00:
4378 ; LINUX-32-STATIC: # %bb.0: # %entry
4379 ; LINUX-32-STATIC-NEXT: movl src+262144, %eax
4380 ; LINUX-32-STATIC-NEXT: movl %eax, dst+262144
4381 ; LINUX-32-STATIC-NEXT: retl
4383 ; LINUX-32-PIC-LABEL: moo00:
4384 ; LINUX-32-PIC: # %bb.0: # %entry
4385 ; LINUX-32-PIC-NEXT: calll .L48$pb
4386 ; LINUX-32-PIC-NEXT: .L48$pb:
4387 ; LINUX-32-PIC-NEXT: popl %eax
4388 ; LINUX-32-PIC-NEXT: .Ltmp48:
4389 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax
4390 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
4391 ; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx
4392 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
4393 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)
4394 ; LINUX-32-PIC-NEXT: retl
4396 ; LINUX-64-PIC-LABEL: moo00:
4397 ; LINUX-64-PIC: # %bb.0: # %entry
4398 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
4399 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
4400 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
4401 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
4402 ; LINUX-64-PIC-NEXT: retq
4404 ; DARWIN-32-STATIC-LABEL: moo00:
4405 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4406 ; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax
4407 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144
4408 ; DARWIN-32-STATIC-NEXT: retl
4410 ; DARWIN-32-DYNAMIC-LABEL: moo00:
4411 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4412 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
4413 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
4414 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
4415 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
4416 ; DARWIN-32-DYNAMIC-NEXT: retl
4418 ; DARWIN-32-PIC-LABEL: moo00:
4419 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4420 ; DARWIN-32-PIC-NEXT: calll L48$pb
4421 ; DARWIN-32-PIC-NEXT: L48$pb:
4422 ; DARWIN-32-PIC-NEXT: popl %eax
4423 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx
4424 ; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
4425 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax
4426 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
4427 ; DARWIN-32-PIC-NEXT: retl
4429 ; DARWIN-64-STATIC-LABEL: moo00:
4430 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4431 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4432 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
4433 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4434 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4435 ; DARWIN-64-STATIC-NEXT: retq
4437 ; DARWIN-64-DYNAMIC-LABEL: moo00:
4438 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4439 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4440 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
4441 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4442 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
4443 ; DARWIN-64-DYNAMIC-NEXT: retq
4445 ; DARWIN-64-PIC-LABEL: moo00:
4446 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4447 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4448 ; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
4449 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4450 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
4451 ; DARWIN-64-PIC-NEXT: retq
4454 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
4455 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4
4459 define void @moo01(i64 %i) nounwind {
4460 ; LINUX-64-STATIC-LABEL: moo01:
4461 ; LINUX-64-STATIC: # %bb.0: # %entry
4462 ; LINUX-64-STATIC-NEXT: movq $dst+262144, ptr(%rip)
4463 ; LINUX-64-STATIC-NEXT: retq
4465 ; LINUX-32-STATIC-LABEL: moo01:
4466 ; LINUX-32-STATIC: # %bb.0: # %entry
4467 ; LINUX-32-STATIC-NEXT: movl $dst+262144, ptr
4468 ; LINUX-32-STATIC-NEXT: retl
4470 ; LINUX-32-PIC-LABEL: moo01:
4471 ; LINUX-32-PIC: # %bb.0: # %entry
4472 ; LINUX-32-PIC-NEXT: calll .L49$pb
4473 ; LINUX-32-PIC-NEXT: .L49$pb:
4474 ; LINUX-32-PIC-NEXT: popl %eax
4475 ; LINUX-32-PIC-NEXT: .Ltmp49:
4476 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax
4477 ; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000
4478 ; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx
4479 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
4480 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
4481 ; LINUX-32-PIC-NEXT: retl
4483 ; LINUX-64-PIC-LABEL: moo01:
4484 ; LINUX-64-PIC: # %bb.0: # %entry
4485 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
4486 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
4487 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
4488 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
4489 ; LINUX-64-PIC-NEXT: retq
4491 ; DARWIN-32-STATIC-LABEL: moo01:
4492 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4493 ; DARWIN-32-STATIC-NEXT: movl $_dst+262144, _ptr
4494 ; DARWIN-32-STATIC-NEXT: retl
4496 ; DARWIN-32-DYNAMIC-LABEL: moo01:
4497 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4498 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
4499 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
4500 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
4501 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
4502 ; DARWIN-32-DYNAMIC-NEXT: retl
4504 ; DARWIN-32-PIC-LABEL: moo01:
4505 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4506 ; DARWIN-32-PIC-NEXT: calll L49$pb
4507 ; DARWIN-32-PIC-NEXT: L49$pb:
4508 ; DARWIN-32-PIC-NEXT: popl %eax
4509 ; DARWIN-32-PIC-NEXT: movl $262144, %ecx ## imm = 0x40000
4510 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx
4511 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax
4512 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
4513 ; DARWIN-32-PIC-NEXT: retl
4515 ; DARWIN-64-STATIC-LABEL: moo01:
4516 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4517 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
4518 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
4519 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4520 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
4521 ; DARWIN-64-STATIC-NEXT: retq
4523 ; DARWIN-64-DYNAMIC-LABEL: moo01:
4524 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4525 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
4526 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
4527 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4528 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
4529 ; DARWIN-64-DYNAMIC-NEXT: retq
4531 ; DARWIN-64-PIC-LABEL: moo01:
4532 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4533 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
4534 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
4535 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4536 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
4537 ; DARWIN-64-PIC-NEXT: retq
4540 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
4544 define void @moo02(i64 %i) nounwind {
4545 ; LINUX-64-STATIC-LABEL: moo02:
4546 ; LINUX-64-STATIC: # %bb.0: # %entry
4547 ; LINUX-64-STATIC-NEXT: movl src+262144(%rip), %eax
4548 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
4549 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4550 ; LINUX-64-STATIC-NEXT: retq
4552 ; LINUX-32-STATIC-LABEL: moo02:
4553 ; LINUX-32-STATIC: # %bb.0: # %entry
4554 ; LINUX-32-STATIC-NEXT: movl src+262144, %eax
4555 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
4556 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4557 ; LINUX-32-STATIC-NEXT: retl
4559 ; LINUX-32-PIC-LABEL: moo02:
4560 ; LINUX-32-PIC: # %bb.0: # %entry
4561 ; LINUX-32-PIC-NEXT: calll .L50$pb
4562 ; LINUX-32-PIC-NEXT: .L50$pb:
4563 ; LINUX-32-PIC-NEXT: popl %eax
4564 ; LINUX-32-PIC-NEXT: .Ltmp50:
4565 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax
4566 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx
4567 ; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx
4568 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
4569 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
4570 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)
4571 ; LINUX-32-PIC-NEXT: retl
4573 ; LINUX-64-PIC-LABEL: moo02:
4574 ; LINUX-64-PIC: # %bb.0: # %entry
4575 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
4576 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
4577 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
4578 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
4579 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
4580 ; LINUX-64-PIC-NEXT: retq
4582 ; DARWIN-32-STATIC-LABEL: moo02:
4583 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4584 ; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax
4585 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
4586 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4587 ; DARWIN-32-STATIC-NEXT: retl
4589 ; DARWIN-32-DYNAMIC-LABEL: moo02:
4590 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4591 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
4592 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
4593 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
4594 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
4595 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
4596 ; DARWIN-32-DYNAMIC-NEXT: retl
4598 ; DARWIN-32-PIC-LABEL: moo02:
4599 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4600 ; DARWIN-32-PIC-NEXT: calll L50$pb
4601 ; DARWIN-32-PIC-NEXT: L50$pb:
4602 ; DARWIN-32-PIC-NEXT: popl %eax
4603 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx
4604 ; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
4605 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax
4606 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
4607 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
4608 ; DARWIN-32-PIC-NEXT: retl
4610 ; DARWIN-64-STATIC-LABEL: moo02:
4611 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4612 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4613 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
4614 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4615 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
4616 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4617 ; DARWIN-64-STATIC-NEXT: retq
4619 ; DARWIN-64-DYNAMIC-LABEL: moo02:
4620 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4621 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4622 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
4623 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4624 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
4625 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
4626 ; DARWIN-64-DYNAMIC-NEXT: retq
4628 ; DARWIN-64-PIC-LABEL: moo02:
4629 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4630 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
4631 ; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
4632 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4633 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
4634 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
4635 ; DARWIN-64-PIC-NEXT: retq
4638 %0 = load i32*, i32** @ptr, align 8
4639 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4
4640 %2 = getelementptr i32, i32* %0, i64 65536
4641 store i32 %1, i32* %2, align 4
4645 define void @moo03(i64 %i) nounwind {
4646 ; LINUX-64-STATIC-LABEL: moo03:
4647 ; LINUX-64-STATIC: # %bb.0: # %entry
4648 ; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax
4649 ; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(%rip)
4650 ; LINUX-64-STATIC-NEXT: retq
4652 ; LINUX-32-STATIC-LABEL: moo03:
4653 ; LINUX-32-STATIC: # %bb.0: # %entry
4654 ; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax
4655 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144
4656 ; LINUX-32-STATIC-NEXT: retl
4658 ; LINUX-32-PIC-LABEL: moo03:
4659 ; LINUX-32-PIC: # %bb.0: # %entry
4660 ; LINUX-32-PIC-NEXT: calll .L51$pb
4661 ; LINUX-32-PIC-NEXT: .L51$pb:
4662 ; LINUX-32-PIC-NEXT: popl %eax
4663 ; LINUX-32-PIC-NEXT: .Ltmp51:
4664 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax
4665 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
4666 ; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx
4667 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
4668 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)
4669 ; LINUX-32-PIC-NEXT: retl
4671 ; LINUX-64-PIC-LABEL: moo03:
4672 ; LINUX-64-PIC: # %bb.0: # %entry
4673 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
4674 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
4675 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
4676 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
4677 ; LINUX-64-PIC-NEXT: retq
4679 ; DARWIN-32-STATIC-LABEL: moo03:
4680 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4681 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax
4682 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144
4683 ; DARWIN-32-STATIC-NEXT: retl
4685 ; DARWIN-32-DYNAMIC-LABEL: moo03:
4686 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4687 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax
4688 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144
4689 ; DARWIN-32-DYNAMIC-NEXT: retl
4691 ; DARWIN-32-PIC-LABEL: moo03:
4692 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4693 ; DARWIN-32-PIC-NEXT: calll L51$pb
4694 ; DARWIN-32-PIC-NEXT: L51$pb:
4695 ; DARWIN-32-PIC-NEXT: popl %eax
4696 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx
4697 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax)
4698 ; DARWIN-32-PIC-NEXT: retl
4700 ; DARWIN-64-STATIC-LABEL: moo03:
4701 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4702 ; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax
4703 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip)
4704 ; DARWIN-64-STATIC-NEXT: retq
4706 ; DARWIN-64-DYNAMIC-LABEL: moo03:
4707 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4708 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax
4709 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip)
4710 ; DARWIN-64-DYNAMIC-NEXT: retq
4712 ; DARWIN-64-PIC-LABEL: moo03:
4713 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4714 ; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax
4715 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip)
4716 ; DARWIN-64-PIC-NEXT: retq
4719 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
4720 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32
4724 define void @moo04(i64 %i) nounwind {
4725 ; LINUX-64-STATIC-LABEL: moo04:
4726 ; LINUX-64-STATIC: # %bb.0: # %entry
4727 ; LINUX-64-STATIC-NEXT: movq $ddst+262144, dptr(%rip)
4728 ; LINUX-64-STATIC-NEXT: retq
4730 ; LINUX-32-STATIC-LABEL: moo04:
4731 ; LINUX-32-STATIC: # %bb.0: # %entry
4732 ; LINUX-32-STATIC-NEXT: movl $ddst+262144, dptr
4733 ; LINUX-32-STATIC-NEXT: retl
4735 ; LINUX-32-PIC-LABEL: moo04:
4736 ; LINUX-32-PIC: # %bb.0: # %entry
4737 ; LINUX-32-PIC-NEXT: calll .L52$pb
4738 ; LINUX-32-PIC-NEXT: .L52$pb:
4739 ; LINUX-32-PIC-NEXT: popl %eax
4740 ; LINUX-32-PIC-NEXT: .Ltmp52:
4741 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax
4742 ; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000
4743 ; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx
4744 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
4745 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
4746 ; LINUX-32-PIC-NEXT: retl
4748 ; LINUX-64-PIC-LABEL: moo04:
4749 ; LINUX-64-PIC: # %bb.0: # %entry
4750 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
4751 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax
4752 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
4753 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
4754 ; LINUX-64-PIC-NEXT: retq
4756 ; DARWIN-32-STATIC-LABEL: moo04:
4757 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4758 ; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, _dptr
4759 ; DARWIN-32-STATIC-NEXT: retl
4761 ; DARWIN-32-DYNAMIC-LABEL: moo04:
4762 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4763 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, _dptr
4764 ; DARWIN-32-DYNAMIC-NEXT: retl
4766 ; DARWIN-32-PIC-LABEL: moo04:
4767 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4768 ; DARWIN-32-PIC-NEXT: calll L52$pb
4769 ; DARWIN-32-PIC-NEXT: L52$pb:
4770 ; DARWIN-32-PIC-NEXT: popl %eax
4771 ; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx
4772 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax)
4773 ; DARWIN-32-PIC-NEXT: retl
4775 ; DARWIN-64-STATIC-LABEL: moo04:
4776 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4777 ; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax
4778 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
4779 ; DARWIN-64-STATIC-NEXT: retq
4781 ; DARWIN-64-DYNAMIC-LABEL: moo04:
4782 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4783 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax
4784 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
4785 ; DARWIN-64-DYNAMIC-NEXT: retq
4787 ; DARWIN-64-PIC-LABEL: moo04:
4788 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4789 ; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax
4790 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
4791 ; DARWIN-64-PIC-NEXT: retq
4794 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
4798 define void @moo05(i64 %i) nounwind {
4799 ; LINUX-64-STATIC-LABEL: moo05:
4800 ; LINUX-64-STATIC: # %bb.0: # %entry
4801 ; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax
4802 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
4803 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4804 ; LINUX-64-STATIC-NEXT: retq
4806 ; LINUX-32-STATIC-LABEL: moo05:
4807 ; LINUX-32-STATIC: # %bb.0: # %entry
4808 ; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax
4809 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
4810 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4811 ; LINUX-32-STATIC-NEXT: retl
4813 ; LINUX-32-PIC-LABEL: moo05:
4814 ; LINUX-32-PIC: # %bb.0: # %entry
4815 ; LINUX-32-PIC-NEXT: calll .L53$pb
4816 ; LINUX-32-PIC-NEXT: .L53$pb:
4817 ; LINUX-32-PIC-NEXT: popl %eax
4818 ; LINUX-32-PIC-NEXT: .Ltmp53:
4819 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax
4820 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx
4821 ; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx
4822 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
4823 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
4824 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)
4825 ; LINUX-32-PIC-NEXT: retl
4827 ; LINUX-64-PIC-LABEL: moo05:
4828 ; LINUX-64-PIC: # %bb.0: # %entry
4829 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
4830 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
4831 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
4832 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
4833 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
4834 ; LINUX-64-PIC-NEXT: retq
4836 ; DARWIN-32-STATIC-LABEL: moo05:
4837 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4838 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax
4839 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
4840 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4841 ; DARWIN-32-STATIC-NEXT: retl
4843 ; DARWIN-32-DYNAMIC-LABEL: moo05:
4844 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4845 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax
4846 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
4847 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
4848 ; DARWIN-32-DYNAMIC-NEXT: retl
4850 ; DARWIN-32-PIC-LABEL: moo05:
4851 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4852 ; DARWIN-32-PIC-NEXT: calll L53$pb
4853 ; DARWIN-32-PIC-NEXT: L53$pb:
4854 ; DARWIN-32-PIC-NEXT: popl %eax
4855 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx
4856 ; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax
4857 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
4858 ; DARWIN-32-PIC-NEXT: retl
4860 ; DARWIN-64-STATIC-LABEL: moo05:
4861 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4862 ; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax
4863 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
4864 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4865 ; DARWIN-64-STATIC-NEXT: retq
4867 ; DARWIN-64-DYNAMIC-LABEL: moo05:
4868 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4869 ; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax
4870 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
4871 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
4872 ; DARWIN-64-DYNAMIC-NEXT: retq
4874 ; DARWIN-64-PIC-LABEL: moo05:
4875 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4876 ; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax
4877 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
4878 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
4879 ; DARWIN-64-PIC-NEXT: retq
4882 %0 = load i32*, i32** @dptr, align 8
4883 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32
4884 %2 = getelementptr i32, i32* %0, i64 65536
4885 store i32 %1, i32* %2, align 4
4889 define void @moo06(i64 %i) nounwind {
4890 ; LINUX-64-STATIC-LABEL: moo06:
4891 ; LINUX-64-STATIC: # %bb.0: # %entry
4892 ; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax
4893 ; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(%rip)
4894 ; LINUX-64-STATIC-NEXT: retq
4896 ; LINUX-32-STATIC-LABEL: moo06:
4897 ; LINUX-32-STATIC: # %bb.0: # %entry
4898 ; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax
4899 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144
4900 ; LINUX-32-STATIC-NEXT: retl
4902 ; LINUX-32-PIC-LABEL: moo06:
4903 ; LINUX-32-PIC: # %bb.0: # %entry
4904 ; LINUX-32-PIC-NEXT: calll .L54$pb
4905 ; LINUX-32-PIC-NEXT: .L54$pb:
4906 ; LINUX-32-PIC-NEXT: popl %eax
4907 ; LINUX-32-PIC-NEXT: .Ltmp54:
4908 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax
4909 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx
4910 ; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax)
4911 ; LINUX-32-PIC-NEXT: retl
4913 ; LINUX-64-PIC-LABEL: moo06:
4914 ; LINUX-64-PIC: # %bb.0: # %entry
4915 ; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax
4916 ; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip)
4917 ; LINUX-64-PIC-NEXT: retq
4919 ; DARWIN-32-STATIC-LABEL: moo06:
4920 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4921 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax
4922 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144
4923 ; DARWIN-32-STATIC-NEXT: retl
4925 ; DARWIN-32-DYNAMIC-LABEL: moo06:
4926 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4927 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax
4928 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144
4929 ; DARWIN-32-DYNAMIC-NEXT: retl
4931 ; DARWIN-32-PIC-LABEL: moo06:
4932 ; DARWIN-32-PIC: ## %bb.0: ## %entry
4933 ; DARWIN-32-PIC-NEXT: calll L54$pb
4934 ; DARWIN-32-PIC-NEXT: L54$pb:
4935 ; DARWIN-32-PIC-NEXT: popl %eax
4936 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx
4937 ; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax)
4938 ; DARWIN-32-PIC-NEXT: retl
4940 ; DARWIN-64-STATIC-LABEL: moo06:
4941 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
4942 ; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax
4943 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip)
4944 ; DARWIN-64-STATIC-NEXT: retq
4946 ; DARWIN-64-DYNAMIC-LABEL: moo06:
4947 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
4948 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax
4949 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip)
4950 ; DARWIN-64-DYNAMIC-NEXT: retq
4952 ; DARWIN-64-PIC-LABEL: moo06:
4953 ; DARWIN-64-PIC: ## %bb.0: ## %entry
4954 ; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax
4955 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip)
4956 ; DARWIN-64-PIC-NEXT: retq
4959 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
4960 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4
4964 define void @moo07(i64 %i) nounwind {
4965 ; LINUX-64-STATIC-LABEL: moo07:
4966 ; LINUX-64-STATIC: # %bb.0: # %entry
4967 ; LINUX-64-STATIC-NEXT: movq $ldst+262144, lptr(%rip)
4968 ; LINUX-64-STATIC-NEXT: retq
4970 ; LINUX-32-STATIC-LABEL: moo07:
4971 ; LINUX-32-STATIC: # %bb.0: # %entry
4972 ; LINUX-32-STATIC-NEXT: movl $ldst+262144, lptr
4973 ; LINUX-32-STATIC-NEXT: retl
4975 ; LINUX-32-PIC-LABEL: moo07:
4976 ; LINUX-32-PIC: # %bb.0: # %entry
4977 ; LINUX-32-PIC-NEXT: calll .L55$pb
4978 ; LINUX-32-PIC-NEXT: .L55$pb:
4979 ; LINUX-32-PIC-NEXT: popl %eax
4980 ; LINUX-32-PIC-NEXT: .Ltmp55:
4981 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax
4982 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx
4983 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
4984 ; LINUX-32-PIC-NEXT: retl
4986 ; LINUX-64-PIC-LABEL: moo07:
4987 ; LINUX-64-PIC: # %bb.0: # %entry
4988 ; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax
4989 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
4990 ; LINUX-64-PIC-NEXT: retq
4992 ; DARWIN-32-STATIC-LABEL: moo07:
4993 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
4994 ; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, _lptr
4995 ; DARWIN-32-STATIC-NEXT: retl
4997 ; DARWIN-32-DYNAMIC-LABEL: moo07:
4998 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
4999 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, _lptr
5000 ; DARWIN-32-DYNAMIC-NEXT: retl
5002 ; DARWIN-32-PIC-LABEL: moo07:
5003 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5004 ; DARWIN-32-PIC-NEXT: calll L55$pb
5005 ; DARWIN-32-PIC-NEXT: L55$pb:
5006 ; DARWIN-32-PIC-NEXT: popl %eax
5007 ; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx
5008 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax)
5009 ; DARWIN-32-PIC-NEXT: retl
5011 ; DARWIN-64-STATIC-LABEL: moo07:
5012 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5013 ; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax
5014 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
5015 ; DARWIN-64-STATIC-NEXT: retq
5017 ; DARWIN-64-DYNAMIC-LABEL: moo07:
5018 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5019 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax
5020 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
5021 ; DARWIN-64-DYNAMIC-NEXT: retq
5023 ; DARWIN-64-PIC-LABEL: moo07:
5024 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5025 ; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax
5026 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
5027 ; DARWIN-64-PIC-NEXT: retq
5030 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
5034 define void @moo08(i64 %i) nounwind {
5035 ; LINUX-64-STATIC-LABEL: moo08:
5036 ; LINUX-64-STATIC: # %bb.0: # %entry
5037 ; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax
5038 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
5039 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx)
5040 ; LINUX-64-STATIC-NEXT: retq
5042 ; LINUX-32-STATIC-LABEL: moo08:
5043 ; LINUX-32-STATIC: # %bb.0: # %entry
5044 ; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax
5045 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
5046 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
5047 ; LINUX-32-STATIC-NEXT: retl
5049 ; LINUX-32-PIC-LABEL: moo08:
5050 ; LINUX-32-PIC: # %bb.0: # %entry
5051 ; LINUX-32-PIC-NEXT: calll .L56$pb
5052 ; LINUX-32-PIC-NEXT: .L56$pb:
5053 ; LINUX-32-PIC-NEXT: popl %eax
5054 ; LINUX-32-PIC-NEXT: .Ltmp56:
5055 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax
5056 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx
5057 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
5058 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax)
5059 ; LINUX-32-PIC-NEXT: retl
5061 ; LINUX-64-PIC-LABEL: moo08:
5062 ; LINUX-64-PIC: # %bb.0: # %entry
5063 ; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax
5064 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
5065 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
5066 ; LINUX-64-PIC-NEXT: retq
5068 ; DARWIN-32-STATIC-LABEL: moo08:
5069 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5070 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax
5071 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
5072 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
5073 ; DARWIN-32-STATIC-NEXT: retl
5075 ; DARWIN-32-DYNAMIC-LABEL: moo08:
5076 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5077 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax
5078 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
5079 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
5080 ; DARWIN-32-DYNAMIC-NEXT: retl
5082 ; DARWIN-32-PIC-LABEL: moo08:
5083 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5084 ; DARWIN-32-PIC-NEXT: calll L56$pb
5085 ; DARWIN-32-PIC-NEXT: L56$pb:
5086 ; DARWIN-32-PIC-NEXT: popl %eax
5087 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx
5088 ; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax
5089 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
5090 ; DARWIN-32-PIC-NEXT: retl
5092 ; DARWIN-64-STATIC-LABEL: moo08:
5093 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5094 ; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax
5095 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
5096 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
5097 ; DARWIN-64-STATIC-NEXT: retq
5099 ; DARWIN-64-DYNAMIC-LABEL: moo08:
5100 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5101 ; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax
5102 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
5103 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
5104 ; DARWIN-64-DYNAMIC-NEXT: retq
5106 ; DARWIN-64-PIC-LABEL: moo08:
5107 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5108 ; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax
5109 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
5110 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
5111 ; DARWIN-64-PIC-NEXT: retq
5114 %0 = load i32*, i32** @lptr, align 8
5115 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4
5116 %2 = getelementptr i32, i32* %0, i64 65536
5117 store i32 %1, i32* %2, align 4
5121 define void @big00(i64 %i) nounwind {
5122 ; LINUX-64-STATIC-LABEL: big00:
5123 ; LINUX-64-STATIC: # %bb.0: # %entry
5124 ; LINUX-64-STATIC-NEXT: movl src+262144(,%rdi,4), %eax
5125 ; LINUX-64-STATIC-NEXT: movl %eax, dst+262144(,%rdi,4)
5126 ; LINUX-64-STATIC-NEXT: retq
5128 ; LINUX-32-STATIC-LABEL: big00:
5129 ; LINUX-32-STATIC: # %bb.0: # %entry
5130 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5131 ; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
5132 ; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4)
5133 ; LINUX-32-STATIC-NEXT: retl
5135 ; LINUX-32-PIC-LABEL: big00:
5136 ; LINUX-32-PIC: # %bb.0: # %entry
5137 ; LINUX-32-PIC-NEXT: calll .L57$pb
5138 ; LINUX-32-PIC-NEXT: .L57$pb:
5139 ; LINUX-32-PIC-NEXT: popl %eax
5140 ; LINUX-32-PIC-NEXT: .Ltmp57:
5141 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax
5142 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5143 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
5144 ; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5145 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
5146 ; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5147 ; LINUX-32-PIC-NEXT: retl
5149 ; LINUX-64-PIC-LABEL: big00:
5150 ; LINUX-64-PIC: # %bb.0: # %entry
5151 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
5152 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5153 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
5154 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5155 ; LINUX-64-PIC-NEXT: retq
5157 ; DARWIN-32-STATIC-LABEL: big00:
5158 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5159 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5160 ; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
5161 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4)
5162 ; DARWIN-32-STATIC-NEXT: retl
5164 ; DARWIN-32-DYNAMIC-LABEL: big00:
5165 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5166 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5167 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
5168 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
5169 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
5170 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5171 ; DARWIN-32-DYNAMIC-NEXT: retl
5173 ; DARWIN-32-PIC-LABEL: big00:
5174 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5175 ; DARWIN-32-PIC-NEXT: calll L57$pb
5176 ; DARWIN-32-PIC-NEXT: L57$pb:
5177 ; DARWIN-32-PIC-NEXT: popl %eax
5178 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5179 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx
5180 ; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5181 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax
5182 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5183 ; DARWIN-32-PIC-NEXT: retl
5185 ; DARWIN-64-STATIC-LABEL: big00:
5186 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5187 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5188 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5189 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
5190 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5191 ; DARWIN-64-STATIC-NEXT: retq
5193 ; DARWIN-64-DYNAMIC-LABEL: big00:
5194 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5195 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5196 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5197 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
5198 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5199 ; DARWIN-64-DYNAMIC-NEXT: retq
5201 ; DARWIN-64-PIC-LABEL: big00:
5202 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5203 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5204 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5205 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
5206 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5207 ; DARWIN-64-PIC-NEXT: retq
5210 %0 = add i64 %i, 65536
5211 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
5212 %2 = load i32, i32* %1, align 4
5213 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
5214 store i32 %2, i32* %3, align 4
5218 define void @big01(i64 %i) nounwind {
5219 ; LINUX-64-STATIC-LABEL: big01:
5220 ; LINUX-64-STATIC: # %bb.0: # %entry
5221 ; LINUX-64-STATIC-NEXT: leaq dst+262144(,%rdi,4), %rax
5222 ; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip)
5223 ; LINUX-64-STATIC-NEXT: retq
5225 ; LINUX-32-STATIC-LABEL: big01:
5226 ; LINUX-32-STATIC: # %bb.0: # %entry
5227 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5228 ; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
5229 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
5230 ; LINUX-32-STATIC-NEXT: retl
5232 ; LINUX-32-PIC-LABEL: big01:
5233 ; LINUX-32-PIC: # %bb.0: # %entry
5234 ; LINUX-32-PIC-NEXT: calll .L58$pb
5235 ; LINUX-32-PIC-NEXT: .L58$pb:
5236 ; LINUX-32-PIC-NEXT: popl %eax
5237 ; LINUX-32-PIC-NEXT: .Ltmp58:
5238 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax
5239 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5240 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx
5241 ; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx
5242 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
5243 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
5244 ; LINUX-32-PIC-NEXT: retl
5246 ; LINUX-64-PIC-LABEL: big01:
5247 ; LINUX-64-PIC: # %bb.0: # %entry
5248 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
5249 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5250 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
5251 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
5252 ; LINUX-64-PIC-NEXT: retq
5254 ; DARWIN-32-STATIC-LABEL: big01:
5255 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5256 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5257 ; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
5258 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
5259 ; DARWIN-32-STATIC-NEXT: retl
5261 ; DARWIN-32-DYNAMIC-LABEL: big01:
5262 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5263 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5264 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
5265 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
5266 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
5267 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
5268 ; DARWIN-32-DYNAMIC-NEXT: retl
5270 ; DARWIN-32-PIC-LABEL: big01:
5271 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5272 ; DARWIN-32-PIC-NEXT: calll L58$pb
5273 ; DARWIN-32-PIC-NEXT: L58$pb:
5274 ; DARWIN-32-PIC-NEXT: popl %eax
5275 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5276 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx
5277 ; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx
5278 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax
5279 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
5280 ; DARWIN-32-PIC-NEXT: retl
5282 ; DARWIN-64-STATIC-LABEL: big01:
5283 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5284 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
5285 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5286 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5287 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
5288 ; DARWIN-64-STATIC-NEXT: retq
5290 ; DARWIN-64-DYNAMIC-LABEL: big01:
5291 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5292 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
5293 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5294 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5295 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
5296 ; DARWIN-64-DYNAMIC-NEXT: retq
5298 ; DARWIN-64-PIC-LABEL: big01:
5299 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5300 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
5301 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5302 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5303 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
5304 ; DARWIN-64-PIC-NEXT: retq
5307 %.sum = add i64 %i, 65536
5308 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum
5309 store i32* %0, i32** @ptr, align 8
5313 define void @big02(i64 %i) nounwind {
5314 ; LINUX-64-STATIC-LABEL: big02:
5315 ; LINUX-64-STATIC: # %bb.0: # %entry
5316 ; LINUX-64-STATIC-NEXT: movl src+262144(,%rdi,4), %eax
5317 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx
5318 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5319 ; LINUX-64-STATIC-NEXT: retq
5321 ; LINUX-32-STATIC-LABEL: big02:
5322 ; LINUX-32-STATIC: # %bb.0: # %entry
5323 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5324 ; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
5325 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
5326 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5327 ; LINUX-32-STATIC-NEXT: retl
5329 ; LINUX-32-PIC-LABEL: big02:
5330 ; LINUX-32-PIC: # %bb.0: # %entry
5331 ; LINUX-32-PIC-NEXT: calll .L59$pb
5332 ; LINUX-32-PIC-NEXT: .L59$pb:
5333 ; LINUX-32-PIC-NEXT: popl %eax
5334 ; LINUX-32-PIC-NEXT: .Ltmp59:
5335 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax
5336 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5337 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx
5338 ; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5339 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
5340 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
5341 ; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5342 ; LINUX-32-PIC-NEXT: retl
5344 ; LINUX-64-PIC-LABEL: big02:
5345 ; LINUX-64-PIC: # %bb.0: # %entry
5346 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
5347 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5348 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
5349 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
5350 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5351 ; LINUX-64-PIC-NEXT: retq
5353 ; DARWIN-32-STATIC-LABEL: big02:
5354 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5355 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5356 ; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
5357 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
5358 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5359 ; DARWIN-32-STATIC-NEXT: retl
5361 ; DARWIN-32-DYNAMIC-LABEL: big02:
5362 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5363 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5364 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
5365 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
5366 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
5367 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
5368 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5369 ; DARWIN-32-DYNAMIC-NEXT: retl
5371 ; DARWIN-32-PIC-LABEL: big02:
5372 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5373 ; DARWIN-32-PIC-NEXT: calll L59$pb
5374 ; DARWIN-32-PIC-NEXT: L59$pb:
5375 ; DARWIN-32-PIC-NEXT: popl %eax
5376 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5377 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx
5378 ; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5379 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax
5380 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
5381 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5382 ; DARWIN-32-PIC-NEXT: retl
5384 ; DARWIN-64-STATIC-LABEL: big02:
5385 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5386 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5387 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5388 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5389 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
5390 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5391 ; DARWIN-64-STATIC-NEXT: retq
5393 ; DARWIN-64-DYNAMIC-LABEL: big02:
5394 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5395 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5396 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5397 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5398 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
5399 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5400 ; DARWIN-64-DYNAMIC-NEXT: retq
5402 ; DARWIN-64-PIC-LABEL: big02:
5403 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5404 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
5405 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5406 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
5407 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
5408 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5409 ; DARWIN-64-PIC-NEXT: retq
5412 %0 = load i32*, i32** @ptr, align 8
5413 %1 = add i64 %i, 65536
5414 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1
5415 %3 = load i32, i32* %2, align 4
5416 %4 = getelementptr i32, i32* %0, i64 %1
5417 store i32 %3, i32* %4, align 4
5421 define void @big03(i64 %i) nounwind {
5422 ; LINUX-64-STATIC-LABEL: big03:
5423 ; LINUX-64-STATIC: # %bb.0: # %entry
5424 ; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax
5425 ; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(,%rdi,4)
5426 ; LINUX-64-STATIC-NEXT: retq
5428 ; LINUX-32-STATIC-LABEL: big03:
5429 ; LINUX-32-STATIC: # %bb.0: # %entry
5430 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5431 ; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
5432 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4)
5433 ; LINUX-32-STATIC-NEXT: retl
5435 ; LINUX-32-PIC-LABEL: big03:
5436 ; LINUX-32-PIC: # %bb.0: # %entry
5437 ; LINUX-32-PIC-NEXT: calll .L60$pb
5438 ; LINUX-32-PIC-NEXT: .L60$pb:
5439 ; LINUX-32-PIC-NEXT: popl %eax
5440 ; LINUX-32-PIC-NEXT: .Ltmp60:
5441 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax
5442 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5443 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
5444 ; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5445 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
5446 ; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5447 ; LINUX-32-PIC-NEXT: retl
5449 ; LINUX-64-PIC-LABEL: big03:
5450 ; LINUX-64-PIC: # %bb.0: # %entry
5451 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
5452 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5453 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
5454 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5455 ; LINUX-64-PIC-NEXT: retq
5457 ; DARWIN-32-STATIC-LABEL: big03:
5458 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5459 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5460 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
5461 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
5462 ; DARWIN-32-STATIC-NEXT: retl
5464 ; DARWIN-32-DYNAMIC-LABEL: big03:
5465 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5466 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5467 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
5468 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
5469 ; DARWIN-32-DYNAMIC-NEXT: retl
5471 ; DARWIN-32-PIC-LABEL: big03:
5472 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5473 ; DARWIN-32-PIC-NEXT: calll L60$pb
5474 ; DARWIN-32-PIC-NEXT: L60$pb:
5475 ; DARWIN-32-PIC-NEXT: popl %eax
5476 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5477 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx
5478 ; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4)
5479 ; DARWIN-32-PIC-NEXT: retl
5481 ; DARWIN-64-STATIC-LABEL: big03:
5482 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5483 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
5484 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5485 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
5486 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5487 ; DARWIN-64-STATIC-NEXT: retq
5489 ; DARWIN-64-DYNAMIC-LABEL: big03:
5490 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5491 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
5492 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5493 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
5494 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5495 ; DARWIN-64-DYNAMIC-NEXT: retq
5497 ; DARWIN-64-PIC-LABEL: big03:
5498 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5499 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
5500 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5501 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
5502 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5503 ; DARWIN-64-PIC-NEXT: retq
5506 %0 = add i64 %i, 65536
5507 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
5508 %2 = load i32, i32* %1, align 4
5509 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
5510 store i32 %2, i32* %3, align 4
5514 define void @big04(i64 %i) nounwind {
5515 ; LINUX-64-STATIC-LABEL: big04:
5516 ; LINUX-64-STATIC: # %bb.0: # %entry
5517 ; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax
5518 ; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip)
5519 ; LINUX-64-STATIC-NEXT: retq
5521 ; LINUX-32-STATIC-LABEL: big04:
5522 ; LINUX-32-STATIC: # %bb.0: # %entry
5523 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5524 ; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
5525 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
5526 ; LINUX-32-STATIC-NEXT: retl
5528 ; LINUX-32-PIC-LABEL: big04:
5529 ; LINUX-32-PIC: # %bb.0: # %entry
5530 ; LINUX-32-PIC-NEXT: calll .L61$pb
5531 ; LINUX-32-PIC-NEXT: .L61$pb:
5532 ; LINUX-32-PIC-NEXT: popl %eax
5533 ; LINUX-32-PIC-NEXT: .Ltmp61:
5534 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax
5535 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5536 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx
5537 ; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx
5538 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
5539 ; LINUX-32-PIC-NEXT: movl %ecx, (%eax)
5540 ; LINUX-32-PIC-NEXT: retl
5542 ; LINUX-64-PIC-LABEL: big04:
5543 ; LINUX-64-PIC: # %bb.0: # %entry
5544 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
5545 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5546 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
5547 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
5548 ; LINUX-64-PIC-NEXT: retq
5550 ; DARWIN-32-STATIC-LABEL: big04:
5551 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5552 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5553 ; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
5554 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
5555 ; DARWIN-32-STATIC-NEXT: retl
5557 ; DARWIN-32-DYNAMIC-LABEL: big04:
5558 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5559 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5560 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
5561 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
5562 ; DARWIN-32-DYNAMIC-NEXT: retl
5564 ; DARWIN-32-PIC-LABEL: big04:
5565 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5566 ; DARWIN-32-PIC-NEXT: calll L61$pb
5567 ; DARWIN-32-PIC-NEXT: L61$pb:
5568 ; DARWIN-32-PIC-NEXT: popl %eax
5569 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5570 ; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx
5571 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax)
5572 ; DARWIN-32-PIC-NEXT: retl
5574 ; DARWIN-64-STATIC-LABEL: big04:
5575 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5576 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
5577 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5578 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
5579 ; DARWIN-64-STATIC-NEXT: retq
5581 ; DARWIN-64-DYNAMIC-LABEL: big04:
5582 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5583 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
5584 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5585 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
5586 ; DARWIN-64-DYNAMIC-NEXT: retq
5588 ; DARWIN-64-PIC-LABEL: big04:
5589 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5590 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
5591 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5592 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
5593 ; DARWIN-64-PIC-NEXT: retq
5596 %.sum = add i64 %i, 65536
5597 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum
5598 store i32* %0, i32** @dptr, align 8
5602 define void @big05(i64 %i) nounwind {
5603 ; LINUX-64-STATIC-LABEL: big05:
5604 ; LINUX-64-STATIC: # %bb.0: # %entry
5605 ; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax
5606 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx
5607 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5608 ; LINUX-64-STATIC-NEXT: retq
5610 ; LINUX-32-STATIC-LABEL: big05:
5611 ; LINUX-32-STATIC: # %bb.0: # %entry
5612 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5613 ; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
5614 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
5615 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5616 ; LINUX-32-STATIC-NEXT: retl
5618 ; LINUX-32-PIC-LABEL: big05:
5619 ; LINUX-32-PIC: # %bb.0: # %entry
5620 ; LINUX-32-PIC-NEXT: calll .L62$pb
5621 ; LINUX-32-PIC-NEXT: .L62$pb:
5622 ; LINUX-32-PIC-NEXT: popl %eax
5623 ; LINUX-32-PIC-NEXT: .Ltmp62:
5624 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax
5625 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5626 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx
5627 ; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
5628 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
5629 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
5630 ; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5631 ; LINUX-32-PIC-NEXT: retl
5633 ; LINUX-64-PIC-LABEL: big05:
5634 ; LINUX-64-PIC: # %bb.0: # %entry
5635 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
5636 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5637 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
5638 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
5639 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5640 ; LINUX-64-PIC-NEXT: retq
5642 ; DARWIN-32-STATIC-LABEL: big05:
5643 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5644 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5645 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
5646 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
5647 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5648 ; DARWIN-32-STATIC-NEXT: retl
5650 ; DARWIN-32-DYNAMIC-LABEL: big05:
5651 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5652 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5653 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
5654 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
5655 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5656 ; DARWIN-32-DYNAMIC-NEXT: retl
5658 ; DARWIN-32-PIC-LABEL: big05:
5659 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5660 ; DARWIN-32-PIC-NEXT: calll L62$pb
5661 ; DARWIN-32-PIC-NEXT: L62$pb:
5662 ; DARWIN-32-PIC-NEXT: popl %eax
5663 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5664 ; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx
5665 ; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax
5666 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5667 ; DARWIN-32-PIC-NEXT: retl
5669 ; DARWIN-64-STATIC-LABEL: big05:
5670 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5671 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
5672 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5673 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
5674 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5675 ; DARWIN-64-STATIC-NEXT: retq
5677 ; DARWIN-64-DYNAMIC-LABEL: big05:
5678 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5679 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
5680 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5681 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
5682 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5683 ; DARWIN-64-DYNAMIC-NEXT: retq
5685 ; DARWIN-64-PIC-LABEL: big05:
5686 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5687 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
5688 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5689 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
5690 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5691 ; DARWIN-64-PIC-NEXT: retq
5694 %0 = load i32*, i32** @dptr, align 8
5695 %1 = add i64 %i, 65536
5696 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1
5697 %3 = load i32, i32* %2, align 4
5698 %4 = getelementptr i32, i32* %0, i64 %1
5699 store i32 %3, i32* %4, align 4
5703 define void @big06(i64 %i) nounwind {
5704 ; LINUX-64-STATIC-LABEL: big06:
5705 ; LINUX-64-STATIC: # %bb.0: # %entry
5706 ; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax
5707 ; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(,%rdi,4)
5708 ; LINUX-64-STATIC-NEXT: retq
5710 ; LINUX-32-STATIC-LABEL: big06:
5711 ; LINUX-32-STATIC: # %bb.0: # %entry
5712 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5713 ; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
5714 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4)
5715 ; LINUX-32-STATIC-NEXT: retl
5717 ; LINUX-32-PIC-LABEL: big06:
5718 ; LINUX-32-PIC: # %bb.0: # %entry
5719 ; LINUX-32-PIC-NEXT: calll .L63$pb
5720 ; LINUX-32-PIC-NEXT: .L63$pb:
5721 ; LINUX-32-PIC-NEXT: popl %eax
5722 ; LINUX-32-PIC-NEXT: .Ltmp63:
5723 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax
5724 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5725 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx
5726 ; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4)
5727 ; LINUX-32-PIC-NEXT: retl
5729 ; LINUX-64-PIC-LABEL: big06:
5730 ; LINUX-64-PIC: # %bb.0: # %entry
5731 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
5732 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5733 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
5734 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5735 ; LINUX-64-PIC-NEXT: retq
5737 ; DARWIN-32-STATIC-LABEL: big06:
5738 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5739 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5740 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
5741 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
5742 ; DARWIN-32-STATIC-NEXT: retl
5744 ; DARWIN-32-DYNAMIC-LABEL: big06:
5745 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5746 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5747 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
5748 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
5749 ; DARWIN-32-DYNAMIC-NEXT: retl
5751 ; DARWIN-32-PIC-LABEL: big06:
5752 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5753 ; DARWIN-32-PIC-NEXT: calll L63$pb
5754 ; DARWIN-32-PIC-NEXT: L63$pb:
5755 ; DARWIN-32-PIC-NEXT: popl %eax
5756 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5757 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx
5758 ; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4)
5759 ; DARWIN-32-PIC-NEXT: retl
5761 ; DARWIN-64-STATIC-LABEL: big06:
5762 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5763 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
5764 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5765 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
5766 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5767 ; DARWIN-64-STATIC-NEXT: retq
5769 ; DARWIN-64-DYNAMIC-LABEL: big06:
5770 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5771 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
5772 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5773 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
5774 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5775 ; DARWIN-64-DYNAMIC-NEXT: retq
5777 ; DARWIN-64-PIC-LABEL: big06:
5778 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5779 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
5780 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5781 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
5782 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5783 ; DARWIN-64-PIC-NEXT: retq
5786 %0 = add i64 %i, 65536
5787 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
5788 %2 = load i32, i32* %1, align 4
5789 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
5790 store i32 %2, i32* %3, align 4
5794 define void @big07(i64 %i) nounwind {
5795 ; LINUX-64-STATIC-LABEL: big07:
5796 ; LINUX-64-STATIC: # %bb.0: # %entry
5797 ; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax
5798 ; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip)
5799 ; LINUX-64-STATIC-NEXT: retq
5801 ; LINUX-32-STATIC-LABEL: big07:
5802 ; LINUX-32-STATIC: # %bb.0: # %entry
5803 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5804 ; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
5805 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
5806 ; LINUX-32-STATIC-NEXT: retl
5808 ; LINUX-32-PIC-LABEL: big07:
5809 ; LINUX-32-PIC: # %bb.0: # %entry
5810 ; LINUX-32-PIC-NEXT: calll .L64$pb
5811 ; LINUX-32-PIC-NEXT: .L64$pb:
5812 ; LINUX-32-PIC-NEXT: popl %eax
5813 ; LINUX-32-PIC-NEXT: .Ltmp64:
5814 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax
5815 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5816 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx
5817 ; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax)
5818 ; LINUX-32-PIC-NEXT: retl
5820 ; LINUX-64-PIC-LABEL: big07:
5821 ; LINUX-64-PIC: # %bb.0: # %entry
5822 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
5823 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5824 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
5825 ; LINUX-64-PIC-NEXT: retq
5827 ; DARWIN-32-STATIC-LABEL: big07:
5828 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5829 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5830 ; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
5831 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
5832 ; DARWIN-32-STATIC-NEXT: retl
5834 ; DARWIN-32-DYNAMIC-LABEL: big07:
5835 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5836 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5837 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
5838 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
5839 ; DARWIN-32-DYNAMIC-NEXT: retl
5841 ; DARWIN-32-PIC-LABEL: big07:
5842 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5843 ; DARWIN-32-PIC-NEXT: calll L64$pb
5844 ; DARWIN-32-PIC-NEXT: L64$pb:
5845 ; DARWIN-32-PIC-NEXT: popl %eax
5846 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5847 ; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx
5848 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax)
5849 ; DARWIN-32-PIC-NEXT: retl
5851 ; DARWIN-64-STATIC-LABEL: big07:
5852 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5853 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
5854 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5855 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
5856 ; DARWIN-64-STATIC-NEXT: retq
5858 ; DARWIN-64-DYNAMIC-LABEL: big07:
5859 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5860 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
5861 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5862 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
5863 ; DARWIN-64-DYNAMIC-NEXT: retq
5865 ; DARWIN-64-PIC-LABEL: big07:
5866 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5867 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
5868 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
5869 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
5870 ; DARWIN-64-PIC-NEXT: retq
5873 %.sum = add i64 %i, 65536
5874 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum
5875 store i32* %0, i32** @lptr, align 8
5879 define void @big08(i64 %i) nounwind {
5880 ; LINUX-64-STATIC-LABEL: big08:
5881 ; LINUX-64-STATIC: # %bb.0: # %entry
5882 ; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax
5883 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx
5884 ; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5885 ; LINUX-64-STATIC-NEXT: retq
5887 ; LINUX-32-STATIC-LABEL: big08:
5888 ; LINUX-32-STATIC: # %bb.0: # %entry
5889 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5890 ; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
5891 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
5892 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5893 ; LINUX-32-STATIC-NEXT: retl
5895 ; LINUX-32-PIC-LABEL: big08:
5896 ; LINUX-32-PIC: # %bb.0: # %entry
5897 ; LINUX-32-PIC-NEXT: calll .L65$pb
5898 ; LINUX-32-PIC-NEXT: .L65$pb:
5899 ; LINUX-32-PIC-NEXT: popl %eax
5900 ; LINUX-32-PIC-NEXT: .Ltmp65:
5901 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax
5902 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5903 ; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx
5904 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
5905 ; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5906 ; LINUX-32-PIC-NEXT: retl
5908 ; LINUX-64-PIC-LABEL: big08:
5909 ; LINUX-64-PIC: # %bb.0: # %entry
5910 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
5911 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5912 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
5913 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5914 ; LINUX-64-PIC-NEXT: retq
5916 ; DARWIN-32-STATIC-LABEL: big08:
5917 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
5918 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5919 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
5920 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
5921 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5922 ; DARWIN-32-STATIC-NEXT: retl
5924 ; DARWIN-32-DYNAMIC-LABEL: big08:
5925 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
5926 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
5927 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
5928 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
5929 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
5930 ; DARWIN-32-DYNAMIC-NEXT: retl
5932 ; DARWIN-32-PIC-LABEL: big08:
5933 ; DARWIN-32-PIC: ## %bb.0: ## %entry
5934 ; DARWIN-32-PIC-NEXT: calll L65$pb
5935 ; DARWIN-32-PIC-NEXT: L65$pb:
5936 ; DARWIN-32-PIC-NEXT: popl %eax
5937 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
5938 ; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx
5939 ; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax
5940 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
5941 ; DARWIN-32-PIC-NEXT: retl
5943 ; DARWIN-64-STATIC-LABEL: big08:
5944 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
5945 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
5946 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5947 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
5948 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5949 ; DARWIN-64-STATIC-NEXT: retq
5951 ; DARWIN-64-DYNAMIC-LABEL: big08:
5952 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
5953 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
5954 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5955 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
5956 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5957 ; DARWIN-64-DYNAMIC-NEXT: retq
5959 ; DARWIN-64-PIC-LABEL: big08:
5960 ; DARWIN-64-PIC: ## %bb.0: ## %entry
5961 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
5962 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
5963 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
5964 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
5965 ; DARWIN-64-PIC-NEXT: retq
5968 %0 = load i32*, i32** @lptr, align 8
5969 %1 = add i64 %i, 65536
5970 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1
5971 %3 = load i32, i32* %2, align 4
5972 %4 = getelementptr i32, i32* %0, i64 %1
5973 store i32 %3, i32* %4, align 4
5977 define i8* @bar00() nounwind {
5978 ; LINUX-64-STATIC-LABEL: bar00:
5979 ; LINUX-64-STATIC: # %bb.0: # %entry
5980 ; LINUX-64-STATIC-NEXT: movl $src, %eax
5981 ; LINUX-64-STATIC-NEXT: retq
5983 ; LINUX-32-STATIC-LABEL: bar00:
5984 ; LINUX-32-STATIC: # %bb.0: # %entry
5985 ; LINUX-32-STATIC-NEXT: movl $src, %eax
5986 ; LINUX-32-STATIC-NEXT: retl
5988 ; LINUX-32-PIC-LABEL: bar00:
5989 ; LINUX-32-PIC: # %bb.0: # %entry
5990 ; LINUX-32-PIC-NEXT: calll .L66$pb
5991 ; LINUX-32-PIC-NEXT: .L66$pb:
5992 ; LINUX-32-PIC-NEXT: popl %eax
5993 ; LINUX-32-PIC-NEXT: .Ltmp66:
5994 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax
5995 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax
5996 ; LINUX-32-PIC-NEXT: retl
5998 ; LINUX-64-PIC-LABEL: bar00:
5999 ; LINUX-64-PIC: # %bb.0: # %entry
6000 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
6001 ; LINUX-64-PIC-NEXT: retq
6003 ; DARWIN-32-STATIC-LABEL: bar00:
6004 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6005 ; DARWIN-32-STATIC-NEXT: movl $_src, %eax
6006 ; DARWIN-32-STATIC-NEXT: retl
6008 ; DARWIN-32-DYNAMIC-LABEL: bar00:
6009 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6010 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
6011 ; DARWIN-32-DYNAMIC-NEXT: retl
6013 ; DARWIN-32-PIC-LABEL: bar00:
6014 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6015 ; DARWIN-32-PIC-NEXT: calll L66$pb
6016 ; DARWIN-32-PIC-NEXT: L66$pb:
6017 ; DARWIN-32-PIC-NEXT: popl %eax
6018 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax
6019 ; DARWIN-32-PIC-NEXT: retl
6021 ; DARWIN-64-STATIC-LABEL: bar00:
6022 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6023 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6024 ; DARWIN-64-STATIC-NEXT: retq
6026 ; DARWIN-64-DYNAMIC-LABEL: bar00:
6027 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6028 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6029 ; DARWIN-64-DYNAMIC-NEXT: retq
6031 ; DARWIN-64-PIC-LABEL: bar00:
6032 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6033 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6034 ; DARWIN-64-PIC-NEXT: retq
6037 ret i8* bitcast ([131072 x i32]* @src to i8*)
6040 define i8* @bxr00() nounwind {
6041 ; LINUX-64-STATIC-LABEL: bxr00:
6042 ; LINUX-64-STATIC: # %bb.0: # %entry
6043 ; LINUX-64-STATIC-NEXT: movl $xsrc, %eax
6044 ; LINUX-64-STATIC-NEXT: retq
6046 ; LINUX-32-STATIC-LABEL: bxr00:
6047 ; LINUX-32-STATIC: # %bb.0: # %entry
6048 ; LINUX-32-STATIC-NEXT: movl $xsrc, %eax
6049 ; LINUX-32-STATIC-NEXT: retl
6051 ; LINUX-32-PIC-LABEL: bxr00:
6052 ; LINUX-32-PIC: # %bb.0: # %entry
6053 ; LINUX-32-PIC-NEXT: calll .L67$pb
6054 ; LINUX-32-PIC-NEXT: .L67$pb:
6055 ; LINUX-32-PIC-NEXT: popl %eax
6056 ; LINUX-32-PIC-NEXT: .Ltmp67:
6057 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax
6058 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax
6059 ; LINUX-32-PIC-NEXT: retl
6061 ; LINUX-64-PIC-LABEL: bxr00:
6062 ; LINUX-64-PIC: # %bb.0: # %entry
6063 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
6064 ; LINUX-64-PIC-NEXT: retq
6066 ; DARWIN-32-STATIC-LABEL: bxr00:
6067 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6068 ; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax
6069 ; DARWIN-32-STATIC-NEXT: retl
6071 ; DARWIN-32-DYNAMIC-LABEL: bxr00:
6072 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6073 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
6074 ; DARWIN-32-DYNAMIC-NEXT: retl
6076 ; DARWIN-32-PIC-LABEL: bxr00:
6077 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6078 ; DARWIN-32-PIC-NEXT: calll L67$pb
6079 ; DARWIN-32-PIC-NEXT: L67$pb:
6080 ; DARWIN-32-PIC-NEXT: popl %eax
6081 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax
6082 ; DARWIN-32-PIC-NEXT: retl
6084 ; DARWIN-64-STATIC-LABEL: bxr00:
6085 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6086 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6087 ; DARWIN-64-STATIC-NEXT: retq
6089 ; DARWIN-64-DYNAMIC-LABEL: bxr00:
6090 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6091 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6092 ; DARWIN-64-DYNAMIC-NEXT: retq
6094 ; DARWIN-64-PIC-LABEL: bxr00:
6095 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6096 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6097 ; DARWIN-64-PIC-NEXT: retq
6100 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
6103 define i8* @bar01() nounwind {
6104 ; LINUX-64-STATIC-LABEL: bar01:
6105 ; LINUX-64-STATIC: # %bb.0: # %entry
6106 ; LINUX-64-STATIC-NEXT: movl $dst, %eax
6107 ; LINUX-64-STATIC-NEXT: retq
6109 ; LINUX-32-STATIC-LABEL: bar01:
6110 ; LINUX-32-STATIC: # %bb.0: # %entry
6111 ; LINUX-32-STATIC-NEXT: movl $dst, %eax
6112 ; LINUX-32-STATIC-NEXT: retl
6114 ; LINUX-32-PIC-LABEL: bar01:
6115 ; LINUX-32-PIC: # %bb.0: # %entry
6116 ; LINUX-32-PIC-NEXT: calll .L68$pb
6117 ; LINUX-32-PIC-NEXT: .L68$pb:
6118 ; LINUX-32-PIC-NEXT: popl %eax
6119 ; LINUX-32-PIC-NEXT: .Ltmp68:
6120 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax
6121 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
6122 ; LINUX-32-PIC-NEXT: retl
6124 ; LINUX-64-PIC-LABEL: bar01:
6125 ; LINUX-64-PIC: # %bb.0: # %entry
6126 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
6127 ; LINUX-64-PIC-NEXT: retq
6129 ; DARWIN-32-STATIC-LABEL: bar01:
6130 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6131 ; DARWIN-32-STATIC-NEXT: movl $_dst, %eax
6132 ; DARWIN-32-STATIC-NEXT: retl
6134 ; DARWIN-32-DYNAMIC-LABEL: bar01:
6135 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6136 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax
6137 ; DARWIN-32-DYNAMIC-NEXT: retl
6139 ; DARWIN-32-PIC-LABEL: bar01:
6140 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6141 ; DARWIN-32-PIC-NEXT: calll L68$pb
6142 ; DARWIN-32-PIC-NEXT: L68$pb:
6143 ; DARWIN-32-PIC-NEXT: popl %eax
6144 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax
6145 ; DARWIN-32-PIC-NEXT: retl
6147 ; DARWIN-64-STATIC-LABEL: bar01:
6148 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6149 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6150 ; DARWIN-64-STATIC-NEXT: retq
6152 ; DARWIN-64-DYNAMIC-LABEL: bar01:
6153 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6154 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6155 ; DARWIN-64-DYNAMIC-NEXT: retq
6157 ; DARWIN-64-PIC-LABEL: bar01:
6158 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6159 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6160 ; DARWIN-64-PIC-NEXT: retq
6163 ret i8* bitcast ([131072 x i32]* @dst to i8*)
6166 define i8* @bxr01() nounwind {
6167 ; LINUX-64-STATIC-LABEL: bxr01:
6168 ; LINUX-64-STATIC: # %bb.0: # %entry
6169 ; LINUX-64-STATIC-NEXT: movl $xdst, %eax
6170 ; LINUX-64-STATIC-NEXT: retq
6172 ; LINUX-32-STATIC-LABEL: bxr01:
6173 ; LINUX-32-STATIC: # %bb.0: # %entry
6174 ; LINUX-32-STATIC-NEXT: movl $xdst, %eax
6175 ; LINUX-32-STATIC-NEXT: retl
6177 ; LINUX-32-PIC-LABEL: bxr01:
6178 ; LINUX-32-PIC: # %bb.0: # %entry
6179 ; LINUX-32-PIC-NEXT: calll .L69$pb
6180 ; LINUX-32-PIC-NEXT: .L69$pb:
6181 ; LINUX-32-PIC-NEXT: popl %eax
6182 ; LINUX-32-PIC-NEXT: .Ltmp69:
6183 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax
6184 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
6185 ; LINUX-32-PIC-NEXT: retl
6187 ; LINUX-64-PIC-LABEL: bxr01:
6188 ; LINUX-64-PIC: # %bb.0: # %entry
6189 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
6190 ; LINUX-64-PIC-NEXT: retq
6192 ; DARWIN-32-STATIC-LABEL: bxr01:
6193 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6194 ; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax
6195 ; DARWIN-32-STATIC-NEXT: retl
6197 ; DARWIN-32-DYNAMIC-LABEL: bxr01:
6198 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6199 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax
6200 ; DARWIN-32-DYNAMIC-NEXT: retl
6202 ; DARWIN-32-PIC-LABEL: bxr01:
6203 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6204 ; DARWIN-32-PIC-NEXT: calll L69$pb
6205 ; DARWIN-32-PIC-NEXT: L69$pb:
6206 ; DARWIN-32-PIC-NEXT: popl %eax
6207 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax
6208 ; DARWIN-32-PIC-NEXT: retl
6210 ; DARWIN-64-STATIC-LABEL: bxr01:
6211 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6212 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6213 ; DARWIN-64-STATIC-NEXT: retq
6215 ; DARWIN-64-DYNAMIC-LABEL: bxr01:
6216 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6217 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6218 ; DARWIN-64-DYNAMIC-NEXT: retq
6220 ; DARWIN-64-PIC-LABEL: bxr01:
6221 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6222 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6223 ; DARWIN-64-PIC-NEXT: retq
6226 ret i8* bitcast ([32 x i32]* @xdst to i8*)
6229 define i8* @bar02() nounwind {
6230 ; LINUX-64-STATIC-LABEL: bar02:
6231 ; LINUX-64-STATIC: # %bb.0: # %entry
6232 ; LINUX-64-STATIC-NEXT: movl $ptr, %eax
6233 ; LINUX-64-STATIC-NEXT: retq
6235 ; LINUX-32-STATIC-LABEL: bar02:
6236 ; LINUX-32-STATIC: # %bb.0: # %entry
6237 ; LINUX-32-STATIC-NEXT: movl $ptr, %eax
6238 ; LINUX-32-STATIC-NEXT: retl
6240 ; LINUX-32-PIC-LABEL: bar02:
6241 ; LINUX-32-PIC: # %bb.0: # %entry
6242 ; LINUX-32-PIC-NEXT: calll .L70$pb
6243 ; LINUX-32-PIC-NEXT: .L70$pb:
6244 ; LINUX-32-PIC-NEXT: popl %eax
6245 ; LINUX-32-PIC-NEXT: .Ltmp70:
6246 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax
6247 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
6248 ; LINUX-32-PIC-NEXT: retl
6250 ; LINUX-64-PIC-LABEL: bar02:
6251 ; LINUX-64-PIC: # %bb.0: # %entry
6252 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
6253 ; LINUX-64-PIC-NEXT: retq
6255 ; DARWIN-32-STATIC-LABEL: bar02:
6256 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6257 ; DARWIN-32-STATIC-NEXT: movl $_ptr, %eax
6258 ; DARWIN-32-STATIC-NEXT: retl
6260 ; DARWIN-32-DYNAMIC-LABEL: bar02:
6261 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6262 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax
6263 ; DARWIN-32-DYNAMIC-NEXT: retl
6265 ; DARWIN-32-PIC-LABEL: bar02:
6266 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6267 ; DARWIN-32-PIC-NEXT: calll L70$pb
6268 ; DARWIN-32-PIC-NEXT: L70$pb:
6269 ; DARWIN-32-PIC-NEXT: popl %eax
6270 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax
6271 ; DARWIN-32-PIC-NEXT: retl
6273 ; DARWIN-64-STATIC-LABEL: bar02:
6274 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6275 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6276 ; DARWIN-64-STATIC-NEXT: retq
6278 ; DARWIN-64-DYNAMIC-LABEL: bar02:
6279 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6280 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6281 ; DARWIN-64-DYNAMIC-NEXT: retq
6283 ; DARWIN-64-PIC-LABEL: bar02:
6284 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6285 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6286 ; DARWIN-64-PIC-NEXT: retq
6289 ret i8* bitcast (i32** @ptr to i8*)
6292 define i8* @bar03() nounwind {
6293 ; LINUX-64-STATIC-LABEL: bar03:
6294 ; LINUX-64-STATIC: # %bb.0: # %entry
6295 ; LINUX-64-STATIC-NEXT: movl $dsrc, %eax
6296 ; LINUX-64-STATIC-NEXT: retq
6298 ; LINUX-32-STATIC-LABEL: bar03:
6299 ; LINUX-32-STATIC: # %bb.0: # %entry
6300 ; LINUX-32-STATIC-NEXT: movl $dsrc, %eax
6301 ; LINUX-32-STATIC-NEXT: retl
6303 ; LINUX-32-PIC-LABEL: bar03:
6304 ; LINUX-32-PIC: # %bb.0: # %entry
6305 ; LINUX-32-PIC-NEXT: calll .L71$pb
6306 ; LINUX-32-PIC-NEXT: .L71$pb:
6307 ; LINUX-32-PIC-NEXT: popl %eax
6308 ; LINUX-32-PIC-NEXT: .Ltmp71:
6309 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax
6310 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax
6311 ; LINUX-32-PIC-NEXT: retl
6313 ; LINUX-64-PIC-LABEL: bar03:
6314 ; LINUX-64-PIC: # %bb.0: # %entry
6315 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
6316 ; LINUX-64-PIC-NEXT: retq
6318 ; DARWIN-32-STATIC-LABEL: bar03:
6319 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6320 ; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax
6321 ; DARWIN-32-STATIC-NEXT: retl
6323 ; DARWIN-32-DYNAMIC-LABEL: bar03:
6324 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6325 ; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax
6326 ; DARWIN-32-DYNAMIC-NEXT: retl
6328 ; DARWIN-32-PIC-LABEL: bar03:
6329 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6330 ; DARWIN-32-PIC-NEXT: calll L71$pb
6331 ; DARWIN-32-PIC-NEXT: L71$pb:
6332 ; DARWIN-32-PIC-NEXT: popl %eax
6333 ; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax
6334 ; DARWIN-32-PIC-NEXT: retl
6336 ; DARWIN-64-STATIC-LABEL: bar03:
6337 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6338 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
6339 ; DARWIN-64-STATIC-NEXT: retq
6341 ; DARWIN-64-DYNAMIC-LABEL: bar03:
6342 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6343 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
6344 ; DARWIN-64-DYNAMIC-NEXT: retq
6346 ; DARWIN-64-PIC-LABEL: bar03:
6347 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6348 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
6349 ; DARWIN-64-PIC-NEXT: retq
6352 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
6355 define i8* @bar04() nounwind {
6356 ; LINUX-64-STATIC-LABEL: bar04:
6357 ; LINUX-64-STATIC: # %bb.0: # %entry
6358 ; LINUX-64-STATIC-NEXT: movl $ddst, %eax
6359 ; LINUX-64-STATIC-NEXT: retq
6361 ; LINUX-32-STATIC-LABEL: bar04:
6362 ; LINUX-32-STATIC: # %bb.0: # %entry
6363 ; LINUX-32-STATIC-NEXT: movl $ddst, %eax
6364 ; LINUX-32-STATIC-NEXT: retl
6366 ; LINUX-32-PIC-LABEL: bar04:
6367 ; LINUX-32-PIC: # %bb.0: # %entry
6368 ; LINUX-32-PIC-NEXT: calll .L72$pb
6369 ; LINUX-32-PIC-NEXT: .L72$pb:
6370 ; LINUX-32-PIC-NEXT: popl %eax
6371 ; LINUX-32-PIC-NEXT: .Ltmp72:
6372 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax
6373 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
6374 ; LINUX-32-PIC-NEXT: retl
6376 ; LINUX-64-PIC-LABEL: bar04:
6377 ; LINUX-64-PIC: # %bb.0: # %entry
6378 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
6379 ; LINUX-64-PIC-NEXT: retq
6381 ; DARWIN-32-STATIC-LABEL: bar04:
6382 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6383 ; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax
6384 ; DARWIN-32-STATIC-NEXT: retl
6386 ; DARWIN-32-DYNAMIC-LABEL: bar04:
6387 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6388 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax
6389 ; DARWIN-32-DYNAMIC-NEXT: retl
6391 ; DARWIN-32-PIC-LABEL: bar04:
6392 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6393 ; DARWIN-32-PIC-NEXT: calll L72$pb
6394 ; DARWIN-32-PIC-NEXT: L72$pb:
6395 ; DARWIN-32-PIC-NEXT: popl %eax
6396 ; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax
6397 ; DARWIN-32-PIC-NEXT: retl
6399 ; DARWIN-64-STATIC-LABEL: bar04:
6400 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6401 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
6402 ; DARWIN-64-STATIC-NEXT: retq
6404 ; DARWIN-64-DYNAMIC-LABEL: bar04:
6405 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6406 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
6407 ; DARWIN-64-DYNAMIC-NEXT: retq
6409 ; DARWIN-64-PIC-LABEL: bar04:
6410 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6411 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
6412 ; DARWIN-64-PIC-NEXT: retq
6415 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
6418 define i8* @bar05() nounwind {
6419 ; LINUX-64-STATIC-LABEL: bar05:
6420 ; LINUX-64-STATIC: # %bb.0: # %entry
6421 ; LINUX-64-STATIC-NEXT: movl $dptr, %eax
6422 ; LINUX-64-STATIC-NEXT: retq
6424 ; LINUX-32-STATIC-LABEL: bar05:
6425 ; LINUX-32-STATIC: # %bb.0: # %entry
6426 ; LINUX-32-STATIC-NEXT: movl $dptr, %eax
6427 ; LINUX-32-STATIC-NEXT: retl
6429 ; LINUX-32-PIC-LABEL: bar05:
6430 ; LINUX-32-PIC: # %bb.0: # %entry
6431 ; LINUX-32-PIC-NEXT: calll .L73$pb
6432 ; LINUX-32-PIC-NEXT: .L73$pb:
6433 ; LINUX-32-PIC-NEXT: popl %eax
6434 ; LINUX-32-PIC-NEXT: .Ltmp73:
6435 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax
6436 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
6437 ; LINUX-32-PIC-NEXT: retl
6439 ; LINUX-64-PIC-LABEL: bar05:
6440 ; LINUX-64-PIC: # %bb.0: # %entry
6441 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
6442 ; LINUX-64-PIC-NEXT: retq
6444 ; DARWIN-32-STATIC-LABEL: bar05:
6445 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6446 ; DARWIN-32-STATIC-NEXT: movl $_dptr, %eax
6447 ; DARWIN-32-STATIC-NEXT: retl
6449 ; DARWIN-32-DYNAMIC-LABEL: bar05:
6450 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6451 ; DARWIN-32-DYNAMIC-NEXT: movl $_dptr, %eax
6452 ; DARWIN-32-DYNAMIC-NEXT: retl
6454 ; DARWIN-32-PIC-LABEL: bar05:
6455 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6456 ; DARWIN-32-PIC-NEXT: calll L73$pb
6457 ; DARWIN-32-PIC-NEXT: L73$pb:
6458 ; DARWIN-32-PIC-NEXT: popl %eax
6459 ; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax
6460 ; DARWIN-32-PIC-NEXT: retl
6462 ; DARWIN-64-STATIC-LABEL: bar05:
6463 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6464 ; DARWIN-64-STATIC-NEXT: leaq _dptr(%rip), %rax
6465 ; DARWIN-64-STATIC-NEXT: retq
6467 ; DARWIN-64-DYNAMIC-LABEL: bar05:
6468 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6469 ; DARWIN-64-DYNAMIC-NEXT: leaq _dptr(%rip), %rax
6470 ; DARWIN-64-DYNAMIC-NEXT: retq
6472 ; DARWIN-64-PIC-LABEL: bar05:
6473 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6474 ; DARWIN-64-PIC-NEXT: leaq _dptr(%rip), %rax
6475 ; DARWIN-64-PIC-NEXT: retq
6478 ret i8* bitcast (i32** @dptr to i8*)
6481 define i8* @bar06() nounwind {
6482 ; LINUX-64-STATIC-LABEL: bar06:
6483 ; LINUX-64-STATIC: # %bb.0: # %entry
6484 ; LINUX-64-STATIC-NEXT: movl $lsrc, %eax
6485 ; LINUX-64-STATIC-NEXT: retq
6487 ; LINUX-32-STATIC-LABEL: bar06:
6488 ; LINUX-32-STATIC: # %bb.0: # %entry
6489 ; LINUX-32-STATIC-NEXT: movl $lsrc, %eax
6490 ; LINUX-32-STATIC-NEXT: retl
6492 ; LINUX-32-PIC-LABEL: bar06:
6493 ; LINUX-32-PIC: # %bb.0: # %entry
6494 ; LINUX-32-PIC-NEXT: calll .L74$pb
6495 ; LINUX-32-PIC-NEXT: .L74$pb:
6496 ; LINUX-32-PIC-NEXT: popl %eax
6497 ; LINUX-32-PIC-NEXT: .Ltmp74:
6498 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax
6499 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax
6500 ; LINUX-32-PIC-NEXT: retl
6502 ; LINUX-64-PIC-LABEL: bar06:
6503 ; LINUX-64-PIC: # %bb.0: # %entry
6504 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
6505 ; LINUX-64-PIC-NEXT: retq
6507 ; DARWIN-32-STATIC-LABEL: bar06:
6508 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6509 ; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax
6510 ; DARWIN-32-STATIC-NEXT: retl
6512 ; DARWIN-32-DYNAMIC-LABEL: bar06:
6513 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6514 ; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax
6515 ; DARWIN-32-DYNAMIC-NEXT: retl
6517 ; DARWIN-32-PIC-LABEL: bar06:
6518 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6519 ; DARWIN-32-PIC-NEXT: calll L74$pb
6520 ; DARWIN-32-PIC-NEXT: L74$pb:
6521 ; DARWIN-32-PIC-NEXT: popl %eax
6522 ; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax
6523 ; DARWIN-32-PIC-NEXT: retl
6525 ; DARWIN-64-STATIC-LABEL: bar06:
6526 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6527 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
6528 ; DARWIN-64-STATIC-NEXT: retq
6530 ; DARWIN-64-DYNAMIC-LABEL: bar06:
6531 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6532 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
6533 ; DARWIN-64-DYNAMIC-NEXT: retq
6535 ; DARWIN-64-PIC-LABEL: bar06:
6536 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6537 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
6538 ; DARWIN-64-PIC-NEXT: retq
6541 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
6544 define i8* @bar07() nounwind {
6545 ; LINUX-64-STATIC-LABEL: bar07:
6546 ; LINUX-64-STATIC: # %bb.0: # %entry
6547 ; LINUX-64-STATIC-NEXT: movl $ldst, %eax
6548 ; LINUX-64-STATIC-NEXT: retq
6550 ; LINUX-32-STATIC-LABEL: bar07:
6551 ; LINUX-32-STATIC: # %bb.0: # %entry
6552 ; LINUX-32-STATIC-NEXT: movl $ldst, %eax
6553 ; LINUX-32-STATIC-NEXT: retl
6555 ; LINUX-32-PIC-LABEL: bar07:
6556 ; LINUX-32-PIC: # %bb.0: # %entry
6557 ; LINUX-32-PIC-NEXT: calll .L75$pb
6558 ; LINUX-32-PIC-NEXT: .L75$pb:
6559 ; LINUX-32-PIC-NEXT: popl %eax
6560 ; LINUX-32-PIC-NEXT: .Ltmp75:
6561 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax
6562 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax
6563 ; LINUX-32-PIC-NEXT: retl
6565 ; LINUX-64-PIC-LABEL: bar07:
6566 ; LINUX-64-PIC: # %bb.0: # %entry
6567 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
6568 ; LINUX-64-PIC-NEXT: retq
6570 ; DARWIN-32-STATIC-LABEL: bar07:
6571 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6572 ; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax
6573 ; DARWIN-32-STATIC-NEXT: retl
6575 ; DARWIN-32-DYNAMIC-LABEL: bar07:
6576 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6577 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax
6578 ; DARWIN-32-DYNAMIC-NEXT: retl
6580 ; DARWIN-32-PIC-LABEL: bar07:
6581 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6582 ; DARWIN-32-PIC-NEXT: calll L75$pb
6583 ; DARWIN-32-PIC-NEXT: L75$pb:
6584 ; DARWIN-32-PIC-NEXT: popl %eax
6585 ; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax
6586 ; DARWIN-32-PIC-NEXT: retl
6588 ; DARWIN-64-STATIC-LABEL: bar07:
6589 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6590 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
6591 ; DARWIN-64-STATIC-NEXT: retq
6593 ; DARWIN-64-DYNAMIC-LABEL: bar07:
6594 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6595 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
6596 ; DARWIN-64-DYNAMIC-NEXT: retq
6598 ; DARWIN-64-PIC-LABEL: bar07:
6599 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6600 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
6601 ; DARWIN-64-PIC-NEXT: retq
6604 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
6607 define i8* @bar08() nounwind {
6608 ; LINUX-64-STATIC-LABEL: bar08:
6609 ; LINUX-64-STATIC: # %bb.0: # %entry
6610 ; LINUX-64-STATIC-NEXT: movl $lptr, %eax
6611 ; LINUX-64-STATIC-NEXT: retq
6613 ; LINUX-32-STATIC-LABEL: bar08:
6614 ; LINUX-32-STATIC: # %bb.0: # %entry
6615 ; LINUX-32-STATIC-NEXT: movl $lptr, %eax
6616 ; LINUX-32-STATIC-NEXT: retl
6618 ; LINUX-32-PIC-LABEL: bar08:
6619 ; LINUX-32-PIC: # %bb.0: # %entry
6620 ; LINUX-32-PIC-NEXT: calll .L76$pb
6621 ; LINUX-32-PIC-NEXT: .L76$pb:
6622 ; LINUX-32-PIC-NEXT: popl %eax
6623 ; LINUX-32-PIC-NEXT: .Ltmp76:
6624 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax
6625 ; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax
6626 ; LINUX-32-PIC-NEXT: retl
6628 ; LINUX-64-PIC-LABEL: bar08:
6629 ; LINUX-64-PIC: # %bb.0: # %entry
6630 ; LINUX-64-PIC-NEXT: leaq lptr(%rip), %rax
6631 ; LINUX-64-PIC-NEXT: retq
6633 ; DARWIN-32-STATIC-LABEL: bar08:
6634 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6635 ; DARWIN-32-STATIC-NEXT: movl $_lptr, %eax
6636 ; DARWIN-32-STATIC-NEXT: retl
6638 ; DARWIN-32-DYNAMIC-LABEL: bar08:
6639 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6640 ; DARWIN-32-DYNAMIC-NEXT: movl $_lptr, %eax
6641 ; DARWIN-32-DYNAMIC-NEXT: retl
6643 ; DARWIN-32-PIC-LABEL: bar08:
6644 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6645 ; DARWIN-32-PIC-NEXT: calll L76$pb
6646 ; DARWIN-32-PIC-NEXT: L76$pb:
6647 ; DARWIN-32-PIC-NEXT: popl %eax
6648 ; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax
6649 ; DARWIN-32-PIC-NEXT: retl
6651 ; DARWIN-64-STATIC-LABEL: bar08:
6652 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6653 ; DARWIN-64-STATIC-NEXT: leaq _lptr(%rip), %rax
6654 ; DARWIN-64-STATIC-NEXT: retq
6656 ; DARWIN-64-DYNAMIC-LABEL: bar08:
6657 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6658 ; DARWIN-64-DYNAMIC-NEXT: leaq _lptr(%rip), %rax
6659 ; DARWIN-64-DYNAMIC-NEXT: retq
6661 ; DARWIN-64-PIC-LABEL: bar08:
6662 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6663 ; DARWIN-64-PIC-NEXT: leaq _lptr(%rip), %rax
6664 ; DARWIN-64-PIC-NEXT: retq
6667 ret i8* bitcast (i32** @lptr to i8*)
6670 define i8* @har00() nounwind {
6671 ; LINUX-64-STATIC-LABEL: har00:
6672 ; LINUX-64-STATIC: # %bb.0: # %entry
6673 ; LINUX-64-STATIC-NEXT: movl $src, %eax
6674 ; LINUX-64-STATIC-NEXT: retq
6676 ; LINUX-32-STATIC-LABEL: har00:
6677 ; LINUX-32-STATIC: # %bb.0: # %entry
6678 ; LINUX-32-STATIC-NEXT: movl $src, %eax
6679 ; LINUX-32-STATIC-NEXT: retl
6681 ; LINUX-32-PIC-LABEL: har00:
6682 ; LINUX-32-PIC: # %bb.0: # %entry
6683 ; LINUX-32-PIC-NEXT: calll .L77$pb
6684 ; LINUX-32-PIC-NEXT: .L77$pb:
6685 ; LINUX-32-PIC-NEXT: popl %eax
6686 ; LINUX-32-PIC-NEXT: .Ltmp77:
6687 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax
6688 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax
6689 ; LINUX-32-PIC-NEXT: retl
6691 ; LINUX-64-PIC-LABEL: har00:
6692 ; LINUX-64-PIC: # %bb.0: # %entry
6693 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
6694 ; LINUX-64-PIC-NEXT: retq
6696 ; DARWIN-32-STATIC-LABEL: har00:
6697 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6698 ; DARWIN-32-STATIC-NEXT: movl $_src, %eax
6699 ; DARWIN-32-STATIC-NEXT: retl
6701 ; DARWIN-32-DYNAMIC-LABEL: har00:
6702 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6703 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
6704 ; DARWIN-32-DYNAMIC-NEXT: retl
6706 ; DARWIN-32-PIC-LABEL: har00:
6707 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6708 ; DARWIN-32-PIC-NEXT: calll L77$pb
6709 ; DARWIN-32-PIC-NEXT: L77$pb:
6710 ; DARWIN-32-PIC-NEXT: popl %eax
6711 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax
6712 ; DARWIN-32-PIC-NEXT: retl
6714 ; DARWIN-64-STATIC-LABEL: har00:
6715 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6716 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6717 ; DARWIN-64-STATIC-NEXT: retq
6719 ; DARWIN-64-DYNAMIC-LABEL: har00:
6720 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6721 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6722 ; DARWIN-64-DYNAMIC-NEXT: retq
6724 ; DARWIN-64-PIC-LABEL: har00:
6725 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6726 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
6727 ; DARWIN-64-PIC-NEXT: retq
6730 ret i8* bitcast ([131072 x i32]* @src to i8*)
6733 define i8* @hxr00() nounwind {
6734 ; LINUX-64-STATIC-LABEL: hxr00:
6735 ; LINUX-64-STATIC: # %bb.0: # %entry
6736 ; LINUX-64-STATIC-NEXT: movl $xsrc, %eax
6737 ; LINUX-64-STATIC-NEXT: retq
6739 ; LINUX-32-STATIC-LABEL: hxr00:
6740 ; LINUX-32-STATIC: # %bb.0: # %entry
6741 ; LINUX-32-STATIC-NEXT: movl $xsrc, %eax
6742 ; LINUX-32-STATIC-NEXT: retl
6744 ; LINUX-32-PIC-LABEL: hxr00:
6745 ; LINUX-32-PIC: # %bb.0: # %entry
6746 ; LINUX-32-PIC-NEXT: calll .L78$pb
6747 ; LINUX-32-PIC-NEXT: .L78$pb:
6748 ; LINUX-32-PIC-NEXT: popl %eax
6749 ; LINUX-32-PIC-NEXT: .Ltmp78:
6750 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax
6751 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax
6752 ; LINUX-32-PIC-NEXT: retl
6754 ; LINUX-64-PIC-LABEL: hxr00:
6755 ; LINUX-64-PIC: # %bb.0: # %entry
6756 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
6757 ; LINUX-64-PIC-NEXT: retq
6759 ; DARWIN-32-STATIC-LABEL: hxr00:
6760 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6761 ; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax
6762 ; DARWIN-32-STATIC-NEXT: retl
6764 ; DARWIN-32-DYNAMIC-LABEL: hxr00:
6765 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6766 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
6767 ; DARWIN-32-DYNAMIC-NEXT: retl
6769 ; DARWIN-32-PIC-LABEL: hxr00:
6770 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6771 ; DARWIN-32-PIC-NEXT: calll L78$pb
6772 ; DARWIN-32-PIC-NEXT: L78$pb:
6773 ; DARWIN-32-PIC-NEXT: popl %eax
6774 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax
6775 ; DARWIN-32-PIC-NEXT: retl
6777 ; DARWIN-64-STATIC-LABEL: hxr00:
6778 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6779 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6780 ; DARWIN-64-STATIC-NEXT: retq
6782 ; DARWIN-64-DYNAMIC-LABEL: hxr00:
6783 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6784 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6785 ; DARWIN-64-DYNAMIC-NEXT: retq
6787 ; DARWIN-64-PIC-LABEL: hxr00:
6788 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6789 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
6790 ; DARWIN-64-PIC-NEXT: retq
6793 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
6796 define i8* @har01() nounwind {
6797 ; LINUX-64-STATIC-LABEL: har01:
6798 ; LINUX-64-STATIC: # %bb.0: # %entry
6799 ; LINUX-64-STATIC-NEXT: movl $dst, %eax
6800 ; LINUX-64-STATIC-NEXT: retq
6802 ; LINUX-32-STATIC-LABEL: har01:
6803 ; LINUX-32-STATIC: # %bb.0: # %entry
6804 ; LINUX-32-STATIC-NEXT: movl $dst, %eax
6805 ; LINUX-32-STATIC-NEXT: retl
6807 ; LINUX-32-PIC-LABEL: har01:
6808 ; LINUX-32-PIC: # %bb.0: # %entry
6809 ; LINUX-32-PIC-NEXT: calll .L79$pb
6810 ; LINUX-32-PIC-NEXT: .L79$pb:
6811 ; LINUX-32-PIC-NEXT: popl %eax
6812 ; LINUX-32-PIC-NEXT: .Ltmp79:
6813 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax
6814 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
6815 ; LINUX-32-PIC-NEXT: retl
6817 ; LINUX-64-PIC-LABEL: har01:
6818 ; LINUX-64-PIC: # %bb.0: # %entry
6819 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
6820 ; LINUX-64-PIC-NEXT: retq
6822 ; DARWIN-32-STATIC-LABEL: har01:
6823 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6824 ; DARWIN-32-STATIC-NEXT: movl $_dst, %eax
6825 ; DARWIN-32-STATIC-NEXT: retl
6827 ; DARWIN-32-DYNAMIC-LABEL: har01:
6828 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6829 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax
6830 ; DARWIN-32-DYNAMIC-NEXT: retl
6832 ; DARWIN-32-PIC-LABEL: har01:
6833 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6834 ; DARWIN-32-PIC-NEXT: calll L79$pb
6835 ; DARWIN-32-PIC-NEXT: L79$pb:
6836 ; DARWIN-32-PIC-NEXT: popl %eax
6837 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax
6838 ; DARWIN-32-PIC-NEXT: retl
6840 ; DARWIN-64-STATIC-LABEL: har01:
6841 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6842 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6843 ; DARWIN-64-STATIC-NEXT: retq
6845 ; DARWIN-64-DYNAMIC-LABEL: har01:
6846 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6847 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6848 ; DARWIN-64-DYNAMIC-NEXT: retq
6850 ; DARWIN-64-PIC-LABEL: har01:
6851 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6852 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
6853 ; DARWIN-64-PIC-NEXT: retq
6856 ret i8* bitcast ([131072 x i32]* @dst to i8*)
6859 define i8* @hxr01() nounwind {
6860 ; LINUX-64-STATIC-LABEL: hxr01:
6861 ; LINUX-64-STATIC: # %bb.0: # %entry
6862 ; LINUX-64-STATIC-NEXT: movl $xdst, %eax
6863 ; LINUX-64-STATIC-NEXT: retq
6865 ; LINUX-32-STATIC-LABEL: hxr01:
6866 ; LINUX-32-STATIC: # %bb.0: # %entry
6867 ; LINUX-32-STATIC-NEXT: movl $xdst, %eax
6868 ; LINUX-32-STATIC-NEXT: retl
6870 ; LINUX-32-PIC-LABEL: hxr01:
6871 ; LINUX-32-PIC: # %bb.0: # %entry
6872 ; LINUX-32-PIC-NEXT: calll .L80$pb
6873 ; LINUX-32-PIC-NEXT: .L80$pb:
6874 ; LINUX-32-PIC-NEXT: popl %eax
6875 ; LINUX-32-PIC-NEXT: .Ltmp80:
6876 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax
6877 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
6878 ; LINUX-32-PIC-NEXT: retl
6880 ; LINUX-64-PIC-LABEL: hxr01:
6881 ; LINUX-64-PIC: # %bb.0: # %entry
6882 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
6883 ; LINUX-64-PIC-NEXT: retq
6885 ; DARWIN-32-STATIC-LABEL: hxr01:
6886 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6887 ; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax
6888 ; DARWIN-32-STATIC-NEXT: retl
6890 ; DARWIN-32-DYNAMIC-LABEL: hxr01:
6891 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6892 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax
6893 ; DARWIN-32-DYNAMIC-NEXT: retl
6895 ; DARWIN-32-PIC-LABEL: hxr01:
6896 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6897 ; DARWIN-32-PIC-NEXT: calll L80$pb
6898 ; DARWIN-32-PIC-NEXT: L80$pb:
6899 ; DARWIN-32-PIC-NEXT: popl %eax
6900 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax
6901 ; DARWIN-32-PIC-NEXT: retl
6903 ; DARWIN-64-STATIC-LABEL: hxr01:
6904 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6905 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6906 ; DARWIN-64-STATIC-NEXT: retq
6908 ; DARWIN-64-DYNAMIC-LABEL: hxr01:
6909 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6910 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6911 ; DARWIN-64-DYNAMIC-NEXT: retq
6913 ; DARWIN-64-PIC-LABEL: hxr01:
6914 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6915 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
6916 ; DARWIN-64-PIC-NEXT: retq
6919 ret i8* bitcast ([32 x i32]* @xdst to i8*)
6922 define i8* @har02() nounwind {
6923 ; LINUX-64-STATIC-LABEL: har02:
6924 ; LINUX-64-STATIC: # %bb.0: # %entry
6925 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax
6926 ; LINUX-64-STATIC-NEXT: retq
6928 ; LINUX-32-STATIC-LABEL: har02:
6929 ; LINUX-32-STATIC: # %bb.0: # %entry
6930 ; LINUX-32-STATIC-NEXT: movl ptr, %eax
6931 ; LINUX-32-STATIC-NEXT: retl
6933 ; LINUX-32-PIC-LABEL: har02:
6934 ; LINUX-32-PIC: # %bb.0: # %entry
6935 ; LINUX-32-PIC-NEXT: calll .L81$pb
6936 ; LINUX-32-PIC-NEXT: .L81$pb:
6937 ; LINUX-32-PIC-NEXT: popl %eax
6938 ; LINUX-32-PIC-NEXT: .Ltmp81:
6939 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax
6940 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
6941 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
6942 ; LINUX-32-PIC-NEXT: retl
6944 ; LINUX-64-PIC-LABEL: har02:
6945 ; LINUX-64-PIC: # %bb.0: # %entry
6946 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
6947 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
6948 ; LINUX-64-PIC-NEXT: retq
6950 ; DARWIN-32-STATIC-LABEL: har02:
6951 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
6952 ; DARWIN-32-STATIC-NEXT: movl _ptr, %eax
6953 ; DARWIN-32-STATIC-NEXT: retl
6955 ; DARWIN-32-DYNAMIC-LABEL: har02:
6956 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
6957 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax
6958 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
6959 ; DARWIN-32-DYNAMIC-NEXT: retl
6961 ; DARWIN-32-PIC-LABEL: har02:
6962 ; DARWIN-32-PIC: ## %bb.0: ## %entry
6963 ; DARWIN-32-PIC-NEXT: calll L81$pb
6964 ; DARWIN-32-PIC-NEXT: L81$pb:
6965 ; DARWIN-32-PIC-NEXT: popl %eax
6966 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax
6967 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
6968 ; DARWIN-32-PIC-NEXT: retl
6970 ; DARWIN-64-STATIC-LABEL: har02:
6971 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
6972 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6973 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
6974 ; DARWIN-64-STATIC-NEXT: retq
6976 ; DARWIN-64-DYNAMIC-LABEL: har02:
6977 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
6978 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6979 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
6980 ; DARWIN-64-DYNAMIC-NEXT: retq
6982 ; DARWIN-64-PIC-LABEL: har02:
6983 ; DARWIN-64-PIC: ## %bb.0: ## %entry
6984 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
6985 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
6986 ; DARWIN-64-PIC-NEXT: retq
6989 %0 = load i32*, i32** @ptr, align 8
6990 %1 = bitcast i32* %0 to i8*
6994 define i8* @har03() nounwind {
6995 ; LINUX-64-STATIC-LABEL: har03:
6996 ; LINUX-64-STATIC: # %bb.0: # %entry
6997 ; LINUX-64-STATIC-NEXT: movl $dsrc, %eax
6998 ; LINUX-64-STATIC-NEXT: retq
7000 ; LINUX-32-STATIC-LABEL: har03:
7001 ; LINUX-32-STATIC: # %bb.0: # %entry
7002 ; LINUX-32-STATIC-NEXT: movl $dsrc, %eax
7003 ; LINUX-32-STATIC-NEXT: retl
7005 ; LINUX-32-PIC-LABEL: har03:
7006 ; LINUX-32-PIC: # %bb.0: # %entry
7007 ; LINUX-32-PIC-NEXT: calll .L82$pb
7008 ; LINUX-32-PIC-NEXT: .L82$pb:
7009 ; LINUX-32-PIC-NEXT: popl %eax
7010 ; LINUX-32-PIC-NEXT: .Ltmp82:
7011 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax
7012 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax
7013 ; LINUX-32-PIC-NEXT: retl
7015 ; LINUX-64-PIC-LABEL: har03:
7016 ; LINUX-64-PIC: # %bb.0: # %entry
7017 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
7018 ; LINUX-64-PIC-NEXT: retq
7020 ; DARWIN-32-STATIC-LABEL: har03:
7021 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7022 ; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax
7023 ; DARWIN-32-STATIC-NEXT: retl
7025 ; DARWIN-32-DYNAMIC-LABEL: har03:
7026 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7027 ; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax
7028 ; DARWIN-32-DYNAMIC-NEXT: retl
7030 ; DARWIN-32-PIC-LABEL: har03:
7031 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7032 ; DARWIN-32-PIC-NEXT: calll L82$pb
7033 ; DARWIN-32-PIC-NEXT: L82$pb:
7034 ; DARWIN-32-PIC-NEXT: popl %eax
7035 ; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax
7036 ; DARWIN-32-PIC-NEXT: retl
7038 ; DARWIN-64-STATIC-LABEL: har03:
7039 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7040 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
7041 ; DARWIN-64-STATIC-NEXT: retq
7043 ; DARWIN-64-DYNAMIC-LABEL: har03:
7044 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7045 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
7046 ; DARWIN-64-DYNAMIC-NEXT: retq
7048 ; DARWIN-64-PIC-LABEL: har03:
7049 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7050 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
7051 ; DARWIN-64-PIC-NEXT: retq
7054 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
7057 define i8* @har04() nounwind {
7058 ; LINUX-64-STATIC-LABEL: har04:
7059 ; LINUX-64-STATIC: # %bb.0: # %entry
7060 ; LINUX-64-STATIC-NEXT: movl $ddst, %eax
7061 ; LINUX-64-STATIC-NEXT: retq
7063 ; LINUX-32-STATIC-LABEL: har04:
7064 ; LINUX-32-STATIC: # %bb.0: # %entry
7065 ; LINUX-32-STATIC-NEXT: movl $ddst, %eax
7066 ; LINUX-32-STATIC-NEXT: retl
7068 ; LINUX-32-PIC-LABEL: har04:
7069 ; LINUX-32-PIC: # %bb.0: # %entry
7070 ; LINUX-32-PIC-NEXT: calll .L83$pb
7071 ; LINUX-32-PIC-NEXT: .L83$pb:
7072 ; LINUX-32-PIC-NEXT: popl %eax
7073 ; LINUX-32-PIC-NEXT: .Ltmp83:
7074 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax
7075 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
7076 ; LINUX-32-PIC-NEXT: retl
7078 ; LINUX-64-PIC-LABEL: har04:
7079 ; LINUX-64-PIC: # %bb.0: # %entry
7080 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
7081 ; LINUX-64-PIC-NEXT: retq
7083 ; DARWIN-32-STATIC-LABEL: har04:
7084 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7085 ; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax
7086 ; DARWIN-32-STATIC-NEXT: retl
7088 ; DARWIN-32-DYNAMIC-LABEL: har04:
7089 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7090 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax
7091 ; DARWIN-32-DYNAMIC-NEXT: retl
7093 ; DARWIN-32-PIC-LABEL: har04:
7094 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7095 ; DARWIN-32-PIC-NEXT: calll L83$pb
7096 ; DARWIN-32-PIC-NEXT: L83$pb:
7097 ; DARWIN-32-PIC-NEXT: popl %eax
7098 ; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax
7099 ; DARWIN-32-PIC-NEXT: retl
7101 ; DARWIN-64-STATIC-LABEL: har04:
7102 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7103 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
7104 ; DARWIN-64-STATIC-NEXT: retq
7106 ; DARWIN-64-DYNAMIC-LABEL: har04:
7107 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7108 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
7109 ; DARWIN-64-DYNAMIC-NEXT: retq
7111 ; DARWIN-64-PIC-LABEL: har04:
7112 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7113 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
7114 ; DARWIN-64-PIC-NEXT: retq
7117 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
7120 define i8* @har05() nounwind {
7121 ; LINUX-64-STATIC-LABEL: har05:
7122 ; LINUX-64-STATIC: # %bb.0: # %entry
7123 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax
7124 ; LINUX-64-STATIC-NEXT: retq
7126 ; LINUX-32-STATIC-LABEL: har05:
7127 ; LINUX-32-STATIC: # %bb.0: # %entry
7128 ; LINUX-32-STATIC-NEXT: movl dptr, %eax
7129 ; LINUX-32-STATIC-NEXT: retl
7131 ; LINUX-32-PIC-LABEL: har05:
7132 ; LINUX-32-PIC: # %bb.0: # %entry
7133 ; LINUX-32-PIC-NEXT: calll .L84$pb
7134 ; LINUX-32-PIC-NEXT: .L84$pb:
7135 ; LINUX-32-PIC-NEXT: popl %eax
7136 ; LINUX-32-PIC-NEXT: .Ltmp84:
7137 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax
7138 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
7139 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
7140 ; LINUX-32-PIC-NEXT: retl
7142 ; LINUX-64-PIC-LABEL: har05:
7143 ; LINUX-64-PIC: # %bb.0: # %entry
7144 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
7145 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7146 ; LINUX-64-PIC-NEXT: retq
7148 ; DARWIN-32-STATIC-LABEL: har05:
7149 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7150 ; DARWIN-32-STATIC-NEXT: movl _dptr, %eax
7151 ; DARWIN-32-STATIC-NEXT: retl
7153 ; DARWIN-32-DYNAMIC-LABEL: har05:
7154 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7155 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax
7156 ; DARWIN-32-DYNAMIC-NEXT: retl
7158 ; DARWIN-32-PIC-LABEL: har05:
7159 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7160 ; DARWIN-32-PIC-NEXT: calll L84$pb
7161 ; DARWIN-32-PIC-NEXT: L84$pb:
7162 ; DARWIN-32-PIC-NEXT: popl %eax
7163 ; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax
7164 ; DARWIN-32-PIC-NEXT: retl
7166 ; DARWIN-64-STATIC-LABEL: har05:
7167 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7168 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax
7169 ; DARWIN-64-STATIC-NEXT: retq
7171 ; DARWIN-64-DYNAMIC-LABEL: har05:
7172 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7173 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax
7174 ; DARWIN-64-DYNAMIC-NEXT: retq
7176 ; DARWIN-64-PIC-LABEL: har05:
7177 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7178 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax
7179 ; DARWIN-64-PIC-NEXT: retq
7182 %0 = load i32*, i32** @dptr, align 8
7183 %1 = bitcast i32* %0 to i8*
7187 define i8* @har06() nounwind {
7188 ; LINUX-64-STATIC-LABEL: har06:
7189 ; LINUX-64-STATIC: # %bb.0: # %entry
7190 ; LINUX-64-STATIC-NEXT: movl $lsrc, %eax
7191 ; LINUX-64-STATIC-NEXT: retq
7193 ; LINUX-32-STATIC-LABEL: har06:
7194 ; LINUX-32-STATIC: # %bb.0: # %entry
7195 ; LINUX-32-STATIC-NEXT: movl $lsrc, %eax
7196 ; LINUX-32-STATIC-NEXT: retl
7198 ; LINUX-32-PIC-LABEL: har06:
7199 ; LINUX-32-PIC: # %bb.0: # %entry
7200 ; LINUX-32-PIC-NEXT: calll .L85$pb
7201 ; LINUX-32-PIC-NEXT: .L85$pb:
7202 ; LINUX-32-PIC-NEXT: popl %eax
7203 ; LINUX-32-PIC-NEXT: .Ltmp85:
7204 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax
7205 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax
7206 ; LINUX-32-PIC-NEXT: retl
7208 ; LINUX-64-PIC-LABEL: har06:
7209 ; LINUX-64-PIC: # %bb.0: # %entry
7210 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
7211 ; LINUX-64-PIC-NEXT: retq
7213 ; DARWIN-32-STATIC-LABEL: har06:
7214 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7215 ; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax
7216 ; DARWIN-32-STATIC-NEXT: retl
7218 ; DARWIN-32-DYNAMIC-LABEL: har06:
7219 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7220 ; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax
7221 ; DARWIN-32-DYNAMIC-NEXT: retl
7223 ; DARWIN-32-PIC-LABEL: har06:
7224 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7225 ; DARWIN-32-PIC-NEXT: calll L85$pb
7226 ; DARWIN-32-PIC-NEXT: L85$pb:
7227 ; DARWIN-32-PIC-NEXT: popl %eax
7228 ; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax
7229 ; DARWIN-32-PIC-NEXT: retl
7231 ; DARWIN-64-STATIC-LABEL: har06:
7232 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7233 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
7234 ; DARWIN-64-STATIC-NEXT: retq
7236 ; DARWIN-64-DYNAMIC-LABEL: har06:
7237 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7238 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
7239 ; DARWIN-64-DYNAMIC-NEXT: retq
7241 ; DARWIN-64-PIC-LABEL: har06:
7242 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7243 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
7244 ; DARWIN-64-PIC-NEXT: retq
7247 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
7250 define i8* @har07() nounwind {
7251 ; LINUX-64-STATIC-LABEL: har07:
7252 ; LINUX-64-STATIC: # %bb.0: # %entry
7253 ; LINUX-64-STATIC-NEXT: movl $ldst, %eax
7254 ; LINUX-64-STATIC-NEXT: retq
7256 ; LINUX-32-STATIC-LABEL: har07:
7257 ; LINUX-32-STATIC: # %bb.0: # %entry
7258 ; LINUX-32-STATIC-NEXT: movl $ldst, %eax
7259 ; LINUX-32-STATIC-NEXT: retl
7261 ; LINUX-32-PIC-LABEL: har07:
7262 ; LINUX-32-PIC: # %bb.0: # %entry
7263 ; LINUX-32-PIC-NEXT: calll .L86$pb
7264 ; LINUX-32-PIC-NEXT: .L86$pb:
7265 ; LINUX-32-PIC-NEXT: popl %eax
7266 ; LINUX-32-PIC-NEXT: .Ltmp86:
7267 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax
7268 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax
7269 ; LINUX-32-PIC-NEXT: retl
7271 ; LINUX-64-PIC-LABEL: har07:
7272 ; LINUX-64-PIC: # %bb.0: # %entry
7273 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
7274 ; LINUX-64-PIC-NEXT: retq
7276 ; DARWIN-32-STATIC-LABEL: har07:
7277 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7278 ; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax
7279 ; DARWIN-32-STATIC-NEXT: retl
7281 ; DARWIN-32-DYNAMIC-LABEL: har07:
7282 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7283 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax
7284 ; DARWIN-32-DYNAMIC-NEXT: retl
7286 ; DARWIN-32-PIC-LABEL: har07:
7287 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7288 ; DARWIN-32-PIC-NEXT: calll L86$pb
7289 ; DARWIN-32-PIC-NEXT: L86$pb:
7290 ; DARWIN-32-PIC-NEXT: popl %eax
7291 ; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax
7292 ; DARWIN-32-PIC-NEXT: retl
7294 ; DARWIN-64-STATIC-LABEL: har07:
7295 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7296 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
7297 ; DARWIN-64-STATIC-NEXT: retq
7299 ; DARWIN-64-DYNAMIC-LABEL: har07:
7300 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7301 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
7302 ; DARWIN-64-DYNAMIC-NEXT: retq
7304 ; DARWIN-64-PIC-LABEL: har07:
7305 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7306 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
7307 ; DARWIN-64-PIC-NEXT: retq
7310 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
7313 define i8* @har08() nounwind {
7314 ; LINUX-64-STATIC-LABEL: har08:
7315 ; LINUX-64-STATIC: # %bb.0: # %entry
7316 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax
7317 ; LINUX-64-STATIC-NEXT: retq
7319 ; LINUX-32-STATIC-LABEL: har08:
7320 ; LINUX-32-STATIC: # %bb.0: # %entry
7321 ; LINUX-32-STATIC-NEXT: movl lptr, %eax
7322 ; LINUX-32-STATIC-NEXT: retl
7324 ; LINUX-32-PIC-LABEL: har08:
7325 ; LINUX-32-PIC: # %bb.0: # %entry
7326 ; LINUX-32-PIC-NEXT: calll .L87$pb
7327 ; LINUX-32-PIC-NEXT: .L87$pb:
7328 ; LINUX-32-PIC-NEXT: popl %eax
7329 ; LINUX-32-PIC-NEXT: .Ltmp87:
7330 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax
7331 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
7332 ; LINUX-32-PIC-NEXT: retl
7334 ; LINUX-64-PIC-LABEL: har08:
7335 ; LINUX-64-PIC: # %bb.0: # %entry
7336 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax
7337 ; LINUX-64-PIC-NEXT: retq
7339 ; DARWIN-32-STATIC-LABEL: har08:
7340 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7341 ; DARWIN-32-STATIC-NEXT: movl _lptr, %eax
7342 ; DARWIN-32-STATIC-NEXT: retl
7344 ; DARWIN-32-DYNAMIC-LABEL: har08:
7345 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7346 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax
7347 ; DARWIN-32-DYNAMIC-NEXT: retl
7349 ; DARWIN-32-PIC-LABEL: har08:
7350 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7351 ; DARWIN-32-PIC-NEXT: calll L87$pb
7352 ; DARWIN-32-PIC-NEXT: L87$pb:
7353 ; DARWIN-32-PIC-NEXT: popl %eax
7354 ; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax
7355 ; DARWIN-32-PIC-NEXT: retl
7357 ; DARWIN-64-STATIC-LABEL: har08:
7358 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7359 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax
7360 ; DARWIN-64-STATIC-NEXT: retq
7362 ; DARWIN-64-DYNAMIC-LABEL: har08:
7363 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7364 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax
7365 ; DARWIN-64-DYNAMIC-NEXT: retq
7367 ; DARWIN-64-PIC-LABEL: har08:
7368 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7369 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax
7370 ; DARWIN-64-PIC-NEXT: retq
7373 %0 = load i32*, i32** @lptr, align 8
7374 %1 = bitcast i32* %0 to i8*
7378 define i8* @bat00() nounwind {
7379 ; LINUX-64-STATIC-LABEL: bat00:
7380 ; LINUX-64-STATIC: # %bb.0: # %entry
7381 ; LINUX-64-STATIC-NEXT: movl $src+64, %eax
7382 ; LINUX-64-STATIC-NEXT: retq
7384 ; LINUX-32-STATIC-LABEL: bat00:
7385 ; LINUX-32-STATIC: # %bb.0: # %entry
7386 ; LINUX-32-STATIC-NEXT: movl $src+64, %eax
7387 ; LINUX-32-STATIC-NEXT: retl
7389 ; LINUX-32-PIC-LABEL: bat00:
7390 ; LINUX-32-PIC: # %bb.0: # %entry
7391 ; LINUX-32-PIC-NEXT: calll .L88$pb
7392 ; LINUX-32-PIC-NEXT: .L88$pb:
7393 ; LINUX-32-PIC-NEXT: popl %eax
7394 ; LINUX-32-PIC-NEXT: .Ltmp88:
7395 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax
7396 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax
7397 ; LINUX-32-PIC-NEXT: addl $64, %eax
7398 ; LINUX-32-PIC-NEXT: retl
7400 ; LINUX-64-PIC-LABEL: bat00:
7401 ; LINUX-64-PIC: # %bb.0: # %entry
7402 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
7403 ; LINUX-64-PIC-NEXT: addq $64, %rax
7404 ; LINUX-64-PIC-NEXT: retq
7406 ; DARWIN-32-STATIC-LABEL: bat00:
7407 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7408 ; DARWIN-32-STATIC-NEXT: movl $_src+64, %eax
7409 ; DARWIN-32-STATIC-NEXT: retl
7411 ; DARWIN-32-DYNAMIC-LABEL: bat00:
7412 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7413 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax
7414 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7415 ; DARWIN-32-DYNAMIC-NEXT: retl
7417 ; DARWIN-32-PIC-LABEL: bat00:
7418 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7419 ; DARWIN-32-PIC-NEXT: calll L88$pb
7420 ; DARWIN-32-PIC-NEXT: L88$pb:
7421 ; DARWIN-32-PIC-NEXT: popl %eax
7422 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax
7423 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7424 ; DARWIN-32-PIC-NEXT: retl
7426 ; DARWIN-64-STATIC-LABEL: bat00:
7427 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7428 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
7429 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7430 ; DARWIN-64-STATIC-NEXT: retq
7432 ; DARWIN-64-DYNAMIC-LABEL: bat00:
7433 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7434 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
7435 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7436 ; DARWIN-64-DYNAMIC-NEXT: retq
7438 ; DARWIN-64-PIC-LABEL: bat00:
7439 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7440 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
7441 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7442 ; DARWIN-64-PIC-NEXT: retq
7445 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*)
7448 define i8* @bxt00() nounwind {
7449 ; LINUX-64-STATIC-LABEL: bxt00:
7450 ; LINUX-64-STATIC: # %bb.0: # %entry
7451 ; LINUX-64-STATIC-NEXT: movl $xsrc+64, %eax
7452 ; LINUX-64-STATIC-NEXT: retq
7454 ; LINUX-32-STATIC-LABEL: bxt00:
7455 ; LINUX-32-STATIC: # %bb.0: # %entry
7456 ; LINUX-32-STATIC-NEXT: movl $xsrc+64, %eax
7457 ; LINUX-32-STATIC-NEXT: retl
7459 ; LINUX-32-PIC-LABEL: bxt00:
7460 ; LINUX-32-PIC: # %bb.0: # %entry
7461 ; LINUX-32-PIC-NEXT: calll .L89$pb
7462 ; LINUX-32-PIC-NEXT: .L89$pb:
7463 ; LINUX-32-PIC-NEXT: popl %eax
7464 ; LINUX-32-PIC-NEXT: .Ltmp89:
7465 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax
7466 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax
7467 ; LINUX-32-PIC-NEXT: addl $64, %eax
7468 ; LINUX-32-PIC-NEXT: retl
7470 ; LINUX-64-PIC-LABEL: bxt00:
7471 ; LINUX-64-PIC: # %bb.0: # %entry
7472 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
7473 ; LINUX-64-PIC-NEXT: addq $64, %rax
7474 ; LINUX-64-PIC-NEXT: retq
7476 ; DARWIN-32-STATIC-LABEL: bxt00:
7477 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7478 ; DARWIN-32-STATIC-NEXT: movl $_xsrc+64, %eax
7479 ; DARWIN-32-STATIC-NEXT: retl
7481 ; DARWIN-32-DYNAMIC-LABEL: bxt00:
7482 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7483 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax
7484 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7485 ; DARWIN-32-DYNAMIC-NEXT: retl
7487 ; DARWIN-32-PIC-LABEL: bxt00:
7488 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7489 ; DARWIN-32-PIC-NEXT: calll L89$pb
7490 ; DARWIN-32-PIC-NEXT: L89$pb:
7491 ; DARWIN-32-PIC-NEXT: popl %eax
7492 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax
7493 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7494 ; DARWIN-32-PIC-NEXT: retl
7496 ; DARWIN-64-STATIC-LABEL: bxt00:
7497 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7498 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
7499 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7500 ; DARWIN-64-STATIC-NEXT: retq
7502 ; DARWIN-64-DYNAMIC-LABEL: bxt00:
7503 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7504 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
7505 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7506 ; DARWIN-64-DYNAMIC-NEXT: retq
7508 ; DARWIN-64-PIC-LABEL: bxt00:
7509 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7510 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
7511 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7512 ; DARWIN-64-PIC-NEXT: retq
7515 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*)
7518 define i8* @bat01() nounwind {
7519 ; LINUX-64-STATIC-LABEL: bat01:
7520 ; LINUX-64-STATIC: # %bb.0: # %entry
7521 ; LINUX-64-STATIC-NEXT: movl $dst+64, %eax
7522 ; LINUX-64-STATIC-NEXT: retq
7524 ; LINUX-32-STATIC-LABEL: bat01:
7525 ; LINUX-32-STATIC: # %bb.0: # %entry
7526 ; LINUX-32-STATIC-NEXT: movl $dst+64, %eax
7527 ; LINUX-32-STATIC-NEXT: retl
7529 ; LINUX-32-PIC-LABEL: bat01:
7530 ; LINUX-32-PIC: # %bb.0: # %entry
7531 ; LINUX-32-PIC-NEXT: calll .L90$pb
7532 ; LINUX-32-PIC-NEXT: .L90$pb:
7533 ; LINUX-32-PIC-NEXT: popl %eax
7534 ; LINUX-32-PIC-NEXT: .Ltmp90:
7535 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax
7536 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
7537 ; LINUX-32-PIC-NEXT: addl $64, %eax
7538 ; LINUX-32-PIC-NEXT: retl
7540 ; LINUX-64-PIC-LABEL: bat01:
7541 ; LINUX-64-PIC: # %bb.0: # %entry
7542 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
7543 ; LINUX-64-PIC-NEXT: addq $64, %rax
7544 ; LINUX-64-PIC-NEXT: retq
7546 ; DARWIN-32-STATIC-LABEL: bat01:
7547 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7548 ; DARWIN-32-STATIC-NEXT: movl $_dst+64, %eax
7549 ; DARWIN-32-STATIC-NEXT: retl
7551 ; DARWIN-32-DYNAMIC-LABEL: bat01:
7552 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7553 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax
7554 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7555 ; DARWIN-32-DYNAMIC-NEXT: retl
7557 ; DARWIN-32-PIC-LABEL: bat01:
7558 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7559 ; DARWIN-32-PIC-NEXT: calll L90$pb
7560 ; DARWIN-32-PIC-NEXT: L90$pb:
7561 ; DARWIN-32-PIC-NEXT: popl %eax
7562 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax
7563 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7564 ; DARWIN-32-PIC-NEXT: retl
7566 ; DARWIN-64-STATIC-LABEL: bat01:
7567 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7568 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
7569 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7570 ; DARWIN-64-STATIC-NEXT: retq
7572 ; DARWIN-64-DYNAMIC-LABEL: bat01:
7573 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7574 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
7575 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7576 ; DARWIN-64-DYNAMIC-NEXT: retq
7578 ; DARWIN-64-PIC-LABEL: bat01:
7579 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7580 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
7581 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7582 ; DARWIN-64-PIC-NEXT: retq
7585 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*)
7588 define i8* @bxt01() nounwind {
7589 ; LINUX-64-STATIC-LABEL: bxt01:
7590 ; LINUX-64-STATIC: # %bb.0: # %entry
7591 ; LINUX-64-STATIC-NEXT: movl $xdst+64, %eax
7592 ; LINUX-64-STATIC-NEXT: retq
7594 ; LINUX-32-STATIC-LABEL: bxt01:
7595 ; LINUX-32-STATIC: # %bb.0: # %entry
7596 ; LINUX-32-STATIC-NEXT: movl $xdst+64, %eax
7597 ; LINUX-32-STATIC-NEXT: retl
7599 ; LINUX-32-PIC-LABEL: bxt01:
7600 ; LINUX-32-PIC: # %bb.0: # %entry
7601 ; LINUX-32-PIC-NEXT: calll .L91$pb
7602 ; LINUX-32-PIC-NEXT: .L91$pb:
7603 ; LINUX-32-PIC-NEXT: popl %eax
7604 ; LINUX-32-PIC-NEXT: .Ltmp91:
7605 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax
7606 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
7607 ; LINUX-32-PIC-NEXT: addl $64, %eax
7608 ; LINUX-32-PIC-NEXT: retl
7610 ; LINUX-64-PIC-LABEL: bxt01:
7611 ; LINUX-64-PIC: # %bb.0: # %entry
7612 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
7613 ; LINUX-64-PIC-NEXT: addq $64, %rax
7614 ; LINUX-64-PIC-NEXT: retq
7616 ; DARWIN-32-STATIC-LABEL: bxt01:
7617 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7618 ; DARWIN-32-STATIC-NEXT: movl $_xdst+64, %eax
7619 ; DARWIN-32-STATIC-NEXT: retl
7621 ; DARWIN-32-DYNAMIC-LABEL: bxt01:
7622 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7623 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax
7624 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7625 ; DARWIN-32-DYNAMIC-NEXT: retl
7627 ; DARWIN-32-PIC-LABEL: bxt01:
7628 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7629 ; DARWIN-32-PIC-NEXT: calll L91$pb
7630 ; DARWIN-32-PIC-NEXT: L91$pb:
7631 ; DARWIN-32-PIC-NEXT: popl %eax
7632 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax
7633 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7634 ; DARWIN-32-PIC-NEXT: retl
7636 ; DARWIN-64-STATIC-LABEL: bxt01:
7637 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7638 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
7639 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7640 ; DARWIN-64-STATIC-NEXT: retq
7642 ; DARWIN-64-DYNAMIC-LABEL: bxt01:
7643 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7644 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
7645 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7646 ; DARWIN-64-DYNAMIC-NEXT: retq
7648 ; DARWIN-64-PIC-LABEL: bxt01:
7649 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7650 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
7651 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7652 ; DARWIN-64-PIC-NEXT: retq
7655 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*)
7658 define i8* @bat02() nounwind {
7659 ; LINUX-64-STATIC-LABEL: bat02:
7660 ; LINUX-64-STATIC: # %bb.0: # %entry
7661 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax
7662 ; LINUX-64-STATIC-NEXT: addq $64, %rax
7663 ; LINUX-64-STATIC-NEXT: retq
7665 ; LINUX-32-STATIC-LABEL: bat02:
7666 ; LINUX-32-STATIC: # %bb.0: # %entry
7667 ; LINUX-32-STATIC-NEXT: movl ptr, %eax
7668 ; LINUX-32-STATIC-NEXT: addl $64, %eax
7669 ; LINUX-32-STATIC-NEXT: retl
7671 ; LINUX-32-PIC-LABEL: bat02:
7672 ; LINUX-32-PIC: # %bb.0: # %entry
7673 ; LINUX-32-PIC-NEXT: calll .L92$pb
7674 ; LINUX-32-PIC-NEXT: .L92$pb:
7675 ; LINUX-32-PIC-NEXT: popl %eax
7676 ; LINUX-32-PIC-NEXT: .Ltmp92:
7677 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax
7678 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
7679 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
7680 ; LINUX-32-PIC-NEXT: addl $64, %eax
7681 ; LINUX-32-PIC-NEXT: retl
7683 ; LINUX-64-PIC-LABEL: bat02:
7684 ; LINUX-64-PIC: # %bb.0: # %entry
7685 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
7686 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7687 ; LINUX-64-PIC-NEXT: addq $64, %rax
7688 ; LINUX-64-PIC-NEXT: retq
7690 ; DARWIN-32-STATIC-LABEL: bat02:
7691 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7692 ; DARWIN-32-STATIC-NEXT: movl _ptr, %eax
7693 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
7694 ; DARWIN-32-STATIC-NEXT: retl
7696 ; DARWIN-32-DYNAMIC-LABEL: bat02:
7697 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7698 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax
7699 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
7700 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7701 ; DARWIN-32-DYNAMIC-NEXT: retl
7703 ; DARWIN-32-PIC-LABEL: bat02:
7704 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7705 ; DARWIN-32-PIC-NEXT: calll L92$pb
7706 ; DARWIN-32-PIC-NEXT: L92$pb:
7707 ; DARWIN-32-PIC-NEXT: popl %eax
7708 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax
7709 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
7710 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7711 ; DARWIN-32-PIC-NEXT: retl
7713 ; DARWIN-64-STATIC-LABEL: bat02:
7714 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7715 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
7716 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
7717 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7718 ; DARWIN-64-STATIC-NEXT: retq
7720 ; DARWIN-64-DYNAMIC-LABEL: bat02:
7721 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7722 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
7723 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
7724 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7725 ; DARWIN-64-DYNAMIC-NEXT: retq
7727 ; DARWIN-64-PIC-LABEL: bat02:
7728 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7729 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
7730 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
7731 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7732 ; DARWIN-64-PIC-NEXT: retq
7735 %0 = load i32*, i32** @ptr, align 8
7736 %1 = getelementptr i32, i32* %0, i64 16
7737 %2 = bitcast i32* %1 to i8*
7741 define i8* @bat03() nounwind {
7742 ; LINUX-64-STATIC-LABEL: bat03:
7743 ; LINUX-64-STATIC: # %bb.0: # %entry
7744 ; LINUX-64-STATIC-NEXT: movl $dsrc+64, %eax
7745 ; LINUX-64-STATIC-NEXT: retq
7747 ; LINUX-32-STATIC-LABEL: bat03:
7748 ; LINUX-32-STATIC: # %bb.0: # %entry
7749 ; LINUX-32-STATIC-NEXT: movl $dsrc+64, %eax
7750 ; LINUX-32-STATIC-NEXT: retl
7752 ; LINUX-32-PIC-LABEL: bat03:
7753 ; LINUX-32-PIC: # %bb.0: # %entry
7754 ; LINUX-32-PIC-NEXT: calll .L93$pb
7755 ; LINUX-32-PIC-NEXT: .L93$pb:
7756 ; LINUX-32-PIC-NEXT: popl %eax
7757 ; LINUX-32-PIC-NEXT: .Ltmp93:
7758 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax
7759 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax
7760 ; LINUX-32-PIC-NEXT: addl $64, %eax
7761 ; LINUX-32-PIC-NEXT: retl
7763 ; LINUX-64-PIC-LABEL: bat03:
7764 ; LINUX-64-PIC: # %bb.0: # %entry
7765 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
7766 ; LINUX-64-PIC-NEXT: addq $64, %rax
7767 ; LINUX-64-PIC-NEXT: retq
7769 ; DARWIN-32-STATIC-LABEL: bat03:
7770 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7771 ; DARWIN-32-STATIC-NEXT: movl $_dsrc+64, %eax
7772 ; DARWIN-32-STATIC-NEXT: retl
7774 ; DARWIN-32-DYNAMIC-LABEL: bat03:
7775 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7776 ; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+64, %eax
7777 ; DARWIN-32-DYNAMIC-NEXT: retl
7779 ; DARWIN-32-PIC-LABEL: bat03:
7780 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7781 ; DARWIN-32-PIC-NEXT: calll L93$pb
7782 ; DARWIN-32-PIC-NEXT: L93$pb:
7783 ; DARWIN-32-PIC-NEXT: popl %eax
7784 ; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax
7785 ; DARWIN-32-PIC-NEXT: retl
7787 ; DARWIN-64-STATIC-LABEL: bat03:
7788 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7789 ; DARWIN-64-STATIC-NEXT: leaq _dsrc+64(%rip), %rax
7790 ; DARWIN-64-STATIC-NEXT: retq
7792 ; DARWIN-64-DYNAMIC-LABEL: bat03:
7793 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7794 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+64(%rip), %rax
7795 ; DARWIN-64-DYNAMIC-NEXT: retq
7797 ; DARWIN-64-PIC-LABEL: bat03:
7798 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7799 ; DARWIN-64-PIC-NEXT: leaq _dsrc+64(%rip), %rax
7800 ; DARWIN-64-PIC-NEXT: retq
7803 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
7806 define i8* @bat04() nounwind {
7807 ; LINUX-64-STATIC-LABEL: bat04:
7808 ; LINUX-64-STATIC: # %bb.0: # %entry
7809 ; LINUX-64-STATIC-NEXT: movl $ddst+64, %eax
7810 ; LINUX-64-STATIC-NEXT: retq
7812 ; LINUX-32-STATIC-LABEL: bat04:
7813 ; LINUX-32-STATIC: # %bb.0: # %entry
7814 ; LINUX-32-STATIC-NEXT: movl $ddst+64, %eax
7815 ; LINUX-32-STATIC-NEXT: retl
7817 ; LINUX-32-PIC-LABEL: bat04:
7818 ; LINUX-32-PIC: # %bb.0: # %entry
7819 ; LINUX-32-PIC-NEXT: calll .L94$pb
7820 ; LINUX-32-PIC-NEXT: .L94$pb:
7821 ; LINUX-32-PIC-NEXT: popl %eax
7822 ; LINUX-32-PIC-NEXT: .Ltmp94:
7823 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax
7824 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
7825 ; LINUX-32-PIC-NEXT: addl $64, %eax
7826 ; LINUX-32-PIC-NEXT: retl
7828 ; LINUX-64-PIC-LABEL: bat04:
7829 ; LINUX-64-PIC: # %bb.0: # %entry
7830 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
7831 ; LINUX-64-PIC-NEXT: addq $64, %rax
7832 ; LINUX-64-PIC-NEXT: retq
7834 ; DARWIN-32-STATIC-LABEL: bat04:
7835 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7836 ; DARWIN-32-STATIC-NEXT: movl $_ddst+64, %eax
7837 ; DARWIN-32-STATIC-NEXT: retl
7839 ; DARWIN-32-DYNAMIC-LABEL: bat04:
7840 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7841 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, %eax
7842 ; DARWIN-32-DYNAMIC-NEXT: retl
7844 ; DARWIN-32-PIC-LABEL: bat04:
7845 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7846 ; DARWIN-32-PIC-NEXT: calll L94$pb
7847 ; DARWIN-32-PIC-NEXT: L94$pb:
7848 ; DARWIN-32-PIC-NEXT: popl %eax
7849 ; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax
7850 ; DARWIN-32-PIC-NEXT: retl
7852 ; DARWIN-64-STATIC-LABEL: bat04:
7853 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7854 ; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax
7855 ; DARWIN-64-STATIC-NEXT: retq
7857 ; DARWIN-64-DYNAMIC-LABEL: bat04:
7858 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7859 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax
7860 ; DARWIN-64-DYNAMIC-NEXT: retq
7862 ; DARWIN-64-PIC-LABEL: bat04:
7863 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7864 ; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax
7865 ; DARWIN-64-PIC-NEXT: retq
7868 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*)
7871 define i8* @bat05() nounwind {
7872 ; LINUX-64-STATIC-LABEL: bat05:
7873 ; LINUX-64-STATIC: # %bb.0: # %entry
7874 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax
7875 ; LINUX-64-STATIC-NEXT: addq $64, %rax
7876 ; LINUX-64-STATIC-NEXT: retq
7878 ; LINUX-32-STATIC-LABEL: bat05:
7879 ; LINUX-32-STATIC: # %bb.0: # %entry
7880 ; LINUX-32-STATIC-NEXT: movl dptr, %eax
7881 ; LINUX-32-STATIC-NEXT: addl $64, %eax
7882 ; LINUX-32-STATIC-NEXT: retl
7884 ; LINUX-32-PIC-LABEL: bat05:
7885 ; LINUX-32-PIC: # %bb.0: # %entry
7886 ; LINUX-32-PIC-NEXT: calll .L95$pb
7887 ; LINUX-32-PIC-NEXT: .L95$pb:
7888 ; LINUX-32-PIC-NEXT: popl %eax
7889 ; LINUX-32-PIC-NEXT: .Ltmp95:
7890 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax
7891 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
7892 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
7893 ; LINUX-32-PIC-NEXT: addl $64, %eax
7894 ; LINUX-32-PIC-NEXT: retl
7896 ; LINUX-64-PIC-LABEL: bat05:
7897 ; LINUX-64-PIC: # %bb.0: # %entry
7898 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
7899 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7900 ; LINUX-64-PIC-NEXT: addq $64, %rax
7901 ; LINUX-64-PIC-NEXT: retq
7903 ; DARWIN-32-STATIC-LABEL: bat05:
7904 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7905 ; DARWIN-32-STATIC-NEXT: movl _dptr, %eax
7906 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
7907 ; DARWIN-32-STATIC-NEXT: retl
7909 ; DARWIN-32-DYNAMIC-LABEL: bat05:
7910 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7911 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax
7912 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
7913 ; DARWIN-32-DYNAMIC-NEXT: retl
7915 ; DARWIN-32-PIC-LABEL: bat05:
7916 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7917 ; DARWIN-32-PIC-NEXT: calll L95$pb
7918 ; DARWIN-32-PIC-NEXT: L95$pb:
7919 ; DARWIN-32-PIC-NEXT: popl %eax
7920 ; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax
7921 ; DARWIN-32-PIC-NEXT: addl $64, %eax
7922 ; DARWIN-32-PIC-NEXT: retl
7924 ; DARWIN-64-STATIC-LABEL: bat05:
7925 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7926 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax
7927 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
7928 ; DARWIN-64-STATIC-NEXT: retq
7930 ; DARWIN-64-DYNAMIC-LABEL: bat05:
7931 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
7932 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax
7933 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
7934 ; DARWIN-64-DYNAMIC-NEXT: retq
7936 ; DARWIN-64-PIC-LABEL: bat05:
7937 ; DARWIN-64-PIC: ## %bb.0: ## %entry
7938 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax
7939 ; DARWIN-64-PIC-NEXT: addq $64, %rax
7940 ; DARWIN-64-PIC-NEXT: retq
7943 %0 = load i32*, i32** @dptr, align 8
7944 %1 = getelementptr i32, i32* %0, i64 16
7945 %2 = bitcast i32* %1 to i8*
7949 define i8* @bat06() nounwind {
7950 ; LINUX-64-STATIC-LABEL: bat06:
7951 ; LINUX-64-STATIC: # %bb.0: # %entry
7952 ; LINUX-64-STATIC-NEXT: movl $lsrc+64, %eax
7953 ; LINUX-64-STATIC-NEXT: retq
7955 ; LINUX-32-STATIC-LABEL: bat06:
7956 ; LINUX-32-STATIC: # %bb.0: # %entry
7957 ; LINUX-32-STATIC-NEXT: movl $lsrc+64, %eax
7958 ; LINUX-32-STATIC-NEXT: retl
7960 ; LINUX-32-PIC-LABEL: bat06:
7961 ; LINUX-32-PIC: # %bb.0: # %entry
7962 ; LINUX-32-PIC-NEXT: calll .L96$pb
7963 ; LINUX-32-PIC-NEXT: .L96$pb:
7964 ; LINUX-32-PIC-NEXT: popl %eax
7965 ; LINUX-32-PIC-NEXT: .Ltmp96:
7966 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax
7967 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax
7968 ; LINUX-32-PIC-NEXT: retl
7970 ; LINUX-64-PIC-LABEL: bat06:
7971 ; LINUX-64-PIC: # %bb.0: # %entry
7972 ; LINUX-64-PIC-NEXT: leaq lsrc+64(%rip), %rax
7973 ; LINUX-64-PIC-NEXT: retq
7975 ; DARWIN-32-STATIC-LABEL: bat06:
7976 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
7977 ; DARWIN-32-STATIC-NEXT: movl $_lsrc+64, %eax
7978 ; DARWIN-32-STATIC-NEXT: retl
7980 ; DARWIN-32-DYNAMIC-LABEL: bat06:
7981 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
7982 ; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+64, %eax
7983 ; DARWIN-32-DYNAMIC-NEXT: retl
7985 ; DARWIN-32-PIC-LABEL: bat06:
7986 ; DARWIN-32-PIC: ## %bb.0: ## %entry
7987 ; DARWIN-32-PIC-NEXT: calll L96$pb
7988 ; DARWIN-32-PIC-NEXT: L96$pb:
7989 ; DARWIN-32-PIC-NEXT: popl %eax
7990 ; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax
7991 ; DARWIN-32-PIC-NEXT: retl
7993 ; DARWIN-64-STATIC-LABEL: bat06:
7994 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
7995 ; DARWIN-64-STATIC-NEXT: leaq _lsrc+64(%rip), %rax
7996 ; DARWIN-64-STATIC-NEXT: retq
7998 ; DARWIN-64-DYNAMIC-LABEL: bat06:
7999 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8000 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+64(%rip), %rax
8001 ; DARWIN-64-DYNAMIC-NEXT: retq
8003 ; DARWIN-64-PIC-LABEL: bat06:
8004 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8005 ; DARWIN-64-PIC-NEXT: leaq _lsrc+64(%rip), %rax
8006 ; DARWIN-64-PIC-NEXT: retq
8009 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
8012 define i8* @bat07() nounwind {
8013 ; LINUX-64-STATIC-LABEL: bat07:
8014 ; LINUX-64-STATIC: # %bb.0: # %entry
8015 ; LINUX-64-STATIC-NEXT: movl $ldst+64, %eax
8016 ; LINUX-64-STATIC-NEXT: retq
8018 ; LINUX-32-STATIC-LABEL: bat07:
8019 ; LINUX-32-STATIC: # %bb.0: # %entry
8020 ; LINUX-32-STATIC-NEXT: movl $ldst+64, %eax
8021 ; LINUX-32-STATIC-NEXT: retl
8023 ; LINUX-32-PIC-LABEL: bat07:
8024 ; LINUX-32-PIC: # %bb.0: # %entry
8025 ; LINUX-32-PIC-NEXT: calll .L97$pb
8026 ; LINUX-32-PIC-NEXT: .L97$pb:
8027 ; LINUX-32-PIC-NEXT: popl %eax
8028 ; LINUX-32-PIC-NEXT: .Ltmp97:
8029 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax
8030 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax
8031 ; LINUX-32-PIC-NEXT: retl
8033 ; LINUX-64-PIC-LABEL: bat07:
8034 ; LINUX-64-PIC: # %bb.0: # %entry
8035 ; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax
8036 ; LINUX-64-PIC-NEXT: retq
8038 ; DARWIN-32-STATIC-LABEL: bat07:
8039 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8040 ; DARWIN-32-STATIC-NEXT: movl $_ldst+64, %eax
8041 ; DARWIN-32-STATIC-NEXT: retl
8043 ; DARWIN-32-DYNAMIC-LABEL: bat07:
8044 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8045 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, %eax
8046 ; DARWIN-32-DYNAMIC-NEXT: retl
8048 ; DARWIN-32-PIC-LABEL: bat07:
8049 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8050 ; DARWIN-32-PIC-NEXT: calll L97$pb
8051 ; DARWIN-32-PIC-NEXT: L97$pb:
8052 ; DARWIN-32-PIC-NEXT: popl %eax
8053 ; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax
8054 ; DARWIN-32-PIC-NEXT: retl
8056 ; DARWIN-64-STATIC-LABEL: bat07:
8057 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8058 ; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax
8059 ; DARWIN-64-STATIC-NEXT: retq
8061 ; DARWIN-64-DYNAMIC-LABEL: bat07:
8062 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8063 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax
8064 ; DARWIN-64-DYNAMIC-NEXT: retq
8066 ; DARWIN-64-PIC-LABEL: bat07:
8067 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8068 ; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax
8069 ; DARWIN-64-PIC-NEXT: retq
8072 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*)
8075 define i8* @bat08() nounwind {
8076 ; LINUX-64-STATIC-LABEL: bat08:
8077 ; LINUX-64-STATIC: # %bb.0: # %entry
8078 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax
8079 ; LINUX-64-STATIC-NEXT: addq $64, %rax
8080 ; LINUX-64-STATIC-NEXT: retq
8082 ; LINUX-32-STATIC-LABEL: bat08:
8083 ; LINUX-32-STATIC: # %bb.0: # %entry
8084 ; LINUX-32-STATIC-NEXT: movl lptr, %eax
8085 ; LINUX-32-STATIC-NEXT: addl $64, %eax
8086 ; LINUX-32-STATIC-NEXT: retl
8088 ; LINUX-32-PIC-LABEL: bat08:
8089 ; LINUX-32-PIC: # %bb.0: # %entry
8090 ; LINUX-32-PIC-NEXT: calll .L98$pb
8091 ; LINUX-32-PIC-NEXT: .L98$pb:
8092 ; LINUX-32-PIC-NEXT: popl %eax
8093 ; LINUX-32-PIC-NEXT: .Ltmp98:
8094 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax
8095 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
8096 ; LINUX-32-PIC-NEXT: addl $64, %eax
8097 ; LINUX-32-PIC-NEXT: retl
8099 ; LINUX-64-PIC-LABEL: bat08:
8100 ; LINUX-64-PIC: # %bb.0: # %entry
8101 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax
8102 ; LINUX-64-PIC-NEXT: addq $64, %rax
8103 ; LINUX-64-PIC-NEXT: retq
8105 ; DARWIN-32-STATIC-LABEL: bat08:
8106 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8107 ; DARWIN-32-STATIC-NEXT: movl _lptr, %eax
8108 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
8109 ; DARWIN-32-STATIC-NEXT: retl
8111 ; DARWIN-32-DYNAMIC-LABEL: bat08:
8112 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8113 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax
8114 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
8115 ; DARWIN-32-DYNAMIC-NEXT: retl
8117 ; DARWIN-32-PIC-LABEL: bat08:
8118 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8119 ; DARWIN-32-PIC-NEXT: calll L98$pb
8120 ; DARWIN-32-PIC-NEXT: L98$pb:
8121 ; DARWIN-32-PIC-NEXT: popl %eax
8122 ; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax
8123 ; DARWIN-32-PIC-NEXT: addl $64, %eax
8124 ; DARWIN-32-PIC-NEXT: retl
8126 ; DARWIN-64-STATIC-LABEL: bat08:
8127 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8128 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax
8129 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
8130 ; DARWIN-64-STATIC-NEXT: retq
8132 ; DARWIN-64-DYNAMIC-LABEL: bat08:
8133 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8134 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax
8135 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
8136 ; DARWIN-64-DYNAMIC-NEXT: retq
8138 ; DARWIN-64-PIC-LABEL: bat08:
8139 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8140 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax
8141 ; DARWIN-64-PIC-NEXT: addq $64, %rax
8142 ; DARWIN-64-PIC-NEXT: retq
8145 %0 = load i32*, i32** @lptr, align 8
8146 %1 = getelementptr i32, i32* %0, i64 16
8147 %2 = bitcast i32* %1 to i8*
8151 define i8* @bam00() nounwind {
8152 ; LINUX-64-STATIC-LABEL: bam00:
8153 ; LINUX-64-STATIC: # %bb.0: # %entry
8154 ; LINUX-64-STATIC-NEXT: movl $src+262144, %eax
8155 ; LINUX-64-STATIC-NEXT: retq
8157 ; LINUX-32-STATIC-LABEL: bam00:
8158 ; LINUX-32-STATIC: # %bb.0: # %entry
8159 ; LINUX-32-STATIC-NEXT: movl $src+262144, %eax
8160 ; LINUX-32-STATIC-NEXT: retl
8162 ; LINUX-32-PIC-LABEL: bam00:
8163 ; LINUX-32-PIC: # %bb.0: # %entry
8164 ; LINUX-32-PIC-NEXT: calll .L99$pb
8165 ; LINUX-32-PIC-NEXT: .L99$pb:
8166 ; LINUX-32-PIC-NEXT: popl %ecx
8167 ; LINUX-32-PIC-NEXT: .Ltmp99:
8168 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx
8169 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8170 ; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax
8171 ; LINUX-32-PIC-NEXT: retl
8173 ; LINUX-64-PIC-LABEL: bam00:
8174 ; LINUX-64-PIC: # %bb.0: # %entry
8175 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8176 ; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax
8177 ; LINUX-64-PIC-NEXT: retq
8179 ; DARWIN-32-STATIC-LABEL: bam00:
8180 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8181 ; DARWIN-32-STATIC-NEXT: movl $_src+262144, %eax
8182 ; DARWIN-32-STATIC-NEXT: retl
8184 ; DARWIN-32-DYNAMIC-LABEL: bam00:
8185 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8186 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8187 ; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax
8188 ; DARWIN-32-DYNAMIC-NEXT: retl
8190 ; DARWIN-32-PIC-LABEL: bam00:
8191 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8192 ; DARWIN-32-PIC-NEXT: calll L99$pb
8193 ; DARWIN-32-PIC-NEXT: L99$pb:
8194 ; DARWIN-32-PIC-NEXT: popl %ecx
8195 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8196 ; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax
8197 ; DARWIN-32-PIC-NEXT: retl
8199 ; DARWIN-64-STATIC-LABEL: bam00:
8200 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8201 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8202 ; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax
8203 ; DARWIN-64-STATIC-NEXT: retq
8205 ; DARWIN-64-DYNAMIC-LABEL: bam00:
8206 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8207 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8208 ; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax
8209 ; DARWIN-64-DYNAMIC-NEXT: retq
8211 ; DARWIN-64-PIC-LABEL: bam00:
8212 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8213 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8214 ; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax
8215 ; DARWIN-64-PIC-NEXT: retq
8218 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*)
8221 define i8* @bam01() nounwind {
8222 ; LINUX-64-STATIC-LABEL: bam01:
8223 ; LINUX-64-STATIC: # %bb.0: # %entry
8224 ; LINUX-64-STATIC-NEXT: movl $dst+262144, %eax
8225 ; LINUX-64-STATIC-NEXT: retq
8227 ; LINUX-32-STATIC-LABEL: bam01:
8228 ; LINUX-32-STATIC: # %bb.0: # %entry
8229 ; LINUX-32-STATIC-NEXT: movl $dst+262144, %eax
8230 ; LINUX-32-STATIC-NEXT: retl
8232 ; LINUX-32-PIC-LABEL: bam01:
8233 ; LINUX-32-PIC: # %bb.0: # %entry
8234 ; LINUX-32-PIC-NEXT: calll .L100$pb
8235 ; LINUX-32-PIC-NEXT: .L100$pb:
8236 ; LINUX-32-PIC-NEXT: popl %ecx
8237 ; LINUX-32-PIC-NEXT: .Ltmp100:
8238 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx
8239 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8240 ; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax
8241 ; LINUX-32-PIC-NEXT: retl
8243 ; LINUX-64-PIC-LABEL: bam01:
8244 ; LINUX-64-PIC: # %bb.0: # %entry
8245 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8246 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
8247 ; LINUX-64-PIC-NEXT: retq
8249 ; DARWIN-32-STATIC-LABEL: bam01:
8250 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8251 ; DARWIN-32-STATIC-NEXT: movl $_dst+262144, %eax
8252 ; DARWIN-32-STATIC-NEXT: retl
8254 ; DARWIN-32-DYNAMIC-LABEL: bam01:
8255 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8256 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8257 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
8258 ; DARWIN-32-DYNAMIC-NEXT: retl
8260 ; DARWIN-32-PIC-LABEL: bam01:
8261 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8262 ; DARWIN-32-PIC-NEXT: calll L100$pb
8263 ; DARWIN-32-PIC-NEXT: L100$pb:
8264 ; DARWIN-32-PIC-NEXT: popl %ecx
8265 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8266 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax
8267 ; DARWIN-32-PIC-NEXT: retl
8269 ; DARWIN-64-STATIC-LABEL: bam01:
8270 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8271 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8272 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
8273 ; DARWIN-64-STATIC-NEXT: retq
8275 ; DARWIN-64-DYNAMIC-LABEL: bam01:
8276 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8277 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8278 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
8279 ; DARWIN-64-DYNAMIC-NEXT: retq
8281 ; DARWIN-64-PIC-LABEL: bam01:
8282 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8283 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8284 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
8285 ; DARWIN-64-PIC-NEXT: retq
8288 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*)
8291 define i8* @bxm01() nounwind {
8292 ; LINUX-64-STATIC-LABEL: bxm01:
8293 ; LINUX-64-STATIC: # %bb.0: # %entry
8294 ; LINUX-64-STATIC-NEXT: movl $xdst+262144, %eax
8295 ; LINUX-64-STATIC-NEXT: retq
8297 ; LINUX-32-STATIC-LABEL: bxm01:
8298 ; LINUX-32-STATIC: # %bb.0: # %entry
8299 ; LINUX-32-STATIC-NEXT: movl $xdst+262144, %eax
8300 ; LINUX-32-STATIC-NEXT: retl
8302 ; LINUX-32-PIC-LABEL: bxm01:
8303 ; LINUX-32-PIC: # %bb.0: # %entry
8304 ; LINUX-32-PIC-NEXT: calll .L101$pb
8305 ; LINUX-32-PIC-NEXT: .L101$pb:
8306 ; LINUX-32-PIC-NEXT: popl %ecx
8307 ; LINUX-32-PIC-NEXT: .Ltmp101:
8308 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx
8309 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8310 ; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax
8311 ; LINUX-32-PIC-NEXT: retl
8313 ; LINUX-64-PIC-LABEL: bxm01:
8314 ; LINUX-64-PIC: # %bb.0: # %entry
8315 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8316 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax
8317 ; LINUX-64-PIC-NEXT: retq
8319 ; DARWIN-32-STATIC-LABEL: bxm01:
8320 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8321 ; DARWIN-32-STATIC-NEXT: movl $_xdst+262144, %eax
8322 ; DARWIN-32-STATIC-NEXT: retl
8324 ; DARWIN-32-DYNAMIC-LABEL: bxm01:
8325 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8326 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8327 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
8328 ; DARWIN-32-DYNAMIC-NEXT: retl
8330 ; DARWIN-32-PIC-LABEL: bxm01:
8331 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8332 ; DARWIN-32-PIC-NEXT: calll L101$pb
8333 ; DARWIN-32-PIC-NEXT: L101$pb:
8334 ; DARWIN-32-PIC-NEXT: popl %ecx
8335 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8336 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax
8337 ; DARWIN-32-PIC-NEXT: retl
8339 ; DARWIN-64-STATIC-LABEL: bxm01:
8340 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8341 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8342 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
8343 ; DARWIN-64-STATIC-NEXT: retq
8345 ; DARWIN-64-DYNAMIC-LABEL: bxm01:
8346 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8347 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8348 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
8349 ; DARWIN-64-DYNAMIC-NEXT: retq
8351 ; DARWIN-64-PIC-LABEL: bxm01:
8352 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8353 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8354 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
8355 ; DARWIN-64-PIC-NEXT: retq
8358 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*)
8361 define i8* @bam02() nounwind {
8362 ; LINUX-64-STATIC-LABEL: bam02:
8363 ; LINUX-64-STATIC: # %bb.0: # %entry
8364 ; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8365 ; LINUX-64-STATIC-NEXT: addq ptr(%rip), %rax
8366 ; LINUX-64-STATIC-NEXT: retq
8368 ; LINUX-32-STATIC-LABEL: bam02:
8369 ; LINUX-32-STATIC: # %bb.0: # %entry
8370 ; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8371 ; LINUX-32-STATIC-NEXT: addl ptr, %eax
8372 ; LINUX-32-STATIC-NEXT: retl
8374 ; LINUX-32-PIC-LABEL: bam02:
8375 ; LINUX-32-PIC: # %bb.0: # %entry
8376 ; LINUX-32-PIC-NEXT: calll .L102$pb
8377 ; LINUX-32-PIC-NEXT: .L102$pb:
8378 ; LINUX-32-PIC-NEXT: popl %eax
8379 ; LINUX-32-PIC-NEXT: .Ltmp102:
8380 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax
8381 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx
8382 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8383 ; LINUX-32-PIC-NEXT: addl (%ecx), %eax
8384 ; LINUX-32-PIC-NEXT: retl
8386 ; LINUX-64-PIC-LABEL: bam02:
8387 ; LINUX-64-PIC: # %bb.0: # %entry
8388 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
8389 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8390 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax
8391 ; LINUX-64-PIC-NEXT: retq
8393 ; DARWIN-32-STATIC-LABEL: bam02:
8394 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8395 ; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8396 ; DARWIN-32-STATIC-NEXT: addl _ptr, %eax
8397 ; DARWIN-32-STATIC-NEXT: retl
8399 ; DARWIN-32-DYNAMIC-LABEL: bam02:
8400 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8401 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
8402 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8403 ; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax
8404 ; DARWIN-32-DYNAMIC-NEXT: retl
8406 ; DARWIN-32-PIC-LABEL: bam02:
8407 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8408 ; DARWIN-32-PIC-NEXT: calll L102$pb
8409 ; DARWIN-32-PIC-NEXT: L102$pb:
8410 ; DARWIN-32-PIC-NEXT: popl %eax
8411 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx
8412 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8413 ; DARWIN-32-PIC-NEXT: addl (%ecx), %eax
8414 ; DARWIN-32-PIC-NEXT: retl
8416 ; DARWIN-64-STATIC-LABEL: bam02:
8417 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8418 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
8419 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8420 ; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax
8421 ; DARWIN-64-STATIC-NEXT: retq
8423 ; DARWIN-64-DYNAMIC-LABEL: bam02:
8424 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8425 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
8426 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8427 ; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax
8428 ; DARWIN-64-DYNAMIC-NEXT: retq
8430 ; DARWIN-64-PIC-LABEL: bam02:
8431 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8432 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
8433 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8434 ; DARWIN-64-PIC-NEXT: addq (%rcx), %rax
8435 ; DARWIN-64-PIC-NEXT: retq
8438 %0 = load i32*, i32** @ptr, align 8
8439 %1 = getelementptr i32, i32* %0, i64 65536
8440 %2 = bitcast i32* %1 to i8*
8444 define i8* @bam03() nounwind {
8445 ; LINUX-64-STATIC-LABEL: bam03:
8446 ; LINUX-64-STATIC: # %bb.0: # %entry
8447 ; LINUX-64-STATIC-NEXT: movl $dsrc+262144, %eax
8448 ; LINUX-64-STATIC-NEXT: retq
8450 ; LINUX-32-STATIC-LABEL: bam03:
8451 ; LINUX-32-STATIC: # %bb.0: # %entry
8452 ; LINUX-32-STATIC-NEXT: movl $dsrc+262144, %eax
8453 ; LINUX-32-STATIC-NEXT: retl
8455 ; LINUX-32-PIC-LABEL: bam03:
8456 ; LINUX-32-PIC: # %bb.0: # %entry
8457 ; LINUX-32-PIC-NEXT: calll .L103$pb
8458 ; LINUX-32-PIC-NEXT: .L103$pb:
8459 ; LINUX-32-PIC-NEXT: popl %ecx
8460 ; LINUX-32-PIC-NEXT: .Ltmp103:
8461 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %ecx
8462 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8463 ; LINUX-32-PIC-NEXT: addl dsrc@GOT(%ecx), %eax
8464 ; LINUX-32-PIC-NEXT: retl
8466 ; LINUX-64-PIC-LABEL: bam03:
8467 ; LINUX-64-PIC: # %bb.0: # %entry
8468 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8469 ; LINUX-64-PIC-NEXT: addq dsrc@GOTPCREL(%rip), %rax
8470 ; LINUX-64-PIC-NEXT: retq
8472 ; DARWIN-32-STATIC-LABEL: bam03:
8473 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8474 ; DARWIN-32-STATIC-NEXT: movl $_dsrc+262144, %eax
8475 ; DARWIN-32-STATIC-NEXT: retl
8477 ; DARWIN-32-DYNAMIC-LABEL: bam03:
8478 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8479 ; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+262144, %eax
8480 ; DARWIN-32-DYNAMIC-NEXT: retl
8482 ; DARWIN-32-PIC-LABEL: bam03:
8483 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8484 ; DARWIN-32-PIC-NEXT: calll L103$pb
8485 ; DARWIN-32-PIC-NEXT: L103$pb:
8486 ; DARWIN-32-PIC-NEXT: popl %eax
8487 ; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax
8488 ; DARWIN-32-PIC-NEXT: retl
8490 ; DARWIN-64-STATIC-LABEL: bam03:
8491 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8492 ; DARWIN-64-STATIC-NEXT: leaq _dsrc+262144(%rip), %rax
8493 ; DARWIN-64-STATIC-NEXT: retq
8495 ; DARWIN-64-DYNAMIC-LABEL: bam03:
8496 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8497 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+262144(%rip), %rax
8498 ; DARWIN-64-DYNAMIC-NEXT: retq
8500 ; DARWIN-64-PIC-LABEL: bam03:
8501 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8502 ; DARWIN-64-PIC-NEXT: leaq _dsrc+262144(%rip), %rax
8503 ; DARWIN-64-PIC-NEXT: retq
8506 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
8509 define i8* @bam04() nounwind {
8510 ; LINUX-64-STATIC-LABEL: bam04:
8511 ; LINUX-64-STATIC: # %bb.0: # %entry
8512 ; LINUX-64-STATIC-NEXT: movl $ddst+262144, %eax
8513 ; LINUX-64-STATIC-NEXT: retq
8515 ; LINUX-32-STATIC-LABEL: bam04:
8516 ; LINUX-32-STATIC: # %bb.0: # %entry
8517 ; LINUX-32-STATIC-NEXT: movl $ddst+262144, %eax
8518 ; LINUX-32-STATIC-NEXT: retl
8520 ; LINUX-32-PIC-LABEL: bam04:
8521 ; LINUX-32-PIC: # %bb.0: # %entry
8522 ; LINUX-32-PIC-NEXT: calll .L104$pb
8523 ; LINUX-32-PIC-NEXT: .L104$pb:
8524 ; LINUX-32-PIC-NEXT: popl %ecx
8525 ; LINUX-32-PIC-NEXT: .Ltmp104:
8526 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %ecx
8527 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8528 ; LINUX-32-PIC-NEXT: addl ddst@GOT(%ecx), %eax
8529 ; LINUX-32-PIC-NEXT: retl
8531 ; LINUX-64-PIC-LABEL: bam04:
8532 ; LINUX-64-PIC: # %bb.0: # %entry
8533 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8534 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax
8535 ; LINUX-64-PIC-NEXT: retq
8537 ; DARWIN-32-STATIC-LABEL: bam04:
8538 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8539 ; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, %eax
8540 ; DARWIN-32-STATIC-NEXT: retl
8542 ; DARWIN-32-DYNAMIC-LABEL: bam04:
8543 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8544 ; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, %eax
8545 ; DARWIN-32-DYNAMIC-NEXT: retl
8547 ; DARWIN-32-PIC-LABEL: bam04:
8548 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8549 ; DARWIN-32-PIC-NEXT: calll L104$pb
8550 ; DARWIN-32-PIC-NEXT: L104$pb:
8551 ; DARWIN-32-PIC-NEXT: popl %eax
8552 ; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax
8553 ; DARWIN-32-PIC-NEXT: retl
8555 ; DARWIN-64-STATIC-LABEL: bam04:
8556 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8557 ; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax
8558 ; DARWIN-64-STATIC-NEXT: retq
8560 ; DARWIN-64-DYNAMIC-LABEL: bam04:
8561 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8562 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax
8563 ; DARWIN-64-DYNAMIC-NEXT: retq
8565 ; DARWIN-64-PIC-LABEL: bam04:
8566 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8567 ; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax
8568 ; DARWIN-64-PIC-NEXT: retq
8571 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
8574 define i8* @bam05() nounwind {
8575 ; LINUX-64-STATIC-LABEL: bam05:
8576 ; LINUX-64-STATIC: # %bb.0: # %entry
8577 ; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8578 ; LINUX-64-STATIC-NEXT: addq dptr(%rip), %rax
8579 ; LINUX-64-STATIC-NEXT: retq
8581 ; LINUX-32-STATIC-LABEL: bam05:
8582 ; LINUX-32-STATIC: # %bb.0: # %entry
8583 ; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8584 ; LINUX-32-STATIC-NEXT: addl dptr, %eax
8585 ; LINUX-32-STATIC-NEXT: retl
8587 ; LINUX-32-PIC-LABEL: bam05:
8588 ; LINUX-32-PIC: # %bb.0: # %entry
8589 ; LINUX-32-PIC-NEXT: calll .L105$pb
8590 ; LINUX-32-PIC-NEXT: .L105$pb:
8591 ; LINUX-32-PIC-NEXT: popl %eax
8592 ; LINUX-32-PIC-NEXT: .Ltmp105:
8593 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %eax
8594 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %ecx
8595 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8596 ; LINUX-32-PIC-NEXT: addl (%ecx), %eax
8597 ; LINUX-32-PIC-NEXT: retl
8599 ; LINUX-64-PIC-LABEL: bam05:
8600 ; LINUX-64-PIC: # %bb.0: # %entry
8601 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
8602 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8603 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax
8604 ; LINUX-64-PIC-NEXT: retq
8606 ; DARWIN-32-STATIC-LABEL: bam05:
8607 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8608 ; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8609 ; DARWIN-32-STATIC-NEXT: addl _dptr, %eax
8610 ; DARWIN-32-STATIC-NEXT: retl
8612 ; DARWIN-32-DYNAMIC-LABEL: bam05:
8613 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8614 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8615 ; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax
8616 ; DARWIN-32-DYNAMIC-NEXT: retl
8618 ; DARWIN-32-PIC-LABEL: bam05:
8619 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8620 ; DARWIN-32-PIC-NEXT: calll L105$pb
8621 ; DARWIN-32-PIC-NEXT: L105$pb:
8622 ; DARWIN-32-PIC-NEXT: popl %ecx
8623 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8624 ; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax
8625 ; DARWIN-32-PIC-NEXT: retl
8627 ; DARWIN-64-STATIC-LABEL: bam05:
8628 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8629 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8630 ; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax
8631 ; DARWIN-64-STATIC-NEXT: retq
8633 ; DARWIN-64-DYNAMIC-LABEL: bam05:
8634 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8635 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8636 ; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax
8637 ; DARWIN-64-DYNAMIC-NEXT: retq
8639 ; DARWIN-64-PIC-LABEL: bam05:
8640 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8641 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8642 ; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax
8643 ; DARWIN-64-PIC-NEXT: retq
8646 %0 = load i32*, i32** @dptr, align 8
8647 %1 = getelementptr i32, i32* %0, i64 65536
8648 %2 = bitcast i32* %1 to i8*
8652 define i8* @bam06() nounwind {
8653 ; LINUX-64-STATIC-LABEL: bam06:
8654 ; LINUX-64-STATIC: # %bb.0: # %entry
8655 ; LINUX-64-STATIC-NEXT: movl $lsrc+262144, %eax
8656 ; LINUX-64-STATIC-NEXT: retq
8658 ; LINUX-32-STATIC-LABEL: bam06:
8659 ; LINUX-32-STATIC: # %bb.0: # %entry
8660 ; LINUX-32-STATIC-NEXT: movl $lsrc+262144, %eax
8661 ; LINUX-32-STATIC-NEXT: retl
8663 ; LINUX-32-PIC-LABEL: bam06:
8664 ; LINUX-32-PIC: # %bb.0: # %entry
8665 ; LINUX-32-PIC-NEXT: calll .L106$pb
8666 ; LINUX-32-PIC-NEXT: .L106$pb:
8667 ; LINUX-32-PIC-NEXT: popl %eax
8668 ; LINUX-32-PIC-NEXT: .Ltmp106:
8669 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax
8670 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax
8671 ; LINUX-32-PIC-NEXT: retl
8673 ; LINUX-64-PIC-LABEL: bam06:
8674 ; LINUX-64-PIC: # %bb.0: # %entry
8675 ; LINUX-64-PIC-NEXT: leaq lsrc+262144(%rip), %rax
8676 ; LINUX-64-PIC-NEXT: retq
8678 ; DARWIN-32-STATIC-LABEL: bam06:
8679 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8680 ; DARWIN-32-STATIC-NEXT: movl $_lsrc+262144, %eax
8681 ; DARWIN-32-STATIC-NEXT: retl
8683 ; DARWIN-32-DYNAMIC-LABEL: bam06:
8684 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8685 ; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+262144, %eax
8686 ; DARWIN-32-DYNAMIC-NEXT: retl
8688 ; DARWIN-32-PIC-LABEL: bam06:
8689 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8690 ; DARWIN-32-PIC-NEXT: calll L106$pb
8691 ; DARWIN-32-PIC-NEXT: L106$pb:
8692 ; DARWIN-32-PIC-NEXT: popl %eax
8693 ; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax
8694 ; DARWIN-32-PIC-NEXT: retl
8696 ; DARWIN-64-STATIC-LABEL: bam06:
8697 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8698 ; DARWIN-64-STATIC-NEXT: leaq _lsrc+262144(%rip), %rax
8699 ; DARWIN-64-STATIC-NEXT: retq
8701 ; DARWIN-64-DYNAMIC-LABEL: bam06:
8702 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8703 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+262144(%rip), %rax
8704 ; DARWIN-64-DYNAMIC-NEXT: retq
8706 ; DARWIN-64-PIC-LABEL: bam06:
8707 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8708 ; DARWIN-64-PIC-NEXT: leaq _lsrc+262144(%rip), %rax
8709 ; DARWIN-64-PIC-NEXT: retq
8712 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
8715 define i8* @bam07() nounwind {
8716 ; LINUX-64-STATIC-LABEL: bam07:
8717 ; LINUX-64-STATIC: # %bb.0: # %entry
8718 ; LINUX-64-STATIC-NEXT: movl $ldst+262144, %eax
8719 ; LINUX-64-STATIC-NEXT: retq
8721 ; LINUX-32-STATIC-LABEL: bam07:
8722 ; LINUX-32-STATIC: # %bb.0: # %entry
8723 ; LINUX-32-STATIC-NEXT: movl $ldst+262144, %eax
8724 ; LINUX-32-STATIC-NEXT: retl
8726 ; LINUX-32-PIC-LABEL: bam07:
8727 ; LINUX-32-PIC: # %bb.0: # %entry
8728 ; LINUX-32-PIC-NEXT: calll .L107$pb
8729 ; LINUX-32-PIC-NEXT: .L107$pb:
8730 ; LINUX-32-PIC-NEXT: popl %eax
8731 ; LINUX-32-PIC-NEXT: .Ltmp107:
8732 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax
8733 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax
8734 ; LINUX-32-PIC-NEXT: retl
8736 ; LINUX-64-PIC-LABEL: bam07:
8737 ; LINUX-64-PIC: # %bb.0: # %entry
8738 ; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax
8739 ; LINUX-64-PIC-NEXT: retq
8741 ; DARWIN-32-STATIC-LABEL: bam07:
8742 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8743 ; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, %eax
8744 ; DARWIN-32-STATIC-NEXT: retl
8746 ; DARWIN-32-DYNAMIC-LABEL: bam07:
8747 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8748 ; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, %eax
8749 ; DARWIN-32-DYNAMIC-NEXT: retl
8751 ; DARWIN-32-PIC-LABEL: bam07:
8752 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8753 ; DARWIN-32-PIC-NEXT: calll L107$pb
8754 ; DARWIN-32-PIC-NEXT: L107$pb:
8755 ; DARWIN-32-PIC-NEXT: popl %eax
8756 ; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax
8757 ; DARWIN-32-PIC-NEXT: retl
8759 ; DARWIN-64-STATIC-LABEL: bam07:
8760 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8761 ; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax
8762 ; DARWIN-64-STATIC-NEXT: retq
8764 ; DARWIN-64-DYNAMIC-LABEL: bam07:
8765 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8766 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax
8767 ; DARWIN-64-DYNAMIC-NEXT: retq
8769 ; DARWIN-64-PIC-LABEL: bam07:
8770 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8771 ; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax
8772 ; DARWIN-64-PIC-NEXT: retq
8775 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
8778 define i8* @bam08() nounwind {
8779 ; LINUX-64-STATIC-LABEL: bam08:
8780 ; LINUX-64-STATIC: # %bb.0: # %entry
8781 ; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8782 ; LINUX-64-STATIC-NEXT: addq lptr(%rip), %rax
8783 ; LINUX-64-STATIC-NEXT: retq
8785 ; LINUX-32-STATIC-LABEL: bam08:
8786 ; LINUX-32-STATIC: # %bb.0: # %entry
8787 ; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000
8788 ; LINUX-32-STATIC-NEXT: addl lptr, %eax
8789 ; LINUX-32-STATIC-NEXT: retl
8791 ; LINUX-32-PIC-LABEL: bam08:
8792 ; LINUX-32-PIC: # %bb.0: # %entry
8793 ; LINUX-32-PIC-NEXT: calll .L108$pb
8794 ; LINUX-32-PIC-NEXT: .L108$pb:
8795 ; LINUX-32-PIC-NEXT: popl %ecx
8796 ; LINUX-32-PIC-NEXT: .Ltmp108:
8797 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx
8798 ; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8799 ; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax
8800 ; LINUX-32-PIC-NEXT: retl
8802 ; LINUX-64-PIC-LABEL: bam08:
8803 ; LINUX-64-PIC: # %bb.0: # %entry
8804 ; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000
8805 ; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax
8806 ; LINUX-64-PIC-NEXT: retq
8808 ; DARWIN-32-STATIC-LABEL: bam08:
8809 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8810 ; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8811 ; DARWIN-32-STATIC-NEXT: addl _lptr, %eax
8812 ; DARWIN-32-STATIC-NEXT: retl
8814 ; DARWIN-32-DYNAMIC-LABEL: bam08:
8815 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8816 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8817 ; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax
8818 ; DARWIN-32-DYNAMIC-NEXT: retl
8820 ; DARWIN-32-PIC-LABEL: bam08:
8821 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8822 ; DARWIN-32-PIC-NEXT: calll L108$pb
8823 ; DARWIN-32-PIC-NEXT: L108$pb:
8824 ; DARWIN-32-PIC-NEXT: popl %ecx
8825 ; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8826 ; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax
8827 ; DARWIN-32-PIC-NEXT: retl
8829 ; DARWIN-64-STATIC-LABEL: bam08:
8830 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8831 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000
8832 ; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax
8833 ; DARWIN-64-STATIC-NEXT: retq
8835 ; DARWIN-64-DYNAMIC-LABEL: bam08:
8836 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8837 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000
8838 ; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax
8839 ; DARWIN-64-DYNAMIC-NEXT: retq
8841 ; DARWIN-64-PIC-LABEL: bam08:
8842 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8843 ; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000
8844 ; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax
8845 ; DARWIN-64-PIC-NEXT: retq
8848 %0 = load i32*, i32** @lptr, align 8
8849 %1 = getelementptr i32, i32* %0, i64 65536
8850 %2 = bitcast i32* %1 to i8*
8854 define i8* @cat00(i64 %i) nounwind {
8855 ; LINUX-64-STATIC-LABEL: cat00:
8856 ; LINUX-64-STATIC: # %bb.0: # %entry
8857 ; LINUX-64-STATIC-NEXT: leaq src+64(,%rdi,4), %rax
8858 ; LINUX-64-STATIC-NEXT: retq
8860 ; LINUX-32-STATIC-LABEL: cat00:
8861 ; LINUX-32-STATIC: # %bb.0: # %entry
8862 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8863 ; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax
8864 ; LINUX-32-STATIC-NEXT: retl
8866 ; LINUX-32-PIC-LABEL: cat00:
8867 ; LINUX-32-PIC: # %bb.0: # %entry
8868 ; LINUX-32-PIC-NEXT: calll .L109$pb
8869 ; LINUX-32-PIC-NEXT: .L109$pb:
8870 ; LINUX-32-PIC-NEXT: popl %eax
8871 ; LINUX-32-PIC-NEXT: .Ltmp109:
8872 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax
8873 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
8874 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax
8875 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
8876 ; LINUX-32-PIC-NEXT: retl
8878 ; LINUX-64-PIC-LABEL: cat00:
8879 ; LINUX-64-PIC: # %bb.0: # %entry
8880 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
8881 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8882 ; LINUX-64-PIC-NEXT: retq
8884 ; DARWIN-32-STATIC-LABEL: cat00:
8885 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8886 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8887 ; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax
8888 ; DARWIN-32-STATIC-NEXT: retl
8890 ; DARWIN-32-DYNAMIC-LABEL: cat00:
8891 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8892 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8893 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
8894 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
8895 ; DARWIN-32-DYNAMIC-NEXT: retl
8897 ; DARWIN-32-PIC-LABEL: cat00:
8898 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8899 ; DARWIN-32-PIC-NEXT: calll L109$pb
8900 ; DARWIN-32-PIC-NEXT: L109$pb:
8901 ; DARWIN-32-PIC-NEXT: popl %eax
8902 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
8903 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax
8904 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
8905 ; DARWIN-32-PIC-NEXT: retl
8907 ; DARWIN-64-STATIC-LABEL: cat00:
8908 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8909 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
8910 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8911 ; DARWIN-64-STATIC-NEXT: retq
8913 ; DARWIN-64-DYNAMIC-LABEL: cat00:
8914 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8915 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
8916 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8917 ; DARWIN-64-DYNAMIC-NEXT: retq
8919 ; DARWIN-64-PIC-LABEL: cat00:
8920 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8921 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
8922 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8923 ; DARWIN-64-PIC-NEXT: retq
8927 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
8928 %2 = bitcast i32* %1 to i8*
8932 define i8* @cxt00(i64 %i) nounwind {
8933 ; LINUX-64-STATIC-LABEL: cxt00:
8934 ; LINUX-64-STATIC: # %bb.0: # %entry
8935 ; LINUX-64-STATIC-NEXT: leaq xsrc+64(,%rdi,4), %rax
8936 ; LINUX-64-STATIC-NEXT: retq
8938 ; LINUX-32-STATIC-LABEL: cxt00:
8939 ; LINUX-32-STATIC: # %bb.0: # %entry
8940 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8941 ; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax
8942 ; LINUX-32-STATIC-NEXT: retl
8944 ; LINUX-32-PIC-LABEL: cxt00:
8945 ; LINUX-32-PIC: # %bb.0: # %entry
8946 ; LINUX-32-PIC-NEXT: calll .L110$pb
8947 ; LINUX-32-PIC-NEXT: .L110$pb:
8948 ; LINUX-32-PIC-NEXT: popl %eax
8949 ; LINUX-32-PIC-NEXT: .Ltmp110:
8950 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax
8951 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
8952 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax
8953 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
8954 ; LINUX-32-PIC-NEXT: retl
8956 ; LINUX-64-PIC-LABEL: cxt00:
8957 ; LINUX-64-PIC: # %bb.0: # %entry
8958 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
8959 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8960 ; LINUX-64-PIC-NEXT: retq
8962 ; DARWIN-32-STATIC-LABEL: cxt00:
8963 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
8964 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8965 ; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax
8966 ; DARWIN-32-STATIC-NEXT: retl
8968 ; DARWIN-32-DYNAMIC-LABEL: cxt00:
8969 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
8970 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
8971 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
8972 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
8973 ; DARWIN-32-DYNAMIC-NEXT: retl
8975 ; DARWIN-32-PIC-LABEL: cxt00:
8976 ; DARWIN-32-PIC: ## %bb.0: ## %entry
8977 ; DARWIN-32-PIC-NEXT: calll L110$pb
8978 ; DARWIN-32-PIC-NEXT: L110$pb:
8979 ; DARWIN-32-PIC-NEXT: popl %eax
8980 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
8981 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax
8982 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
8983 ; DARWIN-32-PIC-NEXT: retl
8985 ; DARWIN-64-STATIC-LABEL: cxt00:
8986 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
8987 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
8988 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8989 ; DARWIN-64-STATIC-NEXT: retq
8991 ; DARWIN-64-DYNAMIC-LABEL: cxt00:
8992 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
8993 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
8994 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
8995 ; DARWIN-64-DYNAMIC-NEXT: retq
8997 ; DARWIN-64-PIC-LABEL: cxt00:
8998 ; DARWIN-64-PIC: ## %bb.0: ## %entry
8999 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
9000 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9001 ; DARWIN-64-PIC-NEXT: retq
9005 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
9006 %2 = bitcast i32* %1 to i8*
9010 define i8* @cat01(i64 %i) nounwind {
9011 ; LINUX-64-STATIC-LABEL: cat01:
9012 ; LINUX-64-STATIC: # %bb.0: # %entry
9013 ; LINUX-64-STATIC-NEXT: leaq dst+64(,%rdi,4), %rax
9014 ; LINUX-64-STATIC-NEXT: retq
9016 ; LINUX-32-STATIC-LABEL: cat01:
9017 ; LINUX-32-STATIC: # %bb.0: # %entry
9018 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9019 ; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
9020 ; LINUX-32-STATIC-NEXT: retl
9022 ; LINUX-32-PIC-LABEL: cat01:
9023 ; LINUX-32-PIC: # %bb.0: # %entry
9024 ; LINUX-32-PIC-NEXT: calll .L111$pb
9025 ; LINUX-32-PIC-NEXT: .L111$pb:
9026 ; LINUX-32-PIC-NEXT: popl %eax
9027 ; LINUX-32-PIC-NEXT: .Ltmp111:
9028 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax
9029 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9030 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
9031 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9032 ; LINUX-32-PIC-NEXT: retl
9034 ; LINUX-64-PIC-LABEL: cat01:
9035 ; LINUX-64-PIC: # %bb.0: # %entry
9036 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
9037 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9038 ; LINUX-64-PIC-NEXT: retq
9040 ; DARWIN-32-STATIC-LABEL: cat01:
9041 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9042 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9043 ; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
9044 ; DARWIN-32-STATIC-NEXT: retl
9046 ; DARWIN-32-DYNAMIC-LABEL: cat01:
9047 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9048 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9049 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
9050 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
9051 ; DARWIN-32-DYNAMIC-NEXT: retl
9053 ; DARWIN-32-PIC-LABEL: cat01:
9054 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9055 ; DARWIN-32-PIC-NEXT: calll L111$pb
9056 ; DARWIN-32-PIC-NEXT: L111$pb:
9057 ; DARWIN-32-PIC-NEXT: popl %eax
9058 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9059 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax
9060 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9061 ; DARWIN-32-PIC-NEXT: retl
9063 ; DARWIN-64-STATIC-LABEL: cat01:
9064 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9065 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9066 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9067 ; DARWIN-64-STATIC-NEXT: retq
9069 ; DARWIN-64-DYNAMIC-LABEL: cat01:
9070 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9071 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9072 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9073 ; DARWIN-64-DYNAMIC-NEXT: retq
9075 ; DARWIN-64-PIC-LABEL: cat01:
9076 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9077 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9078 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9079 ; DARWIN-64-PIC-NEXT: retq
9083 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
9084 %2 = bitcast i32* %1 to i8*
9088 define i8* @cxt01(i64 %i) nounwind {
9089 ; LINUX-64-STATIC-LABEL: cxt01:
9090 ; LINUX-64-STATIC: # %bb.0: # %entry
9091 ; LINUX-64-STATIC-NEXT: leaq xdst+64(,%rdi,4), %rax
9092 ; LINUX-64-STATIC-NEXT: retq
9094 ; LINUX-32-STATIC-LABEL: cxt01:
9095 ; LINUX-32-STATIC: # %bb.0: # %entry
9096 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9097 ; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
9098 ; LINUX-32-STATIC-NEXT: retl
9100 ; LINUX-32-PIC-LABEL: cxt01:
9101 ; LINUX-32-PIC: # %bb.0: # %entry
9102 ; LINUX-32-PIC-NEXT: calll .L112$pb
9103 ; LINUX-32-PIC-NEXT: .L112$pb:
9104 ; LINUX-32-PIC-NEXT: popl %eax
9105 ; LINUX-32-PIC-NEXT: .Ltmp112:
9106 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax
9107 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9108 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
9109 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9110 ; LINUX-32-PIC-NEXT: retl
9112 ; LINUX-64-PIC-LABEL: cxt01:
9113 ; LINUX-64-PIC: # %bb.0: # %entry
9114 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
9115 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9116 ; LINUX-64-PIC-NEXT: retq
9118 ; DARWIN-32-STATIC-LABEL: cxt01:
9119 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9120 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9121 ; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
9122 ; DARWIN-32-STATIC-NEXT: retl
9124 ; DARWIN-32-DYNAMIC-LABEL: cxt01:
9125 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9126 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9127 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
9128 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
9129 ; DARWIN-32-DYNAMIC-NEXT: retl
9131 ; DARWIN-32-PIC-LABEL: cxt01:
9132 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9133 ; DARWIN-32-PIC-NEXT: calll L112$pb
9134 ; DARWIN-32-PIC-NEXT: L112$pb:
9135 ; DARWIN-32-PIC-NEXT: popl %eax
9136 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9137 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax
9138 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9139 ; DARWIN-32-PIC-NEXT: retl
9141 ; DARWIN-64-STATIC-LABEL: cxt01:
9142 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9143 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
9144 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9145 ; DARWIN-64-STATIC-NEXT: retq
9147 ; DARWIN-64-DYNAMIC-LABEL: cxt01:
9148 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9149 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
9150 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9151 ; DARWIN-64-DYNAMIC-NEXT: retq
9153 ; DARWIN-64-PIC-LABEL: cxt01:
9154 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9155 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
9156 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9157 ; DARWIN-64-PIC-NEXT: retq
9161 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
9162 %2 = bitcast i32* %1 to i8*
9166 define i8* @cat02(i64 %i) nounwind {
9167 ; LINUX-64-STATIC-LABEL: cat02:
9168 ; LINUX-64-STATIC: # %bb.0: # %entry
9169 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax
9170 ; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9171 ; LINUX-64-STATIC-NEXT: retq
9173 ; LINUX-32-STATIC-LABEL: cat02:
9174 ; LINUX-32-STATIC: # %bb.0: # %entry
9175 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9176 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
9177 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9178 ; LINUX-32-STATIC-NEXT: retl
9180 ; LINUX-32-PIC-LABEL: cat02:
9181 ; LINUX-32-PIC: # %bb.0: # %entry
9182 ; LINUX-32-PIC-NEXT: calll .L113$pb
9183 ; LINUX-32-PIC-NEXT: .L113$pb:
9184 ; LINUX-32-PIC-NEXT: popl %eax
9185 ; LINUX-32-PIC-NEXT: .Ltmp113:
9186 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax
9187 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
9188 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
9189 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9190 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9191 ; LINUX-32-PIC-NEXT: retl
9193 ; LINUX-64-PIC-LABEL: cat02:
9194 ; LINUX-64-PIC: # %bb.0: # %entry
9195 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
9196 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
9197 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9198 ; LINUX-64-PIC-NEXT: retq
9200 ; DARWIN-32-STATIC-LABEL: cat02:
9201 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9202 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9203 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
9204 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9205 ; DARWIN-32-STATIC-NEXT: retl
9207 ; DARWIN-32-DYNAMIC-LABEL: cat02:
9208 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9209 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax
9210 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
9211 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9212 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax
9213 ; DARWIN-32-DYNAMIC-NEXT: retl
9215 ; DARWIN-32-PIC-LABEL: cat02:
9216 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9217 ; DARWIN-32-PIC-NEXT: calll L113$pb
9218 ; DARWIN-32-PIC-NEXT: L113$pb:
9219 ; DARWIN-32-PIC-NEXT: popl %eax
9220 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax
9221 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
9222 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9223 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9224 ; DARWIN-32-PIC-NEXT: retl
9226 ; DARWIN-64-STATIC-LABEL: cat02:
9227 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9228 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
9229 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
9230 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9231 ; DARWIN-64-STATIC-NEXT: retq
9233 ; DARWIN-64-DYNAMIC-LABEL: cat02:
9234 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9235 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
9236 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
9237 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9238 ; DARWIN-64-DYNAMIC-NEXT: retq
9240 ; DARWIN-64-PIC-LABEL: cat02:
9241 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9242 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
9243 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
9244 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9245 ; DARWIN-64-PIC-NEXT: retq
9248 %0 = load i32*, i32** @ptr, align 8
9250 %2 = getelementptr i32, i32* %0, i64 %1
9251 %3 = bitcast i32* %2 to i8*
9255 define i8* @cat03(i64 %i) nounwind {
9256 ; LINUX-64-STATIC-LABEL: cat03:
9257 ; LINUX-64-STATIC: # %bb.0: # %entry
9258 ; LINUX-64-STATIC-NEXT: leaq dsrc+64(,%rdi,4), %rax
9259 ; LINUX-64-STATIC-NEXT: retq
9261 ; LINUX-32-STATIC-LABEL: cat03:
9262 ; LINUX-32-STATIC: # %bb.0: # %entry
9263 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9264 ; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax
9265 ; LINUX-32-STATIC-NEXT: retl
9267 ; LINUX-32-PIC-LABEL: cat03:
9268 ; LINUX-32-PIC: # %bb.0: # %entry
9269 ; LINUX-32-PIC-NEXT: calll .L114$pb
9270 ; LINUX-32-PIC-NEXT: .L114$pb:
9271 ; LINUX-32-PIC-NEXT: popl %eax
9272 ; LINUX-32-PIC-NEXT: .Ltmp114:
9273 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax
9274 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9275 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax
9276 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9277 ; LINUX-32-PIC-NEXT: retl
9279 ; LINUX-64-PIC-LABEL: cat03:
9280 ; LINUX-64-PIC: # %bb.0: # %entry
9281 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
9282 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9283 ; LINUX-64-PIC-NEXT: retq
9285 ; DARWIN-32-STATIC-LABEL: cat03:
9286 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9287 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9288 ; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax
9289 ; DARWIN-32-STATIC-NEXT: retl
9291 ; DARWIN-32-DYNAMIC-LABEL: cat03:
9292 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9293 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9294 ; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax
9295 ; DARWIN-32-DYNAMIC-NEXT: retl
9297 ; DARWIN-32-PIC-LABEL: cat03:
9298 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9299 ; DARWIN-32-PIC-NEXT: calll L114$pb
9300 ; DARWIN-32-PIC-NEXT: L114$pb:
9301 ; DARWIN-32-PIC-NEXT: popl %eax
9302 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9303 ; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax
9304 ; DARWIN-32-PIC-NEXT: retl
9306 ; DARWIN-64-STATIC-LABEL: cat03:
9307 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9308 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
9309 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9310 ; DARWIN-64-STATIC-NEXT: retq
9312 ; DARWIN-64-DYNAMIC-LABEL: cat03:
9313 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9314 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
9315 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9316 ; DARWIN-64-DYNAMIC-NEXT: retq
9318 ; DARWIN-64-PIC-LABEL: cat03:
9319 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9320 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
9321 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9322 ; DARWIN-64-PIC-NEXT: retq
9326 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
9327 %2 = bitcast i32* %1 to i8*
9331 define i8* @cat04(i64 %i) nounwind {
9332 ; LINUX-64-STATIC-LABEL: cat04:
9333 ; LINUX-64-STATIC: # %bb.0: # %entry
9334 ; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax
9335 ; LINUX-64-STATIC-NEXT: retq
9337 ; LINUX-32-STATIC-LABEL: cat04:
9338 ; LINUX-32-STATIC: # %bb.0: # %entry
9339 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9340 ; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
9341 ; LINUX-32-STATIC-NEXT: retl
9343 ; LINUX-32-PIC-LABEL: cat04:
9344 ; LINUX-32-PIC: # %bb.0: # %entry
9345 ; LINUX-32-PIC-NEXT: calll .L115$pb
9346 ; LINUX-32-PIC-NEXT: .L115$pb:
9347 ; LINUX-32-PIC-NEXT: popl %eax
9348 ; LINUX-32-PIC-NEXT: .Ltmp115:
9349 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax
9350 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9351 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
9352 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9353 ; LINUX-32-PIC-NEXT: retl
9355 ; LINUX-64-PIC-LABEL: cat04:
9356 ; LINUX-64-PIC: # %bb.0: # %entry
9357 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
9358 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9359 ; LINUX-64-PIC-NEXT: retq
9361 ; DARWIN-32-STATIC-LABEL: cat04:
9362 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9363 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9364 ; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
9365 ; DARWIN-32-STATIC-NEXT: retl
9367 ; DARWIN-32-DYNAMIC-LABEL: cat04:
9368 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9369 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9370 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
9371 ; DARWIN-32-DYNAMIC-NEXT: retl
9373 ; DARWIN-32-PIC-LABEL: cat04:
9374 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9375 ; DARWIN-32-PIC-NEXT: calll L115$pb
9376 ; DARWIN-32-PIC-NEXT: L115$pb:
9377 ; DARWIN-32-PIC-NEXT: popl %eax
9378 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9379 ; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax
9380 ; DARWIN-32-PIC-NEXT: retl
9382 ; DARWIN-64-STATIC-LABEL: cat04:
9383 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9384 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
9385 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9386 ; DARWIN-64-STATIC-NEXT: retq
9388 ; DARWIN-64-DYNAMIC-LABEL: cat04:
9389 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9390 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
9391 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9392 ; DARWIN-64-DYNAMIC-NEXT: retq
9394 ; DARWIN-64-PIC-LABEL: cat04:
9395 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9396 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
9397 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9398 ; DARWIN-64-PIC-NEXT: retq
9402 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
9403 %2 = bitcast i32* %1 to i8*
9407 define i8* @cat05(i64 %i) nounwind {
9408 ; LINUX-64-STATIC-LABEL: cat05:
9409 ; LINUX-64-STATIC: # %bb.0: # %entry
9410 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax
9411 ; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9412 ; LINUX-64-STATIC-NEXT: retq
9414 ; LINUX-32-STATIC-LABEL: cat05:
9415 ; LINUX-32-STATIC: # %bb.0: # %entry
9416 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9417 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
9418 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9419 ; LINUX-32-STATIC-NEXT: retl
9421 ; LINUX-32-PIC-LABEL: cat05:
9422 ; LINUX-32-PIC: # %bb.0: # %entry
9423 ; LINUX-32-PIC-NEXT: calll .L116$pb
9424 ; LINUX-32-PIC-NEXT: .L116$pb:
9425 ; LINUX-32-PIC-NEXT: popl %eax
9426 ; LINUX-32-PIC-NEXT: .Ltmp116:
9427 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax
9428 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
9429 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
9430 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9431 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9432 ; LINUX-32-PIC-NEXT: retl
9434 ; LINUX-64-PIC-LABEL: cat05:
9435 ; LINUX-64-PIC: # %bb.0: # %entry
9436 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
9437 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
9438 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9439 ; LINUX-64-PIC-NEXT: retq
9441 ; DARWIN-32-STATIC-LABEL: cat05:
9442 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9443 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9444 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
9445 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9446 ; DARWIN-32-STATIC-NEXT: retl
9448 ; DARWIN-32-DYNAMIC-LABEL: cat05:
9449 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9450 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9451 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
9452 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
9453 ; DARWIN-32-DYNAMIC-NEXT: retl
9455 ; DARWIN-32-PIC-LABEL: cat05:
9456 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9457 ; DARWIN-32-PIC-NEXT: calll L116$pb
9458 ; DARWIN-32-PIC-NEXT: L116$pb:
9459 ; DARWIN-32-PIC-NEXT: popl %eax
9460 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9461 ; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax
9462 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9463 ; DARWIN-32-PIC-NEXT: retl
9465 ; DARWIN-64-STATIC-LABEL: cat05:
9466 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9467 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax
9468 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9469 ; DARWIN-64-STATIC-NEXT: retq
9471 ; DARWIN-64-DYNAMIC-LABEL: cat05:
9472 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9473 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax
9474 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9475 ; DARWIN-64-DYNAMIC-NEXT: retq
9477 ; DARWIN-64-PIC-LABEL: cat05:
9478 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9479 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax
9480 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9481 ; DARWIN-64-PIC-NEXT: retq
9484 %0 = load i32*, i32** @dptr, align 8
9486 %2 = getelementptr i32, i32* %0, i64 %1
9487 %3 = bitcast i32* %2 to i8*
9491 define i8* @cat06(i64 %i) nounwind {
9492 ; LINUX-64-STATIC-LABEL: cat06:
9493 ; LINUX-64-STATIC: # %bb.0: # %entry
9494 ; LINUX-64-STATIC-NEXT: leaq lsrc+64(,%rdi,4), %rax
9495 ; LINUX-64-STATIC-NEXT: retq
9497 ; LINUX-32-STATIC-LABEL: cat06:
9498 ; LINUX-32-STATIC: # %bb.0: # %entry
9499 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9500 ; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax
9501 ; LINUX-32-STATIC-NEXT: retl
9503 ; LINUX-32-PIC-LABEL: cat06:
9504 ; LINUX-32-PIC: # %bb.0: # %entry
9505 ; LINUX-32-PIC-NEXT: calll .L117$pb
9506 ; LINUX-32-PIC-NEXT: .L117$pb:
9507 ; LINUX-32-PIC-NEXT: popl %eax
9508 ; LINUX-32-PIC-NEXT: .Ltmp117:
9509 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax
9510 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9511 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax
9512 ; LINUX-32-PIC-NEXT: retl
9514 ; LINUX-64-PIC-LABEL: cat06:
9515 ; LINUX-64-PIC: # %bb.0: # %entry
9516 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
9517 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9518 ; LINUX-64-PIC-NEXT: retq
9520 ; DARWIN-32-STATIC-LABEL: cat06:
9521 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9522 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9523 ; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax
9524 ; DARWIN-32-STATIC-NEXT: retl
9526 ; DARWIN-32-DYNAMIC-LABEL: cat06:
9527 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9528 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9529 ; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax
9530 ; DARWIN-32-DYNAMIC-NEXT: retl
9532 ; DARWIN-32-PIC-LABEL: cat06:
9533 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9534 ; DARWIN-32-PIC-NEXT: calll L117$pb
9535 ; DARWIN-32-PIC-NEXT: L117$pb:
9536 ; DARWIN-32-PIC-NEXT: popl %eax
9537 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9538 ; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax
9539 ; DARWIN-32-PIC-NEXT: retl
9541 ; DARWIN-64-STATIC-LABEL: cat06:
9542 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9543 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
9544 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9545 ; DARWIN-64-STATIC-NEXT: retq
9547 ; DARWIN-64-DYNAMIC-LABEL: cat06:
9548 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9549 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
9550 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9551 ; DARWIN-64-DYNAMIC-NEXT: retq
9553 ; DARWIN-64-PIC-LABEL: cat06:
9554 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9555 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
9556 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9557 ; DARWIN-64-PIC-NEXT: retq
9561 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
9562 %2 = bitcast i32* %1 to i8*
9566 define i8* @cat07(i64 %i) nounwind {
9567 ; LINUX-64-STATIC-LABEL: cat07:
9568 ; LINUX-64-STATIC: # %bb.0: # %entry
9569 ; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax
9570 ; LINUX-64-STATIC-NEXT: retq
9572 ; LINUX-32-STATIC-LABEL: cat07:
9573 ; LINUX-32-STATIC: # %bb.0: # %entry
9574 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9575 ; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
9576 ; LINUX-32-STATIC-NEXT: retl
9578 ; LINUX-32-PIC-LABEL: cat07:
9579 ; LINUX-32-PIC: # %bb.0: # %entry
9580 ; LINUX-32-PIC-NEXT: calll .L118$pb
9581 ; LINUX-32-PIC-NEXT: .L118$pb:
9582 ; LINUX-32-PIC-NEXT: popl %eax
9583 ; LINUX-32-PIC-NEXT: .Ltmp118:
9584 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax
9585 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9586 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax
9587 ; LINUX-32-PIC-NEXT: retl
9589 ; LINUX-64-PIC-LABEL: cat07:
9590 ; LINUX-64-PIC: # %bb.0: # %entry
9591 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
9592 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9593 ; LINUX-64-PIC-NEXT: retq
9595 ; DARWIN-32-STATIC-LABEL: cat07:
9596 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9597 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9598 ; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
9599 ; DARWIN-32-STATIC-NEXT: retl
9601 ; DARWIN-32-DYNAMIC-LABEL: cat07:
9602 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9603 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9604 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
9605 ; DARWIN-32-DYNAMIC-NEXT: retl
9607 ; DARWIN-32-PIC-LABEL: cat07:
9608 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9609 ; DARWIN-32-PIC-NEXT: calll L118$pb
9610 ; DARWIN-32-PIC-NEXT: L118$pb:
9611 ; DARWIN-32-PIC-NEXT: popl %eax
9612 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9613 ; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax
9614 ; DARWIN-32-PIC-NEXT: retl
9616 ; DARWIN-64-STATIC-LABEL: cat07:
9617 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9618 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
9619 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9620 ; DARWIN-64-STATIC-NEXT: retq
9622 ; DARWIN-64-DYNAMIC-LABEL: cat07:
9623 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9624 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
9625 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9626 ; DARWIN-64-DYNAMIC-NEXT: retq
9628 ; DARWIN-64-PIC-LABEL: cat07:
9629 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9630 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
9631 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9632 ; DARWIN-64-PIC-NEXT: retq
9636 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
9637 %2 = bitcast i32* %1 to i8*
9641 define i8* @cat08(i64 %i) nounwind {
9642 ; LINUX-64-STATIC-LABEL: cat08:
9643 ; LINUX-64-STATIC: # %bb.0: # %entry
9644 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax
9645 ; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9646 ; LINUX-64-STATIC-NEXT: retq
9648 ; LINUX-32-STATIC-LABEL: cat08:
9649 ; LINUX-32-STATIC: # %bb.0: # %entry
9650 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9651 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
9652 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9653 ; LINUX-32-STATIC-NEXT: retl
9655 ; LINUX-32-PIC-LABEL: cat08:
9656 ; LINUX-32-PIC: # %bb.0: # %entry
9657 ; LINUX-32-PIC-NEXT: calll .L119$pb
9658 ; LINUX-32-PIC-NEXT: .L119$pb:
9659 ; LINUX-32-PIC-NEXT: popl %eax
9660 ; LINUX-32-PIC-NEXT: .Ltmp119:
9661 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax
9662 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9663 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
9664 ; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9665 ; LINUX-32-PIC-NEXT: retl
9667 ; LINUX-64-PIC-LABEL: cat08:
9668 ; LINUX-64-PIC: # %bb.0: # %entry
9669 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax
9670 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9671 ; LINUX-64-PIC-NEXT: retq
9673 ; DARWIN-32-STATIC-LABEL: cat08:
9674 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9675 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9676 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
9677 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
9678 ; DARWIN-32-STATIC-NEXT: retl
9680 ; DARWIN-32-DYNAMIC-LABEL: cat08:
9681 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9682 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9683 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
9684 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
9685 ; DARWIN-32-DYNAMIC-NEXT: retl
9687 ; DARWIN-32-PIC-LABEL: cat08:
9688 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9689 ; DARWIN-32-PIC-NEXT: calll L119$pb
9690 ; DARWIN-32-PIC-NEXT: L119$pb:
9691 ; DARWIN-32-PIC-NEXT: popl %eax
9692 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9693 ; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax
9694 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
9695 ; DARWIN-32-PIC-NEXT: retl
9697 ; DARWIN-64-STATIC-LABEL: cat08:
9698 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9699 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax
9700 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9701 ; DARWIN-64-STATIC-NEXT: retq
9703 ; DARWIN-64-DYNAMIC-LABEL: cat08:
9704 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9705 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax
9706 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9707 ; DARWIN-64-DYNAMIC-NEXT: retq
9709 ; DARWIN-64-PIC-LABEL: cat08:
9710 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9711 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax
9712 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
9713 ; DARWIN-64-PIC-NEXT: retq
9716 %0 = load i32*, i32** @lptr, align 8
9718 %2 = getelementptr i32, i32* %0, i64 %1
9719 %3 = bitcast i32* %2 to i8*
9723 define i8* @cam00(i64 %i) nounwind {
9724 ; LINUX-64-STATIC-LABEL: cam00:
9725 ; LINUX-64-STATIC: # %bb.0: # %entry
9726 ; LINUX-64-STATIC-NEXT: leaq src+262144(,%rdi,4), %rax
9727 ; LINUX-64-STATIC-NEXT: retq
9729 ; LINUX-32-STATIC-LABEL: cam00:
9730 ; LINUX-32-STATIC: # %bb.0: # %entry
9731 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9732 ; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax
9733 ; LINUX-32-STATIC-NEXT: retl
9735 ; LINUX-32-PIC-LABEL: cam00:
9736 ; LINUX-32-PIC: # %bb.0: # %entry
9737 ; LINUX-32-PIC-NEXT: calll .L120$pb
9738 ; LINUX-32-PIC-NEXT: .L120$pb:
9739 ; LINUX-32-PIC-NEXT: popl %eax
9740 ; LINUX-32-PIC-NEXT: .Ltmp120:
9741 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax
9742 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9743 ; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax
9744 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9745 ; LINUX-32-PIC-NEXT: retl
9747 ; LINUX-64-PIC-LABEL: cam00:
9748 ; LINUX-64-PIC: # %bb.0: # %entry
9749 ; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax
9750 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9751 ; LINUX-64-PIC-NEXT: retq
9753 ; DARWIN-32-STATIC-LABEL: cam00:
9754 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9755 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9756 ; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax
9757 ; DARWIN-32-STATIC-NEXT: retl
9759 ; DARWIN-32-DYNAMIC-LABEL: cam00:
9760 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9761 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9762 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
9763 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
9764 ; DARWIN-32-DYNAMIC-NEXT: retl
9766 ; DARWIN-32-PIC-LABEL: cam00:
9767 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9768 ; DARWIN-32-PIC-NEXT: calll L120$pb
9769 ; DARWIN-32-PIC-NEXT: L120$pb:
9770 ; DARWIN-32-PIC-NEXT: popl %eax
9771 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9772 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax
9773 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9774 ; DARWIN-32-PIC-NEXT: retl
9776 ; DARWIN-64-STATIC-LABEL: cam00:
9777 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9778 ; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax
9779 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9780 ; DARWIN-64-STATIC-NEXT: retq
9782 ; DARWIN-64-DYNAMIC-LABEL: cam00:
9783 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9784 ; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax
9785 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9786 ; DARWIN-64-DYNAMIC-NEXT: retq
9788 ; DARWIN-64-PIC-LABEL: cam00:
9789 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9790 ; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax
9791 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9792 ; DARWIN-64-PIC-NEXT: retq
9795 %0 = add i64 %i, 65536
9796 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0
9797 %2 = bitcast i32* %1 to i8*
9801 define i8* @cxm00(i64 %i) nounwind {
9802 ; LINUX-64-STATIC-LABEL: cxm00:
9803 ; LINUX-64-STATIC: # %bb.0: # %entry
9804 ; LINUX-64-STATIC-NEXT: leaq xsrc+262144(,%rdi,4), %rax
9805 ; LINUX-64-STATIC-NEXT: retq
9807 ; LINUX-32-STATIC-LABEL: cxm00:
9808 ; LINUX-32-STATIC: # %bb.0: # %entry
9809 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9810 ; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax
9811 ; LINUX-32-STATIC-NEXT: retl
9813 ; LINUX-32-PIC-LABEL: cxm00:
9814 ; LINUX-32-PIC: # %bb.0: # %entry
9815 ; LINUX-32-PIC-NEXT: calll .L121$pb
9816 ; LINUX-32-PIC-NEXT: .L121$pb:
9817 ; LINUX-32-PIC-NEXT: popl %eax
9818 ; LINUX-32-PIC-NEXT: .Ltmp121:
9819 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax
9820 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9821 ; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax
9822 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9823 ; LINUX-32-PIC-NEXT: retl
9825 ; LINUX-64-PIC-LABEL: cxm00:
9826 ; LINUX-64-PIC: # %bb.0: # %entry
9827 ; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax
9828 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9829 ; LINUX-64-PIC-NEXT: retq
9831 ; DARWIN-32-STATIC-LABEL: cxm00:
9832 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9833 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9834 ; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax
9835 ; DARWIN-32-STATIC-NEXT: retl
9837 ; DARWIN-32-DYNAMIC-LABEL: cxm00:
9838 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9839 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9840 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
9841 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
9842 ; DARWIN-32-DYNAMIC-NEXT: retl
9844 ; DARWIN-32-PIC-LABEL: cxm00:
9845 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9846 ; DARWIN-32-PIC-NEXT: calll L121$pb
9847 ; DARWIN-32-PIC-NEXT: L121$pb:
9848 ; DARWIN-32-PIC-NEXT: popl %eax
9849 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9850 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax
9851 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9852 ; DARWIN-32-PIC-NEXT: retl
9854 ; DARWIN-64-STATIC-LABEL: cxm00:
9855 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9856 ; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
9857 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9858 ; DARWIN-64-STATIC-NEXT: retq
9860 ; DARWIN-64-DYNAMIC-LABEL: cxm00:
9861 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9862 ; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
9863 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9864 ; DARWIN-64-DYNAMIC-NEXT: retq
9866 ; DARWIN-64-PIC-LABEL: cxm00:
9867 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9868 ; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax
9869 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9870 ; DARWIN-64-PIC-NEXT: retq
9873 %0 = add i64 %i, 65536
9874 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0
9875 %2 = bitcast i32* %1 to i8*
9879 define i8* @cam01(i64 %i) nounwind {
9880 ; LINUX-64-STATIC-LABEL: cam01:
9881 ; LINUX-64-STATIC: # %bb.0: # %entry
9882 ; LINUX-64-STATIC-NEXT: leaq dst+262144(,%rdi,4), %rax
9883 ; LINUX-64-STATIC-NEXT: retq
9885 ; LINUX-32-STATIC-LABEL: cam01:
9886 ; LINUX-32-STATIC: # %bb.0: # %entry
9887 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9888 ; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
9889 ; LINUX-32-STATIC-NEXT: retl
9891 ; LINUX-32-PIC-LABEL: cam01:
9892 ; LINUX-32-PIC: # %bb.0: # %entry
9893 ; LINUX-32-PIC-NEXT: calll .L122$pb
9894 ; LINUX-32-PIC-NEXT: .L122$pb:
9895 ; LINUX-32-PIC-NEXT: popl %eax
9896 ; LINUX-32-PIC-NEXT: .Ltmp122:
9897 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax
9898 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9899 ; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax
9900 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9901 ; LINUX-32-PIC-NEXT: retl
9903 ; LINUX-64-PIC-LABEL: cam01:
9904 ; LINUX-64-PIC: # %bb.0: # %entry
9905 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax
9906 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9907 ; LINUX-64-PIC-NEXT: retq
9909 ; DARWIN-32-STATIC-LABEL: cam01:
9910 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9911 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9912 ; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
9913 ; DARWIN-32-STATIC-NEXT: retl
9915 ; DARWIN-32-DYNAMIC-LABEL: cam01:
9916 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9917 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9918 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
9919 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
9920 ; DARWIN-32-DYNAMIC-NEXT: retl
9922 ; DARWIN-32-PIC-LABEL: cam01:
9923 ; DARWIN-32-PIC: ## %bb.0: ## %entry
9924 ; DARWIN-32-PIC-NEXT: calll L122$pb
9925 ; DARWIN-32-PIC-NEXT: L122$pb:
9926 ; DARWIN-32-PIC-NEXT: popl %eax
9927 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9928 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax
9929 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9930 ; DARWIN-32-PIC-NEXT: retl
9932 ; DARWIN-64-STATIC-LABEL: cam01:
9933 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
9934 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9935 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9936 ; DARWIN-64-STATIC-NEXT: retq
9938 ; DARWIN-64-DYNAMIC-LABEL: cam01:
9939 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
9940 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9941 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9942 ; DARWIN-64-DYNAMIC-NEXT: retq
9944 ; DARWIN-64-PIC-LABEL: cam01:
9945 ; DARWIN-64-PIC: ## %bb.0: ## %entry
9946 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax
9947 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9948 ; DARWIN-64-PIC-NEXT: retq
9951 %0 = add i64 %i, 65536
9952 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0
9953 %2 = bitcast i32* %1 to i8*
9957 define i8* @cxm01(i64 %i) nounwind {
9958 ; LINUX-64-STATIC-LABEL: cxm01:
9959 ; LINUX-64-STATIC: # %bb.0: # %entry
9960 ; LINUX-64-STATIC-NEXT: leaq xdst+262144(,%rdi,4), %rax
9961 ; LINUX-64-STATIC-NEXT: retq
9963 ; LINUX-32-STATIC-LABEL: cxm01:
9964 ; LINUX-32-STATIC: # %bb.0: # %entry
9965 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9966 ; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax
9967 ; LINUX-32-STATIC-NEXT: retl
9969 ; LINUX-32-PIC-LABEL: cxm01:
9970 ; LINUX-32-PIC: # %bb.0: # %entry
9971 ; LINUX-32-PIC-NEXT: calll .L123$pb
9972 ; LINUX-32-PIC-NEXT: .L123$pb:
9973 ; LINUX-32-PIC-NEXT: popl %eax
9974 ; LINUX-32-PIC-NEXT: .Ltmp123:
9975 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax
9976 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
9977 ; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax
9978 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
9979 ; LINUX-32-PIC-NEXT: retl
9981 ; LINUX-64-PIC-LABEL: cxm01:
9982 ; LINUX-64-PIC: # %bb.0: # %entry
9983 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax
9984 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
9985 ; LINUX-64-PIC-NEXT: retq
9987 ; DARWIN-32-STATIC-LABEL: cxm01:
9988 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
9989 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9990 ; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax
9991 ; DARWIN-32-STATIC-NEXT: retl
9993 ; DARWIN-32-DYNAMIC-LABEL: cxm01:
9994 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
9995 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
9996 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
9997 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
9998 ; DARWIN-32-DYNAMIC-NEXT: retl
10000 ; DARWIN-32-PIC-LABEL: cxm01:
10001 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10002 ; DARWIN-32-PIC-NEXT: calll L123$pb
10003 ; DARWIN-32-PIC-NEXT: L123$pb:
10004 ; DARWIN-32-PIC-NEXT: popl %eax
10005 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10006 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax
10007 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10008 ; DARWIN-32-PIC-NEXT: retl
10010 ; DARWIN-64-STATIC-LABEL: cxm01:
10011 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10012 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
10013 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10014 ; DARWIN-64-STATIC-NEXT: retq
10016 ; DARWIN-64-DYNAMIC-LABEL: cxm01:
10017 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10018 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
10019 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10020 ; DARWIN-64-DYNAMIC-NEXT: retq
10022 ; DARWIN-64-PIC-LABEL: cxm01:
10023 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10024 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax
10025 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10026 ; DARWIN-64-PIC-NEXT: retq
10029 %0 = add i64 %i, 65536
10030 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0
10031 %2 = bitcast i32* %1 to i8*
10035 define i8* @cam02(i64 %i) nounwind {
10036 ; LINUX-64-STATIC-LABEL: cam02:
10037 ; LINUX-64-STATIC: # %bb.0: # %entry
10038 ; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax
10039 ; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10040 ; LINUX-64-STATIC-NEXT: retq
10042 ; LINUX-32-STATIC-LABEL: cam02:
10043 ; LINUX-32-STATIC: # %bb.0: # %entry
10044 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10045 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
10046 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10047 ; LINUX-32-STATIC-NEXT: retl
10049 ; LINUX-32-PIC-LABEL: cam02:
10050 ; LINUX-32-PIC: # %bb.0: # %entry
10051 ; LINUX-32-PIC-NEXT: calll .L124$pb
10052 ; LINUX-32-PIC-NEXT: .L124$pb:
10053 ; LINUX-32-PIC-NEXT: popl %eax
10054 ; LINUX-32-PIC-NEXT: .Ltmp124:
10055 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax
10056 ; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax
10057 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
10058 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10059 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10060 ; LINUX-32-PIC-NEXT: retl
10062 ; LINUX-64-PIC-LABEL: cam02:
10063 ; LINUX-64-PIC: # %bb.0: # %entry
10064 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
10065 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
10066 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10067 ; LINUX-64-PIC-NEXT: retq
10069 ; DARWIN-32-STATIC-LABEL: cam02:
10070 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10071 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10072 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
10073 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10074 ; DARWIN-32-STATIC-NEXT: retl
10076 ; DARWIN-32-DYNAMIC-LABEL: cam02:
10077 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10078 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax
10079 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
10080 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10081 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10082 ; DARWIN-32-DYNAMIC-NEXT: retl
10084 ; DARWIN-32-PIC-LABEL: cam02:
10085 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10086 ; DARWIN-32-PIC-NEXT: calll L124$pb
10087 ; DARWIN-32-PIC-NEXT: L124$pb:
10088 ; DARWIN-32-PIC-NEXT: popl %eax
10089 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax
10090 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
10091 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10092 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10093 ; DARWIN-32-PIC-NEXT: retl
10095 ; DARWIN-64-STATIC-LABEL: cam02:
10096 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10097 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
10098 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
10099 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10100 ; DARWIN-64-STATIC-NEXT: retq
10102 ; DARWIN-64-DYNAMIC-LABEL: cam02:
10103 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10104 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
10105 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
10106 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10107 ; DARWIN-64-DYNAMIC-NEXT: retq
10109 ; DARWIN-64-PIC-LABEL: cam02:
10110 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10111 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
10112 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
10113 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10114 ; DARWIN-64-PIC-NEXT: retq
10117 %0 = load i32*, i32** @ptr, align 8
10118 %1 = add i64 %i, 65536
10119 %2 = getelementptr i32, i32* %0, i64 %1
10120 %3 = bitcast i32* %2 to i8*
10124 define i8* @cam03(i64 %i) nounwind {
10125 ; LINUX-64-STATIC-LABEL: cam03:
10126 ; LINUX-64-STATIC: # %bb.0: # %entry
10127 ; LINUX-64-STATIC-NEXT: leaq dsrc+262144(,%rdi,4), %rax
10128 ; LINUX-64-STATIC-NEXT: retq
10130 ; LINUX-32-STATIC-LABEL: cam03:
10131 ; LINUX-32-STATIC: # %bb.0: # %entry
10132 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10133 ; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax
10134 ; LINUX-32-STATIC-NEXT: retl
10136 ; LINUX-32-PIC-LABEL: cam03:
10137 ; LINUX-32-PIC: # %bb.0: # %entry
10138 ; LINUX-32-PIC-NEXT: calll .L125$pb
10139 ; LINUX-32-PIC-NEXT: .L125$pb:
10140 ; LINUX-32-PIC-NEXT: popl %eax
10141 ; LINUX-32-PIC-NEXT: .Ltmp125:
10142 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax
10143 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10144 ; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax
10145 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10146 ; LINUX-32-PIC-NEXT: retl
10148 ; LINUX-64-PIC-LABEL: cam03:
10149 ; LINUX-64-PIC: # %bb.0: # %entry
10150 ; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax
10151 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10152 ; LINUX-64-PIC-NEXT: retq
10154 ; DARWIN-32-STATIC-LABEL: cam03:
10155 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10156 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10157 ; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
10158 ; DARWIN-32-STATIC-NEXT: retl
10160 ; DARWIN-32-DYNAMIC-LABEL: cam03:
10161 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10162 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10163 ; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
10164 ; DARWIN-32-DYNAMIC-NEXT: retl
10166 ; DARWIN-32-PIC-LABEL: cam03:
10167 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10168 ; DARWIN-32-PIC-NEXT: calll L125$pb
10169 ; DARWIN-32-PIC-NEXT: L125$pb:
10170 ; DARWIN-32-PIC-NEXT: popl %eax
10171 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10172 ; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax
10173 ; DARWIN-32-PIC-NEXT: retl
10175 ; DARWIN-64-STATIC-LABEL: cam03:
10176 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10177 ; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax
10178 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10179 ; DARWIN-64-STATIC-NEXT: retq
10181 ; DARWIN-64-DYNAMIC-LABEL: cam03:
10182 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10183 ; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax
10184 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10185 ; DARWIN-64-DYNAMIC-NEXT: retq
10187 ; DARWIN-64-PIC-LABEL: cam03:
10188 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10189 ; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax
10190 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10191 ; DARWIN-64-PIC-NEXT: retq
10194 %0 = add i64 %i, 65536
10195 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0
10196 %2 = bitcast i32* %1 to i8*
10200 define i8* @cam04(i64 %i) nounwind {
10201 ; LINUX-64-STATIC-LABEL: cam04:
10202 ; LINUX-64-STATIC: # %bb.0: # %entry
10203 ; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax
10204 ; LINUX-64-STATIC-NEXT: retq
10206 ; LINUX-32-STATIC-LABEL: cam04:
10207 ; LINUX-32-STATIC: # %bb.0: # %entry
10208 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10209 ; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
10210 ; LINUX-32-STATIC-NEXT: retl
10212 ; LINUX-32-PIC-LABEL: cam04:
10213 ; LINUX-32-PIC: # %bb.0: # %entry
10214 ; LINUX-32-PIC-NEXT: calll .L126$pb
10215 ; LINUX-32-PIC-NEXT: .L126$pb:
10216 ; LINUX-32-PIC-NEXT: popl %eax
10217 ; LINUX-32-PIC-NEXT: .Ltmp126:
10218 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax
10219 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10220 ; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax
10221 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10222 ; LINUX-32-PIC-NEXT: retl
10224 ; LINUX-64-PIC-LABEL: cam04:
10225 ; LINUX-64-PIC: # %bb.0: # %entry
10226 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax
10227 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10228 ; LINUX-64-PIC-NEXT: retq
10230 ; DARWIN-32-STATIC-LABEL: cam04:
10231 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10232 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10233 ; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
10234 ; DARWIN-32-STATIC-NEXT: retl
10236 ; DARWIN-32-DYNAMIC-LABEL: cam04:
10237 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10238 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10239 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
10240 ; DARWIN-32-DYNAMIC-NEXT: retl
10242 ; DARWIN-32-PIC-LABEL: cam04:
10243 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10244 ; DARWIN-32-PIC-NEXT: calll L126$pb
10245 ; DARWIN-32-PIC-NEXT: L126$pb:
10246 ; DARWIN-32-PIC-NEXT: popl %eax
10247 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10248 ; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax
10249 ; DARWIN-32-PIC-NEXT: retl
10251 ; DARWIN-64-STATIC-LABEL: cam04:
10252 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10253 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax
10254 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10255 ; DARWIN-64-STATIC-NEXT: retq
10257 ; DARWIN-64-DYNAMIC-LABEL: cam04:
10258 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10259 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax
10260 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10261 ; DARWIN-64-DYNAMIC-NEXT: retq
10263 ; DARWIN-64-PIC-LABEL: cam04:
10264 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10265 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax
10266 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10267 ; DARWIN-64-PIC-NEXT: retq
10270 %0 = add i64 %i, 65536
10271 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0
10272 %2 = bitcast i32* %1 to i8*
10276 define i8* @cam05(i64 %i) nounwind {
10277 ; LINUX-64-STATIC-LABEL: cam05:
10278 ; LINUX-64-STATIC: # %bb.0: # %entry
10279 ; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax
10280 ; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10281 ; LINUX-64-STATIC-NEXT: retq
10283 ; LINUX-32-STATIC-LABEL: cam05:
10284 ; LINUX-32-STATIC: # %bb.0: # %entry
10285 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10286 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
10287 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10288 ; LINUX-32-STATIC-NEXT: retl
10290 ; LINUX-32-PIC-LABEL: cam05:
10291 ; LINUX-32-PIC: # %bb.0: # %entry
10292 ; LINUX-32-PIC-NEXT: calll .L127$pb
10293 ; LINUX-32-PIC-NEXT: .L127$pb:
10294 ; LINUX-32-PIC-NEXT: popl %eax
10295 ; LINUX-32-PIC-NEXT: .Ltmp127:
10296 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax
10297 ; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax
10298 ; LINUX-32-PIC-NEXT: movl (%eax), %eax
10299 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10300 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10301 ; LINUX-32-PIC-NEXT: retl
10303 ; LINUX-64-PIC-LABEL: cam05:
10304 ; LINUX-64-PIC: # %bb.0: # %entry
10305 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
10306 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
10307 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10308 ; LINUX-64-PIC-NEXT: retq
10310 ; DARWIN-32-STATIC-LABEL: cam05:
10311 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10312 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10313 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
10314 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10315 ; DARWIN-32-STATIC-NEXT: retl
10317 ; DARWIN-32-DYNAMIC-LABEL: cam05:
10318 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10319 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10320 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
10321 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10322 ; DARWIN-32-DYNAMIC-NEXT: retl
10324 ; DARWIN-32-PIC-LABEL: cam05:
10325 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10326 ; DARWIN-32-PIC-NEXT: calll L127$pb
10327 ; DARWIN-32-PIC-NEXT: L127$pb:
10328 ; DARWIN-32-PIC-NEXT: popl %eax
10329 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10330 ; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax
10331 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10332 ; DARWIN-32-PIC-NEXT: retl
10334 ; DARWIN-64-STATIC-LABEL: cam05:
10335 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10336 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax
10337 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10338 ; DARWIN-64-STATIC-NEXT: retq
10340 ; DARWIN-64-DYNAMIC-LABEL: cam05:
10341 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10342 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax
10343 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10344 ; DARWIN-64-DYNAMIC-NEXT: retq
10346 ; DARWIN-64-PIC-LABEL: cam05:
10347 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10348 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax
10349 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10350 ; DARWIN-64-PIC-NEXT: retq
10353 %0 = load i32*, i32** @dptr, align 8
10354 %1 = add i64 %i, 65536
10355 %2 = getelementptr i32, i32* %0, i64 %1
10356 %3 = bitcast i32* %2 to i8*
10360 define i8* @cam06(i64 %i) nounwind {
10361 ; LINUX-64-STATIC-LABEL: cam06:
10362 ; LINUX-64-STATIC: # %bb.0: # %entry
10363 ; LINUX-64-STATIC-NEXT: leaq lsrc+262144(,%rdi,4), %rax
10364 ; LINUX-64-STATIC-NEXT: retq
10366 ; LINUX-32-STATIC-LABEL: cam06:
10367 ; LINUX-32-STATIC: # %bb.0: # %entry
10368 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10369 ; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax
10370 ; LINUX-32-STATIC-NEXT: retl
10372 ; LINUX-32-PIC-LABEL: cam06:
10373 ; LINUX-32-PIC: # %bb.0: # %entry
10374 ; LINUX-32-PIC-NEXT: calll .L128$pb
10375 ; LINUX-32-PIC-NEXT: .L128$pb:
10376 ; LINUX-32-PIC-NEXT: popl %eax
10377 ; LINUX-32-PIC-NEXT: .Ltmp128:
10378 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax
10379 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10380 ; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax
10381 ; LINUX-32-PIC-NEXT: retl
10383 ; LINUX-64-PIC-LABEL: cam06:
10384 ; LINUX-64-PIC: # %bb.0: # %entry
10385 ; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax
10386 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10387 ; LINUX-64-PIC-NEXT: retq
10389 ; DARWIN-32-STATIC-LABEL: cam06:
10390 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10391 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10392 ; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
10393 ; DARWIN-32-STATIC-NEXT: retl
10395 ; DARWIN-32-DYNAMIC-LABEL: cam06:
10396 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10397 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10398 ; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
10399 ; DARWIN-32-DYNAMIC-NEXT: retl
10401 ; DARWIN-32-PIC-LABEL: cam06:
10402 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10403 ; DARWIN-32-PIC-NEXT: calll L128$pb
10404 ; DARWIN-32-PIC-NEXT: L128$pb:
10405 ; DARWIN-32-PIC-NEXT: popl %eax
10406 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10407 ; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax
10408 ; DARWIN-32-PIC-NEXT: retl
10410 ; DARWIN-64-STATIC-LABEL: cam06:
10411 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10412 ; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax
10413 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10414 ; DARWIN-64-STATIC-NEXT: retq
10416 ; DARWIN-64-DYNAMIC-LABEL: cam06:
10417 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10418 ; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax
10419 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10420 ; DARWIN-64-DYNAMIC-NEXT: retq
10422 ; DARWIN-64-PIC-LABEL: cam06:
10423 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10424 ; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax
10425 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10426 ; DARWIN-64-PIC-NEXT: retq
10429 %0 = add i64 %i, 65536
10430 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0
10431 %2 = bitcast i32* %1 to i8*
10435 define i8* @cam07(i64 %i) nounwind {
10436 ; LINUX-64-STATIC-LABEL: cam07:
10437 ; LINUX-64-STATIC: # %bb.0: # %entry
10438 ; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax
10439 ; LINUX-64-STATIC-NEXT: retq
10441 ; LINUX-32-STATIC-LABEL: cam07:
10442 ; LINUX-32-STATIC: # %bb.0: # %entry
10443 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10444 ; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
10445 ; LINUX-32-STATIC-NEXT: retl
10447 ; LINUX-32-PIC-LABEL: cam07:
10448 ; LINUX-32-PIC: # %bb.0: # %entry
10449 ; LINUX-32-PIC-NEXT: calll .L129$pb
10450 ; LINUX-32-PIC-NEXT: .L129$pb:
10451 ; LINUX-32-PIC-NEXT: popl %eax
10452 ; LINUX-32-PIC-NEXT: .Ltmp129:
10453 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax
10454 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10455 ; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax
10456 ; LINUX-32-PIC-NEXT: retl
10458 ; LINUX-64-PIC-LABEL: cam07:
10459 ; LINUX-64-PIC: # %bb.0: # %entry
10460 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax
10461 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10462 ; LINUX-64-PIC-NEXT: retq
10464 ; DARWIN-32-STATIC-LABEL: cam07:
10465 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10466 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10467 ; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
10468 ; DARWIN-32-STATIC-NEXT: retl
10470 ; DARWIN-32-DYNAMIC-LABEL: cam07:
10471 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10472 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10473 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
10474 ; DARWIN-32-DYNAMIC-NEXT: retl
10476 ; DARWIN-32-PIC-LABEL: cam07:
10477 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10478 ; DARWIN-32-PIC-NEXT: calll L129$pb
10479 ; DARWIN-32-PIC-NEXT: L129$pb:
10480 ; DARWIN-32-PIC-NEXT: popl %eax
10481 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10482 ; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax
10483 ; DARWIN-32-PIC-NEXT: retl
10485 ; DARWIN-64-STATIC-LABEL: cam07:
10486 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10487 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax
10488 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10489 ; DARWIN-64-STATIC-NEXT: retq
10491 ; DARWIN-64-DYNAMIC-LABEL: cam07:
10492 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10493 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax
10494 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10495 ; DARWIN-64-DYNAMIC-NEXT: retq
10497 ; DARWIN-64-PIC-LABEL: cam07:
10498 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10499 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax
10500 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10501 ; DARWIN-64-PIC-NEXT: retq
10504 %0 = add i64 %i, 65536
10505 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0
10506 %2 = bitcast i32* %1 to i8*
10510 define i8* @cam08(i64 %i) nounwind {
10511 ; LINUX-64-STATIC-LABEL: cam08:
10512 ; LINUX-64-STATIC: # %bb.0: # %entry
10513 ; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax
10514 ; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10515 ; LINUX-64-STATIC-NEXT: retq
10517 ; LINUX-32-STATIC-LABEL: cam08:
10518 ; LINUX-32-STATIC: # %bb.0: # %entry
10519 ; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10520 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
10521 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10522 ; LINUX-32-STATIC-NEXT: retl
10524 ; LINUX-32-PIC-LABEL: cam08:
10525 ; LINUX-32-PIC: # %bb.0: # %entry
10526 ; LINUX-32-PIC-NEXT: calll .L130$pb
10527 ; LINUX-32-PIC-NEXT: .L130$pb:
10528 ; LINUX-32-PIC-NEXT: popl %eax
10529 ; LINUX-32-PIC-NEXT: .Ltmp130:
10530 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax
10531 ; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10532 ; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax
10533 ; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10534 ; LINUX-32-PIC-NEXT: retl
10536 ; LINUX-64-PIC-LABEL: cam08:
10537 ; LINUX-64-PIC: # %bb.0: # %entry
10538 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax
10539 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10540 ; LINUX-64-PIC-NEXT: retq
10542 ; DARWIN-32-STATIC-LABEL: cam08:
10543 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10544 ; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10545 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
10546 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10547 ; DARWIN-32-STATIC-NEXT: retl
10549 ; DARWIN-32-DYNAMIC-LABEL: cam08:
10550 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10551 ; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax
10552 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
10553 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
10554 ; DARWIN-32-DYNAMIC-NEXT: retl
10556 ; DARWIN-32-PIC-LABEL: cam08:
10557 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10558 ; DARWIN-32-PIC-NEXT: calll L130$pb
10559 ; DARWIN-32-PIC-NEXT: L130$pb:
10560 ; DARWIN-32-PIC-NEXT: popl %eax
10561 ; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
10562 ; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax
10563 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
10564 ; DARWIN-32-PIC-NEXT: retl
10566 ; DARWIN-64-STATIC-LABEL: cam08:
10567 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10568 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax
10569 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10570 ; DARWIN-64-STATIC-NEXT: retq
10572 ; DARWIN-64-DYNAMIC-LABEL: cam08:
10573 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10574 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax
10575 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10576 ; DARWIN-64-DYNAMIC-NEXT: retq
10578 ; DARWIN-64-PIC-LABEL: cam08:
10579 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10580 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax
10581 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
10582 ; DARWIN-64-PIC-NEXT: retq
10585 %0 = load i32*, i32** @lptr, align 8
10586 %1 = add i64 %i, 65536
10587 %2 = getelementptr i32, i32* %0, i64 %1
10588 %3 = bitcast i32* %2 to i8*
10592 define void @lcallee() nounwind {
10593 ; LINUX-64-STATIC-LABEL: lcallee:
10594 ; LINUX-64-STATIC: # %bb.0: # %entry
10595 ; LINUX-64-STATIC-NEXT: pushq %rax
10596 ; LINUX-64-STATIC-NEXT: callq x
10597 ; LINUX-64-STATIC-NEXT: callq x
10598 ; LINUX-64-STATIC-NEXT: callq x
10599 ; LINUX-64-STATIC-NEXT: callq x
10600 ; LINUX-64-STATIC-NEXT: callq x
10601 ; LINUX-64-STATIC-NEXT: callq x
10602 ; LINUX-64-STATIC-NEXT: callq x
10603 ; LINUX-64-STATIC-NEXT: popq %rax
10604 ; LINUX-64-STATIC-NEXT: retq
10606 ; LINUX-32-STATIC-LABEL: lcallee:
10607 ; LINUX-32-STATIC: # %bb.0: # %entry
10608 ; LINUX-32-STATIC-NEXT: subl $12, %esp
10609 ; LINUX-32-STATIC-NEXT: calll x
10610 ; LINUX-32-STATIC-NEXT: calll x
10611 ; LINUX-32-STATIC-NEXT: calll x
10612 ; LINUX-32-STATIC-NEXT: calll x
10613 ; LINUX-32-STATIC-NEXT: calll x
10614 ; LINUX-32-STATIC-NEXT: calll x
10615 ; LINUX-32-STATIC-NEXT: calll x
10616 ; LINUX-32-STATIC-NEXT: addl $12, %esp
10617 ; LINUX-32-STATIC-NEXT: retl
10619 ; LINUX-32-PIC-LABEL: lcallee:
10620 ; LINUX-32-PIC: # %bb.0: # %entry
10621 ; LINUX-32-PIC-NEXT: pushl %ebx
10622 ; LINUX-32-PIC-NEXT: subl $8, %esp
10623 ; LINUX-32-PIC-NEXT: calll .L131$pb
10624 ; LINUX-32-PIC-NEXT: .L131$pb:
10625 ; LINUX-32-PIC-NEXT: popl %ebx
10626 ; LINUX-32-PIC-NEXT: .Ltmp131:
10627 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx
10628 ; LINUX-32-PIC-NEXT: calll x@PLT
10629 ; LINUX-32-PIC-NEXT: calll x@PLT
10630 ; LINUX-32-PIC-NEXT: calll x@PLT
10631 ; LINUX-32-PIC-NEXT: calll x@PLT
10632 ; LINUX-32-PIC-NEXT: calll x@PLT
10633 ; LINUX-32-PIC-NEXT: calll x@PLT
10634 ; LINUX-32-PIC-NEXT: calll x@PLT
10635 ; LINUX-32-PIC-NEXT: addl $8, %esp
10636 ; LINUX-32-PIC-NEXT: popl %ebx
10637 ; LINUX-32-PIC-NEXT: retl
10639 ; LINUX-64-PIC-LABEL: lcallee:
10640 ; LINUX-64-PIC: # %bb.0: # %entry
10641 ; LINUX-64-PIC-NEXT: pushq %rax
10642 ; LINUX-64-PIC-NEXT: callq x@PLT
10643 ; LINUX-64-PIC-NEXT: callq x@PLT
10644 ; LINUX-64-PIC-NEXT: callq x@PLT
10645 ; LINUX-64-PIC-NEXT: callq x@PLT
10646 ; LINUX-64-PIC-NEXT: callq x@PLT
10647 ; LINUX-64-PIC-NEXT: callq x@PLT
10648 ; LINUX-64-PIC-NEXT: callq x@PLT
10649 ; LINUX-64-PIC-NEXT: popq %rax
10650 ; LINUX-64-PIC-NEXT: retq
10652 ; DARWIN-32-STATIC-LABEL: lcallee:
10653 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10654 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
10655 ; DARWIN-32-STATIC-NEXT: calll _x
10656 ; DARWIN-32-STATIC-NEXT: calll _x
10657 ; DARWIN-32-STATIC-NEXT: calll _x
10658 ; DARWIN-32-STATIC-NEXT: calll _x
10659 ; DARWIN-32-STATIC-NEXT: calll _x
10660 ; DARWIN-32-STATIC-NEXT: calll _x
10661 ; DARWIN-32-STATIC-NEXT: calll _x
10662 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
10663 ; DARWIN-32-STATIC-NEXT: retl
10665 ; DARWIN-32-DYNAMIC-LABEL: lcallee:
10666 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10667 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
10668 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10669 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10670 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10671 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10672 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10673 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10674 ; DARWIN-32-DYNAMIC-NEXT: calll _x
10675 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
10676 ; DARWIN-32-DYNAMIC-NEXT: retl
10678 ; DARWIN-32-PIC-LABEL: lcallee:
10679 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10680 ; DARWIN-32-PIC-NEXT: subl $12, %esp
10681 ; DARWIN-32-PIC-NEXT: calll _x
10682 ; DARWIN-32-PIC-NEXT: calll _x
10683 ; DARWIN-32-PIC-NEXT: calll _x
10684 ; DARWIN-32-PIC-NEXT: calll _x
10685 ; DARWIN-32-PIC-NEXT: calll _x
10686 ; DARWIN-32-PIC-NEXT: calll _x
10687 ; DARWIN-32-PIC-NEXT: calll _x
10688 ; DARWIN-32-PIC-NEXT: addl $12, %esp
10689 ; DARWIN-32-PIC-NEXT: retl
10691 ; DARWIN-64-STATIC-LABEL: lcallee:
10692 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10693 ; DARWIN-64-STATIC-NEXT: pushq %rax
10694 ; DARWIN-64-STATIC-NEXT: callq _x
10695 ; DARWIN-64-STATIC-NEXT: callq _x
10696 ; DARWIN-64-STATIC-NEXT: callq _x
10697 ; DARWIN-64-STATIC-NEXT: callq _x
10698 ; DARWIN-64-STATIC-NEXT: callq _x
10699 ; DARWIN-64-STATIC-NEXT: callq _x
10700 ; DARWIN-64-STATIC-NEXT: callq _x
10701 ; DARWIN-64-STATIC-NEXT: popq %rax
10702 ; DARWIN-64-STATIC-NEXT: retq
10704 ; DARWIN-64-DYNAMIC-LABEL: lcallee:
10705 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10706 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
10707 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10708 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10709 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10710 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10711 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10712 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10713 ; DARWIN-64-DYNAMIC-NEXT: callq _x
10714 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
10715 ; DARWIN-64-DYNAMIC-NEXT: retq
10717 ; DARWIN-64-PIC-LABEL: lcallee:
10718 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10719 ; DARWIN-64-PIC-NEXT: pushq %rax
10720 ; DARWIN-64-PIC-NEXT: callq _x
10721 ; DARWIN-64-PIC-NEXT: callq _x
10722 ; DARWIN-64-PIC-NEXT: callq _x
10723 ; DARWIN-64-PIC-NEXT: callq _x
10724 ; DARWIN-64-PIC-NEXT: callq _x
10725 ; DARWIN-64-PIC-NEXT: callq _x
10726 ; DARWIN-64-PIC-NEXT: callq _x
10727 ; DARWIN-64-PIC-NEXT: popq %rax
10728 ; DARWIN-64-PIC-NEXT: retq
10731 call void @x() nounwind
10732 call void @x() nounwind
10733 call void @x() nounwind
10734 call void @x() nounwind
10735 call void @x() nounwind
10736 call void @x() nounwind
10737 call void @x() nounwind
10743 define internal void @dcallee() nounwind {
10744 ; LINUX-64-STATIC-LABEL: dcallee:
10745 ; LINUX-64-STATIC: # %bb.0: # %entry
10746 ; LINUX-64-STATIC-NEXT: pushq %rax
10747 ; LINUX-64-STATIC-NEXT: callq y
10748 ; LINUX-64-STATIC-NEXT: callq y
10749 ; LINUX-64-STATIC-NEXT: callq y
10750 ; LINUX-64-STATIC-NEXT: callq y
10751 ; LINUX-64-STATIC-NEXT: callq y
10752 ; LINUX-64-STATIC-NEXT: callq y
10753 ; LINUX-64-STATIC-NEXT: callq y
10754 ; LINUX-64-STATIC-NEXT: popq %rax
10755 ; LINUX-64-STATIC-NEXT: retq
10757 ; LINUX-32-STATIC-LABEL: dcallee:
10758 ; LINUX-32-STATIC: # %bb.0: # %entry
10759 ; LINUX-32-STATIC-NEXT: subl $12, %esp
10760 ; LINUX-32-STATIC-NEXT: calll y
10761 ; LINUX-32-STATIC-NEXT: calll y
10762 ; LINUX-32-STATIC-NEXT: calll y
10763 ; LINUX-32-STATIC-NEXT: calll y
10764 ; LINUX-32-STATIC-NEXT: calll y
10765 ; LINUX-32-STATIC-NEXT: calll y
10766 ; LINUX-32-STATIC-NEXT: calll y
10767 ; LINUX-32-STATIC-NEXT: addl $12, %esp
10768 ; LINUX-32-STATIC-NEXT: retl
10770 ; LINUX-32-PIC-LABEL: dcallee:
10771 ; LINUX-32-PIC: # %bb.0: # %entry
10772 ; LINUX-32-PIC-NEXT: pushl %ebx
10773 ; LINUX-32-PIC-NEXT: subl $8, %esp
10774 ; LINUX-32-PIC-NEXT: calll .L132$pb
10775 ; LINUX-32-PIC-NEXT: .L132$pb:
10776 ; LINUX-32-PIC-NEXT: popl %ebx
10777 ; LINUX-32-PIC-NEXT: .Ltmp132:
10778 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx
10779 ; LINUX-32-PIC-NEXT: calll y@PLT
10780 ; LINUX-32-PIC-NEXT: calll y@PLT
10781 ; LINUX-32-PIC-NEXT: calll y@PLT
10782 ; LINUX-32-PIC-NEXT: calll y@PLT
10783 ; LINUX-32-PIC-NEXT: calll y@PLT
10784 ; LINUX-32-PIC-NEXT: calll y@PLT
10785 ; LINUX-32-PIC-NEXT: calll y@PLT
10786 ; LINUX-32-PIC-NEXT: addl $8, %esp
10787 ; LINUX-32-PIC-NEXT: popl %ebx
10788 ; LINUX-32-PIC-NEXT: retl
10790 ; LINUX-64-PIC-LABEL: dcallee:
10791 ; LINUX-64-PIC: # %bb.0: # %entry
10792 ; LINUX-64-PIC-NEXT: pushq %rax
10793 ; LINUX-64-PIC-NEXT: callq y@PLT
10794 ; LINUX-64-PIC-NEXT: callq y@PLT
10795 ; LINUX-64-PIC-NEXT: callq y@PLT
10796 ; LINUX-64-PIC-NEXT: callq y@PLT
10797 ; LINUX-64-PIC-NEXT: callq y@PLT
10798 ; LINUX-64-PIC-NEXT: callq y@PLT
10799 ; LINUX-64-PIC-NEXT: callq y@PLT
10800 ; LINUX-64-PIC-NEXT: popq %rax
10801 ; LINUX-64-PIC-NEXT: retq
10803 ; DARWIN-32-STATIC-LABEL: dcallee:
10804 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10805 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
10806 ; DARWIN-32-STATIC-NEXT: calll _y
10807 ; DARWIN-32-STATIC-NEXT: calll _y
10808 ; DARWIN-32-STATIC-NEXT: calll _y
10809 ; DARWIN-32-STATIC-NEXT: calll _y
10810 ; DARWIN-32-STATIC-NEXT: calll _y
10811 ; DARWIN-32-STATIC-NEXT: calll _y
10812 ; DARWIN-32-STATIC-NEXT: calll _y
10813 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
10814 ; DARWIN-32-STATIC-NEXT: retl
10816 ; DARWIN-32-DYNAMIC-LABEL: dcallee:
10817 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10818 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
10819 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10820 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10821 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10822 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10823 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10824 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10825 ; DARWIN-32-DYNAMIC-NEXT: calll _y
10826 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
10827 ; DARWIN-32-DYNAMIC-NEXT: retl
10829 ; DARWIN-32-PIC-LABEL: dcallee:
10830 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10831 ; DARWIN-32-PIC-NEXT: subl $12, %esp
10832 ; DARWIN-32-PIC-NEXT: calll _y
10833 ; DARWIN-32-PIC-NEXT: calll _y
10834 ; DARWIN-32-PIC-NEXT: calll _y
10835 ; DARWIN-32-PIC-NEXT: calll _y
10836 ; DARWIN-32-PIC-NEXT: calll _y
10837 ; DARWIN-32-PIC-NEXT: calll _y
10838 ; DARWIN-32-PIC-NEXT: calll _y
10839 ; DARWIN-32-PIC-NEXT: addl $12, %esp
10840 ; DARWIN-32-PIC-NEXT: retl
10842 ; DARWIN-64-STATIC-LABEL: dcallee:
10843 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10844 ; DARWIN-64-STATIC-NEXT: pushq %rax
10845 ; DARWIN-64-STATIC-NEXT: callq _y
10846 ; DARWIN-64-STATIC-NEXT: callq _y
10847 ; DARWIN-64-STATIC-NEXT: callq _y
10848 ; DARWIN-64-STATIC-NEXT: callq _y
10849 ; DARWIN-64-STATIC-NEXT: callq _y
10850 ; DARWIN-64-STATIC-NEXT: callq _y
10851 ; DARWIN-64-STATIC-NEXT: callq _y
10852 ; DARWIN-64-STATIC-NEXT: popq %rax
10853 ; DARWIN-64-STATIC-NEXT: retq
10855 ; DARWIN-64-DYNAMIC-LABEL: dcallee:
10856 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10857 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
10858 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10859 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10860 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10861 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10862 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10863 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10864 ; DARWIN-64-DYNAMIC-NEXT: callq _y
10865 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
10866 ; DARWIN-64-DYNAMIC-NEXT: retq
10868 ; DARWIN-64-PIC-LABEL: dcallee:
10869 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10870 ; DARWIN-64-PIC-NEXT: pushq %rax
10871 ; DARWIN-64-PIC-NEXT: callq _y
10872 ; DARWIN-64-PIC-NEXT: callq _y
10873 ; DARWIN-64-PIC-NEXT: callq _y
10874 ; DARWIN-64-PIC-NEXT: callq _y
10875 ; DARWIN-64-PIC-NEXT: callq _y
10876 ; DARWIN-64-PIC-NEXT: callq _y
10877 ; DARWIN-64-PIC-NEXT: callq _y
10878 ; DARWIN-64-PIC-NEXT: popq %rax
10879 ; DARWIN-64-PIC-NEXT: retq
10882 call void @y() nounwind
10883 call void @y() nounwind
10884 call void @y() nounwind
10885 call void @y() nounwind
10886 call void @y() nounwind
10887 call void @y() nounwind
10888 call void @y() nounwind
10894 define void ()* @address() nounwind {
10895 ; LINUX-64-STATIC-LABEL: address:
10896 ; LINUX-64-STATIC: # %bb.0: # %entry
10897 ; LINUX-64-STATIC-NEXT: movl $callee, %eax
10898 ; LINUX-64-STATIC-NEXT: retq
10900 ; LINUX-32-STATIC-LABEL: address:
10901 ; LINUX-32-STATIC: # %bb.0: # %entry
10902 ; LINUX-32-STATIC-NEXT: movl $callee, %eax
10903 ; LINUX-32-STATIC-NEXT: retl
10905 ; LINUX-32-PIC-LABEL: address:
10906 ; LINUX-32-PIC: # %bb.0: # %entry
10907 ; LINUX-32-PIC-NEXT: calll .L133$pb
10908 ; LINUX-32-PIC-NEXT: .L133$pb:
10909 ; LINUX-32-PIC-NEXT: popl %eax
10910 ; LINUX-32-PIC-NEXT: .Ltmp133:
10911 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax
10912 ; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax
10913 ; LINUX-32-PIC-NEXT: retl
10915 ; LINUX-64-PIC-LABEL: address:
10916 ; LINUX-64-PIC: # %bb.0: # %entry
10917 ; LINUX-64-PIC-NEXT: movq callee@GOTPCREL(%rip), %rax
10918 ; LINUX-64-PIC-NEXT: retq
10920 ; DARWIN-32-STATIC-LABEL: address:
10921 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10922 ; DARWIN-32-STATIC-NEXT: movl $_callee, %eax
10923 ; DARWIN-32-STATIC-NEXT: retl
10925 ; DARWIN-32-DYNAMIC-LABEL: address:
10926 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10927 ; DARWIN-32-DYNAMIC-NEXT: movl L_callee$non_lazy_ptr, %eax
10928 ; DARWIN-32-DYNAMIC-NEXT: retl
10930 ; DARWIN-32-PIC-LABEL: address:
10931 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10932 ; DARWIN-32-PIC-NEXT: calll L133$pb
10933 ; DARWIN-32-PIC-NEXT: L133$pb:
10934 ; DARWIN-32-PIC-NEXT: popl %eax
10935 ; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax
10936 ; DARWIN-32-PIC-NEXT: retl
10938 ; DARWIN-64-STATIC-LABEL: address:
10939 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
10940 ; DARWIN-64-STATIC-NEXT: movq _callee@GOTPCREL(%rip), %rax
10941 ; DARWIN-64-STATIC-NEXT: retq
10943 ; DARWIN-64-DYNAMIC-LABEL: address:
10944 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
10945 ; DARWIN-64-DYNAMIC-NEXT: movq _callee@GOTPCREL(%rip), %rax
10946 ; DARWIN-64-DYNAMIC-NEXT: retq
10948 ; DARWIN-64-PIC-LABEL: address:
10949 ; DARWIN-64-PIC: ## %bb.0: ## %entry
10950 ; DARWIN-64-PIC-NEXT: movq _callee@GOTPCREL(%rip), %rax
10951 ; DARWIN-64-PIC-NEXT: retq
10954 ret void ()* @callee
10957 declare void @callee()
10959 define void ()* @laddress() nounwind {
10960 ; LINUX-64-STATIC-LABEL: laddress:
10961 ; LINUX-64-STATIC: # %bb.0: # %entry
10962 ; LINUX-64-STATIC-NEXT: movl $lcallee, %eax
10963 ; LINUX-64-STATIC-NEXT: retq
10965 ; LINUX-32-STATIC-LABEL: laddress:
10966 ; LINUX-32-STATIC: # %bb.0: # %entry
10967 ; LINUX-32-STATIC-NEXT: movl $lcallee, %eax
10968 ; LINUX-32-STATIC-NEXT: retl
10970 ; LINUX-32-PIC-LABEL: laddress:
10971 ; LINUX-32-PIC: # %bb.0: # %entry
10972 ; LINUX-32-PIC-NEXT: calll .L134$pb
10973 ; LINUX-32-PIC-NEXT: .L134$pb:
10974 ; LINUX-32-PIC-NEXT: popl %eax
10975 ; LINUX-32-PIC-NEXT: .Ltmp134:
10976 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax
10977 ; LINUX-32-PIC-NEXT: movl lcallee@GOT(%eax), %eax
10978 ; LINUX-32-PIC-NEXT: retl
10980 ; LINUX-64-PIC-LABEL: laddress:
10981 ; LINUX-64-PIC: # %bb.0: # %entry
10982 ; LINUX-64-PIC-NEXT: movq lcallee@GOTPCREL(%rip), %rax
10983 ; LINUX-64-PIC-NEXT: retq
10985 ; DARWIN-32-STATIC-LABEL: laddress:
10986 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
10987 ; DARWIN-32-STATIC-NEXT: movl $_lcallee, %eax
10988 ; DARWIN-32-STATIC-NEXT: retl
10990 ; DARWIN-32-DYNAMIC-LABEL: laddress:
10991 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
10992 ; DARWIN-32-DYNAMIC-NEXT: movl $_lcallee, %eax
10993 ; DARWIN-32-DYNAMIC-NEXT: retl
10995 ; DARWIN-32-PIC-LABEL: laddress:
10996 ; DARWIN-32-PIC: ## %bb.0: ## %entry
10997 ; DARWIN-32-PIC-NEXT: calll L134$pb
10998 ; DARWIN-32-PIC-NEXT: L134$pb:
10999 ; DARWIN-32-PIC-NEXT: popl %eax
11000 ; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax
11001 ; DARWIN-32-PIC-NEXT: retl
11003 ; DARWIN-64-STATIC-LABEL: laddress:
11004 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11005 ; DARWIN-64-STATIC-NEXT: leaq _lcallee(%rip), %rax
11006 ; DARWIN-64-STATIC-NEXT: retq
11008 ; DARWIN-64-DYNAMIC-LABEL: laddress:
11009 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11010 ; DARWIN-64-DYNAMIC-NEXT: leaq _lcallee(%rip), %rax
11011 ; DARWIN-64-DYNAMIC-NEXT: retq
11013 ; DARWIN-64-PIC-LABEL: laddress:
11014 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11015 ; DARWIN-64-PIC-NEXT: leaq _lcallee(%rip), %rax
11016 ; DARWIN-64-PIC-NEXT: retq
11019 ret void ()* @lcallee
11022 define void ()* @daddress() nounwind {
11023 ; LINUX-64-STATIC-LABEL: daddress:
11024 ; LINUX-64-STATIC: # %bb.0: # %entry
11025 ; LINUX-64-STATIC-NEXT: movl $dcallee, %eax
11026 ; LINUX-64-STATIC-NEXT: retq
11028 ; LINUX-32-STATIC-LABEL: daddress:
11029 ; LINUX-32-STATIC: # %bb.0: # %entry
11030 ; LINUX-32-STATIC-NEXT: movl $dcallee, %eax
11031 ; LINUX-32-STATIC-NEXT: retl
11033 ; LINUX-32-PIC-LABEL: daddress:
11034 ; LINUX-32-PIC: # %bb.0: # %entry
11035 ; LINUX-32-PIC-NEXT: calll .L135$pb
11036 ; LINUX-32-PIC-NEXT: .L135$pb:
11037 ; LINUX-32-PIC-NEXT: popl %eax
11038 ; LINUX-32-PIC-NEXT: .Ltmp135:
11039 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax
11040 ; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax
11041 ; LINUX-32-PIC-NEXT: retl
11043 ; LINUX-64-PIC-LABEL: daddress:
11044 ; LINUX-64-PIC: # %bb.0: # %entry
11045 ; LINUX-64-PIC-NEXT: leaq dcallee(%rip), %rax
11046 ; LINUX-64-PIC-NEXT: retq
11048 ; DARWIN-32-STATIC-LABEL: daddress:
11049 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11050 ; DARWIN-32-STATIC-NEXT: movl $_dcallee, %eax
11051 ; DARWIN-32-STATIC-NEXT: retl
11053 ; DARWIN-32-DYNAMIC-LABEL: daddress:
11054 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11055 ; DARWIN-32-DYNAMIC-NEXT: movl $_dcallee, %eax
11056 ; DARWIN-32-DYNAMIC-NEXT: retl
11058 ; DARWIN-32-PIC-LABEL: daddress:
11059 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11060 ; DARWIN-32-PIC-NEXT: calll L135$pb
11061 ; DARWIN-32-PIC-NEXT: L135$pb:
11062 ; DARWIN-32-PIC-NEXT: popl %eax
11063 ; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax
11064 ; DARWIN-32-PIC-NEXT: retl
11066 ; DARWIN-64-STATIC-LABEL: daddress:
11067 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11068 ; DARWIN-64-STATIC-NEXT: leaq _dcallee(%rip), %rax
11069 ; DARWIN-64-STATIC-NEXT: retq
11071 ; DARWIN-64-DYNAMIC-LABEL: daddress:
11072 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11073 ; DARWIN-64-DYNAMIC-NEXT: leaq _dcallee(%rip), %rax
11074 ; DARWIN-64-DYNAMIC-NEXT: retq
11076 ; DARWIN-64-PIC-LABEL: daddress:
11077 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11078 ; DARWIN-64-PIC-NEXT: leaq _dcallee(%rip), %rax
11079 ; DARWIN-64-PIC-NEXT: retq
11082 ret void ()* @dcallee
11085 define void @caller() nounwind {
11086 ; LINUX-64-STATIC-LABEL: caller:
11087 ; LINUX-64-STATIC: # %bb.0: # %entry
11088 ; LINUX-64-STATIC-NEXT: pushq %rax
11089 ; LINUX-64-STATIC-NEXT: callq callee
11090 ; LINUX-64-STATIC-NEXT: callq callee
11091 ; LINUX-64-STATIC-NEXT: popq %rax
11092 ; LINUX-64-STATIC-NEXT: retq
11094 ; LINUX-32-STATIC-LABEL: caller:
11095 ; LINUX-32-STATIC: # %bb.0: # %entry
11096 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11097 ; LINUX-32-STATIC-NEXT: calll callee
11098 ; LINUX-32-STATIC-NEXT: calll callee
11099 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11100 ; LINUX-32-STATIC-NEXT: retl
11102 ; LINUX-32-PIC-LABEL: caller:
11103 ; LINUX-32-PIC: # %bb.0: # %entry
11104 ; LINUX-32-PIC-NEXT: pushl %ebx
11105 ; LINUX-32-PIC-NEXT: subl $8, %esp
11106 ; LINUX-32-PIC-NEXT: calll .L136$pb
11107 ; LINUX-32-PIC-NEXT: .L136$pb:
11108 ; LINUX-32-PIC-NEXT: popl %ebx
11109 ; LINUX-32-PIC-NEXT: .Ltmp136:
11110 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx
11111 ; LINUX-32-PIC-NEXT: calll callee@PLT
11112 ; LINUX-32-PIC-NEXT: calll callee@PLT
11113 ; LINUX-32-PIC-NEXT: addl $8, %esp
11114 ; LINUX-32-PIC-NEXT: popl %ebx
11115 ; LINUX-32-PIC-NEXT: retl
11117 ; LINUX-64-PIC-LABEL: caller:
11118 ; LINUX-64-PIC: # %bb.0: # %entry
11119 ; LINUX-64-PIC-NEXT: pushq %rax
11120 ; LINUX-64-PIC-NEXT: callq callee@PLT
11121 ; LINUX-64-PIC-NEXT: callq callee@PLT
11122 ; LINUX-64-PIC-NEXT: popq %rax
11123 ; LINUX-64-PIC-NEXT: retq
11125 ; DARWIN-32-STATIC-LABEL: caller:
11126 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11127 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11128 ; DARWIN-32-STATIC-NEXT: calll _callee
11129 ; DARWIN-32-STATIC-NEXT: calll _callee
11130 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11131 ; DARWIN-32-STATIC-NEXT: retl
11133 ; DARWIN-32-DYNAMIC-LABEL: caller:
11134 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11135 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11136 ; DARWIN-32-DYNAMIC-NEXT: calll _callee
11137 ; DARWIN-32-DYNAMIC-NEXT: calll _callee
11138 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11139 ; DARWIN-32-DYNAMIC-NEXT: retl
11141 ; DARWIN-32-PIC-LABEL: caller:
11142 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11143 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11144 ; DARWIN-32-PIC-NEXT: calll _callee
11145 ; DARWIN-32-PIC-NEXT: calll _callee
11146 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11147 ; DARWIN-32-PIC-NEXT: retl
11149 ; DARWIN-64-STATIC-LABEL: caller:
11150 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11151 ; DARWIN-64-STATIC-NEXT: pushq %rax
11152 ; DARWIN-64-STATIC-NEXT: callq _callee
11153 ; DARWIN-64-STATIC-NEXT: callq _callee
11154 ; DARWIN-64-STATIC-NEXT: popq %rax
11155 ; DARWIN-64-STATIC-NEXT: retq
11157 ; DARWIN-64-DYNAMIC-LABEL: caller:
11158 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11159 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11160 ; DARWIN-64-DYNAMIC-NEXT: callq _callee
11161 ; DARWIN-64-DYNAMIC-NEXT: callq _callee
11162 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11163 ; DARWIN-64-DYNAMIC-NEXT: retq
11165 ; DARWIN-64-PIC-LABEL: caller:
11166 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11167 ; DARWIN-64-PIC-NEXT: pushq %rax
11168 ; DARWIN-64-PIC-NEXT: callq _callee
11169 ; DARWIN-64-PIC-NEXT: callq _callee
11170 ; DARWIN-64-PIC-NEXT: popq %rax
11171 ; DARWIN-64-PIC-NEXT: retq
11174 call void @callee() nounwind
11175 call void @callee() nounwind
11179 define void @dcaller() nounwind {
11180 ; LINUX-64-STATIC-LABEL: dcaller:
11181 ; LINUX-64-STATIC: # %bb.0: # %entry
11182 ; LINUX-64-STATIC-NEXT: pushq %rax
11183 ; LINUX-64-STATIC-NEXT: callq dcallee
11184 ; LINUX-64-STATIC-NEXT: callq dcallee
11185 ; LINUX-64-STATIC-NEXT: popq %rax
11186 ; LINUX-64-STATIC-NEXT: retq
11188 ; LINUX-32-STATIC-LABEL: dcaller:
11189 ; LINUX-32-STATIC: # %bb.0: # %entry
11190 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11191 ; LINUX-32-STATIC-NEXT: calll dcallee
11192 ; LINUX-32-STATIC-NEXT: calll dcallee
11193 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11194 ; LINUX-32-STATIC-NEXT: retl
11196 ; LINUX-32-PIC-LABEL: dcaller:
11197 ; LINUX-32-PIC: # %bb.0: # %entry
11198 ; LINUX-32-PIC-NEXT: pushl %ebx
11199 ; LINUX-32-PIC-NEXT: subl $8, %esp
11200 ; LINUX-32-PIC-NEXT: calll .L137$pb
11201 ; LINUX-32-PIC-NEXT: .L137$pb:
11202 ; LINUX-32-PIC-NEXT: popl %ebx
11203 ; LINUX-32-PIC-NEXT: .Ltmp137:
11204 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx
11205 ; LINUX-32-PIC-NEXT: calll dcallee
11206 ; LINUX-32-PIC-NEXT: calll dcallee
11207 ; LINUX-32-PIC-NEXT: addl $8, %esp
11208 ; LINUX-32-PIC-NEXT: popl %ebx
11209 ; LINUX-32-PIC-NEXT: retl
11211 ; LINUX-64-PIC-LABEL: dcaller:
11212 ; LINUX-64-PIC: # %bb.0: # %entry
11213 ; LINUX-64-PIC-NEXT: pushq %rax
11214 ; LINUX-64-PIC-NEXT: callq dcallee
11215 ; LINUX-64-PIC-NEXT: callq dcallee
11216 ; LINUX-64-PIC-NEXT: popq %rax
11217 ; LINUX-64-PIC-NEXT: retq
11219 ; DARWIN-32-STATIC-LABEL: dcaller:
11220 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11221 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11222 ; DARWIN-32-STATIC-NEXT: calll _dcallee
11223 ; DARWIN-32-STATIC-NEXT: calll _dcallee
11224 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11225 ; DARWIN-32-STATIC-NEXT: retl
11227 ; DARWIN-32-DYNAMIC-LABEL: dcaller:
11228 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11229 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11230 ; DARWIN-32-DYNAMIC-NEXT: calll _dcallee
11231 ; DARWIN-32-DYNAMIC-NEXT: calll _dcallee
11232 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11233 ; DARWIN-32-DYNAMIC-NEXT: retl
11235 ; DARWIN-32-PIC-LABEL: dcaller:
11236 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11237 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11238 ; DARWIN-32-PIC-NEXT: calll _dcallee
11239 ; DARWIN-32-PIC-NEXT: calll _dcallee
11240 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11241 ; DARWIN-32-PIC-NEXT: retl
11243 ; DARWIN-64-STATIC-LABEL: dcaller:
11244 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11245 ; DARWIN-64-STATIC-NEXT: pushq %rax
11246 ; DARWIN-64-STATIC-NEXT: callq _dcallee
11247 ; DARWIN-64-STATIC-NEXT: callq _dcallee
11248 ; DARWIN-64-STATIC-NEXT: popq %rax
11249 ; DARWIN-64-STATIC-NEXT: retq
11251 ; DARWIN-64-DYNAMIC-LABEL: dcaller:
11252 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11253 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11254 ; DARWIN-64-DYNAMIC-NEXT: callq _dcallee
11255 ; DARWIN-64-DYNAMIC-NEXT: callq _dcallee
11256 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11257 ; DARWIN-64-DYNAMIC-NEXT: retq
11259 ; DARWIN-64-PIC-LABEL: dcaller:
11260 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11261 ; DARWIN-64-PIC-NEXT: pushq %rax
11262 ; DARWIN-64-PIC-NEXT: callq _dcallee
11263 ; DARWIN-64-PIC-NEXT: callq _dcallee
11264 ; DARWIN-64-PIC-NEXT: popq %rax
11265 ; DARWIN-64-PIC-NEXT: retq
11268 call void @dcallee() nounwind
11269 call void @dcallee() nounwind
11273 define void @lcaller() nounwind {
11274 ; LINUX-64-STATIC-LABEL: lcaller:
11275 ; LINUX-64-STATIC: # %bb.0: # %entry
11276 ; LINUX-64-STATIC-NEXT: pushq %rax
11277 ; LINUX-64-STATIC-NEXT: callq lcallee
11278 ; LINUX-64-STATIC-NEXT: callq lcallee
11279 ; LINUX-64-STATIC-NEXT: popq %rax
11280 ; LINUX-64-STATIC-NEXT: retq
11282 ; LINUX-32-STATIC-LABEL: lcaller:
11283 ; LINUX-32-STATIC: # %bb.0: # %entry
11284 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11285 ; LINUX-32-STATIC-NEXT: calll lcallee
11286 ; LINUX-32-STATIC-NEXT: calll lcallee
11287 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11288 ; LINUX-32-STATIC-NEXT: retl
11290 ; LINUX-32-PIC-LABEL: lcaller:
11291 ; LINUX-32-PIC: # %bb.0: # %entry
11292 ; LINUX-32-PIC-NEXT: pushl %ebx
11293 ; LINUX-32-PIC-NEXT: subl $8, %esp
11294 ; LINUX-32-PIC-NEXT: calll .L138$pb
11295 ; LINUX-32-PIC-NEXT: .L138$pb:
11296 ; LINUX-32-PIC-NEXT: popl %ebx
11297 ; LINUX-32-PIC-NEXT: .Ltmp138:
11298 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx
11299 ; LINUX-32-PIC-NEXT: calll lcallee@PLT
11300 ; LINUX-32-PIC-NEXT: calll lcallee@PLT
11301 ; LINUX-32-PIC-NEXT: addl $8, %esp
11302 ; LINUX-32-PIC-NEXT: popl %ebx
11303 ; LINUX-32-PIC-NEXT: retl
11305 ; LINUX-64-PIC-LABEL: lcaller:
11306 ; LINUX-64-PIC: # %bb.0: # %entry
11307 ; LINUX-64-PIC-NEXT: pushq %rax
11308 ; LINUX-64-PIC-NEXT: callq lcallee@PLT
11309 ; LINUX-64-PIC-NEXT: callq lcallee@PLT
11310 ; LINUX-64-PIC-NEXT: popq %rax
11311 ; LINUX-64-PIC-NEXT: retq
11313 ; DARWIN-32-STATIC-LABEL: lcaller:
11314 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11315 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11316 ; DARWIN-32-STATIC-NEXT: calll _lcallee
11317 ; DARWIN-32-STATIC-NEXT: calll _lcallee
11318 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11319 ; DARWIN-32-STATIC-NEXT: retl
11321 ; DARWIN-32-DYNAMIC-LABEL: lcaller:
11322 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11323 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11324 ; DARWIN-32-DYNAMIC-NEXT: calll _lcallee
11325 ; DARWIN-32-DYNAMIC-NEXT: calll _lcallee
11326 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11327 ; DARWIN-32-DYNAMIC-NEXT: retl
11329 ; DARWIN-32-PIC-LABEL: lcaller:
11330 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11331 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11332 ; DARWIN-32-PIC-NEXT: calll _lcallee
11333 ; DARWIN-32-PIC-NEXT: calll _lcallee
11334 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11335 ; DARWIN-32-PIC-NEXT: retl
11337 ; DARWIN-64-STATIC-LABEL: lcaller:
11338 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11339 ; DARWIN-64-STATIC-NEXT: pushq %rax
11340 ; DARWIN-64-STATIC-NEXT: callq _lcallee
11341 ; DARWIN-64-STATIC-NEXT: callq _lcallee
11342 ; DARWIN-64-STATIC-NEXT: popq %rax
11343 ; DARWIN-64-STATIC-NEXT: retq
11345 ; DARWIN-64-DYNAMIC-LABEL: lcaller:
11346 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11347 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11348 ; DARWIN-64-DYNAMIC-NEXT: callq _lcallee
11349 ; DARWIN-64-DYNAMIC-NEXT: callq _lcallee
11350 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11351 ; DARWIN-64-DYNAMIC-NEXT: retq
11353 ; DARWIN-64-PIC-LABEL: lcaller:
11354 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11355 ; DARWIN-64-PIC-NEXT: pushq %rax
11356 ; DARWIN-64-PIC-NEXT: callq _lcallee
11357 ; DARWIN-64-PIC-NEXT: callq _lcallee
11358 ; DARWIN-64-PIC-NEXT: popq %rax
11359 ; DARWIN-64-PIC-NEXT: retq
11362 call void @lcallee() nounwind
11363 call void @lcallee() nounwind
11367 define void @tailcaller() nounwind {
11368 ; LINUX-64-STATIC-LABEL: tailcaller:
11369 ; LINUX-64-STATIC: # %bb.0: # %entry
11370 ; LINUX-64-STATIC-NEXT: pushq %rax
11371 ; LINUX-64-STATIC-NEXT: callq callee
11372 ; LINUX-64-STATIC-NEXT: popq %rax
11373 ; LINUX-64-STATIC-NEXT: retq
11375 ; LINUX-32-STATIC-LABEL: tailcaller:
11376 ; LINUX-32-STATIC: # %bb.0: # %entry
11377 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11378 ; LINUX-32-STATIC-NEXT: calll callee
11379 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11380 ; LINUX-32-STATIC-NEXT: retl
11382 ; LINUX-32-PIC-LABEL: tailcaller:
11383 ; LINUX-32-PIC: # %bb.0: # %entry
11384 ; LINUX-32-PIC-NEXT: pushl %ebx
11385 ; LINUX-32-PIC-NEXT: subl $8, %esp
11386 ; LINUX-32-PIC-NEXT: calll .L139$pb
11387 ; LINUX-32-PIC-NEXT: .L139$pb:
11388 ; LINUX-32-PIC-NEXT: popl %ebx
11389 ; LINUX-32-PIC-NEXT: .Ltmp139:
11390 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx
11391 ; LINUX-32-PIC-NEXT: calll callee@PLT
11392 ; LINUX-32-PIC-NEXT: addl $8, %esp
11393 ; LINUX-32-PIC-NEXT: popl %ebx
11394 ; LINUX-32-PIC-NEXT: retl
11396 ; LINUX-64-PIC-LABEL: tailcaller:
11397 ; LINUX-64-PIC: # %bb.0: # %entry
11398 ; LINUX-64-PIC-NEXT: pushq %rax
11399 ; LINUX-64-PIC-NEXT: callq callee@PLT
11400 ; LINUX-64-PIC-NEXT: popq %rax
11401 ; LINUX-64-PIC-NEXT: retq
11403 ; DARWIN-32-STATIC-LABEL: tailcaller:
11404 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11405 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11406 ; DARWIN-32-STATIC-NEXT: calll _callee
11407 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11408 ; DARWIN-32-STATIC-NEXT: retl
11410 ; DARWIN-32-DYNAMIC-LABEL: tailcaller:
11411 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11412 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11413 ; DARWIN-32-DYNAMIC-NEXT: calll _callee
11414 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11415 ; DARWIN-32-DYNAMIC-NEXT: retl
11417 ; DARWIN-32-PIC-LABEL: tailcaller:
11418 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11419 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11420 ; DARWIN-32-PIC-NEXT: calll _callee
11421 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11422 ; DARWIN-32-PIC-NEXT: retl
11424 ; DARWIN-64-STATIC-LABEL: tailcaller:
11425 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11426 ; DARWIN-64-STATIC-NEXT: pushq %rax
11427 ; DARWIN-64-STATIC-NEXT: callq _callee
11428 ; DARWIN-64-STATIC-NEXT: popq %rax
11429 ; DARWIN-64-STATIC-NEXT: retq
11431 ; DARWIN-64-DYNAMIC-LABEL: tailcaller:
11432 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11433 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11434 ; DARWIN-64-DYNAMIC-NEXT: callq _callee
11435 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11436 ; DARWIN-64-DYNAMIC-NEXT: retq
11438 ; DARWIN-64-PIC-LABEL: tailcaller:
11439 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11440 ; DARWIN-64-PIC-NEXT: pushq %rax
11441 ; DARWIN-64-PIC-NEXT: callq _callee
11442 ; DARWIN-64-PIC-NEXT: popq %rax
11443 ; DARWIN-64-PIC-NEXT: retq
11446 call void @callee() nounwind
11450 define void @dtailcaller() nounwind {
11451 ; LINUX-64-STATIC-LABEL: dtailcaller:
11452 ; LINUX-64-STATIC: # %bb.0: # %entry
11453 ; LINUX-64-STATIC-NEXT: pushq %rax
11454 ; LINUX-64-STATIC-NEXT: callq dcallee
11455 ; LINUX-64-STATIC-NEXT: popq %rax
11456 ; LINUX-64-STATIC-NEXT: retq
11458 ; LINUX-32-STATIC-LABEL: dtailcaller:
11459 ; LINUX-32-STATIC: # %bb.0: # %entry
11460 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11461 ; LINUX-32-STATIC-NEXT: calll dcallee
11462 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11463 ; LINUX-32-STATIC-NEXT: retl
11465 ; LINUX-32-PIC-LABEL: dtailcaller:
11466 ; LINUX-32-PIC: # %bb.0: # %entry
11467 ; LINUX-32-PIC-NEXT: pushl %ebx
11468 ; LINUX-32-PIC-NEXT: subl $8, %esp
11469 ; LINUX-32-PIC-NEXT: calll .L140$pb
11470 ; LINUX-32-PIC-NEXT: .L140$pb:
11471 ; LINUX-32-PIC-NEXT: popl %ebx
11472 ; LINUX-32-PIC-NEXT: .Ltmp140:
11473 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx
11474 ; LINUX-32-PIC-NEXT: calll dcallee
11475 ; LINUX-32-PIC-NEXT: addl $8, %esp
11476 ; LINUX-32-PIC-NEXT: popl %ebx
11477 ; LINUX-32-PIC-NEXT: retl
11479 ; LINUX-64-PIC-LABEL: dtailcaller:
11480 ; LINUX-64-PIC: # %bb.0: # %entry
11481 ; LINUX-64-PIC-NEXT: pushq %rax
11482 ; LINUX-64-PIC-NEXT: callq dcallee
11483 ; LINUX-64-PIC-NEXT: popq %rax
11484 ; LINUX-64-PIC-NEXT: retq
11486 ; DARWIN-32-STATIC-LABEL: dtailcaller:
11487 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11488 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11489 ; DARWIN-32-STATIC-NEXT: calll _dcallee
11490 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11491 ; DARWIN-32-STATIC-NEXT: retl
11493 ; DARWIN-32-DYNAMIC-LABEL: dtailcaller:
11494 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11495 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11496 ; DARWIN-32-DYNAMIC-NEXT: calll _dcallee
11497 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11498 ; DARWIN-32-DYNAMIC-NEXT: retl
11500 ; DARWIN-32-PIC-LABEL: dtailcaller:
11501 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11502 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11503 ; DARWIN-32-PIC-NEXT: calll _dcallee
11504 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11505 ; DARWIN-32-PIC-NEXT: retl
11507 ; DARWIN-64-STATIC-LABEL: dtailcaller:
11508 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11509 ; DARWIN-64-STATIC-NEXT: pushq %rax
11510 ; DARWIN-64-STATIC-NEXT: callq _dcallee
11511 ; DARWIN-64-STATIC-NEXT: popq %rax
11512 ; DARWIN-64-STATIC-NEXT: retq
11514 ; DARWIN-64-DYNAMIC-LABEL: dtailcaller:
11515 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11516 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11517 ; DARWIN-64-DYNAMIC-NEXT: callq _dcallee
11518 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11519 ; DARWIN-64-DYNAMIC-NEXT: retq
11521 ; DARWIN-64-PIC-LABEL: dtailcaller:
11522 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11523 ; DARWIN-64-PIC-NEXT: pushq %rax
11524 ; DARWIN-64-PIC-NEXT: callq _dcallee
11525 ; DARWIN-64-PIC-NEXT: popq %rax
11526 ; DARWIN-64-PIC-NEXT: retq
11529 call void @dcallee() nounwind
11533 define void @ltailcaller() nounwind {
11534 ; LINUX-64-STATIC-LABEL: ltailcaller:
11535 ; LINUX-64-STATIC: # %bb.0: # %entry
11536 ; LINUX-64-STATIC-NEXT: pushq %rax
11537 ; LINUX-64-STATIC-NEXT: callq lcallee
11538 ; LINUX-64-STATIC-NEXT: popq %rax
11539 ; LINUX-64-STATIC-NEXT: retq
11541 ; LINUX-32-STATIC-LABEL: ltailcaller:
11542 ; LINUX-32-STATIC: # %bb.0: # %entry
11543 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11544 ; LINUX-32-STATIC-NEXT: calll lcallee
11545 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11546 ; LINUX-32-STATIC-NEXT: retl
11548 ; LINUX-32-PIC-LABEL: ltailcaller:
11549 ; LINUX-32-PIC: # %bb.0: # %entry
11550 ; LINUX-32-PIC-NEXT: pushl %ebx
11551 ; LINUX-32-PIC-NEXT: subl $8, %esp
11552 ; LINUX-32-PIC-NEXT: calll .L141$pb
11553 ; LINUX-32-PIC-NEXT: .L141$pb:
11554 ; LINUX-32-PIC-NEXT: popl %ebx
11555 ; LINUX-32-PIC-NEXT: .Ltmp141:
11556 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx
11557 ; LINUX-32-PIC-NEXT: calll lcallee@PLT
11558 ; LINUX-32-PIC-NEXT: addl $8, %esp
11559 ; LINUX-32-PIC-NEXT: popl %ebx
11560 ; LINUX-32-PIC-NEXT: retl
11562 ; LINUX-64-PIC-LABEL: ltailcaller:
11563 ; LINUX-64-PIC: # %bb.0: # %entry
11564 ; LINUX-64-PIC-NEXT: pushq %rax
11565 ; LINUX-64-PIC-NEXT: callq lcallee@PLT
11566 ; LINUX-64-PIC-NEXT: popq %rax
11567 ; LINUX-64-PIC-NEXT: retq
11569 ; DARWIN-32-STATIC-LABEL: ltailcaller:
11570 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11571 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11572 ; DARWIN-32-STATIC-NEXT: calll _lcallee
11573 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11574 ; DARWIN-32-STATIC-NEXT: retl
11576 ; DARWIN-32-DYNAMIC-LABEL: ltailcaller:
11577 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11578 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11579 ; DARWIN-32-DYNAMIC-NEXT: calll _lcallee
11580 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11581 ; DARWIN-32-DYNAMIC-NEXT: retl
11583 ; DARWIN-32-PIC-LABEL: ltailcaller:
11584 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11585 ; DARWIN-32-PIC-NEXT: subl $12, %esp
11586 ; DARWIN-32-PIC-NEXT: calll _lcallee
11587 ; DARWIN-32-PIC-NEXT: addl $12, %esp
11588 ; DARWIN-32-PIC-NEXT: retl
11590 ; DARWIN-64-STATIC-LABEL: ltailcaller:
11591 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11592 ; DARWIN-64-STATIC-NEXT: pushq %rax
11593 ; DARWIN-64-STATIC-NEXT: callq _lcallee
11594 ; DARWIN-64-STATIC-NEXT: popq %rax
11595 ; DARWIN-64-STATIC-NEXT: retq
11597 ; DARWIN-64-DYNAMIC-LABEL: ltailcaller:
11598 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11599 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11600 ; DARWIN-64-DYNAMIC-NEXT: callq _lcallee
11601 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11602 ; DARWIN-64-DYNAMIC-NEXT: retq
11604 ; DARWIN-64-PIC-LABEL: ltailcaller:
11605 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11606 ; DARWIN-64-PIC-NEXT: pushq %rax
11607 ; DARWIN-64-PIC-NEXT: callq _lcallee
11608 ; DARWIN-64-PIC-NEXT: popq %rax
11609 ; DARWIN-64-PIC-NEXT: retq
11612 call void @lcallee() nounwind
11616 define void @icaller() nounwind {
11617 ; LINUX-64-STATIC-LABEL: icaller:
11618 ; LINUX-64-STATIC: # %bb.0: # %entry
11619 ; LINUX-64-STATIC-NEXT: pushq %rax
11620 ; LINUX-64-STATIC-NEXT: callq *ifunc(%rip)
11621 ; LINUX-64-STATIC-NEXT: callq *ifunc(%rip)
11622 ; LINUX-64-STATIC-NEXT: popq %rax
11623 ; LINUX-64-STATIC-NEXT: retq
11625 ; LINUX-32-STATIC-LABEL: icaller:
11626 ; LINUX-32-STATIC: # %bb.0: # %entry
11627 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11628 ; LINUX-32-STATIC-NEXT: calll *ifunc
11629 ; LINUX-32-STATIC-NEXT: calll *ifunc
11630 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11631 ; LINUX-32-STATIC-NEXT: retl
11633 ; LINUX-32-PIC-LABEL: icaller:
11634 ; LINUX-32-PIC: # %bb.0: # %entry
11635 ; LINUX-32-PIC-NEXT: pushl %ebx
11636 ; LINUX-32-PIC-NEXT: pushl %esi
11637 ; LINUX-32-PIC-NEXT: pushl %eax
11638 ; LINUX-32-PIC-NEXT: calll .L142$pb
11639 ; LINUX-32-PIC-NEXT: .L142$pb:
11640 ; LINUX-32-PIC-NEXT: popl %ebx
11641 ; LINUX-32-PIC-NEXT: .Ltmp142:
11642 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx
11643 ; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi
11644 ; LINUX-32-PIC-NEXT: calll *(%esi)
11645 ; LINUX-32-PIC-NEXT: calll *(%esi)
11646 ; LINUX-32-PIC-NEXT: addl $4, %esp
11647 ; LINUX-32-PIC-NEXT: popl %esi
11648 ; LINUX-32-PIC-NEXT: popl %ebx
11649 ; LINUX-32-PIC-NEXT: retl
11651 ; LINUX-64-PIC-LABEL: icaller:
11652 ; LINUX-64-PIC: # %bb.0: # %entry
11653 ; LINUX-64-PIC-NEXT: pushq %rbx
11654 ; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
11655 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11656 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11657 ; LINUX-64-PIC-NEXT: popq %rbx
11658 ; LINUX-64-PIC-NEXT: retq
11660 ; DARWIN-32-STATIC-LABEL: icaller:
11661 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11662 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11663 ; DARWIN-32-STATIC-NEXT: calll *_ifunc
11664 ; DARWIN-32-STATIC-NEXT: calll *_ifunc
11665 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11666 ; DARWIN-32-STATIC-NEXT: retl
11668 ; DARWIN-32-DYNAMIC-LABEL: icaller:
11669 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11670 ; DARWIN-32-DYNAMIC-NEXT: pushl %esi
11671 ; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp
11672 ; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi
11673 ; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)
11674 ; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)
11675 ; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp
11676 ; DARWIN-32-DYNAMIC-NEXT: popl %esi
11677 ; DARWIN-32-DYNAMIC-NEXT: retl
11679 ; DARWIN-32-PIC-LABEL: icaller:
11680 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11681 ; DARWIN-32-PIC-NEXT: pushl %esi
11682 ; DARWIN-32-PIC-NEXT: subl $8, %esp
11683 ; DARWIN-32-PIC-NEXT: calll L142$pb
11684 ; DARWIN-32-PIC-NEXT: L142$pb:
11685 ; DARWIN-32-PIC-NEXT: popl %eax
11686 ; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi
11687 ; DARWIN-32-PIC-NEXT: calll *(%esi)
11688 ; DARWIN-32-PIC-NEXT: calll *(%esi)
11689 ; DARWIN-32-PIC-NEXT: addl $8, %esp
11690 ; DARWIN-32-PIC-NEXT: popl %esi
11691 ; DARWIN-32-PIC-NEXT: retl
11693 ; DARWIN-64-STATIC-LABEL: icaller:
11694 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11695 ; DARWIN-64-STATIC-NEXT: pushq %rbx
11696 ; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
11697 ; DARWIN-64-STATIC-NEXT: callq *(%rbx)
11698 ; DARWIN-64-STATIC-NEXT: callq *(%rbx)
11699 ; DARWIN-64-STATIC-NEXT: popq %rbx
11700 ; DARWIN-64-STATIC-NEXT: retq
11702 ; DARWIN-64-DYNAMIC-LABEL: icaller:
11703 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11704 ; DARWIN-64-DYNAMIC-NEXT: pushq %rbx
11705 ; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
11706 ; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
11707 ; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
11708 ; DARWIN-64-DYNAMIC-NEXT: popq %rbx
11709 ; DARWIN-64-DYNAMIC-NEXT: retq
11711 ; DARWIN-64-PIC-LABEL: icaller:
11712 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11713 ; DARWIN-64-PIC-NEXT: pushq %rbx
11714 ; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
11715 ; DARWIN-64-PIC-NEXT: callq *(%rbx)
11716 ; DARWIN-64-PIC-NEXT: callq *(%rbx)
11717 ; DARWIN-64-PIC-NEXT: popq %rbx
11718 ; DARWIN-64-PIC-NEXT: retq
11721 %0 = load void ()*, void ()** @ifunc, align 8
11722 call void %0() nounwind
11723 %1 = load void ()*, void ()** @ifunc, align 8
11724 call void %1() nounwind
11728 define void @dicaller() nounwind {
11729 ; LINUX-64-STATIC-LABEL: dicaller:
11730 ; LINUX-64-STATIC: # %bb.0: # %entry
11731 ; LINUX-64-STATIC-NEXT: pushq %rax
11732 ; LINUX-64-STATIC-NEXT: callq *difunc(%rip)
11733 ; LINUX-64-STATIC-NEXT: callq *difunc(%rip)
11734 ; LINUX-64-STATIC-NEXT: popq %rax
11735 ; LINUX-64-STATIC-NEXT: retq
11737 ; LINUX-32-STATIC-LABEL: dicaller:
11738 ; LINUX-32-STATIC: # %bb.0: # %entry
11739 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11740 ; LINUX-32-STATIC-NEXT: calll *difunc
11741 ; LINUX-32-STATIC-NEXT: calll *difunc
11742 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11743 ; LINUX-32-STATIC-NEXT: retl
11745 ; LINUX-32-PIC-LABEL: dicaller:
11746 ; LINUX-32-PIC: # %bb.0: # %entry
11747 ; LINUX-32-PIC-NEXT: pushl %ebx
11748 ; LINUX-32-PIC-NEXT: pushl %esi
11749 ; LINUX-32-PIC-NEXT: pushl %eax
11750 ; LINUX-32-PIC-NEXT: calll .L143$pb
11751 ; LINUX-32-PIC-NEXT: .L143$pb:
11752 ; LINUX-32-PIC-NEXT: popl %ebx
11753 ; LINUX-32-PIC-NEXT: .Ltmp143:
11754 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx
11755 ; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %esi
11756 ; LINUX-32-PIC-NEXT: calll *(%esi)
11757 ; LINUX-32-PIC-NEXT: calll *(%esi)
11758 ; LINUX-32-PIC-NEXT: addl $4, %esp
11759 ; LINUX-32-PIC-NEXT: popl %esi
11760 ; LINUX-32-PIC-NEXT: popl %ebx
11761 ; LINUX-32-PIC-NEXT: retl
11763 ; LINUX-64-PIC-LABEL: dicaller:
11764 ; LINUX-64-PIC: # %bb.0: # %entry
11765 ; LINUX-64-PIC-NEXT: pushq %rbx
11766 ; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rbx
11767 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11768 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11769 ; LINUX-64-PIC-NEXT: popq %rbx
11770 ; LINUX-64-PIC-NEXT: retq
11772 ; DARWIN-32-STATIC-LABEL: dicaller:
11773 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11774 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11775 ; DARWIN-32-STATIC-NEXT: calll *_difunc
11776 ; DARWIN-32-STATIC-NEXT: calll *_difunc
11777 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11778 ; DARWIN-32-STATIC-NEXT: retl
11780 ; DARWIN-32-DYNAMIC-LABEL: dicaller:
11781 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11782 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11783 ; DARWIN-32-DYNAMIC-NEXT: calll *_difunc
11784 ; DARWIN-32-DYNAMIC-NEXT: calll *_difunc
11785 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11786 ; DARWIN-32-DYNAMIC-NEXT: retl
11788 ; DARWIN-32-PIC-LABEL: dicaller:
11789 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11790 ; DARWIN-32-PIC-NEXT: pushl %esi
11791 ; DARWIN-32-PIC-NEXT: subl $8, %esp
11792 ; DARWIN-32-PIC-NEXT: calll L143$pb
11793 ; DARWIN-32-PIC-NEXT: L143$pb:
11794 ; DARWIN-32-PIC-NEXT: popl %esi
11795 ; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi)
11796 ; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi)
11797 ; DARWIN-32-PIC-NEXT: addl $8, %esp
11798 ; DARWIN-32-PIC-NEXT: popl %esi
11799 ; DARWIN-32-PIC-NEXT: retl
11801 ; DARWIN-64-STATIC-LABEL: dicaller:
11802 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11803 ; DARWIN-64-STATIC-NEXT: pushq %rax
11804 ; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)
11805 ; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)
11806 ; DARWIN-64-STATIC-NEXT: popq %rax
11807 ; DARWIN-64-STATIC-NEXT: retq
11809 ; DARWIN-64-DYNAMIC-LABEL: dicaller:
11810 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11811 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11812 ; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)
11813 ; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)
11814 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11815 ; DARWIN-64-DYNAMIC-NEXT: retq
11817 ; DARWIN-64-PIC-LABEL: dicaller:
11818 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11819 ; DARWIN-64-PIC-NEXT: pushq %rax
11820 ; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)
11821 ; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)
11822 ; DARWIN-64-PIC-NEXT: popq %rax
11823 ; DARWIN-64-PIC-NEXT: retq
11826 %0 = load void ()*, void ()** @difunc, align 8
11827 call void %0() nounwind
11828 %1 = load void ()*, void ()** @difunc, align 8
11829 call void %1() nounwind
11833 define void @licaller() nounwind {
11834 ; LINUX-64-STATIC-LABEL: licaller:
11835 ; LINUX-64-STATIC: # %bb.0: # %entry
11836 ; LINUX-64-STATIC-NEXT: pushq %rax
11837 ; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)
11838 ; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)
11839 ; LINUX-64-STATIC-NEXT: popq %rax
11840 ; LINUX-64-STATIC-NEXT: retq
11842 ; LINUX-32-STATIC-LABEL: licaller:
11843 ; LINUX-32-STATIC: # %bb.0: # %entry
11844 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11845 ; LINUX-32-STATIC-NEXT: calll *lifunc
11846 ; LINUX-32-STATIC-NEXT: calll *lifunc
11847 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11848 ; LINUX-32-STATIC-NEXT: retl
11850 ; LINUX-32-PIC-LABEL: licaller:
11851 ; LINUX-32-PIC: # %bb.0: # %entry
11852 ; LINUX-32-PIC-NEXT: pushl %ebx
11853 ; LINUX-32-PIC-NEXT: subl $8, %esp
11854 ; LINUX-32-PIC-NEXT: calll .L144$pb
11855 ; LINUX-32-PIC-NEXT: .L144$pb:
11856 ; LINUX-32-PIC-NEXT: popl %ebx
11857 ; LINUX-32-PIC-NEXT: .Ltmp144:
11858 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx
11859 ; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)
11860 ; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)
11861 ; LINUX-32-PIC-NEXT: addl $8, %esp
11862 ; LINUX-32-PIC-NEXT: popl %ebx
11863 ; LINUX-32-PIC-NEXT: retl
11865 ; LINUX-64-PIC-LABEL: licaller:
11866 ; LINUX-64-PIC: # %bb.0: # %entry
11867 ; LINUX-64-PIC-NEXT: pushq %rax
11868 ; LINUX-64-PIC-NEXT: callq *lifunc(%rip)
11869 ; LINUX-64-PIC-NEXT: callq *lifunc(%rip)
11870 ; LINUX-64-PIC-NEXT: popq %rax
11871 ; LINUX-64-PIC-NEXT: retq
11873 ; DARWIN-32-STATIC-LABEL: licaller:
11874 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11875 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11876 ; DARWIN-32-STATIC-NEXT: calll *_lifunc
11877 ; DARWIN-32-STATIC-NEXT: calll *_lifunc
11878 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11879 ; DARWIN-32-STATIC-NEXT: retl
11881 ; DARWIN-32-DYNAMIC-LABEL: licaller:
11882 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11883 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
11884 ; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc
11885 ; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc
11886 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
11887 ; DARWIN-32-DYNAMIC-NEXT: retl
11889 ; DARWIN-32-PIC-LABEL: licaller:
11890 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11891 ; DARWIN-32-PIC-NEXT: pushl %esi
11892 ; DARWIN-32-PIC-NEXT: subl $8, %esp
11893 ; DARWIN-32-PIC-NEXT: calll L144$pb
11894 ; DARWIN-32-PIC-NEXT: L144$pb:
11895 ; DARWIN-32-PIC-NEXT: popl %esi
11896 ; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi)
11897 ; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi)
11898 ; DARWIN-32-PIC-NEXT: addl $8, %esp
11899 ; DARWIN-32-PIC-NEXT: popl %esi
11900 ; DARWIN-32-PIC-NEXT: retl
11902 ; DARWIN-64-STATIC-LABEL: licaller:
11903 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
11904 ; DARWIN-64-STATIC-NEXT: pushq %rax
11905 ; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)
11906 ; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)
11907 ; DARWIN-64-STATIC-NEXT: popq %rax
11908 ; DARWIN-64-STATIC-NEXT: retq
11910 ; DARWIN-64-DYNAMIC-LABEL: licaller:
11911 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
11912 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
11913 ; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)
11914 ; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)
11915 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
11916 ; DARWIN-64-DYNAMIC-NEXT: retq
11918 ; DARWIN-64-PIC-LABEL: licaller:
11919 ; DARWIN-64-PIC: ## %bb.0: ## %entry
11920 ; DARWIN-64-PIC-NEXT: pushq %rax
11921 ; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)
11922 ; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)
11923 ; DARWIN-64-PIC-NEXT: popq %rax
11924 ; DARWIN-64-PIC-NEXT: retq
11927 %0 = load void ()*, void ()** @lifunc, align 8
11928 call void %0() nounwind
11929 %1 = load void ()*, void ()** @lifunc, align 8
11930 call void %1() nounwind
11934 define void @itailcaller() nounwind {
11935 ; LINUX-64-STATIC-LABEL: itailcaller:
11936 ; LINUX-64-STATIC: # %bb.0: # %entry
11937 ; LINUX-64-STATIC-NEXT: pushq %rax
11938 ; LINUX-64-STATIC-NEXT: callq *ifunc(%rip)
11939 ; LINUX-64-STATIC-NEXT: callq *ifunc(%rip)
11940 ; LINUX-64-STATIC-NEXT: popq %rax
11941 ; LINUX-64-STATIC-NEXT: retq
11943 ; LINUX-32-STATIC-LABEL: itailcaller:
11944 ; LINUX-32-STATIC: # %bb.0: # %entry
11945 ; LINUX-32-STATIC-NEXT: subl $12, %esp
11946 ; LINUX-32-STATIC-NEXT: calll *ifunc
11947 ; LINUX-32-STATIC-NEXT: calll *ifunc
11948 ; LINUX-32-STATIC-NEXT: addl $12, %esp
11949 ; LINUX-32-STATIC-NEXT: retl
11951 ; LINUX-32-PIC-LABEL: itailcaller:
11952 ; LINUX-32-PIC: # %bb.0: # %entry
11953 ; LINUX-32-PIC-NEXT: pushl %ebx
11954 ; LINUX-32-PIC-NEXT: pushl %esi
11955 ; LINUX-32-PIC-NEXT: pushl %eax
11956 ; LINUX-32-PIC-NEXT: calll .L145$pb
11957 ; LINUX-32-PIC-NEXT: .L145$pb:
11958 ; LINUX-32-PIC-NEXT: popl %ebx
11959 ; LINUX-32-PIC-NEXT: .Ltmp145:
11960 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx
11961 ; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi
11962 ; LINUX-32-PIC-NEXT: calll *(%esi)
11963 ; LINUX-32-PIC-NEXT: calll *(%esi)
11964 ; LINUX-32-PIC-NEXT: addl $4, %esp
11965 ; LINUX-32-PIC-NEXT: popl %esi
11966 ; LINUX-32-PIC-NEXT: popl %ebx
11967 ; LINUX-32-PIC-NEXT: retl
11969 ; LINUX-64-PIC-LABEL: itailcaller:
11970 ; LINUX-64-PIC: # %bb.0: # %entry
11971 ; LINUX-64-PIC-NEXT: pushq %rbx
11972 ; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
11973 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11974 ; LINUX-64-PIC-NEXT: callq *(%rbx)
11975 ; LINUX-64-PIC-NEXT: popq %rbx
11976 ; LINUX-64-PIC-NEXT: retq
11978 ; DARWIN-32-STATIC-LABEL: itailcaller:
11979 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
11980 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
11981 ; DARWIN-32-STATIC-NEXT: calll *_ifunc
11982 ; DARWIN-32-STATIC-NEXT: calll *_ifunc
11983 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
11984 ; DARWIN-32-STATIC-NEXT: retl
11986 ; DARWIN-32-DYNAMIC-LABEL: itailcaller:
11987 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
11988 ; DARWIN-32-DYNAMIC-NEXT: pushl %esi
11989 ; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp
11990 ; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi
11991 ; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)
11992 ; DARWIN-32-DYNAMIC-NEXT: calll *(%esi)
11993 ; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp
11994 ; DARWIN-32-DYNAMIC-NEXT: popl %esi
11995 ; DARWIN-32-DYNAMIC-NEXT: retl
11997 ; DARWIN-32-PIC-LABEL: itailcaller:
11998 ; DARWIN-32-PIC: ## %bb.0: ## %entry
11999 ; DARWIN-32-PIC-NEXT: pushl %esi
12000 ; DARWIN-32-PIC-NEXT: subl $8, %esp
12001 ; DARWIN-32-PIC-NEXT: calll L145$pb
12002 ; DARWIN-32-PIC-NEXT: L145$pb:
12003 ; DARWIN-32-PIC-NEXT: popl %eax
12004 ; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi
12005 ; DARWIN-32-PIC-NEXT: calll *(%esi)
12006 ; DARWIN-32-PIC-NEXT: calll *(%esi)
12007 ; DARWIN-32-PIC-NEXT: addl $8, %esp
12008 ; DARWIN-32-PIC-NEXT: popl %esi
12009 ; DARWIN-32-PIC-NEXT: retl
12011 ; DARWIN-64-STATIC-LABEL: itailcaller:
12012 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
12013 ; DARWIN-64-STATIC-NEXT: pushq %rbx
12014 ; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
12015 ; DARWIN-64-STATIC-NEXT: callq *(%rbx)
12016 ; DARWIN-64-STATIC-NEXT: callq *(%rbx)
12017 ; DARWIN-64-STATIC-NEXT: popq %rbx
12018 ; DARWIN-64-STATIC-NEXT: retq
12020 ; DARWIN-64-DYNAMIC-LABEL: itailcaller:
12021 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
12022 ; DARWIN-64-DYNAMIC-NEXT: pushq %rbx
12023 ; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
12024 ; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
12025 ; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx)
12026 ; DARWIN-64-DYNAMIC-NEXT: popq %rbx
12027 ; DARWIN-64-DYNAMIC-NEXT: retq
12029 ; DARWIN-64-PIC-LABEL: itailcaller:
12030 ; DARWIN-64-PIC: ## %bb.0: ## %entry
12031 ; DARWIN-64-PIC-NEXT: pushq %rbx
12032 ; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
12033 ; DARWIN-64-PIC-NEXT: callq *(%rbx)
12034 ; DARWIN-64-PIC-NEXT: callq *(%rbx)
12035 ; DARWIN-64-PIC-NEXT: popq %rbx
12036 ; DARWIN-64-PIC-NEXT: retq
12039 %0 = load void ()*, void ()** @ifunc, align 8
12040 call void %0() nounwind
12041 %1 = load void ()*, void ()** @ifunc, align 8
12042 call void %1() nounwind
12046 define void @ditailcaller() nounwind {
12047 ; LINUX-64-STATIC-LABEL: ditailcaller:
12048 ; LINUX-64-STATIC: # %bb.0: # %entry
12049 ; LINUX-64-STATIC-NEXT: pushq %rax
12050 ; LINUX-64-STATIC-NEXT: callq *difunc(%rip)
12051 ; LINUX-64-STATIC-NEXT: popq %rax
12052 ; LINUX-64-STATIC-NEXT: retq
12054 ; LINUX-32-STATIC-LABEL: ditailcaller:
12055 ; LINUX-32-STATIC: # %bb.0: # %entry
12056 ; LINUX-32-STATIC-NEXT: subl $12, %esp
12057 ; LINUX-32-STATIC-NEXT: calll *difunc
12058 ; LINUX-32-STATIC-NEXT: addl $12, %esp
12059 ; LINUX-32-STATIC-NEXT: retl
12061 ; LINUX-32-PIC-LABEL: ditailcaller:
12062 ; LINUX-32-PIC: # %bb.0: # %entry
12063 ; LINUX-32-PIC-NEXT: pushl %ebx
12064 ; LINUX-32-PIC-NEXT: subl $8, %esp
12065 ; LINUX-32-PIC-NEXT: calll .L146$pb
12066 ; LINUX-32-PIC-NEXT: .L146$pb:
12067 ; LINUX-32-PIC-NEXT: popl %ebx
12068 ; LINUX-32-PIC-NEXT: .Ltmp146:
12069 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx
12070 ; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %eax
12071 ; LINUX-32-PIC-NEXT: calll *(%eax)
12072 ; LINUX-32-PIC-NEXT: addl $8, %esp
12073 ; LINUX-32-PIC-NEXT: popl %ebx
12074 ; LINUX-32-PIC-NEXT: retl
12076 ; LINUX-64-PIC-LABEL: ditailcaller:
12077 ; LINUX-64-PIC: # %bb.0: # %entry
12078 ; LINUX-64-PIC-NEXT: pushq %rax
12079 ; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rax
12080 ; LINUX-64-PIC-NEXT: callq *(%rax)
12081 ; LINUX-64-PIC-NEXT: popq %rax
12082 ; LINUX-64-PIC-NEXT: retq
12084 ; DARWIN-32-STATIC-LABEL: ditailcaller:
12085 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
12086 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
12087 ; DARWIN-32-STATIC-NEXT: calll *_difunc
12088 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
12089 ; DARWIN-32-STATIC-NEXT: retl
12091 ; DARWIN-32-DYNAMIC-LABEL: ditailcaller:
12092 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
12093 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
12094 ; DARWIN-32-DYNAMIC-NEXT: calll *_difunc
12095 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
12096 ; DARWIN-32-DYNAMIC-NEXT: retl
12098 ; DARWIN-32-PIC-LABEL: ditailcaller:
12099 ; DARWIN-32-PIC: ## %bb.0: ## %entry
12100 ; DARWIN-32-PIC-NEXT: subl $12, %esp
12101 ; DARWIN-32-PIC-NEXT: calll L146$pb
12102 ; DARWIN-32-PIC-NEXT: L146$pb:
12103 ; DARWIN-32-PIC-NEXT: popl %eax
12104 ; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax)
12105 ; DARWIN-32-PIC-NEXT: addl $12, %esp
12106 ; DARWIN-32-PIC-NEXT: retl
12108 ; DARWIN-64-STATIC-LABEL: ditailcaller:
12109 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
12110 ; DARWIN-64-STATIC-NEXT: pushq %rax
12111 ; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip)
12112 ; DARWIN-64-STATIC-NEXT: popq %rax
12113 ; DARWIN-64-STATIC-NEXT: retq
12115 ; DARWIN-64-DYNAMIC-LABEL: ditailcaller:
12116 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
12117 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
12118 ; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip)
12119 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
12120 ; DARWIN-64-DYNAMIC-NEXT: retq
12122 ; DARWIN-64-PIC-LABEL: ditailcaller:
12123 ; DARWIN-64-PIC: ## %bb.0: ## %entry
12124 ; DARWIN-64-PIC-NEXT: pushq %rax
12125 ; DARWIN-64-PIC-NEXT: callq *_difunc(%rip)
12126 ; DARWIN-64-PIC-NEXT: popq %rax
12127 ; DARWIN-64-PIC-NEXT: retq
12130 %0 = load void ()*, void ()** @difunc, align 8
12131 call void %0() nounwind
12135 define void @litailcaller() nounwind {
12136 ; LINUX-64-STATIC-LABEL: litailcaller:
12137 ; LINUX-64-STATIC: # %bb.0: # %entry
12138 ; LINUX-64-STATIC-NEXT: pushq %rax
12139 ; LINUX-64-STATIC-NEXT: callq *lifunc(%rip)
12140 ; LINUX-64-STATIC-NEXT: popq %rax
12141 ; LINUX-64-STATIC-NEXT: retq
12143 ; LINUX-32-STATIC-LABEL: litailcaller:
12144 ; LINUX-32-STATIC: # %bb.0: # %entry
12145 ; LINUX-32-STATIC-NEXT: subl $12, %esp
12146 ; LINUX-32-STATIC-NEXT: calll *lifunc
12147 ; LINUX-32-STATIC-NEXT: addl $12, %esp
12148 ; LINUX-32-STATIC-NEXT: retl
12150 ; LINUX-32-PIC-LABEL: litailcaller:
12151 ; LINUX-32-PIC: # %bb.0: # %entry
12152 ; LINUX-32-PIC-NEXT: pushl %ebx
12153 ; LINUX-32-PIC-NEXT: subl $8, %esp
12154 ; LINUX-32-PIC-NEXT: calll .L147$pb
12155 ; LINUX-32-PIC-NEXT: .L147$pb:
12156 ; LINUX-32-PIC-NEXT: popl %ebx
12157 ; LINUX-32-PIC-NEXT: .Ltmp147:
12158 ; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx
12159 ; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx)
12160 ; LINUX-32-PIC-NEXT: addl $8, %esp
12161 ; LINUX-32-PIC-NEXT: popl %ebx
12162 ; LINUX-32-PIC-NEXT: retl
12164 ; LINUX-64-PIC-LABEL: litailcaller:
12165 ; LINUX-64-PIC: # %bb.0: # %entry
12166 ; LINUX-64-PIC-NEXT: pushq %rax
12167 ; LINUX-64-PIC-NEXT: callq *lifunc(%rip)
12168 ; LINUX-64-PIC-NEXT: popq %rax
12169 ; LINUX-64-PIC-NEXT: retq
12171 ; DARWIN-32-STATIC-LABEL: litailcaller:
12172 ; DARWIN-32-STATIC: ## %bb.0: ## %entry
12173 ; DARWIN-32-STATIC-NEXT: subl $12, %esp
12174 ; DARWIN-32-STATIC-NEXT: calll *_lifunc
12175 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
12176 ; DARWIN-32-STATIC-NEXT: retl
12178 ; DARWIN-32-DYNAMIC-LABEL: litailcaller:
12179 ; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry
12180 ; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp
12181 ; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc
12182 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
12183 ; DARWIN-32-DYNAMIC-NEXT: retl
12185 ; DARWIN-32-PIC-LABEL: litailcaller:
12186 ; DARWIN-32-PIC: ## %bb.0: ## %entry
12187 ; DARWIN-32-PIC-NEXT: subl $12, %esp
12188 ; DARWIN-32-PIC-NEXT: calll L147$pb
12189 ; DARWIN-32-PIC-NEXT: L147$pb:
12190 ; DARWIN-32-PIC-NEXT: popl %eax
12191 ; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax)
12192 ; DARWIN-32-PIC-NEXT: addl $12, %esp
12193 ; DARWIN-32-PIC-NEXT: retl
12195 ; DARWIN-64-STATIC-LABEL: litailcaller:
12196 ; DARWIN-64-STATIC: ## %bb.0: ## %entry
12197 ; DARWIN-64-STATIC-NEXT: pushq %rax
12198 ; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip)
12199 ; DARWIN-64-STATIC-NEXT: popq %rax
12200 ; DARWIN-64-STATIC-NEXT: retq
12202 ; DARWIN-64-DYNAMIC-LABEL: litailcaller:
12203 ; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry
12204 ; DARWIN-64-DYNAMIC-NEXT: pushq %rax
12205 ; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip)
12206 ; DARWIN-64-DYNAMIC-NEXT: popq %rax
12207 ; DARWIN-64-DYNAMIC-NEXT: retq
12209 ; DARWIN-64-PIC-LABEL: litailcaller:
12210 ; DARWIN-64-PIC: ## %bb.0: ## %entry
12211 ; DARWIN-64-PIC-NEXT: pushq %rax
12212 ; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip)
12213 ; DARWIN-64-PIC-NEXT: popq %rax
12214 ; DARWIN-64-PIC-NEXT: retq
12217 %0 = load void ()*, void ()** @lifunc, align 8
12218 call void %0() nounwind