[RISCV] Add shrinkwrap test cases showing gaps in current impl
[llvm-project.git] / llvm / test / CodeGen / X86 / abi-isel.ll
blob9f0d89f20ceb405132d80318cf3de1f37d86aef0
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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 ptr
22 @dsrc = dso_local global [131072 x i32] zeroinitializer, align 32
23 @ddst = dso_local global [131072 x i32] zeroinitializer, align 32
24 @dptr = dso_local global ptr null
25 @lsrc = internal global [131072 x i32] zeroinitializer
26 @ldst = internal global [131072 x i32] zeroinitializer
27 @lptr = internal global ptr null
28 @ifunc = external global ptr
29 @difunc = dso_local global ptr null
30 @lifunc = internal global ptr null
31 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
32 @lxdst = internal global [32 x i32] zeroinitializer, align 32
33 @dxsrc = dso_local global [32 x i32] zeroinitializer, align 32
34 @dxdst = dso_local global [32 x i32] zeroinitializer, align 32
36 define dso_local void @foo00() nounwind {
37 ; LINUX-64-STATIC-LABEL: foo00:
38 ; LINUX-64-STATIC:       # %bb.0: # %entry
39 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
40 ; LINUX-64-STATIC-NEXT:    movl (%rax), %eax
41 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
42 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
43 ; LINUX-64-STATIC-NEXT:    retq
45 ; LINUX-32-STATIC-LABEL: foo00:
46 ; LINUX-32-STATIC:       # %bb.0: # %entry
47 ; LINUX-32-STATIC-NEXT:    movl src, %eax
48 ; LINUX-32-STATIC-NEXT:    movl %eax, dst
49 ; LINUX-32-STATIC-NEXT:    retl
51 ; LINUX-32-PIC-LABEL: foo00:
52 ; LINUX-32-PIC:       # %bb.0: # %entry
53 ; LINUX-32-PIC-NEXT:    calll .L0$pb
54 ; LINUX-32-PIC-NEXT:  .L0$pb:
55 ; LINUX-32-PIC-NEXT:    popl %eax
56 ; LINUX-32-PIC-NEXT:  .Ltmp0:
57 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax
58 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
59 ; LINUX-32-PIC-NEXT:    movl (%ecx), %ecx
60 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
61 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
62 ; LINUX-32-PIC-NEXT:    retl
64 ; LINUX-64-PIC-LABEL: foo00:
65 ; LINUX-64-PIC:       # %bb.0: # %entry
66 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
67 ; LINUX-64-PIC-NEXT:    movl (%rax), %eax
68 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
69 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
70 ; LINUX-64-PIC-NEXT:    retq
72 ; DARWIN-32-STATIC-LABEL: foo00:
73 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
74 ; DARWIN-32-STATIC-NEXT:    movl _src, %eax
75 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dst
76 ; DARWIN-32-STATIC-NEXT:    retl
78 ; DARWIN-32-DYNAMIC-LABEL: foo00:
79 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
80 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
81 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
82 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
83 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
84 ; DARWIN-32-DYNAMIC-NEXT:    retl
86 ; DARWIN-32-PIC-LABEL: foo00:
87 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
88 ; DARWIN-32-PIC-NEXT:    calll L0$pb
89 ; DARWIN-32-PIC-NEXT:  L0$pb:
90 ; DARWIN-32-PIC-NEXT:    popl %eax
91 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx
92 ; DARWIN-32-PIC-NEXT:    movl (%ecx), %ecx
93 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax
94 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
95 ; DARWIN-32-PIC-NEXT:    retl
97 ; DARWIN-64-STATIC-LABEL: foo00:
98 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
99 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
100 ; DARWIN-64-STATIC-NEXT:    movl (%rax), %eax
101 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
102 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
103 ; DARWIN-64-STATIC-NEXT:    retq
105 ; DARWIN-64-DYNAMIC-LABEL: foo00:
106 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
107 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
108 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax), %eax
109 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
110 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
111 ; DARWIN-64-DYNAMIC-NEXT:    retq
113 ; DARWIN-64-PIC-LABEL: foo00:
114 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
115 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
116 ; DARWIN-64-PIC-NEXT:    movl (%rax), %eax
117 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
118 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
119 ; DARWIN-64-PIC-NEXT:    retq
121 entry:
122         %0 = load i32, ptr @src, align 4
123         store i32 %0, ptr @dst, align 4
124         ret void
128 define dso_local void @fxo00() nounwind {
129 ; LINUX-64-STATIC-LABEL: fxo00:
130 ; LINUX-64-STATIC:       # %bb.0: # %entry
131 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
132 ; LINUX-64-STATIC-NEXT:    movl (%rax), %eax
133 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
134 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
135 ; LINUX-64-STATIC-NEXT:    retq
137 ; LINUX-32-STATIC-LABEL: fxo00:
138 ; LINUX-32-STATIC:       # %bb.0: # %entry
139 ; LINUX-32-STATIC-NEXT:    movl xsrc, %eax
140 ; LINUX-32-STATIC-NEXT:    movl %eax, xdst
141 ; LINUX-32-STATIC-NEXT:    retl
143 ; LINUX-32-PIC-LABEL: fxo00:
144 ; LINUX-32-PIC:       # %bb.0: # %entry
145 ; LINUX-32-PIC-NEXT:    calll .L1$pb
146 ; LINUX-32-PIC-NEXT:  .L1$pb:
147 ; LINUX-32-PIC-NEXT:    popl %eax
148 ; LINUX-32-PIC-NEXT:  .Ltmp1:
149 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax
150 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %ecx
151 ; LINUX-32-PIC-NEXT:    movl (%ecx), %ecx
152 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
153 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
154 ; LINUX-32-PIC-NEXT:    retl
156 ; LINUX-64-PIC-LABEL: fxo00:
157 ; LINUX-64-PIC:       # %bb.0: # %entry
158 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
159 ; LINUX-64-PIC-NEXT:    movl (%rax), %eax
160 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
161 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
162 ; LINUX-64-PIC-NEXT:    retq
164 ; DARWIN-32-STATIC-LABEL: fxo00:
165 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
166 ; DARWIN-32-STATIC-NEXT:    movl _xsrc, %eax
167 ; DARWIN-32-STATIC-NEXT:    movl %eax, _xdst
168 ; DARWIN-32-STATIC-NEXT:    retl
170 ; DARWIN-32-DYNAMIC-LABEL: fxo00:
171 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
172 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
173 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
174 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %ecx
175 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
176 ; DARWIN-32-DYNAMIC-NEXT:    retl
178 ; DARWIN-32-PIC-LABEL: fxo00:
179 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
180 ; DARWIN-32-PIC-NEXT:    calll L1$pb
181 ; DARWIN-32-PIC-NEXT:  L1$pb:
182 ; DARWIN-32-PIC-NEXT:    popl %eax
183 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx
184 ; DARWIN-32-PIC-NEXT:    movl (%ecx), %ecx
185 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax
186 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
187 ; DARWIN-32-PIC-NEXT:    retl
189 ; DARWIN-64-STATIC-LABEL: fxo00:
190 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
191 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
192 ; DARWIN-64-STATIC-NEXT:    movl (%rax), %eax
193 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
194 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
195 ; DARWIN-64-STATIC-NEXT:    retq
197 ; DARWIN-64-DYNAMIC-LABEL: fxo00:
198 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
199 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
200 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax), %eax
201 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
202 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
203 ; DARWIN-64-DYNAMIC-NEXT:    retq
205 ; DARWIN-64-PIC-LABEL: fxo00:
206 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
207 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
208 ; DARWIN-64-PIC-NEXT:    movl (%rax), %eax
209 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
210 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
211 ; DARWIN-64-PIC-NEXT:    retq
213 entry:
214         %0 = load i32, ptr @xsrc, align 4
215         store i32 %0, ptr @xdst, align 4
216         ret void
220 define dso_local void @foo01() nounwind {
221 ; LINUX-64-STATIC-LABEL: foo01:
222 ; LINUX-64-STATIC:       # %bb.0: # %entry
223 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
224 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
225 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
226 ; LINUX-64-STATIC-NEXT:    retq
228 ; LINUX-32-STATIC-LABEL: foo01:
229 ; LINUX-32-STATIC:       # %bb.0: # %entry
230 ; LINUX-32-STATIC-NEXT:    movl $dst, ptr
231 ; LINUX-32-STATIC-NEXT:    retl
233 ; LINUX-32-PIC-LABEL: foo01:
234 ; LINUX-32-PIC:       # %bb.0: # %entry
235 ; LINUX-32-PIC-NEXT:    calll .L2$pb
236 ; LINUX-32-PIC-NEXT:  .L2$pb:
237 ; LINUX-32-PIC-NEXT:    popl %eax
238 ; LINUX-32-PIC-NEXT:  .Ltmp2:
239 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax
240 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %ecx
241 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
242 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
243 ; LINUX-32-PIC-NEXT:    retl
245 ; LINUX-64-PIC-LABEL: foo01:
246 ; LINUX-64-PIC:       # %bb.0: # %entry
247 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
248 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
249 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
250 ; LINUX-64-PIC-NEXT:    retq
252 ; DARWIN-32-STATIC-LABEL: foo01:
253 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
254 ; DARWIN-32-STATIC-NEXT:    movl $_dst, _ptr
255 ; DARWIN-32-STATIC-NEXT:    retl
257 ; DARWIN-32-DYNAMIC-LABEL: foo01:
258 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
259 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %eax
260 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
261 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
262 ; DARWIN-32-DYNAMIC-NEXT:    retl
264 ; DARWIN-32-PIC-LABEL: foo01:
265 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
266 ; DARWIN-32-PIC-NEXT:    calll L2$pb
267 ; DARWIN-32-PIC-NEXT:  L2$pb:
268 ; DARWIN-32-PIC-NEXT:    popl %eax
269 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx
270 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax
271 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
272 ; DARWIN-32-PIC-NEXT:    retl
274 ; DARWIN-64-STATIC-LABEL: foo01:
275 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
276 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
277 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
278 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
279 ; DARWIN-64-STATIC-NEXT:    retq
281 ; DARWIN-64-DYNAMIC-LABEL: foo01:
282 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
283 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
284 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
285 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
286 ; DARWIN-64-DYNAMIC-NEXT:    retq
288 ; DARWIN-64-PIC-LABEL: foo01:
289 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
290 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
291 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
292 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
293 ; DARWIN-64-PIC-NEXT:    retq
295 entry:
296         store ptr @dst, ptr @ptr, align 8
297         ret void
300 define dso_local void @fxo01() nounwind {
301 ; LINUX-64-STATIC-LABEL: fxo01:
302 ; LINUX-64-STATIC:       # %bb.0: # %entry
303 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
304 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
305 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
306 ; LINUX-64-STATIC-NEXT:    retq
308 ; LINUX-32-STATIC-LABEL: fxo01:
309 ; LINUX-32-STATIC:       # %bb.0: # %entry
310 ; LINUX-32-STATIC-NEXT:    movl $xdst, ptr
311 ; LINUX-32-STATIC-NEXT:    retl
313 ; LINUX-32-PIC-LABEL: fxo01:
314 ; LINUX-32-PIC:       # %bb.0: # %entry
315 ; LINUX-32-PIC-NEXT:    calll .L3$pb
316 ; LINUX-32-PIC-NEXT:  .L3$pb:
317 ; LINUX-32-PIC-NEXT:    popl %eax
318 ; LINUX-32-PIC-NEXT:  .Ltmp3:
319 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax
320 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %ecx
321 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
322 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
323 ; LINUX-32-PIC-NEXT:    retl
325 ; LINUX-64-PIC-LABEL: fxo01:
326 ; LINUX-64-PIC:       # %bb.0: # %entry
327 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
328 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
329 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
330 ; LINUX-64-PIC-NEXT:    retq
332 ; DARWIN-32-STATIC-LABEL: fxo01:
333 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
334 ; DARWIN-32-STATIC-NEXT:    movl $_xdst, _ptr
335 ; DARWIN-32-STATIC-NEXT:    retl
337 ; DARWIN-32-DYNAMIC-LABEL: fxo01:
338 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
339 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %eax
340 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
341 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
342 ; DARWIN-32-DYNAMIC-NEXT:    retl
344 ; DARWIN-32-PIC-LABEL: fxo01:
345 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
346 ; DARWIN-32-PIC-NEXT:    calll L3$pb
347 ; DARWIN-32-PIC-NEXT:  L3$pb:
348 ; DARWIN-32-PIC-NEXT:    popl %eax
349 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx
350 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax
351 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
352 ; DARWIN-32-PIC-NEXT:    retl
354 ; DARWIN-64-STATIC-LABEL: fxo01:
355 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
356 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
357 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
358 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
359 ; DARWIN-64-STATIC-NEXT:    retq
361 ; DARWIN-64-DYNAMIC-LABEL: fxo01:
362 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
363 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
364 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
365 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
366 ; DARWIN-64-DYNAMIC-NEXT:    retq
368 ; DARWIN-64-PIC-LABEL: fxo01:
369 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
370 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
371 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
372 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
373 ; DARWIN-64-PIC-NEXT:    retq
375 entry:
376         store ptr @xdst, ptr @ptr, align 8
377         ret void
380 define dso_local void @foo02() nounwind {
381 ; LINUX-64-STATIC-LABEL: foo02:
382 ; LINUX-64-STATIC:       # %bb.0: # %entry
383 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
384 ; LINUX-64-STATIC-NEXT:    movl (%rax), %eax
385 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
386 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
387 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
388 ; LINUX-64-STATIC-NEXT:    retq
390 ; LINUX-32-STATIC-LABEL: foo02:
391 ; LINUX-32-STATIC:       # %bb.0: # %entry
392 ; LINUX-32-STATIC-NEXT:    movl src, %eax
393 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
394 ; LINUX-32-STATIC-NEXT:    movl %eax, (%ecx)
395 ; LINUX-32-STATIC-NEXT:    retl
397 ; LINUX-32-PIC-LABEL: foo02:
398 ; LINUX-32-PIC:       # %bb.0: # %entry
399 ; LINUX-32-PIC-NEXT:    calll .L4$pb
400 ; LINUX-32-PIC-NEXT:  .L4$pb:
401 ; LINUX-32-PIC-NEXT:    popl %eax
402 ; LINUX-32-PIC-NEXT:  .Ltmp4:
403 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax
404 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
405 ; LINUX-32-PIC-NEXT:    movl (%ecx), %ecx
406 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
407 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
408 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
409 ; LINUX-32-PIC-NEXT:    retl
411 ; LINUX-64-PIC-LABEL: foo02:
412 ; LINUX-64-PIC:       # %bb.0: # %entry
413 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
414 ; LINUX-64-PIC-NEXT:    movl (%rax), %eax
415 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
416 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
417 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
418 ; LINUX-64-PIC-NEXT:    retq
420 ; DARWIN-32-STATIC-LABEL: foo02:
421 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
422 ; DARWIN-32-STATIC-NEXT:    movl _src, %eax
423 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
424 ; DARWIN-32-STATIC-NEXT:    movl %eax, (%ecx)
425 ; DARWIN-32-STATIC-NEXT:    retl
427 ; DARWIN-32-DYNAMIC-LABEL: foo02:
428 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
429 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
430 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
431 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
432 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx), %ecx
433 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
434 ; DARWIN-32-DYNAMIC-NEXT:    retl
436 ; DARWIN-32-PIC-LABEL: foo02:
437 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
438 ; DARWIN-32-PIC-NEXT:    calll L4$pb
439 ; DARWIN-32-PIC-NEXT:  L4$pb:
440 ; DARWIN-32-PIC-NEXT:    popl %eax
441 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx
442 ; DARWIN-32-PIC-NEXT:    movl (%ecx), %ecx
443 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax
444 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
445 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
446 ; DARWIN-32-PIC-NEXT:    retl
448 ; DARWIN-64-STATIC-LABEL: foo02:
449 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
450 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
451 ; DARWIN-64-STATIC-NEXT:    movl (%rax), %eax
452 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
453 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
454 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
455 ; DARWIN-64-STATIC-NEXT:    retq
457 ; DARWIN-64-DYNAMIC-LABEL: foo02:
458 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
459 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
460 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax), %eax
461 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
462 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
463 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
464 ; DARWIN-64-DYNAMIC-NEXT:    retq
466 ; DARWIN-64-PIC-LABEL: foo02:
467 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
468 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
469 ; DARWIN-64-PIC-NEXT:    movl (%rax), %eax
470 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
471 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
472 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
473 ; DARWIN-64-PIC-NEXT:    retq
475 entry:
476         %0 = load ptr, ptr @ptr, align 8
477         %1 = load i32, ptr @src, align 4
478         store i32 %1, ptr %0, align 4
479         ret void
482 define dso_local void @fxo02() nounwind {
483 ; LINUX-64-STATIC-LABEL: fxo02:
484 ; LINUX-64-STATIC:       # %bb.0: # %entry
485 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
486 ; LINUX-64-STATIC-NEXT:    movl (%rax), %eax
487 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
488 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
489 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
490 ; LINUX-64-STATIC-NEXT:    retq
492 ; LINUX-32-STATIC-LABEL: fxo02:
493 ; LINUX-32-STATIC:       # %bb.0: # %entry
494 ; LINUX-32-STATIC-NEXT:    movl xsrc, %eax
495 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
496 ; LINUX-32-STATIC-NEXT:    movl %eax, (%ecx)
497 ; LINUX-32-STATIC-NEXT:    retl
499 ; LINUX-32-PIC-LABEL: fxo02:
500 ; LINUX-32-PIC:       # %bb.0: # %entry
501 ; LINUX-32-PIC-NEXT:    calll .L5$pb
502 ; LINUX-32-PIC-NEXT:  .L5$pb:
503 ; LINUX-32-PIC-NEXT:    popl %eax
504 ; LINUX-32-PIC-NEXT:  .Ltmp5:
505 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax
506 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %ecx
507 ; LINUX-32-PIC-NEXT:    movl (%ecx), %ecx
508 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
509 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
510 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
511 ; LINUX-32-PIC-NEXT:    retl
513 ; LINUX-64-PIC-LABEL: fxo02:
514 ; LINUX-64-PIC:       # %bb.0: # %entry
515 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
516 ; LINUX-64-PIC-NEXT:    movl (%rax), %eax
517 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
518 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
519 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
520 ; LINUX-64-PIC-NEXT:    retq
522 ; DARWIN-32-STATIC-LABEL: fxo02:
523 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
524 ; DARWIN-32-STATIC-NEXT:    movl _xsrc, %eax
525 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
526 ; DARWIN-32-STATIC-NEXT:    movl %eax, (%ecx)
527 ; DARWIN-32-STATIC-NEXT:    retl
529 ; DARWIN-32-DYNAMIC-LABEL: fxo02:
530 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
531 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
532 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
533 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
534 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx), %ecx
535 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
536 ; DARWIN-32-DYNAMIC-NEXT:    retl
538 ; DARWIN-32-PIC-LABEL: fxo02:
539 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
540 ; DARWIN-32-PIC-NEXT:    calll L5$pb
541 ; DARWIN-32-PIC-NEXT:  L5$pb:
542 ; DARWIN-32-PIC-NEXT:    popl %eax
543 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx
544 ; DARWIN-32-PIC-NEXT:    movl (%ecx), %ecx
545 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax
546 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
547 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
548 ; DARWIN-32-PIC-NEXT:    retl
550 ; DARWIN-64-STATIC-LABEL: fxo02:
551 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
552 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
553 ; DARWIN-64-STATIC-NEXT:    movl (%rax), %eax
554 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
555 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
556 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
557 ; DARWIN-64-STATIC-NEXT:    retq
559 ; DARWIN-64-DYNAMIC-LABEL: fxo02:
560 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
561 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
562 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax), %eax
563 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
564 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
565 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
566 ; DARWIN-64-DYNAMIC-NEXT:    retq
568 ; DARWIN-64-PIC-LABEL: fxo02:
569 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
570 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
571 ; DARWIN-64-PIC-NEXT:    movl (%rax), %eax
572 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
573 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
574 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
575 ; DARWIN-64-PIC-NEXT:    retq
577 entry:
578         %0 = load ptr, ptr @ptr, align 8
579         %1 = load i32, ptr @xsrc, align 4
580         store i32 %1, ptr %0, align 4
581         ret void
584 define dso_local void @foo03() nounwind {
585 ; LINUX-64-STATIC-LABEL: foo03:
586 ; LINUX-64-STATIC:       # %bb.0: # %entry
587 ; LINUX-64-STATIC-NEXT:    movl dsrc(%rip), %eax
588 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst(%rip)
589 ; LINUX-64-STATIC-NEXT:    retq
591 ; LINUX-32-STATIC-LABEL: foo03:
592 ; LINUX-32-STATIC:       # %bb.0: # %entry
593 ; LINUX-32-STATIC-NEXT:    movl dsrc, %eax
594 ; LINUX-32-STATIC-NEXT:    movl %eax, ddst
595 ; LINUX-32-STATIC-NEXT:    retl
597 ; LINUX-32-PIC-LABEL: foo03:
598 ; LINUX-32-PIC:       # %bb.0: # %entry
599 ; LINUX-32-PIC-NEXT:    calll .L6$pb
600 ; LINUX-32-PIC-NEXT:  .L6$pb:
601 ; LINUX-32-PIC-NEXT:    popl %eax
602 ; LINUX-32-PIC-NEXT:  .Ltmp6:
603 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax
604 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF(%eax), %ecx
605 ; LINUX-32-PIC-NEXT:    movl %ecx, .Lddst$local@GOTOFF(%eax)
606 ; LINUX-32-PIC-NEXT:    retl
608 ; LINUX-64-PIC-LABEL: foo03:
609 ; LINUX-64-PIC:       # %bb.0: # %entry
610 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local(%rip), %eax
611 ; LINUX-64-PIC-NEXT:    movl %eax, .Lddst$local(%rip)
612 ; LINUX-64-PIC-NEXT:    retq
614 ; DARWIN-32-STATIC-LABEL: foo03:
615 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
616 ; DARWIN-32-STATIC-NEXT:    movl _dsrc, %eax
617 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ddst
618 ; DARWIN-32-STATIC-NEXT:    retl
620 ; DARWIN-32-DYNAMIC-LABEL: foo03:
621 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
622 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc, %eax
623 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ddst
624 ; DARWIN-32-DYNAMIC-NEXT:    retl
626 ; DARWIN-32-PIC-LABEL: foo03:
627 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
628 ; DARWIN-32-PIC-NEXT:    calll L6$pb
629 ; DARWIN-32-PIC-NEXT:  L6$pb:
630 ; DARWIN-32-PIC-NEXT:    popl %eax
631 ; DARWIN-32-PIC-NEXT:    movl _dsrc-L6$pb(%eax), %ecx
632 ; DARWIN-32-PIC-NEXT:    movl %ecx, _ddst-L6$pb(%eax)
633 ; DARWIN-32-PIC-NEXT:    retl
635 ; DARWIN-64-STATIC-LABEL: foo03:
636 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
637 ; DARWIN-64-STATIC-NEXT:    movl _dsrc(%rip), %eax
638 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ddst(%rip)
639 ; DARWIN-64-STATIC-NEXT:    retq
641 ; DARWIN-64-DYNAMIC-LABEL: foo03:
642 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
643 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc(%rip), %eax
644 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ddst(%rip)
645 ; DARWIN-64-DYNAMIC-NEXT:    retq
647 ; DARWIN-64-PIC-LABEL: foo03:
648 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
649 ; DARWIN-64-PIC-NEXT:    movl _dsrc(%rip), %eax
650 ; DARWIN-64-PIC-NEXT:    movl %eax, _ddst(%rip)
651 ; DARWIN-64-PIC-NEXT:    retq
653 entry:
654         %0 = load i32, ptr @dsrc, align 32
655         store i32 %0, ptr @ddst, align 32
656         ret void
659 define dso_local void @foo04() nounwind {
660 ; LINUX-64-STATIC-LABEL: foo04:
661 ; LINUX-64-STATIC:       # %bb.0: # %entry
662 ; LINUX-64-STATIC-NEXT:    movq $ddst, dptr(%rip)
663 ; LINUX-64-STATIC-NEXT:    retq
665 ; LINUX-32-STATIC-LABEL: foo04:
666 ; LINUX-32-STATIC:       # %bb.0: # %entry
667 ; LINUX-32-STATIC-NEXT:    movl $ddst, dptr
668 ; LINUX-32-STATIC-NEXT:    retl
670 ; LINUX-32-PIC-LABEL: foo04:
671 ; LINUX-32-PIC:       # %bb.0: # %entry
672 ; LINUX-32-PIC-NEXT:    calll .L7$pb
673 ; LINUX-32-PIC-NEXT:  .L7$pb:
674 ; LINUX-32-PIC-NEXT:    popl %eax
675 ; LINUX-32-PIC-NEXT:  .Ltmp7:
676 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax
677 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF(%eax), %ecx
678 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
679 ; LINUX-32-PIC-NEXT:    retl
681 ; LINUX-64-PIC-LABEL: foo04:
682 ; LINUX-64-PIC:       # %bb.0: # %entry
683 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
684 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
685 ; LINUX-64-PIC-NEXT:    retq
687 ; DARWIN-32-STATIC-LABEL: foo04:
688 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
689 ; DARWIN-32-STATIC-NEXT:    movl $_ddst, _dptr
690 ; DARWIN-32-STATIC-NEXT:    retl
692 ; DARWIN-32-DYNAMIC-LABEL: foo04:
693 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
694 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst, _dptr
695 ; DARWIN-32-DYNAMIC-NEXT:    retl
697 ; DARWIN-32-PIC-LABEL: foo04:
698 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
699 ; DARWIN-32-PIC-NEXT:    calll L7$pb
700 ; DARWIN-32-PIC-NEXT:  L7$pb:
701 ; DARWIN-32-PIC-NEXT:    popl %eax
702 ; DARWIN-32-PIC-NEXT:    leal _ddst-L7$pb(%eax), %ecx
703 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L7$pb(%eax)
704 ; DARWIN-32-PIC-NEXT:    retl
706 ; DARWIN-64-STATIC-LABEL: foo04:
707 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
708 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
709 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
710 ; DARWIN-64-STATIC-NEXT:    retq
712 ; DARWIN-64-DYNAMIC-LABEL: foo04:
713 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
714 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
715 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
716 ; DARWIN-64-DYNAMIC-NEXT:    retq
718 ; DARWIN-64-PIC-LABEL: foo04:
719 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
720 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
721 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
722 ; DARWIN-64-PIC-NEXT:    retq
724 entry:
725         store ptr @ddst, ptr @dptr, align 8
726         ret void
729 define dso_local void @foo05() nounwind {
730 ; LINUX-64-STATIC-LABEL: foo05:
731 ; LINUX-64-STATIC:       # %bb.0: # %entry
732 ; LINUX-64-STATIC-NEXT:    movl dsrc(%rip), %eax
733 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
734 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
735 ; LINUX-64-STATIC-NEXT:    retq
737 ; LINUX-32-STATIC-LABEL: foo05:
738 ; LINUX-32-STATIC:       # %bb.0: # %entry
739 ; LINUX-32-STATIC-NEXT:    movl dsrc, %eax
740 ; LINUX-32-STATIC-NEXT:    movl dptr, %ecx
741 ; LINUX-32-STATIC-NEXT:    movl %eax, (%ecx)
742 ; LINUX-32-STATIC-NEXT:    retl
744 ; LINUX-32-PIC-LABEL: foo05:
745 ; LINUX-32-PIC:       # %bb.0: # %entry
746 ; LINUX-32-PIC-NEXT:    calll .L8$pb
747 ; LINUX-32-PIC-NEXT:  .L8$pb:
748 ; LINUX-32-PIC-NEXT:    popl %eax
749 ; LINUX-32-PIC-NEXT:  .Ltmp8:
750 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax
751 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF(%eax), %ecx
752 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
753 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
754 ; LINUX-32-PIC-NEXT:    retl
756 ; LINUX-64-PIC-LABEL: foo05:
757 ; LINUX-64-PIC:       # %bb.0: # %entry
758 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local(%rip), %eax
759 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
760 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
761 ; LINUX-64-PIC-NEXT:    retq
763 ; DARWIN-32-STATIC-LABEL: foo05:
764 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
765 ; DARWIN-32-STATIC-NEXT:    movl _dsrc, %eax
766 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %ecx
767 ; DARWIN-32-STATIC-NEXT:    movl %eax, (%ecx)
768 ; DARWIN-32-STATIC-NEXT:    retl
770 ; DARWIN-32-DYNAMIC-LABEL: foo05:
771 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
772 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc, %eax
773 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %ecx
774 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
775 ; DARWIN-32-DYNAMIC-NEXT:    retl
777 ; DARWIN-32-PIC-LABEL: foo05:
778 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
779 ; DARWIN-32-PIC-NEXT:    calll L8$pb
780 ; DARWIN-32-PIC-NEXT:  L8$pb:
781 ; DARWIN-32-PIC-NEXT:    popl %eax
782 ; DARWIN-32-PIC-NEXT:    movl _dsrc-L8$pb(%eax), %ecx
783 ; DARWIN-32-PIC-NEXT:    movl _dptr-L8$pb(%eax), %eax
784 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
785 ; DARWIN-32-PIC-NEXT:    retl
787 ; DARWIN-64-STATIC-LABEL: foo05:
788 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
789 ; DARWIN-64-STATIC-NEXT:    movl _dsrc(%rip), %eax
790 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
791 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
792 ; DARWIN-64-STATIC-NEXT:    retq
794 ; DARWIN-64-DYNAMIC-LABEL: foo05:
795 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
796 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc(%rip), %eax
797 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
798 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
799 ; DARWIN-64-DYNAMIC-NEXT:    retq
801 ; DARWIN-64-PIC-LABEL: foo05:
802 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
803 ; DARWIN-64-PIC-NEXT:    movl _dsrc(%rip), %eax
804 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
805 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
806 ; DARWIN-64-PIC-NEXT:    retq
808 entry:
809         %0 = load ptr, ptr @dptr, align 8
810         %1 = load i32, ptr @dsrc, align 32
811         store i32 %1, ptr %0, align 4
812         ret void
815 define dso_local void @foo06() nounwind {
816 ; LINUX-64-STATIC-LABEL: foo06:
817 ; LINUX-64-STATIC:       # %bb.0: # %entry
818 ; LINUX-64-STATIC-NEXT:    movl lsrc(%rip), %eax
819 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst(%rip)
820 ; LINUX-64-STATIC-NEXT:    retq
822 ; LINUX-32-STATIC-LABEL: foo06:
823 ; LINUX-32-STATIC:       # %bb.0: # %entry
824 ; LINUX-32-STATIC-NEXT:    movl lsrc, %eax
825 ; LINUX-32-STATIC-NEXT:    movl %eax, ldst
826 ; LINUX-32-STATIC-NEXT:    retl
828 ; LINUX-32-PIC-LABEL: foo06:
829 ; LINUX-32-PIC:       # %bb.0: # %entry
830 ; LINUX-32-PIC-NEXT:    calll .L9$pb
831 ; LINUX-32-PIC-NEXT:  .L9$pb:
832 ; LINUX-32-PIC-NEXT:    popl %eax
833 ; LINUX-32-PIC-NEXT:  .Ltmp9:
834 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax
835 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF(%eax), %ecx
836 ; LINUX-32-PIC-NEXT:    movl %ecx, ldst@GOTOFF(%eax)
837 ; LINUX-32-PIC-NEXT:    retl
839 ; LINUX-64-PIC-LABEL: foo06:
840 ; LINUX-64-PIC:       # %bb.0: # %entry
841 ; LINUX-64-PIC-NEXT:    movl lsrc(%rip), %eax
842 ; LINUX-64-PIC-NEXT:    movl %eax, ldst(%rip)
843 ; LINUX-64-PIC-NEXT:    retq
845 ; DARWIN-32-STATIC-LABEL: foo06:
846 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
847 ; DARWIN-32-STATIC-NEXT:    movl _lsrc, %eax
848 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ldst
849 ; DARWIN-32-STATIC-NEXT:    retl
851 ; DARWIN-32-DYNAMIC-LABEL: foo06:
852 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
853 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc, %eax
854 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ldst
855 ; DARWIN-32-DYNAMIC-NEXT:    retl
857 ; DARWIN-32-PIC-LABEL: foo06:
858 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
859 ; DARWIN-32-PIC-NEXT:    calll L9$pb
860 ; DARWIN-32-PIC-NEXT:  L9$pb:
861 ; DARWIN-32-PIC-NEXT:    popl %eax
862 ; DARWIN-32-PIC-NEXT:    movl _lsrc-L9$pb(%eax), %ecx
863 ; DARWIN-32-PIC-NEXT:    movl %ecx, _ldst-L9$pb(%eax)
864 ; DARWIN-32-PIC-NEXT:    retl
866 ; DARWIN-64-STATIC-LABEL: foo06:
867 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
868 ; DARWIN-64-STATIC-NEXT:    movl _lsrc(%rip), %eax
869 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ldst(%rip)
870 ; DARWIN-64-STATIC-NEXT:    retq
872 ; DARWIN-64-DYNAMIC-LABEL: foo06:
873 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
874 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc(%rip), %eax
875 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ldst(%rip)
876 ; DARWIN-64-DYNAMIC-NEXT:    retq
878 ; DARWIN-64-PIC-LABEL: foo06:
879 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
880 ; DARWIN-64-PIC-NEXT:    movl _lsrc(%rip), %eax
881 ; DARWIN-64-PIC-NEXT:    movl %eax, _ldst(%rip)
882 ; DARWIN-64-PIC-NEXT:    retq
884 entry:
885         %0 = load i32, ptr @lsrc, align 4
886         store i32 %0, ptr @ldst, align 4
887         ret void
890 define dso_local void @foo07() nounwind {
891 ; LINUX-64-STATIC-LABEL: foo07:
892 ; LINUX-64-STATIC:       # %bb.0: # %entry
893 ; LINUX-64-STATIC-NEXT:    movq $ldst, lptr(%rip)
894 ; LINUX-64-STATIC-NEXT:    retq
896 ; LINUX-32-STATIC-LABEL: foo07:
897 ; LINUX-32-STATIC:       # %bb.0: # %entry
898 ; LINUX-32-STATIC-NEXT:    movl $ldst, lptr
899 ; LINUX-32-STATIC-NEXT:    retl
901 ; LINUX-32-PIC-LABEL: foo07:
902 ; LINUX-32-PIC:       # %bb.0: # %entry
903 ; LINUX-32-PIC-NEXT:    calll .L10$pb
904 ; LINUX-32-PIC-NEXT:  .L10$pb:
905 ; LINUX-32-PIC-NEXT:    popl %eax
906 ; LINUX-32-PIC-NEXT:  .Ltmp10:
907 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax
908 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF(%eax), %ecx
909 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
910 ; LINUX-32-PIC-NEXT:    retl
912 ; LINUX-64-PIC-LABEL: foo07:
913 ; LINUX-64-PIC:       # %bb.0: # %entry
914 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
915 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
916 ; LINUX-64-PIC-NEXT:    retq
918 ; DARWIN-32-STATIC-LABEL: foo07:
919 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
920 ; DARWIN-32-STATIC-NEXT:    movl $_ldst, _lptr
921 ; DARWIN-32-STATIC-NEXT:    retl
923 ; DARWIN-32-DYNAMIC-LABEL: foo07:
924 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
925 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst, _lptr
926 ; DARWIN-32-DYNAMIC-NEXT:    retl
928 ; DARWIN-32-PIC-LABEL: foo07:
929 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
930 ; DARWIN-32-PIC-NEXT:    calll L10$pb
931 ; DARWIN-32-PIC-NEXT:  L10$pb:
932 ; DARWIN-32-PIC-NEXT:    popl %eax
933 ; DARWIN-32-PIC-NEXT:    leal _ldst-L10$pb(%eax), %ecx
934 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L10$pb(%eax)
935 ; DARWIN-32-PIC-NEXT:    retl
937 ; DARWIN-64-STATIC-LABEL: foo07:
938 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
939 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
940 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
941 ; DARWIN-64-STATIC-NEXT:    retq
943 ; DARWIN-64-DYNAMIC-LABEL: foo07:
944 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
945 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
946 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
947 ; DARWIN-64-DYNAMIC-NEXT:    retq
949 ; DARWIN-64-PIC-LABEL: foo07:
950 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
951 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
952 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
953 ; DARWIN-64-PIC-NEXT:    retq
955 entry:
956         store ptr @ldst, ptr @lptr, align 8
957         ret void
960 define dso_local void @foo08() nounwind {
961 ; LINUX-64-STATIC-LABEL: foo08:
962 ; LINUX-64-STATIC:       # %bb.0: # %entry
963 ; LINUX-64-STATIC-NEXT:    movl lsrc(%rip), %eax
964 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
965 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx)
966 ; LINUX-64-STATIC-NEXT:    retq
968 ; LINUX-32-STATIC-LABEL: foo08:
969 ; LINUX-32-STATIC:       # %bb.0: # %entry
970 ; LINUX-32-STATIC-NEXT:    movl lsrc, %eax
971 ; LINUX-32-STATIC-NEXT:    movl lptr, %ecx
972 ; LINUX-32-STATIC-NEXT:    movl %eax, (%ecx)
973 ; LINUX-32-STATIC-NEXT:    retl
975 ; LINUX-32-PIC-LABEL: foo08:
976 ; LINUX-32-PIC:       # %bb.0: # %entry
977 ; LINUX-32-PIC-NEXT:    calll .L11$pb
978 ; LINUX-32-PIC-NEXT:  .L11$pb:
979 ; LINUX-32-PIC-NEXT:    popl %eax
980 ; LINUX-32-PIC-NEXT:  .Ltmp11:
981 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax
982 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF(%eax), %ecx
983 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
984 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
985 ; LINUX-32-PIC-NEXT:    retl
987 ; LINUX-64-PIC-LABEL: foo08:
988 ; LINUX-64-PIC:       # %bb.0: # %entry
989 ; LINUX-64-PIC-NEXT:    movl lsrc(%rip), %eax
990 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
991 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx)
992 ; LINUX-64-PIC-NEXT:    retq
994 ; DARWIN-32-STATIC-LABEL: foo08:
995 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
996 ; DARWIN-32-STATIC-NEXT:    movl _lsrc, %eax
997 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %ecx
998 ; DARWIN-32-STATIC-NEXT:    movl %eax, (%ecx)
999 ; DARWIN-32-STATIC-NEXT:    retl
1001 ; DARWIN-32-DYNAMIC-LABEL: foo08:
1002 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1003 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc, %eax
1004 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %ecx
1005 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
1006 ; DARWIN-32-DYNAMIC-NEXT:    retl
1008 ; DARWIN-32-PIC-LABEL: foo08:
1009 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1010 ; DARWIN-32-PIC-NEXT:    calll L11$pb
1011 ; DARWIN-32-PIC-NEXT:  L11$pb:
1012 ; DARWIN-32-PIC-NEXT:    popl %eax
1013 ; DARWIN-32-PIC-NEXT:    movl _lsrc-L11$pb(%eax), %ecx
1014 ; DARWIN-32-PIC-NEXT:    movl _lptr-L11$pb(%eax), %eax
1015 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
1016 ; DARWIN-32-PIC-NEXT:    retl
1018 ; DARWIN-64-STATIC-LABEL: foo08:
1019 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1020 ; DARWIN-64-STATIC-NEXT:    movl _lsrc(%rip), %eax
1021 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
1022 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx)
1023 ; DARWIN-64-STATIC-NEXT:    retq
1025 ; DARWIN-64-DYNAMIC-LABEL: foo08:
1026 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1027 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc(%rip), %eax
1028 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
1029 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx)
1030 ; DARWIN-64-DYNAMIC-NEXT:    retq
1032 ; DARWIN-64-PIC-LABEL: foo08:
1033 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1034 ; DARWIN-64-PIC-NEXT:    movl _lsrc(%rip), %eax
1035 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
1036 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx)
1037 ; DARWIN-64-PIC-NEXT:    retq
1039 entry:
1040         %0 = load ptr, ptr @lptr, align 8
1041         %1 = load i32, ptr @lsrc, align 4
1042         store i32 %1, ptr %0, align 4
1043         ret void
1046 define dso_local void @qux00() nounwind {
1047 ; LINUX-64-STATIC-LABEL: qux00:
1048 ; LINUX-64-STATIC:       # %bb.0: # %entry
1049 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
1050 ; LINUX-64-STATIC-NEXT:    movl 64(%rax), %eax
1051 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
1052 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1053 ; LINUX-64-STATIC-NEXT:    retq
1055 ; LINUX-32-STATIC-LABEL: qux00:
1056 ; LINUX-32-STATIC:       # %bb.0: # %entry
1057 ; LINUX-32-STATIC-NEXT:    movl src+64, %eax
1058 ; LINUX-32-STATIC-NEXT:    movl %eax, dst+64
1059 ; LINUX-32-STATIC-NEXT:    retl
1061 ; LINUX-32-PIC-LABEL: qux00:
1062 ; LINUX-32-PIC:       # %bb.0: # %entry
1063 ; LINUX-32-PIC-NEXT:    calll .L12$pb
1064 ; LINUX-32-PIC-NEXT:  .L12$pb:
1065 ; LINUX-32-PIC-NEXT:    popl %eax
1066 ; LINUX-32-PIC-NEXT:  .Ltmp12:
1067 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax
1068 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
1069 ; LINUX-32-PIC-NEXT:    movl 64(%ecx), %ecx
1070 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
1071 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
1072 ; LINUX-32-PIC-NEXT:    retl
1074 ; LINUX-64-PIC-LABEL: qux00:
1075 ; LINUX-64-PIC:       # %bb.0: # %entry
1076 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
1077 ; LINUX-64-PIC-NEXT:    movl 64(%rax), %eax
1078 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
1079 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
1080 ; LINUX-64-PIC-NEXT:    retq
1082 ; DARWIN-32-STATIC-LABEL: qux00:
1083 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1084 ; DARWIN-32-STATIC-NEXT:    movl _src+64, %eax
1085 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dst+64
1086 ; DARWIN-32-STATIC-NEXT:    retl
1088 ; DARWIN-32-DYNAMIC-LABEL: qux00:
1089 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1090 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
1091 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%eax), %eax
1092 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
1093 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
1094 ; DARWIN-32-DYNAMIC-NEXT:    retl
1096 ; DARWIN-32-PIC-LABEL: qux00:
1097 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1098 ; DARWIN-32-PIC-NEXT:    calll L12$pb
1099 ; DARWIN-32-PIC-NEXT:  L12$pb:
1100 ; DARWIN-32-PIC-NEXT:    popl %eax
1101 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx
1102 ; DARWIN-32-PIC-NEXT:    movl 64(%ecx), %ecx
1103 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax
1104 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
1105 ; DARWIN-32-PIC-NEXT:    retl
1107 ; DARWIN-64-STATIC-LABEL: qux00:
1108 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1109 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1110 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax), %eax
1111 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
1112 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1113 ; DARWIN-64-STATIC-NEXT:    retq
1115 ; DARWIN-64-DYNAMIC-LABEL: qux00:
1116 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1117 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1118 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax), %eax
1119 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
1120 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
1121 ; DARWIN-64-DYNAMIC-NEXT:    retq
1123 ; DARWIN-64-PIC-LABEL: qux00:
1124 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1125 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1126 ; DARWIN-64-PIC-NEXT:    movl 64(%rax), %eax
1127 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
1128 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
1129 ; DARWIN-64-PIC-NEXT:    retq
1131 entry:
1132         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 4
1133         store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), align 4
1134         ret void
1137 define dso_local void @qxx00() nounwind {
1138 ; LINUX-64-STATIC-LABEL: qxx00:
1139 ; LINUX-64-STATIC:       # %bb.0: # %entry
1140 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
1141 ; LINUX-64-STATIC-NEXT:    movl 64(%rax), %eax
1142 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
1143 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1144 ; LINUX-64-STATIC-NEXT:    retq
1146 ; LINUX-32-STATIC-LABEL: qxx00:
1147 ; LINUX-32-STATIC:       # %bb.0: # %entry
1148 ; LINUX-32-STATIC-NEXT:    movl xsrc+64, %eax
1149 ; LINUX-32-STATIC-NEXT:    movl %eax, xdst+64
1150 ; LINUX-32-STATIC-NEXT:    retl
1152 ; LINUX-32-PIC-LABEL: qxx00:
1153 ; LINUX-32-PIC:       # %bb.0: # %entry
1154 ; LINUX-32-PIC-NEXT:    calll .L13$pb
1155 ; LINUX-32-PIC-NEXT:  .L13$pb:
1156 ; LINUX-32-PIC-NEXT:    popl %eax
1157 ; LINUX-32-PIC-NEXT:  .Ltmp13:
1158 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax
1159 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %ecx
1160 ; LINUX-32-PIC-NEXT:    movl 64(%ecx), %ecx
1161 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
1162 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
1163 ; LINUX-32-PIC-NEXT:    retl
1165 ; LINUX-64-PIC-LABEL: qxx00:
1166 ; LINUX-64-PIC:       # %bb.0: # %entry
1167 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
1168 ; LINUX-64-PIC-NEXT:    movl 64(%rax), %eax
1169 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
1170 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
1171 ; LINUX-64-PIC-NEXT:    retq
1173 ; DARWIN-32-STATIC-LABEL: qxx00:
1174 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1175 ; DARWIN-32-STATIC-NEXT:    movl _xsrc+64, %eax
1176 ; DARWIN-32-STATIC-NEXT:    movl %eax, _xdst+64
1177 ; DARWIN-32-STATIC-NEXT:    retl
1179 ; DARWIN-32-DYNAMIC-LABEL: qxx00:
1180 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1181 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
1182 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%eax), %eax
1183 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %ecx
1184 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
1185 ; DARWIN-32-DYNAMIC-NEXT:    retl
1187 ; DARWIN-32-PIC-LABEL: qxx00:
1188 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1189 ; DARWIN-32-PIC-NEXT:    calll L13$pb
1190 ; DARWIN-32-PIC-NEXT:  L13$pb:
1191 ; DARWIN-32-PIC-NEXT:    popl %eax
1192 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx
1193 ; DARWIN-32-PIC-NEXT:    movl 64(%ecx), %ecx
1194 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax
1195 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
1196 ; DARWIN-32-PIC-NEXT:    retl
1198 ; DARWIN-64-STATIC-LABEL: qxx00:
1199 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1200 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1201 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax), %eax
1202 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
1203 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1204 ; DARWIN-64-STATIC-NEXT:    retq
1206 ; DARWIN-64-DYNAMIC-LABEL: qxx00:
1207 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1208 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1209 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax), %eax
1210 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
1211 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
1212 ; DARWIN-64-DYNAMIC-NEXT:    retq
1214 ; DARWIN-64-PIC-LABEL: qxx00:
1215 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1216 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1217 ; DARWIN-64-PIC-NEXT:    movl 64(%rax), %eax
1218 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
1219 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
1220 ; DARWIN-64-PIC-NEXT:    retq
1222 entry:
1223         %0 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 4
1224         store i32 %0, ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), align 4
1225         ret void
1228 define dso_local void @qux01() nounwind {
1229 ; LINUX-64-STATIC-LABEL: qux01:
1230 ; LINUX-64-STATIC:       # %bb.0: # %entry
1231 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
1232 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
1233 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1234 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
1235 ; LINUX-64-STATIC-NEXT:    retq
1237 ; LINUX-32-STATIC-LABEL: qux01:
1238 ; LINUX-32-STATIC:       # %bb.0: # %entry
1239 ; LINUX-32-STATIC-NEXT:    leal dst+64, %eax
1240 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
1241 ; LINUX-32-STATIC-NEXT:    retl
1243 ; LINUX-32-PIC-LABEL: qux01:
1244 ; LINUX-32-PIC:       # %bb.0: # %entry
1245 ; LINUX-32-PIC-NEXT:    calll .L14$pb
1246 ; LINUX-32-PIC-NEXT:  .L14$pb:
1247 ; LINUX-32-PIC-NEXT:    popl %eax
1248 ; LINUX-32-PIC-NEXT:  .Ltmp14:
1249 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax
1250 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %ecx
1251 ; LINUX-32-PIC-NEXT:    addl $64, %ecx
1252 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
1253 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
1254 ; LINUX-32-PIC-NEXT:    retl
1256 ; LINUX-64-PIC-LABEL: qux01:
1257 ; LINUX-64-PIC:       # %bb.0: # %entry
1258 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
1259 ; LINUX-64-PIC-NEXT:    addq $64, %rax
1260 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1261 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
1262 ; LINUX-64-PIC-NEXT:    retq
1264 ; DARWIN-32-STATIC-LABEL: qux01:
1265 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1266 ; DARWIN-32-STATIC-NEXT:    movl $_dst+64, _ptr
1267 ; DARWIN-32-STATIC-NEXT:    retl
1269 ; DARWIN-32-DYNAMIC-LABEL: qux01:
1270 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1271 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %eax
1272 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
1273 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
1274 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
1275 ; DARWIN-32-DYNAMIC-NEXT:    retl
1277 ; DARWIN-32-PIC-LABEL: qux01:
1278 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1279 ; DARWIN-32-PIC-NEXT:    calll L14$pb
1280 ; DARWIN-32-PIC-NEXT:  L14$pb:
1281 ; DARWIN-32-PIC-NEXT:    popl %eax
1282 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx
1283 ; DARWIN-32-PIC-NEXT:    addl $64, %ecx
1284 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax
1285 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
1286 ; DARWIN-32-PIC-NEXT:    retl
1288 ; DARWIN-64-STATIC-LABEL: qux01:
1289 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1290 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
1291 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
1292 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1293 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
1294 ; DARWIN-64-STATIC-NEXT:    retq
1296 ; DARWIN-64-DYNAMIC-LABEL: qux01:
1297 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1298 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
1299 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
1300 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1301 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
1302 ; DARWIN-64-DYNAMIC-NEXT:    retq
1304 ; DARWIN-64-PIC-LABEL: qux01:
1305 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1306 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
1307 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
1308 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1309 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
1310 ; DARWIN-64-PIC-NEXT:    retq
1312 entry:
1313         store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), ptr @ptr, align 8
1314         ret void
1317 define dso_local void @qxx01() nounwind {
1318 ; LINUX-64-STATIC-LABEL: qxx01:
1319 ; LINUX-64-STATIC:       # %bb.0: # %entry
1320 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
1321 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
1322 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1323 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
1324 ; LINUX-64-STATIC-NEXT:    retq
1326 ; LINUX-32-STATIC-LABEL: qxx01:
1327 ; LINUX-32-STATIC:       # %bb.0: # %entry
1328 ; LINUX-32-STATIC-NEXT:    leal xdst+64, %eax
1329 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
1330 ; LINUX-32-STATIC-NEXT:    retl
1332 ; LINUX-32-PIC-LABEL: qxx01:
1333 ; LINUX-32-PIC:       # %bb.0: # %entry
1334 ; LINUX-32-PIC-NEXT:    calll .L15$pb
1335 ; LINUX-32-PIC-NEXT:  .L15$pb:
1336 ; LINUX-32-PIC-NEXT:    popl %eax
1337 ; LINUX-32-PIC-NEXT:  .Ltmp15:
1338 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax
1339 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %ecx
1340 ; LINUX-32-PIC-NEXT:    addl $64, %ecx
1341 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
1342 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
1343 ; LINUX-32-PIC-NEXT:    retl
1345 ; LINUX-64-PIC-LABEL: qxx01:
1346 ; LINUX-64-PIC:       # %bb.0: # %entry
1347 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
1348 ; LINUX-64-PIC-NEXT:    addq $64, %rax
1349 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1350 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
1351 ; LINUX-64-PIC-NEXT:    retq
1353 ; DARWIN-32-STATIC-LABEL: qxx01:
1354 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1355 ; DARWIN-32-STATIC-NEXT:    movl $_xdst+64, _ptr
1356 ; DARWIN-32-STATIC-NEXT:    retl
1358 ; DARWIN-32-DYNAMIC-LABEL: qxx01:
1359 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1360 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %eax
1361 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
1362 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
1363 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
1364 ; DARWIN-32-DYNAMIC-NEXT:    retl
1366 ; DARWIN-32-PIC-LABEL: qxx01:
1367 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1368 ; DARWIN-32-PIC-NEXT:    calll L15$pb
1369 ; DARWIN-32-PIC-NEXT:  L15$pb:
1370 ; DARWIN-32-PIC-NEXT:    popl %eax
1371 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx
1372 ; DARWIN-32-PIC-NEXT:    addl $64, %ecx
1373 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax
1374 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
1375 ; DARWIN-32-PIC-NEXT:    retl
1377 ; DARWIN-64-STATIC-LABEL: qxx01:
1378 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1379 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
1380 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
1381 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1382 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
1383 ; DARWIN-64-STATIC-NEXT:    retq
1385 ; DARWIN-64-DYNAMIC-LABEL: qxx01:
1386 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1387 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
1388 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
1389 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1390 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
1391 ; DARWIN-64-DYNAMIC-NEXT:    retq
1393 ; DARWIN-64-PIC-LABEL: qxx01:
1394 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1395 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
1396 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
1397 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1398 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
1399 ; DARWIN-64-PIC-NEXT:    retq
1401 entry:
1402         store ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), ptr @ptr, align 8
1403         ret void
1406 define dso_local void @qux02() nounwind {
1407 ; LINUX-64-STATIC-LABEL: qux02:
1408 ; LINUX-64-STATIC:       # %bb.0: # %entry
1409 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
1410 ; LINUX-64-STATIC-NEXT:    movl 64(%rax), %eax
1411 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1412 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
1413 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1414 ; LINUX-64-STATIC-NEXT:    retq
1416 ; LINUX-32-STATIC-LABEL: qux02:
1417 ; LINUX-32-STATIC:       # %bb.0: # %entry
1418 ; LINUX-32-STATIC-NEXT:    movl src+64, %eax
1419 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
1420 ; LINUX-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1421 ; LINUX-32-STATIC-NEXT:    retl
1423 ; LINUX-32-PIC-LABEL: qux02:
1424 ; LINUX-32-PIC:       # %bb.0: # %entry
1425 ; LINUX-32-PIC-NEXT:    calll .L16$pb
1426 ; LINUX-32-PIC-NEXT:  .L16$pb:
1427 ; LINUX-32-PIC-NEXT:    popl %eax
1428 ; LINUX-32-PIC-NEXT:  .Ltmp16:
1429 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax
1430 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
1431 ; LINUX-32-PIC-NEXT:    movl 64(%ecx), %ecx
1432 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
1433 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
1434 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
1435 ; LINUX-32-PIC-NEXT:    retl
1437 ; LINUX-64-PIC-LABEL: qux02:
1438 ; LINUX-64-PIC:       # %bb.0: # %entry
1439 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
1440 ; LINUX-64-PIC-NEXT:    movl 64(%rax), %eax
1441 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1442 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
1443 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
1444 ; LINUX-64-PIC-NEXT:    retq
1446 ; DARWIN-32-STATIC-LABEL: qux02:
1447 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1448 ; DARWIN-32-STATIC-NEXT:    movl _src+64, %eax
1449 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
1450 ; DARWIN-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1451 ; DARWIN-32-STATIC-NEXT:    retl
1453 ; DARWIN-32-DYNAMIC-LABEL: qux02:
1454 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1455 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
1456 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%eax), %eax
1457 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
1458 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx), %ecx
1459 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
1460 ; DARWIN-32-DYNAMIC-NEXT:    retl
1462 ; DARWIN-32-PIC-LABEL: qux02:
1463 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1464 ; DARWIN-32-PIC-NEXT:    calll L16$pb
1465 ; DARWIN-32-PIC-NEXT:  L16$pb:
1466 ; DARWIN-32-PIC-NEXT:    popl %eax
1467 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx
1468 ; DARWIN-32-PIC-NEXT:    movl 64(%ecx), %ecx
1469 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax
1470 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
1471 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
1472 ; DARWIN-32-PIC-NEXT:    retl
1474 ; DARWIN-64-STATIC-LABEL: qux02:
1475 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1476 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1477 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax), %eax
1478 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1479 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
1480 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1481 ; DARWIN-64-STATIC-NEXT:    retq
1483 ; DARWIN-64-DYNAMIC-LABEL: qux02:
1484 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1485 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1486 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax), %eax
1487 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1488 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
1489 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
1490 ; DARWIN-64-DYNAMIC-NEXT:    retq
1492 ; DARWIN-64-PIC-LABEL: qux02:
1493 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1494 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
1495 ; DARWIN-64-PIC-NEXT:    movl 64(%rax), %eax
1496 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1497 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
1498 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
1499 ; DARWIN-64-PIC-NEXT:    retq
1501 entry:
1502         %0 = load ptr, ptr @ptr, align 8
1503         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 4
1504         %2 = getelementptr i32, ptr %0, i64 16
1505         store i32 %1, ptr %2, align 4
1506         ret void
1509 define dso_local void @qxx02() nounwind {
1510 ; LINUX-64-STATIC-LABEL: qxx02:
1511 ; LINUX-64-STATIC:       # %bb.0: # %entry
1512 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
1513 ; LINUX-64-STATIC-NEXT:    movl 64(%rax), %eax
1514 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1515 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
1516 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1517 ; LINUX-64-STATIC-NEXT:    retq
1519 ; LINUX-32-STATIC-LABEL: qxx02:
1520 ; LINUX-32-STATIC:       # %bb.0: # %entry
1521 ; LINUX-32-STATIC-NEXT:    movl xsrc+64, %eax
1522 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
1523 ; LINUX-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1524 ; LINUX-32-STATIC-NEXT:    retl
1526 ; LINUX-32-PIC-LABEL: qxx02:
1527 ; LINUX-32-PIC:       # %bb.0: # %entry
1528 ; LINUX-32-PIC-NEXT:    calll .L17$pb
1529 ; LINUX-32-PIC-NEXT:  .L17$pb:
1530 ; LINUX-32-PIC-NEXT:    popl %eax
1531 ; LINUX-32-PIC-NEXT:  .Ltmp17:
1532 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax
1533 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %ecx
1534 ; LINUX-32-PIC-NEXT:    movl 64(%ecx), %ecx
1535 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
1536 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
1537 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
1538 ; LINUX-32-PIC-NEXT:    retl
1540 ; LINUX-64-PIC-LABEL: qxx02:
1541 ; LINUX-64-PIC:       # %bb.0: # %entry
1542 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
1543 ; LINUX-64-PIC-NEXT:    movl 64(%rax), %eax
1544 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
1545 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
1546 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
1547 ; LINUX-64-PIC-NEXT:    retq
1549 ; DARWIN-32-STATIC-LABEL: qxx02:
1550 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1551 ; DARWIN-32-STATIC-NEXT:    movl _xsrc+64, %eax
1552 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
1553 ; DARWIN-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1554 ; DARWIN-32-STATIC-NEXT:    retl
1556 ; DARWIN-32-DYNAMIC-LABEL: qxx02:
1557 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1558 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
1559 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%eax), %eax
1560 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
1561 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx), %ecx
1562 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
1563 ; DARWIN-32-DYNAMIC-NEXT:    retl
1565 ; DARWIN-32-PIC-LABEL: qxx02:
1566 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1567 ; DARWIN-32-PIC-NEXT:    calll L17$pb
1568 ; DARWIN-32-PIC-NEXT:  L17$pb:
1569 ; DARWIN-32-PIC-NEXT:    popl %eax
1570 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx
1571 ; DARWIN-32-PIC-NEXT:    movl 64(%ecx), %ecx
1572 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax
1573 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
1574 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
1575 ; DARWIN-32-PIC-NEXT:    retl
1577 ; DARWIN-64-STATIC-LABEL: qxx02:
1578 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1579 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1580 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax), %eax
1581 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1582 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
1583 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1584 ; DARWIN-64-STATIC-NEXT:    retq
1586 ; DARWIN-64-DYNAMIC-LABEL: qxx02:
1587 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1588 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1589 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax), %eax
1590 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1591 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
1592 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
1593 ; DARWIN-64-DYNAMIC-NEXT:    retq
1595 ; DARWIN-64-PIC-LABEL: qxx02:
1596 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1597 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
1598 ; DARWIN-64-PIC-NEXT:    movl 64(%rax), %eax
1599 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
1600 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
1601 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
1602 ; DARWIN-64-PIC-NEXT:    retq
1604 entry:
1605         %0 = load ptr, ptr @ptr, align 8
1606         %1 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 4
1607         %2 = getelementptr i32, ptr %0, i64 16
1608         store i32 %1, ptr %2, align 4
1609         ret void
1612 define dso_local void @qux03() nounwind {
1613 ; LINUX-64-STATIC-LABEL: qux03:
1614 ; LINUX-64-STATIC:       # %bb.0: # %entry
1615 ; LINUX-64-STATIC-NEXT:    movl dsrc+64(%rip), %eax
1616 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst+64(%rip)
1617 ; LINUX-64-STATIC-NEXT:    retq
1619 ; LINUX-32-STATIC-LABEL: qux03:
1620 ; LINUX-32-STATIC:       # %bb.0: # %entry
1621 ; LINUX-32-STATIC-NEXT:    movl dsrc+64, %eax
1622 ; LINUX-32-STATIC-NEXT:    movl %eax, ddst+64
1623 ; LINUX-32-STATIC-NEXT:    retl
1625 ; LINUX-32-PIC-LABEL: qux03:
1626 ; LINUX-32-PIC:       # %bb.0: # %entry
1627 ; LINUX-32-PIC-NEXT:    calll .L18$pb
1628 ; LINUX-32-PIC-NEXT:  .L18$pb:
1629 ; LINUX-32-PIC-NEXT:    popl %eax
1630 ; LINUX-32-PIC-NEXT:  .Ltmp18:
1631 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax
1632 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+64(%eax), %ecx
1633 ; LINUX-32-PIC-NEXT:    movl %ecx, .Lddst$local@GOTOFF+64(%eax)
1634 ; LINUX-32-PIC-NEXT:    retl
1636 ; LINUX-64-PIC-LABEL: qux03:
1637 ; LINUX-64-PIC:       # %bb.0: # %entry
1638 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local+64(%rip), %eax
1639 ; LINUX-64-PIC-NEXT:    movl %eax, .Lddst$local+64(%rip)
1640 ; LINUX-64-PIC-NEXT:    retq
1642 ; DARWIN-32-STATIC-LABEL: qux03:
1643 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1644 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+64, %eax
1645 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ddst+64
1646 ; DARWIN-32-STATIC-NEXT:    retl
1648 ; DARWIN-32-DYNAMIC-LABEL: qux03:
1649 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1650 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+64, %eax
1651 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ddst+64
1652 ; DARWIN-32-DYNAMIC-NEXT:    retl
1654 ; DARWIN-32-PIC-LABEL: qux03:
1655 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1656 ; DARWIN-32-PIC-NEXT:    calll L18$pb
1657 ; DARWIN-32-PIC-NEXT:  L18$pb:
1658 ; DARWIN-32-PIC-NEXT:    popl %eax
1659 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L18$pb)+64(%eax), %ecx
1660 ; DARWIN-32-PIC-NEXT:    movl %ecx, (_ddst-L18$pb)+64(%eax)
1661 ; DARWIN-32-PIC-NEXT:    retl
1663 ; DARWIN-64-STATIC-LABEL: qux03:
1664 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1665 ; DARWIN-64-STATIC-NEXT:    movl _dsrc+64(%rip), %eax
1666 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ddst+64(%rip)
1667 ; DARWIN-64-STATIC-NEXT:    retq
1669 ; DARWIN-64-DYNAMIC-LABEL: qux03:
1670 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1671 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc+64(%rip), %eax
1672 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ddst+64(%rip)
1673 ; DARWIN-64-DYNAMIC-NEXT:    retq
1675 ; DARWIN-64-PIC-LABEL: qux03:
1676 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1677 ; DARWIN-64-PIC-NEXT:    movl _dsrc+64(%rip), %eax
1678 ; DARWIN-64-PIC-NEXT:    movl %eax, _ddst+64(%rip)
1679 ; DARWIN-64-PIC-NEXT:    retq
1681 entry:
1682         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 32
1683         store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), align 32
1684         ret void
1687 define dso_local void @qux04() nounwind {
1688 ; LINUX-64-STATIC-LABEL: qux04:
1689 ; LINUX-64-STATIC:       # %bb.0: # %entry
1690 ; LINUX-64-STATIC-NEXT:    movq $ddst+64, dptr(%rip)
1691 ; LINUX-64-STATIC-NEXT:    retq
1693 ; LINUX-32-STATIC-LABEL: qux04:
1694 ; LINUX-32-STATIC:       # %bb.0: # %entry
1695 ; LINUX-32-STATIC-NEXT:    movl $ddst+64, dptr
1696 ; LINUX-32-STATIC-NEXT:    retl
1698 ; LINUX-32-PIC-LABEL: qux04:
1699 ; LINUX-32-PIC:       # %bb.0: # %entry
1700 ; LINUX-32-PIC-NEXT:    calll .L19$pb
1701 ; LINUX-32-PIC-NEXT:  .L19$pb:
1702 ; LINUX-32-PIC-NEXT:    popl %eax
1703 ; LINUX-32-PIC-NEXT:  .Ltmp19:
1704 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax
1705 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+64(%eax), %ecx
1706 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
1707 ; LINUX-32-PIC-NEXT:    retl
1709 ; LINUX-64-PIC-LABEL: qux04:
1710 ; LINUX-64-PIC:       # %bb.0: # %entry
1711 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local+64(%rip), %rax
1712 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
1713 ; LINUX-64-PIC-NEXT:    retq
1715 ; DARWIN-32-STATIC-LABEL: qux04:
1716 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1717 ; DARWIN-32-STATIC-NEXT:    movl $_ddst+64, _dptr
1718 ; DARWIN-32-STATIC-NEXT:    retl
1720 ; DARWIN-32-DYNAMIC-LABEL: qux04:
1721 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1722 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst+64, _dptr
1723 ; DARWIN-32-DYNAMIC-NEXT:    retl
1725 ; DARWIN-32-PIC-LABEL: qux04:
1726 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1727 ; DARWIN-32-PIC-NEXT:    calll L19$pb
1728 ; DARWIN-32-PIC-NEXT:  L19$pb:
1729 ; DARWIN-32-PIC-NEXT:    popl %eax
1730 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L19$pb)+64(%eax), %ecx
1731 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L19$pb(%eax)
1732 ; DARWIN-32-PIC-NEXT:    retl
1734 ; DARWIN-64-STATIC-LABEL: qux04:
1735 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1736 ; DARWIN-64-STATIC-NEXT:    leaq _ddst+64(%rip), %rax
1737 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
1738 ; DARWIN-64-STATIC-NEXT:    retq
1740 ; DARWIN-64-DYNAMIC-LABEL: qux04:
1741 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1742 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst+64(%rip), %rax
1743 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
1744 ; DARWIN-64-DYNAMIC-NEXT:    retq
1746 ; DARWIN-64-PIC-LABEL: qux04:
1747 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1748 ; DARWIN-64-PIC-NEXT:    leaq _ddst+64(%rip), %rax
1749 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
1750 ; DARWIN-64-PIC-NEXT:    retq
1752 entry:
1753         store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), ptr @dptr, align 8
1754         ret void
1757 define dso_local void @qux05() nounwind {
1758 ; LINUX-64-STATIC-LABEL: qux05:
1759 ; LINUX-64-STATIC:       # %bb.0: # %entry
1760 ; LINUX-64-STATIC-NEXT:    movl dsrc+64(%rip), %eax
1761 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
1762 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1763 ; LINUX-64-STATIC-NEXT:    retq
1765 ; LINUX-32-STATIC-LABEL: qux05:
1766 ; LINUX-32-STATIC:       # %bb.0: # %entry
1767 ; LINUX-32-STATIC-NEXT:    movl dsrc+64, %eax
1768 ; LINUX-32-STATIC-NEXT:    movl dptr, %ecx
1769 ; LINUX-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1770 ; LINUX-32-STATIC-NEXT:    retl
1772 ; LINUX-32-PIC-LABEL: qux05:
1773 ; LINUX-32-PIC:       # %bb.0: # %entry
1774 ; LINUX-32-PIC-NEXT:    calll .L20$pb
1775 ; LINUX-32-PIC-NEXT:  .L20$pb:
1776 ; LINUX-32-PIC-NEXT:    popl %eax
1777 ; LINUX-32-PIC-NEXT:  .Ltmp20:
1778 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax
1779 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+64(%eax), %ecx
1780 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
1781 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
1782 ; LINUX-32-PIC-NEXT:    retl
1784 ; LINUX-64-PIC-LABEL: qux05:
1785 ; LINUX-64-PIC:       # %bb.0: # %entry
1786 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local+64(%rip), %eax
1787 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
1788 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
1789 ; LINUX-64-PIC-NEXT:    retq
1791 ; DARWIN-32-STATIC-LABEL: qux05:
1792 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1793 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+64, %eax
1794 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %ecx
1795 ; DARWIN-32-STATIC-NEXT:    movl %eax, 64(%ecx)
1796 ; DARWIN-32-STATIC-NEXT:    retl
1798 ; DARWIN-32-DYNAMIC-LABEL: qux05:
1799 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1800 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+64, %eax
1801 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %ecx
1802 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
1803 ; DARWIN-32-DYNAMIC-NEXT:    retl
1805 ; DARWIN-32-PIC-LABEL: qux05:
1806 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1807 ; DARWIN-32-PIC-NEXT:    calll L20$pb
1808 ; DARWIN-32-PIC-NEXT:  L20$pb:
1809 ; DARWIN-32-PIC-NEXT:    popl %eax
1810 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L20$pb)+64(%eax), %ecx
1811 ; DARWIN-32-PIC-NEXT:    movl _dptr-L20$pb(%eax), %eax
1812 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
1813 ; DARWIN-32-PIC-NEXT:    retl
1815 ; DARWIN-64-STATIC-LABEL: qux05:
1816 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1817 ; DARWIN-64-STATIC-NEXT:    movl _dsrc+64(%rip), %eax
1818 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
1819 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1820 ; DARWIN-64-STATIC-NEXT:    retq
1822 ; DARWIN-64-DYNAMIC-LABEL: qux05:
1823 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1824 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc+64(%rip), %eax
1825 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
1826 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
1827 ; DARWIN-64-DYNAMIC-NEXT:    retq
1829 ; DARWIN-64-PIC-LABEL: qux05:
1830 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1831 ; DARWIN-64-PIC-NEXT:    movl _dsrc+64(%rip), %eax
1832 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
1833 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
1834 ; DARWIN-64-PIC-NEXT:    retq
1836 entry:
1837         %0 = load ptr, ptr @dptr, align 8
1838         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 32
1839         %2 = getelementptr i32, ptr %0, i64 16
1840         store i32 %1, ptr %2, align 4
1841         ret void
1844 define dso_local void @qux06() nounwind {
1845 ; LINUX-64-STATIC-LABEL: qux06:
1846 ; LINUX-64-STATIC:       # %bb.0: # %entry
1847 ; LINUX-64-STATIC-NEXT:    movl lsrc+64(%rip), %eax
1848 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst+64(%rip)
1849 ; LINUX-64-STATIC-NEXT:    retq
1851 ; LINUX-32-STATIC-LABEL: qux06:
1852 ; LINUX-32-STATIC:       # %bb.0: # %entry
1853 ; LINUX-32-STATIC-NEXT:    movl lsrc+64, %eax
1854 ; LINUX-32-STATIC-NEXT:    movl %eax, ldst+64
1855 ; LINUX-32-STATIC-NEXT:    retl
1857 ; LINUX-32-PIC-LABEL: qux06:
1858 ; LINUX-32-PIC:       # %bb.0: # %entry
1859 ; LINUX-32-PIC-NEXT:    calll .L21$pb
1860 ; LINUX-32-PIC-NEXT:  .L21$pb:
1861 ; LINUX-32-PIC-NEXT:    popl %eax
1862 ; LINUX-32-PIC-NEXT:  .Ltmp21:
1863 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax
1864 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+64(%eax), %ecx
1865 ; LINUX-32-PIC-NEXT:    movl %ecx, ldst@GOTOFF+64(%eax)
1866 ; LINUX-32-PIC-NEXT:    retl
1868 ; LINUX-64-PIC-LABEL: qux06:
1869 ; LINUX-64-PIC:       # %bb.0: # %entry
1870 ; LINUX-64-PIC-NEXT:    movl lsrc+64(%rip), %eax
1871 ; LINUX-64-PIC-NEXT:    movl %eax, ldst+64(%rip)
1872 ; LINUX-64-PIC-NEXT:    retq
1874 ; DARWIN-32-STATIC-LABEL: qux06:
1875 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1876 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+64, %eax
1877 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ldst+64
1878 ; DARWIN-32-STATIC-NEXT:    retl
1880 ; DARWIN-32-DYNAMIC-LABEL: qux06:
1881 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1882 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+64, %eax
1883 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ldst+64
1884 ; DARWIN-32-DYNAMIC-NEXT:    retl
1886 ; DARWIN-32-PIC-LABEL: qux06:
1887 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1888 ; DARWIN-32-PIC-NEXT:    calll L21$pb
1889 ; DARWIN-32-PIC-NEXT:  L21$pb:
1890 ; DARWIN-32-PIC-NEXT:    popl %eax
1891 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L21$pb)+64(%eax), %ecx
1892 ; DARWIN-32-PIC-NEXT:    movl %ecx, (_ldst-L21$pb)+64(%eax)
1893 ; DARWIN-32-PIC-NEXT:    retl
1895 ; DARWIN-64-STATIC-LABEL: qux06:
1896 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1897 ; DARWIN-64-STATIC-NEXT:    movl _lsrc+64(%rip), %eax
1898 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ldst+64(%rip)
1899 ; DARWIN-64-STATIC-NEXT:    retq
1901 ; DARWIN-64-DYNAMIC-LABEL: qux06:
1902 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1903 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc+64(%rip), %eax
1904 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ldst+64(%rip)
1905 ; DARWIN-64-DYNAMIC-NEXT:    retq
1907 ; DARWIN-64-PIC-LABEL: qux06:
1908 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1909 ; DARWIN-64-PIC-NEXT:    movl _lsrc+64(%rip), %eax
1910 ; DARWIN-64-PIC-NEXT:    movl %eax, _ldst+64(%rip)
1911 ; DARWIN-64-PIC-NEXT:    retq
1913 entry:
1914         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 4
1915         store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), align 4
1916         ret void
1919 define dso_local void @qux07() nounwind {
1920 ; LINUX-64-STATIC-LABEL: qux07:
1921 ; LINUX-64-STATIC:       # %bb.0: # %entry
1922 ; LINUX-64-STATIC-NEXT:    movq $ldst+64, lptr(%rip)
1923 ; LINUX-64-STATIC-NEXT:    retq
1925 ; LINUX-32-STATIC-LABEL: qux07:
1926 ; LINUX-32-STATIC:       # %bb.0: # %entry
1927 ; LINUX-32-STATIC-NEXT:    movl $ldst+64, lptr
1928 ; LINUX-32-STATIC-NEXT:    retl
1930 ; LINUX-32-PIC-LABEL: qux07:
1931 ; LINUX-32-PIC:       # %bb.0: # %entry
1932 ; LINUX-32-PIC-NEXT:    calll .L22$pb
1933 ; LINUX-32-PIC-NEXT:  .L22$pb:
1934 ; LINUX-32-PIC-NEXT:    popl %eax
1935 ; LINUX-32-PIC-NEXT:  .Ltmp22:
1936 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax
1937 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+64(%eax), %ecx
1938 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
1939 ; LINUX-32-PIC-NEXT:    retl
1941 ; LINUX-64-PIC-LABEL: qux07:
1942 ; LINUX-64-PIC:       # %bb.0: # %entry
1943 ; LINUX-64-PIC-NEXT:    leaq ldst+64(%rip), %rax
1944 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
1945 ; LINUX-64-PIC-NEXT:    retq
1947 ; DARWIN-32-STATIC-LABEL: qux07:
1948 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
1949 ; DARWIN-32-STATIC-NEXT:    movl $_ldst+64, _lptr
1950 ; DARWIN-32-STATIC-NEXT:    retl
1952 ; DARWIN-32-DYNAMIC-LABEL: qux07:
1953 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
1954 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst+64, _lptr
1955 ; DARWIN-32-DYNAMIC-NEXT:    retl
1957 ; DARWIN-32-PIC-LABEL: qux07:
1958 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
1959 ; DARWIN-32-PIC-NEXT:    calll L22$pb
1960 ; DARWIN-32-PIC-NEXT:  L22$pb:
1961 ; DARWIN-32-PIC-NEXT:    popl %eax
1962 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L22$pb)+64(%eax), %ecx
1963 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L22$pb(%eax)
1964 ; DARWIN-32-PIC-NEXT:    retl
1966 ; DARWIN-64-STATIC-LABEL: qux07:
1967 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
1968 ; DARWIN-64-STATIC-NEXT:    leaq _ldst+64(%rip), %rax
1969 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
1970 ; DARWIN-64-STATIC-NEXT:    retq
1972 ; DARWIN-64-DYNAMIC-LABEL: qux07:
1973 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
1974 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst+64(%rip), %rax
1975 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
1976 ; DARWIN-64-DYNAMIC-NEXT:    retq
1978 ; DARWIN-64-PIC-LABEL: qux07:
1979 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
1980 ; DARWIN-64-PIC-NEXT:    leaq _ldst+64(%rip), %rax
1981 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
1982 ; DARWIN-64-PIC-NEXT:    retq
1984 entry:
1985         store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), ptr @lptr, align 8
1986         ret void
1989 define dso_local void @qux08() nounwind {
1990 ; LINUX-64-STATIC-LABEL: qux08:
1991 ; LINUX-64-STATIC:       # %bb.0: # %entry
1992 ; LINUX-64-STATIC-NEXT:    movl lsrc+64(%rip), %eax
1993 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
1994 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx)
1995 ; LINUX-64-STATIC-NEXT:    retq
1997 ; LINUX-32-STATIC-LABEL: qux08:
1998 ; LINUX-32-STATIC:       # %bb.0: # %entry
1999 ; LINUX-32-STATIC-NEXT:    movl lsrc+64, %eax
2000 ; LINUX-32-STATIC-NEXT:    movl lptr, %ecx
2001 ; LINUX-32-STATIC-NEXT:    movl %eax, 64(%ecx)
2002 ; LINUX-32-STATIC-NEXT:    retl
2004 ; LINUX-32-PIC-LABEL: qux08:
2005 ; LINUX-32-PIC:       # %bb.0: # %entry
2006 ; LINUX-32-PIC-NEXT:    calll .L23$pb
2007 ; LINUX-32-PIC-NEXT:  .L23$pb:
2008 ; LINUX-32-PIC-NEXT:    popl %eax
2009 ; LINUX-32-PIC-NEXT:  .Ltmp23:
2010 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax
2011 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+64(%eax), %ecx
2012 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
2013 ; LINUX-32-PIC-NEXT:    movl %ecx, 64(%eax)
2014 ; LINUX-32-PIC-NEXT:    retl
2016 ; LINUX-64-PIC-LABEL: qux08:
2017 ; LINUX-64-PIC:       # %bb.0: # %entry
2018 ; LINUX-64-PIC-NEXT:    movl lsrc+64(%rip), %eax
2019 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
2020 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx)
2021 ; LINUX-64-PIC-NEXT:    retq
2023 ; DARWIN-32-STATIC-LABEL: qux08:
2024 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2025 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+64, %eax
2026 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %ecx
2027 ; DARWIN-32-STATIC-NEXT:    movl %eax, 64(%ecx)
2028 ; DARWIN-32-STATIC-NEXT:    retl
2030 ; DARWIN-32-DYNAMIC-LABEL: qux08:
2031 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2032 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+64, %eax
2033 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %ecx
2034 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 64(%ecx)
2035 ; DARWIN-32-DYNAMIC-NEXT:    retl
2037 ; DARWIN-32-PIC-LABEL: qux08:
2038 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2039 ; DARWIN-32-PIC-NEXT:    calll L23$pb
2040 ; DARWIN-32-PIC-NEXT:  L23$pb:
2041 ; DARWIN-32-PIC-NEXT:    popl %eax
2042 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L23$pb)+64(%eax), %ecx
2043 ; DARWIN-32-PIC-NEXT:    movl _lptr-L23$pb(%eax), %eax
2044 ; DARWIN-32-PIC-NEXT:    movl %ecx, 64(%eax)
2045 ; DARWIN-32-PIC-NEXT:    retl
2047 ; DARWIN-64-STATIC-LABEL: qux08:
2048 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2049 ; DARWIN-64-STATIC-NEXT:    movl _lsrc+64(%rip), %eax
2050 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
2051 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx)
2052 ; DARWIN-64-STATIC-NEXT:    retq
2054 ; DARWIN-64-DYNAMIC-LABEL: qux08:
2055 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2056 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc+64(%rip), %eax
2057 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
2058 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx)
2059 ; DARWIN-64-DYNAMIC-NEXT:    retq
2061 ; DARWIN-64-PIC-LABEL: qux08:
2062 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2063 ; DARWIN-64-PIC-NEXT:    movl _lsrc+64(%rip), %eax
2064 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
2065 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx)
2066 ; DARWIN-64-PIC-NEXT:    retq
2068 entry:
2069         %0 = load ptr, ptr @lptr, align 8
2070         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 4
2071         %2 = getelementptr i32, ptr %0, i64 16
2072         store i32 %1, ptr %2, align 4
2073         ret void
2076 define dso_local void @ind00(i64 %i) nounwind {
2077 ; LINUX-64-STATIC-LABEL: ind00:
2078 ; LINUX-64-STATIC:       # %bb.0: # %entry
2079 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
2080 ; LINUX-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2081 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
2082 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2083 ; LINUX-64-STATIC-NEXT:    retq
2085 ; LINUX-32-STATIC-LABEL: ind00:
2086 ; LINUX-32-STATIC:       # %bb.0: # %entry
2087 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2088 ; LINUX-32-STATIC-NEXT:    movl src(,%eax,4), %ecx
2089 ; LINUX-32-STATIC-NEXT:    movl %ecx, dst(,%eax,4)
2090 ; LINUX-32-STATIC-NEXT:    retl
2092 ; LINUX-32-PIC-LABEL: ind00:
2093 ; LINUX-32-PIC:       # %bb.0: # %entry
2094 ; LINUX-32-PIC-NEXT:    calll .L24$pb
2095 ; LINUX-32-PIC-NEXT:  .L24$pb:
2096 ; LINUX-32-PIC-NEXT:    popl %eax
2097 ; LINUX-32-PIC-NEXT:  .Ltmp24:
2098 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax
2099 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2100 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
2101 ; LINUX-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2102 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
2103 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2104 ; LINUX-32-PIC-NEXT:    retl
2106 ; LINUX-64-PIC-LABEL: ind00:
2107 ; LINUX-64-PIC:       # %bb.0: # %entry
2108 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
2109 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2110 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
2111 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2112 ; LINUX-64-PIC-NEXT:    retq
2114 ; DARWIN-32-STATIC-LABEL: ind00:
2115 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2116 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2117 ; DARWIN-32-STATIC-NEXT:    movl _src(,%eax,4), %ecx
2118 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _dst(,%eax,4)
2119 ; DARWIN-32-STATIC-NEXT:    retl
2121 ; DARWIN-32-DYNAMIC-LABEL: ind00:
2122 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2123 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2124 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
2125 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx,%eax,4), %ecx
2126 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %edx
2127 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
2128 ; DARWIN-32-DYNAMIC-NEXT:    retl
2130 ; DARWIN-32-PIC-LABEL: ind00:
2131 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2132 ; DARWIN-32-PIC-NEXT:    calll L24$pb
2133 ; DARWIN-32-PIC-NEXT:  L24$pb:
2134 ; DARWIN-32-PIC-NEXT:    popl %eax
2135 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2136 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L24$pb(%eax), %edx
2137 ; DARWIN-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2138 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax
2139 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2140 ; DARWIN-32-PIC-NEXT:    retl
2142 ; DARWIN-64-STATIC-LABEL: ind00:
2143 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2144 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2145 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2146 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
2147 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2148 ; DARWIN-64-STATIC-NEXT:    retq
2150 ; DARWIN-64-DYNAMIC-LABEL: ind00:
2151 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2152 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2153 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2154 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
2155 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2156 ; DARWIN-64-DYNAMIC-NEXT:    retq
2158 ; DARWIN-64-PIC-LABEL: ind00:
2159 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2160 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2161 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2162 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
2163 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2164 ; DARWIN-64-PIC-NEXT:    retq
2166 entry:
2167         %0 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i
2168         %1 = load i32, ptr %0, align 4
2169         %2 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i
2170         store i32 %1, ptr %2, align 4
2171         ret void
2174 define dso_local void @ixd00(i64 %i) nounwind {
2175 ; LINUX-64-STATIC-LABEL: ixd00:
2176 ; LINUX-64-STATIC:       # %bb.0: # %entry
2177 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
2178 ; LINUX-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2179 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
2180 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2181 ; LINUX-64-STATIC-NEXT:    retq
2183 ; LINUX-32-STATIC-LABEL: ixd00:
2184 ; LINUX-32-STATIC:       # %bb.0: # %entry
2185 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2186 ; LINUX-32-STATIC-NEXT:    movl xsrc(,%eax,4), %ecx
2187 ; LINUX-32-STATIC-NEXT:    movl %ecx, xdst(,%eax,4)
2188 ; LINUX-32-STATIC-NEXT:    retl
2190 ; LINUX-32-PIC-LABEL: ixd00:
2191 ; LINUX-32-PIC:       # %bb.0: # %entry
2192 ; LINUX-32-PIC-NEXT:    calll .L25$pb
2193 ; LINUX-32-PIC-NEXT:  .L25$pb:
2194 ; LINUX-32-PIC-NEXT:    popl %eax
2195 ; LINUX-32-PIC-NEXT:  .Ltmp25:
2196 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax
2197 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2198 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %edx
2199 ; LINUX-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2200 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
2201 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2202 ; LINUX-32-PIC-NEXT:    retl
2204 ; LINUX-64-PIC-LABEL: ixd00:
2205 ; LINUX-64-PIC:       # %bb.0: # %entry
2206 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
2207 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2208 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
2209 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2210 ; LINUX-64-PIC-NEXT:    retq
2212 ; DARWIN-32-STATIC-LABEL: ixd00:
2213 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2214 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2215 ; DARWIN-32-STATIC-NEXT:    movl _xsrc(,%eax,4), %ecx
2216 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _xdst(,%eax,4)
2217 ; DARWIN-32-STATIC-NEXT:    retl
2219 ; DARWIN-32-DYNAMIC-LABEL: ixd00:
2220 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2221 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2222 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
2223 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx,%eax,4), %ecx
2224 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %edx
2225 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
2226 ; DARWIN-32-DYNAMIC-NEXT:    retl
2228 ; DARWIN-32-PIC-LABEL: ixd00:
2229 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2230 ; DARWIN-32-PIC-NEXT:    calll L25$pb
2231 ; DARWIN-32-PIC-NEXT:  L25$pb:
2232 ; DARWIN-32-PIC-NEXT:    popl %eax
2233 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2234 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx
2235 ; DARWIN-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2236 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax
2237 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2238 ; DARWIN-32-PIC-NEXT:    retl
2240 ; DARWIN-64-STATIC-LABEL: ixd00:
2241 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2242 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2243 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2244 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
2245 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2246 ; DARWIN-64-STATIC-NEXT:    retq
2248 ; DARWIN-64-DYNAMIC-LABEL: ixd00:
2249 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2250 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2251 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2252 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
2253 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2254 ; DARWIN-64-DYNAMIC-NEXT:    retq
2256 ; DARWIN-64-PIC-LABEL: ixd00:
2257 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2258 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2259 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2260 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
2261 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2262 ; DARWIN-64-PIC-NEXT:    retq
2264 entry:
2265         %0 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i
2266         %1 = load i32, ptr %0, align 4
2267         %2 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i
2268         store i32 %1, ptr %2, align 4
2269         ret void
2272 define dso_local void @ind01(i64 %i) nounwind {
2273 ; LINUX-64-STATIC-LABEL: ind01:
2274 ; LINUX-64-STATIC:       # %bb.0: # %entry
2275 ; LINUX-64-STATIC-NEXT:    shlq $2, %rdi
2276 ; LINUX-64-STATIC-NEXT:    addq dst@GOTPCREL(%rip), %rdi
2277 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
2278 ; LINUX-64-STATIC-NEXT:    movq %rdi, (%rax)
2279 ; LINUX-64-STATIC-NEXT:    retq
2281 ; LINUX-32-STATIC-LABEL: ind01:
2282 ; LINUX-32-STATIC:       # %bb.0: # %entry
2283 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2284 ; LINUX-32-STATIC-NEXT:    leal dst(,%eax,4), %eax
2285 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
2286 ; LINUX-32-STATIC-NEXT:    retl
2288 ; LINUX-32-PIC-LABEL: ind01:
2289 ; LINUX-32-PIC:       # %bb.0: # %entry
2290 ; LINUX-32-PIC-NEXT:    calll .L26$pb
2291 ; LINUX-32-PIC-NEXT:  .L26$pb:
2292 ; LINUX-32-PIC-NEXT:    popl %eax
2293 ; LINUX-32-PIC-NEXT:  .Ltmp26:
2294 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax
2295 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2296 ; LINUX-32-PIC-NEXT:    shll $2, %ecx
2297 ; LINUX-32-PIC-NEXT:    addl dst@GOT(%eax), %ecx
2298 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
2299 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
2300 ; LINUX-32-PIC-NEXT:    retl
2302 ; LINUX-64-PIC-LABEL: ind01:
2303 ; LINUX-64-PIC:       # %bb.0: # %entry
2304 ; LINUX-64-PIC-NEXT:    shlq $2, %rdi
2305 ; LINUX-64-PIC-NEXT:    addq dst@GOTPCREL(%rip), %rdi
2306 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
2307 ; LINUX-64-PIC-NEXT:    movq %rdi, (%rax)
2308 ; LINUX-64-PIC-NEXT:    retq
2310 ; DARWIN-32-STATIC-LABEL: ind01:
2311 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2312 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2313 ; DARWIN-32-STATIC-NEXT:    leal _dst(,%eax,4), %eax
2314 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ptr
2315 ; DARWIN-32-STATIC-NEXT:    retl
2317 ; DARWIN-32-DYNAMIC-LABEL: ind01:
2318 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2319 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2320 ; DARWIN-32-DYNAMIC-NEXT:    shll $2, %eax
2321 ; DARWIN-32-DYNAMIC-NEXT:    addl L_dst$non_lazy_ptr, %eax
2322 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
2323 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
2324 ; DARWIN-32-DYNAMIC-NEXT:    retl
2326 ; DARWIN-32-PIC-LABEL: ind01:
2327 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2328 ; DARWIN-32-PIC-NEXT:    calll L26$pb
2329 ; DARWIN-32-PIC-NEXT:  L26$pb:
2330 ; DARWIN-32-PIC-NEXT:    popl %eax
2331 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2332 ; DARWIN-32-PIC-NEXT:    shll $2, %ecx
2333 ; DARWIN-32-PIC-NEXT:    addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx
2334 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax
2335 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
2336 ; DARWIN-32-PIC-NEXT:    retl
2338 ; DARWIN-64-STATIC-LABEL: ind01:
2339 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2340 ; DARWIN-64-STATIC-NEXT:    shlq $2, %rdi
2341 ; DARWIN-64-STATIC-NEXT:    addq _dst@GOTPCREL(%rip), %rdi
2342 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2343 ; DARWIN-64-STATIC-NEXT:    movq %rdi, (%rax)
2344 ; DARWIN-64-STATIC-NEXT:    retq
2346 ; DARWIN-64-DYNAMIC-LABEL: ind01:
2347 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2348 ; DARWIN-64-DYNAMIC-NEXT:    shlq $2, %rdi
2349 ; DARWIN-64-DYNAMIC-NEXT:    addq _dst@GOTPCREL(%rip), %rdi
2350 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2351 ; DARWIN-64-DYNAMIC-NEXT:    movq %rdi, (%rax)
2352 ; DARWIN-64-DYNAMIC-NEXT:    retq
2354 ; DARWIN-64-PIC-LABEL: ind01:
2355 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2356 ; DARWIN-64-PIC-NEXT:    shlq $2, %rdi
2357 ; DARWIN-64-PIC-NEXT:    addq _dst@GOTPCREL(%rip), %rdi
2358 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2359 ; DARWIN-64-PIC-NEXT:    movq %rdi, (%rax)
2360 ; DARWIN-64-PIC-NEXT:    retq
2362 entry:
2363         %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i
2364         store ptr %0, ptr @ptr, align 8
2365         ret void
2368 define dso_local void @ixd01(i64 %i) nounwind {
2369 ; LINUX-64-STATIC-LABEL: ixd01:
2370 ; LINUX-64-STATIC:       # %bb.0: # %entry
2371 ; LINUX-64-STATIC-NEXT:    shlq $2, %rdi
2372 ; LINUX-64-STATIC-NEXT:    addq xdst@GOTPCREL(%rip), %rdi
2373 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
2374 ; LINUX-64-STATIC-NEXT:    movq %rdi, (%rax)
2375 ; LINUX-64-STATIC-NEXT:    retq
2377 ; LINUX-32-STATIC-LABEL: ixd01:
2378 ; LINUX-32-STATIC:       # %bb.0: # %entry
2379 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2380 ; LINUX-32-STATIC-NEXT:    leal xdst(,%eax,4), %eax
2381 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
2382 ; LINUX-32-STATIC-NEXT:    retl
2384 ; LINUX-32-PIC-LABEL: ixd01:
2385 ; LINUX-32-PIC:       # %bb.0: # %entry
2386 ; LINUX-32-PIC-NEXT:    calll .L27$pb
2387 ; LINUX-32-PIC-NEXT:  .L27$pb:
2388 ; LINUX-32-PIC-NEXT:    popl %eax
2389 ; LINUX-32-PIC-NEXT:  .Ltmp27:
2390 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax
2391 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2392 ; LINUX-32-PIC-NEXT:    shll $2, %ecx
2393 ; LINUX-32-PIC-NEXT:    addl xdst@GOT(%eax), %ecx
2394 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
2395 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
2396 ; LINUX-32-PIC-NEXT:    retl
2398 ; LINUX-64-PIC-LABEL: ixd01:
2399 ; LINUX-64-PIC:       # %bb.0: # %entry
2400 ; LINUX-64-PIC-NEXT:    shlq $2, %rdi
2401 ; LINUX-64-PIC-NEXT:    addq xdst@GOTPCREL(%rip), %rdi
2402 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
2403 ; LINUX-64-PIC-NEXT:    movq %rdi, (%rax)
2404 ; LINUX-64-PIC-NEXT:    retq
2406 ; DARWIN-32-STATIC-LABEL: ixd01:
2407 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2408 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2409 ; DARWIN-32-STATIC-NEXT:    leal _xdst(,%eax,4), %eax
2410 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ptr
2411 ; DARWIN-32-STATIC-NEXT:    retl
2413 ; DARWIN-32-DYNAMIC-LABEL: ixd01:
2414 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2415 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2416 ; DARWIN-32-DYNAMIC-NEXT:    shll $2, %eax
2417 ; DARWIN-32-DYNAMIC-NEXT:    addl L_xdst$non_lazy_ptr, %eax
2418 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
2419 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
2420 ; DARWIN-32-DYNAMIC-NEXT:    retl
2422 ; DARWIN-32-PIC-LABEL: ixd01:
2423 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2424 ; DARWIN-32-PIC-NEXT:    calll L27$pb
2425 ; DARWIN-32-PIC-NEXT:  L27$pb:
2426 ; DARWIN-32-PIC-NEXT:    popl %eax
2427 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2428 ; DARWIN-32-PIC-NEXT:    shll $2, %ecx
2429 ; DARWIN-32-PIC-NEXT:    addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx
2430 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax
2431 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
2432 ; DARWIN-32-PIC-NEXT:    retl
2434 ; DARWIN-64-STATIC-LABEL: ixd01:
2435 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2436 ; DARWIN-64-STATIC-NEXT:    shlq $2, %rdi
2437 ; DARWIN-64-STATIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rdi
2438 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2439 ; DARWIN-64-STATIC-NEXT:    movq %rdi, (%rax)
2440 ; DARWIN-64-STATIC-NEXT:    retq
2442 ; DARWIN-64-DYNAMIC-LABEL: ixd01:
2443 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2444 ; DARWIN-64-DYNAMIC-NEXT:    shlq $2, %rdi
2445 ; DARWIN-64-DYNAMIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rdi
2446 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2447 ; DARWIN-64-DYNAMIC-NEXT:    movq %rdi, (%rax)
2448 ; DARWIN-64-DYNAMIC-NEXT:    retq
2450 ; DARWIN-64-PIC-LABEL: ixd01:
2451 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2452 ; DARWIN-64-PIC-NEXT:    shlq $2, %rdi
2453 ; DARWIN-64-PIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rdi
2454 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
2455 ; DARWIN-64-PIC-NEXT:    movq %rdi, (%rax)
2456 ; DARWIN-64-PIC-NEXT:    retq
2458 entry:
2459         %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i
2460         store ptr %0, ptr @ptr, align 8
2461         ret void
2464 define dso_local void @ind02(i64 %i) nounwind {
2465 ; LINUX-64-STATIC-LABEL: ind02:
2466 ; LINUX-64-STATIC:       # %bb.0: # %entry
2467 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
2468 ; LINUX-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2469 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
2470 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
2471 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2472 ; LINUX-64-STATIC-NEXT:    retq
2474 ; LINUX-32-STATIC-LABEL: ind02:
2475 ; LINUX-32-STATIC:       # %bb.0: # %entry
2476 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2477 ; LINUX-32-STATIC-NEXT:    movl src(,%eax,4), %ecx
2478 ; LINUX-32-STATIC-NEXT:    movl ptr, %edx
2479 ; LINUX-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2480 ; LINUX-32-STATIC-NEXT:    retl
2482 ; LINUX-32-PIC-LABEL: ind02:
2483 ; LINUX-32-PIC:       # %bb.0: # %entry
2484 ; LINUX-32-PIC-NEXT:    calll .L28$pb
2485 ; LINUX-32-PIC-NEXT:  .L28$pb:
2486 ; LINUX-32-PIC-NEXT:    popl %eax
2487 ; LINUX-32-PIC-NEXT:  .Ltmp28:
2488 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax
2489 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2490 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
2491 ; LINUX-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2492 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
2493 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
2494 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2495 ; LINUX-32-PIC-NEXT:    retl
2497 ; LINUX-64-PIC-LABEL: ind02:
2498 ; LINUX-64-PIC:       # %bb.0: # %entry
2499 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
2500 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2501 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
2502 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
2503 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2504 ; LINUX-64-PIC-NEXT:    retq
2506 ; DARWIN-32-STATIC-LABEL: ind02:
2507 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2508 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2509 ; DARWIN-32-STATIC-NEXT:    movl _src(,%eax,4), %ecx
2510 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %edx
2511 ; DARWIN-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2512 ; DARWIN-32-STATIC-NEXT:    retl
2514 ; DARWIN-32-DYNAMIC-LABEL: ind02:
2515 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2516 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2517 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
2518 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx,%eax,4), %ecx
2519 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %edx
2520 ; DARWIN-32-DYNAMIC-NEXT:    movl (%edx), %edx
2521 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
2522 ; DARWIN-32-DYNAMIC-NEXT:    retl
2524 ; DARWIN-32-PIC-LABEL: ind02:
2525 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2526 ; DARWIN-32-PIC-NEXT:    calll L28$pb
2527 ; DARWIN-32-PIC-NEXT:  L28$pb:
2528 ; DARWIN-32-PIC-NEXT:    popl %eax
2529 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2530 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L28$pb(%eax), %edx
2531 ; DARWIN-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2532 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax
2533 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
2534 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2535 ; DARWIN-32-PIC-NEXT:    retl
2537 ; DARWIN-64-STATIC-LABEL: ind02:
2538 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2539 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2540 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2541 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2542 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
2543 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2544 ; DARWIN-64-STATIC-NEXT:    retq
2546 ; DARWIN-64-DYNAMIC-LABEL: ind02:
2547 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2548 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2549 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2550 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2551 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
2552 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2553 ; DARWIN-64-DYNAMIC-NEXT:    retq
2555 ; DARWIN-64-PIC-LABEL: ind02:
2556 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2557 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
2558 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2559 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2560 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
2561 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2562 ; DARWIN-64-PIC-NEXT:    retq
2564 entry:
2565         %0 = load ptr, ptr @ptr, align 8
2566         %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i
2567         %2 = load i32, ptr %1, align 4
2568         %3 = getelementptr i32, ptr %0, i64 %i
2569         store i32 %2, ptr %3, align 4
2570         ret void
2573 define dso_local void @ixd02(i64 %i) nounwind {
2574 ; LINUX-64-STATIC-LABEL: ixd02:
2575 ; LINUX-64-STATIC:       # %bb.0: # %entry
2576 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
2577 ; LINUX-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2578 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
2579 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
2580 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2581 ; LINUX-64-STATIC-NEXT:    retq
2583 ; LINUX-32-STATIC-LABEL: ixd02:
2584 ; LINUX-32-STATIC:       # %bb.0: # %entry
2585 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2586 ; LINUX-32-STATIC-NEXT:    movl xsrc(,%eax,4), %ecx
2587 ; LINUX-32-STATIC-NEXT:    movl ptr, %edx
2588 ; LINUX-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2589 ; LINUX-32-STATIC-NEXT:    retl
2591 ; LINUX-32-PIC-LABEL: ixd02:
2592 ; LINUX-32-PIC:       # %bb.0: # %entry
2593 ; LINUX-32-PIC-NEXT:    calll .L29$pb
2594 ; LINUX-32-PIC-NEXT:  .L29$pb:
2595 ; LINUX-32-PIC-NEXT:    popl %eax
2596 ; LINUX-32-PIC-NEXT:  .Ltmp29:
2597 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax
2598 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2599 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %edx
2600 ; LINUX-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2601 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
2602 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
2603 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2604 ; LINUX-32-PIC-NEXT:    retl
2606 ; LINUX-64-PIC-LABEL: ixd02:
2607 ; LINUX-64-PIC:       # %bb.0: # %entry
2608 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
2609 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2610 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
2611 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
2612 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2613 ; LINUX-64-PIC-NEXT:    retq
2615 ; DARWIN-32-STATIC-LABEL: ixd02:
2616 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2617 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2618 ; DARWIN-32-STATIC-NEXT:    movl _xsrc(,%eax,4), %ecx
2619 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %edx
2620 ; DARWIN-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2621 ; DARWIN-32-STATIC-NEXT:    retl
2623 ; DARWIN-32-DYNAMIC-LABEL: ixd02:
2624 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2625 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2626 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
2627 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx,%eax,4), %ecx
2628 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %edx
2629 ; DARWIN-32-DYNAMIC-NEXT:    movl (%edx), %edx
2630 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
2631 ; DARWIN-32-DYNAMIC-NEXT:    retl
2633 ; DARWIN-32-PIC-LABEL: ixd02:
2634 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2635 ; DARWIN-32-PIC-NEXT:    calll L29$pb
2636 ; DARWIN-32-PIC-NEXT:  L29$pb:
2637 ; DARWIN-32-PIC-NEXT:    popl %eax
2638 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2639 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx
2640 ; DARWIN-32-PIC-NEXT:    movl (%edx,%ecx,4), %edx
2641 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax
2642 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
2643 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2644 ; DARWIN-32-PIC-NEXT:    retl
2646 ; DARWIN-64-STATIC-LABEL: ixd02:
2647 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2648 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2649 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2650 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2651 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
2652 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2653 ; DARWIN-64-STATIC-NEXT:    retq
2655 ; DARWIN-64-DYNAMIC-LABEL: ixd02:
2656 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2657 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2658 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2659 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2660 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
2661 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2662 ; DARWIN-64-DYNAMIC-NEXT:    retq
2664 ; DARWIN-64-PIC-LABEL: ixd02:
2665 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2666 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
2667 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2668 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
2669 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
2670 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2671 ; DARWIN-64-PIC-NEXT:    retq
2673 entry:
2674         %0 = load ptr, ptr @ptr, align 8
2675         %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i
2676         %2 = load i32, ptr %1, align 4
2677         %3 = getelementptr i32, ptr %0, i64 %i
2678         store i32 %2, ptr %3, align 4
2679         ret void
2682 define dso_local void @ind03(i64 %i) nounwind {
2683 ; LINUX-64-STATIC-LABEL: ind03:
2684 ; LINUX-64-STATIC:       # %bb.0: # %entry
2685 ; LINUX-64-STATIC-NEXT:    movl dsrc(,%rdi,4), %eax
2686 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst(,%rdi,4)
2687 ; LINUX-64-STATIC-NEXT:    retq
2689 ; LINUX-32-STATIC-LABEL: ind03:
2690 ; LINUX-32-STATIC:       # %bb.0: # %entry
2691 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2692 ; LINUX-32-STATIC-NEXT:    movl dsrc(,%eax,4), %ecx
2693 ; LINUX-32-STATIC-NEXT:    movl %ecx, ddst(,%eax,4)
2694 ; LINUX-32-STATIC-NEXT:    retl
2696 ; LINUX-32-PIC-LABEL: ind03:
2697 ; LINUX-32-PIC:       # %bb.0: # %entry
2698 ; LINUX-32-PIC-NEXT:    calll .L30$pb
2699 ; LINUX-32-PIC-NEXT:  .L30$pb:
2700 ; LINUX-32-PIC-NEXT:    popl %eax
2701 ; LINUX-32-PIC-NEXT:  .Ltmp30:
2702 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax
2703 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2704 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx
2705 ; LINUX-32-PIC-NEXT:    movl %edx, .Lddst$local@GOTOFF(%eax,%ecx,4)
2706 ; LINUX-32-PIC-NEXT:    retl
2708 ; LINUX-64-PIC-LABEL: ind03:
2709 ; LINUX-64-PIC:       # %bb.0: # %entry
2710 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
2711 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2712 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rcx
2713 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2714 ; LINUX-64-PIC-NEXT:    retq
2716 ; DARWIN-32-STATIC-LABEL: ind03:
2717 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2718 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2719 ; DARWIN-32-STATIC-NEXT:    movl _dsrc(,%eax,4), %ecx
2720 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ddst(,%eax,4)
2721 ; DARWIN-32-STATIC-NEXT:    retl
2723 ; DARWIN-32-DYNAMIC-LABEL: ind03:
2724 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2725 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2726 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc(,%eax,4), %ecx
2727 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ddst(,%eax,4)
2728 ; DARWIN-32-DYNAMIC-NEXT:    retl
2730 ; DARWIN-32-PIC-LABEL: ind03:
2731 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2732 ; DARWIN-32-PIC-NEXT:    calll L30$pb
2733 ; DARWIN-32-PIC-NEXT:  L30$pb:
2734 ; DARWIN-32-PIC-NEXT:    popl %eax
2735 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2736 ; DARWIN-32-PIC-NEXT:    movl _dsrc-L30$pb(%eax,%ecx,4), %edx
2737 ; DARWIN-32-PIC-NEXT:    movl %edx, _ddst-L30$pb(%eax,%ecx,4)
2738 ; DARWIN-32-PIC-NEXT:    retl
2740 ; DARWIN-64-STATIC-LABEL: ind03:
2741 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2742 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
2743 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2744 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rcx
2745 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2746 ; DARWIN-64-STATIC-NEXT:    retq
2748 ; DARWIN-64-DYNAMIC-LABEL: ind03:
2749 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2750 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
2751 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2752 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rcx
2753 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2754 ; DARWIN-64-DYNAMIC-NEXT:    retq
2756 ; DARWIN-64-PIC-LABEL: ind03:
2757 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2758 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
2759 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2760 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rcx
2761 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2762 ; DARWIN-64-PIC-NEXT:    retq
2764 entry:
2765         %0 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i
2766         %1 = load i32, ptr %0, align 4
2767         %2 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i
2768         store i32 %1, ptr %2, align 4
2769         ret void
2772 define dso_local void @ind04(i64 %i) nounwind {
2773 ; LINUX-64-STATIC-LABEL: ind04:
2774 ; LINUX-64-STATIC:       # %bb.0: # %entry
2775 ; LINUX-64-STATIC-NEXT:    leaq ddst(,%rdi,4), %rax
2776 ; LINUX-64-STATIC-NEXT:    movq %rax, dptr(%rip)
2777 ; LINUX-64-STATIC-NEXT:    retq
2779 ; LINUX-32-STATIC-LABEL: ind04:
2780 ; LINUX-32-STATIC:       # %bb.0: # %entry
2781 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2782 ; LINUX-32-STATIC-NEXT:    leal ddst(,%eax,4), %eax
2783 ; LINUX-32-STATIC-NEXT:    movl %eax, dptr
2784 ; LINUX-32-STATIC-NEXT:    retl
2786 ; LINUX-32-PIC-LABEL: ind04:
2787 ; LINUX-32-PIC:       # %bb.0: # %entry
2788 ; LINUX-32-PIC-NEXT:    calll .L31$pb
2789 ; LINUX-32-PIC-NEXT:  .L31$pb:
2790 ; LINUX-32-PIC-NEXT:    popl %eax
2791 ; LINUX-32-PIC-NEXT:  .Ltmp31:
2792 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax
2793 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2794 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF(%eax,%ecx,4), %ecx
2795 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
2796 ; LINUX-32-PIC-NEXT:    retl
2798 ; LINUX-64-PIC-LABEL: ind04:
2799 ; LINUX-64-PIC:       # %bb.0: # %entry
2800 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
2801 ; LINUX-64-PIC-NEXT:    leaq (%rax,%rdi,4), %rax
2802 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
2803 ; LINUX-64-PIC-NEXT:    retq
2805 ; DARWIN-32-STATIC-LABEL: ind04:
2806 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2807 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2808 ; DARWIN-32-STATIC-NEXT:    leal _ddst(,%eax,4), %eax
2809 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dptr
2810 ; DARWIN-32-STATIC-NEXT:    retl
2812 ; DARWIN-32-DYNAMIC-LABEL: ind04:
2813 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2814 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2815 ; DARWIN-32-DYNAMIC-NEXT:    leal _ddst(,%eax,4), %eax
2816 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _dptr
2817 ; DARWIN-32-DYNAMIC-NEXT:    retl
2819 ; DARWIN-32-PIC-LABEL: ind04:
2820 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2821 ; DARWIN-32-PIC-NEXT:    calll L31$pb
2822 ; DARWIN-32-PIC-NEXT:  L31$pb:
2823 ; DARWIN-32-PIC-NEXT:    popl %eax
2824 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2825 ; DARWIN-32-PIC-NEXT:    leal _ddst-L31$pb(%eax,%ecx,4), %ecx
2826 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L31$pb(%eax)
2827 ; DARWIN-32-PIC-NEXT:    retl
2829 ; DARWIN-64-STATIC-LABEL: ind04:
2830 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2831 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
2832 ; DARWIN-64-STATIC-NEXT:    leaq (%rax,%rdi,4), %rax
2833 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
2834 ; DARWIN-64-STATIC-NEXT:    retq
2836 ; DARWIN-64-DYNAMIC-LABEL: ind04:
2837 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2838 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
2839 ; DARWIN-64-DYNAMIC-NEXT:    leaq (%rax,%rdi,4), %rax
2840 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
2841 ; DARWIN-64-DYNAMIC-NEXT:    retq
2843 ; DARWIN-64-PIC-LABEL: ind04:
2844 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2845 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
2846 ; DARWIN-64-PIC-NEXT:    leaq (%rax,%rdi,4), %rax
2847 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
2848 ; DARWIN-64-PIC-NEXT:    retq
2850 entry:
2851         %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i
2852         store ptr %0, ptr @dptr, align 8
2853         ret void
2856 define dso_local void @ind05(i64 %i) nounwind {
2857 ; LINUX-64-STATIC-LABEL: ind05:
2858 ; LINUX-64-STATIC:       # %bb.0: # %entry
2859 ; LINUX-64-STATIC-NEXT:    movl dsrc(,%rdi,4), %eax
2860 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
2861 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2862 ; LINUX-64-STATIC-NEXT:    retq
2864 ; LINUX-32-STATIC-LABEL: ind05:
2865 ; LINUX-32-STATIC:       # %bb.0: # %entry
2866 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2867 ; LINUX-32-STATIC-NEXT:    movl dsrc(,%eax,4), %ecx
2868 ; LINUX-32-STATIC-NEXT:    movl dptr, %edx
2869 ; LINUX-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2870 ; LINUX-32-STATIC-NEXT:    retl
2872 ; LINUX-32-PIC-LABEL: ind05:
2873 ; LINUX-32-PIC:       # %bb.0: # %entry
2874 ; LINUX-32-PIC-NEXT:    calll .L32$pb
2875 ; LINUX-32-PIC-NEXT:  .L32$pb:
2876 ; LINUX-32-PIC-NEXT:    popl %eax
2877 ; LINUX-32-PIC-NEXT:  .Ltmp32:
2878 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax
2879 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2880 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx
2881 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
2882 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2883 ; LINUX-32-PIC-NEXT:    retl
2885 ; LINUX-64-PIC-LABEL: ind05:
2886 ; LINUX-64-PIC:       # %bb.0: # %entry
2887 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
2888 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2889 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
2890 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2891 ; LINUX-64-PIC-NEXT:    retq
2893 ; DARWIN-32-STATIC-LABEL: ind05:
2894 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2895 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2896 ; DARWIN-32-STATIC-NEXT:    movl _dsrc(,%eax,4), %ecx
2897 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %edx
2898 ; DARWIN-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
2899 ; DARWIN-32-STATIC-NEXT:    retl
2901 ; DARWIN-32-DYNAMIC-LABEL: ind05:
2902 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2903 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2904 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc(,%eax,4), %ecx
2905 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %edx
2906 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
2907 ; DARWIN-32-DYNAMIC-NEXT:    retl
2909 ; DARWIN-32-PIC-LABEL: ind05:
2910 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
2911 ; DARWIN-32-PIC-NEXT:    calll L32$pb
2912 ; DARWIN-32-PIC-NEXT:  L32$pb:
2913 ; DARWIN-32-PIC-NEXT:    popl %eax
2914 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2915 ; DARWIN-32-PIC-NEXT:    movl _dsrc-L32$pb(%eax,%ecx,4), %edx
2916 ; DARWIN-32-PIC-NEXT:    movl _dptr-L32$pb(%eax), %eax
2917 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
2918 ; DARWIN-32-PIC-NEXT:    retl
2920 ; DARWIN-64-STATIC-LABEL: ind05:
2921 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
2922 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
2923 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
2924 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
2925 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2926 ; DARWIN-64-STATIC-NEXT:    retq
2928 ; DARWIN-64-DYNAMIC-LABEL: ind05:
2929 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
2930 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
2931 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
2932 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
2933 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2934 ; DARWIN-64-DYNAMIC-NEXT:    retq
2936 ; DARWIN-64-PIC-LABEL: ind05:
2937 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
2938 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
2939 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2940 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
2941 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2942 ; DARWIN-64-PIC-NEXT:    retq
2944 entry:
2945         %0 = load ptr, ptr @dptr, align 8
2946         %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i
2947         %2 = load i32, ptr %1, align 4
2948         %3 = getelementptr i32, ptr %0, i64 %i
2949         store i32 %2, ptr %3, align 4
2950         ret void
2953 define dso_local void @ind06(i64 %i) nounwind {
2954 ; LINUX-64-STATIC-LABEL: ind06:
2955 ; LINUX-64-STATIC:       # %bb.0: # %entry
2956 ; LINUX-64-STATIC-NEXT:    movl lsrc(,%rdi,4), %eax
2957 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst(,%rdi,4)
2958 ; LINUX-64-STATIC-NEXT:    retq
2960 ; LINUX-32-STATIC-LABEL: ind06:
2961 ; LINUX-32-STATIC:       # %bb.0: # %entry
2962 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2963 ; LINUX-32-STATIC-NEXT:    movl lsrc(,%eax,4), %ecx
2964 ; LINUX-32-STATIC-NEXT:    movl %ecx, ldst(,%eax,4)
2965 ; LINUX-32-STATIC-NEXT:    retl
2967 ; LINUX-32-PIC-LABEL: ind06:
2968 ; LINUX-32-PIC:       # %bb.0: # %entry
2969 ; LINUX-32-PIC-NEXT:    calll .L33$pb
2970 ; LINUX-32-PIC-NEXT:  .L33$pb:
2971 ; LINUX-32-PIC-NEXT:    popl %eax
2972 ; LINUX-32-PIC-NEXT:  .Ltmp33:
2973 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax
2974 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2975 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF(%eax,%ecx,4), %edx
2976 ; LINUX-32-PIC-NEXT:    movl %edx, ldst@GOTOFF(%eax,%ecx,4)
2977 ; LINUX-32-PIC-NEXT:    retl
2979 ; LINUX-64-PIC-LABEL: ind06:
2980 ; LINUX-64-PIC:       # %bb.0: # %entry
2981 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
2982 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
2983 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rcx
2984 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
2985 ; LINUX-64-PIC-NEXT:    retq
2987 ; DARWIN-32-STATIC-LABEL: ind06:
2988 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
2989 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2990 ; DARWIN-32-STATIC-NEXT:    movl _lsrc(,%eax,4), %ecx
2991 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ldst(,%eax,4)
2992 ; DARWIN-32-STATIC-NEXT:    retl
2994 ; DARWIN-32-DYNAMIC-LABEL: ind06:
2995 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
2996 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
2997 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc(,%eax,4), %ecx
2998 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ldst(,%eax,4)
2999 ; DARWIN-32-DYNAMIC-NEXT:    retl
3001 ; DARWIN-32-PIC-LABEL: ind06:
3002 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3003 ; DARWIN-32-PIC-NEXT:    calll L33$pb
3004 ; DARWIN-32-PIC-NEXT:  L33$pb:
3005 ; DARWIN-32-PIC-NEXT:    popl %eax
3006 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3007 ; DARWIN-32-PIC-NEXT:    movl _lsrc-L33$pb(%eax,%ecx,4), %edx
3008 ; DARWIN-32-PIC-NEXT:    movl %edx, _ldst-L33$pb(%eax,%ecx,4)
3009 ; DARWIN-32-PIC-NEXT:    retl
3011 ; DARWIN-64-STATIC-LABEL: ind06:
3012 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3013 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
3014 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
3015 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rcx
3016 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3017 ; DARWIN-64-STATIC-NEXT:    retq
3019 ; DARWIN-64-DYNAMIC-LABEL: ind06:
3020 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3021 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
3022 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
3023 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rcx
3024 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3025 ; DARWIN-64-DYNAMIC-NEXT:    retq
3027 ; DARWIN-64-PIC-LABEL: ind06:
3028 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3029 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
3030 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
3031 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rcx
3032 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3033 ; DARWIN-64-PIC-NEXT:    retq
3035 entry:
3036         %0 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i
3037         %1 = load i32, ptr %0, align 4
3038         %2 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i
3039         store i32 %1, ptr %2, align 4
3040         ret void
3043 define dso_local void @ind07(i64 %i) nounwind {
3044 ; LINUX-64-STATIC-LABEL: ind07:
3045 ; LINUX-64-STATIC:       # %bb.0: # %entry
3046 ; LINUX-64-STATIC-NEXT:    leaq ldst(,%rdi,4), %rax
3047 ; LINUX-64-STATIC-NEXT:    movq %rax, lptr(%rip)
3048 ; LINUX-64-STATIC-NEXT:    retq
3050 ; LINUX-32-STATIC-LABEL: ind07:
3051 ; LINUX-32-STATIC:       # %bb.0: # %entry
3052 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3053 ; LINUX-32-STATIC-NEXT:    leal ldst(,%eax,4), %eax
3054 ; LINUX-32-STATIC-NEXT:    movl %eax, lptr
3055 ; LINUX-32-STATIC-NEXT:    retl
3057 ; LINUX-32-PIC-LABEL: ind07:
3058 ; LINUX-32-PIC:       # %bb.0: # %entry
3059 ; LINUX-32-PIC-NEXT:    calll .L34$pb
3060 ; LINUX-32-PIC-NEXT:  .L34$pb:
3061 ; LINUX-32-PIC-NEXT:    popl %eax
3062 ; LINUX-32-PIC-NEXT:  .Ltmp34:
3063 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax
3064 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3065 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF(%eax,%ecx,4), %ecx
3066 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
3067 ; LINUX-32-PIC-NEXT:    retl
3069 ; LINUX-64-PIC-LABEL: ind07:
3070 ; LINUX-64-PIC:       # %bb.0: # %entry
3071 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
3072 ; LINUX-64-PIC-NEXT:    leaq (%rax,%rdi,4), %rax
3073 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
3074 ; LINUX-64-PIC-NEXT:    retq
3076 ; DARWIN-32-STATIC-LABEL: ind07:
3077 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3078 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3079 ; DARWIN-32-STATIC-NEXT:    leal _ldst(,%eax,4), %eax
3080 ; DARWIN-32-STATIC-NEXT:    movl %eax, _lptr
3081 ; DARWIN-32-STATIC-NEXT:    retl
3083 ; DARWIN-32-DYNAMIC-LABEL: ind07:
3084 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3085 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3086 ; DARWIN-32-DYNAMIC-NEXT:    leal _ldst(,%eax,4), %eax
3087 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _lptr
3088 ; DARWIN-32-DYNAMIC-NEXT:    retl
3090 ; DARWIN-32-PIC-LABEL: ind07:
3091 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3092 ; DARWIN-32-PIC-NEXT:    calll L34$pb
3093 ; DARWIN-32-PIC-NEXT:  L34$pb:
3094 ; DARWIN-32-PIC-NEXT:    popl %eax
3095 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3096 ; DARWIN-32-PIC-NEXT:    leal _ldst-L34$pb(%eax,%ecx,4), %ecx
3097 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L34$pb(%eax)
3098 ; DARWIN-32-PIC-NEXT:    retl
3100 ; DARWIN-64-STATIC-LABEL: ind07:
3101 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3102 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
3103 ; DARWIN-64-STATIC-NEXT:    leaq (%rax,%rdi,4), %rax
3104 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
3105 ; DARWIN-64-STATIC-NEXT:    retq
3107 ; DARWIN-64-DYNAMIC-LABEL: ind07:
3108 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3109 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
3110 ; DARWIN-64-DYNAMIC-NEXT:    leaq (%rax,%rdi,4), %rax
3111 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
3112 ; DARWIN-64-DYNAMIC-NEXT:    retq
3114 ; DARWIN-64-PIC-LABEL: ind07:
3115 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3116 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
3117 ; DARWIN-64-PIC-NEXT:    leaq (%rax,%rdi,4), %rax
3118 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
3119 ; DARWIN-64-PIC-NEXT:    retq
3121 entry:
3122         %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i
3123         store ptr %0, ptr @lptr, align 8
3124         ret void
3127 define dso_local void @ind08(i64 %i) nounwind {
3128 ; LINUX-64-STATIC-LABEL: ind08:
3129 ; LINUX-64-STATIC:       # %bb.0: # %entry
3130 ; LINUX-64-STATIC-NEXT:    movl lsrc(,%rdi,4), %eax
3131 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
3132 ; LINUX-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3133 ; LINUX-64-STATIC-NEXT:    retq
3135 ; LINUX-32-STATIC-LABEL: ind08:
3136 ; LINUX-32-STATIC:       # %bb.0: # %entry
3137 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3138 ; LINUX-32-STATIC-NEXT:    movl lsrc(,%eax,4), %ecx
3139 ; LINUX-32-STATIC-NEXT:    movl lptr, %edx
3140 ; LINUX-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
3141 ; LINUX-32-STATIC-NEXT:    retl
3143 ; LINUX-32-PIC-LABEL: ind08:
3144 ; LINUX-32-PIC:       # %bb.0: # %entry
3145 ; LINUX-32-PIC-NEXT:    calll .L35$pb
3146 ; LINUX-32-PIC-NEXT:  .L35$pb:
3147 ; LINUX-32-PIC-NEXT:    popl %eax
3148 ; LINUX-32-PIC-NEXT:  .Ltmp35:
3149 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax
3150 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3151 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF(%eax,%ecx,4), %edx
3152 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
3153 ; LINUX-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
3154 ; LINUX-32-PIC-NEXT:    retl
3156 ; LINUX-64-PIC-LABEL: ind08:
3157 ; LINUX-64-PIC:       # %bb.0: # %entry
3158 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
3159 ; LINUX-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
3160 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
3161 ; LINUX-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3162 ; LINUX-64-PIC-NEXT:    retq
3164 ; DARWIN-32-STATIC-LABEL: ind08:
3165 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3166 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3167 ; DARWIN-32-STATIC-NEXT:    movl _lsrc(,%eax,4), %ecx
3168 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %edx
3169 ; DARWIN-32-STATIC-NEXT:    movl %ecx, (%edx,%eax,4)
3170 ; DARWIN-32-STATIC-NEXT:    retl
3172 ; DARWIN-32-DYNAMIC-LABEL: ind08:
3173 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3174 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3175 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc(,%eax,4), %ecx
3176 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %edx
3177 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, (%edx,%eax,4)
3178 ; DARWIN-32-DYNAMIC-NEXT:    retl
3180 ; DARWIN-32-PIC-LABEL: ind08:
3181 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3182 ; DARWIN-32-PIC-NEXT:    calll L35$pb
3183 ; DARWIN-32-PIC-NEXT:  L35$pb:
3184 ; DARWIN-32-PIC-NEXT:    popl %eax
3185 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3186 ; DARWIN-32-PIC-NEXT:    movl _lsrc-L35$pb(%eax,%ecx,4), %edx
3187 ; DARWIN-32-PIC-NEXT:    movl _lptr-L35$pb(%eax), %eax
3188 ; DARWIN-32-PIC-NEXT:    movl %edx, (%eax,%ecx,4)
3189 ; DARWIN-32-PIC-NEXT:    retl
3191 ; DARWIN-64-STATIC-LABEL: ind08:
3192 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3193 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
3194 ; DARWIN-64-STATIC-NEXT:    movl (%rax,%rdi,4), %eax
3195 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
3196 ; DARWIN-64-STATIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3197 ; DARWIN-64-STATIC-NEXT:    retq
3199 ; DARWIN-64-DYNAMIC-LABEL: ind08:
3200 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3201 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
3202 ; DARWIN-64-DYNAMIC-NEXT:    movl (%rax,%rdi,4), %eax
3203 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
3204 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3205 ; DARWIN-64-DYNAMIC-NEXT:    retq
3207 ; DARWIN-64-PIC-LABEL: ind08:
3208 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3209 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
3210 ; DARWIN-64-PIC-NEXT:    movl (%rax,%rdi,4), %eax
3211 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
3212 ; DARWIN-64-PIC-NEXT:    movl %eax, (%rcx,%rdi,4)
3213 ; DARWIN-64-PIC-NEXT:    retq
3215 entry:
3216         %0 = load ptr, ptr @lptr, align 8
3217         %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i
3218         %2 = load i32, ptr %1, align 4
3219         %3 = getelementptr i32, ptr %0, i64 %i
3220         store i32 %2, ptr %3, align 4
3221         ret void
3224 define dso_local void @off00(i64 %i) nounwind {
3225 ; LINUX-64-STATIC-LABEL: off00:
3226 ; LINUX-64-STATIC:       # %bb.0: # %entry
3227 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
3228 ; LINUX-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3229 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
3230 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3231 ; LINUX-64-STATIC-NEXT:    retq
3233 ; LINUX-32-STATIC-LABEL: off00:
3234 ; LINUX-32-STATIC:       # %bb.0: # %entry
3235 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3236 ; LINUX-32-STATIC-NEXT:    movl src+64(,%eax,4), %ecx
3237 ; LINUX-32-STATIC-NEXT:    movl %ecx, dst+64(,%eax,4)
3238 ; LINUX-32-STATIC-NEXT:    retl
3240 ; LINUX-32-PIC-LABEL: off00:
3241 ; LINUX-32-PIC:       # %bb.0: # %entry
3242 ; LINUX-32-PIC-NEXT:    calll .L36$pb
3243 ; LINUX-32-PIC-NEXT:  .L36$pb:
3244 ; LINUX-32-PIC-NEXT:    popl %eax
3245 ; LINUX-32-PIC-NEXT:  .Ltmp36:
3246 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax
3247 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3248 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
3249 ; LINUX-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3250 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
3251 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3252 ; LINUX-32-PIC-NEXT:    retl
3254 ; LINUX-64-PIC-LABEL: off00:
3255 ; LINUX-64-PIC:       # %bb.0: # %entry
3256 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
3257 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3258 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
3259 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3260 ; LINUX-64-PIC-NEXT:    retq
3262 ; DARWIN-32-STATIC-LABEL: off00:
3263 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3264 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3265 ; DARWIN-32-STATIC-NEXT:    movl _src+64(,%eax,4), %ecx
3266 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _dst+64(,%eax,4)
3267 ; DARWIN-32-STATIC-NEXT:    retl
3269 ; DARWIN-32-DYNAMIC-LABEL: off00:
3270 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3271 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3272 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
3273 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%ecx,%eax,4), %ecx
3274 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %edx
3275 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3276 ; DARWIN-32-DYNAMIC-NEXT:    retl
3278 ; DARWIN-32-PIC-LABEL: off00:
3279 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3280 ; DARWIN-32-PIC-NEXT:    calll L36$pb
3281 ; DARWIN-32-PIC-NEXT:  L36$pb:
3282 ; DARWIN-32-PIC-NEXT:    popl %eax
3283 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3284 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L36$pb(%eax), %edx
3285 ; DARWIN-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3286 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax
3287 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3288 ; DARWIN-32-PIC-NEXT:    retl
3290 ; DARWIN-64-STATIC-LABEL: off00:
3291 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3292 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3293 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3294 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
3295 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3296 ; DARWIN-64-STATIC-NEXT:    retq
3298 ; DARWIN-64-DYNAMIC-LABEL: off00:
3299 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3300 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3301 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3302 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
3303 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3304 ; DARWIN-64-DYNAMIC-NEXT:    retq
3306 ; DARWIN-64-PIC-LABEL: off00:
3307 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3308 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3309 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3310 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
3311 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3312 ; DARWIN-64-PIC-NEXT:    retq
3314 entry:
3315         %0 = add i64 %i, 16
3316         %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0
3317         %2 = load i32, ptr %1, align 4
3318         %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0
3319         store i32 %2, ptr %3, align 4
3320         ret void
3323 define dso_local void @oxf00(i64 %i) nounwind {
3324 ; LINUX-64-STATIC-LABEL: oxf00:
3325 ; LINUX-64-STATIC:       # %bb.0: # %entry
3326 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
3327 ; LINUX-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3328 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
3329 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3330 ; LINUX-64-STATIC-NEXT:    retq
3332 ; LINUX-32-STATIC-LABEL: oxf00:
3333 ; LINUX-32-STATIC:       # %bb.0: # %entry
3334 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3335 ; LINUX-32-STATIC-NEXT:    movl xsrc+64(,%eax,4), %ecx
3336 ; LINUX-32-STATIC-NEXT:    movl %ecx, xdst+64(,%eax,4)
3337 ; LINUX-32-STATIC-NEXT:    retl
3339 ; LINUX-32-PIC-LABEL: oxf00:
3340 ; LINUX-32-PIC:       # %bb.0: # %entry
3341 ; LINUX-32-PIC-NEXT:    calll .L37$pb
3342 ; LINUX-32-PIC-NEXT:  .L37$pb:
3343 ; LINUX-32-PIC-NEXT:    popl %eax
3344 ; LINUX-32-PIC-NEXT:  .Ltmp37:
3345 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax
3346 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3347 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %edx
3348 ; LINUX-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3349 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
3350 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3351 ; LINUX-32-PIC-NEXT:    retl
3353 ; LINUX-64-PIC-LABEL: oxf00:
3354 ; LINUX-64-PIC:       # %bb.0: # %entry
3355 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
3356 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3357 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rcx
3358 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3359 ; LINUX-64-PIC-NEXT:    retq
3361 ; DARWIN-32-STATIC-LABEL: oxf00:
3362 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3363 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3364 ; DARWIN-32-STATIC-NEXT:    movl _xsrc+64(,%eax,4), %ecx
3365 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _xdst+64(,%eax,4)
3366 ; DARWIN-32-STATIC-NEXT:    retl
3368 ; DARWIN-32-DYNAMIC-LABEL: oxf00:
3369 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3370 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3371 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
3372 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%ecx,%eax,4), %ecx
3373 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %edx
3374 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3375 ; DARWIN-32-DYNAMIC-NEXT:    retl
3377 ; DARWIN-32-PIC-LABEL: oxf00:
3378 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3379 ; DARWIN-32-PIC-NEXT:    calll L37$pb
3380 ; DARWIN-32-PIC-NEXT:  L37$pb:
3381 ; DARWIN-32-PIC-NEXT:    popl %eax
3382 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3383 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx
3384 ; DARWIN-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3385 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax
3386 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3387 ; DARWIN-32-PIC-NEXT:    retl
3389 ; DARWIN-64-STATIC-LABEL: oxf00:
3390 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3391 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3392 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3393 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
3394 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3395 ; DARWIN-64-STATIC-NEXT:    retq
3397 ; DARWIN-64-DYNAMIC-LABEL: oxf00:
3398 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3399 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3400 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3401 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
3402 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3403 ; DARWIN-64-DYNAMIC-NEXT:    retq
3405 ; DARWIN-64-PIC-LABEL: oxf00:
3406 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3407 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3408 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3409 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rcx
3410 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3411 ; DARWIN-64-PIC-NEXT:    retq
3413 entry:
3414         %0 = add i64 %i, 16
3415         %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0
3416         %2 = load i32, ptr %1, align 4
3417         %3 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0
3418         store i32 %2, ptr %3, align 4
3419         ret void
3422 define dso_local void @off01(i64 %i) nounwind {
3423 ; LINUX-64-STATIC-LABEL: off01:
3424 ; LINUX-64-STATIC:       # %bb.0: # %entry
3425 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
3426 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3427 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3428 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
3429 ; LINUX-64-STATIC-NEXT:    retq
3431 ; LINUX-32-STATIC-LABEL: off01:
3432 ; LINUX-32-STATIC:       # %bb.0: # %entry
3433 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3434 ; LINUX-32-STATIC-NEXT:    leal dst+64(,%eax,4), %eax
3435 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
3436 ; LINUX-32-STATIC-NEXT:    retl
3438 ; LINUX-32-PIC-LABEL: off01:
3439 ; LINUX-32-PIC:       # %bb.0: # %entry
3440 ; LINUX-32-PIC-NEXT:    calll .L38$pb
3441 ; LINUX-32-PIC-NEXT:  .L38$pb:
3442 ; LINUX-32-PIC-NEXT:    popl %eax
3443 ; LINUX-32-PIC-NEXT:  .Ltmp38:
3444 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax
3445 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3446 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %edx
3447 ; LINUX-32-PIC-NEXT:    leal 64(%edx,%ecx,4), %ecx
3448 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
3449 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
3450 ; LINUX-32-PIC-NEXT:    retl
3452 ; LINUX-64-PIC-LABEL: off01:
3453 ; LINUX-64-PIC:       # %bb.0: # %entry
3454 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
3455 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3456 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3457 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
3458 ; LINUX-64-PIC-NEXT:    retq
3460 ; DARWIN-32-STATIC-LABEL: off01:
3461 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3462 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3463 ; DARWIN-32-STATIC-NEXT:    leal _dst+64(,%eax,4), %eax
3464 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ptr
3465 ; DARWIN-32-STATIC-NEXT:    retl
3467 ; DARWIN-32-DYNAMIC-LABEL: off01:
3468 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3469 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3470 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
3471 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
3472 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
3473 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
3474 ; DARWIN-32-DYNAMIC-NEXT:    retl
3476 ; DARWIN-32-PIC-LABEL: off01:
3477 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3478 ; DARWIN-32-PIC-NEXT:    calll L38$pb
3479 ; DARWIN-32-PIC-NEXT:  L38$pb:
3480 ; DARWIN-32-PIC-NEXT:    popl %eax
3481 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3482 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx
3483 ; DARWIN-32-PIC-NEXT:    leal 64(%edx,%ecx,4), %ecx
3484 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax
3485 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
3486 ; DARWIN-32-PIC-NEXT:    retl
3488 ; DARWIN-64-STATIC-LABEL: off01:
3489 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3490 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
3491 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3492 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3493 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
3494 ; DARWIN-64-STATIC-NEXT:    retq
3496 ; DARWIN-64-DYNAMIC-LABEL: off01:
3497 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3498 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
3499 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3500 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3501 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
3502 ; DARWIN-64-DYNAMIC-NEXT:    retq
3504 ; DARWIN-64-PIC-LABEL: off01:
3505 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3506 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
3507 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3508 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3509 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
3510 ; DARWIN-64-PIC-NEXT:    retq
3512 entry:
3513         %.sum = add i64 %i, 16
3514         %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum
3515         store ptr %0, ptr @ptr, align 8
3516         ret void
3519 define dso_local void @oxf01(i64 %i) nounwind {
3520 ; LINUX-64-STATIC-LABEL: oxf01:
3521 ; LINUX-64-STATIC:       # %bb.0: # %entry
3522 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
3523 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3524 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3525 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
3526 ; LINUX-64-STATIC-NEXT:    retq
3528 ; LINUX-32-STATIC-LABEL: oxf01:
3529 ; LINUX-32-STATIC:       # %bb.0: # %entry
3530 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3531 ; LINUX-32-STATIC-NEXT:    leal xdst+64(,%eax,4), %eax
3532 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
3533 ; LINUX-32-STATIC-NEXT:    retl
3535 ; LINUX-32-PIC-LABEL: oxf01:
3536 ; LINUX-32-PIC:       # %bb.0: # %entry
3537 ; LINUX-32-PIC-NEXT:    calll .L39$pb
3538 ; LINUX-32-PIC-NEXT:  .L39$pb:
3539 ; LINUX-32-PIC-NEXT:    popl %eax
3540 ; LINUX-32-PIC-NEXT:  .Ltmp39:
3541 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax
3542 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3543 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %edx
3544 ; LINUX-32-PIC-NEXT:    leal 64(%edx,%ecx,4), %ecx
3545 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
3546 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
3547 ; LINUX-32-PIC-NEXT:    retl
3549 ; LINUX-64-PIC-LABEL: oxf01:
3550 ; LINUX-64-PIC:       # %bb.0: # %entry
3551 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
3552 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3553 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3554 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
3555 ; LINUX-64-PIC-NEXT:    retq
3557 ; DARWIN-32-STATIC-LABEL: oxf01:
3558 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3559 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3560 ; DARWIN-32-STATIC-NEXT:    leal _xdst+64(,%eax,4), %eax
3561 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ptr
3562 ; DARWIN-32-STATIC-NEXT:    retl
3564 ; DARWIN-32-DYNAMIC-LABEL: oxf01:
3565 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3566 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3567 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %ecx
3568 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
3569 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
3570 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
3571 ; DARWIN-32-DYNAMIC-NEXT:    retl
3573 ; DARWIN-32-PIC-LABEL: oxf01:
3574 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3575 ; DARWIN-32-PIC-NEXT:    calll L39$pb
3576 ; DARWIN-32-PIC-NEXT:  L39$pb:
3577 ; DARWIN-32-PIC-NEXT:    popl %eax
3578 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3579 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx
3580 ; DARWIN-32-PIC-NEXT:    leal 64(%edx,%ecx,4), %ecx
3581 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax
3582 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
3583 ; DARWIN-32-PIC-NEXT:    retl
3585 ; DARWIN-64-STATIC-LABEL: oxf01:
3586 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3587 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
3588 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3589 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3590 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
3591 ; DARWIN-64-STATIC-NEXT:    retq
3593 ; DARWIN-64-DYNAMIC-LABEL: oxf01:
3594 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3595 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
3596 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3597 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3598 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
3599 ; DARWIN-64-DYNAMIC-NEXT:    retq
3601 ; DARWIN-64-PIC-LABEL: oxf01:
3602 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3603 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
3604 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3605 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3606 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
3607 ; DARWIN-64-PIC-NEXT:    retq
3609 entry:
3610         %.sum = add i64 %i, 16
3611         %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %.sum
3612         store ptr %0, ptr @ptr, align 8
3613         ret void
3616 define dso_local void @off02(i64 %i) nounwind {
3617 ; LINUX-64-STATIC-LABEL: off02:
3618 ; LINUX-64-STATIC:       # %bb.0: # %entry
3619 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
3620 ; LINUX-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3621 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3622 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
3623 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3624 ; LINUX-64-STATIC-NEXT:    retq
3626 ; LINUX-32-STATIC-LABEL: off02:
3627 ; LINUX-32-STATIC:       # %bb.0: # %entry
3628 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3629 ; LINUX-32-STATIC-NEXT:    movl src+64(,%eax,4), %ecx
3630 ; LINUX-32-STATIC-NEXT:    movl ptr, %edx
3631 ; LINUX-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3632 ; LINUX-32-STATIC-NEXT:    retl
3634 ; LINUX-32-PIC-LABEL: off02:
3635 ; LINUX-32-PIC:       # %bb.0: # %entry
3636 ; LINUX-32-PIC-NEXT:    calll .L40$pb
3637 ; LINUX-32-PIC-NEXT:  .L40$pb:
3638 ; LINUX-32-PIC-NEXT:    popl %eax
3639 ; LINUX-32-PIC-NEXT:  .Ltmp40:
3640 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax
3641 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3642 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
3643 ; LINUX-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3644 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
3645 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
3646 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3647 ; LINUX-32-PIC-NEXT:    retl
3649 ; LINUX-64-PIC-LABEL: off02:
3650 ; LINUX-64-PIC:       # %bb.0: # %entry
3651 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
3652 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3653 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3654 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
3655 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3656 ; LINUX-64-PIC-NEXT:    retq
3658 ; DARWIN-32-STATIC-LABEL: off02:
3659 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3660 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3661 ; DARWIN-32-STATIC-NEXT:    movl _src+64(,%eax,4), %ecx
3662 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %edx
3663 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3664 ; DARWIN-32-STATIC-NEXT:    retl
3666 ; DARWIN-32-DYNAMIC-LABEL: off02:
3667 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3668 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3669 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
3670 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%ecx,%eax,4), %ecx
3671 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %edx
3672 ; DARWIN-32-DYNAMIC-NEXT:    movl (%edx), %edx
3673 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3674 ; DARWIN-32-DYNAMIC-NEXT:    retl
3676 ; DARWIN-32-PIC-LABEL: off02:
3677 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3678 ; DARWIN-32-PIC-NEXT:    calll L40$pb
3679 ; DARWIN-32-PIC-NEXT:  L40$pb:
3680 ; DARWIN-32-PIC-NEXT:    popl %eax
3681 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3682 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L40$pb(%eax), %edx
3683 ; DARWIN-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3684 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax
3685 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
3686 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3687 ; DARWIN-32-PIC-NEXT:    retl
3689 ; DARWIN-64-STATIC-LABEL: off02:
3690 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3691 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3692 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3693 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3694 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
3695 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3696 ; DARWIN-64-STATIC-NEXT:    retq
3698 ; DARWIN-64-DYNAMIC-LABEL: off02:
3699 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3700 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3701 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3702 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3703 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
3704 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3705 ; DARWIN-64-DYNAMIC-NEXT:    retq
3707 ; DARWIN-64-PIC-LABEL: off02:
3708 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3709 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
3710 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3711 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3712 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
3713 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3714 ; DARWIN-64-PIC-NEXT:    retq
3716 entry:
3717         %0 = load ptr, ptr @ptr, align 8
3718         %1 = add i64 %i, 16
3719         %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %1
3720         %3 = load i32, ptr %2, align 4
3721         %4 = getelementptr i32, ptr %0, i64 %1
3722         store i32 %3, ptr %4, align 4
3723         ret void
3726 define dso_local void @oxf02(i64 %i) nounwind {
3727 ; LINUX-64-STATIC-LABEL: oxf02:
3728 ; LINUX-64-STATIC:       # %bb.0: # %entry
3729 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
3730 ; LINUX-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3731 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3732 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
3733 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3734 ; LINUX-64-STATIC-NEXT:    retq
3736 ; LINUX-32-STATIC-LABEL: oxf02:
3737 ; LINUX-32-STATIC:       # %bb.0: # %entry
3738 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3739 ; LINUX-32-STATIC-NEXT:    movl xsrc+64(,%eax,4), %ecx
3740 ; LINUX-32-STATIC-NEXT:    movl ptr, %edx
3741 ; LINUX-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3742 ; LINUX-32-STATIC-NEXT:    retl
3744 ; LINUX-32-PIC-LABEL: oxf02:
3745 ; LINUX-32-PIC:       # %bb.0: # %entry
3746 ; LINUX-32-PIC-NEXT:    calll .L41$pb
3747 ; LINUX-32-PIC-NEXT:  .L41$pb:
3748 ; LINUX-32-PIC-NEXT:    popl %eax
3749 ; LINUX-32-PIC-NEXT:  .Ltmp41:
3750 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax
3751 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3752 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %edx
3753 ; LINUX-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3754 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
3755 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
3756 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3757 ; LINUX-32-PIC-NEXT:    retl
3759 ; LINUX-64-PIC-LABEL: oxf02:
3760 ; LINUX-64-PIC:       # %bb.0: # %entry
3761 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
3762 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3763 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
3764 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
3765 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3766 ; LINUX-64-PIC-NEXT:    retq
3768 ; DARWIN-32-STATIC-LABEL: oxf02:
3769 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3770 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3771 ; DARWIN-32-STATIC-NEXT:    movl _xsrc+64(,%eax,4), %ecx
3772 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %edx
3773 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3774 ; DARWIN-32-STATIC-NEXT:    retl
3776 ; DARWIN-32-DYNAMIC-LABEL: oxf02:
3777 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3778 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3779 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
3780 ; DARWIN-32-DYNAMIC-NEXT:    movl 64(%ecx,%eax,4), %ecx
3781 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %edx
3782 ; DARWIN-32-DYNAMIC-NEXT:    movl (%edx), %edx
3783 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
3784 ; DARWIN-32-DYNAMIC-NEXT:    retl
3786 ; DARWIN-32-PIC-LABEL: oxf02:
3787 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3788 ; DARWIN-32-PIC-NEXT:    calll L41$pb
3789 ; DARWIN-32-PIC-NEXT:  L41$pb:
3790 ; DARWIN-32-PIC-NEXT:    popl %eax
3791 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3792 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx
3793 ; DARWIN-32-PIC-NEXT:    movl 64(%edx,%ecx,4), %edx
3794 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax
3795 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
3796 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
3797 ; DARWIN-32-PIC-NEXT:    retl
3799 ; DARWIN-64-STATIC-LABEL: oxf02:
3800 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3801 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3802 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3803 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3804 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
3805 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3806 ; DARWIN-64-STATIC-NEXT:    retq
3808 ; DARWIN-64-DYNAMIC-LABEL: oxf02:
3809 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3810 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3811 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3812 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3813 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
3814 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3815 ; DARWIN-64-DYNAMIC-NEXT:    retq
3817 ; DARWIN-64-PIC-LABEL: oxf02:
3818 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3819 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
3820 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3821 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
3822 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
3823 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3824 ; DARWIN-64-PIC-NEXT:    retq
3826 entry:
3827         %0 = load ptr, ptr @ptr, align 8
3828         %1 = add i64 %i, 16
3829         %2 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %1
3830         %3 = load i32, ptr %2, align 4
3831         %4 = getelementptr i32, ptr %0, i64 %1
3832         store i32 %3, ptr %4, align 4
3833         ret void
3836 define dso_local void @off03(i64 %i) nounwind {
3837 ; LINUX-64-STATIC-LABEL: off03:
3838 ; LINUX-64-STATIC:       # %bb.0: # %entry
3839 ; LINUX-64-STATIC-NEXT:    movl dsrc+64(,%rdi,4), %eax
3840 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst+64(,%rdi,4)
3841 ; LINUX-64-STATIC-NEXT:    retq
3843 ; LINUX-32-STATIC-LABEL: off03:
3844 ; LINUX-32-STATIC:       # %bb.0: # %entry
3845 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3846 ; LINUX-32-STATIC-NEXT:    movl dsrc+64(,%eax,4), %ecx
3847 ; LINUX-32-STATIC-NEXT:    movl %ecx, ddst+64(,%eax,4)
3848 ; LINUX-32-STATIC-NEXT:    retl
3850 ; LINUX-32-PIC-LABEL: off03:
3851 ; LINUX-32-PIC:       # %bb.0: # %entry
3852 ; LINUX-32-PIC-NEXT:    calll .L42$pb
3853 ; LINUX-32-PIC-NEXT:  .L42$pb:
3854 ; LINUX-32-PIC-NEXT:    popl %eax
3855 ; LINUX-32-PIC-NEXT:  .Ltmp42:
3856 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax
3857 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3858 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx
3859 ; LINUX-32-PIC-NEXT:    movl %edx, .Lddst$local@GOTOFF+64(%eax,%ecx,4)
3860 ; LINUX-32-PIC-NEXT:    retl
3862 ; LINUX-64-PIC-LABEL: off03:
3863 ; LINUX-64-PIC:       # %bb.0: # %entry
3864 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
3865 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3866 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rcx
3867 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3868 ; LINUX-64-PIC-NEXT:    retq
3870 ; DARWIN-32-STATIC-LABEL: off03:
3871 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3872 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3873 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+64(,%eax,4), %ecx
3874 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ddst+64(,%eax,4)
3875 ; DARWIN-32-STATIC-NEXT:    retl
3877 ; DARWIN-32-DYNAMIC-LABEL: off03:
3878 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3879 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3880 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+64(,%eax,4), %ecx
3881 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ddst+64(,%eax,4)
3882 ; DARWIN-32-DYNAMIC-NEXT:    retl
3884 ; DARWIN-32-PIC-LABEL: off03:
3885 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3886 ; DARWIN-32-PIC-NEXT:    calll L42$pb
3887 ; DARWIN-32-PIC-NEXT:  L42$pb:
3888 ; DARWIN-32-PIC-NEXT:    popl %eax
3889 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3890 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx
3891 ; DARWIN-32-PIC-NEXT:    movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4)
3892 ; DARWIN-32-PIC-NEXT:    retl
3894 ; DARWIN-64-STATIC-LABEL: off03:
3895 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3896 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
3897 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3898 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rcx
3899 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3900 ; DARWIN-64-STATIC-NEXT:    retq
3902 ; DARWIN-64-DYNAMIC-LABEL: off03:
3903 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3904 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
3905 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3906 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rcx
3907 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3908 ; DARWIN-64-DYNAMIC-NEXT:    retq
3910 ; DARWIN-64-PIC-LABEL: off03:
3911 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
3912 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
3913 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
3914 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rcx
3915 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
3916 ; DARWIN-64-PIC-NEXT:    retq
3918 entry:
3919         %0 = add i64 %i, 16
3920         %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0
3921         %2 = load i32, ptr %1, align 4
3922         %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0
3923         store i32 %2, ptr %3, align 4
3924         ret void
3927 define dso_local void @off04(i64 %i) nounwind {
3928 ; LINUX-64-STATIC-LABEL: off04:
3929 ; LINUX-64-STATIC:       # %bb.0: # %entry
3930 ; LINUX-64-STATIC-NEXT:    leaq ddst+64(,%rdi,4), %rax
3931 ; LINUX-64-STATIC-NEXT:    movq %rax, dptr(%rip)
3932 ; LINUX-64-STATIC-NEXT:    retq
3934 ; LINUX-32-STATIC-LABEL: off04:
3935 ; LINUX-32-STATIC:       # %bb.0: # %entry
3936 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3937 ; LINUX-32-STATIC-NEXT:    leal ddst+64(,%eax,4), %eax
3938 ; LINUX-32-STATIC-NEXT:    movl %eax, dptr
3939 ; LINUX-32-STATIC-NEXT:    retl
3941 ; LINUX-32-PIC-LABEL: off04:
3942 ; LINUX-32-PIC:       # %bb.0: # %entry
3943 ; LINUX-32-PIC-NEXT:    calll .L43$pb
3944 ; LINUX-32-PIC-NEXT:  .L43$pb:
3945 ; LINUX-32-PIC-NEXT:    popl %eax
3946 ; LINUX-32-PIC-NEXT:  .Ltmp43:
3947 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax
3948 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3949 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %ecx
3950 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
3951 ; LINUX-32-PIC-NEXT:    retl
3953 ; LINUX-64-PIC-LABEL: off04:
3954 ; LINUX-64-PIC:       # %bb.0: # %entry
3955 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
3956 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3957 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
3958 ; LINUX-64-PIC-NEXT:    retq
3960 ; DARWIN-32-STATIC-LABEL: off04:
3961 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
3962 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3963 ; DARWIN-32-STATIC-NEXT:    leal _ddst+64(,%eax,4), %eax
3964 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dptr
3965 ; DARWIN-32-STATIC-NEXT:    retl
3967 ; DARWIN-32-DYNAMIC-LABEL: off04:
3968 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
3969 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
3970 ; DARWIN-32-DYNAMIC-NEXT:    leal _ddst+64(,%eax,4), %eax
3971 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _dptr
3972 ; DARWIN-32-DYNAMIC-NEXT:    retl
3974 ; DARWIN-32-PIC-LABEL: off04:
3975 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
3976 ; DARWIN-32-PIC-NEXT:    calll L43$pb
3977 ; DARWIN-32-PIC-NEXT:  L43$pb:
3978 ; DARWIN-32-PIC-NEXT:    popl %eax
3979 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
3980 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx
3981 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L43$pb(%eax)
3982 ; DARWIN-32-PIC-NEXT:    retl
3984 ; DARWIN-64-STATIC-LABEL: off04:
3985 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
3986 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
3987 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3988 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
3989 ; DARWIN-64-STATIC-NEXT:    retq
3991 ; DARWIN-64-DYNAMIC-LABEL: off04:
3992 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
3993 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
3994 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
3995 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
3996 ; DARWIN-64-DYNAMIC-NEXT:    retq
3998 ; DARWIN-64-PIC-LABEL: off04:
3999 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4000 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
4001 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
4002 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
4003 ; DARWIN-64-PIC-NEXT:    retq
4005 entry:
4006         %.sum = add i64 %i, 16
4007         %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum
4008         store ptr %0, ptr @dptr, align 8
4009         ret void
4012 define dso_local void @off05(i64 %i) nounwind {
4013 ; LINUX-64-STATIC-LABEL: off05:
4014 ; LINUX-64-STATIC:       # %bb.0: # %entry
4015 ; LINUX-64-STATIC-NEXT:    movl dsrc+64(,%rdi,4), %eax
4016 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
4017 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4018 ; LINUX-64-STATIC-NEXT:    retq
4020 ; LINUX-32-STATIC-LABEL: off05:
4021 ; LINUX-32-STATIC:       # %bb.0: # %entry
4022 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4023 ; LINUX-32-STATIC-NEXT:    movl dsrc+64(,%eax,4), %ecx
4024 ; LINUX-32-STATIC-NEXT:    movl dptr, %edx
4025 ; LINUX-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4026 ; LINUX-32-STATIC-NEXT:    retl
4028 ; LINUX-32-PIC-LABEL: off05:
4029 ; LINUX-32-PIC:       # %bb.0: # %entry
4030 ; LINUX-32-PIC-NEXT:    calll .L44$pb
4031 ; LINUX-32-PIC-NEXT:  .L44$pb:
4032 ; LINUX-32-PIC-NEXT:    popl %eax
4033 ; LINUX-32-PIC-NEXT:  .Ltmp44:
4034 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax
4035 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4036 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx
4037 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
4038 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
4039 ; LINUX-32-PIC-NEXT:    retl
4041 ; LINUX-64-PIC-LABEL: off05:
4042 ; LINUX-64-PIC:       # %bb.0: # %entry
4043 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
4044 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4045 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
4046 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4047 ; LINUX-64-PIC-NEXT:    retq
4049 ; DARWIN-32-STATIC-LABEL: off05:
4050 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4051 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4052 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+64(,%eax,4), %ecx
4053 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %edx
4054 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4055 ; DARWIN-32-STATIC-NEXT:    retl
4057 ; DARWIN-32-DYNAMIC-LABEL: off05:
4058 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4059 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4060 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+64(,%eax,4), %ecx
4061 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %edx
4062 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4063 ; DARWIN-32-DYNAMIC-NEXT:    retl
4065 ; DARWIN-32-PIC-LABEL: off05:
4066 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4067 ; DARWIN-32-PIC-NEXT:    calll L44$pb
4068 ; DARWIN-32-PIC-NEXT:  L44$pb:
4069 ; DARWIN-32-PIC-NEXT:    popl %eax
4070 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4071 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx
4072 ; DARWIN-32-PIC-NEXT:    movl _dptr-L44$pb(%eax), %eax
4073 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
4074 ; DARWIN-32-PIC-NEXT:    retl
4076 ; DARWIN-64-STATIC-LABEL: off05:
4077 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4078 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
4079 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4080 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
4081 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4082 ; DARWIN-64-STATIC-NEXT:    retq
4084 ; DARWIN-64-DYNAMIC-LABEL: off05:
4085 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4086 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
4087 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4088 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
4089 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4090 ; DARWIN-64-DYNAMIC-NEXT:    retq
4092 ; DARWIN-64-PIC-LABEL: off05:
4093 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4094 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
4095 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4096 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
4097 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4098 ; DARWIN-64-PIC-NEXT:    retq
4100 entry:
4101         %0 = load ptr, ptr @dptr, align 8
4102         %1 = add i64 %i, 16
4103         %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %1
4104         %3 = load i32, ptr %2, align 4
4105         %4 = getelementptr i32, ptr %0, i64 %1
4106         store i32 %3, ptr %4, align 4
4107         ret void
4110 define dso_local void @off06(i64 %i) nounwind {
4111 ; LINUX-64-STATIC-LABEL: off06:
4112 ; LINUX-64-STATIC:       # %bb.0: # %entry
4113 ; LINUX-64-STATIC-NEXT:    movl lsrc+64(,%rdi,4), %eax
4114 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst+64(,%rdi,4)
4115 ; LINUX-64-STATIC-NEXT:    retq
4117 ; LINUX-32-STATIC-LABEL: off06:
4118 ; LINUX-32-STATIC:       # %bb.0: # %entry
4119 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4120 ; LINUX-32-STATIC-NEXT:    movl lsrc+64(,%eax,4), %ecx
4121 ; LINUX-32-STATIC-NEXT:    movl %ecx, ldst+64(,%eax,4)
4122 ; LINUX-32-STATIC-NEXT:    retl
4124 ; LINUX-32-PIC-LABEL: off06:
4125 ; LINUX-32-PIC:       # %bb.0: # %entry
4126 ; LINUX-32-PIC-NEXT:    calll .L45$pb
4127 ; LINUX-32-PIC-NEXT:  .L45$pb:
4128 ; LINUX-32-PIC-NEXT:    popl %eax
4129 ; LINUX-32-PIC-NEXT:  .Ltmp45:
4130 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax
4131 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4132 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx
4133 ; LINUX-32-PIC-NEXT:    movl %edx, ldst@GOTOFF+64(%eax,%ecx,4)
4134 ; LINUX-32-PIC-NEXT:    retl
4136 ; LINUX-64-PIC-LABEL: off06:
4137 ; LINUX-64-PIC:       # %bb.0: # %entry
4138 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
4139 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4140 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rcx
4141 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4142 ; LINUX-64-PIC-NEXT:    retq
4144 ; DARWIN-32-STATIC-LABEL: off06:
4145 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4146 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4147 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+64(,%eax,4), %ecx
4148 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ldst+64(,%eax,4)
4149 ; DARWIN-32-STATIC-NEXT:    retl
4151 ; DARWIN-32-DYNAMIC-LABEL: off06:
4152 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4153 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4154 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+64(,%eax,4), %ecx
4155 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ldst+64(,%eax,4)
4156 ; DARWIN-32-DYNAMIC-NEXT:    retl
4158 ; DARWIN-32-PIC-LABEL: off06:
4159 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4160 ; DARWIN-32-PIC-NEXT:    calll L45$pb
4161 ; DARWIN-32-PIC-NEXT:  L45$pb:
4162 ; DARWIN-32-PIC-NEXT:    popl %eax
4163 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4164 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx
4165 ; DARWIN-32-PIC-NEXT:    movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4)
4166 ; DARWIN-32-PIC-NEXT:    retl
4168 ; DARWIN-64-STATIC-LABEL: off06:
4169 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4170 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
4171 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4172 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rcx
4173 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4174 ; DARWIN-64-STATIC-NEXT:    retq
4176 ; DARWIN-64-DYNAMIC-LABEL: off06:
4177 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4178 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
4179 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4180 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rcx
4181 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4182 ; DARWIN-64-DYNAMIC-NEXT:    retq
4184 ; DARWIN-64-PIC-LABEL: off06:
4185 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4186 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
4187 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4188 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rcx
4189 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4190 ; DARWIN-64-PIC-NEXT:    retq
4192 entry:
4193         %0 = add i64 %i, 16
4194         %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0
4195         %2 = load i32, ptr %1, align 4
4196         %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0
4197         store i32 %2, ptr %3, align 4
4198         ret void
4201 define dso_local void @off07(i64 %i) nounwind {
4202 ; LINUX-64-STATIC-LABEL: off07:
4203 ; LINUX-64-STATIC:       # %bb.0: # %entry
4204 ; LINUX-64-STATIC-NEXT:    leaq ldst+64(,%rdi,4), %rax
4205 ; LINUX-64-STATIC-NEXT:    movq %rax, lptr(%rip)
4206 ; LINUX-64-STATIC-NEXT:    retq
4208 ; LINUX-32-STATIC-LABEL: off07:
4209 ; LINUX-32-STATIC:       # %bb.0: # %entry
4210 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4211 ; LINUX-32-STATIC-NEXT:    leal ldst+64(,%eax,4), %eax
4212 ; LINUX-32-STATIC-NEXT:    movl %eax, lptr
4213 ; LINUX-32-STATIC-NEXT:    retl
4215 ; LINUX-32-PIC-LABEL: off07:
4216 ; LINUX-32-PIC:       # %bb.0: # %entry
4217 ; LINUX-32-PIC-NEXT:    calll .L46$pb
4218 ; LINUX-32-PIC-NEXT:  .L46$pb:
4219 ; LINUX-32-PIC-NEXT:    popl %eax
4220 ; LINUX-32-PIC-NEXT:  .Ltmp46:
4221 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax
4222 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4223 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx
4224 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
4225 ; LINUX-32-PIC-NEXT:    retl
4227 ; LINUX-64-PIC-LABEL: off07:
4228 ; LINUX-64-PIC:       # %bb.0: # %entry
4229 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
4230 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
4231 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
4232 ; LINUX-64-PIC-NEXT:    retq
4234 ; DARWIN-32-STATIC-LABEL: off07:
4235 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4236 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4237 ; DARWIN-32-STATIC-NEXT:    leal _ldst+64(,%eax,4), %eax
4238 ; DARWIN-32-STATIC-NEXT:    movl %eax, _lptr
4239 ; DARWIN-32-STATIC-NEXT:    retl
4241 ; DARWIN-32-DYNAMIC-LABEL: off07:
4242 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4243 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4244 ; DARWIN-32-DYNAMIC-NEXT:    leal _ldst+64(,%eax,4), %eax
4245 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _lptr
4246 ; DARWIN-32-DYNAMIC-NEXT:    retl
4248 ; DARWIN-32-PIC-LABEL: off07:
4249 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4250 ; DARWIN-32-PIC-NEXT:    calll L46$pb
4251 ; DARWIN-32-PIC-NEXT:  L46$pb:
4252 ; DARWIN-32-PIC-NEXT:    popl %eax
4253 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4254 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx
4255 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L46$pb(%eax)
4256 ; DARWIN-32-PIC-NEXT:    retl
4258 ; DARWIN-64-STATIC-LABEL: off07:
4259 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4260 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
4261 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
4262 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
4263 ; DARWIN-64-STATIC-NEXT:    retq
4265 ; DARWIN-64-DYNAMIC-LABEL: off07:
4266 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4267 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
4268 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
4269 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
4270 ; DARWIN-64-DYNAMIC-NEXT:    retq
4272 ; DARWIN-64-PIC-LABEL: off07:
4273 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4274 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
4275 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
4276 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
4277 ; DARWIN-64-PIC-NEXT:    retq
4279 entry:
4280         %.sum = add i64 %i, 16
4281         %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum
4282         store ptr %0, ptr @lptr, align 8
4283         ret void
4286 define dso_local void @off08(i64 %i) nounwind {
4287 ; LINUX-64-STATIC-LABEL: off08:
4288 ; LINUX-64-STATIC:       # %bb.0: # %entry
4289 ; LINUX-64-STATIC-NEXT:    movl lsrc+64(,%rdi,4), %eax
4290 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
4291 ; LINUX-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4292 ; LINUX-64-STATIC-NEXT:    retq
4294 ; LINUX-32-STATIC-LABEL: off08:
4295 ; LINUX-32-STATIC:       # %bb.0: # %entry
4296 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4297 ; LINUX-32-STATIC-NEXT:    movl lsrc+64(,%eax,4), %ecx
4298 ; LINUX-32-STATIC-NEXT:    movl lptr, %edx
4299 ; LINUX-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4300 ; LINUX-32-STATIC-NEXT:    retl
4302 ; LINUX-32-PIC-LABEL: off08:
4303 ; LINUX-32-PIC:       # %bb.0: # %entry
4304 ; LINUX-32-PIC-NEXT:    calll .L47$pb
4305 ; LINUX-32-PIC-NEXT:  .L47$pb:
4306 ; LINUX-32-PIC-NEXT:    popl %eax
4307 ; LINUX-32-PIC-NEXT:  .Ltmp47:
4308 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax
4309 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4310 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx
4311 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
4312 ; LINUX-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
4313 ; LINUX-32-PIC-NEXT:    retl
4315 ; LINUX-64-PIC-LABEL: off08:
4316 ; LINUX-64-PIC:       # %bb.0: # %entry
4317 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
4318 ; LINUX-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4319 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
4320 ; LINUX-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4321 ; LINUX-64-PIC-NEXT:    retq
4323 ; DARWIN-32-STATIC-LABEL: off08:
4324 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4325 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4326 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+64(,%eax,4), %ecx
4327 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %edx
4328 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4329 ; DARWIN-32-STATIC-NEXT:    retl
4331 ; DARWIN-32-DYNAMIC-LABEL: off08:
4332 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4333 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
4334 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+64(,%eax,4), %ecx
4335 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %edx
4336 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 64(%edx,%eax,4)
4337 ; DARWIN-32-DYNAMIC-NEXT:    retl
4339 ; DARWIN-32-PIC-LABEL: off08:
4340 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4341 ; DARWIN-32-PIC-NEXT:    calll L47$pb
4342 ; DARWIN-32-PIC-NEXT:  L47$pb:
4343 ; DARWIN-32-PIC-NEXT:    popl %eax
4344 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
4345 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx
4346 ; DARWIN-32-PIC-NEXT:    movl _lptr-L47$pb(%eax), %eax
4347 ; DARWIN-32-PIC-NEXT:    movl %edx, 64(%eax,%ecx,4)
4348 ; DARWIN-32-PIC-NEXT:    retl
4350 ; DARWIN-64-STATIC-LABEL: off08:
4351 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4352 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
4353 ; DARWIN-64-STATIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4354 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
4355 ; DARWIN-64-STATIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4356 ; DARWIN-64-STATIC-NEXT:    retq
4358 ; DARWIN-64-DYNAMIC-LABEL: off08:
4359 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4360 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
4361 ; DARWIN-64-DYNAMIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4362 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
4363 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4364 ; DARWIN-64-DYNAMIC-NEXT:    retq
4366 ; DARWIN-64-PIC-LABEL: off08:
4367 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4368 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
4369 ; DARWIN-64-PIC-NEXT:    movl 64(%rax,%rdi,4), %eax
4370 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
4371 ; DARWIN-64-PIC-NEXT:    movl %eax, 64(%rcx,%rdi,4)
4372 ; DARWIN-64-PIC-NEXT:    retq
4374 entry:
4375         %0 = load ptr, ptr @lptr, align 8
4376         %1 = add i64 %i, 16
4377         %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %1
4378         %3 = load i32, ptr %2, align 4
4379         %4 = getelementptr i32, ptr %0, i64 %1
4380         store i32 %3, ptr %4, align 4
4381         ret void
4384 define dso_local void @moo00(i64 %i) nounwind {
4385 ; LINUX-64-STATIC-LABEL: moo00:
4386 ; LINUX-64-STATIC:       # %bb.0: # %entry
4387 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
4388 ; LINUX-64-STATIC-NEXT:    movl 262144(%rax), %eax
4389 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
4390 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4391 ; LINUX-64-STATIC-NEXT:    retq
4393 ; LINUX-32-STATIC-LABEL: moo00:
4394 ; LINUX-32-STATIC:       # %bb.0: # %entry
4395 ; LINUX-32-STATIC-NEXT:    movl src+262144, %eax
4396 ; LINUX-32-STATIC-NEXT:    movl %eax, dst+262144
4397 ; LINUX-32-STATIC-NEXT:    retl
4399 ; LINUX-32-PIC-LABEL: moo00:
4400 ; LINUX-32-PIC:       # %bb.0: # %entry
4401 ; LINUX-32-PIC-NEXT:    calll .L48$pb
4402 ; LINUX-32-PIC-NEXT:  .L48$pb:
4403 ; LINUX-32-PIC-NEXT:    popl %eax
4404 ; LINUX-32-PIC-NEXT:  .Ltmp48:
4405 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax
4406 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
4407 ; LINUX-32-PIC-NEXT:    movl 262144(%ecx), %ecx
4408 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
4409 ; LINUX-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4410 ; LINUX-32-PIC-NEXT:    retl
4412 ; LINUX-64-PIC-LABEL: moo00:
4413 ; LINUX-64-PIC:       # %bb.0: # %entry
4414 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
4415 ; LINUX-64-PIC-NEXT:    movl 262144(%rax), %eax
4416 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
4417 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4418 ; LINUX-64-PIC-NEXT:    retq
4420 ; DARWIN-32-STATIC-LABEL: moo00:
4421 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4422 ; DARWIN-32-STATIC-NEXT:    movl _src+262144, %eax
4423 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dst+262144
4424 ; DARWIN-32-STATIC-NEXT:    retl
4426 ; DARWIN-32-DYNAMIC-LABEL: moo00:
4427 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4428 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
4429 ; DARWIN-32-DYNAMIC-NEXT:    movl 262144(%eax), %eax
4430 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
4431 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 262144(%ecx)
4432 ; DARWIN-32-DYNAMIC-NEXT:    retl
4434 ; DARWIN-32-PIC-LABEL: moo00:
4435 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4436 ; DARWIN-32-PIC-NEXT:    calll L48$pb
4437 ; DARWIN-32-PIC-NEXT:  L48$pb:
4438 ; DARWIN-32-PIC-NEXT:    popl %eax
4439 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx
4440 ; DARWIN-32-PIC-NEXT:    movl 262144(%ecx), %ecx
4441 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax
4442 ; DARWIN-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4443 ; DARWIN-32-PIC-NEXT:    retl
4445 ; DARWIN-64-STATIC-LABEL: moo00:
4446 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4447 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4448 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax), %eax
4449 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
4450 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4451 ; DARWIN-64-STATIC-NEXT:    retq
4453 ; DARWIN-64-DYNAMIC-LABEL: moo00:
4454 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4455 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4456 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax), %eax
4457 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
4458 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx)
4459 ; DARWIN-64-DYNAMIC-NEXT:    retq
4461 ; DARWIN-64-PIC-LABEL: moo00:
4462 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4463 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4464 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax), %eax
4465 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
4466 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4467 ; DARWIN-64-PIC-NEXT:    retq
4469 entry:
4470         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 4
4471         store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), align 4
4472         ret void
4475 define dso_local void @moo01(i64 %i) nounwind {
4476 ; LINUX-64-STATIC-LABEL: moo01:
4477 ; LINUX-64-STATIC:       # %bb.0: # %entry
4478 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
4479 ; LINUX-64-STATIC-NEXT:    addq dst@GOTPCREL(%rip), %rax
4480 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
4481 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
4482 ; LINUX-64-STATIC-NEXT:    retq
4484 ; LINUX-32-STATIC-LABEL: moo01:
4485 ; LINUX-32-STATIC:       # %bb.0: # %entry
4486 ; LINUX-32-STATIC-NEXT:    leal dst+262144, %eax
4487 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
4488 ; LINUX-32-STATIC-NEXT:    retl
4490 ; LINUX-32-PIC-LABEL: moo01:
4491 ; LINUX-32-PIC:       # %bb.0: # %entry
4492 ; LINUX-32-PIC-NEXT:    calll .L49$pb
4493 ; LINUX-32-PIC-NEXT:  .L49$pb:
4494 ; LINUX-32-PIC-NEXT:    popl %eax
4495 ; LINUX-32-PIC-NEXT:  .Ltmp49:
4496 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax
4497 ; LINUX-32-PIC-NEXT:    movl $262144, %ecx # imm = 0x40000
4498 ; LINUX-32-PIC-NEXT:    addl dst@GOT(%eax), %ecx
4499 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
4500 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
4501 ; LINUX-32-PIC-NEXT:    retl
4503 ; LINUX-64-PIC-LABEL: moo01:
4504 ; LINUX-64-PIC:       # %bb.0: # %entry
4505 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
4506 ; LINUX-64-PIC-NEXT:    addq dst@GOTPCREL(%rip), %rax
4507 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
4508 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
4509 ; LINUX-64-PIC-NEXT:    retq
4511 ; DARWIN-32-STATIC-LABEL: moo01:
4512 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4513 ; DARWIN-32-STATIC-NEXT:    movl $_dst+262144, _ptr
4514 ; DARWIN-32-STATIC-NEXT:    retl
4516 ; DARWIN-32-DYNAMIC-LABEL: moo01:
4517 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4518 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
4519 ; DARWIN-32-DYNAMIC-NEXT:    addl L_dst$non_lazy_ptr, %eax
4520 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
4521 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
4522 ; DARWIN-32-DYNAMIC-NEXT:    retl
4524 ; DARWIN-32-PIC-LABEL: moo01:
4525 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4526 ; DARWIN-32-PIC-NEXT:    calll L49$pb
4527 ; DARWIN-32-PIC-NEXT:  L49$pb:
4528 ; DARWIN-32-PIC-NEXT:    popl %eax
4529 ; DARWIN-32-PIC-NEXT:    movl $262144, %ecx ## imm = 0x40000
4530 ; DARWIN-32-PIC-NEXT:    addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx
4531 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax
4532 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
4533 ; DARWIN-32-PIC-NEXT:    retl
4535 ; DARWIN-64-STATIC-LABEL: moo01:
4536 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4537 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
4538 ; DARWIN-64-STATIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
4539 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4540 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
4541 ; DARWIN-64-STATIC-NEXT:    retq
4543 ; DARWIN-64-DYNAMIC-LABEL: moo01:
4544 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4545 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
4546 ; DARWIN-64-DYNAMIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
4547 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4548 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
4549 ; DARWIN-64-DYNAMIC-NEXT:    retq
4551 ; DARWIN-64-PIC-LABEL: moo01:
4552 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4553 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
4554 ; DARWIN-64-PIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
4555 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4556 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
4557 ; DARWIN-64-PIC-NEXT:    retq
4559 entry:
4560         store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), ptr @ptr, align 8
4561         ret void
4564 define dso_local void @moo02(i64 %i) nounwind {
4565 ; LINUX-64-STATIC-LABEL: moo02:
4566 ; LINUX-64-STATIC:       # %bb.0: # %entry
4567 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
4568 ; LINUX-64-STATIC-NEXT:    movl 262144(%rax), %eax
4569 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
4570 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
4571 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4572 ; LINUX-64-STATIC-NEXT:    retq
4574 ; LINUX-32-STATIC-LABEL: moo02:
4575 ; LINUX-32-STATIC:       # %bb.0: # %entry
4576 ; LINUX-32-STATIC-NEXT:    movl src+262144, %eax
4577 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
4578 ; LINUX-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
4579 ; LINUX-32-STATIC-NEXT:    retl
4581 ; LINUX-32-PIC-LABEL: moo02:
4582 ; LINUX-32-PIC:       # %bb.0: # %entry
4583 ; LINUX-32-PIC-NEXT:    calll .L50$pb
4584 ; LINUX-32-PIC-NEXT:  .L50$pb:
4585 ; LINUX-32-PIC-NEXT:    popl %eax
4586 ; LINUX-32-PIC-NEXT:  .Ltmp50:
4587 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax
4588 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %ecx
4589 ; LINUX-32-PIC-NEXT:    movl 262144(%ecx), %ecx
4590 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
4591 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
4592 ; LINUX-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4593 ; LINUX-32-PIC-NEXT:    retl
4595 ; LINUX-64-PIC-LABEL: moo02:
4596 ; LINUX-64-PIC:       # %bb.0: # %entry
4597 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
4598 ; LINUX-64-PIC-NEXT:    movl 262144(%rax), %eax
4599 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
4600 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
4601 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4602 ; LINUX-64-PIC-NEXT:    retq
4604 ; DARWIN-32-STATIC-LABEL: moo02:
4605 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4606 ; DARWIN-32-STATIC-NEXT:    movl _src+262144, %eax
4607 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
4608 ; DARWIN-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
4609 ; DARWIN-32-STATIC-NEXT:    retl
4611 ; DARWIN-32-DYNAMIC-LABEL: moo02:
4612 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4613 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
4614 ; DARWIN-32-DYNAMIC-NEXT:    movl 262144(%eax), %eax
4615 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
4616 ; DARWIN-32-DYNAMIC-NEXT:    movl (%ecx), %ecx
4617 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 262144(%ecx)
4618 ; DARWIN-32-DYNAMIC-NEXT:    retl
4620 ; DARWIN-32-PIC-LABEL: moo02:
4621 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4622 ; DARWIN-32-PIC-NEXT:    calll L50$pb
4623 ; DARWIN-32-PIC-NEXT:  L50$pb:
4624 ; DARWIN-32-PIC-NEXT:    popl %eax
4625 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx
4626 ; DARWIN-32-PIC-NEXT:    movl 262144(%ecx), %ecx
4627 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax
4628 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
4629 ; DARWIN-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4630 ; DARWIN-32-PIC-NEXT:    retl
4632 ; DARWIN-64-STATIC-LABEL: moo02:
4633 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4634 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4635 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax), %eax
4636 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4637 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
4638 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4639 ; DARWIN-64-STATIC-NEXT:    retq
4641 ; DARWIN-64-DYNAMIC-LABEL: moo02:
4642 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4643 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4644 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax), %eax
4645 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4646 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
4647 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx)
4648 ; DARWIN-64-DYNAMIC-NEXT:    retq
4650 ; DARWIN-64-PIC-LABEL: moo02:
4651 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4652 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
4653 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax), %eax
4654 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
4655 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
4656 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4657 ; DARWIN-64-PIC-NEXT:    retq
4659 entry:
4660         %0 = load ptr, ptr @ptr, align 8
4661         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 4
4662         %2 = getelementptr i32, ptr %0, i64 65536
4663         store i32 %1, ptr %2, align 4
4664         ret void
4667 define dso_local void @moo03(i64 %i) nounwind {
4668 ; LINUX-64-STATIC-LABEL: moo03:
4669 ; LINUX-64-STATIC:       # %bb.0: # %entry
4670 ; LINUX-64-STATIC-NEXT:    movl dsrc+262144(%rip), %eax
4671 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst+262144(%rip)
4672 ; LINUX-64-STATIC-NEXT:    retq
4674 ; LINUX-32-STATIC-LABEL: moo03:
4675 ; LINUX-32-STATIC:       # %bb.0: # %entry
4676 ; LINUX-32-STATIC-NEXT:    movl dsrc+262144, %eax
4677 ; LINUX-32-STATIC-NEXT:    movl %eax, ddst+262144
4678 ; LINUX-32-STATIC-NEXT:    retl
4680 ; LINUX-32-PIC-LABEL: moo03:
4681 ; LINUX-32-PIC:       # %bb.0: # %entry
4682 ; LINUX-32-PIC-NEXT:    calll .L51$pb
4683 ; LINUX-32-PIC-NEXT:  .L51$pb:
4684 ; LINUX-32-PIC-NEXT:    popl %eax
4685 ; LINUX-32-PIC-NEXT:  .Ltmp51:
4686 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax
4687 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx
4688 ; LINUX-32-PIC-NEXT:    movl %ecx, .Lddst$local@GOTOFF+262144(%eax)
4689 ; LINUX-32-PIC-NEXT:    retl
4691 ; LINUX-64-PIC-LABEL: moo03:
4692 ; LINUX-64-PIC:       # %bb.0: # %entry
4693 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local+262144(%rip), %eax
4694 ; LINUX-64-PIC-NEXT:    movl %eax, .Lddst$local+262144(%rip)
4695 ; LINUX-64-PIC-NEXT:    retq
4697 ; DARWIN-32-STATIC-LABEL: moo03:
4698 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4699 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+262144, %eax
4700 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ddst+262144
4701 ; DARWIN-32-STATIC-NEXT:    retl
4703 ; DARWIN-32-DYNAMIC-LABEL: moo03:
4704 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4705 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+262144, %eax
4706 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ddst+262144
4707 ; DARWIN-32-DYNAMIC-NEXT:    retl
4709 ; DARWIN-32-PIC-LABEL: moo03:
4710 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4711 ; DARWIN-32-PIC-NEXT:    calll L51$pb
4712 ; DARWIN-32-PIC-NEXT:  L51$pb:
4713 ; DARWIN-32-PIC-NEXT:    popl %eax
4714 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L51$pb)+262144(%eax), %ecx
4715 ; DARWIN-32-PIC-NEXT:    movl %ecx, (_ddst-L51$pb)+262144(%eax)
4716 ; DARWIN-32-PIC-NEXT:    retl
4718 ; DARWIN-64-STATIC-LABEL: moo03:
4719 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4720 ; DARWIN-64-STATIC-NEXT:    movl _dsrc+262144(%rip), %eax
4721 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ddst+262144(%rip)
4722 ; DARWIN-64-STATIC-NEXT:    retq
4724 ; DARWIN-64-DYNAMIC-LABEL: moo03:
4725 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4726 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc+262144(%rip), %eax
4727 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ddst+262144(%rip)
4728 ; DARWIN-64-DYNAMIC-NEXT:    retq
4730 ; DARWIN-64-PIC-LABEL: moo03:
4731 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4732 ; DARWIN-64-PIC-NEXT:    movl _dsrc+262144(%rip), %eax
4733 ; DARWIN-64-PIC-NEXT:    movl %eax, _ddst+262144(%rip)
4734 ; DARWIN-64-PIC-NEXT:    retq
4736 entry:
4737         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 32
4738         store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), align 32
4739         ret void
4742 define dso_local void @moo04(i64 %i) nounwind {
4743 ; LINUX-64-STATIC-LABEL: moo04:
4744 ; LINUX-64-STATIC:       # %bb.0: # %entry
4745 ; LINUX-64-STATIC-NEXT:    movq $ddst+262144, dptr(%rip)
4746 ; LINUX-64-STATIC-NEXT:    retq
4748 ; LINUX-32-STATIC-LABEL: moo04:
4749 ; LINUX-32-STATIC:       # %bb.0: # %entry
4750 ; LINUX-32-STATIC-NEXT:    movl $ddst+262144, dptr
4751 ; LINUX-32-STATIC-NEXT:    retl
4753 ; LINUX-32-PIC-LABEL: moo04:
4754 ; LINUX-32-PIC:       # %bb.0: # %entry
4755 ; LINUX-32-PIC-NEXT:    calll .L52$pb
4756 ; LINUX-32-PIC-NEXT:  .L52$pb:
4757 ; LINUX-32-PIC-NEXT:    popl %eax
4758 ; LINUX-32-PIC-NEXT:  .Ltmp52:
4759 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax
4760 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+262144(%eax), %ecx
4761 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
4762 ; LINUX-32-PIC-NEXT:    retl
4764 ; LINUX-64-PIC-LABEL: moo04:
4765 ; LINUX-64-PIC:       # %bb.0: # %entry
4766 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local+262144(%rip), %rax
4767 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
4768 ; LINUX-64-PIC-NEXT:    retq
4770 ; DARWIN-32-STATIC-LABEL: moo04:
4771 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4772 ; DARWIN-32-STATIC-NEXT:    movl $_ddst+262144, _dptr
4773 ; DARWIN-32-STATIC-NEXT:    retl
4775 ; DARWIN-32-DYNAMIC-LABEL: moo04:
4776 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4777 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst+262144, _dptr
4778 ; DARWIN-32-DYNAMIC-NEXT:    retl
4780 ; DARWIN-32-PIC-LABEL: moo04:
4781 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4782 ; DARWIN-32-PIC-NEXT:    calll L52$pb
4783 ; DARWIN-32-PIC-NEXT:  L52$pb:
4784 ; DARWIN-32-PIC-NEXT:    popl %eax
4785 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L52$pb)+262144(%eax), %ecx
4786 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L52$pb(%eax)
4787 ; DARWIN-32-PIC-NEXT:    retl
4789 ; DARWIN-64-STATIC-LABEL: moo04:
4790 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4791 ; DARWIN-64-STATIC-NEXT:    leaq _ddst+262144(%rip), %rax
4792 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
4793 ; DARWIN-64-STATIC-NEXT:    retq
4795 ; DARWIN-64-DYNAMIC-LABEL: moo04:
4796 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4797 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst+262144(%rip), %rax
4798 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
4799 ; DARWIN-64-DYNAMIC-NEXT:    retq
4801 ; DARWIN-64-PIC-LABEL: moo04:
4802 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4803 ; DARWIN-64-PIC-NEXT:    leaq _ddst+262144(%rip), %rax
4804 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
4805 ; DARWIN-64-PIC-NEXT:    retq
4807 entry:
4808         store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), ptr @dptr, align 8
4809         ret void
4812 define dso_local void @moo05(i64 %i) nounwind {
4813 ; LINUX-64-STATIC-LABEL: moo05:
4814 ; LINUX-64-STATIC:       # %bb.0: # %entry
4815 ; LINUX-64-STATIC-NEXT:    movl dsrc+262144(%rip), %eax
4816 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
4817 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4818 ; LINUX-64-STATIC-NEXT:    retq
4820 ; LINUX-32-STATIC-LABEL: moo05:
4821 ; LINUX-32-STATIC:       # %bb.0: # %entry
4822 ; LINUX-32-STATIC-NEXT:    movl dsrc+262144, %eax
4823 ; LINUX-32-STATIC-NEXT:    movl dptr, %ecx
4824 ; LINUX-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
4825 ; LINUX-32-STATIC-NEXT:    retl
4827 ; LINUX-32-PIC-LABEL: moo05:
4828 ; LINUX-32-PIC:       # %bb.0: # %entry
4829 ; LINUX-32-PIC-NEXT:    calll .L53$pb
4830 ; LINUX-32-PIC-NEXT:  .L53$pb:
4831 ; LINUX-32-PIC-NEXT:    popl %eax
4832 ; LINUX-32-PIC-NEXT:  .Ltmp53:
4833 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax
4834 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx
4835 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
4836 ; LINUX-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4837 ; LINUX-32-PIC-NEXT:    retl
4839 ; LINUX-64-PIC-LABEL: moo05:
4840 ; LINUX-64-PIC:       # %bb.0: # %entry
4841 ; LINUX-64-PIC-NEXT:    movl .Ldsrc$local+262144(%rip), %eax
4842 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
4843 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4844 ; LINUX-64-PIC-NEXT:    retq
4846 ; DARWIN-32-STATIC-LABEL: moo05:
4847 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4848 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+262144, %eax
4849 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %ecx
4850 ; DARWIN-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
4851 ; DARWIN-32-STATIC-NEXT:    retl
4853 ; DARWIN-32-DYNAMIC-LABEL: moo05:
4854 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4855 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+262144, %eax
4856 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %ecx
4857 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 262144(%ecx)
4858 ; DARWIN-32-DYNAMIC-NEXT:    retl
4860 ; DARWIN-32-PIC-LABEL: moo05:
4861 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4862 ; DARWIN-32-PIC-NEXT:    calll L53$pb
4863 ; DARWIN-32-PIC-NEXT:  L53$pb:
4864 ; DARWIN-32-PIC-NEXT:    popl %eax
4865 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L53$pb)+262144(%eax), %ecx
4866 ; DARWIN-32-PIC-NEXT:    movl _dptr-L53$pb(%eax), %eax
4867 ; DARWIN-32-PIC-NEXT:    movl %ecx, 262144(%eax)
4868 ; DARWIN-32-PIC-NEXT:    retl
4870 ; DARWIN-64-STATIC-LABEL: moo05:
4871 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4872 ; DARWIN-64-STATIC-NEXT:    movl _dsrc+262144(%rip), %eax
4873 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
4874 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
4875 ; DARWIN-64-STATIC-NEXT:    retq
4877 ; DARWIN-64-DYNAMIC-LABEL: moo05:
4878 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4879 ; DARWIN-64-DYNAMIC-NEXT:    movl _dsrc+262144(%rip), %eax
4880 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
4881 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx)
4882 ; DARWIN-64-DYNAMIC-NEXT:    retq
4884 ; DARWIN-64-PIC-LABEL: moo05:
4885 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4886 ; DARWIN-64-PIC-NEXT:    movl _dsrc+262144(%rip), %eax
4887 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
4888 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx)
4889 ; DARWIN-64-PIC-NEXT:    retq
4891 entry:
4892         %0 = load ptr, ptr @dptr, align 8
4893         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 32
4894         %2 = getelementptr i32, ptr %0, i64 65536
4895         store i32 %1, ptr %2, align 4
4896         ret void
4899 define dso_local void @moo06(i64 %i) nounwind {
4900 ; LINUX-64-STATIC-LABEL: moo06:
4901 ; LINUX-64-STATIC:       # %bb.0: # %entry
4902 ; LINUX-64-STATIC-NEXT:    movl lsrc+262144(%rip), %eax
4903 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst+262144(%rip)
4904 ; LINUX-64-STATIC-NEXT:    retq
4906 ; LINUX-32-STATIC-LABEL: moo06:
4907 ; LINUX-32-STATIC:       # %bb.0: # %entry
4908 ; LINUX-32-STATIC-NEXT:    movl lsrc+262144, %eax
4909 ; LINUX-32-STATIC-NEXT:    movl %eax, ldst+262144
4910 ; LINUX-32-STATIC-NEXT:    retl
4912 ; LINUX-32-PIC-LABEL: moo06:
4913 ; LINUX-32-PIC:       # %bb.0: # %entry
4914 ; LINUX-32-PIC-NEXT:    calll .L54$pb
4915 ; LINUX-32-PIC-NEXT:  .L54$pb:
4916 ; LINUX-32-PIC-NEXT:    popl %eax
4917 ; LINUX-32-PIC-NEXT:  .Ltmp54:
4918 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax
4919 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+262144(%eax), %ecx
4920 ; LINUX-32-PIC-NEXT:    movl %ecx, ldst@GOTOFF+262144(%eax)
4921 ; LINUX-32-PIC-NEXT:    retl
4923 ; LINUX-64-PIC-LABEL: moo06:
4924 ; LINUX-64-PIC:       # %bb.0: # %entry
4925 ; LINUX-64-PIC-NEXT:    movl lsrc+262144(%rip), %eax
4926 ; LINUX-64-PIC-NEXT:    movl %eax, ldst+262144(%rip)
4927 ; LINUX-64-PIC-NEXT:    retq
4929 ; DARWIN-32-STATIC-LABEL: moo06:
4930 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
4931 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+262144, %eax
4932 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ldst+262144
4933 ; DARWIN-32-STATIC-NEXT:    retl
4935 ; DARWIN-32-DYNAMIC-LABEL: moo06:
4936 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
4937 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+262144, %eax
4938 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _ldst+262144
4939 ; DARWIN-32-DYNAMIC-NEXT:    retl
4941 ; DARWIN-32-PIC-LABEL: moo06:
4942 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
4943 ; DARWIN-32-PIC-NEXT:    calll L54$pb
4944 ; DARWIN-32-PIC-NEXT:  L54$pb:
4945 ; DARWIN-32-PIC-NEXT:    popl %eax
4946 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L54$pb)+262144(%eax), %ecx
4947 ; DARWIN-32-PIC-NEXT:    movl %ecx, (_ldst-L54$pb)+262144(%eax)
4948 ; DARWIN-32-PIC-NEXT:    retl
4950 ; DARWIN-64-STATIC-LABEL: moo06:
4951 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
4952 ; DARWIN-64-STATIC-NEXT:    movl _lsrc+262144(%rip), %eax
4953 ; DARWIN-64-STATIC-NEXT:    movl %eax, _ldst+262144(%rip)
4954 ; DARWIN-64-STATIC-NEXT:    retq
4956 ; DARWIN-64-DYNAMIC-LABEL: moo06:
4957 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
4958 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc+262144(%rip), %eax
4959 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, _ldst+262144(%rip)
4960 ; DARWIN-64-DYNAMIC-NEXT:    retq
4962 ; DARWIN-64-PIC-LABEL: moo06:
4963 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
4964 ; DARWIN-64-PIC-NEXT:    movl _lsrc+262144(%rip), %eax
4965 ; DARWIN-64-PIC-NEXT:    movl %eax, _ldst+262144(%rip)
4966 ; DARWIN-64-PIC-NEXT:    retq
4968 entry:
4969         %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 4
4970         store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), align 4
4971         ret void
4974 define dso_local void @moo07(i64 %i) nounwind {
4975 ; LINUX-64-STATIC-LABEL: moo07:
4976 ; LINUX-64-STATIC:       # %bb.0: # %entry
4977 ; LINUX-64-STATIC-NEXT:    movq $ldst+262144, lptr(%rip)
4978 ; LINUX-64-STATIC-NEXT:    retq
4980 ; LINUX-32-STATIC-LABEL: moo07:
4981 ; LINUX-32-STATIC:       # %bb.0: # %entry
4982 ; LINUX-32-STATIC-NEXT:    movl $ldst+262144, lptr
4983 ; LINUX-32-STATIC-NEXT:    retl
4985 ; LINUX-32-PIC-LABEL: moo07:
4986 ; LINUX-32-PIC:       # %bb.0: # %entry
4987 ; LINUX-32-PIC-NEXT:    calll .L55$pb
4988 ; LINUX-32-PIC-NEXT:  .L55$pb:
4989 ; LINUX-32-PIC-NEXT:    popl %eax
4990 ; LINUX-32-PIC-NEXT:  .Ltmp55:
4991 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax
4992 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+262144(%eax), %ecx
4993 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
4994 ; LINUX-32-PIC-NEXT:    retl
4996 ; LINUX-64-PIC-LABEL: moo07:
4997 ; LINUX-64-PIC:       # %bb.0: # %entry
4998 ; LINUX-64-PIC-NEXT:    leaq ldst+262144(%rip), %rax
4999 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
5000 ; LINUX-64-PIC-NEXT:    retq
5002 ; DARWIN-32-STATIC-LABEL: moo07:
5003 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5004 ; DARWIN-32-STATIC-NEXT:    movl $_ldst+262144, _lptr
5005 ; DARWIN-32-STATIC-NEXT:    retl
5007 ; DARWIN-32-DYNAMIC-LABEL: moo07:
5008 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5009 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst+262144, _lptr
5010 ; DARWIN-32-DYNAMIC-NEXT:    retl
5012 ; DARWIN-32-PIC-LABEL: moo07:
5013 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5014 ; DARWIN-32-PIC-NEXT:    calll L55$pb
5015 ; DARWIN-32-PIC-NEXT:  L55$pb:
5016 ; DARWIN-32-PIC-NEXT:    popl %eax
5017 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L55$pb)+262144(%eax), %ecx
5018 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L55$pb(%eax)
5019 ; DARWIN-32-PIC-NEXT:    retl
5021 ; DARWIN-64-STATIC-LABEL: moo07:
5022 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5023 ; DARWIN-64-STATIC-NEXT:    leaq _ldst+262144(%rip), %rax
5024 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
5025 ; DARWIN-64-STATIC-NEXT:    retq
5027 ; DARWIN-64-DYNAMIC-LABEL: moo07:
5028 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5029 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst+262144(%rip), %rax
5030 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
5031 ; DARWIN-64-DYNAMIC-NEXT:    retq
5033 ; DARWIN-64-PIC-LABEL: moo07:
5034 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5035 ; DARWIN-64-PIC-NEXT:    leaq _ldst+262144(%rip), %rax
5036 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
5037 ; DARWIN-64-PIC-NEXT:    retq
5039 entry:
5040         store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), ptr @lptr, align 8
5041         ret void
5044 define dso_local void @moo08(i64 %i) nounwind {
5045 ; LINUX-64-STATIC-LABEL: moo08:
5046 ; LINUX-64-STATIC:       # %bb.0: # %entry
5047 ; LINUX-64-STATIC-NEXT:    movl lsrc+262144(%rip), %eax
5048 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
5049 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
5050 ; LINUX-64-STATIC-NEXT:    retq
5052 ; LINUX-32-STATIC-LABEL: moo08:
5053 ; LINUX-32-STATIC:       # %bb.0: # %entry
5054 ; LINUX-32-STATIC-NEXT:    movl lsrc+262144, %eax
5055 ; LINUX-32-STATIC-NEXT:    movl lptr, %ecx
5056 ; LINUX-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
5057 ; LINUX-32-STATIC-NEXT:    retl
5059 ; LINUX-32-PIC-LABEL: moo08:
5060 ; LINUX-32-PIC:       # %bb.0: # %entry
5061 ; LINUX-32-PIC-NEXT:    calll .L56$pb
5062 ; LINUX-32-PIC-NEXT:  .L56$pb:
5063 ; LINUX-32-PIC-NEXT:    popl %eax
5064 ; LINUX-32-PIC-NEXT:  .Ltmp56:
5065 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax
5066 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+262144(%eax), %ecx
5067 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
5068 ; LINUX-32-PIC-NEXT:    movl %ecx, 262144(%eax)
5069 ; LINUX-32-PIC-NEXT:    retl
5071 ; LINUX-64-PIC-LABEL: moo08:
5072 ; LINUX-64-PIC:       # %bb.0: # %entry
5073 ; LINUX-64-PIC-NEXT:    movl lsrc+262144(%rip), %eax
5074 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
5075 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx)
5076 ; LINUX-64-PIC-NEXT:    retq
5078 ; DARWIN-32-STATIC-LABEL: moo08:
5079 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5080 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+262144, %eax
5081 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %ecx
5082 ; DARWIN-32-STATIC-NEXT:    movl %eax, 262144(%ecx)
5083 ; DARWIN-32-STATIC-NEXT:    retl
5085 ; DARWIN-32-DYNAMIC-LABEL: moo08:
5086 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5087 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+262144, %eax
5088 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %ecx
5089 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, 262144(%ecx)
5090 ; DARWIN-32-DYNAMIC-NEXT:    retl
5092 ; DARWIN-32-PIC-LABEL: moo08:
5093 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5094 ; DARWIN-32-PIC-NEXT:    calll L56$pb
5095 ; DARWIN-32-PIC-NEXT:  L56$pb:
5096 ; DARWIN-32-PIC-NEXT:    popl %eax
5097 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L56$pb)+262144(%eax), %ecx
5098 ; DARWIN-32-PIC-NEXT:    movl _lptr-L56$pb(%eax), %eax
5099 ; DARWIN-32-PIC-NEXT:    movl %ecx, 262144(%eax)
5100 ; DARWIN-32-PIC-NEXT:    retl
5102 ; DARWIN-64-STATIC-LABEL: moo08:
5103 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5104 ; DARWIN-64-STATIC-NEXT:    movl _lsrc+262144(%rip), %eax
5105 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
5106 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx)
5107 ; DARWIN-64-STATIC-NEXT:    retq
5109 ; DARWIN-64-DYNAMIC-LABEL: moo08:
5110 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5111 ; DARWIN-64-DYNAMIC-NEXT:    movl _lsrc+262144(%rip), %eax
5112 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
5113 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx)
5114 ; DARWIN-64-DYNAMIC-NEXT:    retq
5116 ; DARWIN-64-PIC-LABEL: moo08:
5117 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5118 ; DARWIN-64-PIC-NEXT:    movl _lsrc+262144(%rip), %eax
5119 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
5120 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx)
5121 ; DARWIN-64-PIC-NEXT:    retq
5123 entry:
5124         %0 = load ptr, ptr @lptr, align 8
5125         %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 4
5126         %2 = getelementptr i32, ptr %0, i64 65536
5127         store i32 %1, ptr %2, align 4
5128         ret void
5131 define dso_local void @big00(i64 %i) nounwind {
5132 ; LINUX-64-STATIC-LABEL: big00:
5133 ; LINUX-64-STATIC:       # %bb.0: # %entry
5134 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
5135 ; LINUX-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5136 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
5137 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5138 ; LINUX-64-STATIC-NEXT:    retq
5140 ; LINUX-32-STATIC-LABEL: big00:
5141 ; LINUX-32-STATIC:       # %bb.0: # %entry
5142 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5143 ; LINUX-32-STATIC-NEXT:    movl src+262144(,%eax,4), %ecx
5144 ; LINUX-32-STATIC-NEXT:    movl %ecx, dst+262144(,%eax,4)
5145 ; LINUX-32-STATIC-NEXT:    retl
5147 ; LINUX-32-PIC-LABEL: big00:
5148 ; LINUX-32-PIC:       # %bb.0: # %entry
5149 ; LINUX-32-PIC-NEXT:    calll .L57$pb
5150 ; LINUX-32-PIC-NEXT:  .L57$pb:
5151 ; LINUX-32-PIC-NEXT:    popl %eax
5152 ; LINUX-32-PIC-NEXT:  .Ltmp57:
5153 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax
5154 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5155 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
5156 ; LINUX-32-PIC-NEXT:    movl 262144(%edx,%ecx,4), %edx
5157 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
5158 ; LINUX-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5159 ; LINUX-32-PIC-NEXT:    retl
5161 ; LINUX-64-PIC-LABEL: big00:
5162 ; LINUX-64-PIC:       # %bb.0: # %entry
5163 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
5164 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5165 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rcx
5166 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5167 ; LINUX-64-PIC-NEXT:    retq
5169 ; DARWIN-32-STATIC-LABEL: big00:
5170 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5171 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5172 ; DARWIN-32-STATIC-NEXT:    movl _src+262144(,%eax,4), %ecx
5173 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _dst+262144(,%eax,4)
5174 ; DARWIN-32-STATIC-NEXT:    retl
5176 ; DARWIN-32-DYNAMIC-LABEL: big00:
5177 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5178 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5179 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
5180 ; DARWIN-32-DYNAMIC-NEXT:    movl 262144(%ecx,%eax,4), %ecx
5181 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %edx
5182 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5183 ; DARWIN-32-DYNAMIC-NEXT:    retl
5185 ; DARWIN-32-PIC-LABEL: big00:
5186 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5187 ; DARWIN-32-PIC-NEXT:    calll L57$pb
5188 ; DARWIN-32-PIC-NEXT:  L57$pb:
5189 ; DARWIN-32-PIC-NEXT:    popl %eax
5190 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5191 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L57$pb(%eax), %edx
5192 ; DARWIN-32-PIC-NEXT:    movl 262144(%edx,%ecx,4), %edx
5193 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax
5194 ; DARWIN-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5195 ; DARWIN-32-PIC-NEXT:    retl
5197 ; DARWIN-64-STATIC-LABEL: big00:
5198 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5199 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5200 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5201 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
5202 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5203 ; DARWIN-64-STATIC-NEXT:    retq
5205 ; DARWIN-64-DYNAMIC-LABEL: big00:
5206 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5207 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5208 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5209 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
5210 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5211 ; DARWIN-64-DYNAMIC-NEXT:    retq
5213 ; DARWIN-64-PIC-LABEL: big00:
5214 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5215 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5216 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5217 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rcx
5218 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5219 ; DARWIN-64-PIC-NEXT:    retq
5221 entry:
5222         %0 = add i64 %i, 65536
5223         %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0
5224         %2 = load i32, ptr %1, align 4
5225         %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0
5226         store i32 %2, ptr %3, align 4
5227         ret void
5230 define dso_local void @big01(i64 %i) nounwind {
5231 ; LINUX-64-STATIC-LABEL: big01:
5232 ; LINUX-64-STATIC:       # %bb.0: # %entry
5233 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
5234 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5235 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
5236 ; LINUX-64-STATIC-NEXT:    movq %rax, (%rcx)
5237 ; LINUX-64-STATIC-NEXT:    retq
5239 ; LINUX-32-STATIC-LABEL: big01:
5240 ; LINUX-32-STATIC:       # %bb.0: # %entry
5241 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5242 ; LINUX-32-STATIC-NEXT:    leal dst+262144(,%eax,4), %eax
5243 ; LINUX-32-STATIC-NEXT:    movl %eax, ptr
5244 ; LINUX-32-STATIC-NEXT:    retl
5246 ; LINUX-32-PIC-LABEL: big01:
5247 ; LINUX-32-PIC:       # %bb.0: # %entry
5248 ; LINUX-32-PIC-NEXT:    calll .L58$pb
5249 ; LINUX-32-PIC-NEXT:  .L58$pb:
5250 ; LINUX-32-PIC-NEXT:    popl %eax
5251 ; LINUX-32-PIC-NEXT:  .Ltmp58:
5252 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax
5253 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5254 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %edx
5255 ; LINUX-32-PIC-NEXT:    leal 262144(%edx,%ecx,4), %ecx
5256 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
5257 ; LINUX-32-PIC-NEXT:    movl %ecx, (%eax)
5258 ; LINUX-32-PIC-NEXT:    retl
5260 ; LINUX-64-PIC-LABEL: big01:
5261 ; LINUX-64-PIC:       # %bb.0: # %entry
5262 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
5263 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5264 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
5265 ; LINUX-64-PIC-NEXT:    movq %rax, (%rcx)
5266 ; LINUX-64-PIC-NEXT:    retq
5268 ; DARWIN-32-STATIC-LABEL: big01:
5269 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5270 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5271 ; DARWIN-32-STATIC-NEXT:    leal _dst+262144(,%eax,4), %eax
5272 ; DARWIN-32-STATIC-NEXT:    movl %eax, _ptr
5273 ; DARWIN-32-STATIC-NEXT:    retl
5275 ; DARWIN-32-DYNAMIC-LABEL: big01:
5276 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5277 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5278 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
5279 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
5280 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
5281 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, (%ecx)
5282 ; DARWIN-32-DYNAMIC-NEXT:    retl
5284 ; DARWIN-32-PIC-LABEL: big01:
5285 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5286 ; DARWIN-32-PIC-NEXT:    calll L58$pb
5287 ; DARWIN-32-PIC-NEXT:  L58$pb:
5288 ; DARWIN-32-PIC-NEXT:    popl %eax
5289 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5290 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx
5291 ; DARWIN-32-PIC-NEXT:    leal 262144(%edx,%ecx,4), %ecx
5292 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax
5293 ; DARWIN-32-PIC-NEXT:    movl %ecx, (%eax)
5294 ; DARWIN-32-PIC-NEXT:    retl
5296 ; DARWIN-64-STATIC-LABEL: big01:
5297 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5298 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
5299 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5300 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5301 ; DARWIN-64-STATIC-NEXT:    movq %rax, (%rcx)
5302 ; DARWIN-64-STATIC-NEXT:    retq
5304 ; DARWIN-64-DYNAMIC-LABEL: big01:
5305 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5306 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
5307 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5308 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5309 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, (%rcx)
5310 ; DARWIN-64-DYNAMIC-NEXT:    retq
5312 ; DARWIN-64-PIC-LABEL: big01:
5313 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5314 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
5315 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5316 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5317 ; DARWIN-64-PIC-NEXT:    movq %rax, (%rcx)
5318 ; DARWIN-64-PIC-NEXT:    retq
5320 entry:
5321         %.sum = add i64 %i, 65536
5322         %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum
5323         store ptr %0, ptr @ptr, align 8
5324         ret void
5327 define dso_local void @big02(i64 %i) nounwind {
5328 ; LINUX-64-STATIC-LABEL: big02:
5329 ; LINUX-64-STATIC:       # %bb.0: # %entry
5330 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
5331 ; LINUX-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5332 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
5333 ; LINUX-64-STATIC-NEXT:    movq (%rcx), %rcx
5334 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5335 ; LINUX-64-STATIC-NEXT:    retq
5337 ; LINUX-32-STATIC-LABEL: big02:
5338 ; LINUX-32-STATIC:       # %bb.0: # %entry
5339 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5340 ; LINUX-32-STATIC-NEXT:    movl src+262144(,%eax,4), %ecx
5341 ; LINUX-32-STATIC-NEXT:    movl ptr, %edx
5342 ; LINUX-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5343 ; LINUX-32-STATIC-NEXT:    retl
5345 ; LINUX-32-PIC-LABEL: big02:
5346 ; LINUX-32-PIC:       # %bb.0: # %entry
5347 ; LINUX-32-PIC-NEXT:    calll .L59$pb
5348 ; LINUX-32-PIC-NEXT:  .L59$pb:
5349 ; LINUX-32-PIC-NEXT:    popl %eax
5350 ; LINUX-32-PIC-NEXT:  .Ltmp59:
5351 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax
5352 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5353 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %edx
5354 ; LINUX-32-PIC-NEXT:    movl 262144(%edx,%ecx,4), %edx
5355 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
5356 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
5357 ; LINUX-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5358 ; LINUX-32-PIC-NEXT:    retl
5360 ; LINUX-64-PIC-LABEL: big02:
5361 ; LINUX-64-PIC:       # %bb.0: # %entry
5362 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
5363 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5364 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
5365 ; LINUX-64-PIC-NEXT:    movq (%rcx), %rcx
5366 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5367 ; LINUX-64-PIC-NEXT:    retq
5369 ; DARWIN-32-STATIC-LABEL: big02:
5370 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5371 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5372 ; DARWIN-32-STATIC-NEXT:    movl _src+262144(,%eax,4), %ecx
5373 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %edx
5374 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5375 ; DARWIN-32-STATIC-NEXT:    retl
5377 ; DARWIN-32-DYNAMIC-LABEL: big02:
5378 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5379 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5380 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
5381 ; DARWIN-32-DYNAMIC-NEXT:    movl 262144(%ecx,%eax,4), %ecx
5382 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %edx
5383 ; DARWIN-32-DYNAMIC-NEXT:    movl (%edx), %edx
5384 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5385 ; DARWIN-32-DYNAMIC-NEXT:    retl
5387 ; DARWIN-32-PIC-LABEL: big02:
5388 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5389 ; DARWIN-32-PIC-NEXT:    calll L59$pb
5390 ; DARWIN-32-PIC-NEXT:  L59$pb:
5391 ; DARWIN-32-PIC-NEXT:    popl %eax
5392 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5393 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L59$pb(%eax), %edx
5394 ; DARWIN-32-PIC-NEXT:    movl 262144(%edx,%ecx,4), %edx
5395 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax
5396 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
5397 ; DARWIN-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5398 ; DARWIN-32-PIC-NEXT:    retl
5400 ; DARWIN-64-STATIC-LABEL: big02:
5401 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5402 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5403 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5404 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5405 ; DARWIN-64-STATIC-NEXT:    movq (%rcx), %rcx
5406 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5407 ; DARWIN-64-STATIC-NEXT:    retq
5409 ; DARWIN-64-DYNAMIC-LABEL: big02:
5410 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5411 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5412 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5413 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5414 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rcx), %rcx
5415 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5416 ; DARWIN-64-DYNAMIC-NEXT:    retq
5418 ; DARWIN-64-PIC-LABEL: big02:
5419 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5420 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
5421 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5422 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
5423 ; DARWIN-64-PIC-NEXT:    movq (%rcx), %rcx
5424 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5425 ; DARWIN-64-PIC-NEXT:    retq
5427 entry:
5428         %0 = load ptr, ptr @ptr, align 8
5429         %1 = add i64 %i, 65536
5430         %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %1
5431         %3 = load i32, ptr %2, align 4
5432         %4 = getelementptr i32, ptr %0, i64 %1
5433         store i32 %3, ptr %4, align 4
5434         ret void
5437 define dso_local void @big03(i64 %i) nounwind {
5438 ; LINUX-64-STATIC-LABEL: big03:
5439 ; LINUX-64-STATIC:       # %bb.0: # %entry
5440 ; LINUX-64-STATIC-NEXT:    movl dsrc+262144(,%rdi,4), %eax
5441 ; LINUX-64-STATIC-NEXT:    movl %eax, ddst+262144(,%rdi,4)
5442 ; LINUX-64-STATIC-NEXT:    retq
5444 ; LINUX-32-STATIC-LABEL: big03:
5445 ; LINUX-32-STATIC:       # %bb.0: # %entry
5446 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5447 ; LINUX-32-STATIC-NEXT:    movl dsrc+262144(,%eax,4), %ecx
5448 ; LINUX-32-STATIC-NEXT:    movl %ecx, ddst+262144(,%eax,4)
5449 ; LINUX-32-STATIC-NEXT:    retl
5451 ; LINUX-32-PIC-LABEL: big03:
5452 ; LINUX-32-PIC:       # %bb.0: # %entry
5453 ; LINUX-32-PIC-NEXT:    calll .L60$pb
5454 ; LINUX-32-PIC-NEXT:  .L60$pb:
5455 ; LINUX-32-PIC-NEXT:    popl %eax
5456 ; LINUX-32-PIC-NEXT:  .Ltmp60:
5457 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax
5458 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5459 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx
5460 ; LINUX-32-PIC-NEXT:    movl %edx, .Lddst$local@GOTOFF+262144(%eax,%ecx,4)
5461 ; LINUX-32-PIC-NEXT:    retl
5463 ; LINUX-64-PIC-LABEL: big03:
5464 ; LINUX-64-PIC:       # %bb.0: # %entry
5465 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
5466 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5467 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rcx
5468 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5469 ; LINUX-64-PIC-NEXT:    retq
5471 ; DARWIN-32-STATIC-LABEL: big03:
5472 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5473 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5474 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+262144(,%eax,4), %ecx
5475 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ddst+262144(,%eax,4)
5476 ; DARWIN-32-STATIC-NEXT:    retl
5478 ; DARWIN-32-DYNAMIC-LABEL: big03:
5479 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5480 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5481 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+262144(,%eax,4), %ecx
5482 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ddst+262144(,%eax,4)
5483 ; DARWIN-32-DYNAMIC-NEXT:    retl
5485 ; DARWIN-32-PIC-LABEL: big03:
5486 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5487 ; DARWIN-32-PIC-NEXT:    calll L60$pb
5488 ; DARWIN-32-PIC-NEXT:  L60$pb:
5489 ; DARWIN-32-PIC-NEXT:    popl %eax
5490 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5491 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx
5492 ; DARWIN-32-PIC-NEXT:    movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4)
5493 ; DARWIN-32-PIC-NEXT:    retl
5495 ; DARWIN-64-STATIC-LABEL: big03:
5496 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5497 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
5498 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5499 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rcx
5500 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5501 ; DARWIN-64-STATIC-NEXT:    retq
5503 ; DARWIN-64-DYNAMIC-LABEL: big03:
5504 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5505 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
5506 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5507 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rcx
5508 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5509 ; DARWIN-64-DYNAMIC-NEXT:    retq
5511 ; DARWIN-64-PIC-LABEL: big03:
5512 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5513 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
5514 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5515 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rcx
5516 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5517 ; DARWIN-64-PIC-NEXT:    retq
5519 entry:
5520         %0 = add i64 %i, 65536
5521         %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0
5522         %2 = load i32, ptr %1, align 4
5523         %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0
5524         store i32 %2, ptr %3, align 4
5525         ret void
5528 define dso_local void @big04(i64 %i) nounwind {
5529 ; LINUX-64-STATIC-LABEL: big04:
5530 ; LINUX-64-STATIC:       # %bb.0: # %entry
5531 ; LINUX-64-STATIC-NEXT:    leaq ddst+262144(,%rdi,4), %rax
5532 ; LINUX-64-STATIC-NEXT:    movq %rax, dptr(%rip)
5533 ; LINUX-64-STATIC-NEXT:    retq
5535 ; LINUX-32-STATIC-LABEL: big04:
5536 ; LINUX-32-STATIC:       # %bb.0: # %entry
5537 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5538 ; LINUX-32-STATIC-NEXT:    leal ddst+262144(,%eax,4), %eax
5539 ; LINUX-32-STATIC-NEXT:    movl %eax, dptr
5540 ; LINUX-32-STATIC-NEXT:    retl
5542 ; LINUX-32-PIC-LABEL: big04:
5543 ; LINUX-32-PIC:       # %bb.0: # %entry
5544 ; LINUX-32-PIC-NEXT:    calll .L61$pb
5545 ; LINUX-32-PIC-NEXT:  .L61$pb:
5546 ; LINUX-32-PIC-NEXT:    popl %eax
5547 ; LINUX-32-PIC-NEXT:  .Ltmp61:
5548 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax
5549 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5550 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %ecx
5551 ; LINUX-32-PIC-NEXT:    movl %ecx, .Ldptr$local@GOTOFF(%eax)
5552 ; LINUX-32-PIC-NEXT:    retl
5554 ; LINUX-64-PIC-LABEL: big04:
5555 ; LINUX-64-PIC:       # %bb.0: # %entry
5556 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
5557 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5558 ; LINUX-64-PIC-NEXT:    movq %rax, .Ldptr$local(%rip)
5559 ; LINUX-64-PIC-NEXT:    retq
5561 ; DARWIN-32-STATIC-LABEL: big04:
5562 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5563 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5564 ; DARWIN-32-STATIC-NEXT:    leal _ddst+262144(,%eax,4), %eax
5565 ; DARWIN-32-STATIC-NEXT:    movl %eax, _dptr
5566 ; DARWIN-32-STATIC-NEXT:    retl
5568 ; DARWIN-32-DYNAMIC-LABEL: big04:
5569 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5570 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5571 ; DARWIN-32-DYNAMIC-NEXT:    leal _ddst+262144(,%eax,4), %eax
5572 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _dptr
5573 ; DARWIN-32-DYNAMIC-NEXT:    retl
5575 ; DARWIN-32-PIC-LABEL: big04:
5576 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5577 ; DARWIN-32-PIC-NEXT:    calll L61$pb
5578 ; DARWIN-32-PIC-NEXT:  L61$pb:
5579 ; DARWIN-32-PIC-NEXT:    popl %eax
5580 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5581 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx
5582 ; DARWIN-32-PIC-NEXT:    movl %ecx, _dptr-L61$pb(%eax)
5583 ; DARWIN-32-PIC-NEXT:    retl
5585 ; DARWIN-64-STATIC-LABEL: big04:
5586 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5587 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
5588 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5589 ; DARWIN-64-STATIC-NEXT:    movq %rax, _dptr(%rip)
5590 ; DARWIN-64-STATIC-NEXT:    retq
5592 ; DARWIN-64-DYNAMIC-LABEL: big04:
5593 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5594 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
5595 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5596 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _dptr(%rip)
5597 ; DARWIN-64-DYNAMIC-NEXT:    retq
5599 ; DARWIN-64-PIC-LABEL: big04:
5600 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5601 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
5602 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5603 ; DARWIN-64-PIC-NEXT:    movq %rax, _dptr(%rip)
5604 ; DARWIN-64-PIC-NEXT:    retq
5606 entry:
5607         %.sum = add i64 %i, 65536
5608         %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum
5609         store ptr %0, ptr @dptr, align 8
5610         ret void
5613 define dso_local void @big05(i64 %i) nounwind {
5614 ; LINUX-64-STATIC-LABEL: big05:
5615 ; LINUX-64-STATIC:       # %bb.0: # %entry
5616 ; LINUX-64-STATIC-NEXT:    movl dsrc+262144(,%rdi,4), %eax
5617 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rcx
5618 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5619 ; LINUX-64-STATIC-NEXT:    retq
5621 ; LINUX-32-STATIC-LABEL: big05:
5622 ; LINUX-32-STATIC:       # %bb.0: # %entry
5623 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5624 ; LINUX-32-STATIC-NEXT:    movl dsrc+262144(,%eax,4), %ecx
5625 ; LINUX-32-STATIC-NEXT:    movl dptr, %edx
5626 ; LINUX-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5627 ; LINUX-32-STATIC-NEXT:    retl
5629 ; LINUX-32-PIC-LABEL: big05:
5630 ; LINUX-32-PIC:       # %bb.0: # %entry
5631 ; LINUX-32-PIC-NEXT:    calll .L62$pb
5632 ; LINUX-32-PIC-NEXT:  .L62$pb:
5633 ; LINUX-32-PIC-NEXT:    popl %eax
5634 ; LINUX-32-PIC-NEXT:  .Ltmp62:
5635 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax
5636 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5637 ; LINUX-32-PIC-NEXT:    movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx
5638 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
5639 ; LINUX-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5640 ; LINUX-32-PIC-NEXT:    retl
5642 ; LINUX-64-PIC-LABEL: big05:
5643 ; LINUX-64-PIC:       # %bb.0: # %entry
5644 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
5645 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5646 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rcx
5647 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5648 ; LINUX-64-PIC-NEXT:    retq
5650 ; DARWIN-32-STATIC-LABEL: big05:
5651 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5652 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5653 ; DARWIN-32-STATIC-NEXT:    movl _dsrc+262144(,%eax,4), %ecx
5654 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %edx
5655 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5656 ; DARWIN-32-STATIC-NEXT:    retl
5658 ; DARWIN-32-DYNAMIC-LABEL: big05:
5659 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5660 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5661 ; DARWIN-32-DYNAMIC-NEXT:    movl _dsrc+262144(,%eax,4), %ecx
5662 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %edx
5663 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5664 ; DARWIN-32-DYNAMIC-NEXT:    retl
5666 ; DARWIN-32-PIC-LABEL: big05:
5667 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5668 ; DARWIN-32-PIC-NEXT:    calll L62$pb
5669 ; DARWIN-32-PIC-NEXT:  L62$pb:
5670 ; DARWIN-32-PIC-NEXT:    popl %eax
5671 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5672 ; DARWIN-32-PIC-NEXT:    movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx
5673 ; DARWIN-32-PIC-NEXT:    movl _dptr-L62$pb(%eax), %eax
5674 ; DARWIN-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5675 ; DARWIN-32-PIC-NEXT:    retl
5677 ; DARWIN-64-STATIC-LABEL: big05:
5678 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5679 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
5680 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5681 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rcx
5682 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5683 ; DARWIN-64-STATIC-NEXT:    retq
5685 ; DARWIN-64-DYNAMIC-LABEL: big05:
5686 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5687 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
5688 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5689 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rcx
5690 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5691 ; DARWIN-64-DYNAMIC-NEXT:    retq
5693 ; DARWIN-64-PIC-LABEL: big05:
5694 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5695 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
5696 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5697 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rcx
5698 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5699 ; DARWIN-64-PIC-NEXT:    retq
5701 entry:
5702         %0 = load ptr, ptr @dptr, align 8
5703         %1 = add i64 %i, 65536
5704         %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %1
5705         %3 = load i32, ptr %2, align 4
5706         %4 = getelementptr i32, ptr %0, i64 %1
5707         store i32 %3, ptr %4, align 4
5708         ret void
5711 define dso_local void @big06(i64 %i) nounwind {
5712 ; LINUX-64-STATIC-LABEL: big06:
5713 ; LINUX-64-STATIC:       # %bb.0: # %entry
5714 ; LINUX-64-STATIC-NEXT:    movl lsrc+262144(,%rdi,4), %eax
5715 ; LINUX-64-STATIC-NEXT:    movl %eax, ldst+262144(,%rdi,4)
5716 ; LINUX-64-STATIC-NEXT:    retq
5718 ; LINUX-32-STATIC-LABEL: big06:
5719 ; LINUX-32-STATIC:       # %bb.0: # %entry
5720 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5721 ; LINUX-32-STATIC-NEXT:    movl lsrc+262144(,%eax,4), %ecx
5722 ; LINUX-32-STATIC-NEXT:    movl %ecx, ldst+262144(,%eax,4)
5723 ; LINUX-32-STATIC-NEXT:    retl
5725 ; LINUX-32-PIC-LABEL: big06:
5726 ; LINUX-32-PIC:       # %bb.0: # %entry
5727 ; LINUX-32-PIC-NEXT:    calll .L63$pb
5728 ; LINUX-32-PIC-NEXT:  .L63$pb:
5729 ; LINUX-32-PIC-NEXT:    popl %eax
5730 ; LINUX-32-PIC-NEXT:  .Ltmp63:
5731 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax
5732 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5733 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx
5734 ; LINUX-32-PIC-NEXT:    movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4)
5735 ; LINUX-32-PIC-NEXT:    retl
5737 ; LINUX-64-PIC-LABEL: big06:
5738 ; LINUX-64-PIC:       # %bb.0: # %entry
5739 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
5740 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5741 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rcx
5742 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5743 ; LINUX-64-PIC-NEXT:    retq
5745 ; DARWIN-32-STATIC-LABEL: big06:
5746 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5747 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5748 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+262144(,%eax,4), %ecx
5749 ; DARWIN-32-STATIC-NEXT:    movl %ecx, _ldst+262144(,%eax,4)
5750 ; DARWIN-32-STATIC-NEXT:    retl
5752 ; DARWIN-32-DYNAMIC-LABEL: big06:
5753 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5754 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5755 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+262144(,%eax,4), %ecx
5756 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, _ldst+262144(,%eax,4)
5757 ; DARWIN-32-DYNAMIC-NEXT:    retl
5759 ; DARWIN-32-PIC-LABEL: big06:
5760 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5761 ; DARWIN-32-PIC-NEXT:    calll L63$pb
5762 ; DARWIN-32-PIC-NEXT:  L63$pb:
5763 ; DARWIN-32-PIC-NEXT:    popl %eax
5764 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5765 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx
5766 ; DARWIN-32-PIC-NEXT:    movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4)
5767 ; DARWIN-32-PIC-NEXT:    retl
5769 ; DARWIN-64-STATIC-LABEL: big06:
5770 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5771 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
5772 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5773 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rcx
5774 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5775 ; DARWIN-64-STATIC-NEXT:    retq
5777 ; DARWIN-64-DYNAMIC-LABEL: big06:
5778 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5779 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
5780 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5781 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rcx
5782 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5783 ; DARWIN-64-DYNAMIC-NEXT:    retq
5785 ; DARWIN-64-PIC-LABEL: big06:
5786 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5787 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
5788 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5789 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rcx
5790 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5791 ; DARWIN-64-PIC-NEXT:    retq
5793 entry:
5794         %0 = add i64 %i, 65536
5795         %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0
5796         %2 = load i32, ptr %1, align 4
5797         %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0
5798         store i32 %2, ptr %3, align 4
5799         ret void
5802 define dso_local void @big07(i64 %i) nounwind {
5803 ; LINUX-64-STATIC-LABEL: big07:
5804 ; LINUX-64-STATIC:       # %bb.0: # %entry
5805 ; LINUX-64-STATIC-NEXT:    leaq ldst+262144(,%rdi,4), %rax
5806 ; LINUX-64-STATIC-NEXT:    movq %rax, lptr(%rip)
5807 ; LINUX-64-STATIC-NEXT:    retq
5809 ; LINUX-32-STATIC-LABEL: big07:
5810 ; LINUX-32-STATIC:       # %bb.0: # %entry
5811 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5812 ; LINUX-32-STATIC-NEXT:    leal ldst+262144(,%eax,4), %eax
5813 ; LINUX-32-STATIC-NEXT:    movl %eax, lptr
5814 ; LINUX-32-STATIC-NEXT:    retl
5816 ; LINUX-32-PIC-LABEL: big07:
5817 ; LINUX-32-PIC:       # %bb.0: # %entry
5818 ; LINUX-32-PIC-NEXT:    calll .L64$pb
5819 ; LINUX-32-PIC-NEXT:  .L64$pb:
5820 ; LINUX-32-PIC-NEXT:    popl %eax
5821 ; LINUX-32-PIC-NEXT:  .Ltmp64:
5822 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax
5823 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5824 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx
5825 ; LINUX-32-PIC-NEXT:    movl %ecx, lptr@GOTOFF(%eax)
5826 ; LINUX-32-PIC-NEXT:    retl
5828 ; LINUX-64-PIC-LABEL: big07:
5829 ; LINUX-64-PIC:       # %bb.0: # %entry
5830 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
5831 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5832 ; LINUX-64-PIC-NEXT:    movq %rax, lptr(%rip)
5833 ; LINUX-64-PIC-NEXT:    retq
5835 ; DARWIN-32-STATIC-LABEL: big07:
5836 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5837 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5838 ; DARWIN-32-STATIC-NEXT:    leal _ldst+262144(,%eax,4), %eax
5839 ; DARWIN-32-STATIC-NEXT:    movl %eax, _lptr
5840 ; DARWIN-32-STATIC-NEXT:    retl
5842 ; DARWIN-32-DYNAMIC-LABEL: big07:
5843 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5844 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5845 ; DARWIN-32-DYNAMIC-NEXT:    leal _ldst+262144(,%eax,4), %eax
5846 ; DARWIN-32-DYNAMIC-NEXT:    movl %eax, _lptr
5847 ; DARWIN-32-DYNAMIC-NEXT:    retl
5849 ; DARWIN-32-PIC-LABEL: big07:
5850 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5851 ; DARWIN-32-PIC-NEXT:    calll L64$pb
5852 ; DARWIN-32-PIC-NEXT:  L64$pb:
5853 ; DARWIN-32-PIC-NEXT:    popl %eax
5854 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5855 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx
5856 ; DARWIN-32-PIC-NEXT:    movl %ecx, _lptr-L64$pb(%eax)
5857 ; DARWIN-32-PIC-NEXT:    retl
5859 ; DARWIN-64-STATIC-LABEL: big07:
5860 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5861 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
5862 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5863 ; DARWIN-64-STATIC-NEXT:    movq %rax, _lptr(%rip)
5864 ; DARWIN-64-STATIC-NEXT:    retq
5866 ; DARWIN-64-DYNAMIC-LABEL: big07:
5867 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5868 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
5869 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5870 ; DARWIN-64-DYNAMIC-NEXT:    movq %rax, _lptr(%rip)
5871 ; DARWIN-64-DYNAMIC-NEXT:    retq
5873 ; DARWIN-64-PIC-LABEL: big07:
5874 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5875 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
5876 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
5877 ; DARWIN-64-PIC-NEXT:    movq %rax, _lptr(%rip)
5878 ; DARWIN-64-PIC-NEXT:    retq
5880 entry:
5881         %.sum = add i64 %i, 65536
5882         %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum
5883         store ptr %0, ptr @lptr, align 8
5884         ret void
5887 define dso_local void @big08(i64 %i) nounwind {
5888 ; LINUX-64-STATIC-LABEL: big08:
5889 ; LINUX-64-STATIC:       # %bb.0: # %entry
5890 ; LINUX-64-STATIC-NEXT:    movl lsrc+262144(,%rdi,4), %eax
5891 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rcx
5892 ; LINUX-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5893 ; LINUX-64-STATIC-NEXT:    retq
5895 ; LINUX-32-STATIC-LABEL: big08:
5896 ; LINUX-32-STATIC:       # %bb.0: # %entry
5897 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5898 ; LINUX-32-STATIC-NEXT:    movl lsrc+262144(,%eax,4), %ecx
5899 ; LINUX-32-STATIC-NEXT:    movl lptr, %edx
5900 ; LINUX-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5901 ; LINUX-32-STATIC-NEXT:    retl
5903 ; LINUX-32-PIC-LABEL: big08:
5904 ; LINUX-32-PIC:       # %bb.0: # %entry
5905 ; LINUX-32-PIC-NEXT:    calll .L65$pb
5906 ; LINUX-32-PIC-NEXT:  .L65$pb:
5907 ; LINUX-32-PIC-NEXT:    popl %eax
5908 ; LINUX-32-PIC-NEXT:  .Ltmp65:
5909 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax
5910 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5911 ; LINUX-32-PIC-NEXT:    movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx
5912 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
5913 ; LINUX-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5914 ; LINUX-32-PIC-NEXT:    retl
5916 ; LINUX-64-PIC-LABEL: big08:
5917 ; LINUX-64-PIC:       # %bb.0: # %entry
5918 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
5919 ; LINUX-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5920 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rcx
5921 ; LINUX-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5922 ; LINUX-64-PIC-NEXT:    retq
5924 ; DARWIN-32-STATIC-LABEL: big08:
5925 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
5926 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5927 ; DARWIN-32-STATIC-NEXT:    movl _lsrc+262144(,%eax,4), %ecx
5928 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %edx
5929 ; DARWIN-32-STATIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5930 ; DARWIN-32-STATIC-NEXT:    retl
5932 ; DARWIN-32-DYNAMIC-LABEL: big08:
5933 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
5934 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
5935 ; DARWIN-32-DYNAMIC-NEXT:    movl _lsrc+262144(,%eax,4), %ecx
5936 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %edx
5937 ; DARWIN-32-DYNAMIC-NEXT:    movl %ecx, 262144(%edx,%eax,4)
5938 ; DARWIN-32-DYNAMIC-NEXT:    retl
5940 ; DARWIN-32-PIC-LABEL: big08:
5941 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
5942 ; DARWIN-32-PIC-NEXT:    calll L65$pb
5943 ; DARWIN-32-PIC-NEXT:  L65$pb:
5944 ; DARWIN-32-PIC-NEXT:    popl %eax
5945 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
5946 ; DARWIN-32-PIC-NEXT:    movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx
5947 ; DARWIN-32-PIC-NEXT:    movl _lptr-L65$pb(%eax), %eax
5948 ; DARWIN-32-PIC-NEXT:    movl %edx, 262144(%eax,%ecx,4)
5949 ; DARWIN-32-PIC-NEXT:    retl
5951 ; DARWIN-64-STATIC-LABEL: big08:
5952 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
5953 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
5954 ; DARWIN-64-STATIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5955 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rcx
5956 ; DARWIN-64-STATIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5957 ; DARWIN-64-STATIC-NEXT:    retq
5959 ; DARWIN-64-DYNAMIC-LABEL: big08:
5960 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
5961 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
5962 ; DARWIN-64-DYNAMIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5963 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rcx
5964 ; DARWIN-64-DYNAMIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5965 ; DARWIN-64-DYNAMIC-NEXT:    retq
5967 ; DARWIN-64-PIC-LABEL: big08:
5968 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
5969 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
5970 ; DARWIN-64-PIC-NEXT:    movl 262144(%rax,%rdi,4), %eax
5971 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rcx
5972 ; DARWIN-64-PIC-NEXT:    movl %eax, 262144(%rcx,%rdi,4)
5973 ; DARWIN-64-PIC-NEXT:    retq
5975 entry:
5976         %0 = load ptr, ptr @lptr, align 8
5977         %1 = add i64 %i, 65536
5978         %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %1
5979         %3 = load i32, ptr %2, align 4
5980         %4 = getelementptr i32, ptr %0, i64 %1
5981         store i32 %3, ptr %4, align 4
5982         ret void
5985 define dso_local ptr @bar00() nounwind {
5986 ; LINUX-64-STATIC-LABEL: bar00:
5987 ; LINUX-64-STATIC:       # %bb.0: # %entry
5988 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
5989 ; LINUX-64-STATIC-NEXT:    retq
5991 ; LINUX-32-STATIC-LABEL: bar00:
5992 ; LINUX-32-STATIC:       # %bb.0: # %entry
5993 ; LINUX-32-STATIC-NEXT:    movl $src, %eax
5994 ; LINUX-32-STATIC-NEXT:    retl
5996 ; LINUX-32-PIC-LABEL: bar00:
5997 ; LINUX-32-PIC:       # %bb.0: # %entry
5998 ; LINUX-32-PIC-NEXT:    calll .L66$pb
5999 ; LINUX-32-PIC-NEXT:  .L66$pb:
6000 ; LINUX-32-PIC-NEXT:    popl %eax
6001 ; LINUX-32-PIC-NEXT:  .Ltmp66:
6002 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax
6003 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %eax
6004 ; LINUX-32-PIC-NEXT:    retl
6006 ; LINUX-64-PIC-LABEL: bar00:
6007 ; LINUX-64-PIC:       # %bb.0: # %entry
6008 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
6009 ; LINUX-64-PIC-NEXT:    retq
6011 ; DARWIN-32-STATIC-LABEL: bar00:
6012 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6013 ; DARWIN-32-STATIC-NEXT:    movl $_src, %eax
6014 ; DARWIN-32-STATIC-NEXT:    retl
6016 ; DARWIN-32-DYNAMIC-LABEL: bar00:
6017 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6018 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
6019 ; DARWIN-32-DYNAMIC-NEXT:    retl
6021 ; DARWIN-32-PIC-LABEL: bar00:
6022 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6023 ; DARWIN-32-PIC-NEXT:    calll L66$pb
6024 ; DARWIN-32-PIC-NEXT:  L66$pb:
6025 ; DARWIN-32-PIC-NEXT:    popl %eax
6026 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L66$pb(%eax), %eax
6027 ; DARWIN-32-PIC-NEXT:    retl
6029 ; DARWIN-64-STATIC-LABEL: bar00:
6030 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6031 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6032 ; DARWIN-64-STATIC-NEXT:    retq
6034 ; DARWIN-64-DYNAMIC-LABEL: bar00:
6035 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6036 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6037 ; DARWIN-64-DYNAMIC-NEXT:    retq
6039 ; DARWIN-64-PIC-LABEL: bar00:
6040 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6041 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6042 ; DARWIN-64-PIC-NEXT:    retq
6044 entry:
6045         ret ptr @src
6048 define dso_local ptr @bxr00() nounwind {
6049 ; LINUX-64-STATIC-LABEL: bxr00:
6050 ; LINUX-64-STATIC:       # %bb.0: # %entry
6051 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
6052 ; LINUX-64-STATIC-NEXT:    retq
6054 ; LINUX-32-STATIC-LABEL: bxr00:
6055 ; LINUX-32-STATIC:       # %bb.0: # %entry
6056 ; LINUX-32-STATIC-NEXT:    movl $xsrc, %eax
6057 ; LINUX-32-STATIC-NEXT:    retl
6059 ; LINUX-32-PIC-LABEL: bxr00:
6060 ; LINUX-32-PIC:       # %bb.0: # %entry
6061 ; LINUX-32-PIC-NEXT:    calll .L67$pb
6062 ; LINUX-32-PIC-NEXT:  .L67$pb:
6063 ; LINUX-32-PIC-NEXT:    popl %eax
6064 ; LINUX-32-PIC-NEXT:  .Ltmp67:
6065 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax
6066 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %eax
6067 ; LINUX-32-PIC-NEXT:    retl
6069 ; LINUX-64-PIC-LABEL: bxr00:
6070 ; LINUX-64-PIC:       # %bb.0: # %entry
6071 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
6072 ; LINUX-64-PIC-NEXT:    retq
6074 ; DARWIN-32-STATIC-LABEL: bxr00:
6075 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6076 ; DARWIN-32-STATIC-NEXT:    movl $_xsrc, %eax
6077 ; DARWIN-32-STATIC-NEXT:    retl
6079 ; DARWIN-32-DYNAMIC-LABEL: bxr00:
6080 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6081 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
6082 ; DARWIN-32-DYNAMIC-NEXT:    retl
6084 ; DARWIN-32-PIC-LABEL: bxr00:
6085 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6086 ; DARWIN-32-PIC-NEXT:    calll L67$pb
6087 ; DARWIN-32-PIC-NEXT:  L67$pb:
6088 ; DARWIN-32-PIC-NEXT:    popl %eax
6089 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax
6090 ; DARWIN-32-PIC-NEXT:    retl
6092 ; DARWIN-64-STATIC-LABEL: bxr00:
6093 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6094 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6095 ; DARWIN-64-STATIC-NEXT:    retq
6097 ; DARWIN-64-DYNAMIC-LABEL: bxr00:
6098 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6099 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6100 ; DARWIN-64-DYNAMIC-NEXT:    retq
6102 ; DARWIN-64-PIC-LABEL: bxr00:
6103 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6104 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6105 ; DARWIN-64-PIC-NEXT:    retq
6107 entry:
6108         ret ptr @xsrc
6111 define dso_local ptr @bar01() nounwind {
6112 ; LINUX-64-STATIC-LABEL: bar01:
6113 ; LINUX-64-STATIC:       # %bb.0: # %entry
6114 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
6115 ; LINUX-64-STATIC-NEXT:    retq
6117 ; LINUX-32-STATIC-LABEL: bar01:
6118 ; LINUX-32-STATIC:       # %bb.0: # %entry
6119 ; LINUX-32-STATIC-NEXT:    movl $dst, %eax
6120 ; LINUX-32-STATIC-NEXT:    retl
6122 ; LINUX-32-PIC-LABEL: bar01:
6123 ; LINUX-32-PIC:       # %bb.0: # %entry
6124 ; LINUX-32-PIC-NEXT:    calll .L68$pb
6125 ; LINUX-32-PIC-NEXT:  .L68$pb:
6126 ; LINUX-32-PIC-NEXT:    popl %eax
6127 ; LINUX-32-PIC-NEXT:  .Ltmp68:
6128 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax
6129 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
6130 ; LINUX-32-PIC-NEXT:    retl
6132 ; LINUX-64-PIC-LABEL: bar01:
6133 ; LINUX-64-PIC:       # %bb.0: # %entry
6134 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
6135 ; LINUX-64-PIC-NEXT:    retq
6137 ; DARWIN-32-STATIC-LABEL: bar01:
6138 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6139 ; DARWIN-32-STATIC-NEXT:    movl $_dst, %eax
6140 ; DARWIN-32-STATIC-NEXT:    retl
6142 ; DARWIN-32-DYNAMIC-LABEL: bar01:
6143 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6144 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %eax
6145 ; DARWIN-32-DYNAMIC-NEXT:    retl
6147 ; DARWIN-32-PIC-LABEL: bar01:
6148 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6149 ; DARWIN-32-PIC-NEXT:    calll L68$pb
6150 ; DARWIN-32-PIC-NEXT:  L68$pb:
6151 ; DARWIN-32-PIC-NEXT:    popl %eax
6152 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax
6153 ; DARWIN-32-PIC-NEXT:    retl
6155 ; DARWIN-64-STATIC-LABEL: bar01:
6156 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6157 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6158 ; DARWIN-64-STATIC-NEXT:    retq
6160 ; DARWIN-64-DYNAMIC-LABEL: bar01:
6161 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6162 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6163 ; DARWIN-64-DYNAMIC-NEXT:    retq
6165 ; DARWIN-64-PIC-LABEL: bar01:
6166 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6167 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6168 ; DARWIN-64-PIC-NEXT:    retq
6170 entry:
6171         ret ptr @dst
6174 define dso_local ptr @bxr01() nounwind {
6175 ; LINUX-64-STATIC-LABEL: bxr01:
6176 ; LINUX-64-STATIC:       # %bb.0: # %entry
6177 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
6178 ; LINUX-64-STATIC-NEXT:    retq
6180 ; LINUX-32-STATIC-LABEL: bxr01:
6181 ; LINUX-32-STATIC:       # %bb.0: # %entry
6182 ; LINUX-32-STATIC-NEXT:    movl $xdst, %eax
6183 ; LINUX-32-STATIC-NEXT:    retl
6185 ; LINUX-32-PIC-LABEL: bxr01:
6186 ; LINUX-32-PIC:       # %bb.0: # %entry
6187 ; LINUX-32-PIC-NEXT:    calll .L69$pb
6188 ; LINUX-32-PIC-NEXT:  .L69$pb:
6189 ; LINUX-32-PIC-NEXT:    popl %eax
6190 ; LINUX-32-PIC-NEXT:  .Ltmp69:
6191 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax
6192 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
6193 ; LINUX-32-PIC-NEXT:    retl
6195 ; LINUX-64-PIC-LABEL: bxr01:
6196 ; LINUX-64-PIC:       # %bb.0: # %entry
6197 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
6198 ; LINUX-64-PIC-NEXT:    retq
6200 ; DARWIN-32-STATIC-LABEL: bxr01:
6201 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6202 ; DARWIN-32-STATIC-NEXT:    movl $_xdst, %eax
6203 ; DARWIN-32-STATIC-NEXT:    retl
6205 ; DARWIN-32-DYNAMIC-LABEL: bxr01:
6206 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6207 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %eax
6208 ; DARWIN-32-DYNAMIC-NEXT:    retl
6210 ; DARWIN-32-PIC-LABEL: bxr01:
6211 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6212 ; DARWIN-32-PIC-NEXT:    calll L69$pb
6213 ; DARWIN-32-PIC-NEXT:  L69$pb:
6214 ; DARWIN-32-PIC-NEXT:    popl %eax
6215 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax
6216 ; DARWIN-32-PIC-NEXT:    retl
6218 ; DARWIN-64-STATIC-LABEL: bxr01:
6219 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6220 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6221 ; DARWIN-64-STATIC-NEXT:    retq
6223 ; DARWIN-64-DYNAMIC-LABEL: bxr01:
6224 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6225 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6226 ; DARWIN-64-DYNAMIC-NEXT:    retq
6228 ; DARWIN-64-PIC-LABEL: bxr01:
6229 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6230 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6231 ; DARWIN-64-PIC-NEXT:    retq
6233 entry:
6234         ret ptr @xdst
6237 define dso_local ptr @bar02() nounwind {
6238 ; LINUX-64-STATIC-LABEL: bar02:
6239 ; LINUX-64-STATIC:       # %bb.0: # %entry
6240 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
6241 ; LINUX-64-STATIC-NEXT:    retq
6243 ; LINUX-32-STATIC-LABEL: bar02:
6244 ; LINUX-32-STATIC:       # %bb.0: # %entry
6245 ; LINUX-32-STATIC-NEXT:    movl $ptr, %eax
6246 ; LINUX-32-STATIC-NEXT:    retl
6248 ; LINUX-32-PIC-LABEL: bar02:
6249 ; LINUX-32-PIC:       # %bb.0: # %entry
6250 ; LINUX-32-PIC-NEXT:    calll .L70$pb
6251 ; LINUX-32-PIC-NEXT:  .L70$pb:
6252 ; LINUX-32-PIC-NEXT:    popl %eax
6253 ; LINUX-32-PIC-NEXT:  .Ltmp70:
6254 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax
6255 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
6256 ; LINUX-32-PIC-NEXT:    retl
6258 ; LINUX-64-PIC-LABEL: bar02:
6259 ; LINUX-64-PIC:       # %bb.0: # %entry
6260 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
6261 ; LINUX-64-PIC-NEXT:    retq
6263 ; DARWIN-32-STATIC-LABEL: bar02:
6264 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6265 ; DARWIN-32-STATIC-NEXT:    movl $_ptr, %eax
6266 ; DARWIN-32-STATIC-NEXT:    retl
6268 ; DARWIN-32-DYNAMIC-LABEL: bar02:
6269 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6270 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %eax
6271 ; DARWIN-32-DYNAMIC-NEXT:    retl
6273 ; DARWIN-32-PIC-LABEL: bar02:
6274 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6275 ; DARWIN-32-PIC-NEXT:    calll L70$pb
6276 ; DARWIN-32-PIC-NEXT:  L70$pb:
6277 ; DARWIN-32-PIC-NEXT:    popl %eax
6278 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax
6279 ; DARWIN-32-PIC-NEXT:    retl
6281 ; DARWIN-64-STATIC-LABEL: bar02:
6282 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6283 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6284 ; DARWIN-64-STATIC-NEXT:    retq
6286 ; DARWIN-64-DYNAMIC-LABEL: bar02:
6287 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6288 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6289 ; DARWIN-64-DYNAMIC-NEXT:    retq
6291 ; DARWIN-64-PIC-LABEL: bar02:
6292 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6293 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6294 ; DARWIN-64-PIC-NEXT:    retq
6296 entry:
6297         ret ptr @ptr
6300 define dso_local ptr @bar03() nounwind {
6301 ; LINUX-64-STATIC-LABEL: bar03:
6302 ; LINUX-64-STATIC:       # %bb.0: # %entry
6303 ; LINUX-64-STATIC-NEXT:    movl $dsrc, %eax
6304 ; LINUX-64-STATIC-NEXT:    retq
6306 ; LINUX-32-STATIC-LABEL: bar03:
6307 ; LINUX-32-STATIC:       # %bb.0: # %entry
6308 ; LINUX-32-STATIC-NEXT:    movl $dsrc, %eax
6309 ; LINUX-32-STATIC-NEXT:    retl
6311 ; LINUX-32-PIC-LABEL: bar03:
6312 ; LINUX-32-PIC:       # %bb.0: # %entry
6313 ; LINUX-32-PIC-NEXT:    calll .L71$pb
6314 ; LINUX-32-PIC-NEXT:  .L71$pb:
6315 ; LINUX-32-PIC-NEXT:    popl %eax
6316 ; LINUX-32-PIC-NEXT:  .Ltmp71:
6317 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax
6318 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF(%eax), %eax
6319 ; LINUX-32-PIC-NEXT:    retl
6321 ; LINUX-64-PIC-LABEL: bar03:
6322 ; LINUX-64-PIC:       # %bb.0: # %entry
6323 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
6324 ; LINUX-64-PIC-NEXT:    retq
6326 ; DARWIN-32-STATIC-LABEL: bar03:
6327 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6328 ; DARWIN-32-STATIC-NEXT:    movl $_dsrc, %eax
6329 ; DARWIN-32-STATIC-NEXT:    retl
6331 ; DARWIN-32-DYNAMIC-LABEL: bar03:
6332 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6333 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dsrc, %eax
6334 ; DARWIN-32-DYNAMIC-NEXT:    retl
6336 ; DARWIN-32-PIC-LABEL: bar03:
6337 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6338 ; DARWIN-32-PIC-NEXT:    calll L71$pb
6339 ; DARWIN-32-PIC-NEXT:  L71$pb:
6340 ; DARWIN-32-PIC-NEXT:    popl %eax
6341 ; DARWIN-32-PIC-NEXT:    leal _dsrc-L71$pb(%eax), %eax
6342 ; DARWIN-32-PIC-NEXT:    retl
6344 ; DARWIN-64-STATIC-LABEL: bar03:
6345 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6346 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
6347 ; DARWIN-64-STATIC-NEXT:    retq
6349 ; DARWIN-64-DYNAMIC-LABEL: bar03:
6350 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6351 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
6352 ; DARWIN-64-DYNAMIC-NEXT:    retq
6354 ; DARWIN-64-PIC-LABEL: bar03:
6355 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6356 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
6357 ; DARWIN-64-PIC-NEXT:    retq
6359 entry:
6360         ret ptr @dsrc
6363 define dso_local ptr @bar04() nounwind {
6364 ; LINUX-64-STATIC-LABEL: bar04:
6365 ; LINUX-64-STATIC:       # %bb.0: # %entry
6366 ; LINUX-64-STATIC-NEXT:    movl $ddst, %eax
6367 ; LINUX-64-STATIC-NEXT:    retq
6369 ; LINUX-32-STATIC-LABEL: bar04:
6370 ; LINUX-32-STATIC:       # %bb.0: # %entry
6371 ; LINUX-32-STATIC-NEXT:    movl $ddst, %eax
6372 ; LINUX-32-STATIC-NEXT:    retl
6374 ; LINUX-32-PIC-LABEL: bar04:
6375 ; LINUX-32-PIC:       # %bb.0: # %entry
6376 ; LINUX-32-PIC-NEXT:    calll .L72$pb
6377 ; LINUX-32-PIC-NEXT:  .L72$pb:
6378 ; LINUX-32-PIC-NEXT:    popl %eax
6379 ; LINUX-32-PIC-NEXT:  .Ltmp72:
6380 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax
6381 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF(%eax), %eax
6382 ; LINUX-32-PIC-NEXT:    retl
6384 ; LINUX-64-PIC-LABEL: bar04:
6385 ; LINUX-64-PIC:       # %bb.0: # %entry
6386 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
6387 ; LINUX-64-PIC-NEXT:    retq
6389 ; DARWIN-32-STATIC-LABEL: bar04:
6390 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6391 ; DARWIN-32-STATIC-NEXT:    movl $_ddst, %eax
6392 ; DARWIN-32-STATIC-NEXT:    retl
6394 ; DARWIN-32-DYNAMIC-LABEL: bar04:
6395 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6396 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst, %eax
6397 ; DARWIN-32-DYNAMIC-NEXT:    retl
6399 ; DARWIN-32-PIC-LABEL: bar04:
6400 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6401 ; DARWIN-32-PIC-NEXT:    calll L72$pb
6402 ; DARWIN-32-PIC-NEXT:  L72$pb:
6403 ; DARWIN-32-PIC-NEXT:    popl %eax
6404 ; DARWIN-32-PIC-NEXT:    leal _ddst-L72$pb(%eax), %eax
6405 ; DARWIN-32-PIC-NEXT:    retl
6407 ; DARWIN-64-STATIC-LABEL: bar04:
6408 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6409 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
6410 ; DARWIN-64-STATIC-NEXT:    retq
6412 ; DARWIN-64-DYNAMIC-LABEL: bar04:
6413 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6414 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
6415 ; DARWIN-64-DYNAMIC-NEXT:    retq
6417 ; DARWIN-64-PIC-LABEL: bar04:
6418 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6419 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
6420 ; DARWIN-64-PIC-NEXT:    retq
6422 entry:
6423         ret ptr @ddst
6426 define dso_local ptr @bar05() nounwind {
6427 ; LINUX-64-STATIC-LABEL: bar05:
6428 ; LINUX-64-STATIC:       # %bb.0: # %entry
6429 ; LINUX-64-STATIC-NEXT:    movl $dptr, %eax
6430 ; LINUX-64-STATIC-NEXT:    retq
6432 ; LINUX-32-STATIC-LABEL: bar05:
6433 ; LINUX-32-STATIC:       # %bb.0: # %entry
6434 ; LINUX-32-STATIC-NEXT:    movl $dptr, %eax
6435 ; LINUX-32-STATIC-NEXT:    retl
6437 ; LINUX-32-PIC-LABEL: bar05:
6438 ; LINUX-32-PIC:       # %bb.0: # %entry
6439 ; LINUX-32-PIC-NEXT:    calll .L73$pb
6440 ; LINUX-32-PIC-NEXT:  .L73$pb:
6441 ; LINUX-32-PIC-NEXT:    popl %eax
6442 ; LINUX-32-PIC-NEXT:  .Ltmp73:
6443 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax
6444 ; LINUX-32-PIC-NEXT:    leal .Ldptr$local@GOTOFF(%eax), %eax
6445 ; LINUX-32-PIC-NEXT:    retl
6447 ; LINUX-64-PIC-LABEL: bar05:
6448 ; LINUX-64-PIC:       # %bb.0: # %entry
6449 ; LINUX-64-PIC-NEXT:    leaq .Ldptr$local(%rip), %rax
6450 ; LINUX-64-PIC-NEXT:    retq
6452 ; DARWIN-32-STATIC-LABEL: bar05:
6453 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6454 ; DARWIN-32-STATIC-NEXT:    movl $_dptr, %eax
6455 ; DARWIN-32-STATIC-NEXT:    retl
6457 ; DARWIN-32-DYNAMIC-LABEL: bar05:
6458 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6459 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dptr, %eax
6460 ; DARWIN-32-DYNAMIC-NEXT:    retl
6462 ; DARWIN-32-PIC-LABEL: bar05:
6463 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6464 ; DARWIN-32-PIC-NEXT:    calll L73$pb
6465 ; DARWIN-32-PIC-NEXT:  L73$pb:
6466 ; DARWIN-32-PIC-NEXT:    popl %eax
6467 ; DARWIN-32-PIC-NEXT:    leal _dptr-L73$pb(%eax), %eax
6468 ; DARWIN-32-PIC-NEXT:    retl
6470 ; DARWIN-64-STATIC-LABEL: bar05:
6471 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6472 ; DARWIN-64-STATIC-NEXT:    leaq _dptr(%rip), %rax
6473 ; DARWIN-64-STATIC-NEXT:    retq
6475 ; DARWIN-64-DYNAMIC-LABEL: bar05:
6476 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6477 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dptr(%rip), %rax
6478 ; DARWIN-64-DYNAMIC-NEXT:    retq
6480 ; DARWIN-64-PIC-LABEL: bar05:
6481 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6482 ; DARWIN-64-PIC-NEXT:    leaq _dptr(%rip), %rax
6483 ; DARWIN-64-PIC-NEXT:    retq
6485 entry:
6486         ret ptr @dptr
6489 define dso_local ptr @bar06() nounwind {
6490 ; LINUX-64-STATIC-LABEL: bar06:
6491 ; LINUX-64-STATIC:       # %bb.0: # %entry
6492 ; LINUX-64-STATIC-NEXT:    movl $lsrc, %eax
6493 ; LINUX-64-STATIC-NEXT:    retq
6495 ; LINUX-32-STATIC-LABEL: bar06:
6496 ; LINUX-32-STATIC:       # %bb.0: # %entry
6497 ; LINUX-32-STATIC-NEXT:    movl $lsrc, %eax
6498 ; LINUX-32-STATIC-NEXT:    retl
6500 ; LINUX-32-PIC-LABEL: bar06:
6501 ; LINUX-32-PIC:       # %bb.0: # %entry
6502 ; LINUX-32-PIC-NEXT:    calll .L74$pb
6503 ; LINUX-32-PIC-NEXT:  .L74$pb:
6504 ; LINUX-32-PIC-NEXT:    popl %eax
6505 ; LINUX-32-PIC-NEXT:  .Ltmp74:
6506 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax
6507 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF(%eax), %eax
6508 ; LINUX-32-PIC-NEXT:    retl
6510 ; LINUX-64-PIC-LABEL: bar06:
6511 ; LINUX-64-PIC:       # %bb.0: # %entry
6512 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
6513 ; LINUX-64-PIC-NEXT:    retq
6515 ; DARWIN-32-STATIC-LABEL: bar06:
6516 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6517 ; DARWIN-32-STATIC-NEXT:    movl $_lsrc, %eax
6518 ; DARWIN-32-STATIC-NEXT:    retl
6520 ; DARWIN-32-DYNAMIC-LABEL: bar06:
6521 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6522 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lsrc, %eax
6523 ; DARWIN-32-DYNAMIC-NEXT:    retl
6525 ; DARWIN-32-PIC-LABEL: bar06:
6526 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6527 ; DARWIN-32-PIC-NEXT:    calll L74$pb
6528 ; DARWIN-32-PIC-NEXT:  L74$pb:
6529 ; DARWIN-32-PIC-NEXT:    popl %eax
6530 ; DARWIN-32-PIC-NEXT:    leal _lsrc-L74$pb(%eax), %eax
6531 ; DARWIN-32-PIC-NEXT:    retl
6533 ; DARWIN-64-STATIC-LABEL: bar06:
6534 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6535 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
6536 ; DARWIN-64-STATIC-NEXT:    retq
6538 ; DARWIN-64-DYNAMIC-LABEL: bar06:
6539 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6540 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
6541 ; DARWIN-64-DYNAMIC-NEXT:    retq
6543 ; DARWIN-64-PIC-LABEL: bar06:
6544 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6545 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
6546 ; DARWIN-64-PIC-NEXT:    retq
6548 entry:
6549         ret ptr @lsrc
6552 define dso_local ptr @bar07() nounwind {
6553 ; LINUX-64-STATIC-LABEL: bar07:
6554 ; LINUX-64-STATIC:       # %bb.0: # %entry
6555 ; LINUX-64-STATIC-NEXT:    movl $ldst, %eax
6556 ; LINUX-64-STATIC-NEXT:    retq
6558 ; LINUX-32-STATIC-LABEL: bar07:
6559 ; LINUX-32-STATIC:       # %bb.0: # %entry
6560 ; LINUX-32-STATIC-NEXT:    movl $ldst, %eax
6561 ; LINUX-32-STATIC-NEXT:    retl
6563 ; LINUX-32-PIC-LABEL: bar07:
6564 ; LINUX-32-PIC:       # %bb.0: # %entry
6565 ; LINUX-32-PIC-NEXT:    calll .L75$pb
6566 ; LINUX-32-PIC-NEXT:  .L75$pb:
6567 ; LINUX-32-PIC-NEXT:    popl %eax
6568 ; LINUX-32-PIC-NEXT:  .Ltmp75:
6569 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax
6570 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF(%eax), %eax
6571 ; LINUX-32-PIC-NEXT:    retl
6573 ; LINUX-64-PIC-LABEL: bar07:
6574 ; LINUX-64-PIC:       # %bb.0: # %entry
6575 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
6576 ; LINUX-64-PIC-NEXT:    retq
6578 ; DARWIN-32-STATIC-LABEL: bar07:
6579 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6580 ; DARWIN-32-STATIC-NEXT:    movl $_ldst, %eax
6581 ; DARWIN-32-STATIC-NEXT:    retl
6583 ; DARWIN-32-DYNAMIC-LABEL: bar07:
6584 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6585 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst, %eax
6586 ; DARWIN-32-DYNAMIC-NEXT:    retl
6588 ; DARWIN-32-PIC-LABEL: bar07:
6589 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6590 ; DARWIN-32-PIC-NEXT:    calll L75$pb
6591 ; DARWIN-32-PIC-NEXT:  L75$pb:
6592 ; DARWIN-32-PIC-NEXT:    popl %eax
6593 ; DARWIN-32-PIC-NEXT:    leal _ldst-L75$pb(%eax), %eax
6594 ; DARWIN-32-PIC-NEXT:    retl
6596 ; DARWIN-64-STATIC-LABEL: bar07:
6597 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6598 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
6599 ; DARWIN-64-STATIC-NEXT:    retq
6601 ; DARWIN-64-DYNAMIC-LABEL: bar07:
6602 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6603 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
6604 ; DARWIN-64-DYNAMIC-NEXT:    retq
6606 ; DARWIN-64-PIC-LABEL: bar07:
6607 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6608 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
6609 ; DARWIN-64-PIC-NEXT:    retq
6611 entry:
6612         ret ptr @ldst
6615 define dso_local ptr @bar08() nounwind {
6616 ; LINUX-64-STATIC-LABEL: bar08:
6617 ; LINUX-64-STATIC:       # %bb.0: # %entry
6618 ; LINUX-64-STATIC-NEXT:    movl $lptr, %eax
6619 ; LINUX-64-STATIC-NEXT:    retq
6621 ; LINUX-32-STATIC-LABEL: bar08:
6622 ; LINUX-32-STATIC:       # %bb.0: # %entry
6623 ; LINUX-32-STATIC-NEXT:    movl $lptr, %eax
6624 ; LINUX-32-STATIC-NEXT:    retl
6626 ; LINUX-32-PIC-LABEL: bar08:
6627 ; LINUX-32-PIC:       # %bb.0: # %entry
6628 ; LINUX-32-PIC-NEXT:    calll .L76$pb
6629 ; LINUX-32-PIC-NEXT:  .L76$pb:
6630 ; LINUX-32-PIC-NEXT:    popl %eax
6631 ; LINUX-32-PIC-NEXT:  .Ltmp76:
6632 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax
6633 ; LINUX-32-PIC-NEXT:    leal lptr@GOTOFF(%eax), %eax
6634 ; LINUX-32-PIC-NEXT:    retl
6636 ; LINUX-64-PIC-LABEL: bar08:
6637 ; LINUX-64-PIC:       # %bb.0: # %entry
6638 ; LINUX-64-PIC-NEXT:    leaq lptr(%rip), %rax
6639 ; LINUX-64-PIC-NEXT:    retq
6641 ; DARWIN-32-STATIC-LABEL: bar08:
6642 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6643 ; DARWIN-32-STATIC-NEXT:    movl $_lptr, %eax
6644 ; DARWIN-32-STATIC-NEXT:    retl
6646 ; DARWIN-32-DYNAMIC-LABEL: bar08:
6647 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6648 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lptr, %eax
6649 ; DARWIN-32-DYNAMIC-NEXT:    retl
6651 ; DARWIN-32-PIC-LABEL: bar08:
6652 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6653 ; DARWIN-32-PIC-NEXT:    calll L76$pb
6654 ; DARWIN-32-PIC-NEXT:  L76$pb:
6655 ; DARWIN-32-PIC-NEXT:    popl %eax
6656 ; DARWIN-32-PIC-NEXT:    leal _lptr-L76$pb(%eax), %eax
6657 ; DARWIN-32-PIC-NEXT:    retl
6659 ; DARWIN-64-STATIC-LABEL: bar08:
6660 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6661 ; DARWIN-64-STATIC-NEXT:    leaq _lptr(%rip), %rax
6662 ; DARWIN-64-STATIC-NEXT:    retq
6664 ; DARWIN-64-DYNAMIC-LABEL: bar08:
6665 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6666 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lptr(%rip), %rax
6667 ; DARWIN-64-DYNAMIC-NEXT:    retq
6669 ; DARWIN-64-PIC-LABEL: bar08:
6670 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6671 ; DARWIN-64-PIC-NEXT:    leaq _lptr(%rip), %rax
6672 ; DARWIN-64-PIC-NEXT:    retq
6674 entry:
6675         ret ptr @lptr
6678 define dso_local ptr @har00() nounwind {
6679 ; LINUX-64-STATIC-LABEL: har00:
6680 ; LINUX-64-STATIC:       # %bb.0: # %entry
6681 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
6682 ; LINUX-64-STATIC-NEXT:    retq
6684 ; LINUX-32-STATIC-LABEL: har00:
6685 ; LINUX-32-STATIC:       # %bb.0: # %entry
6686 ; LINUX-32-STATIC-NEXT:    movl $src, %eax
6687 ; LINUX-32-STATIC-NEXT:    retl
6689 ; LINUX-32-PIC-LABEL: har00:
6690 ; LINUX-32-PIC:       # %bb.0: # %entry
6691 ; LINUX-32-PIC-NEXT:    calll .L77$pb
6692 ; LINUX-32-PIC-NEXT:  .L77$pb:
6693 ; LINUX-32-PIC-NEXT:    popl %eax
6694 ; LINUX-32-PIC-NEXT:  .Ltmp77:
6695 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax
6696 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %eax
6697 ; LINUX-32-PIC-NEXT:    retl
6699 ; LINUX-64-PIC-LABEL: har00:
6700 ; LINUX-64-PIC:       # %bb.0: # %entry
6701 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
6702 ; LINUX-64-PIC-NEXT:    retq
6704 ; DARWIN-32-STATIC-LABEL: har00:
6705 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6706 ; DARWIN-32-STATIC-NEXT:    movl $_src, %eax
6707 ; DARWIN-32-STATIC-NEXT:    retl
6709 ; DARWIN-32-DYNAMIC-LABEL: har00:
6710 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6711 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
6712 ; DARWIN-32-DYNAMIC-NEXT:    retl
6714 ; DARWIN-32-PIC-LABEL: har00:
6715 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6716 ; DARWIN-32-PIC-NEXT:    calll L77$pb
6717 ; DARWIN-32-PIC-NEXT:  L77$pb:
6718 ; DARWIN-32-PIC-NEXT:    popl %eax
6719 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L77$pb(%eax), %eax
6720 ; DARWIN-32-PIC-NEXT:    retl
6722 ; DARWIN-64-STATIC-LABEL: har00:
6723 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6724 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6725 ; DARWIN-64-STATIC-NEXT:    retq
6727 ; DARWIN-64-DYNAMIC-LABEL: har00:
6728 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6729 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6730 ; DARWIN-64-DYNAMIC-NEXT:    retq
6732 ; DARWIN-64-PIC-LABEL: har00:
6733 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6734 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
6735 ; DARWIN-64-PIC-NEXT:    retq
6737 entry:
6738         ret ptr @src
6741 define dso_local ptr @hxr00() nounwind {
6742 ; LINUX-64-STATIC-LABEL: hxr00:
6743 ; LINUX-64-STATIC:       # %bb.0: # %entry
6744 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
6745 ; LINUX-64-STATIC-NEXT:    retq
6747 ; LINUX-32-STATIC-LABEL: hxr00:
6748 ; LINUX-32-STATIC:       # %bb.0: # %entry
6749 ; LINUX-32-STATIC-NEXT:    movl $xsrc, %eax
6750 ; LINUX-32-STATIC-NEXT:    retl
6752 ; LINUX-32-PIC-LABEL: hxr00:
6753 ; LINUX-32-PIC:       # %bb.0: # %entry
6754 ; LINUX-32-PIC-NEXT:    calll .L78$pb
6755 ; LINUX-32-PIC-NEXT:  .L78$pb:
6756 ; LINUX-32-PIC-NEXT:    popl %eax
6757 ; LINUX-32-PIC-NEXT:  .Ltmp78:
6758 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax
6759 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %eax
6760 ; LINUX-32-PIC-NEXT:    retl
6762 ; LINUX-64-PIC-LABEL: hxr00:
6763 ; LINUX-64-PIC:       # %bb.0: # %entry
6764 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
6765 ; LINUX-64-PIC-NEXT:    retq
6767 ; DARWIN-32-STATIC-LABEL: hxr00:
6768 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6769 ; DARWIN-32-STATIC-NEXT:    movl $_xsrc, %eax
6770 ; DARWIN-32-STATIC-NEXT:    retl
6772 ; DARWIN-32-DYNAMIC-LABEL: hxr00:
6773 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6774 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
6775 ; DARWIN-32-DYNAMIC-NEXT:    retl
6777 ; DARWIN-32-PIC-LABEL: hxr00:
6778 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6779 ; DARWIN-32-PIC-NEXT:    calll L78$pb
6780 ; DARWIN-32-PIC-NEXT:  L78$pb:
6781 ; DARWIN-32-PIC-NEXT:    popl %eax
6782 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax
6783 ; DARWIN-32-PIC-NEXT:    retl
6785 ; DARWIN-64-STATIC-LABEL: hxr00:
6786 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6787 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6788 ; DARWIN-64-STATIC-NEXT:    retq
6790 ; DARWIN-64-DYNAMIC-LABEL: hxr00:
6791 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6792 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6793 ; DARWIN-64-DYNAMIC-NEXT:    retq
6795 ; DARWIN-64-PIC-LABEL: hxr00:
6796 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6797 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
6798 ; DARWIN-64-PIC-NEXT:    retq
6800 entry:
6801         ret ptr @xsrc
6804 define dso_local ptr @har01() nounwind {
6805 ; LINUX-64-STATIC-LABEL: har01:
6806 ; LINUX-64-STATIC:       # %bb.0: # %entry
6807 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
6808 ; LINUX-64-STATIC-NEXT:    retq
6810 ; LINUX-32-STATIC-LABEL: har01:
6811 ; LINUX-32-STATIC:       # %bb.0: # %entry
6812 ; LINUX-32-STATIC-NEXT:    movl $dst, %eax
6813 ; LINUX-32-STATIC-NEXT:    retl
6815 ; LINUX-32-PIC-LABEL: har01:
6816 ; LINUX-32-PIC:       # %bb.0: # %entry
6817 ; LINUX-32-PIC-NEXT:    calll .L79$pb
6818 ; LINUX-32-PIC-NEXT:  .L79$pb:
6819 ; LINUX-32-PIC-NEXT:    popl %eax
6820 ; LINUX-32-PIC-NEXT:  .Ltmp79:
6821 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax
6822 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
6823 ; LINUX-32-PIC-NEXT:    retl
6825 ; LINUX-64-PIC-LABEL: har01:
6826 ; LINUX-64-PIC:       # %bb.0: # %entry
6827 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
6828 ; LINUX-64-PIC-NEXT:    retq
6830 ; DARWIN-32-STATIC-LABEL: har01:
6831 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6832 ; DARWIN-32-STATIC-NEXT:    movl $_dst, %eax
6833 ; DARWIN-32-STATIC-NEXT:    retl
6835 ; DARWIN-32-DYNAMIC-LABEL: har01:
6836 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6837 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %eax
6838 ; DARWIN-32-DYNAMIC-NEXT:    retl
6840 ; DARWIN-32-PIC-LABEL: har01:
6841 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6842 ; DARWIN-32-PIC-NEXT:    calll L79$pb
6843 ; DARWIN-32-PIC-NEXT:  L79$pb:
6844 ; DARWIN-32-PIC-NEXT:    popl %eax
6845 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax
6846 ; DARWIN-32-PIC-NEXT:    retl
6848 ; DARWIN-64-STATIC-LABEL: har01:
6849 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6850 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6851 ; DARWIN-64-STATIC-NEXT:    retq
6853 ; DARWIN-64-DYNAMIC-LABEL: har01:
6854 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6855 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6856 ; DARWIN-64-DYNAMIC-NEXT:    retq
6858 ; DARWIN-64-PIC-LABEL: har01:
6859 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6860 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
6861 ; DARWIN-64-PIC-NEXT:    retq
6863 entry:
6864         ret ptr @dst
6867 define dso_local ptr @hxr01() nounwind {
6868 ; LINUX-64-STATIC-LABEL: hxr01:
6869 ; LINUX-64-STATIC:       # %bb.0: # %entry
6870 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
6871 ; LINUX-64-STATIC-NEXT:    retq
6873 ; LINUX-32-STATIC-LABEL: hxr01:
6874 ; LINUX-32-STATIC:       # %bb.0: # %entry
6875 ; LINUX-32-STATIC-NEXT:    movl $xdst, %eax
6876 ; LINUX-32-STATIC-NEXT:    retl
6878 ; LINUX-32-PIC-LABEL: hxr01:
6879 ; LINUX-32-PIC:       # %bb.0: # %entry
6880 ; LINUX-32-PIC-NEXT:    calll .L80$pb
6881 ; LINUX-32-PIC-NEXT:  .L80$pb:
6882 ; LINUX-32-PIC-NEXT:    popl %eax
6883 ; LINUX-32-PIC-NEXT:  .Ltmp80:
6884 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax
6885 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
6886 ; LINUX-32-PIC-NEXT:    retl
6888 ; LINUX-64-PIC-LABEL: hxr01:
6889 ; LINUX-64-PIC:       # %bb.0: # %entry
6890 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
6891 ; LINUX-64-PIC-NEXT:    retq
6893 ; DARWIN-32-STATIC-LABEL: hxr01:
6894 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6895 ; DARWIN-32-STATIC-NEXT:    movl $_xdst, %eax
6896 ; DARWIN-32-STATIC-NEXT:    retl
6898 ; DARWIN-32-DYNAMIC-LABEL: hxr01:
6899 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6900 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %eax
6901 ; DARWIN-32-DYNAMIC-NEXT:    retl
6903 ; DARWIN-32-PIC-LABEL: hxr01:
6904 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6905 ; DARWIN-32-PIC-NEXT:    calll L80$pb
6906 ; DARWIN-32-PIC-NEXT:  L80$pb:
6907 ; DARWIN-32-PIC-NEXT:    popl %eax
6908 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax
6909 ; DARWIN-32-PIC-NEXT:    retl
6911 ; DARWIN-64-STATIC-LABEL: hxr01:
6912 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6913 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6914 ; DARWIN-64-STATIC-NEXT:    retq
6916 ; DARWIN-64-DYNAMIC-LABEL: hxr01:
6917 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6918 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6919 ; DARWIN-64-DYNAMIC-NEXT:    retq
6921 ; DARWIN-64-PIC-LABEL: hxr01:
6922 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6923 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
6924 ; DARWIN-64-PIC-NEXT:    retq
6926 entry:
6927         ret ptr @xdst
6930 define dso_local ptr @har02() nounwind {
6931 ; LINUX-64-STATIC-LABEL: har02:
6932 ; LINUX-64-STATIC:       # %bb.0: # %entry
6933 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
6934 ; LINUX-64-STATIC-NEXT:    movq (%rax), %rax
6935 ; LINUX-64-STATIC-NEXT:    retq
6937 ; LINUX-32-STATIC-LABEL: har02:
6938 ; LINUX-32-STATIC:       # %bb.0: # %entry
6939 ; LINUX-32-STATIC-NEXT:    movl ptr, %eax
6940 ; LINUX-32-STATIC-NEXT:    retl
6942 ; LINUX-32-PIC-LABEL: har02:
6943 ; LINUX-32-PIC:       # %bb.0: # %entry
6944 ; LINUX-32-PIC-NEXT:    calll .L81$pb
6945 ; LINUX-32-PIC-NEXT:  .L81$pb:
6946 ; LINUX-32-PIC-NEXT:    popl %eax
6947 ; LINUX-32-PIC-NEXT:  .Ltmp81:
6948 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax
6949 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
6950 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
6951 ; LINUX-32-PIC-NEXT:    retl
6953 ; LINUX-64-PIC-LABEL: har02:
6954 ; LINUX-64-PIC:       # %bb.0: # %entry
6955 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
6956 ; LINUX-64-PIC-NEXT:    movq (%rax), %rax
6957 ; LINUX-64-PIC-NEXT:    retq
6959 ; DARWIN-32-STATIC-LABEL: har02:
6960 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
6961 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %eax
6962 ; DARWIN-32-STATIC-NEXT:    retl
6964 ; DARWIN-32-DYNAMIC-LABEL: har02:
6965 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
6966 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %eax
6967 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
6968 ; DARWIN-32-DYNAMIC-NEXT:    retl
6970 ; DARWIN-32-PIC-LABEL: har02:
6971 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
6972 ; DARWIN-32-PIC-NEXT:    calll L81$pb
6973 ; DARWIN-32-PIC-NEXT:  L81$pb:
6974 ; DARWIN-32-PIC-NEXT:    popl %eax
6975 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax
6976 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
6977 ; DARWIN-32-PIC-NEXT:    retl
6979 ; DARWIN-64-STATIC-LABEL: har02:
6980 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
6981 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6982 ; DARWIN-64-STATIC-NEXT:    movq (%rax), %rax
6983 ; DARWIN-64-STATIC-NEXT:    retq
6985 ; DARWIN-64-DYNAMIC-LABEL: har02:
6986 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
6987 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6988 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rax), %rax
6989 ; DARWIN-64-DYNAMIC-NEXT:    retq
6991 ; DARWIN-64-PIC-LABEL: har02:
6992 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
6993 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
6994 ; DARWIN-64-PIC-NEXT:    movq (%rax), %rax
6995 ; DARWIN-64-PIC-NEXT:    retq
6997 entry:
6998         %0 = load ptr, ptr @ptr, align 8
6999         ret ptr %0
7002 define dso_local ptr @har03() nounwind {
7003 ; LINUX-64-STATIC-LABEL: har03:
7004 ; LINUX-64-STATIC:       # %bb.0: # %entry
7005 ; LINUX-64-STATIC-NEXT:    movl $dsrc, %eax
7006 ; LINUX-64-STATIC-NEXT:    retq
7008 ; LINUX-32-STATIC-LABEL: har03:
7009 ; LINUX-32-STATIC:       # %bb.0: # %entry
7010 ; LINUX-32-STATIC-NEXT:    movl $dsrc, %eax
7011 ; LINUX-32-STATIC-NEXT:    retl
7013 ; LINUX-32-PIC-LABEL: har03:
7014 ; LINUX-32-PIC:       # %bb.0: # %entry
7015 ; LINUX-32-PIC-NEXT:    calll .L82$pb
7016 ; LINUX-32-PIC-NEXT:  .L82$pb:
7017 ; LINUX-32-PIC-NEXT:    popl %eax
7018 ; LINUX-32-PIC-NEXT:  .Ltmp82:
7019 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax
7020 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF(%eax), %eax
7021 ; LINUX-32-PIC-NEXT:    retl
7023 ; LINUX-64-PIC-LABEL: har03:
7024 ; LINUX-64-PIC:       # %bb.0: # %entry
7025 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
7026 ; LINUX-64-PIC-NEXT:    retq
7028 ; DARWIN-32-STATIC-LABEL: har03:
7029 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7030 ; DARWIN-32-STATIC-NEXT:    movl $_dsrc, %eax
7031 ; DARWIN-32-STATIC-NEXT:    retl
7033 ; DARWIN-32-DYNAMIC-LABEL: har03:
7034 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7035 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dsrc, %eax
7036 ; DARWIN-32-DYNAMIC-NEXT:    retl
7038 ; DARWIN-32-PIC-LABEL: har03:
7039 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7040 ; DARWIN-32-PIC-NEXT:    calll L82$pb
7041 ; DARWIN-32-PIC-NEXT:  L82$pb:
7042 ; DARWIN-32-PIC-NEXT:    popl %eax
7043 ; DARWIN-32-PIC-NEXT:    leal _dsrc-L82$pb(%eax), %eax
7044 ; DARWIN-32-PIC-NEXT:    retl
7046 ; DARWIN-64-STATIC-LABEL: har03:
7047 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7048 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
7049 ; DARWIN-64-STATIC-NEXT:    retq
7051 ; DARWIN-64-DYNAMIC-LABEL: har03:
7052 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7053 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
7054 ; DARWIN-64-DYNAMIC-NEXT:    retq
7056 ; DARWIN-64-PIC-LABEL: har03:
7057 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7058 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
7059 ; DARWIN-64-PIC-NEXT:    retq
7061 entry:
7062         ret ptr @dsrc
7065 define dso_local ptr @har04() nounwind {
7066 ; LINUX-64-STATIC-LABEL: har04:
7067 ; LINUX-64-STATIC:       # %bb.0: # %entry
7068 ; LINUX-64-STATIC-NEXT:    movl $ddst, %eax
7069 ; LINUX-64-STATIC-NEXT:    retq
7071 ; LINUX-32-STATIC-LABEL: har04:
7072 ; LINUX-32-STATIC:       # %bb.0: # %entry
7073 ; LINUX-32-STATIC-NEXT:    movl $ddst, %eax
7074 ; LINUX-32-STATIC-NEXT:    retl
7076 ; LINUX-32-PIC-LABEL: har04:
7077 ; LINUX-32-PIC:       # %bb.0: # %entry
7078 ; LINUX-32-PIC-NEXT:    calll .L83$pb
7079 ; LINUX-32-PIC-NEXT:  .L83$pb:
7080 ; LINUX-32-PIC-NEXT:    popl %eax
7081 ; LINUX-32-PIC-NEXT:  .Ltmp83:
7082 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax
7083 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF(%eax), %eax
7084 ; LINUX-32-PIC-NEXT:    retl
7086 ; LINUX-64-PIC-LABEL: har04:
7087 ; LINUX-64-PIC:       # %bb.0: # %entry
7088 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
7089 ; LINUX-64-PIC-NEXT:    retq
7091 ; DARWIN-32-STATIC-LABEL: har04:
7092 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7093 ; DARWIN-32-STATIC-NEXT:    movl $_ddst, %eax
7094 ; DARWIN-32-STATIC-NEXT:    retl
7096 ; DARWIN-32-DYNAMIC-LABEL: har04:
7097 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7098 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst, %eax
7099 ; DARWIN-32-DYNAMIC-NEXT:    retl
7101 ; DARWIN-32-PIC-LABEL: har04:
7102 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7103 ; DARWIN-32-PIC-NEXT:    calll L83$pb
7104 ; DARWIN-32-PIC-NEXT:  L83$pb:
7105 ; DARWIN-32-PIC-NEXT:    popl %eax
7106 ; DARWIN-32-PIC-NEXT:    leal _ddst-L83$pb(%eax), %eax
7107 ; DARWIN-32-PIC-NEXT:    retl
7109 ; DARWIN-64-STATIC-LABEL: har04:
7110 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7111 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
7112 ; DARWIN-64-STATIC-NEXT:    retq
7114 ; DARWIN-64-DYNAMIC-LABEL: har04:
7115 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7116 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
7117 ; DARWIN-64-DYNAMIC-NEXT:    retq
7119 ; DARWIN-64-PIC-LABEL: har04:
7120 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7121 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
7122 ; DARWIN-64-PIC-NEXT:    retq
7124 entry:
7125         ret ptr @ddst
7128 define dso_local ptr @har05() nounwind {
7129 ; LINUX-64-STATIC-LABEL: har05:
7130 ; LINUX-64-STATIC:       # %bb.0: # %entry
7131 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rax
7132 ; LINUX-64-STATIC-NEXT:    retq
7134 ; LINUX-32-STATIC-LABEL: har05:
7135 ; LINUX-32-STATIC:       # %bb.0: # %entry
7136 ; LINUX-32-STATIC-NEXT:    movl dptr, %eax
7137 ; LINUX-32-STATIC-NEXT:    retl
7139 ; LINUX-32-PIC-LABEL: har05:
7140 ; LINUX-32-PIC:       # %bb.0: # %entry
7141 ; LINUX-32-PIC-NEXT:    calll .L84$pb
7142 ; LINUX-32-PIC-NEXT:  .L84$pb:
7143 ; LINUX-32-PIC-NEXT:    popl %eax
7144 ; LINUX-32-PIC-NEXT:  .Ltmp84:
7145 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax
7146 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
7147 ; LINUX-32-PIC-NEXT:    retl
7149 ; LINUX-64-PIC-LABEL: har05:
7150 ; LINUX-64-PIC:       # %bb.0: # %entry
7151 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rax
7152 ; LINUX-64-PIC-NEXT:    retq
7154 ; DARWIN-32-STATIC-LABEL: har05:
7155 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7156 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %eax
7157 ; DARWIN-32-STATIC-NEXT:    retl
7159 ; DARWIN-32-DYNAMIC-LABEL: har05:
7160 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7161 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %eax
7162 ; DARWIN-32-DYNAMIC-NEXT:    retl
7164 ; DARWIN-32-PIC-LABEL: har05:
7165 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7166 ; DARWIN-32-PIC-NEXT:    calll L84$pb
7167 ; DARWIN-32-PIC-NEXT:  L84$pb:
7168 ; DARWIN-32-PIC-NEXT:    popl %eax
7169 ; DARWIN-32-PIC-NEXT:    movl _dptr-L84$pb(%eax), %eax
7170 ; DARWIN-32-PIC-NEXT:    retl
7172 ; DARWIN-64-STATIC-LABEL: har05:
7173 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7174 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rax
7175 ; DARWIN-64-STATIC-NEXT:    retq
7177 ; DARWIN-64-DYNAMIC-LABEL: har05:
7178 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7179 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rax
7180 ; DARWIN-64-DYNAMIC-NEXT:    retq
7182 ; DARWIN-64-PIC-LABEL: har05:
7183 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7184 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rax
7185 ; DARWIN-64-PIC-NEXT:    retq
7187 entry:
7188         %0 = load ptr, ptr @dptr, align 8
7189         ret ptr %0
7192 define dso_local ptr @har06() nounwind {
7193 ; LINUX-64-STATIC-LABEL: har06:
7194 ; LINUX-64-STATIC:       # %bb.0: # %entry
7195 ; LINUX-64-STATIC-NEXT:    movl $lsrc, %eax
7196 ; LINUX-64-STATIC-NEXT:    retq
7198 ; LINUX-32-STATIC-LABEL: har06:
7199 ; LINUX-32-STATIC:       # %bb.0: # %entry
7200 ; LINUX-32-STATIC-NEXT:    movl $lsrc, %eax
7201 ; LINUX-32-STATIC-NEXT:    retl
7203 ; LINUX-32-PIC-LABEL: har06:
7204 ; LINUX-32-PIC:       # %bb.0: # %entry
7205 ; LINUX-32-PIC-NEXT:    calll .L85$pb
7206 ; LINUX-32-PIC-NEXT:  .L85$pb:
7207 ; LINUX-32-PIC-NEXT:    popl %eax
7208 ; LINUX-32-PIC-NEXT:  .Ltmp85:
7209 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax
7210 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF(%eax), %eax
7211 ; LINUX-32-PIC-NEXT:    retl
7213 ; LINUX-64-PIC-LABEL: har06:
7214 ; LINUX-64-PIC:       # %bb.0: # %entry
7215 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
7216 ; LINUX-64-PIC-NEXT:    retq
7218 ; DARWIN-32-STATIC-LABEL: har06:
7219 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7220 ; DARWIN-32-STATIC-NEXT:    movl $_lsrc, %eax
7221 ; DARWIN-32-STATIC-NEXT:    retl
7223 ; DARWIN-32-DYNAMIC-LABEL: har06:
7224 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7225 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lsrc, %eax
7226 ; DARWIN-32-DYNAMIC-NEXT:    retl
7228 ; DARWIN-32-PIC-LABEL: har06:
7229 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7230 ; DARWIN-32-PIC-NEXT:    calll L85$pb
7231 ; DARWIN-32-PIC-NEXT:  L85$pb:
7232 ; DARWIN-32-PIC-NEXT:    popl %eax
7233 ; DARWIN-32-PIC-NEXT:    leal _lsrc-L85$pb(%eax), %eax
7234 ; DARWIN-32-PIC-NEXT:    retl
7236 ; DARWIN-64-STATIC-LABEL: har06:
7237 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7238 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
7239 ; DARWIN-64-STATIC-NEXT:    retq
7241 ; DARWIN-64-DYNAMIC-LABEL: har06:
7242 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7243 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
7244 ; DARWIN-64-DYNAMIC-NEXT:    retq
7246 ; DARWIN-64-PIC-LABEL: har06:
7247 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7248 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
7249 ; DARWIN-64-PIC-NEXT:    retq
7251 entry:
7252         ret ptr @lsrc
7255 define dso_local ptr @har07() nounwind {
7256 ; LINUX-64-STATIC-LABEL: har07:
7257 ; LINUX-64-STATIC:       # %bb.0: # %entry
7258 ; LINUX-64-STATIC-NEXT:    movl $ldst, %eax
7259 ; LINUX-64-STATIC-NEXT:    retq
7261 ; LINUX-32-STATIC-LABEL: har07:
7262 ; LINUX-32-STATIC:       # %bb.0: # %entry
7263 ; LINUX-32-STATIC-NEXT:    movl $ldst, %eax
7264 ; LINUX-32-STATIC-NEXT:    retl
7266 ; LINUX-32-PIC-LABEL: har07:
7267 ; LINUX-32-PIC:       # %bb.0: # %entry
7268 ; LINUX-32-PIC-NEXT:    calll .L86$pb
7269 ; LINUX-32-PIC-NEXT:  .L86$pb:
7270 ; LINUX-32-PIC-NEXT:    popl %eax
7271 ; LINUX-32-PIC-NEXT:  .Ltmp86:
7272 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax
7273 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF(%eax), %eax
7274 ; LINUX-32-PIC-NEXT:    retl
7276 ; LINUX-64-PIC-LABEL: har07:
7277 ; LINUX-64-PIC:       # %bb.0: # %entry
7278 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
7279 ; LINUX-64-PIC-NEXT:    retq
7281 ; DARWIN-32-STATIC-LABEL: har07:
7282 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7283 ; DARWIN-32-STATIC-NEXT:    movl $_ldst, %eax
7284 ; DARWIN-32-STATIC-NEXT:    retl
7286 ; DARWIN-32-DYNAMIC-LABEL: har07:
7287 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7288 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst, %eax
7289 ; DARWIN-32-DYNAMIC-NEXT:    retl
7291 ; DARWIN-32-PIC-LABEL: har07:
7292 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7293 ; DARWIN-32-PIC-NEXT:    calll L86$pb
7294 ; DARWIN-32-PIC-NEXT:  L86$pb:
7295 ; DARWIN-32-PIC-NEXT:    popl %eax
7296 ; DARWIN-32-PIC-NEXT:    leal _ldst-L86$pb(%eax), %eax
7297 ; DARWIN-32-PIC-NEXT:    retl
7299 ; DARWIN-64-STATIC-LABEL: har07:
7300 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7301 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
7302 ; DARWIN-64-STATIC-NEXT:    retq
7304 ; DARWIN-64-DYNAMIC-LABEL: har07:
7305 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7306 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
7307 ; DARWIN-64-DYNAMIC-NEXT:    retq
7309 ; DARWIN-64-PIC-LABEL: har07:
7310 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7311 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
7312 ; DARWIN-64-PIC-NEXT:    retq
7314 entry:
7315         ret ptr @ldst
7318 define dso_local ptr @har08() nounwind {
7319 ; LINUX-64-STATIC-LABEL: har08:
7320 ; LINUX-64-STATIC:       # %bb.0: # %entry
7321 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rax
7322 ; LINUX-64-STATIC-NEXT:    retq
7324 ; LINUX-32-STATIC-LABEL: har08:
7325 ; LINUX-32-STATIC:       # %bb.0: # %entry
7326 ; LINUX-32-STATIC-NEXT:    movl lptr, %eax
7327 ; LINUX-32-STATIC-NEXT:    retl
7329 ; LINUX-32-PIC-LABEL: har08:
7330 ; LINUX-32-PIC:       # %bb.0: # %entry
7331 ; LINUX-32-PIC-NEXT:    calll .L87$pb
7332 ; LINUX-32-PIC-NEXT:  .L87$pb:
7333 ; LINUX-32-PIC-NEXT:    popl %eax
7334 ; LINUX-32-PIC-NEXT:  .Ltmp87:
7335 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax
7336 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
7337 ; LINUX-32-PIC-NEXT:    retl
7339 ; LINUX-64-PIC-LABEL: har08:
7340 ; LINUX-64-PIC:       # %bb.0: # %entry
7341 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rax
7342 ; LINUX-64-PIC-NEXT:    retq
7344 ; DARWIN-32-STATIC-LABEL: har08:
7345 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7346 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %eax
7347 ; DARWIN-32-STATIC-NEXT:    retl
7349 ; DARWIN-32-DYNAMIC-LABEL: har08:
7350 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7351 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %eax
7352 ; DARWIN-32-DYNAMIC-NEXT:    retl
7354 ; DARWIN-32-PIC-LABEL: har08:
7355 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7356 ; DARWIN-32-PIC-NEXT:    calll L87$pb
7357 ; DARWIN-32-PIC-NEXT:  L87$pb:
7358 ; DARWIN-32-PIC-NEXT:    popl %eax
7359 ; DARWIN-32-PIC-NEXT:    movl _lptr-L87$pb(%eax), %eax
7360 ; DARWIN-32-PIC-NEXT:    retl
7362 ; DARWIN-64-STATIC-LABEL: har08:
7363 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7364 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rax
7365 ; DARWIN-64-STATIC-NEXT:    retq
7367 ; DARWIN-64-DYNAMIC-LABEL: har08:
7368 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7369 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rax
7370 ; DARWIN-64-DYNAMIC-NEXT:    retq
7372 ; DARWIN-64-PIC-LABEL: har08:
7373 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7374 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rax
7375 ; DARWIN-64-PIC-NEXT:    retq
7377 entry:
7378         %0 = load ptr, ptr @lptr, align 8
7379         ret ptr %0
7382 define dso_local ptr @bat00() nounwind {
7383 ; LINUX-64-STATIC-LABEL: bat00:
7384 ; LINUX-64-STATIC:       # %bb.0: # %entry
7385 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
7386 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7387 ; LINUX-64-STATIC-NEXT:    retq
7389 ; LINUX-32-STATIC-LABEL: bat00:
7390 ; LINUX-32-STATIC:       # %bb.0: # %entry
7391 ; LINUX-32-STATIC-NEXT:    leal src+64, %eax
7392 ; LINUX-32-STATIC-NEXT:    retl
7394 ; LINUX-32-PIC-LABEL: bat00:
7395 ; LINUX-32-PIC:       # %bb.0: # %entry
7396 ; LINUX-32-PIC-NEXT:    calll .L88$pb
7397 ; LINUX-32-PIC-NEXT:  .L88$pb:
7398 ; LINUX-32-PIC-NEXT:    popl %eax
7399 ; LINUX-32-PIC-NEXT:  .Ltmp88:
7400 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax
7401 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %eax
7402 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7403 ; LINUX-32-PIC-NEXT:    retl
7405 ; LINUX-64-PIC-LABEL: bat00:
7406 ; LINUX-64-PIC:       # %bb.0: # %entry
7407 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
7408 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7409 ; LINUX-64-PIC-NEXT:    retq
7411 ; DARWIN-32-STATIC-LABEL: bat00:
7412 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7413 ; DARWIN-32-STATIC-NEXT:    movl $_src+64, %eax
7414 ; DARWIN-32-STATIC-NEXT:    retl
7416 ; DARWIN-32-DYNAMIC-LABEL: bat00:
7417 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7418 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %eax
7419 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7420 ; DARWIN-32-DYNAMIC-NEXT:    retl
7422 ; DARWIN-32-PIC-LABEL: bat00:
7423 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7424 ; DARWIN-32-PIC-NEXT:    calll L88$pb
7425 ; DARWIN-32-PIC-NEXT:  L88$pb:
7426 ; DARWIN-32-PIC-NEXT:    popl %eax
7427 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L88$pb(%eax), %eax
7428 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7429 ; DARWIN-32-PIC-NEXT:    retl
7431 ; DARWIN-64-STATIC-LABEL: bat00:
7432 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7433 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
7434 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7435 ; DARWIN-64-STATIC-NEXT:    retq
7437 ; DARWIN-64-DYNAMIC-LABEL: bat00:
7438 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7439 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
7440 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7441 ; DARWIN-64-DYNAMIC-NEXT:    retq
7443 ; DARWIN-64-PIC-LABEL: bat00:
7444 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7445 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
7446 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7447 ; DARWIN-64-PIC-NEXT:    retq
7449 entry:
7450         ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16)
7453 define dso_local ptr @bxt00() nounwind {
7454 ; LINUX-64-STATIC-LABEL: bxt00:
7455 ; LINUX-64-STATIC:       # %bb.0: # %entry
7456 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
7457 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7458 ; LINUX-64-STATIC-NEXT:    retq
7460 ; LINUX-32-STATIC-LABEL: bxt00:
7461 ; LINUX-32-STATIC:       # %bb.0: # %entry
7462 ; LINUX-32-STATIC-NEXT:    leal xsrc+64, %eax
7463 ; LINUX-32-STATIC-NEXT:    retl
7465 ; LINUX-32-PIC-LABEL: bxt00:
7466 ; LINUX-32-PIC:       # %bb.0: # %entry
7467 ; LINUX-32-PIC-NEXT:    calll .L89$pb
7468 ; LINUX-32-PIC-NEXT:  .L89$pb:
7469 ; LINUX-32-PIC-NEXT:    popl %eax
7470 ; LINUX-32-PIC-NEXT:  .Ltmp89:
7471 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax
7472 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %eax
7473 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7474 ; LINUX-32-PIC-NEXT:    retl
7476 ; LINUX-64-PIC-LABEL: bxt00:
7477 ; LINUX-64-PIC:       # %bb.0: # %entry
7478 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
7479 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7480 ; LINUX-64-PIC-NEXT:    retq
7482 ; DARWIN-32-STATIC-LABEL: bxt00:
7483 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7484 ; DARWIN-32-STATIC-NEXT:    movl $_xsrc+64, %eax
7485 ; DARWIN-32-STATIC-NEXT:    retl
7487 ; DARWIN-32-DYNAMIC-LABEL: bxt00:
7488 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7489 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %eax
7490 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7491 ; DARWIN-32-DYNAMIC-NEXT:    retl
7493 ; DARWIN-32-PIC-LABEL: bxt00:
7494 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7495 ; DARWIN-32-PIC-NEXT:    calll L89$pb
7496 ; DARWIN-32-PIC-NEXT:  L89$pb:
7497 ; DARWIN-32-PIC-NEXT:    popl %eax
7498 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax
7499 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7500 ; DARWIN-32-PIC-NEXT:    retl
7502 ; DARWIN-64-STATIC-LABEL: bxt00:
7503 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7504 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
7505 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7506 ; DARWIN-64-STATIC-NEXT:    retq
7508 ; DARWIN-64-DYNAMIC-LABEL: bxt00:
7509 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7510 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
7511 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7512 ; DARWIN-64-DYNAMIC-NEXT:    retq
7514 ; DARWIN-64-PIC-LABEL: bxt00:
7515 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7516 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
7517 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7518 ; DARWIN-64-PIC-NEXT:    retq
7520 entry:
7521         ret ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16)
7524 define dso_local ptr @bat01() nounwind {
7525 ; LINUX-64-STATIC-LABEL: bat01:
7526 ; LINUX-64-STATIC:       # %bb.0: # %entry
7527 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
7528 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7529 ; LINUX-64-STATIC-NEXT:    retq
7531 ; LINUX-32-STATIC-LABEL: bat01:
7532 ; LINUX-32-STATIC:       # %bb.0: # %entry
7533 ; LINUX-32-STATIC-NEXT:    leal dst+64, %eax
7534 ; LINUX-32-STATIC-NEXT:    retl
7536 ; LINUX-32-PIC-LABEL: bat01:
7537 ; LINUX-32-PIC:       # %bb.0: # %entry
7538 ; LINUX-32-PIC-NEXT:    calll .L90$pb
7539 ; LINUX-32-PIC-NEXT:  .L90$pb:
7540 ; LINUX-32-PIC-NEXT:    popl %eax
7541 ; LINUX-32-PIC-NEXT:  .Ltmp90:
7542 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax
7543 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
7544 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7545 ; LINUX-32-PIC-NEXT:    retl
7547 ; LINUX-64-PIC-LABEL: bat01:
7548 ; LINUX-64-PIC:       # %bb.0: # %entry
7549 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
7550 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7551 ; LINUX-64-PIC-NEXT:    retq
7553 ; DARWIN-32-STATIC-LABEL: bat01:
7554 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7555 ; DARWIN-32-STATIC-NEXT:    movl $_dst+64, %eax
7556 ; DARWIN-32-STATIC-NEXT:    retl
7558 ; DARWIN-32-DYNAMIC-LABEL: bat01:
7559 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7560 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %eax
7561 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7562 ; DARWIN-32-DYNAMIC-NEXT:    retl
7564 ; DARWIN-32-PIC-LABEL: bat01:
7565 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7566 ; DARWIN-32-PIC-NEXT:    calll L90$pb
7567 ; DARWIN-32-PIC-NEXT:  L90$pb:
7568 ; DARWIN-32-PIC-NEXT:    popl %eax
7569 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax
7570 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7571 ; DARWIN-32-PIC-NEXT:    retl
7573 ; DARWIN-64-STATIC-LABEL: bat01:
7574 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7575 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
7576 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7577 ; DARWIN-64-STATIC-NEXT:    retq
7579 ; DARWIN-64-DYNAMIC-LABEL: bat01:
7580 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7581 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
7582 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7583 ; DARWIN-64-DYNAMIC-NEXT:    retq
7585 ; DARWIN-64-PIC-LABEL: bat01:
7586 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7587 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
7588 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7589 ; DARWIN-64-PIC-NEXT:    retq
7591 entry:
7592         ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16)
7595 define dso_local ptr @bxt01() nounwind {
7596 ; LINUX-64-STATIC-LABEL: bxt01:
7597 ; LINUX-64-STATIC:       # %bb.0: # %entry
7598 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
7599 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7600 ; LINUX-64-STATIC-NEXT:    retq
7602 ; LINUX-32-STATIC-LABEL: bxt01:
7603 ; LINUX-32-STATIC:       # %bb.0: # %entry
7604 ; LINUX-32-STATIC-NEXT:    leal xdst+64, %eax
7605 ; LINUX-32-STATIC-NEXT:    retl
7607 ; LINUX-32-PIC-LABEL: bxt01:
7608 ; LINUX-32-PIC:       # %bb.0: # %entry
7609 ; LINUX-32-PIC-NEXT:    calll .L91$pb
7610 ; LINUX-32-PIC-NEXT:  .L91$pb:
7611 ; LINUX-32-PIC-NEXT:    popl %eax
7612 ; LINUX-32-PIC-NEXT:  .Ltmp91:
7613 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax
7614 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
7615 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7616 ; LINUX-32-PIC-NEXT:    retl
7618 ; LINUX-64-PIC-LABEL: bxt01:
7619 ; LINUX-64-PIC:       # %bb.0: # %entry
7620 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
7621 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7622 ; LINUX-64-PIC-NEXT:    retq
7624 ; DARWIN-32-STATIC-LABEL: bxt01:
7625 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7626 ; DARWIN-32-STATIC-NEXT:    movl $_xdst+64, %eax
7627 ; DARWIN-32-STATIC-NEXT:    retl
7629 ; DARWIN-32-DYNAMIC-LABEL: bxt01:
7630 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7631 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %eax
7632 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7633 ; DARWIN-32-DYNAMIC-NEXT:    retl
7635 ; DARWIN-32-PIC-LABEL: bxt01:
7636 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7637 ; DARWIN-32-PIC-NEXT:    calll L91$pb
7638 ; DARWIN-32-PIC-NEXT:  L91$pb:
7639 ; DARWIN-32-PIC-NEXT:    popl %eax
7640 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax
7641 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7642 ; DARWIN-32-PIC-NEXT:    retl
7644 ; DARWIN-64-STATIC-LABEL: bxt01:
7645 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7646 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
7647 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7648 ; DARWIN-64-STATIC-NEXT:    retq
7650 ; DARWIN-64-DYNAMIC-LABEL: bxt01:
7651 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7652 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
7653 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7654 ; DARWIN-64-DYNAMIC-NEXT:    retq
7656 ; DARWIN-64-PIC-LABEL: bxt01:
7657 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7658 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
7659 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7660 ; DARWIN-64-PIC-NEXT:    retq
7662 entry:
7663         ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16)
7666 define dso_local ptr @bat02() nounwind {
7667 ; LINUX-64-STATIC-LABEL: bat02:
7668 ; LINUX-64-STATIC:       # %bb.0: # %entry
7669 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
7670 ; LINUX-64-STATIC-NEXT:    movq (%rax), %rax
7671 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7672 ; LINUX-64-STATIC-NEXT:    retq
7674 ; LINUX-32-STATIC-LABEL: bat02:
7675 ; LINUX-32-STATIC:       # %bb.0: # %entry
7676 ; LINUX-32-STATIC-NEXT:    movl ptr, %eax
7677 ; LINUX-32-STATIC-NEXT:    addl $64, %eax
7678 ; LINUX-32-STATIC-NEXT:    retl
7680 ; LINUX-32-PIC-LABEL: bat02:
7681 ; LINUX-32-PIC:       # %bb.0: # %entry
7682 ; LINUX-32-PIC-NEXT:    calll .L92$pb
7683 ; LINUX-32-PIC-NEXT:  .L92$pb:
7684 ; LINUX-32-PIC-NEXT:    popl %eax
7685 ; LINUX-32-PIC-NEXT:  .Ltmp92:
7686 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax
7687 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
7688 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
7689 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7690 ; LINUX-32-PIC-NEXT:    retl
7692 ; LINUX-64-PIC-LABEL: bat02:
7693 ; LINUX-64-PIC:       # %bb.0: # %entry
7694 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
7695 ; LINUX-64-PIC-NEXT:    movq (%rax), %rax
7696 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7697 ; LINUX-64-PIC-NEXT:    retq
7699 ; DARWIN-32-STATIC-LABEL: bat02:
7700 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7701 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %eax
7702 ; DARWIN-32-STATIC-NEXT:    addl $64, %eax
7703 ; DARWIN-32-STATIC-NEXT:    retl
7705 ; DARWIN-32-DYNAMIC-LABEL: bat02:
7706 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7707 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %eax
7708 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
7709 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7710 ; DARWIN-32-DYNAMIC-NEXT:    retl
7712 ; DARWIN-32-PIC-LABEL: bat02:
7713 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7714 ; DARWIN-32-PIC-NEXT:    calll L92$pb
7715 ; DARWIN-32-PIC-NEXT:  L92$pb:
7716 ; DARWIN-32-PIC-NEXT:    popl %eax
7717 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax
7718 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
7719 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7720 ; DARWIN-32-PIC-NEXT:    retl
7722 ; DARWIN-64-STATIC-LABEL: bat02:
7723 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7724 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
7725 ; DARWIN-64-STATIC-NEXT:    movq (%rax), %rax
7726 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7727 ; DARWIN-64-STATIC-NEXT:    retq
7729 ; DARWIN-64-DYNAMIC-LABEL: bat02:
7730 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7731 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
7732 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rax), %rax
7733 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7734 ; DARWIN-64-DYNAMIC-NEXT:    retq
7736 ; DARWIN-64-PIC-LABEL: bat02:
7737 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7738 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
7739 ; DARWIN-64-PIC-NEXT:    movq (%rax), %rax
7740 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7741 ; DARWIN-64-PIC-NEXT:    retq
7743 entry:
7744         %0 = load ptr, ptr @ptr, align 8
7745         %1 = getelementptr i32, ptr %0, i64 16
7746         ret ptr %1
7749 define dso_local ptr @bat03() nounwind {
7750 ; LINUX-64-STATIC-LABEL: bat03:
7751 ; LINUX-64-STATIC:       # %bb.0: # %entry
7752 ; LINUX-64-STATIC-NEXT:    movl $dsrc+64, %eax
7753 ; LINUX-64-STATIC-NEXT:    retq
7755 ; LINUX-32-STATIC-LABEL: bat03:
7756 ; LINUX-32-STATIC:       # %bb.0: # %entry
7757 ; LINUX-32-STATIC-NEXT:    movl $dsrc+64, %eax
7758 ; LINUX-32-STATIC-NEXT:    retl
7760 ; LINUX-32-PIC-LABEL: bat03:
7761 ; LINUX-32-PIC:       # %bb.0: # %entry
7762 ; LINUX-32-PIC-NEXT:    calll .L93$pb
7763 ; LINUX-32-PIC-NEXT:  .L93$pb:
7764 ; LINUX-32-PIC-NEXT:    popl %eax
7765 ; LINUX-32-PIC-NEXT:  .Ltmp93:
7766 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax
7767 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF+64(%eax), %eax
7768 ; LINUX-32-PIC-NEXT:    retl
7770 ; LINUX-64-PIC-LABEL: bat03:
7771 ; LINUX-64-PIC:       # %bb.0: # %entry
7772 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local+64(%rip), %rax
7773 ; LINUX-64-PIC-NEXT:    retq
7775 ; DARWIN-32-STATIC-LABEL: bat03:
7776 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7777 ; DARWIN-32-STATIC-NEXT:    movl $_dsrc+64, %eax
7778 ; DARWIN-32-STATIC-NEXT:    retl
7780 ; DARWIN-32-DYNAMIC-LABEL: bat03:
7781 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7782 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dsrc+64, %eax
7783 ; DARWIN-32-DYNAMIC-NEXT:    retl
7785 ; DARWIN-32-PIC-LABEL: bat03:
7786 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7787 ; DARWIN-32-PIC-NEXT:    calll L93$pb
7788 ; DARWIN-32-PIC-NEXT:  L93$pb:
7789 ; DARWIN-32-PIC-NEXT:    popl %eax
7790 ; DARWIN-32-PIC-NEXT:    leal (_dsrc-L93$pb)+64(%eax), %eax
7791 ; DARWIN-32-PIC-NEXT:    retl
7793 ; DARWIN-64-STATIC-LABEL: bat03:
7794 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7795 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc+64(%rip), %rax
7796 ; DARWIN-64-STATIC-NEXT:    retq
7798 ; DARWIN-64-DYNAMIC-LABEL: bat03:
7799 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7800 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc+64(%rip), %rax
7801 ; DARWIN-64-DYNAMIC-NEXT:    retq
7803 ; DARWIN-64-PIC-LABEL: bat03:
7804 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7805 ; DARWIN-64-PIC-NEXT:    leaq _dsrc+64(%rip), %rax
7806 ; DARWIN-64-PIC-NEXT:    retq
7808 entry:
7809         ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16)
7812 define dso_local ptr @bat04() nounwind {
7813 ; LINUX-64-STATIC-LABEL: bat04:
7814 ; LINUX-64-STATIC:       # %bb.0: # %entry
7815 ; LINUX-64-STATIC-NEXT:    movl $ddst+64, %eax
7816 ; LINUX-64-STATIC-NEXT:    retq
7818 ; LINUX-32-STATIC-LABEL: bat04:
7819 ; LINUX-32-STATIC:       # %bb.0: # %entry
7820 ; LINUX-32-STATIC-NEXT:    movl $ddst+64, %eax
7821 ; LINUX-32-STATIC-NEXT:    retl
7823 ; LINUX-32-PIC-LABEL: bat04:
7824 ; LINUX-32-PIC:       # %bb.0: # %entry
7825 ; LINUX-32-PIC-NEXT:    calll .L94$pb
7826 ; LINUX-32-PIC-NEXT:  .L94$pb:
7827 ; LINUX-32-PIC-NEXT:    popl %eax
7828 ; LINUX-32-PIC-NEXT:  .Ltmp94:
7829 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax
7830 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+64(%eax), %eax
7831 ; LINUX-32-PIC-NEXT:    retl
7833 ; LINUX-64-PIC-LABEL: bat04:
7834 ; LINUX-64-PIC:       # %bb.0: # %entry
7835 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local+64(%rip), %rax
7836 ; LINUX-64-PIC-NEXT:    retq
7838 ; DARWIN-32-STATIC-LABEL: bat04:
7839 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7840 ; DARWIN-32-STATIC-NEXT:    movl $_ddst+64, %eax
7841 ; DARWIN-32-STATIC-NEXT:    retl
7843 ; DARWIN-32-DYNAMIC-LABEL: bat04:
7844 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7845 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst+64, %eax
7846 ; DARWIN-32-DYNAMIC-NEXT:    retl
7848 ; DARWIN-32-PIC-LABEL: bat04:
7849 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7850 ; DARWIN-32-PIC-NEXT:    calll L94$pb
7851 ; DARWIN-32-PIC-NEXT:  L94$pb:
7852 ; DARWIN-32-PIC-NEXT:    popl %eax
7853 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L94$pb)+64(%eax), %eax
7854 ; DARWIN-32-PIC-NEXT:    retl
7856 ; DARWIN-64-STATIC-LABEL: bat04:
7857 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7858 ; DARWIN-64-STATIC-NEXT:    leaq _ddst+64(%rip), %rax
7859 ; DARWIN-64-STATIC-NEXT:    retq
7861 ; DARWIN-64-DYNAMIC-LABEL: bat04:
7862 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7863 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst+64(%rip), %rax
7864 ; DARWIN-64-DYNAMIC-NEXT:    retq
7866 ; DARWIN-64-PIC-LABEL: bat04:
7867 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7868 ; DARWIN-64-PIC-NEXT:    leaq _ddst+64(%rip), %rax
7869 ; DARWIN-64-PIC-NEXT:    retq
7871 entry:
7872         ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16)
7875 define dso_local ptr @bat05() nounwind {
7876 ; LINUX-64-STATIC-LABEL: bat05:
7877 ; LINUX-64-STATIC:       # %bb.0: # %entry
7878 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rax
7879 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
7880 ; LINUX-64-STATIC-NEXT:    retq
7882 ; LINUX-32-STATIC-LABEL: bat05:
7883 ; LINUX-32-STATIC:       # %bb.0: # %entry
7884 ; LINUX-32-STATIC-NEXT:    movl dptr, %eax
7885 ; LINUX-32-STATIC-NEXT:    addl $64, %eax
7886 ; LINUX-32-STATIC-NEXT:    retl
7888 ; LINUX-32-PIC-LABEL: bat05:
7889 ; LINUX-32-PIC:       # %bb.0: # %entry
7890 ; LINUX-32-PIC-NEXT:    calll .L95$pb
7891 ; LINUX-32-PIC-NEXT:  .L95$pb:
7892 ; LINUX-32-PIC-NEXT:    popl %eax
7893 ; LINUX-32-PIC-NEXT:  .Ltmp95:
7894 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax
7895 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
7896 ; LINUX-32-PIC-NEXT:    addl $64, %eax
7897 ; LINUX-32-PIC-NEXT:    retl
7899 ; LINUX-64-PIC-LABEL: bat05:
7900 ; LINUX-64-PIC:       # %bb.0: # %entry
7901 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rax
7902 ; LINUX-64-PIC-NEXT:    addq $64, %rax
7903 ; LINUX-64-PIC-NEXT:    retq
7905 ; DARWIN-32-STATIC-LABEL: bat05:
7906 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7907 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %eax
7908 ; DARWIN-32-STATIC-NEXT:    addl $64, %eax
7909 ; DARWIN-32-STATIC-NEXT:    retl
7911 ; DARWIN-32-DYNAMIC-LABEL: bat05:
7912 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7913 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %eax
7914 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
7915 ; DARWIN-32-DYNAMIC-NEXT:    retl
7917 ; DARWIN-32-PIC-LABEL: bat05:
7918 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7919 ; DARWIN-32-PIC-NEXT:    calll L95$pb
7920 ; DARWIN-32-PIC-NEXT:  L95$pb:
7921 ; DARWIN-32-PIC-NEXT:    popl %eax
7922 ; DARWIN-32-PIC-NEXT:    movl _dptr-L95$pb(%eax), %eax
7923 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
7924 ; DARWIN-32-PIC-NEXT:    retl
7926 ; DARWIN-64-STATIC-LABEL: bat05:
7927 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7928 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rax
7929 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
7930 ; DARWIN-64-STATIC-NEXT:    retq
7932 ; DARWIN-64-DYNAMIC-LABEL: bat05:
7933 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
7934 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rax
7935 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
7936 ; DARWIN-64-DYNAMIC-NEXT:    retq
7938 ; DARWIN-64-PIC-LABEL: bat05:
7939 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
7940 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rax
7941 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
7942 ; DARWIN-64-PIC-NEXT:    retq
7944 entry:
7945         %0 = load ptr, ptr @dptr, align 8
7946         %1 = getelementptr i32, ptr %0, i64 16
7947         ret ptr %1
7950 define dso_local ptr @bat06() nounwind {
7951 ; LINUX-64-STATIC-LABEL: bat06:
7952 ; LINUX-64-STATIC:       # %bb.0: # %entry
7953 ; LINUX-64-STATIC-NEXT:    movl $lsrc+64, %eax
7954 ; LINUX-64-STATIC-NEXT:    retq
7956 ; LINUX-32-STATIC-LABEL: bat06:
7957 ; LINUX-32-STATIC:       # %bb.0: # %entry
7958 ; LINUX-32-STATIC-NEXT:    movl $lsrc+64, %eax
7959 ; LINUX-32-STATIC-NEXT:    retl
7961 ; LINUX-32-PIC-LABEL: bat06:
7962 ; LINUX-32-PIC:       # %bb.0: # %entry
7963 ; LINUX-32-PIC-NEXT:    calll .L96$pb
7964 ; LINUX-32-PIC-NEXT:  .L96$pb:
7965 ; LINUX-32-PIC-NEXT:    popl %eax
7966 ; LINUX-32-PIC-NEXT:  .Ltmp96:
7967 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax
7968 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF+64(%eax), %eax
7969 ; LINUX-32-PIC-NEXT:    retl
7971 ; LINUX-64-PIC-LABEL: bat06:
7972 ; LINUX-64-PIC:       # %bb.0: # %entry
7973 ; LINUX-64-PIC-NEXT:    leaq lsrc+64(%rip), %rax
7974 ; LINUX-64-PIC-NEXT:    retq
7976 ; DARWIN-32-STATIC-LABEL: bat06:
7977 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
7978 ; DARWIN-32-STATIC-NEXT:    movl $_lsrc+64, %eax
7979 ; DARWIN-32-STATIC-NEXT:    retl
7981 ; DARWIN-32-DYNAMIC-LABEL: bat06:
7982 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
7983 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lsrc+64, %eax
7984 ; DARWIN-32-DYNAMIC-NEXT:    retl
7986 ; DARWIN-32-PIC-LABEL: bat06:
7987 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
7988 ; DARWIN-32-PIC-NEXT:    calll L96$pb
7989 ; DARWIN-32-PIC-NEXT:  L96$pb:
7990 ; DARWIN-32-PIC-NEXT:    popl %eax
7991 ; DARWIN-32-PIC-NEXT:    leal (_lsrc-L96$pb)+64(%eax), %eax
7992 ; DARWIN-32-PIC-NEXT:    retl
7994 ; DARWIN-64-STATIC-LABEL: bat06:
7995 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
7996 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc+64(%rip), %rax
7997 ; DARWIN-64-STATIC-NEXT:    retq
7999 ; DARWIN-64-DYNAMIC-LABEL: bat06:
8000 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8001 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc+64(%rip), %rax
8002 ; DARWIN-64-DYNAMIC-NEXT:    retq
8004 ; DARWIN-64-PIC-LABEL: bat06:
8005 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8006 ; DARWIN-64-PIC-NEXT:    leaq _lsrc+64(%rip), %rax
8007 ; DARWIN-64-PIC-NEXT:    retq
8009 entry:
8010         ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16)
8013 define dso_local ptr @bat07() nounwind {
8014 ; LINUX-64-STATIC-LABEL: bat07:
8015 ; LINUX-64-STATIC:       # %bb.0: # %entry
8016 ; LINUX-64-STATIC-NEXT:    movl $ldst+64, %eax
8017 ; LINUX-64-STATIC-NEXT:    retq
8019 ; LINUX-32-STATIC-LABEL: bat07:
8020 ; LINUX-32-STATIC:       # %bb.0: # %entry
8021 ; LINUX-32-STATIC-NEXT:    movl $ldst+64, %eax
8022 ; LINUX-32-STATIC-NEXT:    retl
8024 ; LINUX-32-PIC-LABEL: bat07:
8025 ; LINUX-32-PIC:       # %bb.0: # %entry
8026 ; LINUX-32-PIC-NEXT:    calll .L97$pb
8027 ; LINUX-32-PIC-NEXT:  .L97$pb:
8028 ; LINUX-32-PIC-NEXT:    popl %eax
8029 ; LINUX-32-PIC-NEXT:  .Ltmp97:
8030 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax
8031 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+64(%eax), %eax
8032 ; LINUX-32-PIC-NEXT:    retl
8034 ; LINUX-64-PIC-LABEL: bat07:
8035 ; LINUX-64-PIC:       # %bb.0: # %entry
8036 ; LINUX-64-PIC-NEXT:    leaq ldst+64(%rip), %rax
8037 ; LINUX-64-PIC-NEXT:    retq
8039 ; DARWIN-32-STATIC-LABEL: bat07:
8040 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8041 ; DARWIN-32-STATIC-NEXT:    movl $_ldst+64, %eax
8042 ; DARWIN-32-STATIC-NEXT:    retl
8044 ; DARWIN-32-DYNAMIC-LABEL: bat07:
8045 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8046 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst+64, %eax
8047 ; DARWIN-32-DYNAMIC-NEXT:    retl
8049 ; DARWIN-32-PIC-LABEL: bat07:
8050 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8051 ; DARWIN-32-PIC-NEXT:    calll L97$pb
8052 ; DARWIN-32-PIC-NEXT:  L97$pb:
8053 ; DARWIN-32-PIC-NEXT:    popl %eax
8054 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L97$pb)+64(%eax), %eax
8055 ; DARWIN-32-PIC-NEXT:    retl
8057 ; DARWIN-64-STATIC-LABEL: bat07:
8058 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8059 ; DARWIN-64-STATIC-NEXT:    leaq _ldst+64(%rip), %rax
8060 ; DARWIN-64-STATIC-NEXT:    retq
8062 ; DARWIN-64-DYNAMIC-LABEL: bat07:
8063 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8064 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst+64(%rip), %rax
8065 ; DARWIN-64-DYNAMIC-NEXT:    retq
8067 ; DARWIN-64-PIC-LABEL: bat07:
8068 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8069 ; DARWIN-64-PIC-NEXT:    leaq _ldst+64(%rip), %rax
8070 ; DARWIN-64-PIC-NEXT:    retq
8072 entry:
8073         ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16)
8076 define dso_local ptr @bat08() nounwind {
8077 ; LINUX-64-STATIC-LABEL: bat08:
8078 ; LINUX-64-STATIC:       # %bb.0: # %entry
8079 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rax
8080 ; LINUX-64-STATIC-NEXT:    addq $64, %rax
8081 ; LINUX-64-STATIC-NEXT:    retq
8083 ; LINUX-32-STATIC-LABEL: bat08:
8084 ; LINUX-32-STATIC:       # %bb.0: # %entry
8085 ; LINUX-32-STATIC-NEXT:    movl lptr, %eax
8086 ; LINUX-32-STATIC-NEXT:    addl $64, %eax
8087 ; LINUX-32-STATIC-NEXT:    retl
8089 ; LINUX-32-PIC-LABEL: bat08:
8090 ; LINUX-32-PIC:       # %bb.0: # %entry
8091 ; LINUX-32-PIC-NEXT:    calll .L98$pb
8092 ; LINUX-32-PIC-NEXT:  .L98$pb:
8093 ; LINUX-32-PIC-NEXT:    popl %eax
8094 ; LINUX-32-PIC-NEXT:  .Ltmp98:
8095 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax
8096 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
8097 ; LINUX-32-PIC-NEXT:    addl $64, %eax
8098 ; LINUX-32-PIC-NEXT:    retl
8100 ; LINUX-64-PIC-LABEL: bat08:
8101 ; LINUX-64-PIC:       # %bb.0: # %entry
8102 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rax
8103 ; LINUX-64-PIC-NEXT:    addq $64, %rax
8104 ; LINUX-64-PIC-NEXT:    retq
8106 ; DARWIN-32-STATIC-LABEL: bat08:
8107 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8108 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %eax
8109 ; DARWIN-32-STATIC-NEXT:    addl $64, %eax
8110 ; DARWIN-32-STATIC-NEXT:    retl
8112 ; DARWIN-32-DYNAMIC-LABEL: bat08:
8113 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8114 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %eax
8115 ; DARWIN-32-DYNAMIC-NEXT:    addl $64, %eax
8116 ; DARWIN-32-DYNAMIC-NEXT:    retl
8118 ; DARWIN-32-PIC-LABEL: bat08:
8119 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8120 ; DARWIN-32-PIC-NEXT:    calll L98$pb
8121 ; DARWIN-32-PIC-NEXT:  L98$pb:
8122 ; DARWIN-32-PIC-NEXT:    popl %eax
8123 ; DARWIN-32-PIC-NEXT:    movl _lptr-L98$pb(%eax), %eax
8124 ; DARWIN-32-PIC-NEXT:    addl $64, %eax
8125 ; DARWIN-32-PIC-NEXT:    retl
8127 ; DARWIN-64-STATIC-LABEL: bat08:
8128 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8129 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rax
8130 ; DARWIN-64-STATIC-NEXT:    addq $64, %rax
8131 ; DARWIN-64-STATIC-NEXT:    retq
8133 ; DARWIN-64-DYNAMIC-LABEL: bat08:
8134 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8135 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rax
8136 ; DARWIN-64-DYNAMIC-NEXT:    addq $64, %rax
8137 ; DARWIN-64-DYNAMIC-NEXT:    retq
8139 ; DARWIN-64-PIC-LABEL: bat08:
8140 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8141 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rax
8142 ; DARWIN-64-PIC-NEXT:    addq $64, %rax
8143 ; DARWIN-64-PIC-NEXT:    retq
8145 entry:
8146         %0 = load ptr, ptr @lptr, align 8
8147         %1 = getelementptr i32, ptr %0, i64 16
8148         ret ptr %1
8151 define dso_local ptr @bam00() nounwind {
8152 ; LINUX-64-STATIC-LABEL: bam00:
8153 ; LINUX-64-STATIC:       # %bb.0: # %entry
8154 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8155 ; LINUX-64-STATIC-NEXT:    addq src@GOTPCREL(%rip), %rax
8156 ; LINUX-64-STATIC-NEXT:    retq
8158 ; LINUX-32-STATIC-LABEL: bam00:
8159 ; LINUX-32-STATIC:       # %bb.0: # %entry
8160 ; LINUX-32-STATIC-NEXT:    leal src+262144, %eax
8161 ; LINUX-32-STATIC-NEXT:    retl
8163 ; LINUX-32-PIC-LABEL: bam00:
8164 ; LINUX-32-PIC:       # %bb.0: # %entry
8165 ; LINUX-32-PIC-NEXT:    calll .L99$pb
8166 ; LINUX-32-PIC-NEXT:  .L99$pb:
8167 ; LINUX-32-PIC-NEXT:    popl %ecx
8168 ; LINUX-32-PIC-NEXT:  .Ltmp99:
8169 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx
8170 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8171 ; LINUX-32-PIC-NEXT:    addl src@GOT(%ecx), %eax
8172 ; LINUX-32-PIC-NEXT:    retl
8174 ; LINUX-64-PIC-LABEL: bam00:
8175 ; LINUX-64-PIC:       # %bb.0: # %entry
8176 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8177 ; LINUX-64-PIC-NEXT:    addq src@GOTPCREL(%rip), %rax
8178 ; LINUX-64-PIC-NEXT:    retq
8180 ; DARWIN-32-STATIC-LABEL: bam00:
8181 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8182 ; DARWIN-32-STATIC-NEXT:    movl $_src+262144, %eax
8183 ; DARWIN-32-STATIC-NEXT:    retl
8185 ; DARWIN-32-DYNAMIC-LABEL: bam00:
8186 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8187 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8188 ; DARWIN-32-DYNAMIC-NEXT:    addl L_src$non_lazy_ptr, %eax
8189 ; DARWIN-32-DYNAMIC-NEXT:    retl
8191 ; DARWIN-32-PIC-LABEL: bam00:
8192 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8193 ; DARWIN-32-PIC-NEXT:    calll L99$pb
8194 ; DARWIN-32-PIC-NEXT:  L99$pb:
8195 ; DARWIN-32-PIC-NEXT:    popl %ecx
8196 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8197 ; DARWIN-32-PIC-NEXT:    addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax
8198 ; DARWIN-32-PIC-NEXT:    retl
8200 ; DARWIN-64-STATIC-LABEL: bam00:
8201 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8202 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8203 ; DARWIN-64-STATIC-NEXT:    addq _src@GOTPCREL(%rip), %rax
8204 ; DARWIN-64-STATIC-NEXT:    retq
8206 ; DARWIN-64-DYNAMIC-LABEL: bam00:
8207 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8208 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8209 ; DARWIN-64-DYNAMIC-NEXT:    addq _src@GOTPCREL(%rip), %rax
8210 ; DARWIN-64-DYNAMIC-NEXT:    retq
8212 ; DARWIN-64-PIC-LABEL: bam00:
8213 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8214 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8215 ; DARWIN-64-PIC-NEXT:    addq _src@GOTPCREL(%rip), %rax
8216 ; DARWIN-64-PIC-NEXT:    retq
8218 entry:
8219         ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536)
8222 define dso_local ptr @bam01() nounwind {
8223 ; LINUX-64-STATIC-LABEL: bam01:
8224 ; LINUX-64-STATIC:       # %bb.0: # %entry
8225 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8226 ; LINUX-64-STATIC-NEXT:    addq dst@GOTPCREL(%rip), %rax
8227 ; LINUX-64-STATIC-NEXT:    retq
8229 ; LINUX-32-STATIC-LABEL: bam01:
8230 ; LINUX-32-STATIC:       # %bb.0: # %entry
8231 ; LINUX-32-STATIC-NEXT:    leal dst+262144, %eax
8232 ; LINUX-32-STATIC-NEXT:    retl
8234 ; LINUX-32-PIC-LABEL: bam01:
8235 ; LINUX-32-PIC:       # %bb.0: # %entry
8236 ; LINUX-32-PIC-NEXT:    calll .L100$pb
8237 ; LINUX-32-PIC-NEXT:  .L100$pb:
8238 ; LINUX-32-PIC-NEXT:    popl %ecx
8239 ; LINUX-32-PIC-NEXT:  .Ltmp100:
8240 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx
8241 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8242 ; LINUX-32-PIC-NEXT:    addl dst@GOT(%ecx), %eax
8243 ; LINUX-32-PIC-NEXT:    retl
8245 ; LINUX-64-PIC-LABEL: bam01:
8246 ; LINUX-64-PIC:       # %bb.0: # %entry
8247 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8248 ; LINUX-64-PIC-NEXT:    addq dst@GOTPCREL(%rip), %rax
8249 ; LINUX-64-PIC-NEXT:    retq
8251 ; DARWIN-32-STATIC-LABEL: bam01:
8252 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8253 ; DARWIN-32-STATIC-NEXT:    movl $_dst+262144, %eax
8254 ; DARWIN-32-STATIC-NEXT:    retl
8256 ; DARWIN-32-DYNAMIC-LABEL: bam01:
8257 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8258 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8259 ; DARWIN-32-DYNAMIC-NEXT:    addl L_dst$non_lazy_ptr, %eax
8260 ; DARWIN-32-DYNAMIC-NEXT:    retl
8262 ; DARWIN-32-PIC-LABEL: bam01:
8263 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8264 ; DARWIN-32-PIC-NEXT:    calll L100$pb
8265 ; DARWIN-32-PIC-NEXT:  L100$pb:
8266 ; DARWIN-32-PIC-NEXT:    popl %ecx
8267 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8268 ; DARWIN-32-PIC-NEXT:    addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax
8269 ; DARWIN-32-PIC-NEXT:    retl
8271 ; DARWIN-64-STATIC-LABEL: bam01:
8272 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8273 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8274 ; DARWIN-64-STATIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
8275 ; DARWIN-64-STATIC-NEXT:    retq
8277 ; DARWIN-64-DYNAMIC-LABEL: bam01:
8278 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8279 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8280 ; DARWIN-64-DYNAMIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
8281 ; DARWIN-64-DYNAMIC-NEXT:    retq
8283 ; DARWIN-64-PIC-LABEL: bam01:
8284 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8285 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8286 ; DARWIN-64-PIC-NEXT:    addq _dst@GOTPCREL(%rip), %rax
8287 ; DARWIN-64-PIC-NEXT:    retq
8289 entry:
8290         ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536)
8293 define dso_local ptr @bxm01() nounwind {
8294 ; LINUX-64-STATIC-LABEL: bxm01:
8295 ; LINUX-64-STATIC:       # %bb.0: # %entry
8296 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8297 ; LINUX-64-STATIC-NEXT:    addq xdst@GOTPCREL(%rip), %rax
8298 ; LINUX-64-STATIC-NEXT:    retq
8300 ; LINUX-32-STATIC-LABEL: bxm01:
8301 ; LINUX-32-STATIC:       # %bb.0: # %entry
8302 ; LINUX-32-STATIC-NEXT:    leal xdst+262144, %eax
8303 ; LINUX-32-STATIC-NEXT:    retl
8305 ; LINUX-32-PIC-LABEL: bxm01:
8306 ; LINUX-32-PIC:       # %bb.0: # %entry
8307 ; LINUX-32-PIC-NEXT:    calll .L101$pb
8308 ; LINUX-32-PIC-NEXT:  .L101$pb:
8309 ; LINUX-32-PIC-NEXT:    popl %ecx
8310 ; LINUX-32-PIC-NEXT:  .Ltmp101:
8311 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx
8312 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8313 ; LINUX-32-PIC-NEXT:    addl xdst@GOT(%ecx), %eax
8314 ; LINUX-32-PIC-NEXT:    retl
8316 ; LINUX-64-PIC-LABEL: bxm01:
8317 ; LINUX-64-PIC:       # %bb.0: # %entry
8318 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8319 ; LINUX-64-PIC-NEXT:    addq xdst@GOTPCREL(%rip), %rax
8320 ; LINUX-64-PIC-NEXT:    retq
8322 ; DARWIN-32-STATIC-LABEL: bxm01:
8323 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8324 ; DARWIN-32-STATIC-NEXT:    movl $_xdst+262144, %eax
8325 ; DARWIN-32-STATIC-NEXT:    retl
8327 ; DARWIN-32-DYNAMIC-LABEL: bxm01:
8328 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8329 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8330 ; DARWIN-32-DYNAMIC-NEXT:    addl L_xdst$non_lazy_ptr, %eax
8331 ; DARWIN-32-DYNAMIC-NEXT:    retl
8333 ; DARWIN-32-PIC-LABEL: bxm01:
8334 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8335 ; DARWIN-32-PIC-NEXT:    calll L101$pb
8336 ; DARWIN-32-PIC-NEXT:  L101$pb:
8337 ; DARWIN-32-PIC-NEXT:    popl %ecx
8338 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8339 ; DARWIN-32-PIC-NEXT:    addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax
8340 ; DARWIN-32-PIC-NEXT:    retl
8342 ; DARWIN-64-STATIC-LABEL: bxm01:
8343 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8344 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8345 ; DARWIN-64-STATIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rax
8346 ; DARWIN-64-STATIC-NEXT:    retq
8348 ; DARWIN-64-DYNAMIC-LABEL: bxm01:
8349 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8350 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8351 ; DARWIN-64-DYNAMIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rax
8352 ; DARWIN-64-DYNAMIC-NEXT:    retq
8354 ; DARWIN-64-PIC-LABEL: bxm01:
8355 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8356 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8357 ; DARWIN-64-PIC-NEXT:    addq _xdst@GOTPCREL(%rip), %rax
8358 ; DARWIN-64-PIC-NEXT:    retq
8360 entry:
8361         ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 65536)
8364 define dso_local ptr @bam02() nounwind {
8365 ; LINUX-64-STATIC-LABEL: bam02:
8366 ; LINUX-64-STATIC:       # %bb.0: # %entry
8367 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
8368 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8369 ; LINUX-64-STATIC-NEXT:    addq (%rcx), %rax
8370 ; LINUX-64-STATIC-NEXT:    retq
8372 ; LINUX-32-STATIC-LABEL: bam02:
8373 ; LINUX-32-STATIC:       # %bb.0: # %entry
8374 ; LINUX-32-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8375 ; LINUX-32-STATIC-NEXT:    addl ptr, %eax
8376 ; LINUX-32-STATIC-NEXT:    retl
8378 ; LINUX-32-PIC-LABEL: bam02:
8379 ; LINUX-32-PIC:       # %bb.0: # %entry
8380 ; LINUX-32-PIC-NEXT:    calll .L102$pb
8381 ; LINUX-32-PIC-NEXT:  .L102$pb:
8382 ; LINUX-32-PIC-NEXT:    popl %eax
8383 ; LINUX-32-PIC-NEXT:  .Ltmp102:
8384 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax
8385 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %ecx
8386 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8387 ; LINUX-32-PIC-NEXT:    addl (%ecx), %eax
8388 ; LINUX-32-PIC-NEXT:    retl
8390 ; LINUX-64-PIC-LABEL: bam02:
8391 ; LINUX-64-PIC:       # %bb.0: # %entry
8392 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rcx
8393 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8394 ; LINUX-64-PIC-NEXT:    addq (%rcx), %rax
8395 ; LINUX-64-PIC-NEXT:    retq
8397 ; DARWIN-32-STATIC-LABEL: bam02:
8398 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8399 ; DARWIN-32-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8400 ; DARWIN-32-STATIC-NEXT:    addl _ptr, %eax
8401 ; DARWIN-32-STATIC-NEXT:    retl
8403 ; DARWIN-32-DYNAMIC-LABEL: bam02:
8404 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8405 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %ecx
8406 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8407 ; DARWIN-32-DYNAMIC-NEXT:    addl (%ecx), %eax
8408 ; DARWIN-32-DYNAMIC-NEXT:    retl
8410 ; DARWIN-32-PIC-LABEL: bam02:
8411 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8412 ; DARWIN-32-PIC-NEXT:    calll L102$pb
8413 ; DARWIN-32-PIC-NEXT:  L102$pb:
8414 ; DARWIN-32-PIC-NEXT:    popl %eax
8415 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx
8416 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8417 ; DARWIN-32-PIC-NEXT:    addl (%ecx), %eax
8418 ; DARWIN-32-PIC-NEXT:    retl
8420 ; DARWIN-64-STATIC-LABEL: bam02:
8421 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8422 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
8423 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8424 ; DARWIN-64-STATIC-NEXT:    addq (%rcx), %rax
8425 ; DARWIN-64-STATIC-NEXT:    retq
8427 ; DARWIN-64-DYNAMIC-LABEL: bam02:
8428 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8429 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
8430 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8431 ; DARWIN-64-DYNAMIC-NEXT:    addq (%rcx), %rax
8432 ; DARWIN-64-DYNAMIC-NEXT:    retq
8434 ; DARWIN-64-PIC-LABEL: bam02:
8435 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8436 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rcx
8437 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8438 ; DARWIN-64-PIC-NEXT:    addq (%rcx), %rax
8439 ; DARWIN-64-PIC-NEXT:    retq
8441 entry:
8442         %0 = load ptr, ptr @ptr, align 8
8443         %1 = getelementptr i32, ptr %0, i64 65536
8444         ret ptr %1
8447 define dso_local ptr @bam03() nounwind {
8448 ; LINUX-64-STATIC-LABEL: bam03:
8449 ; LINUX-64-STATIC:       # %bb.0: # %entry
8450 ; LINUX-64-STATIC-NEXT:    movl $dsrc+262144, %eax
8451 ; LINUX-64-STATIC-NEXT:    retq
8453 ; LINUX-32-STATIC-LABEL: bam03:
8454 ; LINUX-32-STATIC:       # %bb.0: # %entry
8455 ; LINUX-32-STATIC-NEXT:    movl $dsrc+262144, %eax
8456 ; LINUX-32-STATIC-NEXT:    retl
8458 ; LINUX-32-PIC-LABEL: bam03:
8459 ; LINUX-32-PIC:       # %bb.0: # %entry
8460 ; LINUX-32-PIC-NEXT:    calll .L103$pb
8461 ; LINUX-32-PIC-NEXT:  .L103$pb:
8462 ; LINUX-32-PIC-NEXT:    popl %eax
8463 ; LINUX-32-PIC-NEXT:  .Ltmp103:
8464 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %eax
8465 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF+262144(%eax), %eax
8466 ; LINUX-32-PIC-NEXT:    retl
8468 ; LINUX-64-PIC-LABEL: bam03:
8469 ; LINUX-64-PIC:       # %bb.0: # %entry
8470 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local+262144(%rip), %rax
8471 ; LINUX-64-PIC-NEXT:    retq
8473 ; DARWIN-32-STATIC-LABEL: bam03:
8474 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8475 ; DARWIN-32-STATIC-NEXT:    movl $_dsrc+262144, %eax
8476 ; DARWIN-32-STATIC-NEXT:    retl
8478 ; DARWIN-32-DYNAMIC-LABEL: bam03:
8479 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8480 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dsrc+262144, %eax
8481 ; DARWIN-32-DYNAMIC-NEXT:    retl
8483 ; DARWIN-32-PIC-LABEL: bam03:
8484 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8485 ; DARWIN-32-PIC-NEXT:    calll L103$pb
8486 ; DARWIN-32-PIC-NEXT:  L103$pb:
8487 ; DARWIN-32-PIC-NEXT:    popl %eax
8488 ; DARWIN-32-PIC-NEXT:    leal (_dsrc-L103$pb)+262144(%eax), %eax
8489 ; DARWIN-32-PIC-NEXT:    retl
8491 ; DARWIN-64-STATIC-LABEL: bam03:
8492 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8493 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc+262144(%rip), %rax
8494 ; DARWIN-64-STATIC-NEXT:    retq
8496 ; DARWIN-64-DYNAMIC-LABEL: bam03:
8497 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8498 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc+262144(%rip), %rax
8499 ; DARWIN-64-DYNAMIC-NEXT:    retq
8501 ; DARWIN-64-PIC-LABEL: bam03:
8502 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8503 ; DARWIN-64-PIC-NEXT:    leaq _dsrc+262144(%rip), %rax
8504 ; DARWIN-64-PIC-NEXT:    retq
8506 entry:
8507         ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536)
8510 define dso_local ptr @bam04() nounwind {
8511 ; LINUX-64-STATIC-LABEL: bam04:
8512 ; LINUX-64-STATIC:       # %bb.0: # %entry
8513 ; LINUX-64-STATIC-NEXT:    movl $ddst+262144, %eax
8514 ; LINUX-64-STATIC-NEXT:    retq
8516 ; LINUX-32-STATIC-LABEL: bam04:
8517 ; LINUX-32-STATIC:       # %bb.0: # %entry
8518 ; LINUX-32-STATIC-NEXT:    movl $ddst+262144, %eax
8519 ; LINUX-32-STATIC-NEXT:    retl
8521 ; LINUX-32-PIC-LABEL: bam04:
8522 ; LINUX-32-PIC:       # %bb.0: # %entry
8523 ; LINUX-32-PIC-NEXT:    calll .L104$pb
8524 ; LINUX-32-PIC-NEXT:  .L104$pb:
8525 ; LINUX-32-PIC-NEXT:    popl %eax
8526 ; LINUX-32-PIC-NEXT:  .Ltmp104:
8527 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %eax
8528 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+262144(%eax), %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:    leaq .Lddst$local+262144(%rip), %rax
8534 ; LINUX-64-PIC-NEXT:    retq
8536 ; DARWIN-32-STATIC-LABEL: bam04:
8537 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8538 ; DARWIN-32-STATIC-NEXT:    movl $_ddst+262144, %eax
8539 ; DARWIN-32-STATIC-NEXT:    retl
8541 ; DARWIN-32-DYNAMIC-LABEL: bam04:
8542 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8543 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ddst+262144, %eax
8544 ; DARWIN-32-DYNAMIC-NEXT:    retl
8546 ; DARWIN-32-PIC-LABEL: bam04:
8547 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8548 ; DARWIN-32-PIC-NEXT:    calll L104$pb
8549 ; DARWIN-32-PIC-NEXT:  L104$pb:
8550 ; DARWIN-32-PIC-NEXT:    popl %eax
8551 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L104$pb)+262144(%eax), %eax
8552 ; DARWIN-32-PIC-NEXT:    retl
8554 ; DARWIN-64-STATIC-LABEL: bam04:
8555 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8556 ; DARWIN-64-STATIC-NEXT:    leaq _ddst+262144(%rip), %rax
8557 ; DARWIN-64-STATIC-NEXT:    retq
8559 ; DARWIN-64-DYNAMIC-LABEL: bam04:
8560 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8561 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst+262144(%rip), %rax
8562 ; DARWIN-64-DYNAMIC-NEXT:    retq
8564 ; DARWIN-64-PIC-LABEL: bam04:
8565 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8566 ; DARWIN-64-PIC-NEXT:    leaq _ddst+262144(%rip), %rax
8567 ; DARWIN-64-PIC-NEXT:    retq
8569 entry:
8570         ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536)
8573 define dso_local ptr @bam05() nounwind {
8574 ; LINUX-64-STATIC-LABEL: bam05:
8575 ; LINUX-64-STATIC:       # %bb.0: # %entry
8576 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8577 ; LINUX-64-STATIC-NEXT:    addq dptr(%rip), %rax
8578 ; LINUX-64-STATIC-NEXT:    retq
8580 ; LINUX-32-STATIC-LABEL: bam05:
8581 ; LINUX-32-STATIC:       # %bb.0: # %entry
8582 ; LINUX-32-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8583 ; LINUX-32-STATIC-NEXT:    addl dptr, %eax
8584 ; LINUX-32-STATIC-NEXT:    retl
8586 ; LINUX-32-PIC-LABEL: bam05:
8587 ; LINUX-32-PIC:       # %bb.0: # %entry
8588 ; LINUX-32-PIC-NEXT:    calll .L105$pb
8589 ; LINUX-32-PIC-NEXT:  .L105$pb:
8590 ; LINUX-32-PIC-NEXT:    popl %ecx
8591 ; LINUX-32-PIC-NEXT:  .Ltmp105:
8592 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %ecx
8593 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8594 ; LINUX-32-PIC-NEXT:    addl .Ldptr$local@GOTOFF(%ecx), %eax
8595 ; LINUX-32-PIC-NEXT:    retl
8597 ; LINUX-64-PIC-LABEL: bam05:
8598 ; LINUX-64-PIC:       # %bb.0: # %entry
8599 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8600 ; LINUX-64-PIC-NEXT:    addq .Ldptr$local(%rip), %rax
8601 ; LINUX-64-PIC-NEXT:    retq
8603 ; DARWIN-32-STATIC-LABEL: bam05:
8604 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8605 ; DARWIN-32-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8606 ; DARWIN-32-STATIC-NEXT:    addl _dptr, %eax
8607 ; DARWIN-32-STATIC-NEXT:    retl
8609 ; DARWIN-32-DYNAMIC-LABEL: bam05:
8610 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8611 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8612 ; DARWIN-32-DYNAMIC-NEXT:    addl _dptr, %eax
8613 ; DARWIN-32-DYNAMIC-NEXT:    retl
8615 ; DARWIN-32-PIC-LABEL: bam05:
8616 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8617 ; DARWIN-32-PIC-NEXT:    calll L105$pb
8618 ; DARWIN-32-PIC-NEXT:  L105$pb:
8619 ; DARWIN-32-PIC-NEXT:    popl %ecx
8620 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8621 ; DARWIN-32-PIC-NEXT:    addl _dptr-L105$pb(%ecx), %eax
8622 ; DARWIN-32-PIC-NEXT:    retl
8624 ; DARWIN-64-STATIC-LABEL: bam05:
8625 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8626 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8627 ; DARWIN-64-STATIC-NEXT:    addq _dptr(%rip), %rax
8628 ; DARWIN-64-STATIC-NEXT:    retq
8630 ; DARWIN-64-DYNAMIC-LABEL: bam05:
8631 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8632 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8633 ; DARWIN-64-DYNAMIC-NEXT:    addq _dptr(%rip), %rax
8634 ; DARWIN-64-DYNAMIC-NEXT:    retq
8636 ; DARWIN-64-PIC-LABEL: bam05:
8637 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8638 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8639 ; DARWIN-64-PIC-NEXT:    addq _dptr(%rip), %rax
8640 ; DARWIN-64-PIC-NEXT:    retq
8642 entry:
8643         %0 = load ptr, ptr @dptr, align 8
8644         %1 = getelementptr i32, ptr %0, i64 65536
8645         ret ptr %1
8648 define dso_local ptr @bam06() nounwind {
8649 ; LINUX-64-STATIC-LABEL: bam06:
8650 ; LINUX-64-STATIC:       # %bb.0: # %entry
8651 ; LINUX-64-STATIC-NEXT:    movl $lsrc+262144, %eax
8652 ; LINUX-64-STATIC-NEXT:    retq
8654 ; LINUX-32-STATIC-LABEL: bam06:
8655 ; LINUX-32-STATIC:       # %bb.0: # %entry
8656 ; LINUX-32-STATIC-NEXT:    movl $lsrc+262144, %eax
8657 ; LINUX-32-STATIC-NEXT:    retl
8659 ; LINUX-32-PIC-LABEL: bam06:
8660 ; LINUX-32-PIC:       # %bb.0: # %entry
8661 ; LINUX-32-PIC-NEXT:    calll .L106$pb
8662 ; LINUX-32-PIC-NEXT:  .L106$pb:
8663 ; LINUX-32-PIC-NEXT:    popl %eax
8664 ; LINUX-32-PIC-NEXT:  .Ltmp106:
8665 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax
8666 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF+262144(%eax), %eax
8667 ; LINUX-32-PIC-NEXT:    retl
8669 ; LINUX-64-PIC-LABEL: bam06:
8670 ; LINUX-64-PIC:       # %bb.0: # %entry
8671 ; LINUX-64-PIC-NEXT:    leaq lsrc+262144(%rip), %rax
8672 ; LINUX-64-PIC-NEXT:    retq
8674 ; DARWIN-32-STATIC-LABEL: bam06:
8675 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8676 ; DARWIN-32-STATIC-NEXT:    movl $_lsrc+262144, %eax
8677 ; DARWIN-32-STATIC-NEXT:    retl
8679 ; DARWIN-32-DYNAMIC-LABEL: bam06:
8680 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8681 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lsrc+262144, %eax
8682 ; DARWIN-32-DYNAMIC-NEXT:    retl
8684 ; DARWIN-32-PIC-LABEL: bam06:
8685 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8686 ; DARWIN-32-PIC-NEXT:    calll L106$pb
8687 ; DARWIN-32-PIC-NEXT:  L106$pb:
8688 ; DARWIN-32-PIC-NEXT:    popl %eax
8689 ; DARWIN-32-PIC-NEXT:    leal (_lsrc-L106$pb)+262144(%eax), %eax
8690 ; DARWIN-32-PIC-NEXT:    retl
8692 ; DARWIN-64-STATIC-LABEL: bam06:
8693 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8694 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc+262144(%rip), %rax
8695 ; DARWIN-64-STATIC-NEXT:    retq
8697 ; DARWIN-64-DYNAMIC-LABEL: bam06:
8698 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8699 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc+262144(%rip), %rax
8700 ; DARWIN-64-DYNAMIC-NEXT:    retq
8702 ; DARWIN-64-PIC-LABEL: bam06:
8703 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8704 ; DARWIN-64-PIC-NEXT:    leaq _lsrc+262144(%rip), %rax
8705 ; DARWIN-64-PIC-NEXT:    retq
8707 entry:
8708         ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536)
8711 define dso_local ptr @bam07() nounwind {
8712 ; LINUX-64-STATIC-LABEL: bam07:
8713 ; LINUX-64-STATIC:       # %bb.0: # %entry
8714 ; LINUX-64-STATIC-NEXT:    movl $ldst+262144, %eax
8715 ; LINUX-64-STATIC-NEXT:    retq
8717 ; LINUX-32-STATIC-LABEL: bam07:
8718 ; LINUX-32-STATIC:       # %bb.0: # %entry
8719 ; LINUX-32-STATIC-NEXT:    movl $ldst+262144, %eax
8720 ; LINUX-32-STATIC-NEXT:    retl
8722 ; LINUX-32-PIC-LABEL: bam07:
8723 ; LINUX-32-PIC:       # %bb.0: # %entry
8724 ; LINUX-32-PIC-NEXT:    calll .L107$pb
8725 ; LINUX-32-PIC-NEXT:  .L107$pb:
8726 ; LINUX-32-PIC-NEXT:    popl %eax
8727 ; LINUX-32-PIC-NEXT:  .Ltmp107:
8728 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax
8729 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+262144(%eax), %eax
8730 ; LINUX-32-PIC-NEXT:    retl
8732 ; LINUX-64-PIC-LABEL: bam07:
8733 ; LINUX-64-PIC:       # %bb.0: # %entry
8734 ; LINUX-64-PIC-NEXT:    leaq ldst+262144(%rip), %rax
8735 ; LINUX-64-PIC-NEXT:    retq
8737 ; DARWIN-32-STATIC-LABEL: bam07:
8738 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8739 ; DARWIN-32-STATIC-NEXT:    movl $_ldst+262144, %eax
8740 ; DARWIN-32-STATIC-NEXT:    retl
8742 ; DARWIN-32-DYNAMIC-LABEL: bam07:
8743 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8744 ; DARWIN-32-DYNAMIC-NEXT:    movl $_ldst+262144, %eax
8745 ; DARWIN-32-DYNAMIC-NEXT:    retl
8747 ; DARWIN-32-PIC-LABEL: bam07:
8748 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8749 ; DARWIN-32-PIC-NEXT:    calll L107$pb
8750 ; DARWIN-32-PIC-NEXT:  L107$pb:
8751 ; DARWIN-32-PIC-NEXT:    popl %eax
8752 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L107$pb)+262144(%eax), %eax
8753 ; DARWIN-32-PIC-NEXT:    retl
8755 ; DARWIN-64-STATIC-LABEL: bam07:
8756 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8757 ; DARWIN-64-STATIC-NEXT:    leaq _ldst+262144(%rip), %rax
8758 ; DARWIN-64-STATIC-NEXT:    retq
8760 ; DARWIN-64-DYNAMIC-LABEL: bam07:
8761 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8762 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst+262144(%rip), %rax
8763 ; DARWIN-64-DYNAMIC-NEXT:    retq
8765 ; DARWIN-64-PIC-LABEL: bam07:
8766 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8767 ; DARWIN-64-PIC-NEXT:    leaq _ldst+262144(%rip), %rax
8768 ; DARWIN-64-PIC-NEXT:    retq
8770 entry:
8771         ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536)
8774 define dso_local ptr @bam08() nounwind {
8775 ; LINUX-64-STATIC-LABEL: bam08:
8776 ; LINUX-64-STATIC:       # %bb.0: # %entry
8777 ; LINUX-64-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8778 ; LINUX-64-STATIC-NEXT:    addq lptr(%rip), %rax
8779 ; LINUX-64-STATIC-NEXT:    retq
8781 ; LINUX-32-STATIC-LABEL: bam08:
8782 ; LINUX-32-STATIC:       # %bb.0: # %entry
8783 ; LINUX-32-STATIC-NEXT:    movl $262144, %eax # imm = 0x40000
8784 ; LINUX-32-STATIC-NEXT:    addl lptr, %eax
8785 ; LINUX-32-STATIC-NEXT:    retl
8787 ; LINUX-32-PIC-LABEL: bam08:
8788 ; LINUX-32-PIC:       # %bb.0: # %entry
8789 ; LINUX-32-PIC-NEXT:    calll .L108$pb
8790 ; LINUX-32-PIC-NEXT:  .L108$pb:
8791 ; LINUX-32-PIC-NEXT:    popl %ecx
8792 ; LINUX-32-PIC-NEXT:  .Ltmp108:
8793 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx
8794 ; LINUX-32-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8795 ; LINUX-32-PIC-NEXT:    addl lptr@GOTOFF(%ecx), %eax
8796 ; LINUX-32-PIC-NEXT:    retl
8798 ; LINUX-64-PIC-LABEL: bam08:
8799 ; LINUX-64-PIC:       # %bb.0: # %entry
8800 ; LINUX-64-PIC-NEXT:    movl $262144, %eax # imm = 0x40000
8801 ; LINUX-64-PIC-NEXT:    addq lptr(%rip), %rax
8802 ; LINUX-64-PIC-NEXT:    retq
8804 ; DARWIN-32-STATIC-LABEL: bam08:
8805 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8806 ; DARWIN-32-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8807 ; DARWIN-32-STATIC-NEXT:    addl _lptr, %eax
8808 ; DARWIN-32-STATIC-NEXT:    retl
8810 ; DARWIN-32-DYNAMIC-LABEL: bam08:
8811 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8812 ; DARWIN-32-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8813 ; DARWIN-32-DYNAMIC-NEXT:    addl _lptr, %eax
8814 ; DARWIN-32-DYNAMIC-NEXT:    retl
8816 ; DARWIN-32-PIC-LABEL: bam08:
8817 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8818 ; DARWIN-32-PIC-NEXT:    calll L108$pb
8819 ; DARWIN-32-PIC-NEXT:  L108$pb:
8820 ; DARWIN-32-PIC-NEXT:    popl %ecx
8821 ; DARWIN-32-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8822 ; DARWIN-32-PIC-NEXT:    addl _lptr-L108$pb(%ecx), %eax
8823 ; DARWIN-32-PIC-NEXT:    retl
8825 ; DARWIN-64-STATIC-LABEL: bam08:
8826 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8827 ; DARWIN-64-STATIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8828 ; DARWIN-64-STATIC-NEXT:    addq _lptr(%rip), %rax
8829 ; DARWIN-64-STATIC-NEXT:    retq
8831 ; DARWIN-64-DYNAMIC-LABEL: bam08:
8832 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8833 ; DARWIN-64-DYNAMIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8834 ; DARWIN-64-DYNAMIC-NEXT:    addq _lptr(%rip), %rax
8835 ; DARWIN-64-DYNAMIC-NEXT:    retq
8837 ; DARWIN-64-PIC-LABEL: bam08:
8838 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8839 ; DARWIN-64-PIC-NEXT:    movl $262144, %eax ## imm = 0x40000
8840 ; DARWIN-64-PIC-NEXT:    addq _lptr(%rip), %rax
8841 ; DARWIN-64-PIC-NEXT:    retq
8843 entry:
8844         %0 = load ptr, ptr @lptr, align 8
8845         %1 = getelementptr i32, ptr %0, i64 65536
8846         ret ptr %1
8849 define dso_local ptr @cat00(i64 %i) nounwind {
8850 ; LINUX-64-STATIC-LABEL: cat00:
8851 ; LINUX-64-STATIC:       # %bb.0: # %entry
8852 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
8853 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8854 ; LINUX-64-STATIC-NEXT:    retq
8856 ; LINUX-32-STATIC-LABEL: cat00:
8857 ; LINUX-32-STATIC:       # %bb.0: # %entry
8858 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8859 ; LINUX-32-STATIC-NEXT:    leal src+64(,%eax,4), %eax
8860 ; LINUX-32-STATIC-NEXT:    retl
8862 ; LINUX-32-PIC-LABEL: cat00:
8863 ; LINUX-32-PIC:       # %bb.0: # %entry
8864 ; LINUX-32-PIC-NEXT:    calll .L109$pb
8865 ; LINUX-32-PIC-NEXT:  .L109$pb:
8866 ; LINUX-32-PIC-NEXT:    popl %eax
8867 ; LINUX-32-PIC-NEXT:  .Ltmp109:
8868 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax
8869 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
8870 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %eax
8871 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
8872 ; LINUX-32-PIC-NEXT:    retl
8874 ; LINUX-64-PIC-LABEL: cat00:
8875 ; LINUX-64-PIC:       # %bb.0: # %entry
8876 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
8877 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8878 ; LINUX-64-PIC-NEXT:    retq
8880 ; DARWIN-32-STATIC-LABEL: cat00:
8881 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8882 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8883 ; DARWIN-32-STATIC-NEXT:    leal _src+64(,%eax,4), %eax
8884 ; DARWIN-32-STATIC-NEXT:    retl
8886 ; DARWIN-32-DYNAMIC-LABEL: cat00:
8887 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8888 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8889 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
8890 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
8891 ; DARWIN-32-DYNAMIC-NEXT:    retl
8893 ; DARWIN-32-PIC-LABEL: cat00:
8894 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8895 ; DARWIN-32-PIC-NEXT:    calll L109$pb
8896 ; DARWIN-32-PIC-NEXT:  L109$pb:
8897 ; DARWIN-32-PIC-NEXT:    popl %eax
8898 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
8899 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L109$pb(%eax), %eax
8900 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
8901 ; DARWIN-32-PIC-NEXT:    retl
8903 ; DARWIN-64-STATIC-LABEL: cat00:
8904 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8905 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
8906 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8907 ; DARWIN-64-STATIC-NEXT:    retq
8909 ; DARWIN-64-DYNAMIC-LABEL: cat00:
8910 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8911 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
8912 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8913 ; DARWIN-64-DYNAMIC-NEXT:    retq
8915 ; DARWIN-64-PIC-LABEL: cat00:
8916 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8917 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
8918 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8919 ; DARWIN-64-PIC-NEXT:    retq
8921 entry:
8922         %0 = add i64 %i, 16
8923         %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0
8924         ret ptr %1
8927 define dso_local ptr @cxt00(i64 %i) nounwind {
8928 ; LINUX-64-STATIC-LABEL: cxt00:
8929 ; LINUX-64-STATIC:       # %bb.0: # %entry
8930 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
8931 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8932 ; LINUX-64-STATIC-NEXT:    retq
8934 ; LINUX-32-STATIC-LABEL: cxt00:
8935 ; LINUX-32-STATIC:       # %bb.0: # %entry
8936 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8937 ; LINUX-32-STATIC-NEXT:    leal xsrc+64(,%eax,4), %eax
8938 ; LINUX-32-STATIC-NEXT:    retl
8940 ; LINUX-32-PIC-LABEL: cxt00:
8941 ; LINUX-32-PIC:       # %bb.0: # %entry
8942 ; LINUX-32-PIC-NEXT:    calll .L110$pb
8943 ; LINUX-32-PIC-NEXT:  .L110$pb:
8944 ; LINUX-32-PIC-NEXT:    popl %eax
8945 ; LINUX-32-PIC-NEXT:  .Ltmp110:
8946 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax
8947 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
8948 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %eax
8949 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
8950 ; LINUX-32-PIC-NEXT:    retl
8952 ; LINUX-64-PIC-LABEL: cxt00:
8953 ; LINUX-64-PIC:       # %bb.0: # %entry
8954 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
8955 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8956 ; LINUX-64-PIC-NEXT:    retq
8958 ; DARWIN-32-STATIC-LABEL: cxt00:
8959 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
8960 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8961 ; DARWIN-32-STATIC-NEXT:    leal _xsrc+64(,%eax,4), %eax
8962 ; DARWIN-32-STATIC-NEXT:    retl
8964 ; DARWIN-32-DYNAMIC-LABEL: cxt00:
8965 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
8966 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
8967 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
8968 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
8969 ; DARWIN-32-DYNAMIC-NEXT:    retl
8971 ; DARWIN-32-PIC-LABEL: cxt00:
8972 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
8973 ; DARWIN-32-PIC-NEXT:    calll L110$pb
8974 ; DARWIN-32-PIC-NEXT:  L110$pb:
8975 ; DARWIN-32-PIC-NEXT:    popl %eax
8976 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
8977 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax
8978 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
8979 ; DARWIN-32-PIC-NEXT:    retl
8981 ; DARWIN-64-STATIC-LABEL: cxt00:
8982 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
8983 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
8984 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8985 ; DARWIN-64-STATIC-NEXT:    retq
8987 ; DARWIN-64-DYNAMIC-LABEL: cxt00:
8988 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
8989 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
8990 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8991 ; DARWIN-64-DYNAMIC-NEXT:    retq
8993 ; DARWIN-64-PIC-LABEL: cxt00:
8994 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
8995 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
8996 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
8997 ; DARWIN-64-PIC-NEXT:    retq
8999 entry:
9000         %0 = add i64 %i, 16
9001         %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0
9002         ret ptr %1
9005 define dso_local ptr @cat01(i64 %i) nounwind {
9006 ; LINUX-64-STATIC-LABEL: cat01:
9007 ; LINUX-64-STATIC:       # %bb.0: # %entry
9008 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
9009 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9010 ; LINUX-64-STATIC-NEXT:    retq
9012 ; LINUX-32-STATIC-LABEL: cat01:
9013 ; LINUX-32-STATIC:       # %bb.0: # %entry
9014 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9015 ; LINUX-32-STATIC-NEXT:    leal dst+64(,%eax,4), %eax
9016 ; LINUX-32-STATIC-NEXT:    retl
9018 ; LINUX-32-PIC-LABEL: cat01:
9019 ; LINUX-32-PIC:       # %bb.0: # %entry
9020 ; LINUX-32-PIC-NEXT:    calll .L111$pb
9021 ; LINUX-32-PIC-NEXT:  .L111$pb:
9022 ; LINUX-32-PIC-NEXT:    popl %eax
9023 ; LINUX-32-PIC-NEXT:  .Ltmp111:
9024 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax
9025 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9026 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
9027 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9028 ; LINUX-32-PIC-NEXT:    retl
9030 ; LINUX-64-PIC-LABEL: cat01:
9031 ; LINUX-64-PIC:       # %bb.0: # %entry
9032 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
9033 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9034 ; LINUX-64-PIC-NEXT:    retq
9036 ; DARWIN-32-STATIC-LABEL: cat01:
9037 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9038 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9039 ; DARWIN-32-STATIC-NEXT:    leal _dst+64(,%eax,4), %eax
9040 ; DARWIN-32-STATIC-NEXT:    retl
9042 ; DARWIN-32-DYNAMIC-LABEL: cat01:
9043 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9044 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9045 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
9046 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9047 ; DARWIN-32-DYNAMIC-NEXT:    retl
9049 ; DARWIN-32-PIC-LABEL: cat01:
9050 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9051 ; DARWIN-32-PIC-NEXT:    calll L111$pb
9052 ; DARWIN-32-PIC-NEXT:  L111$pb:
9053 ; DARWIN-32-PIC-NEXT:    popl %eax
9054 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9055 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax
9056 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9057 ; DARWIN-32-PIC-NEXT:    retl
9059 ; DARWIN-64-STATIC-LABEL: cat01:
9060 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9061 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9062 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9063 ; DARWIN-64-STATIC-NEXT:    retq
9065 ; DARWIN-64-DYNAMIC-LABEL: cat01:
9066 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9067 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9068 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9069 ; DARWIN-64-DYNAMIC-NEXT:    retq
9071 ; DARWIN-64-PIC-LABEL: cat01:
9072 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9073 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9074 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9075 ; DARWIN-64-PIC-NEXT:    retq
9077 entry:
9078         %0 = add i64 %i, 16
9079         %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0
9080         ret ptr %1
9083 define dso_local ptr @cxt01(i64 %i) nounwind {
9084 ; LINUX-64-STATIC-LABEL: cxt01:
9085 ; LINUX-64-STATIC:       # %bb.0: # %entry
9086 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
9087 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9088 ; LINUX-64-STATIC-NEXT:    retq
9090 ; LINUX-32-STATIC-LABEL: cxt01:
9091 ; LINUX-32-STATIC:       # %bb.0: # %entry
9092 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9093 ; LINUX-32-STATIC-NEXT:    leal xdst+64(,%eax,4), %eax
9094 ; LINUX-32-STATIC-NEXT:    retl
9096 ; LINUX-32-PIC-LABEL: cxt01:
9097 ; LINUX-32-PIC:       # %bb.0: # %entry
9098 ; LINUX-32-PIC-NEXT:    calll .L112$pb
9099 ; LINUX-32-PIC-NEXT:  .L112$pb:
9100 ; LINUX-32-PIC-NEXT:    popl %eax
9101 ; LINUX-32-PIC-NEXT:  .Ltmp112:
9102 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax
9103 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9104 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
9105 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9106 ; LINUX-32-PIC-NEXT:    retl
9108 ; LINUX-64-PIC-LABEL: cxt01:
9109 ; LINUX-64-PIC:       # %bb.0: # %entry
9110 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
9111 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9112 ; LINUX-64-PIC-NEXT:    retq
9114 ; DARWIN-32-STATIC-LABEL: cxt01:
9115 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9116 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9117 ; DARWIN-32-STATIC-NEXT:    leal _xdst+64(,%eax,4), %eax
9118 ; DARWIN-32-STATIC-NEXT:    retl
9120 ; DARWIN-32-DYNAMIC-LABEL: cxt01:
9121 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9122 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9123 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %ecx
9124 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9125 ; DARWIN-32-DYNAMIC-NEXT:    retl
9127 ; DARWIN-32-PIC-LABEL: cxt01:
9128 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9129 ; DARWIN-32-PIC-NEXT:    calll L112$pb
9130 ; DARWIN-32-PIC-NEXT:  L112$pb:
9131 ; DARWIN-32-PIC-NEXT:    popl %eax
9132 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9133 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax
9134 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9135 ; DARWIN-32-PIC-NEXT:    retl
9137 ; DARWIN-64-STATIC-LABEL: cxt01:
9138 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9139 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
9140 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9141 ; DARWIN-64-STATIC-NEXT:    retq
9143 ; DARWIN-64-DYNAMIC-LABEL: cxt01:
9144 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9145 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
9146 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9147 ; DARWIN-64-DYNAMIC-NEXT:    retq
9149 ; DARWIN-64-PIC-LABEL: cxt01:
9150 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9151 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
9152 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9153 ; DARWIN-64-PIC-NEXT:    retq
9155 entry:
9156         %0 = add i64 %i, 16
9157         %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0
9158         ret ptr %1
9161 define dso_local ptr @cat02(i64 %i) nounwind {
9162 ; LINUX-64-STATIC-LABEL: cat02:
9163 ; LINUX-64-STATIC:       # %bb.0: # %entry
9164 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
9165 ; LINUX-64-STATIC-NEXT:    movq (%rax), %rax
9166 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9167 ; LINUX-64-STATIC-NEXT:    retq
9169 ; LINUX-32-STATIC-LABEL: cat02:
9170 ; LINUX-32-STATIC:       # %bb.0: # %entry
9171 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9172 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
9173 ; LINUX-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9174 ; LINUX-32-STATIC-NEXT:    retl
9176 ; LINUX-32-PIC-LABEL: cat02:
9177 ; LINUX-32-PIC:       # %bb.0: # %entry
9178 ; LINUX-32-PIC-NEXT:    calll .L113$pb
9179 ; LINUX-32-PIC-NEXT:  .L113$pb:
9180 ; LINUX-32-PIC-NEXT:    popl %eax
9181 ; LINUX-32-PIC-NEXT:  .Ltmp113:
9182 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax
9183 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
9184 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
9185 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9186 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9187 ; LINUX-32-PIC-NEXT:    retl
9189 ; LINUX-64-PIC-LABEL: cat02:
9190 ; LINUX-64-PIC:       # %bb.0: # %entry
9191 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
9192 ; LINUX-64-PIC-NEXT:    movq (%rax), %rax
9193 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9194 ; LINUX-64-PIC-NEXT:    retq
9196 ; DARWIN-32-STATIC-LABEL: cat02:
9197 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9198 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9199 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
9200 ; DARWIN-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9201 ; DARWIN-32-STATIC-NEXT:    retl
9203 ; DARWIN-32-DYNAMIC-LABEL: cat02:
9204 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9205 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %eax
9206 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
9207 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9208 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9209 ; DARWIN-32-DYNAMIC-NEXT:    retl
9211 ; DARWIN-32-PIC-LABEL: cat02:
9212 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9213 ; DARWIN-32-PIC-NEXT:    calll L113$pb
9214 ; DARWIN-32-PIC-NEXT:  L113$pb:
9215 ; DARWIN-32-PIC-NEXT:    popl %eax
9216 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax
9217 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
9218 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9219 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9220 ; DARWIN-32-PIC-NEXT:    retl
9222 ; DARWIN-64-STATIC-LABEL: cat02:
9223 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9224 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
9225 ; DARWIN-64-STATIC-NEXT:    movq (%rax), %rax
9226 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9227 ; DARWIN-64-STATIC-NEXT:    retq
9229 ; DARWIN-64-DYNAMIC-LABEL: cat02:
9230 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9231 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
9232 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rax), %rax
9233 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9234 ; DARWIN-64-DYNAMIC-NEXT:    retq
9236 ; DARWIN-64-PIC-LABEL: cat02:
9237 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9238 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
9239 ; DARWIN-64-PIC-NEXT:    movq (%rax), %rax
9240 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9241 ; DARWIN-64-PIC-NEXT:    retq
9243 entry:
9244         %0 = load ptr, ptr @ptr, align 8
9245         %1 = add i64 %i, 16
9246         %2 = getelementptr i32, ptr %0, i64 %1
9247         ret ptr %2
9250 define dso_local ptr @cat03(i64 %i) nounwind {
9251 ; LINUX-64-STATIC-LABEL: cat03:
9252 ; LINUX-64-STATIC:       # %bb.0: # %entry
9253 ; LINUX-64-STATIC-NEXT:    leaq dsrc+64(,%rdi,4), %rax
9254 ; LINUX-64-STATIC-NEXT:    retq
9256 ; LINUX-32-STATIC-LABEL: cat03:
9257 ; LINUX-32-STATIC:       # %bb.0: # %entry
9258 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9259 ; LINUX-32-STATIC-NEXT:    leal dsrc+64(,%eax,4), %eax
9260 ; LINUX-32-STATIC-NEXT:    retl
9262 ; LINUX-32-PIC-LABEL: cat03:
9263 ; LINUX-32-PIC:       # %bb.0: # %entry
9264 ; LINUX-32-PIC-NEXT:    calll .L114$pb
9265 ; LINUX-32-PIC-NEXT:  .L114$pb:
9266 ; LINUX-32-PIC-NEXT:    popl %eax
9267 ; LINUX-32-PIC-NEXT:  .Ltmp114:
9268 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax
9269 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9270 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %eax
9271 ; LINUX-32-PIC-NEXT:    retl
9273 ; LINUX-64-PIC-LABEL: cat03:
9274 ; LINUX-64-PIC:       # %bb.0: # %entry
9275 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
9276 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9277 ; LINUX-64-PIC-NEXT:    retq
9279 ; DARWIN-32-STATIC-LABEL: cat03:
9280 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9281 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9282 ; DARWIN-32-STATIC-NEXT:    leal _dsrc+64(,%eax,4), %eax
9283 ; DARWIN-32-STATIC-NEXT:    retl
9285 ; DARWIN-32-DYNAMIC-LABEL: cat03:
9286 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9287 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9288 ; DARWIN-32-DYNAMIC-NEXT:    leal _dsrc+64(,%eax,4), %eax
9289 ; DARWIN-32-DYNAMIC-NEXT:    retl
9291 ; DARWIN-32-PIC-LABEL: cat03:
9292 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9293 ; DARWIN-32-PIC-NEXT:    calll L114$pb
9294 ; DARWIN-32-PIC-NEXT:  L114$pb:
9295 ; DARWIN-32-PIC-NEXT:    popl %eax
9296 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9297 ; DARWIN-32-PIC-NEXT:    leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax
9298 ; DARWIN-32-PIC-NEXT:    retl
9300 ; DARWIN-64-STATIC-LABEL: cat03:
9301 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9302 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
9303 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9304 ; DARWIN-64-STATIC-NEXT:    retq
9306 ; DARWIN-64-DYNAMIC-LABEL: cat03:
9307 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9308 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
9309 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9310 ; DARWIN-64-DYNAMIC-NEXT:    retq
9312 ; DARWIN-64-PIC-LABEL: cat03:
9313 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9314 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
9315 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9316 ; DARWIN-64-PIC-NEXT:    retq
9318 entry:
9319         %0 = add i64 %i, 16
9320         %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0
9321         ret ptr %1
9324 define dso_local ptr @cat04(i64 %i) nounwind {
9325 ; LINUX-64-STATIC-LABEL: cat04:
9326 ; LINUX-64-STATIC:       # %bb.0: # %entry
9327 ; LINUX-64-STATIC-NEXT:    leaq ddst+64(,%rdi,4), %rax
9328 ; LINUX-64-STATIC-NEXT:    retq
9330 ; LINUX-32-STATIC-LABEL: cat04:
9331 ; LINUX-32-STATIC:       # %bb.0: # %entry
9332 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9333 ; LINUX-32-STATIC-NEXT:    leal ddst+64(,%eax,4), %eax
9334 ; LINUX-32-STATIC-NEXT:    retl
9336 ; LINUX-32-PIC-LABEL: cat04:
9337 ; LINUX-32-PIC:       # %bb.0: # %entry
9338 ; LINUX-32-PIC-NEXT:    calll .L115$pb
9339 ; LINUX-32-PIC-NEXT:  .L115$pb:
9340 ; LINUX-32-PIC-NEXT:    popl %eax
9341 ; LINUX-32-PIC-NEXT:  .Ltmp115:
9342 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax
9343 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9344 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %eax
9345 ; LINUX-32-PIC-NEXT:    retl
9347 ; LINUX-64-PIC-LABEL: cat04:
9348 ; LINUX-64-PIC:       # %bb.0: # %entry
9349 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
9350 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9351 ; LINUX-64-PIC-NEXT:    retq
9353 ; DARWIN-32-STATIC-LABEL: cat04:
9354 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9355 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9356 ; DARWIN-32-STATIC-NEXT:    leal _ddst+64(,%eax,4), %eax
9357 ; DARWIN-32-STATIC-NEXT:    retl
9359 ; DARWIN-32-DYNAMIC-LABEL: cat04:
9360 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9361 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9362 ; DARWIN-32-DYNAMIC-NEXT:    leal _ddst+64(,%eax,4), %eax
9363 ; DARWIN-32-DYNAMIC-NEXT:    retl
9365 ; DARWIN-32-PIC-LABEL: cat04:
9366 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9367 ; DARWIN-32-PIC-NEXT:    calll L115$pb
9368 ; DARWIN-32-PIC-NEXT:  L115$pb:
9369 ; DARWIN-32-PIC-NEXT:    popl %eax
9370 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9371 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax
9372 ; DARWIN-32-PIC-NEXT:    retl
9374 ; DARWIN-64-STATIC-LABEL: cat04:
9375 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9376 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
9377 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9378 ; DARWIN-64-STATIC-NEXT:    retq
9380 ; DARWIN-64-DYNAMIC-LABEL: cat04:
9381 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9382 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
9383 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9384 ; DARWIN-64-DYNAMIC-NEXT:    retq
9386 ; DARWIN-64-PIC-LABEL: cat04:
9387 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9388 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
9389 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9390 ; DARWIN-64-PIC-NEXT:    retq
9392 entry:
9393         %0 = add i64 %i, 16
9394         %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0
9395         ret ptr %1
9398 define dso_local ptr @cat05(i64 %i) nounwind {
9399 ; LINUX-64-STATIC-LABEL: cat05:
9400 ; LINUX-64-STATIC:       # %bb.0: # %entry
9401 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rax
9402 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9403 ; LINUX-64-STATIC-NEXT:    retq
9405 ; LINUX-32-STATIC-LABEL: cat05:
9406 ; LINUX-32-STATIC:       # %bb.0: # %entry
9407 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9408 ; LINUX-32-STATIC-NEXT:    movl dptr, %ecx
9409 ; LINUX-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9410 ; LINUX-32-STATIC-NEXT:    retl
9412 ; LINUX-32-PIC-LABEL: cat05:
9413 ; LINUX-32-PIC:       # %bb.0: # %entry
9414 ; LINUX-32-PIC-NEXT:    calll .L116$pb
9415 ; LINUX-32-PIC-NEXT:  .L116$pb:
9416 ; LINUX-32-PIC-NEXT:    popl %eax
9417 ; LINUX-32-PIC-NEXT:  .Ltmp116:
9418 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax
9419 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9420 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
9421 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9422 ; LINUX-32-PIC-NEXT:    retl
9424 ; LINUX-64-PIC-LABEL: cat05:
9425 ; LINUX-64-PIC:       # %bb.0: # %entry
9426 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rax
9427 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9428 ; LINUX-64-PIC-NEXT:    retq
9430 ; DARWIN-32-STATIC-LABEL: cat05:
9431 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9432 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9433 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %ecx
9434 ; DARWIN-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9435 ; DARWIN-32-STATIC-NEXT:    retl
9437 ; DARWIN-32-DYNAMIC-LABEL: cat05:
9438 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9439 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9440 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %ecx
9441 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9442 ; DARWIN-32-DYNAMIC-NEXT:    retl
9444 ; DARWIN-32-PIC-LABEL: cat05:
9445 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9446 ; DARWIN-32-PIC-NEXT:    calll L116$pb
9447 ; DARWIN-32-PIC-NEXT:  L116$pb:
9448 ; DARWIN-32-PIC-NEXT:    popl %eax
9449 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9450 ; DARWIN-32-PIC-NEXT:    movl _dptr-L116$pb(%eax), %eax
9451 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9452 ; DARWIN-32-PIC-NEXT:    retl
9454 ; DARWIN-64-STATIC-LABEL: cat05:
9455 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9456 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rax
9457 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9458 ; DARWIN-64-STATIC-NEXT:    retq
9460 ; DARWIN-64-DYNAMIC-LABEL: cat05:
9461 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9462 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rax
9463 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9464 ; DARWIN-64-DYNAMIC-NEXT:    retq
9466 ; DARWIN-64-PIC-LABEL: cat05:
9467 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9468 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rax
9469 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9470 ; DARWIN-64-PIC-NEXT:    retq
9472 entry:
9473         %0 = load ptr, ptr @dptr, align 8
9474         %1 = add i64 %i, 16
9475         %2 = getelementptr i32, ptr %0, i64 %1
9476         ret ptr %2
9479 define dso_local ptr @cat06(i64 %i) nounwind {
9480 ; LINUX-64-STATIC-LABEL: cat06:
9481 ; LINUX-64-STATIC:       # %bb.0: # %entry
9482 ; LINUX-64-STATIC-NEXT:    leaq lsrc+64(,%rdi,4), %rax
9483 ; LINUX-64-STATIC-NEXT:    retq
9485 ; LINUX-32-STATIC-LABEL: cat06:
9486 ; LINUX-32-STATIC:       # %bb.0: # %entry
9487 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9488 ; LINUX-32-STATIC-NEXT:    leal lsrc+64(,%eax,4), %eax
9489 ; LINUX-32-STATIC-NEXT:    retl
9491 ; LINUX-32-PIC-LABEL: cat06:
9492 ; LINUX-32-PIC:       # %bb.0: # %entry
9493 ; LINUX-32-PIC-NEXT:    calll .L117$pb
9494 ; LINUX-32-PIC-NEXT:  .L117$pb:
9495 ; LINUX-32-PIC-NEXT:    popl %eax
9496 ; LINUX-32-PIC-NEXT:  .Ltmp117:
9497 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax
9498 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9499 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax
9500 ; LINUX-32-PIC-NEXT:    retl
9502 ; LINUX-64-PIC-LABEL: cat06:
9503 ; LINUX-64-PIC:       # %bb.0: # %entry
9504 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
9505 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9506 ; LINUX-64-PIC-NEXT:    retq
9508 ; DARWIN-32-STATIC-LABEL: cat06:
9509 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9510 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9511 ; DARWIN-32-STATIC-NEXT:    leal _lsrc+64(,%eax,4), %eax
9512 ; DARWIN-32-STATIC-NEXT:    retl
9514 ; DARWIN-32-DYNAMIC-LABEL: cat06:
9515 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9516 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9517 ; DARWIN-32-DYNAMIC-NEXT:    leal _lsrc+64(,%eax,4), %eax
9518 ; DARWIN-32-DYNAMIC-NEXT:    retl
9520 ; DARWIN-32-PIC-LABEL: cat06:
9521 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9522 ; DARWIN-32-PIC-NEXT:    calll L117$pb
9523 ; DARWIN-32-PIC-NEXT:  L117$pb:
9524 ; DARWIN-32-PIC-NEXT:    popl %eax
9525 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9526 ; DARWIN-32-PIC-NEXT:    leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax
9527 ; DARWIN-32-PIC-NEXT:    retl
9529 ; DARWIN-64-STATIC-LABEL: cat06:
9530 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9531 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
9532 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9533 ; DARWIN-64-STATIC-NEXT:    retq
9535 ; DARWIN-64-DYNAMIC-LABEL: cat06:
9536 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9537 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
9538 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9539 ; DARWIN-64-DYNAMIC-NEXT:    retq
9541 ; DARWIN-64-PIC-LABEL: cat06:
9542 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9543 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
9544 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9545 ; DARWIN-64-PIC-NEXT:    retq
9547 entry:
9548         %0 = add i64 %i, 16
9549         %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0
9550         ret ptr %1
9553 define dso_local ptr @cat07(i64 %i) nounwind {
9554 ; LINUX-64-STATIC-LABEL: cat07:
9555 ; LINUX-64-STATIC:       # %bb.0: # %entry
9556 ; LINUX-64-STATIC-NEXT:    leaq ldst+64(,%rdi,4), %rax
9557 ; LINUX-64-STATIC-NEXT:    retq
9559 ; LINUX-32-STATIC-LABEL: cat07:
9560 ; LINUX-32-STATIC:       # %bb.0: # %entry
9561 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9562 ; LINUX-32-STATIC-NEXT:    leal ldst+64(,%eax,4), %eax
9563 ; LINUX-32-STATIC-NEXT:    retl
9565 ; LINUX-32-PIC-LABEL: cat07:
9566 ; LINUX-32-PIC:       # %bb.0: # %entry
9567 ; LINUX-32-PIC-NEXT:    calll .L118$pb
9568 ; LINUX-32-PIC-NEXT:  .L118$pb:
9569 ; LINUX-32-PIC-NEXT:    popl %eax
9570 ; LINUX-32-PIC-NEXT:  .Ltmp118:
9571 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax
9572 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9573 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+64(%eax,%ecx,4), %eax
9574 ; LINUX-32-PIC-NEXT:    retl
9576 ; LINUX-64-PIC-LABEL: cat07:
9577 ; LINUX-64-PIC:       # %bb.0: # %entry
9578 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
9579 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9580 ; LINUX-64-PIC-NEXT:    retq
9582 ; DARWIN-32-STATIC-LABEL: cat07:
9583 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9584 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9585 ; DARWIN-32-STATIC-NEXT:    leal _ldst+64(,%eax,4), %eax
9586 ; DARWIN-32-STATIC-NEXT:    retl
9588 ; DARWIN-32-DYNAMIC-LABEL: cat07:
9589 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9590 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9591 ; DARWIN-32-DYNAMIC-NEXT:    leal _ldst+64(,%eax,4), %eax
9592 ; DARWIN-32-DYNAMIC-NEXT:    retl
9594 ; DARWIN-32-PIC-LABEL: cat07:
9595 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9596 ; DARWIN-32-PIC-NEXT:    calll L118$pb
9597 ; DARWIN-32-PIC-NEXT:  L118$pb:
9598 ; DARWIN-32-PIC-NEXT:    popl %eax
9599 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9600 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax
9601 ; DARWIN-32-PIC-NEXT:    retl
9603 ; DARWIN-64-STATIC-LABEL: cat07:
9604 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9605 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
9606 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9607 ; DARWIN-64-STATIC-NEXT:    retq
9609 ; DARWIN-64-DYNAMIC-LABEL: cat07:
9610 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9611 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
9612 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9613 ; DARWIN-64-DYNAMIC-NEXT:    retq
9615 ; DARWIN-64-PIC-LABEL: cat07:
9616 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9617 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
9618 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9619 ; DARWIN-64-PIC-NEXT:    retq
9621 entry:
9622         %0 = add i64 %i, 16
9623         %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0
9624         ret ptr %1
9627 define dso_local ptr @cat08(i64 %i) nounwind {
9628 ; LINUX-64-STATIC-LABEL: cat08:
9629 ; LINUX-64-STATIC:       # %bb.0: # %entry
9630 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rax
9631 ; LINUX-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9632 ; LINUX-64-STATIC-NEXT:    retq
9634 ; LINUX-32-STATIC-LABEL: cat08:
9635 ; LINUX-32-STATIC:       # %bb.0: # %entry
9636 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9637 ; LINUX-32-STATIC-NEXT:    movl lptr, %ecx
9638 ; LINUX-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9639 ; LINUX-32-STATIC-NEXT:    retl
9641 ; LINUX-32-PIC-LABEL: cat08:
9642 ; LINUX-32-PIC:       # %bb.0: # %entry
9643 ; LINUX-32-PIC-NEXT:    calll .L119$pb
9644 ; LINUX-32-PIC-NEXT:  .L119$pb:
9645 ; LINUX-32-PIC-NEXT:    popl %eax
9646 ; LINUX-32-PIC-NEXT:  .Ltmp119:
9647 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax
9648 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9649 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
9650 ; LINUX-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9651 ; LINUX-32-PIC-NEXT:    retl
9653 ; LINUX-64-PIC-LABEL: cat08:
9654 ; LINUX-64-PIC:       # %bb.0: # %entry
9655 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rax
9656 ; LINUX-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9657 ; LINUX-64-PIC-NEXT:    retq
9659 ; DARWIN-32-STATIC-LABEL: cat08:
9660 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9661 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9662 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %ecx
9663 ; DARWIN-32-STATIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9664 ; DARWIN-32-STATIC-NEXT:    retl
9666 ; DARWIN-32-DYNAMIC-LABEL: cat08:
9667 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9668 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9669 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %ecx
9670 ; DARWIN-32-DYNAMIC-NEXT:    leal 64(%ecx,%eax,4), %eax
9671 ; DARWIN-32-DYNAMIC-NEXT:    retl
9673 ; DARWIN-32-PIC-LABEL: cat08:
9674 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9675 ; DARWIN-32-PIC-NEXT:    calll L119$pb
9676 ; DARWIN-32-PIC-NEXT:  L119$pb:
9677 ; DARWIN-32-PIC-NEXT:    popl %eax
9678 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9679 ; DARWIN-32-PIC-NEXT:    movl _lptr-L119$pb(%eax), %eax
9680 ; DARWIN-32-PIC-NEXT:    leal 64(%eax,%ecx,4), %eax
9681 ; DARWIN-32-PIC-NEXT:    retl
9683 ; DARWIN-64-STATIC-LABEL: cat08:
9684 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9685 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rax
9686 ; DARWIN-64-STATIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9687 ; DARWIN-64-STATIC-NEXT:    retq
9689 ; DARWIN-64-DYNAMIC-LABEL: cat08:
9690 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9691 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rax
9692 ; DARWIN-64-DYNAMIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9693 ; DARWIN-64-DYNAMIC-NEXT:    retq
9695 ; DARWIN-64-PIC-LABEL: cat08:
9696 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9697 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rax
9698 ; DARWIN-64-PIC-NEXT:    leaq 64(%rax,%rdi,4), %rax
9699 ; DARWIN-64-PIC-NEXT:    retq
9701 entry:
9702         %0 = load ptr, ptr @lptr, align 8
9703         %1 = add i64 %i, 16
9704         %2 = getelementptr i32, ptr %0, i64 %1
9705         ret ptr %2
9708 define dso_local ptr @cam00(i64 %i) nounwind {
9709 ; LINUX-64-STATIC-LABEL: cam00:
9710 ; LINUX-64-STATIC:       # %bb.0: # %entry
9711 ; LINUX-64-STATIC-NEXT:    movq src@GOTPCREL(%rip), %rax
9712 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9713 ; LINUX-64-STATIC-NEXT:    retq
9715 ; LINUX-32-STATIC-LABEL: cam00:
9716 ; LINUX-32-STATIC:       # %bb.0: # %entry
9717 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9718 ; LINUX-32-STATIC-NEXT:    leal src+262144(,%eax,4), %eax
9719 ; LINUX-32-STATIC-NEXT:    retl
9721 ; LINUX-32-PIC-LABEL: cam00:
9722 ; LINUX-32-PIC:       # %bb.0: # %entry
9723 ; LINUX-32-PIC-NEXT:    calll .L120$pb
9724 ; LINUX-32-PIC-NEXT:  .L120$pb:
9725 ; LINUX-32-PIC-NEXT:    popl %eax
9726 ; LINUX-32-PIC-NEXT:  .Ltmp120:
9727 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax
9728 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9729 ; LINUX-32-PIC-NEXT:    movl src@GOT(%eax), %eax
9730 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9731 ; LINUX-32-PIC-NEXT:    retl
9733 ; LINUX-64-PIC-LABEL: cam00:
9734 ; LINUX-64-PIC:       # %bb.0: # %entry
9735 ; LINUX-64-PIC-NEXT:    movq src@GOTPCREL(%rip), %rax
9736 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9737 ; LINUX-64-PIC-NEXT:    retq
9739 ; DARWIN-32-STATIC-LABEL: cam00:
9740 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9741 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9742 ; DARWIN-32-STATIC-NEXT:    leal _src+262144(,%eax,4), %eax
9743 ; DARWIN-32-STATIC-NEXT:    retl
9745 ; DARWIN-32-DYNAMIC-LABEL: cam00:
9746 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9747 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9748 ; DARWIN-32-DYNAMIC-NEXT:    movl L_src$non_lazy_ptr, %ecx
9749 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
9750 ; DARWIN-32-DYNAMIC-NEXT:    retl
9752 ; DARWIN-32-PIC-LABEL: cam00:
9753 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9754 ; DARWIN-32-PIC-NEXT:    calll L120$pb
9755 ; DARWIN-32-PIC-NEXT:  L120$pb:
9756 ; DARWIN-32-PIC-NEXT:    popl %eax
9757 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9758 ; DARWIN-32-PIC-NEXT:    movl L_src$non_lazy_ptr-L120$pb(%eax), %eax
9759 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9760 ; DARWIN-32-PIC-NEXT:    retl
9762 ; DARWIN-64-STATIC-LABEL: cam00:
9763 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9764 ; DARWIN-64-STATIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
9765 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9766 ; DARWIN-64-STATIC-NEXT:    retq
9768 ; DARWIN-64-DYNAMIC-LABEL: cam00:
9769 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9770 ; DARWIN-64-DYNAMIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
9771 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9772 ; DARWIN-64-DYNAMIC-NEXT:    retq
9774 ; DARWIN-64-PIC-LABEL: cam00:
9775 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9776 ; DARWIN-64-PIC-NEXT:    movq _src@GOTPCREL(%rip), %rax
9777 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9778 ; DARWIN-64-PIC-NEXT:    retq
9780 entry:
9781         %0 = add i64 %i, 65536
9782         %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0
9783         ret ptr %1
9786 define dso_local ptr @cxm00(i64 %i) nounwind {
9787 ; LINUX-64-STATIC-LABEL: cxm00:
9788 ; LINUX-64-STATIC:       # %bb.0: # %entry
9789 ; LINUX-64-STATIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
9790 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9791 ; LINUX-64-STATIC-NEXT:    retq
9793 ; LINUX-32-STATIC-LABEL: cxm00:
9794 ; LINUX-32-STATIC:       # %bb.0: # %entry
9795 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9796 ; LINUX-32-STATIC-NEXT:    leal xsrc+262144(,%eax,4), %eax
9797 ; LINUX-32-STATIC-NEXT:    retl
9799 ; LINUX-32-PIC-LABEL: cxm00:
9800 ; LINUX-32-PIC:       # %bb.0: # %entry
9801 ; LINUX-32-PIC-NEXT:    calll .L121$pb
9802 ; LINUX-32-PIC-NEXT:  .L121$pb:
9803 ; LINUX-32-PIC-NEXT:    popl %eax
9804 ; LINUX-32-PIC-NEXT:  .Ltmp121:
9805 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax
9806 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9807 ; LINUX-32-PIC-NEXT:    movl xsrc@GOT(%eax), %eax
9808 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9809 ; LINUX-32-PIC-NEXT:    retl
9811 ; LINUX-64-PIC-LABEL: cxm00:
9812 ; LINUX-64-PIC:       # %bb.0: # %entry
9813 ; LINUX-64-PIC-NEXT:    movq xsrc@GOTPCREL(%rip), %rax
9814 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9815 ; LINUX-64-PIC-NEXT:    retq
9817 ; DARWIN-32-STATIC-LABEL: cxm00:
9818 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9819 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9820 ; DARWIN-32-STATIC-NEXT:    leal _xsrc+262144(,%eax,4), %eax
9821 ; DARWIN-32-STATIC-NEXT:    retl
9823 ; DARWIN-32-DYNAMIC-LABEL: cxm00:
9824 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9825 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9826 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xsrc$non_lazy_ptr, %ecx
9827 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
9828 ; DARWIN-32-DYNAMIC-NEXT:    retl
9830 ; DARWIN-32-PIC-LABEL: cxm00:
9831 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9832 ; DARWIN-32-PIC-NEXT:    calll L121$pb
9833 ; DARWIN-32-PIC-NEXT:  L121$pb:
9834 ; DARWIN-32-PIC-NEXT:    popl %eax
9835 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9836 ; DARWIN-32-PIC-NEXT:    movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax
9837 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9838 ; DARWIN-32-PIC-NEXT:    retl
9840 ; DARWIN-64-STATIC-LABEL: cxm00:
9841 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9842 ; DARWIN-64-STATIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
9843 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9844 ; DARWIN-64-STATIC-NEXT:    retq
9846 ; DARWIN-64-DYNAMIC-LABEL: cxm00:
9847 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9848 ; DARWIN-64-DYNAMIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
9849 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9850 ; DARWIN-64-DYNAMIC-NEXT:    retq
9852 ; DARWIN-64-PIC-LABEL: cxm00:
9853 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9854 ; DARWIN-64-PIC-NEXT:    movq _xsrc@GOTPCREL(%rip), %rax
9855 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9856 ; DARWIN-64-PIC-NEXT:    retq
9858 entry:
9859         %0 = add i64 %i, 65536
9860         %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0
9861         ret ptr %1
9864 define dso_local ptr @cam01(i64 %i) nounwind {
9865 ; LINUX-64-STATIC-LABEL: cam01:
9866 ; LINUX-64-STATIC:       # %bb.0: # %entry
9867 ; LINUX-64-STATIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
9868 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9869 ; LINUX-64-STATIC-NEXT:    retq
9871 ; LINUX-32-STATIC-LABEL: cam01:
9872 ; LINUX-32-STATIC:       # %bb.0: # %entry
9873 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9874 ; LINUX-32-STATIC-NEXT:    leal dst+262144(,%eax,4), %eax
9875 ; LINUX-32-STATIC-NEXT:    retl
9877 ; LINUX-32-PIC-LABEL: cam01:
9878 ; LINUX-32-PIC:       # %bb.0: # %entry
9879 ; LINUX-32-PIC-NEXT:    calll .L122$pb
9880 ; LINUX-32-PIC-NEXT:  .L122$pb:
9881 ; LINUX-32-PIC-NEXT:    popl %eax
9882 ; LINUX-32-PIC-NEXT:  .Ltmp122:
9883 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax
9884 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9885 ; LINUX-32-PIC-NEXT:    movl dst@GOT(%eax), %eax
9886 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9887 ; LINUX-32-PIC-NEXT:    retl
9889 ; LINUX-64-PIC-LABEL: cam01:
9890 ; LINUX-64-PIC:       # %bb.0: # %entry
9891 ; LINUX-64-PIC-NEXT:    movq dst@GOTPCREL(%rip), %rax
9892 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9893 ; LINUX-64-PIC-NEXT:    retq
9895 ; DARWIN-32-STATIC-LABEL: cam01:
9896 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9897 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9898 ; DARWIN-32-STATIC-NEXT:    leal _dst+262144(,%eax,4), %eax
9899 ; DARWIN-32-STATIC-NEXT:    retl
9901 ; DARWIN-32-DYNAMIC-LABEL: cam01:
9902 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9903 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9904 ; DARWIN-32-DYNAMIC-NEXT:    movl L_dst$non_lazy_ptr, %ecx
9905 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
9906 ; DARWIN-32-DYNAMIC-NEXT:    retl
9908 ; DARWIN-32-PIC-LABEL: cam01:
9909 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9910 ; DARWIN-32-PIC-NEXT:    calll L122$pb
9911 ; DARWIN-32-PIC-NEXT:  L122$pb:
9912 ; DARWIN-32-PIC-NEXT:    popl %eax
9913 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9914 ; DARWIN-32-PIC-NEXT:    movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax
9915 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9916 ; DARWIN-32-PIC-NEXT:    retl
9918 ; DARWIN-64-STATIC-LABEL: cam01:
9919 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9920 ; DARWIN-64-STATIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9921 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9922 ; DARWIN-64-STATIC-NEXT:    retq
9924 ; DARWIN-64-DYNAMIC-LABEL: cam01:
9925 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
9926 ; DARWIN-64-DYNAMIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9927 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9928 ; DARWIN-64-DYNAMIC-NEXT:    retq
9930 ; DARWIN-64-PIC-LABEL: cam01:
9931 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
9932 ; DARWIN-64-PIC-NEXT:    movq _dst@GOTPCREL(%rip), %rax
9933 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9934 ; DARWIN-64-PIC-NEXT:    retq
9936 entry:
9937         %0 = add i64 %i, 65536
9938         %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0
9939         ret ptr %1
9942 define dso_local ptr @cxm01(i64 %i) nounwind {
9943 ; LINUX-64-STATIC-LABEL: cxm01:
9944 ; LINUX-64-STATIC:       # %bb.0: # %entry
9945 ; LINUX-64-STATIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
9946 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9947 ; LINUX-64-STATIC-NEXT:    retq
9949 ; LINUX-32-STATIC-LABEL: cxm01:
9950 ; LINUX-32-STATIC:       # %bb.0: # %entry
9951 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9952 ; LINUX-32-STATIC-NEXT:    leal xdst+262144(,%eax,4), %eax
9953 ; LINUX-32-STATIC-NEXT:    retl
9955 ; LINUX-32-PIC-LABEL: cxm01:
9956 ; LINUX-32-PIC:       # %bb.0: # %entry
9957 ; LINUX-32-PIC-NEXT:    calll .L123$pb
9958 ; LINUX-32-PIC-NEXT:  .L123$pb:
9959 ; LINUX-32-PIC-NEXT:    popl %eax
9960 ; LINUX-32-PIC-NEXT:  .Ltmp123:
9961 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax
9962 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9963 ; LINUX-32-PIC-NEXT:    movl xdst@GOT(%eax), %eax
9964 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9965 ; LINUX-32-PIC-NEXT:    retl
9967 ; LINUX-64-PIC-LABEL: cxm01:
9968 ; LINUX-64-PIC:       # %bb.0: # %entry
9969 ; LINUX-64-PIC-NEXT:    movq xdst@GOTPCREL(%rip), %rax
9970 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
9971 ; LINUX-64-PIC-NEXT:    retq
9973 ; DARWIN-32-STATIC-LABEL: cxm01:
9974 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
9975 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9976 ; DARWIN-32-STATIC-NEXT:    leal _xdst+262144(,%eax,4), %eax
9977 ; DARWIN-32-STATIC-NEXT:    retl
9979 ; DARWIN-32-DYNAMIC-LABEL: cxm01:
9980 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
9981 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
9982 ; DARWIN-32-DYNAMIC-NEXT:    movl L_xdst$non_lazy_ptr, %ecx
9983 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
9984 ; DARWIN-32-DYNAMIC-NEXT:    retl
9986 ; DARWIN-32-PIC-LABEL: cxm01:
9987 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
9988 ; DARWIN-32-PIC-NEXT:    calll L123$pb
9989 ; DARWIN-32-PIC-NEXT:  L123$pb:
9990 ; DARWIN-32-PIC-NEXT:    popl %eax
9991 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
9992 ; DARWIN-32-PIC-NEXT:    movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax
9993 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
9994 ; DARWIN-32-PIC-NEXT:    retl
9996 ; DARWIN-64-STATIC-LABEL: cxm01:
9997 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
9998 ; DARWIN-64-STATIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
9999 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10000 ; DARWIN-64-STATIC-NEXT:    retq
10002 ; DARWIN-64-DYNAMIC-LABEL: cxm01:
10003 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10004 ; DARWIN-64-DYNAMIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
10005 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10006 ; DARWIN-64-DYNAMIC-NEXT:    retq
10008 ; DARWIN-64-PIC-LABEL: cxm01:
10009 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10010 ; DARWIN-64-PIC-NEXT:    movq _xdst@GOTPCREL(%rip), %rax
10011 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10012 ; DARWIN-64-PIC-NEXT:    retq
10014 entry:
10015         %0 = add i64 %i, 65536
10016         %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0
10017         ret ptr %1
10020 define dso_local ptr @cam02(i64 %i) nounwind {
10021 ; LINUX-64-STATIC-LABEL: cam02:
10022 ; LINUX-64-STATIC:       # %bb.0: # %entry
10023 ; LINUX-64-STATIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
10024 ; LINUX-64-STATIC-NEXT:    movq (%rax), %rax
10025 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10026 ; LINUX-64-STATIC-NEXT:    retq
10028 ; LINUX-32-STATIC-LABEL: cam02:
10029 ; LINUX-32-STATIC:       # %bb.0: # %entry
10030 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10031 ; LINUX-32-STATIC-NEXT:    movl ptr, %ecx
10032 ; LINUX-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10033 ; LINUX-32-STATIC-NEXT:    retl
10035 ; LINUX-32-PIC-LABEL: cam02:
10036 ; LINUX-32-PIC:       # %bb.0: # %entry
10037 ; LINUX-32-PIC-NEXT:    calll .L124$pb
10038 ; LINUX-32-PIC-NEXT:  .L124$pb:
10039 ; LINUX-32-PIC-NEXT:    popl %eax
10040 ; LINUX-32-PIC-NEXT:  .Ltmp124:
10041 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax
10042 ; LINUX-32-PIC-NEXT:    movl ptr@GOT(%eax), %eax
10043 ; LINUX-32-PIC-NEXT:    movl (%eax), %eax
10044 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10045 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10046 ; LINUX-32-PIC-NEXT:    retl
10048 ; LINUX-64-PIC-LABEL: cam02:
10049 ; LINUX-64-PIC:       # %bb.0: # %entry
10050 ; LINUX-64-PIC-NEXT:    movq ptr@GOTPCREL(%rip), %rax
10051 ; LINUX-64-PIC-NEXT:    movq (%rax), %rax
10052 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10053 ; LINUX-64-PIC-NEXT:    retq
10055 ; DARWIN-32-STATIC-LABEL: cam02:
10056 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10057 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10058 ; DARWIN-32-STATIC-NEXT:    movl _ptr, %ecx
10059 ; DARWIN-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10060 ; DARWIN-32-STATIC-NEXT:    retl
10062 ; DARWIN-32-DYNAMIC-LABEL: cam02:
10063 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10064 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ptr$non_lazy_ptr, %eax
10065 ; DARWIN-32-DYNAMIC-NEXT:    movl (%eax), %eax
10066 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10067 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10068 ; DARWIN-32-DYNAMIC-NEXT:    retl
10070 ; DARWIN-32-PIC-LABEL: cam02:
10071 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10072 ; DARWIN-32-PIC-NEXT:    calll L124$pb
10073 ; DARWIN-32-PIC-NEXT:  L124$pb:
10074 ; DARWIN-32-PIC-NEXT:    popl %eax
10075 ; DARWIN-32-PIC-NEXT:    movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax
10076 ; DARWIN-32-PIC-NEXT:    movl (%eax), %eax
10077 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10078 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10079 ; DARWIN-32-PIC-NEXT:    retl
10081 ; DARWIN-64-STATIC-LABEL: cam02:
10082 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10083 ; DARWIN-64-STATIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
10084 ; DARWIN-64-STATIC-NEXT:    movq (%rax), %rax
10085 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10086 ; DARWIN-64-STATIC-NEXT:    retq
10088 ; DARWIN-64-DYNAMIC-LABEL: cam02:
10089 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10090 ; DARWIN-64-DYNAMIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
10091 ; DARWIN-64-DYNAMIC-NEXT:    movq (%rax), %rax
10092 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10093 ; DARWIN-64-DYNAMIC-NEXT:    retq
10095 ; DARWIN-64-PIC-LABEL: cam02:
10096 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10097 ; DARWIN-64-PIC-NEXT:    movq _ptr@GOTPCREL(%rip), %rax
10098 ; DARWIN-64-PIC-NEXT:    movq (%rax), %rax
10099 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10100 ; DARWIN-64-PIC-NEXT:    retq
10102 entry:
10103         %0 = load ptr, ptr @ptr, align 8
10104         %1 = add i64 %i, 65536
10105         %2 = getelementptr i32, ptr %0, i64 %1
10106         ret ptr %2
10109 define dso_local ptr @cam03(i64 %i) nounwind {
10110 ; LINUX-64-STATIC-LABEL: cam03:
10111 ; LINUX-64-STATIC:       # %bb.0: # %entry
10112 ; LINUX-64-STATIC-NEXT:    leaq dsrc+262144(,%rdi,4), %rax
10113 ; LINUX-64-STATIC-NEXT:    retq
10115 ; LINUX-32-STATIC-LABEL: cam03:
10116 ; LINUX-32-STATIC:       # %bb.0: # %entry
10117 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10118 ; LINUX-32-STATIC-NEXT:    leal dsrc+262144(,%eax,4), %eax
10119 ; LINUX-32-STATIC-NEXT:    retl
10121 ; LINUX-32-PIC-LABEL: cam03:
10122 ; LINUX-32-PIC:       # %bb.0: # %entry
10123 ; LINUX-32-PIC-NEXT:    calll .L125$pb
10124 ; LINUX-32-PIC-NEXT:  .L125$pb:
10125 ; LINUX-32-PIC-NEXT:    popl %eax
10126 ; LINUX-32-PIC-NEXT:  .Ltmp125:
10127 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax
10128 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10129 ; LINUX-32-PIC-NEXT:    leal .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %eax
10130 ; LINUX-32-PIC-NEXT:    retl
10132 ; LINUX-64-PIC-LABEL: cam03:
10133 ; LINUX-64-PIC:       # %bb.0: # %entry
10134 ; LINUX-64-PIC-NEXT:    leaq .Ldsrc$local(%rip), %rax
10135 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10136 ; LINUX-64-PIC-NEXT:    retq
10138 ; DARWIN-32-STATIC-LABEL: cam03:
10139 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10140 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10141 ; DARWIN-32-STATIC-NEXT:    leal _dsrc+262144(,%eax,4), %eax
10142 ; DARWIN-32-STATIC-NEXT:    retl
10144 ; DARWIN-32-DYNAMIC-LABEL: cam03:
10145 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10146 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10147 ; DARWIN-32-DYNAMIC-NEXT:    leal _dsrc+262144(,%eax,4), %eax
10148 ; DARWIN-32-DYNAMIC-NEXT:    retl
10150 ; DARWIN-32-PIC-LABEL: cam03:
10151 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10152 ; DARWIN-32-PIC-NEXT:    calll L125$pb
10153 ; DARWIN-32-PIC-NEXT:  L125$pb:
10154 ; DARWIN-32-PIC-NEXT:    popl %eax
10155 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10156 ; DARWIN-32-PIC-NEXT:    leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax
10157 ; DARWIN-32-PIC-NEXT:    retl
10159 ; DARWIN-64-STATIC-LABEL: cam03:
10160 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10161 ; DARWIN-64-STATIC-NEXT:    leaq _dsrc(%rip), %rax
10162 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10163 ; DARWIN-64-STATIC-NEXT:    retq
10165 ; DARWIN-64-DYNAMIC-LABEL: cam03:
10166 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10167 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dsrc(%rip), %rax
10168 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10169 ; DARWIN-64-DYNAMIC-NEXT:    retq
10171 ; DARWIN-64-PIC-LABEL: cam03:
10172 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10173 ; DARWIN-64-PIC-NEXT:    leaq _dsrc(%rip), %rax
10174 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10175 ; DARWIN-64-PIC-NEXT:    retq
10177 entry:
10178         %0 = add i64 %i, 65536
10179         %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0
10180         ret ptr %1
10183 define dso_local ptr @cam04(i64 %i) nounwind {
10184 ; LINUX-64-STATIC-LABEL: cam04:
10185 ; LINUX-64-STATIC:       # %bb.0: # %entry
10186 ; LINUX-64-STATIC-NEXT:    leaq ddst+262144(,%rdi,4), %rax
10187 ; LINUX-64-STATIC-NEXT:    retq
10189 ; LINUX-32-STATIC-LABEL: cam04:
10190 ; LINUX-32-STATIC:       # %bb.0: # %entry
10191 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10192 ; LINUX-32-STATIC-NEXT:    leal ddst+262144(,%eax,4), %eax
10193 ; LINUX-32-STATIC-NEXT:    retl
10195 ; LINUX-32-PIC-LABEL: cam04:
10196 ; LINUX-32-PIC:       # %bb.0: # %entry
10197 ; LINUX-32-PIC-NEXT:    calll .L126$pb
10198 ; LINUX-32-PIC-NEXT:  .L126$pb:
10199 ; LINUX-32-PIC-NEXT:    popl %eax
10200 ; LINUX-32-PIC-NEXT:  .Ltmp126:
10201 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax
10202 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10203 ; LINUX-32-PIC-NEXT:    leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %eax
10204 ; LINUX-32-PIC-NEXT:    retl
10206 ; LINUX-64-PIC-LABEL: cam04:
10207 ; LINUX-64-PIC:       # %bb.0: # %entry
10208 ; LINUX-64-PIC-NEXT:    leaq .Lddst$local(%rip), %rax
10209 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10210 ; LINUX-64-PIC-NEXT:    retq
10212 ; DARWIN-32-STATIC-LABEL: cam04:
10213 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10214 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10215 ; DARWIN-32-STATIC-NEXT:    leal _ddst+262144(,%eax,4), %eax
10216 ; DARWIN-32-STATIC-NEXT:    retl
10218 ; DARWIN-32-DYNAMIC-LABEL: cam04:
10219 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10220 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10221 ; DARWIN-32-DYNAMIC-NEXT:    leal _ddst+262144(,%eax,4), %eax
10222 ; DARWIN-32-DYNAMIC-NEXT:    retl
10224 ; DARWIN-32-PIC-LABEL: cam04:
10225 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10226 ; DARWIN-32-PIC-NEXT:    calll L126$pb
10227 ; DARWIN-32-PIC-NEXT:  L126$pb:
10228 ; DARWIN-32-PIC-NEXT:    popl %eax
10229 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10230 ; DARWIN-32-PIC-NEXT:    leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax
10231 ; DARWIN-32-PIC-NEXT:    retl
10233 ; DARWIN-64-STATIC-LABEL: cam04:
10234 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10235 ; DARWIN-64-STATIC-NEXT:    leaq _ddst(%rip), %rax
10236 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10237 ; DARWIN-64-STATIC-NEXT:    retq
10239 ; DARWIN-64-DYNAMIC-LABEL: cam04:
10240 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10241 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ddst(%rip), %rax
10242 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10243 ; DARWIN-64-DYNAMIC-NEXT:    retq
10245 ; DARWIN-64-PIC-LABEL: cam04:
10246 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10247 ; DARWIN-64-PIC-NEXT:    leaq _ddst(%rip), %rax
10248 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10249 ; DARWIN-64-PIC-NEXT:    retq
10251 entry:
10252         %0 = add i64 %i, 65536
10253         %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0
10254         ret ptr %1
10257 define dso_local ptr @cam05(i64 %i) nounwind {
10258 ; LINUX-64-STATIC-LABEL: cam05:
10259 ; LINUX-64-STATIC:       # %bb.0: # %entry
10260 ; LINUX-64-STATIC-NEXT:    movq dptr(%rip), %rax
10261 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10262 ; LINUX-64-STATIC-NEXT:    retq
10264 ; LINUX-32-STATIC-LABEL: cam05:
10265 ; LINUX-32-STATIC:       # %bb.0: # %entry
10266 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10267 ; LINUX-32-STATIC-NEXT:    movl dptr, %ecx
10268 ; LINUX-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10269 ; LINUX-32-STATIC-NEXT:    retl
10271 ; LINUX-32-PIC-LABEL: cam05:
10272 ; LINUX-32-PIC:       # %bb.0: # %entry
10273 ; LINUX-32-PIC-NEXT:    calll .L127$pb
10274 ; LINUX-32-PIC-NEXT:  .L127$pb:
10275 ; LINUX-32-PIC-NEXT:    popl %eax
10276 ; LINUX-32-PIC-NEXT:  .Ltmp127:
10277 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax
10278 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10279 ; LINUX-32-PIC-NEXT:    movl .Ldptr$local@GOTOFF(%eax), %eax
10280 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10281 ; LINUX-32-PIC-NEXT:    retl
10283 ; LINUX-64-PIC-LABEL: cam05:
10284 ; LINUX-64-PIC:       # %bb.0: # %entry
10285 ; LINUX-64-PIC-NEXT:    movq .Ldptr$local(%rip), %rax
10286 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10287 ; LINUX-64-PIC-NEXT:    retq
10289 ; DARWIN-32-STATIC-LABEL: cam05:
10290 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10291 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10292 ; DARWIN-32-STATIC-NEXT:    movl _dptr, %ecx
10293 ; DARWIN-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10294 ; DARWIN-32-STATIC-NEXT:    retl
10296 ; DARWIN-32-DYNAMIC-LABEL: cam05:
10297 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10298 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10299 ; DARWIN-32-DYNAMIC-NEXT:    movl _dptr, %ecx
10300 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10301 ; DARWIN-32-DYNAMIC-NEXT:    retl
10303 ; DARWIN-32-PIC-LABEL: cam05:
10304 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10305 ; DARWIN-32-PIC-NEXT:    calll L127$pb
10306 ; DARWIN-32-PIC-NEXT:  L127$pb:
10307 ; DARWIN-32-PIC-NEXT:    popl %eax
10308 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10309 ; DARWIN-32-PIC-NEXT:    movl _dptr-L127$pb(%eax), %eax
10310 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10311 ; DARWIN-32-PIC-NEXT:    retl
10313 ; DARWIN-64-STATIC-LABEL: cam05:
10314 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10315 ; DARWIN-64-STATIC-NEXT:    movq _dptr(%rip), %rax
10316 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10317 ; DARWIN-64-STATIC-NEXT:    retq
10319 ; DARWIN-64-DYNAMIC-LABEL: cam05:
10320 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10321 ; DARWIN-64-DYNAMIC-NEXT:    movq _dptr(%rip), %rax
10322 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10323 ; DARWIN-64-DYNAMIC-NEXT:    retq
10325 ; DARWIN-64-PIC-LABEL: cam05:
10326 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10327 ; DARWIN-64-PIC-NEXT:    movq _dptr(%rip), %rax
10328 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10329 ; DARWIN-64-PIC-NEXT:    retq
10331 entry:
10332         %0 = load ptr, ptr @dptr, align 8
10333         %1 = add i64 %i, 65536
10334         %2 = getelementptr i32, ptr %0, i64 %1
10335         ret ptr %2
10338 define dso_local ptr @cam06(i64 %i) nounwind {
10339 ; LINUX-64-STATIC-LABEL: cam06:
10340 ; LINUX-64-STATIC:       # %bb.0: # %entry
10341 ; LINUX-64-STATIC-NEXT:    leaq lsrc+262144(,%rdi,4), %rax
10342 ; LINUX-64-STATIC-NEXT:    retq
10344 ; LINUX-32-STATIC-LABEL: cam06:
10345 ; LINUX-32-STATIC:       # %bb.0: # %entry
10346 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10347 ; LINUX-32-STATIC-NEXT:    leal lsrc+262144(,%eax,4), %eax
10348 ; LINUX-32-STATIC-NEXT:    retl
10350 ; LINUX-32-PIC-LABEL: cam06:
10351 ; LINUX-32-PIC:       # %bb.0: # %entry
10352 ; LINUX-32-PIC-NEXT:    calll .L128$pb
10353 ; LINUX-32-PIC-NEXT:  .L128$pb:
10354 ; LINUX-32-PIC-NEXT:    popl %eax
10355 ; LINUX-32-PIC-NEXT:  .Ltmp128:
10356 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax
10357 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10358 ; LINUX-32-PIC-NEXT:    leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax
10359 ; LINUX-32-PIC-NEXT:    retl
10361 ; LINUX-64-PIC-LABEL: cam06:
10362 ; LINUX-64-PIC:       # %bb.0: # %entry
10363 ; LINUX-64-PIC-NEXT:    leaq lsrc(%rip), %rax
10364 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10365 ; LINUX-64-PIC-NEXT:    retq
10367 ; DARWIN-32-STATIC-LABEL: cam06:
10368 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10369 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10370 ; DARWIN-32-STATIC-NEXT:    leal _lsrc+262144(,%eax,4), %eax
10371 ; DARWIN-32-STATIC-NEXT:    retl
10373 ; DARWIN-32-DYNAMIC-LABEL: cam06:
10374 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10375 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10376 ; DARWIN-32-DYNAMIC-NEXT:    leal _lsrc+262144(,%eax,4), %eax
10377 ; DARWIN-32-DYNAMIC-NEXT:    retl
10379 ; DARWIN-32-PIC-LABEL: cam06:
10380 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10381 ; DARWIN-32-PIC-NEXT:    calll L128$pb
10382 ; DARWIN-32-PIC-NEXT:  L128$pb:
10383 ; DARWIN-32-PIC-NEXT:    popl %eax
10384 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10385 ; DARWIN-32-PIC-NEXT:    leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax
10386 ; DARWIN-32-PIC-NEXT:    retl
10388 ; DARWIN-64-STATIC-LABEL: cam06:
10389 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10390 ; DARWIN-64-STATIC-NEXT:    leaq _lsrc(%rip), %rax
10391 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10392 ; DARWIN-64-STATIC-NEXT:    retq
10394 ; DARWIN-64-DYNAMIC-LABEL: cam06:
10395 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10396 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lsrc(%rip), %rax
10397 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10398 ; DARWIN-64-DYNAMIC-NEXT:    retq
10400 ; DARWIN-64-PIC-LABEL: cam06:
10401 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10402 ; DARWIN-64-PIC-NEXT:    leaq _lsrc(%rip), %rax
10403 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10404 ; DARWIN-64-PIC-NEXT:    retq
10406 entry:
10407         %0 = add i64 %i, 65536
10408         %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0
10409         ret ptr %1
10412 define dso_local ptr @cam07(i64 %i) nounwind {
10413 ; LINUX-64-STATIC-LABEL: cam07:
10414 ; LINUX-64-STATIC:       # %bb.0: # %entry
10415 ; LINUX-64-STATIC-NEXT:    leaq ldst+262144(,%rdi,4), %rax
10416 ; LINUX-64-STATIC-NEXT:    retq
10418 ; LINUX-32-STATIC-LABEL: cam07:
10419 ; LINUX-32-STATIC:       # %bb.0: # %entry
10420 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10421 ; LINUX-32-STATIC-NEXT:    leal ldst+262144(,%eax,4), %eax
10422 ; LINUX-32-STATIC-NEXT:    retl
10424 ; LINUX-32-PIC-LABEL: cam07:
10425 ; LINUX-32-PIC:       # %bb.0: # %entry
10426 ; LINUX-32-PIC-NEXT:    calll .L129$pb
10427 ; LINUX-32-PIC-NEXT:  .L129$pb:
10428 ; LINUX-32-PIC-NEXT:    popl %eax
10429 ; LINUX-32-PIC-NEXT:  .Ltmp129:
10430 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax
10431 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10432 ; LINUX-32-PIC-NEXT:    leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax
10433 ; LINUX-32-PIC-NEXT:    retl
10435 ; LINUX-64-PIC-LABEL: cam07:
10436 ; LINUX-64-PIC:       # %bb.0: # %entry
10437 ; LINUX-64-PIC-NEXT:    leaq ldst(%rip), %rax
10438 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10439 ; LINUX-64-PIC-NEXT:    retq
10441 ; DARWIN-32-STATIC-LABEL: cam07:
10442 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10443 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10444 ; DARWIN-32-STATIC-NEXT:    leal _ldst+262144(,%eax,4), %eax
10445 ; DARWIN-32-STATIC-NEXT:    retl
10447 ; DARWIN-32-DYNAMIC-LABEL: cam07:
10448 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10449 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10450 ; DARWIN-32-DYNAMIC-NEXT:    leal _ldst+262144(,%eax,4), %eax
10451 ; DARWIN-32-DYNAMIC-NEXT:    retl
10453 ; DARWIN-32-PIC-LABEL: cam07:
10454 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10455 ; DARWIN-32-PIC-NEXT:    calll L129$pb
10456 ; DARWIN-32-PIC-NEXT:  L129$pb:
10457 ; DARWIN-32-PIC-NEXT:    popl %eax
10458 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10459 ; DARWIN-32-PIC-NEXT:    leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax
10460 ; DARWIN-32-PIC-NEXT:    retl
10462 ; DARWIN-64-STATIC-LABEL: cam07:
10463 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10464 ; DARWIN-64-STATIC-NEXT:    leaq _ldst(%rip), %rax
10465 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10466 ; DARWIN-64-STATIC-NEXT:    retq
10468 ; DARWIN-64-DYNAMIC-LABEL: cam07:
10469 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10470 ; DARWIN-64-DYNAMIC-NEXT:    leaq _ldst(%rip), %rax
10471 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10472 ; DARWIN-64-DYNAMIC-NEXT:    retq
10474 ; DARWIN-64-PIC-LABEL: cam07:
10475 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10476 ; DARWIN-64-PIC-NEXT:    leaq _ldst(%rip), %rax
10477 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10478 ; DARWIN-64-PIC-NEXT:    retq
10480 entry:
10481         %0 = add i64 %i, 65536
10482         %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0
10483         ret ptr %1
10486 define dso_local ptr @cam08(i64 %i) nounwind {
10487 ; LINUX-64-STATIC-LABEL: cam08:
10488 ; LINUX-64-STATIC:       # %bb.0: # %entry
10489 ; LINUX-64-STATIC-NEXT:    movq lptr(%rip), %rax
10490 ; LINUX-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10491 ; LINUX-64-STATIC-NEXT:    retq
10493 ; LINUX-32-STATIC-LABEL: cam08:
10494 ; LINUX-32-STATIC:       # %bb.0: # %entry
10495 ; LINUX-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10496 ; LINUX-32-STATIC-NEXT:    movl lptr, %ecx
10497 ; LINUX-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10498 ; LINUX-32-STATIC-NEXT:    retl
10500 ; LINUX-32-PIC-LABEL: cam08:
10501 ; LINUX-32-PIC:       # %bb.0: # %entry
10502 ; LINUX-32-PIC-NEXT:    calll .L130$pb
10503 ; LINUX-32-PIC-NEXT:  .L130$pb:
10504 ; LINUX-32-PIC-NEXT:    popl %eax
10505 ; LINUX-32-PIC-NEXT:  .Ltmp130:
10506 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax
10507 ; LINUX-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10508 ; LINUX-32-PIC-NEXT:    movl lptr@GOTOFF(%eax), %eax
10509 ; LINUX-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10510 ; LINUX-32-PIC-NEXT:    retl
10512 ; LINUX-64-PIC-LABEL: cam08:
10513 ; LINUX-64-PIC:       # %bb.0: # %entry
10514 ; LINUX-64-PIC-NEXT:    movq lptr(%rip), %rax
10515 ; LINUX-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10516 ; LINUX-64-PIC-NEXT:    retq
10518 ; DARWIN-32-STATIC-LABEL: cam08:
10519 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10520 ; DARWIN-32-STATIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10521 ; DARWIN-32-STATIC-NEXT:    movl _lptr, %ecx
10522 ; DARWIN-32-STATIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10523 ; DARWIN-32-STATIC-NEXT:    retl
10525 ; DARWIN-32-DYNAMIC-LABEL: cam08:
10526 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10527 ; DARWIN-32-DYNAMIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
10528 ; DARWIN-32-DYNAMIC-NEXT:    movl _lptr, %ecx
10529 ; DARWIN-32-DYNAMIC-NEXT:    leal 262144(%ecx,%eax,4), %eax
10530 ; DARWIN-32-DYNAMIC-NEXT:    retl
10532 ; DARWIN-32-PIC-LABEL: cam08:
10533 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10534 ; DARWIN-32-PIC-NEXT:    calll L130$pb
10535 ; DARWIN-32-PIC-NEXT:  L130$pb:
10536 ; DARWIN-32-PIC-NEXT:    popl %eax
10537 ; DARWIN-32-PIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
10538 ; DARWIN-32-PIC-NEXT:    movl _lptr-L130$pb(%eax), %eax
10539 ; DARWIN-32-PIC-NEXT:    leal 262144(%eax,%ecx,4), %eax
10540 ; DARWIN-32-PIC-NEXT:    retl
10542 ; DARWIN-64-STATIC-LABEL: cam08:
10543 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10544 ; DARWIN-64-STATIC-NEXT:    movq _lptr(%rip), %rax
10545 ; DARWIN-64-STATIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10546 ; DARWIN-64-STATIC-NEXT:    retq
10548 ; DARWIN-64-DYNAMIC-LABEL: cam08:
10549 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10550 ; DARWIN-64-DYNAMIC-NEXT:    movq _lptr(%rip), %rax
10551 ; DARWIN-64-DYNAMIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10552 ; DARWIN-64-DYNAMIC-NEXT:    retq
10554 ; DARWIN-64-PIC-LABEL: cam08:
10555 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10556 ; DARWIN-64-PIC-NEXT:    movq _lptr(%rip), %rax
10557 ; DARWIN-64-PIC-NEXT:    leaq 262144(%rax,%rdi,4), %rax
10558 ; DARWIN-64-PIC-NEXT:    retq
10560 entry:
10561         %0 = load ptr, ptr @lptr, align 8
10562         %1 = add i64 %i, 65536
10563         %2 = getelementptr i32, ptr %0, i64 %1
10564         ret ptr %2
10567 define dso_local void @lcallee() nounwind {
10568 ; LINUX-64-STATIC-LABEL: lcallee:
10569 ; LINUX-64-STATIC:       # %bb.0: # %entry
10570 ; LINUX-64-STATIC-NEXT:    pushq %rax
10571 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10572 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10573 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10574 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10575 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10576 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10577 ; LINUX-64-STATIC-NEXT:    callq x@PLT
10578 ; LINUX-64-STATIC-NEXT:    popq %rax
10579 ; LINUX-64-STATIC-NEXT:    retq
10581 ; LINUX-32-STATIC-LABEL: lcallee:
10582 ; LINUX-32-STATIC:       # %bb.0: # %entry
10583 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
10584 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10585 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10586 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10587 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10588 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10589 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10590 ; LINUX-32-STATIC-NEXT:    calll x@PLT
10591 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
10592 ; LINUX-32-STATIC-NEXT:    retl
10594 ; LINUX-32-PIC-LABEL: lcallee:
10595 ; LINUX-32-PIC:       # %bb.0: # %entry
10596 ; LINUX-32-PIC-NEXT:    pushl %ebx
10597 ; LINUX-32-PIC-NEXT:    subl $8, %esp
10598 ; LINUX-32-PIC-NEXT:    calll .L131$pb
10599 ; LINUX-32-PIC-NEXT:  .L131$pb:
10600 ; LINUX-32-PIC-NEXT:    popl %ebx
10601 ; LINUX-32-PIC-NEXT:  .Ltmp131:
10602 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx
10603 ; LINUX-32-PIC-NEXT:    calll x@PLT
10604 ; LINUX-32-PIC-NEXT:    calll x@PLT
10605 ; LINUX-32-PIC-NEXT:    calll x@PLT
10606 ; LINUX-32-PIC-NEXT:    calll x@PLT
10607 ; LINUX-32-PIC-NEXT:    calll x@PLT
10608 ; LINUX-32-PIC-NEXT:    calll x@PLT
10609 ; LINUX-32-PIC-NEXT:    calll x@PLT
10610 ; LINUX-32-PIC-NEXT:    addl $8, %esp
10611 ; LINUX-32-PIC-NEXT:    popl %ebx
10612 ; LINUX-32-PIC-NEXT:    retl
10614 ; LINUX-64-PIC-LABEL: lcallee:
10615 ; LINUX-64-PIC:       # %bb.0: # %entry
10616 ; LINUX-64-PIC-NEXT:    pushq %rax
10617 ; LINUX-64-PIC-NEXT:    callq x@PLT
10618 ; LINUX-64-PIC-NEXT:    callq x@PLT
10619 ; LINUX-64-PIC-NEXT:    callq x@PLT
10620 ; LINUX-64-PIC-NEXT:    callq x@PLT
10621 ; LINUX-64-PIC-NEXT:    callq x@PLT
10622 ; LINUX-64-PIC-NEXT:    callq x@PLT
10623 ; LINUX-64-PIC-NEXT:    callq x@PLT
10624 ; LINUX-64-PIC-NEXT:    popq %rax
10625 ; LINUX-64-PIC-NEXT:    retq
10627 ; DARWIN-32-STATIC-LABEL: lcallee:
10628 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10629 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
10630 ; DARWIN-32-STATIC-NEXT:    calll _x
10631 ; DARWIN-32-STATIC-NEXT:    calll _x
10632 ; DARWIN-32-STATIC-NEXT:    calll _x
10633 ; DARWIN-32-STATIC-NEXT:    calll _x
10634 ; DARWIN-32-STATIC-NEXT:    calll _x
10635 ; DARWIN-32-STATIC-NEXT:    calll _x
10636 ; DARWIN-32-STATIC-NEXT:    calll _x
10637 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
10638 ; DARWIN-32-STATIC-NEXT:    retl
10640 ; DARWIN-32-DYNAMIC-LABEL: lcallee:
10641 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10642 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
10643 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10644 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10645 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10646 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10647 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10648 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10649 ; DARWIN-32-DYNAMIC-NEXT:    calll _x
10650 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
10651 ; DARWIN-32-DYNAMIC-NEXT:    retl
10653 ; DARWIN-32-PIC-LABEL: lcallee:
10654 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10655 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
10656 ; DARWIN-32-PIC-NEXT:    calll _x
10657 ; DARWIN-32-PIC-NEXT:    calll _x
10658 ; DARWIN-32-PIC-NEXT:    calll _x
10659 ; DARWIN-32-PIC-NEXT:    calll _x
10660 ; DARWIN-32-PIC-NEXT:    calll _x
10661 ; DARWIN-32-PIC-NEXT:    calll _x
10662 ; DARWIN-32-PIC-NEXT:    calll _x
10663 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
10664 ; DARWIN-32-PIC-NEXT:    retl
10666 ; DARWIN-64-STATIC-LABEL: lcallee:
10667 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10668 ; DARWIN-64-STATIC-NEXT:    pushq %rax
10669 ; DARWIN-64-STATIC-NEXT:    callq _x
10670 ; DARWIN-64-STATIC-NEXT:    callq _x
10671 ; DARWIN-64-STATIC-NEXT:    callq _x
10672 ; DARWIN-64-STATIC-NEXT:    callq _x
10673 ; DARWIN-64-STATIC-NEXT:    callq _x
10674 ; DARWIN-64-STATIC-NEXT:    callq _x
10675 ; DARWIN-64-STATIC-NEXT:    callq _x
10676 ; DARWIN-64-STATIC-NEXT:    popq %rax
10677 ; DARWIN-64-STATIC-NEXT:    retq
10679 ; DARWIN-64-DYNAMIC-LABEL: lcallee:
10680 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10681 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
10682 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10683 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10684 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10685 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10686 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10687 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10688 ; DARWIN-64-DYNAMIC-NEXT:    callq _x
10689 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
10690 ; DARWIN-64-DYNAMIC-NEXT:    retq
10692 ; DARWIN-64-PIC-LABEL: lcallee:
10693 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10694 ; DARWIN-64-PIC-NEXT:    pushq %rax
10695 ; DARWIN-64-PIC-NEXT:    callq _x
10696 ; DARWIN-64-PIC-NEXT:    callq _x
10697 ; DARWIN-64-PIC-NEXT:    callq _x
10698 ; DARWIN-64-PIC-NEXT:    callq _x
10699 ; DARWIN-64-PIC-NEXT:    callq _x
10700 ; DARWIN-64-PIC-NEXT:    callq _x
10701 ; DARWIN-64-PIC-NEXT:    callq _x
10702 ; DARWIN-64-PIC-NEXT:    popq %rax
10703 ; DARWIN-64-PIC-NEXT:    retq
10705 entry:
10706         call void @x() nounwind
10707         call void @x() nounwind
10708         call void @x() nounwind
10709         call void @x() nounwind
10710         call void @x() nounwind
10711         call void @x() nounwind
10712         call void @x() nounwind
10713         ret void
10716 declare void @x()
10718 define internal void @dcallee() nounwind {
10719 ; LINUX-64-STATIC-LABEL: dcallee:
10720 ; LINUX-64-STATIC:       # %bb.0: # %entry
10721 ; LINUX-64-STATIC-NEXT:    pushq %rax
10722 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10723 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10724 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10725 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10726 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10727 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10728 ; LINUX-64-STATIC-NEXT:    callq y@PLT
10729 ; LINUX-64-STATIC-NEXT:    popq %rax
10730 ; LINUX-64-STATIC-NEXT:    retq
10732 ; LINUX-32-STATIC-LABEL: dcallee:
10733 ; LINUX-32-STATIC:       # %bb.0: # %entry
10734 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
10735 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10736 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10737 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10738 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10739 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10740 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10741 ; LINUX-32-STATIC-NEXT:    calll y@PLT
10742 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
10743 ; LINUX-32-STATIC-NEXT:    retl
10745 ; LINUX-32-PIC-LABEL: dcallee:
10746 ; LINUX-32-PIC:       # %bb.0: # %entry
10747 ; LINUX-32-PIC-NEXT:    pushl %ebx
10748 ; LINUX-32-PIC-NEXT:    subl $8, %esp
10749 ; LINUX-32-PIC-NEXT:    calll .L132$pb
10750 ; LINUX-32-PIC-NEXT:  .L132$pb:
10751 ; LINUX-32-PIC-NEXT:    popl %ebx
10752 ; LINUX-32-PIC-NEXT:  .Ltmp132:
10753 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx
10754 ; LINUX-32-PIC-NEXT:    calll y@PLT
10755 ; LINUX-32-PIC-NEXT:    calll y@PLT
10756 ; LINUX-32-PIC-NEXT:    calll y@PLT
10757 ; LINUX-32-PIC-NEXT:    calll y@PLT
10758 ; LINUX-32-PIC-NEXT:    calll y@PLT
10759 ; LINUX-32-PIC-NEXT:    calll y@PLT
10760 ; LINUX-32-PIC-NEXT:    calll y@PLT
10761 ; LINUX-32-PIC-NEXT:    addl $8, %esp
10762 ; LINUX-32-PIC-NEXT:    popl %ebx
10763 ; LINUX-32-PIC-NEXT:    retl
10765 ; LINUX-64-PIC-LABEL: dcallee:
10766 ; LINUX-64-PIC:       # %bb.0: # %entry
10767 ; LINUX-64-PIC-NEXT:    pushq %rax
10768 ; LINUX-64-PIC-NEXT:    callq y@PLT
10769 ; LINUX-64-PIC-NEXT:    callq y@PLT
10770 ; LINUX-64-PIC-NEXT:    callq y@PLT
10771 ; LINUX-64-PIC-NEXT:    callq y@PLT
10772 ; LINUX-64-PIC-NEXT:    callq y@PLT
10773 ; LINUX-64-PIC-NEXT:    callq y@PLT
10774 ; LINUX-64-PIC-NEXT:    callq y@PLT
10775 ; LINUX-64-PIC-NEXT:    popq %rax
10776 ; LINUX-64-PIC-NEXT:    retq
10778 ; DARWIN-32-STATIC-LABEL: dcallee:
10779 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10780 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
10781 ; DARWIN-32-STATIC-NEXT:    calll _y
10782 ; DARWIN-32-STATIC-NEXT:    calll _y
10783 ; DARWIN-32-STATIC-NEXT:    calll _y
10784 ; DARWIN-32-STATIC-NEXT:    calll _y
10785 ; DARWIN-32-STATIC-NEXT:    calll _y
10786 ; DARWIN-32-STATIC-NEXT:    calll _y
10787 ; DARWIN-32-STATIC-NEXT:    calll _y
10788 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
10789 ; DARWIN-32-STATIC-NEXT:    retl
10791 ; DARWIN-32-DYNAMIC-LABEL: dcallee:
10792 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10793 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
10794 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10795 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10796 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10797 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10798 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10799 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10800 ; DARWIN-32-DYNAMIC-NEXT:    calll _y
10801 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
10802 ; DARWIN-32-DYNAMIC-NEXT:    retl
10804 ; DARWIN-32-PIC-LABEL: dcallee:
10805 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10806 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
10807 ; DARWIN-32-PIC-NEXT:    calll _y
10808 ; DARWIN-32-PIC-NEXT:    calll _y
10809 ; DARWIN-32-PIC-NEXT:    calll _y
10810 ; DARWIN-32-PIC-NEXT:    calll _y
10811 ; DARWIN-32-PIC-NEXT:    calll _y
10812 ; DARWIN-32-PIC-NEXT:    calll _y
10813 ; DARWIN-32-PIC-NEXT:    calll _y
10814 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
10815 ; DARWIN-32-PIC-NEXT:    retl
10817 ; DARWIN-64-STATIC-LABEL: dcallee:
10818 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10819 ; DARWIN-64-STATIC-NEXT:    pushq %rax
10820 ; DARWIN-64-STATIC-NEXT:    callq _y
10821 ; DARWIN-64-STATIC-NEXT:    callq _y
10822 ; DARWIN-64-STATIC-NEXT:    callq _y
10823 ; DARWIN-64-STATIC-NEXT:    callq _y
10824 ; DARWIN-64-STATIC-NEXT:    callq _y
10825 ; DARWIN-64-STATIC-NEXT:    callq _y
10826 ; DARWIN-64-STATIC-NEXT:    callq _y
10827 ; DARWIN-64-STATIC-NEXT:    popq %rax
10828 ; DARWIN-64-STATIC-NEXT:    retq
10830 ; DARWIN-64-DYNAMIC-LABEL: dcallee:
10831 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10832 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
10833 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10834 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10835 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10836 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10837 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10838 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10839 ; DARWIN-64-DYNAMIC-NEXT:    callq _y
10840 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
10841 ; DARWIN-64-DYNAMIC-NEXT:    retq
10843 ; DARWIN-64-PIC-LABEL: dcallee:
10844 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10845 ; DARWIN-64-PIC-NEXT:    pushq %rax
10846 ; DARWIN-64-PIC-NEXT:    callq _y
10847 ; DARWIN-64-PIC-NEXT:    callq _y
10848 ; DARWIN-64-PIC-NEXT:    callq _y
10849 ; DARWIN-64-PIC-NEXT:    callq _y
10850 ; DARWIN-64-PIC-NEXT:    callq _y
10851 ; DARWIN-64-PIC-NEXT:    callq _y
10852 ; DARWIN-64-PIC-NEXT:    callq _y
10853 ; DARWIN-64-PIC-NEXT:    popq %rax
10854 ; DARWIN-64-PIC-NEXT:    retq
10856 entry:
10857         call void @y() nounwind
10858         call void @y() nounwind
10859         call void @y() nounwind
10860         call void @y() nounwind
10861         call void @y() nounwind
10862         call void @y() nounwind
10863         call void @y() nounwind
10864         ret void
10867 declare void @y()
10869 define dso_local ptr @address() nounwind {
10870 ; LINUX-64-STATIC-LABEL: address:
10871 ; LINUX-64-STATIC:       # %bb.0: # %entry
10872 ; LINUX-64-STATIC-NEXT:    movq callee@GOTPCREL(%rip), %rax
10873 ; LINUX-64-STATIC-NEXT:    retq
10875 ; LINUX-32-STATIC-LABEL: address:
10876 ; LINUX-32-STATIC:       # %bb.0: # %entry
10877 ; LINUX-32-STATIC-NEXT:    movl $callee, %eax
10878 ; LINUX-32-STATIC-NEXT:    retl
10880 ; LINUX-32-PIC-LABEL: address:
10881 ; LINUX-32-PIC:       # %bb.0: # %entry
10882 ; LINUX-32-PIC-NEXT:    calll .L133$pb
10883 ; LINUX-32-PIC-NEXT:  .L133$pb:
10884 ; LINUX-32-PIC-NEXT:    popl %eax
10885 ; LINUX-32-PIC-NEXT:  .Ltmp133:
10886 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax
10887 ; LINUX-32-PIC-NEXT:    movl callee@GOT(%eax), %eax
10888 ; LINUX-32-PIC-NEXT:    retl
10890 ; LINUX-64-PIC-LABEL: address:
10891 ; LINUX-64-PIC:       # %bb.0: # %entry
10892 ; LINUX-64-PIC-NEXT:    movq callee@GOTPCREL(%rip), %rax
10893 ; LINUX-64-PIC-NEXT:    retq
10895 ; DARWIN-32-STATIC-LABEL: address:
10896 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10897 ; DARWIN-32-STATIC-NEXT:    movl $_callee, %eax
10898 ; DARWIN-32-STATIC-NEXT:    retl
10900 ; DARWIN-32-DYNAMIC-LABEL: address:
10901 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10902 ; DARWIN-32-DYNAMIC-NEXT:    movl L_callee$non_lazy_ptr, %eax
10903 ; DARWIN-32-DYNAMIC-NEXT:    retl
10905 ; DARWIN-32-PIC-LABEL: address:
10906 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10907 ; DARWIN-32-PIC-NEXT:    calll L133$pb
10908 ; DARWIN-32-PIC-NEXT:  L133$pb:
10909 ; DARWIN-32-PIC-NEXT:    popl %eax
10910 ; DARWIN-32-PIC-NEXT:    movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax
10911 ; DARWIN-32-PIC-NEXT:    retl
10913 ; DARWIN-64-STATIC-LABEL: address:
10914 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10915 ; DARWIN-64-STATIC-NEXT:    movq _callee@GOTPCREL(%rip), %rax
10916 ; DARWIN-64-STATIC-NEXT:    retq
10918 ; DARWIN-64-DYNAMIC-LABEL: address:
10919 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10920 ; DARWIN-64-DYNAMIC-NEXT:    movq _callee@GOTPCREL(%rip), %rax
10921 ; DARWIN-64-DYNAMIC-NEXT:    retq
10923 ; DARWIN-64-PIC-LABEL: address:
10924 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10925 ; DARWIN-64-PIC-NEXT:    movq _callee@GOTPCREL(%rip), %rax
10926 ; DARWIN-64-PIC-NEXT:    retq
10928 entry:
10929         ret ptr @callee
10932 declare void @callee()
10934 define dso_local ptr @laddress() nounwind {
10935 ; LINUX-64-STATIC-LABEL: laddress:
10936 ; LINUX-64-STATIC:       # %bb.0: # %entry
10937 ; LINUX-64-STATIC-NEXT:    movl $lcallee, %eax
10938 ; LINUX-64-STATIC-NEXT:    retq
10940 ; LINUX-32-STATIC-LABEL: laddress:
10941 ; LINUX-32-STATIC:       # %bb.0: # %entry
10942 ; LINUX-32-STATIC-NEXT:    movl $lcallee, %eax
10943 ; LINUX-32-STATIC-NEXT:    retl
10945 ; LINUX-32-PIC-LABEL: laddress:
10946 ; LINUX-32-PIC:       # %bb.0: # %entry
10947 ; LINUX-32-PIC-NEXT:    calll .L134$pb
10948 ; LINUX-32-PIC-NEXT:  .L134$pb:
10949 ; LINUX-32-PIC-NEXT:    popl %eax
10950 ; LINUX-32-PIC-NEXT:  .Ltmp134:
10951 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax
10952 ; LINUX-32-PIC-NEXT:    leal .Llcallee$local@GOTOFF(%eax), %eax
10953 ; LINUX-32-PIC-NEXT:    retl
10955 ; LINUX-64-PIC-LABEL: laddress:
10956 ; LINUX-64-PIC:       # %bb.0: # %entry
10957 ; LINUX-64-PIC-NEXT:    leaq .Llcallee$local(%rip), %rax
10958 ; LINUX-64-PIC-NEXT:    retq
10960 ; DARWIN-32-STATIC-LABEL: laddress:
10961 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
10962 ; DARWIN-32-STATIC-NEXT:    movl $_lcallee, %eax
10963 ; DARWIN-32-STATIC-NEXT:    retl
10965 ; DARWIN-32-DYNAMIC-LABEL: laddress:
10966 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
10967 ; DARWIN-32-DYNAMIC-NEXT:    movl $_lcallee, %eax
10968 ; DARWIN-32-DYNAMIC-NEXT:    retl
10970 ; DARWIN-32-PIC-LABEL: laddress:
10971 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
10972 ; DARWIN-32-PIC-NEXT:    calll L134$pb
10973 ; DARWIN-32-PIC-NEXT:  L134$pb:
10974 ; DARWIN-32-PIC-NEXT:    popl %eax
10975 ; DARWIN-32-PIC-NEXT:    leal _lcallee-L134$pb(%eax), %eax
10976 ; DARWIN-32-PIC-NEXT:    retl
10978 ; DARWIN-64-STATIC-LABEL: laddress:
10979 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
10980 ; DARWIN-64-STATIC-NEXT:    leaq _lcallee(%rip), %rax
10981 ; DARWIN-64-STATIC-NEXT:    retq
10983 ; DARWIN-64-DYNAMIC-LABEL: laddress:
10984 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
10985 ; DARWIN-64-DYNAMIC-NEXT:    leaq _lcallee(%rip), %rax
10986 ; DARWIN-64-DYNAMIC-NEXT:    retq
10988 ; DARWIN-64-PIC-LABEL: laddress:
10989 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
10990 ; DARWIN-64-PIC-NEXT:    leaq _lcallee(%rip), %rax
10991 ; DARWIN-64-PIC-NEXT:    retq
10993 entry:
10994         ret ptr @lcallee
10997 define dso_local ptr @daddress() nounwind {
10998 ; LINUX-64-STATIC-LABEL: daddress:
10999 ; LINUX-64-STATIC:       # %bb.0: # %entry
11000 ; LINUX-64-STATIC-NEXT:    movl $dcallee, %eax
11001 ; LINUX-64-STATIC-NEXT:    retq
11003 ; LINUX-32-STATIC-LABEL: daddress:
11004 ; LINUX-32-STATIC:       # %bb.0: # %entry
11005 ; LINUX-32-STATIC-NEXT:    movl $dcallee, %eax
11006 ; LINUX-32-STATIC-NEXT:    retl
11008 ; LINUX-32-PIC-LABEL: daddress:
11009 ; LINUX-32-PIC:       # %bb.0: # %entry
11010 ; LINUX-32-PIC-NEXT:    calll .L135$pb
11011 ; LINUX-32-PIC-NEXT:  .L135$pb:
11012 ; LINUX-32-PIC-NEXT:    popl %eax
11013 ; LINUX-32-PIC-NEXT:  .Ltmp135:
11014 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax
11015 ; LINUX-32-PIC-NEXT:    leal dcallee@GOTOFF(%eax), %eax
11016 ; LINUX-32-PIC-NEXT:    retl
11018 ; LINUX-64-PIC-LABEL: daddress:
11019 ; LINUX-64-PIC:       # %bb.0: # %entry
11020 ; LINUX-64-PIC-NEXT:    leaq dcallee(%rip), %rax
11021 ; LINUX-64-PIC-NEXT:    retq
11023 ; DARWIN-32-STATIC-LABEL: daddress:
11024 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11025 ; DARWIN-32-STATIC-NEXT:    movl $_dcallee, %eax
11026 ; DARWIN-32-STATIC-NEXT:    retl
11028 ; DARWIN-32-DYNAMIC-LABEL: daddress:
11029 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11030 ; DARWIN-32-DYNAMIC-NEXT:    movl $_dcallee, %eax
11031 ; DARWIN-32-DYNAMIC-NEXT:    retl
11033 ; DARWIN-32-PIC-LABEL: daddress:
11034 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11035 ; DARWIN-32-PIC-NEXT:    calll L135$pb
11036 ; DARWIN-32-PIC-NEXT:  L135$pb:
11037 ; DARWIN-32-PIC-NEXT:    popl %eax
11038 ; DARWIN-32-PIC-NEXT:    leal _dcallee-L135$pb(%eax), %eax
11039 ; DARWIN-32-PIC-NEXT:    retl
11041 ; DARWIN-64-STATIC-LABEL: daddress:
11042 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11043 ; DARWIN-64-STATIC-NEXT:    leaq _dcallee(%rip), %rax
11044 ; DARWIN-64-STATIC-NEXT:    retq
11046 ; DARWIN-64-DYNAMIC-LABEL: daddress:
11047 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11048 ; DARWIN-64-DYNAMIC-NEXT:    leaq _dcallee(%rip), %rax
11049 ; DARWIN-64-DYNAMIC-NEXT:    retq
11051 ; DARWIN-64-PIC-LABEL: daddress:
11052 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11053 ; DARWIN-64-PIC-NEXT:    leaq _dcallee(%rip), %rax
11054 ; DARWIN-64-PIC-NEXT:    retq
11056 entry:
11057         ret ptr @dcallee
11060 define dso_local void @caller() nounwind {
11061 ; LINUX-64-STATIC-LABEL: caller:
11062 ; LINUX-64-STATIC:       # %bb.0: # %entry
11063 ; LINUX-64-STATIC-NEXT:    pushq %rax
11064 ; LINUX-64-STATIC-NEXT:    callq callee@PLT
11065 ; LINUX-64-STATIC-NEXT:    callq callee@PLT
11066 ; LINUX-64-STATIC-NEXT:    popq %rax
11067 ; LINUX-64-STATIC-NEXT:    retq
11069 ; LINUX-32-STATIC-LABEL: caller:
11070 ; LINUX-32-STATIC:       # %bb.0: # %entry
11071 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11072 ; LINUX-32-STATIC-NEXT:    calll callee@PLT
11073 ; LINUX-32-STATIC-NEXT:    calll callee@PLT
11074 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11075 ; LINUX-32-STATIC-NEXT:    retl
11077 ; LINUX-32-PIC-LABEL: caller:
11078 ; LINUX-32-PIC:       # %bb.0: # %entry
11079 ; LINUX-32-PIC-NEXT:    pushl %ebx
11080 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11081 ; LINUX-32-PIC-NEXT:    calll .L136$pb
11082 ; LINUX-32-PIC-NEXT:  .L136$pb:
11083 ; LINUX-32-PIC-NEXT:    popl %ebx
11084 ; LINUX-32-PIC-NEXT:  .Ltmp136:
11085 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx
11086 ; LINUX-32-PIC-NEXT:    calll callee@PLT
11087 ; LINUX-32-PIC-NEXT:    calll callee@PLT
11088 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11089 ; LINUX-32-PIC-NEXT:    popl %ebx
11090 ; LINUX-32-PIC-NEXT:    retl
11092 ; LINUX-64-PIC-LABEL: caller:
11093 ; LINUX-64-PIC:       # %bb.0: # %entry
11094 ; LINUX-64-PIC-NEXT:    pushq %rax
11095 ; LINUX-64-PIC-NEXT:    callq callee@PLT
11096 ; LINUX-64-PIC-NEXT:    callq callee@PLT
11097 ; LINUX-64-PIC-NEXT:    popq %rax
11098 ; LINUX-64-PIC-NEXT:    retq
11100 ; DARWIN-32-STATIC-LABEL: caller:
11101 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11102 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11103 ; DARWIN-32-STATIC-NEXT:    calll _callee
11104 ; DARWIN-32-STATIC-NEXT:    calll _callee
11105 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11106 ; DARWIN-32-STATIC-NEXT:    retl
11108 ; DARWIN-32-DYNAMIC-LABEL: caller:
11109 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11110 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11111 ; DARWIN-32-DYNAMIC-NEXT:    calll _callee
11112 ; DARWIN-32-DYNAMIC-NEXT:    calll _callee
11113 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11114 ; DARWIN-32-DYNAMIC-NEXT:    retl
11116 ; DARWIN-32-PIC-LABEL: caller:
11117 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11118 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11119 ; DARWIN-32-PIC-NEXT:    calll _callee
11120 ; DARWIN-32-PIC-NEXT:    calll _callee
11121 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11122 ; DARWIN-32-PIC-NEXT:    retl
11124 ; DARWIN-64-STATIC-LABEL: caller:
11125 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11126 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11127 ; DARWIN-64-STATIC-NEXT:    callq _callee
11128 ; DARWIN-64-STATIC-NEXT:    callq _callee
11129 ; DARWIN-64-STATIC-NEXT:    popq %rax
11130 ; DARWIN-64-STATIC-NEXT:    retq
11132 ; DARWIN-64-DYNAMIC-LABEL: caller:
11133 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11134 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11135 ; DARWIN-64-DYNAMIC-NEXT:    callq _callee
11136 ; DARWIN-64-DYNAMIC-NEXT:    callq _callee
11137 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11138 ; DARWIN-64-DYNAMIC-NEXT:    retq
11140 ; DARWIN-64-PIC-LABEL: caller:
11141 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11142 ; DARWIN-64-PIC-NEXT:    pushq %rax
11143 ; DARWIN-64-PIC-NEXT:    callq _callee
11144 ; DARWIN-64-PIC-NEXT:    callq _callee
11145 ; DARWIN-64-PIC-NEXT:    popq %rax
11146 ; DARWIN-64-PIC-NEXT:    retq
11148 entry:
11149         call void @callee() nounwind
11150         call void @callee() nounwind
11151         ret void
11154 define dso_local void @dcaller() nounwind {
11155 ; LINUX-64-STATIC-LABEL: dcaller:
11156 ; LINUX-64-STATIC:       # %bb.0: # %entry
11157 ; LINUX-64-STATIC-NEXT:    pushq %rax
11158 ; LINUX-64-STATIC-NEXT:    callq dcallee
11159 ; LINUX-64-STATIC-NEXT:    callq dcallee
11160 ; LINUX-64-STATIC-NEXT:    popq %rax
11161 ; LINUX-64-STATIC-NEXT:    retq
11163 ; LINUX-32-STATIC-LABEL: dcaller:
11164 ; LINUX-32-STATIC:       # %bb.0: # %entry
11165 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11166 ; LINUX-32-STATIC-NEXT:    calll dcallee
11167 ; LINUX-32-STATIC-NEXT:    calll dcallee
11168 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11169 ; LINUX-32-STATIC-NEXT:    retl
11171 ; LINUX-32-PIC-LABEL: dcaller:
11172 ; LINUX-32-PIC:       # %bb.0: # %entry
11173 ; LINUX-32-PIC-NEXT:    pushl %ebx
11174 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11175 ; LINUX-32-PIC-NEXT:    calll .L137$pb
11176 ; LINUX-32-PIC-NEXT:  .L137$pb:
11177 ; LINUX-32-PIC-NEXT:    popl %ebx
11178 ; LINUX-32-PIC-NEXT:  .Ltmp137:
11179 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx
11180 ; LINUX-32-PIC-NEXT:    calll dcallee
11181 ; LINUX-32-PIC-NEXT:    calll dcallee
11182 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11183 ; LINUX-32-PIC-NEXT:    popl %ebx
11184 ; LINUX-32-PIC-NEXT:    retl
11186 ; LINUX-64-PIC-LABEL: dcaller:
11187 ; LINUX-64-PIC:       # %bb.0: # %entry
11188 ; LINUX-64-PIC-NEXT:    pushq %rax
11189 ; LINUX-64-PIC-NEXT:    callq dcallee
11190 ; LINUX-64-PIC-NEXT:    callq dcallee
11191 ; LINUX-64-PIC-NEXT:    popq %rax
11192 ; LINUX-64-PIC-NEXT:    retq
11194 ; DARWIN-32-STATIC-LABEL: dcaller:
11195 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11196 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11197 ; DARWIN-32-STATIC-NEXT:    calll _dcallee
11198 ; DARWIN-32-STATIC-NEXT:    calll _dcallee
11199 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11200 ; DARWIN-32-STATIC-NEXT:    retl
11202 ; DARWIN-32-DYNAMIC-LABEL: dcaller:
11203 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11204 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11205 ; DARWIN-32-DYNAMIC-NEXT:    calll _dcallee
11206 ; DARWIN-32-DYNAMIC-NEXT:    calll _dcallee
11207 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11208 ; DARWIN-32-DYNAMIC-NEXT:    retl
11210 ; DARWIN-32-PIC-LABEL: dcaller:
11211 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11212 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11213 ; DARWIN-32-PIC-NEXT:    calll _dcallee
11214 ; DARWIN-32-PIC-NEXT:    calll _dcallee
11215 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11216 ; DARWIN-32-PIC-NEXT:    retl
11218 ; DARWIN-64-STATIC-LABEL: dcaller:
11219 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11220 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11221 ; DARWIN-64-STATIC-NEXT:    callq _dcallee
11222 ; DARWIN-64-STATIC-NEXT:    callq _dcallee
11223 ; DARWIN-64-STATIC-NEXT:    popq %rax
11224 ; DARWIN-64-STATIC-NEXT:    retq
11226 ; DARWIN-64-DYNAMIC-LABEL: dcaller:
11227 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11228 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11229 ; DARWIN-64-DYNAMIC-NEXT:    callq _dcallee
11230 ; DARWIN-64-DYNAMIC-NEXT:    callq _dcallee
11231 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11232 ; DARWIN-64-DYNAMIC-NEXT:    retq
11234 ; DARWIN-64-PIC-LABEL: dcaller:
11235 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11236 ; DARWIN-64-PIC-NEXT:    pushq %rax
11237 ; DARWIN-64-PIC-NEXT:    callq _dcallee
11238 ; DARWIN-64-PIC-NEXT:    callq _dcallee
11239 ; DARWIN-64-PIC-NEXT:    popq %rax
11240 ; DARWIN-64-PIC-NEXT:    retq
11242 entry:
11243         call void @dcallee() nounwind
11244         call void @dcallee() nounwind
11245         ret void
11248 define dso_local void @lcaller() nounwind {
11249 ; LINUX-64-STATIC-LABEL: lcaller:
11250 ; LINUX-64-STATIC:       # %bb.0: # %entry
11251 ; LINUX-64-STATIC-NEXT:    pushq %rax
11252 ; LINUX-64-STATIC-NEXT:    callq lcallee
11253 ; LINUX-64-STATIC-NEXT:    callq lcallee
11254 ; LINUX-64-STATIC-NEXT:    popq %rax
11255 ; LINUX-64-STATIC-NEXT:    retq
11257 ; LINUX-32-STATIC-LABEL: lcaller:
11258 ; LINUX-32-STATIC:       # %bb.0: # %entry
11259 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11260 ; LINUX-32-STATIC-NEXT:    calll lcallee
11261 ; LINUX-32-STATIC-NEXT:    calll lcallee
11262 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11263 ; LINUX-32-STATIC-NEXT:    retl
11265 ; LINUX-32-PIC-LABEL: lcaller:
11266 ; LINUX-32-PIC:       # %bb.0: # %entry
11267 ; LINUX-32-PIC-NEXT:    pushl %ebx
11268 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11269 ; LINUX-32-PIC-NEXT:    calll .L138$pb
11270 ; LINUX-32-PIC-NEXT:  .L138$pb:
11271 ; LINUX-32-PIC-NEXT:    popl %ebx
11272 ; LINUX-32-PIC-NEXT:  .Ltmp138:
11273 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx
11274 ; LINUX-32-PIC-NEXT:    calll .Llcallee$local
11275 ; LINUX-32-PIC-NEXT:    calll .Llcallee$local
11276 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11277 ; LINUX-32-PIC-NEXT:    popl %ebx
11278 ; LINUX-32-PIC-NEXT:    retl
11280 ; LINUX-64-PIC-LABEL: lcaller:
11281 ; LINUX-64-PIC:       # %bb.0: # %entry
11282 ; LINUX-64-PIC-NEXT:    pushq %rax
11283 ; LINUX-64-PIC-NEXT:    callq .Llcallee$local
11284 ; LINUX-64-PIC-NEXT:    callq .Llcallee$local
11285 ; LINUX-64-PIC-NEXT:    popq %rax
11286 ; LINUX-64-PIC-NEXT:    retq
11288 ; DARWIN-32-STATIC-LABEL: lcaller:
11289 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11290 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11291 ; DARWIN-32-STATIC-NEXT:    calll _lcallee
11292 ; DARWIN-32-STATIC-NEXT:    calll _lcallee
11293 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11294 ; DARWIN-32-STATIC-NEXT:    retl
11296 ; DARWIN-32-DYNAMIC-LABEL: lcaller:
11297 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11298 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11299 ; DARWIN-32-DYNAMIC-NEXT:    calll _lcallee
11300 ; DARWIN-32-DYNAMIC-NEXT:    calll _lcallee
11301 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11302 ; DARWIN-32-DYNAMIC-NEXT:    retl
11304 ; DARWIN-32-PIC-LABEL: lcaller:
11305 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11306 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11307 ; DARWIN-32-PIC-NEXT:    calll _lcallee
11308 ; DARWIN-32-PIC-NEXT:    calll _lcallee
11309 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11310 ; DARWIN-32-PIC-NEXT:    retl
11312 ; DARWIN-64-STATIC-LABEL: lcaller:
11313 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11314 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11315 ; DARWIN-64-STATIC-NEXT:    callq _lcallee
11316 ; DARWIN-64-STATIC-NEXT:    callq _lcallee
11317 ; DARWIN-64-STATIC-NEXT:    popq %rax
11318 ; DARWIN-64-STATIC-NEXT:    retq
11320 ; DARWIN-64-DYNAMIC-LABEL: lcaller:
11321 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11322 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11323 ; DARWIN-64-DYNAMIC-NEXT:    callq _lcallee
11324 ; DARWIN-64-DYNAMIC-NEXT:    callq _lcallee
11325 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11326 ; DARWIN-64-DYNAMIC-NEXT:    retq
11328 ; DARWIN-64-PIC-LABEL: lcaller:
11329 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11330 ; DARWIN-64-PIC-NEXT:    pushq %rax
11331 ; DARWIN-64-PIC-NEXT:    callq _lcallee
11332 ; DARWIN-64-PIC-NEXT:    callq _lcallee
11333 ; DARWIN-64-PIC-NEXT:    popq %rax
11334 ; DARWIN-64-PIC-NEXT:    retq
11336 entry:
11337         call void @lcallee() nounwind
11338         call void @lcallee() nounwind
11339         ret void
11342 define dso_local void @tailcaller() nounwind {
11343 ; LINUX-64-STATIC-LABEL: tailcaller:
11344 ; LINUX-64-STATIC:       # %bb.0: # %entry
11345 ; LINUX-64-STATIC-NEXT:    pushq %rax
11346 ; LINUX-64-STATIC-NEXT:    callq callee@PLT
11347 ; LINUX-64-STATIC-NEXT:    popq %rax
11348 ; LINUX-64-STATIC-NEXT:    retq
11350 ; LINUX-32-STATIC-LABEL: tailcaller:
11351 ; LINUX-32-STATIC:       # %bb.0: # %entry
11352 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11353 ; LINUX-32-STATIC-NEXT:    calll callee@PLT
11354 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11355 ; LINUX-32-STATIC-NEXT:    retl
11357 ; LINUX-32-PIC-LABEL: tailcaller:
11358 ; LINUX-32-PIC:       # %bb.0: # %entry
11359 ; LINUX-32-PIC-NEXT:    pushl %ebx
11360 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11361 ; LINUX-32-PIC-NEXT:    calll .L139$pb
11362 ; LINUX-32-PIC-NEXT:  .L139$pb:
11363 ; LINUX-32-PIC-NEXT:    popl %ebx
11364 ; LINUX-32-PIC-NEXT:  .Ltmp139:
11365 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx
11366 ; LINUX-32-PIC-NEXT:    calll callee@PLT
11367 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11368 ; LINUX-32-PIC-NEXT:    popl %ebx
11369 ; LINUX-32-PIC-NEXT:    retl
11371 ; LINUX-64-PIC-LABEL: tailcaller:
11372 ; LINUX-64-PIC:       # %bb.0: # %entry
11373 ; LINUX-64-PIC-NEXT:    pushq %rax
11374 ; LINUX-64-PIC-NEXT:    callq callee@PLT
11375 ; LINUX-64-PIC-NEXT:    popq %rax
11376 ; LINUX-64-PIC-NEXT:    retq
11378 ; DARWIN-32-STATIC-LABEL: tailcaller:
11379 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11380 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11381 ; DARWIN-32-STATIC-NEXT:    calll _callee
11382 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11383 ; DARWIN-32-STATIC-NEXT:    retl
11385 ; DARWIN-32-DYNAMIC-LABEL: tailcaller:
11386 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11387 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11388 ; DARWIN-32-DYNAMIC-NEXT:    calll _callee
11389 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11390 ; DARWIN-32-DYNAMIC-NEXT:    retl
11392 ; DARWIN-32-PIC-LABEL: tailcaller:
11393 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11394 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11395 ; DARWIN-32-PIC-NEXT:    calll _callee
11396 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11397 ; DARWIN-32-PIC-NEXT:    retl
11399 ; DARWIN-64-STATIC-LABEL: tailcaller:
11400 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11401 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11402 ; DARWIN-64-STATIC-NEXT:    callq _callee
11403 ; DARWIN-64-STATIC-NEXT:    popq %rax
11404 ; DARWIN-64-STATIC-NEXT:    retq
11406 ; DARWIN-64-DYNAMIC-LABEL: tailcaller:
11407 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11408 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11409 ; DARWIN-64-DYNAMIC-NEXT:    callq _callee
11410 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11411 ; DARWIN-64-DYNAMIC-NEXT:    retq
11413 ; DARWIN-64-PIC-LABEL: tailcaller:
11414 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11415 ; DARWIN-64-PIC-NEXT:    pushq %rax
11416 ; DARWIN-64-PIC-NEXT:    callq _callee
11417 ; DARWIN-64-PIC-NEXT:    popq %rax
11418 ; DARWIN-64-PIC-NEXT:    retq
11420 entry:
11421         call void @callee() nounwind
11422         ret void
11425 define dso_local void @dtailcaller() nounwind {
11426 ; LINUX-64-STATIC-LABEL: dtailcaller:
11427 ; LINUX-64-STATIC:       # %bb.0: # %entry
11428 ; LINUX-64-STATIC-NEXT:    pushq %rax
11429 ; LINUX-64-STATIC-NEXT:    callq dcallee
11430 ; LINUX-64-STATIC-NEXT:    popq %rax
11431 ; LINUX-64-STATIC-NEXT:    retq
11433 ; LINUX-32-STATIC-LABEL: dtailcaller:
11434 ; LINUX-32-STATIC:       # %bb.0: # %entry
11435 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11436 ; LINUX-32-STATIC-NEXT:    calll dcallee
11437 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11438 ; LINUX-32-STATIC-NEXT:    retl
11440 ; LINUX-32-PIC-LABEL: dtailcaller:
11441 ; LINUX-32-PIC:       # %bb.0: # %entry
11442 ; LINUX-32-PIC-NEXT:    pushl %ebx
11443 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11444 ; LINUX-32-PIC-NEXT:    calll .L140$pb
11445 ; LINUX-32-PIC-NEXT:  .L140$pb:
11446 ; LINUX-32-PIC-NEXT:    popl %ebx
11447 ; LINUX-32-PIC-NEXT:  .Ltmp140:
11448 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx
11449 ; LINUX-32-PIC-NEXT:    calll dcallee
11450 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11451 ; LINUX-32-PIC-NEXT:    popl %ebx
11452 ; LINUX-32-PIC-NEXT:    retl
11454 ; LINUX-64-PIC-LABEL: dtailcaller:
11455 ; LINUX-64-PIC:       # %bb.0: # %entry
11456 ; LINUX-64-PIC-NEXT:    pushq %rax
11457 ; LINUX-64-PIC-NEXT:    callq dcallee
11458 ; LINUX-64-PIC-NEXT:    popq %rax
11459 ; LINUX-64-PIC-NEXT:    retq
11461 ; DARWIN-32-STATIC-LABEL: dtailcaller:
11462 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11463 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11464 ; DARWIN-32-STATIC-NEXT:    calll _dcallee
11465 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11466 ; DARWIN-32-STATIC-NEXT:    retl
11468 ; DARWIN-32-DYNAMIC-LABEL: dtailcaller:
11469 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11470 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11471 ; DARWIN-32-DYNAMIC-NEXT:    calll _dcallee
11472 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11473 ; DARWIN-32-DYNAMIC-NEXT:    retl
11475 ; DARWIN-32-PIC-LABEL: dtailcaller:
11476 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11477 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11478 ; DARWIN-32-PIC-NEXT:    calll _dcallee
11479 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11480 ; DARWIN-32-PIC-NEXT:    retl
11482 ; DARWIN-64-STATIC-LABEL: dtailcaller:
11483 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11484 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11485 ; DARWIN-64-STATIC-NEXT:    callq _dcallee
11486 ; DARWIN-64-STATIC-NEXT:    popq %rax
11487 ; DARWIN-64-STATIC-NEXT:    retq
11489 ; DARWIN-64-DYNAMIC-LABEL: dtailcaller:
11490 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11491 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11492 ; DARWIN-64-DYNAMIC-NEXT:    callq _dcallee
11493 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11494 ; DARWIN-64-DYNAMIC-NEXT:    retq
11496 ; DARWIN-64-PIC-LABEL: dtailcaller:
11497 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11498 ; DARWIN-64-PIC-NEXT:    pushq %rax
11499 ; DARWIN-64-PIC-NEXT:    callq _dcallee
11500 ; DARWIN-64-PIC-NEXT:    popq %rax
11501 ; DARWIN-64-PIC-NEXT:    retq
11503 entry:
11504         call void @dcallee() nounwind
11505         ret void
11508 define dso_local void @ltailcaller() nounwind {
11509 ; LINUX-64-STATIC-LABEL: ltailcaller:
11510 ; LINUX-64-STATIC:       # %bb.0: # %entry
11511 ; LINUX-64-STATIC-NEXT:    pushq %rax
11512 ; LINUX-64-STATIC-NEXT:    callq lcallee
11513 ; LINUX-64-STATIC-NEXT:    popq %rax
11514 ; LINUX-64-STATIC-NEXT:    retq
11516 ; LINUX-32-STATIC-LABEL: ltailcaller:
11517 ; LINUX-32-STATIC:       # %bb.0: # %entry
11518 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11519 ; LINUX-32-STATIC-NEXT:    calll lcallee
11520 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11521 ; LINUX-32-STATIC-NEXT:    retl
11523 ; LINUX-32-PIC-LABEL: ltailcaller:
11524 ; LINUX-32-PIC:       # %bb.0: # %entry
11525 ; LINUX-32-PIC-NEXT:    pushl %ebx
11526 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11527 ; LINUX-32-PIC-NEXT:    calll .L141$pb
11528 ; LINUX-32-PIC-NEXT:  .L141$pb:
11529 ; LINUX-32-PIC-NEXT:    popl %ebx
11530 ; LINUX-32-PIC-NEXT:  .Ltmp141:
11531 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx
11532 ; LINUX-32-PIC-NEXT:    calll .Llcallee$local
11533 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11534 ; LINUX-32-PIC-NEXT:    popl %ebx
11535 ; LINUX-32-PIC-NEXT:    retl
11537 ; LINUX-64-PIC-LABEL: ltailcaller:
11538 ; LINUX-64-PIC:       # %bb.0: # %entry
11539 ; LINUX-64-PIC-NEXT:    pushq %rax
11540 ; LINUX-64-PIC-NEXT:    callq .Llcallee$local
11541 ; LINUX-64-PIC-NEXT:    popq %rax
11542 ; LINUX-64-PIC-NEXT:    retq
11544 ; DARWIN-32-STATIC-LABEL: ltailcaller:
11545 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11546 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11547 ; DARWIN-32-STATIC-NEXT:    calll _lcallee
11548 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11549 ; DARWIN-32-STATIC-NEXT:    retl
11551 ; DARWIN-32-DYNAMIC-LABEL: ltailcaller:
11552 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11553 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11554 ; DARWIN-32-DYNAMIC-NEXT:    calll _lcallee
11555 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11556 ; DARWIN-32-DYNAMIC-NEXT:    retl
11558 ; DARWIN-32-PIC-LABEL: ltailcaller:
11559 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11560 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
11561 ; DARWIN-32-PIC-NEXT:    calll _lcallee
11562 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
11563 ; DARWIN-32-PIC-NEXT:    retl
11565 ; DARWIN-64-STATIC-LABEL: ltailcaller:
11566 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11567 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11568 ; DARWIN-64-STATIC-NEXT:    callq _lcallee
11569 ; DARWIN-64-STATIC-NEXT:    popq %rax
11570 ; DARWIN-64-STATIC-NEXT:    retq
11572 ; DARWIN-64-DYNAMIC-LABEL: ltailcaller:
11573 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11574 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11575 ; DARWIN-64-DYNAMIC-NEXT:    callq _lcallee
11576 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11577 ; DARWIN-64-DYNAMIC-NEXT:    retq
11579 ; DARWIN-64-PIC-LABEL: ltailcaller:
11580 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11581 ; DARWIN-64-PIC-NEXT:    pushq %rax
11582 ; DARWIN-64-PIC-NEXT:    callq _lcallee
11583 ; DARWIN-64-PIC-NEXT:    popq %rax
11584 ; DARWIN-64-PIC-NEXT:    retq
11586 entry:
11587         call void @lcallee() nounwind
11588         ret void
11591 define dso_local void @icaller() nounwind {
11592 ; LINUX-64-STATIC-LABEL: icaller:
11593 ; LINUX-64-STATIC:       # %bb.0: # %entry
11594 ; LINUX-64-STATIC-NEXT:    pushq %rbx
11595 ; LINUX-64-STATIC-NEXT:    movq ifunc@GOTPCREL(%rip), %rbx
11596 ; LINUX-64-STATIC-NEXT:    callq *(%rbx)
11597 ; LINUX-64-STATIC-NEXT:    callq *(%rbx)
11598 ; LINUX-64-STATIC-NEXT:    popq %rbx
11599 ; LINUX-64-STATIC-NEXT:    retq
11601 ; LINUX-32-STATIC-LABEL: icaller:
11602 ; LINUX-32-STATIC:       # %bb.0: # %entry
11603 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11604 ; LINUX-32-STATIC-NEXT:    calll *ifunc
11605 ; LINUX-32-STATIC-NEXT:    calll *ifunc
11606 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11607 ; LINUX-32-STATIC-NEXT:    retl
11609 ; LINUX-32-PIC-LABEL: icaller:
11610 ; LINUX-32-PIC:       # %bb.0: # %entry
11611 ; LINUX-32-PIC-NEXT:    pushl %ebx
11612 ; LINUX-32-PIC-NEXT:    pushl %esi
11613 ; LINUX-32-PIC-NEXT:    pushl %eax
11614 ; LINUX-32-PIC-NEXT:    calll .L142$pb
11615 ; LINUX-32-PIC-NEXT:  .L142$pb:
11616 ; LINUX-32-PIC-NEXT:    popl %ebx
11617 ; LINUX-32-PIC-NEXT:  .Ltmp142:
11618 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx
11619 ; LINUX-32-PIC-NEXT:    movl ifunc@GOT(%ebx), %esi
11620 ; LINUX-32-PIC-NEXT:    calll *(%esi)
11621 ; LINUX-32-PIC-NEXT:    calll *(%esi)
11622 ; LINUX-32-PIC-NEXT:    addl $4, %esp
11623 ; LINUX-32-PIC-NEXT:    popl %esi
11624 ; LINUX-32-PIC-NEXT:    popl %ebx
11625 ; LINUX-32-PIC-NEXT:    retl
11627 ; LINUX-64-PIC-LABEL: icaller:
11628 ; LINUX-64-PIC:       # %bb.0: # %entry
11629 ; LINUX-64-PIC-NEXT:    pushq %rbx
11630 ; LINUX-64-PIC-NEXT:    movq ifunc@GOTPCREL(%rip), %rbx
11631 ; LINUX-64-PIC-NEXT:    callq *(%rbx)
11632 ; LINUX-64-PIC-NEXT:    callq *(%rbx)
11633 ; LINUX-64-PIC-NEXT:    popq %rbx
11634 ; LINUX-64-PIC-NEXT:    retq
11636 ; DARWIN-32-STATIC-LABEL: icaller:
11637 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11638 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11639 ; DARWIN-32-STATIC-NEXT:    calll *_ifunc
11640 ; DARWIN-32-STATIC-NEXT:    calll *_ifunc
11641 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11642 ; DARWIN-32-STATIC-NEXT:    retl
11644 ; DARWIN-32-DYNAMIC-LABEL: icaller:
11645 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11646 ; DARWIN-32-DYNAMIC-NEXT:    pushl %esi
11647 ; DARWIN-32-DYNAMIC-NEXT:    subl $8, %esp
11648 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ifunc$non_lazy_ptr, %esi
11649 ; DARWIN-32-DYNAMIC-NEXT:    calll *(%esi)
11650 ; DARWIN-32-DYNAMIC-NEXT:    calll *(%esi)
11651 ; DARWIN-32-DYNAMIC-NEXT:    addl $8, %esp
11652 ; DARWIN-32-DYNAMIC-NEXT:    popl %esi
11653 ; DARWIN-32-DYNAMIC-NEXT:    retl
11655 ; DARWIN-32-PIC-LABEL: icaller:
11656 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11657 ; DARWIN-32-PIC-NEXT:    pushl %esi
11658 ; DARWIN-32-PIC-NEXT:    subl $8, %esp
11659 ; DARWIN-32-PIC-NEXT:    calll L142$pb
11660 ; DARWIN-32-PIC-NEXT:  L142$pb:
11661 ; DARWIN-32-PIC-NEXT:    popl %eax
11662 ; DARWIN-32-PIC-NEXT:    movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi
11663 ; DARWIN-32-PIC-NEXT:    calll *(%esi)
11664 ; DARWIN-32-PIC-NEXT:    calll *(%esi)
11665 ; DARWIN-32-PIC-NEXT:    addl $8, %esp
11666 ; DARWIN-32-PIC-NEXT:    popl %esi
11667 ; DARWIN-32-PIC-NEXT:    retl
11669 ; DARWIN-64-STATIC-LABEL: icaller:
11670 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11671 ; DARWIN-64-STATIC-NEXT:    pushq %rbx
11672 ; DARWIN-64-STATIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
11673 ; DARWIN-64-STATIC-NEXT:    callq *(%rbx)
11674 ; DARWIN-64-STATIC-NEXT:    callq *(%rbx)
11675 ; DARWIN-64-STATIC-NEXT:    popq %rbx
11676 ; DARWIN-64-STATIC-NEXT:    retq
11678 ; DARWIN-64-DYNAMIC-LABEL: icaller:
11679 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11680 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rbx
11681 ; DARWIN-64-DYNAMIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
11682 ; DARWIN-64-DYNAMIC-NEXT:    callq *(%rbx)
11683 ; DARWIN-64-DYNAMIC-NEXT:    callq *(%rbx)
11684 ; DARWIN-64-DYNAMIC-NEXT:    popq %rbx
11685 ; DARWIN-64-DYNAMIC-NEXT:    retq
11687 ; DARWIN-64-PIC-LABEL: icaller:
11688 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11689 ; DARWIN-64-PIC-NEXT:    pushq %rbx
11690 ; DARWIN-64-PIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
11691 ; DARWIN-64-PIC-NEXT:    callq *(%rbx)
11692 ; DARWIN-64-PIC-NEXT:    callq *(%rbx)
11693 ; DARWIN-64-PIC-NEXT:    popq %rbx
11694 ; DARWIN-64-PIC-NEXT:    retq
11696 entry:
11697         %0 = load ptr, ptr @ifunc, align 8
11698         call void %0() nounwind
11699         %1 = load ptr, ptr @ifunc, align 8
11700         call void %1() nounwind
11701         ret void
11704 define dso_local void @dicaller() nounwind {
11705 ; LINUX-64-STATIC-LABEL: dicaller:
11706 ; LINUX-64-STATIC:       # %bb.0: # %entry
11707 ; LINUX-64-STATIC-NEXT:    pushq %rax
11708 ; LINUX-64-STATIC-NEXT:    callq *difunc(%rip)
11709 ; LINUX-64-STATIC-NEXT:    callq *difunc(%rip)
11710 ; LINUX-64-STATIC-NEXT:    popq %rax
11711 ; LINUX-64-STATIC-NEXT:    retq
11713 ; LINUX-32-STATIC-LABEL: dicaller:
11714 ; LINUX-32-STATIC:       # %bb.0: # %entry
11715 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11716 ; LINUX-32-STATIC-NEXT:    calll *difunc
11717 ; LINUX-32-STATIC-NEXT:    calll *difunc
11718 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11719 ; LINUX-32-STATIC-NEXT:    retl
11721 ; LINUX-32-PIC-LABEL: dicaller:
11722 ; LINUX-32-PIC:       # %bb.0: # %entry
11723 ; LINUX-32-PIC-NEXT:    pushl %ebx
11724 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11725 ; LINUX-32-PIC-NEXT:    calll .L143$pb
11726 ; LINUX-32-PIC-NEXT:  .L143$pb:
11727 ; LINUX-32-PIC-NEXT:    popl %ebx
11728 ; LINUX-32-PIC-NEXT:  .Ltmp143:
11729 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx
11730 ; LINUX-32-PIC-NEXT:    calll *.Ldifunc$local@GOTOFF(%ebx)
11731 ; LINUX-32-PIC-NEXT:    calll *.Ldifunc$local@GOTOFF(%ebx)
11732 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11733 ; LINUX-32-PIC-NEXT:    popl %ebx
11734 ; LINUX-32-PIC-NEXT:    retl
11736 ; LINUX-64-PIC-LABEL: dicaller:
11737 ; LINUX-64-PIC:       # %bb.0: # %entry
11738 ; LINUX-64-PIC-NEXT:    pushq %rax
11739 ; LINUX-64-PIC-NEXT:    callq *.Ldifunc$local(%rip)
11740 ; LINUX-64-PIC-NEXT:    callq *.Ldifunc$local(%rip)
11741 ; LINUX-64-PIC-NEXT:    popq %rax
11742 ; LINUX-64-PIC-NEXT:    retq
11744 ; DARWIN-32-STATIC-LABEL: dicaller:
11745 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11746 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11747 ; DARWIN-32-STATIC-NEXT:    calll *_difunc
11748 ; DARWIN-32-STATIC-NEXT:    calll *_difunc
11749 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11750 ; DARWIN-32-STATIC-NEXT:    retl
11752 ; DARWIN-32-DYNAMIC-LABEL: dicaller:
11753 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11754 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11755 ; DARWIN-32-DYNAMIC-NEXT:    calll *_difunc
11756 ; DARWIN-32-DYNAMIC-NEXT:    calll *_difunc
11757 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11758 ; DARWIN-32-DYNAMIC-NEXT:    retl
11760 ; DARWIN-32-PIC-LABEL: dicaller:
11761 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11762 ; DARWIN-32-PIC-NEXT:    pushl %esi
11763 ; DARWIN-32-PIC-NEXT:    subl $8, %esp
11764 ; DARWIN-32-PIC-NEXT:    calll L143$pb
11765 ; DARWIN-32-PIC-NEXT:  L143$pb:
11766 ; DARWIN-32-PIC-NEXT:    popl %esi
11767 ; DARWIN-32-PIC-NEXT:    calll *_difunc-L143$pb(%esi)
11768 ; DARWIN-32-PIC-NEXT:    calll *_difunc-L143$pb(%esi)
11769 ; DARWIN-32-PIC-NEXT:    addl $8, %esp
11770 ; DARWIN-32-PIC-NEXT:    popl %esi
11771 ; DARWIN-32-PIC-NEXT:    retl
11773 ; DARWIN-64-STATIC-LABEL: dicaller:
11774 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11775 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11776 ; DARWIN-64-STATIC-NEXT:    callq *_difunc(%rip)
11777 ; DARWIN-64-STATIC-NEXT:    callq *_difunc(%rip)
11778 ; DARWIN-64-STATIC-NEXT:    popq %rax
11779 ; DARWIN-64-STATIC-NEXT:    retq
11781 ; DARWIN-64-DYNAMIC-LABEL: dicaller:
11782 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11783 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11784 ; DARWIN-64-DYNAMIC-NEXT:    callq *_difunc(%rip)
11785 ; DARWIN-64-DYNAMIC-NEXT:    callq *_difunc(%rip)
11786 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11787 ; DARWIN-64-DYNAMIC-NEXT:    retq
11789 ; DARWIN-64-PIC-LABEL: dicaller:
11790 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11791 ; DARWIN-64-PIC-NEXT:    pushq %rax
11792 ; DARWIN-64-PIC-NEXT:    callq *_difunc(%rip)
11793 ; DARWIN-64-PIC-NEXT:    callq *_difunc(%rip)
11794 ; DARWIN-64-PIC-NEXT:    popq %rax
11795 ; DARWIN-64-PIC-NEXT:    retq
11797 entry:
11798         %0 = load ptr, ptr @difunc, align 8
11799         call void %0() nounwind
11800         %1 = load ptr, ptr @difunc, align 8
11801         call void %1() nounwind
11802         ret void
11805 define dso_local void @licaller() nounwind {
11806 ; LINUX-64-STATIC-LABEL: licaller:
11807 ; LINUX-64-STATIC:       # %bb.0: # %entry
11808 ; LINUX-64-STATIC-NEXT:    pushq %rax
11809 ; LINUX-64-STATIC-NEXT:    callq *lifunc(%rip)
11810 ; LINUX-64-STATIC-NEXT:    callq *lifunc(%rip)
11811 ; LINUX-64-STATIC-NEXT:    popq %rax
11812 ; LINUX-64-STATIC-NEXT:    retq
11814 ; LINUX-32-STATIC-LABEL: licaller:
11815 ; LINUX-32-STATIC:       # %bb.0: # %entry
11816 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11817 ; LINUX-32-STATIC-NEXT:    calll *lifunc
11818 ; LINUX-32-STATIC-NEXT:    calll *lifunc
11819 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11820 ; LINUX-32-STATIC-NEXT:    retl
11822 ; LINUX-32-PIC-LABEL: licaller:
11823 ; LINUX-32-PIC:       # %bb.0: # %entry
11824 ; LINUX-32-PIC-NEXT:    pushl %ebx
11825 ; LINUX-32-PIC-NEXT:    subl $8, %esp
11826 ; LINUX-32-PIC-NEXT:    calll .L144$pb
11827 ; LINUX-32-PIC-NEXT:  .L144$pb:
11828 ; LINUX-32-PIC-NEXT:    popl %ebx
11829 ; LINUX-32-PIC-NEXT:  .Ltmp144:
11830 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx
11831 ; LINUX-32-PIC-NEXT:    calll *lifunc@GOTOFF(%ebx)
11832 ; LINUX-32-PIC-NEXT:    calll *lifunc@GOTOFF(%ebx)
11833 ; LINUX-32-PIC-NEXT:    addl $8, %esp
11834 ; LINUX-32-PIC-NEXT:    popl %ebx
11835 ; LINUX-32-PIC-NEXT:    retl
11837 ; LINUX-64-PIC-LABEL: licaller:
11838 ; LINUX-64-PIC:       # %bb.0: # %entry
11839 ; LINUX-64-PIC-NEXT:    pushq %rax
11840 ; LINUX-64-PIC-NEXT:    callq *lifunc(%rip)
11841 ; LINUX-64-PIC-NEXT:    callq *lifunc(%rip)
11842 ; LINUX-64-PIC-NEXT:    popq %rax
11843 ; LINUX-64-PIC-NEXT:    retq
11845 ; DARWIN-32-STATIC-LABEL: licaller:
11846 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11847 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11848 ; DARWIN-32-STATIC-NEXT:    calll *_lifunc
11849 ; DARWIN-32-STATIC-NEXT:    calll *_lifunc
11850 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11851 ; DARWIN-32-STATIC-NEXT:    retl
11853 ; DARWIN-32-DYNAMIC-LABEL: licaller:
11854 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11855 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
11856 ; DARWIN-32-DYNAMIC-NEXT:    calll *_lifunc
11857 ; DARWIN-32-DYNAMIC-NEXT:    calll *_lifunc
11858 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
11859 ; DARWIN-32-DYNAMIC-NEXT:    retl
11861 ; DARWIN-32-PIC-LABEL: licaller:
11862 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11863 ; DARWIN-32-PIC-NEXT:    pushl %esi
11864 ; DARWIN-32-PIC-NEXT:    subl $8, %esp
11865 ; DARWIN-32-PIC-NEXT:    calll L144$pb
11866 ; DARWIN-32-PIC-NEXT:  L144$pb:
11867 ; DARWIN-32-PIC-NEXT:    popl %esi
11868 ; DARWIN-32-PIC-NEXT:    calll *_lifunc-L144$pb(%esi)
11869 ; DARWIN-32-PIC-NEXT:    calll *_lifunc-L144$pb(%esi)
11870 ; DARWIN-32-PIC-NEXT:    addl $8, %esp
11871 ; DARWIN-32-PIC-NEXT:    popl %esi
11872 ; DARWIN-32-PIC-NEXT:    retl
11874 ; DARWIN-64-STATIC-LABEL: licaller:
11875 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11876 ; DARWIN-64-STATIC-NEXT:    pushq %rax
11877 ; DARWIN-64-STATIC-NEXT:    callq *_lifunc(%rip)
11878 ; DARWIN-64-STATIC-NEXT:    callq *_lifunc(%rip)
11879 ; DARWIN-64-STATIC-NEXT:    popq %rax
11880 ; DARWIN-64-STATIC-NEXT:    retq
11882 ; DARWIN-64-DYNAMIC-LABEL: licaller:
11883 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11884 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
11885 ; DARWIN-64-DYNAMIC-NEXT:    callq *_lifunc(%rip)
11886 ; DARWIN-64-DYNAMIC-NEXT:    callq *_lifunc(%rip)
11887 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
11888 ; DARWIN-64-DYNAMIC-NEXT:    retq
11890 ; DARWIN-64-PIC-LABEL: licaller:
11891 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
11892 ; DARWIN-64-PIC-NEXT:    pushq %rax
11893 ; DARWIN-64-PIC-NEXT:    callq *_lifunc(%rip)
11894 ; DARWIN-64-PIC-NEXT:    callq *_lifunc(%rip)
11895 ; DARWIN-64-PIC-NEXT:    popq %rax
11896 ; DARWIN-64-PIC-NEXT:    retq
11898 entry:
11899         %0 = load ptr, ptr @lifunc, align 8
11900         call void %0() nounwind
11901         %1 = load ptr, ptr @lifunc, align 8
11902         call void %1() nounwind
11903         ret void
11906 define dso_local void @itailcaller() nounwind {
11907 ; LINUX-64-STATIC-LABEL: itailcaller:
11908 ; LINUX-64-STATIC:       # %bb.0: # %entry
11909 ; LINUX-64-STATIC-NEXT:    pushq %rbx
11910 ; LINUX-64-STATIC-NEXT:    movq ifunc@GOTPCREL(%rip), %rbx
11911 ; LINUX-64-STATIC-NEXT:    callq *(%rbx)
11912 ; LINUX-64-STATIC-NEXT:    callq *(%rbx)
11913 ; LINUX-64-STATIC-NEXT:    popq %rbx
11914 ; LINUX-64-STATIC-NEXT:    retq
11916 ; LINUX-32-STATIC-LABEL: itailcaller:
11917 ; LINUX-32-STATIC:       # %bb.0: # %entry
11918 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
11919 ; LINUX-32-STATIC-NEXT:    calll *ifunc
11920 ; LINUX-32-STATIC-NEXT:    calll *ifunc
11921 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
11922 ; LINUX-32-STATIC-NEXT:    retl
11924 ; LINUX-32-PIC-LABEL: itailcaller:
11925 ; LINUX-32-PIC:       # %bb.0: # %entry
11926 ; LINUX-32-PIC-NEXT:    pushl %ebx
11927 ; LINUX-32-PIC-NEXT:    pushl %esi
11928 ; LINUX-32-PIC-NEXT:    pushl %eax
11929 ; LINUX-32-PIC-NEXT:    calll .L145$pb
11930 ; LINUX-32-PIC-NEXT:  .L145$pb:
11931 ; LINUX-32-PIC-NEXT:    popl %ebx
11932 ; LINUX-32-PIC-NEXT:  .Ltmp145:
11933 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx
11934 ; LINUX-32-PIC-NEXT:    movl ifunc@GOT(%ebx), %esi
11935 ; LINUX-32-PIC-NEXT:    calll *(%esi)
11936 ; LINUX-32-PIC-NEXT:    calll *(%esi)
11937 ; LINUX-32-PIC-NEXT:    addl $4, %esp
11938 ; LINUX-32-PIC-NEXT:    popl %esi
11939 ; LINUX-32-PIC-NEXT:    popl %ebx
11940 ; LINUX-32-PIC-NEXT:    retl
11942 ; LINUX-64-PIC-LABEL: itailcaller:
11943 ; LINUX-64-PIC:       # %bb.0: # %entry
11944 ; LINUX-64-PIC-NEXT:    pushq %rbx
11945 ; LINUX-64-PIC-NEXT:    movq ifunc@GOTPCREL(%rip), %rbx
11946 ; LINUX-64-PIC-NEXT:    callq *(%rbx)
11947 ; LINUX-64-PIC-NEXT:    callq *(%rbx)
11948 ; LINUX-64-PIC-NEXT:    popq %rbx
11949 ; LINUX-64-PIC-NEXT:    retq
11951 ; DARWIN-32-STATIC-LABEL: itailcaller:
11952 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
11953 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
11954 ; DARWIN-32-STATIC-NEXT:    calll *_ifunc
11955 ; DARWIN-32-STATIC-NEXT:    calll *_ifunc
11956 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
11957 ; DARWIN-32-STATIC-NEXT:    retl
11959 ; DARWIN-32-DYNAMIC-LABEL: itailcaller:
11960 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
11961 ; DARWIN-32-DYNAMIC-NEXT:    pushl %esi
11962 ; DARWIN-32-DYNAMIC-NEXT:    subl $8, %esp
11963 ; DARWIN-32-DYNAMIC-NEXT:    movl L_ifunc$non_lazy_ptr, %esi
11964 ; DARWIN-32-DYNAMIC-NEXT:    calll *(%esi)
11965 ; DARWIN-32-DYNAMIC-NEXT:    calll *(%esi)
11966 ; DARWIN-32-DYNAMIC-NEXT:    addl $8, %esp
11967 ; DARWIN-32-DYNAMIC-NEXT:    popl %esi
11968 ; DARWIN-32-DYNAMIC-NEXT:    retl
11970 ; DARWIN-32-PIC-LABEL: itailcaller:
11971 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
11972 ; DARWIN-32-PIC-NEXT:    pushl %esi
11973 ; DARWIN-32-PIC-NEXT:    subl $8, %esp
11974 ; DARWIN-32-PIC-NEXT:    calll L145$pb
11975 ; DARWIN-32-PIC-NEXT:  L145$pb:
11976 ; DARWIN-32-PIC-NEXT:    popl %eax
11977 ; DARWIN-32-PIC-NEXT:    movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi
11978 ; DARWIN-32-PIC-NEXT:    calll *(%esi)
11979 ; DARWIN-32-PIC-NEXT:    calll *(%esi)
11980 ; DARWIN-32-PIC-NEXT:    addl $8, %esp
11981 ; DARWIN-32-PIC-NEXT:    popl %esi
11982 ; DARWIN-32-PIC-NEXT:    retl
11984 ; DARWIN-64-STATIC-LABEL: itailcaller:
11985 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
11986 ; DARWIN-64-STATIC-NEXT:    pushq %rbx
11987 ; DARWIN-64-STATIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
11988 ; DARWIN-64-STATIC-NEXT:    callq *(%rbx)
11989 ; DARWIN-64-STATIC-NEXT:    callq *(%rbx)
11990 ; DARWIN-64-STATIC-NEXT:    popq %rbx
11991 ; DARWIN-64-STATIC-NEXT:    retq
11993 ; DARWIN-64-DYNAMIC-LABEL: itailcaller:
11994 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
11995 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rbx
11996 ; DARWIN-64-DYNAMIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
11997 ; DARWIN-64-DYNAMIC-NEXT:    callq *(%rbx)
11998 ; DARWIN-64-DYNAMIC-NEXT:    callq *(%rbx)
11999 ; DARWIN-64-DYNAMIC-NEXT:    popq %rbx
12000 ; DARWIN-64-DYNAMIC-NEXT:    retq
12002 ; DARWIN-64-PIC-LABEL: itailcaller:
12003 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
12004 ; DARWIN-64-PIC-NEXT:    pushq %rbx
12005 ; DARWIN-64-PIC-NEXT:    movq _ifunc@GOTPCREL(%rip), %rbx
12006 ; DARWIN-64-PIC-NEXT:    callq *(%rbx)
12007 ; DARWIN-64-PIC-NEXT:    callq *(%rbx)
12008 ; DARWIN-64-PIC-NEXT:    popq %rbx
12009 ; DARWIN-64-PIC-NEXT:    retq
12011 entry:
12012         %0 = load ptr, ptr @ifunc, align 8
12013         call void %0() nounwind
12014         %1 = load ptr, ptr @ifunc, align 8
12015         call void %1() nounwind
12016         ret void
12019 define dso_local void @ditailcaller() nounwind {
12020 ; LINUX-64-STATIC-LABEL: ditailcaller:
12021 ; LINUX-64-STATIC:       # %bb.0: # %entry
12022 ; LINUX-64-STATIC-NEXT:    pushq %rax
12023 ; LINUX-64-STATIC-NEXT:    callq *difunc(%rip)
12024 ; LINUX-64-STATIC-NEXT:    popq %rax
12025 ; LINUX-64-STATIC-NEXT:    retq
12027 ; LINUX-32-STATIC-LABEL: ditailcaller:
12028 ; LINUX-32-STATIC:       # %bb.0: # %entry
12029 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
12030 ; LINUX-32-STATIC-NEXT:    calll *difunc
12031 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
12032 ; LINUX-32-STATIC-NEXT:    retl
12034 ; LINUX-32-PIC-LABEL: ditailcaller:
12035 ; LINUX-32-PIC:       # %bb.0: # %entry
12036 ; LINUX-32-PIC-NEXT:    pushl %ebx
12037 ; LINUX-32-PIC-NEXT:    subl $8, %esp
12038 ; LINUX-32-PIC-NEXT:    calll .L146$pb
12039 ; LINUX-32-PIC-NEXT:  .L146$pb:
12040 ; LINUX-32-PIC-NEXT:    popl %ebx
12041 ; LINUX-32-PIC-NEXT:  .Ltmp146:
12042 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx
12043 ; LINUX-32-PIC-NEXT:    calll *.Ldifunc$local@GOTOFF(%ebx)
12044 ; LINUX-32-PIC-NEXT:    addl $8, %esp
12045 ; LINUX-32-PIC-NEXT:    popl %ebx
12046 ; LINUX-32-PIC-NEXT:    retl
12048 ; LINUX-64-PIC-LABEL: ditailcaller:
12049 ; LINUX-64-PIC:       # %bb.0: # %entry
12050 ; LINUX-64-PIC-NEXT:    pushq %rax
12051 ; LINUX-64-PIC-NEXT:    callq *.Ldifunc$local(%rip)
12052 ; LINUX-64-PIC-NEXT:    popq %rax
12053 ; LINUX-64-PIC-NEXT:    retq
12055 ; DARWIN-32-STATIC-LABEL: ditailcaller:
12056 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
12057 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
12058 ; DARWIN-32-STATIC-NEXT:    calll *_difunc
12059 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
12060 ; DARWIN-32-STATIC-NEXT:    retl
12062 ; DARWIN-32-DYNAMIC-LABEL: ditailcaller:
12063 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
12064 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
12065 ; DARWIN-32-DYNAMIC-NEXT:    calll *_difunc
12066 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
12067 ; DARWIN-32-DYNAMIC-NEXT:    retl
12069 ; DARWIN-32-PIC-LABEL: ditailcaller:
12070 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
12071 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
12072 ; DARWIN-32-PIC-NEXT:    calll L146$pb
12073 ; DARWIN-32-PIC-NEXT:  L146$pb:
12074 ; DARWIN-32-PIC-NEXT:    popl %eax
12075 ; DARWIN-32-PIC-NEXT:    calll *_difunc-L146$pb(%eax)
12076 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
12077 ; DARWIN-32-PIC-NEXT:    retl
12079 ; DARWIN-64-STATIC-LABEL: ditailcaller:
12080 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
12081 ; DARWIN-64-STATIC-NEXT:    pushq %rax
12082 ; DARWIN-64-STATIC-NEXT:    callq *_difunc(%rip)
12083 ; DARWIN-64-STATIC-NEXT:    popq %rax
12084 ; DARWIN-64-STATIC-NEXT:    retq
12086 ; DARWIN-64-DYNAMIC-LABEL: ditailcaller:
12087 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
12088 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
12089 ; DARWIN-64-DYNAMIC-NEXT:    callq *_difunc(%rip)
12090 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
12091 ; DARWIN-64-DYNAMIC-NEXT:    retq
12093 ; DARWIN-64-PIC-LABEL: ditailcaller:
12094 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
12095 ; DARWIN-64-PIC-NEXT:    pushq %rax
12096 ; DARWIN-64-PIC-NEXT:    callq *_difunc(%rip)
12097 ; DARWIN-64-PIC-NEXT:    popq %rax
12098 ; DARWIN-64-PIC-NEXT:    retq
12100 entry:
12101         %0 = load ptr, ptr @difunc, align 8
12102         call void %0() nounwind
12103         ret void
12106 define dso_local void @litailcaller() nounwind {
12107 ; LINUX-64-STATIC-LABEL: litailcaller:
12108 ; LINUX-64-STATIC:       # %bb.0: # %entry
12109 ; LINUX-64-STATIC-NEXT:    pushq %rax
12110 ; LINUX-64-STATIC-NEXT:    callq *lifunc(%rip)
12111 ; LINUX-64-STATIC-NEXT:    popq %rax
12112 ; LINUX-64-STATIC-NEXT:    retq
12114 ; LINUX-32-STATIC-LABEL: litailcaller:
12115 ; LINUX-32-STATIC:       # %bb.0: # %entry
12116 ; LINUX-32-STATIC-NEXT:    subl $12, %esp
12117 ; LINUX-32-STATIC-NEXT:    calll *lifunc
12118 ; LINUX-32-STATIC-NEXT:    addl $12, %esp
12119 ; LINUX-32-STATIC-NEXT:    retl
12121 ; LINUX-32-PIC-LABEL: litailcaller:
12122 ; LINUX-32-PIC:       # %bb.0: # %entry
12123 ; LINUX-32-PIC-NEXT:    pushl %ebx
12124 ; LINUX-32-PIC-NEXT:    subl $8, %esp
12125 ; LINUX-32-PIC-NEXT:    calll .L147$pb
12126 ; LINUX-32-PIC-NEXT:  .L147$pb:
12127 ; LINUX-32-PIC-NEXT:    popl %ebx
12128 ; LINUX-32-PIC-NEXT:  .Ltmp147:
12129 ; LINUX-32-PIC-NEXT:    addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx
12130 ; LINUX-32-PIC-NEXT:    calll *lifunc@GOTOFF(%ebx)
12131 ; LINUX-32-PIC-NEXT:    addl $8, %esp
12132 ; LINUX-32-PIC-NEXT:    popl %ebx
12133 ; LINUX-32-PIC-NEXT:    retl
12135 ; LINUX-64-PIC-LABEL: litailcaller:
12136 ; LINUX-64-PIC:       # %bb.0: # %entry
12137 ; LINUX-64-PIC-NEXT:    pushq %rax
12138 ; LINUX-64-PIC-NEXT:    callq *lifunc(%rip)
12139 ; LINUX-64-PIC-NEXT:    popq %rax
12140 ; LINUX-64-PIC-NEXT:    retq
12142 ; DARWIN-32-STATIC-LABEL: litailcaller:
12143 ; DARWIN-32-STATIC:       ## %bb.0: ## %entry
12144 ; DARWIN-32-STATIC-NEXT:    subl $12, %esp
12145 ; DARWIN-32-STATIC-NEXT:    calll *_lifunc
12146 ; DARWIN-32-STATIC-NEXT:    addl $12, %esp
12147 ; DARWIN-32-STATIC-NEXT:    retl
12149 ; DARWIN-32-DYNAMIC-LABEL: litailcaller:
12150 ; DARWIN-32-DYNAMIC:       ## %bb.0: ## %entry
12151 ; DARWIN-32-DYNAMIC-NEXT:    subl $12, %esp
12152 ; DARWIN-32-DYNAMIC-NEXT:    calll *_lifunc
12153 ; DARWIN-32-DYNAMIC-NEXT:    addl $12, %esp
12154 ; DARWIN-32-DYNAMIC-NEXT:    retl
12156 ; DARWIN-32-PIC-LABEL: litailcaller:
12157 ; DARWIN-32-PIC:       ## %bb.0: ## %entry
12158 ; DARWIN-32-PIC-NEXT:    subl $12, %esp
12159 ; DARWIN-32-PIC-NEXT:    calll L147$pb
12160 ; DARWIN-32-PIC-NEXT:  L147$pb:
12161 ; DARWIN-32-PIC-NEXT:    popl %eax
12162 ; DARWIN-32-PIC-NEXT:    calll *_lifunc-L147$pb(%eax)
12163 ; DARWIN-32-PIC-NEXT:    addl $12, %esp
12164 ; DARWIN-32-PIC-NEXT:    retl
12166 ; DARWIN-64-STATIC-LABEL: litailcaller:
12167 ; DARWIN-64-STATIC:       ## %bb.0: ## %entry
12168 ; DARWIN-64-STATIC-NEXT:    pushq %rax
12169 ; DARWIN-64-STATIC-NEXT:    callq *_lifunc(%rip)
12170 ; DARWIN-64-STATIC-NEXT:    popq %rax
12171 ; DARWIN-64-STATIC-NEXT:    retq
12173 ; DARWIN-64-DYNAMIC-LABEL: litailcaller:
12174 ; DARWIN-64-DYNAMIC:       ## %bb.0: ## %entry
12175 ; DARWIN-64-DYNAMIC-NEXT:    pushq %rax
12176 ; DARWIN-64-DYNAMIC-NEXT:    callq *_lifunc(%rip)
12177 ; DARWIN-64-DYNAMIC-NEXT:    popq %rax
12178 ; DARWIN-64-DYNAMIC-NEXT:    retq
12180 ; DARWIN-64-PIC-LABEL: litailcaller:
12181 ; DARWIN-64-PIC:       ## %bb.0: ## %entry
12182 ; DARWIN-64-PIC-NEXT:    pushq %rax
12183 ; DARWIN-64-PIC-NEXT:    callq *_lifunc(%rip)
12184 ; DARWIN-64-PIC-NEXT:    popq %rax
12185 ; DARWIN-64-PIC-NEXT:    retq
12187 entry:
12188         %0 = load ptr, ptr @lifunc, align 8
12189         call void %0() nounwind
12190         ret void