1 ; RUN: llc < %s -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC
2 ; RUN: llc < %s -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC
4 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
5 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC
7 ; RUN: llc < %s -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC
8 ; RUN: llc < %s -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
9 ; RUN: llc < %s -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC
11 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
12 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
13 ; RUN: llc < %s -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC
15 @src = external global [131072 x i32]
16 @dst = external global [131072 x i32]
17 @xsrc = external global [32 x i32]
18 @xdst = external global [32 x i32]
19 @ptr = external global i32*
20 @dsrc = global [131072 x i32] zeroinitializer, align 32
21 @ddst = global [131072 x i32] zeroinitializer, align 32
22 @dptr = global i32* null
23 @lsrc = internal global [131072 x i32] zeroinitializer
24 @ldst = internal global [131072 x i32] zeroinitializer
25 @lptr = internal global i32* null
26 @ifunc = external global void ()*
27 @difunc = global void ()* null
28 @lifunc = internal global void ()* null
29 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
30 @lxdst = internal global [32 x i32] zeroinitializer, align 32
31 @dxsrc = global [32 x i32] zeroinitializer, align 32
32 @dxdst = global [32 x i32] zeroinitializer, align 32
34 define void @foo00() nounwind {
36 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
37 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
40 ; LINUX-64-STATIC: foo00:
41 ; LINUX-64-STATIC: movl src(%rip), %eax
42 ; LINUX-64-STATIC: movl %eax, dst
43 ; LINUX-64-STATIC: ret
45 ; LINUX-32-STATIC: foo00:
46 ; LINUX-32-STATIC: movl src, %eax
47 ; LINUX-32-STATIC-NEXT: movl %eax, dst
48 ; LINUX-32-STATIC-NEXT: ret
50 ; LINUX-32-PIC: foo00:
51 ; LINUX-32-PIC: movl src, %eax
52 ; LINUX-32-PIC-NEXT: movl %eax, dst
53 ; LINUX-32-PIC-NEXT: ret
55 ; LINUX-64-PIC: foo00:
56 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
57 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
58 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
59 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
60 ; LINUX-64-PIC-NEXT: ret
62 ; DARWIN-32-STATIC: _foo00:
63 ; DARWIN-32-STATIC: movl _src, %eax
64 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst
65 ; DARWIN-32-STATIC-NEXT: ret
67 ; DARWIN-32-DYNAMIC: _foo00:
68 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
69 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
70 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
71 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
72 ; DARWIN-32-DYNAMIC-NEXT: ret
74 ; DARWIN-32-PIC: _foo00:
75 ; DARWIN-32-PIC: call "L1$pb"
76 ; DARWIN-32-PIC-NEXT: "L1$pb":
77 ; DARWIN-32-PIC-NEXT: popl %eax
78 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L1$pb"(%eax), %ecx
79 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
80 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L1$pb"(%eax), %eax
81 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
82 ; DARWIN-32-PIC-NEXT: ret
84 ; DARWIN-64-STATIC: _foo00:
85 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
86 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
87 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
88 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
89 ; DARWIN-64-STATIC-NEXT: ret
91 ; DARWIN-64-DYNAMIC: _foo00:
92 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
93 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
94 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
95 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
96 ; DARWIN-64-DYNAMIC-NEXT: ret
98 ; DARWIN-64-PIC: _foo00:
99 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
100 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
101 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
102 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
103 ; DARWIN-64-PIC-NEXT: ret
106 define void @fxo00() nounwind {
108 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
109 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
112 ; LINUX-64-STATIC: fxo00:
113 ; LINUX-64-STATIC: movl xsrc(%rip), %eax
114 ; LINUX-64-STATIC: movl %eax, xdst
115 ; LINUX-64-STATIC: ret
117 ; LINUX-32-STATIC: fxo00:
118 ; LINUX-32-STATIC: movl xsrc, %eax
119 ; LINUX-32-STATIC-NEXT: movl %eax, xdst
120 ; LINUX-32-STATIC-NEXT: ret
122 ; LINUX-32-PIC: fxo00:
123 ; LINUX-32-PIC: movl xsrc, %eax
124 ; LINUX-32-PIC-NEXT: movl %eax, xdst
125 ; LINUX-32-PIC-NEXT: ret
127 ; LINUX-64-PIC: fxo00:
128 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
129 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
130 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
131 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
132 ; LINUX-64-PIC-NEXT: ret
134 ; DARWIN-32-STATIC: _fxo00:
135 ; DARWIN-32-STATIC: movl _xsrc, %eax
136 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst
137 ; DARWIN-32-STATIC-NEXT: ret
139 ; DARWIN-32-DYNAMIC: _fxo00:
140 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
141 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
142 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
143 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
144 ; DARWIN-32-DYNAMIC-NEXT: ret
146 ; DARWIN-32-PIC: _fxo00:
147 ; DARWIN-32-PIC: call "L2$pb"
148 ; DARWIN-32-PIC-NEXT: "L2$pb":
149 ; DARWIN-32-PIC-NEXT: popl %eax
150 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L2$pb"(%eax), %ecx
151 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
152 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L2$pb"(%eax), %eax
153 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
154 ; DARWIN-32-PIC-NEXT: ret
156 ; DARWIN-64-STATIC: _fxo00:
157 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
158 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
159 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
160 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
161 ; DARWIN-64-STATIC-NEXT: ret
163 ; DARWIN-64-DYNAMIC: _fxo00:
164 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
165 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
166 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
167 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
168 ; DARWIN-64-DYNAMIC-NEXT: ret
170 ; DARWIN-64-PIC: _fxo00:
171 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
172 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
173 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
174 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
175 ; DARWIN-64-PIC-NEXT: ret
178 define void @foo01() nounwind {
180 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
182 ; LINUX-64-STATIC: foo01:
183 ; LINUX-64-STATIC: movq $dst, ptr
184 ; LINUX-64-STATIC: ret
186 ; LINUX-32-STATIC: foo01:
187 ; LINUX-32-STATIC: movl $dst, ptr
188 ; LINUX-32-STATIC-NEXT: ret
190 ; LINUX-32-PIC: foo01:
191 ; LINUX-32-PIC: movl $dst, ptr
192 ; LINUX-32-PIC-NEXT: ret
194 ; LINUX-64-PIC: foo01:
195 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
196 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
197 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
198 ; LINUX-64-PIC-NEXT: ret
200 ; DARWIN-32-STATIC: _foo01:
201 ; DARWIN-32-STATIC: movl $_dst, _ptr
202 ; DARWIN-32-STATIC-NEXT: ret
204 ; DARWIN-32-DYNAMIC: _foo01:
205 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
206 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
207 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
208 ; DARWIN-32-DYNAMIC-NEXT: ret
210 ; DARWIN-32-PIC: _foo01:
211 ; DARWIN-32-PIC: call "L3$pb"
212 ; DARWIN-32-PIC-NEXT: "L3$pb":
213 ; DARWIN-32-PIC-NEXT: popl %eax
214 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L3$pb"(%eax), %ecx
215 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L3$pb"(%eax), %eax
216 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
217 ; DARWIN-32-PIC-NEXT: ret
219 ; DARWIN-64-STATIC: _foo01:
220 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
221 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
222 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
223 ; DARWIN-64-STATIC-NEXT: ret
225 ; DARWIN-64-DYNAMIC: _foo01:
226 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
227 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
228 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
229 ; DARWIN-64-DYNAMIC-NEXT: ret
231 ; DARWIN-64-PIC: _foo01:
232 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
233 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
234 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
235 ; DARWIN-64-PIC-NEXT: ret
238 define void @fxo01() nounwind {
240 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
242 ; LINUX-64-STATIC: fxo01:
243 ; LINUX-64-STATIC: movq $xdst, ptr
244 ; LINUX-64-STATIC: ret
246 ; LINUX-32-STATIC: fxo01:
247 ; LINUX-32-STATIC: movl $xdst, ptr
248 ; LINUX-32-STATIC-NEXT: ret
250 ; LINUX-32-PIC: fxo01:
251 ; LINUX-32-PIC: movl $xdst, ptr
252 ; LINUX-32-PIC-NEXT: ret
254 ; LINUX-64-PIC: fxo01:
255 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
256 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
257 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
258 ; LINUX-64-PIC-NEXT: ret
260 ; DARWIN-32-STATIC: _fxo01:
261 ; DARWIN-32-STATIC: movl $_xdst, _ptr
262 ; DARWIN-32-STATIC-NEXT: ret
264 ; DARWIN-32-DYNAMIC: _fxo01:
265 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
266 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
267 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
268 ; DARWIN-32-DYNAMIC-NEXT: ret
270 ; DARWIN-32-PIC: _fxo01:
271 ; DARWIN-32-PIC: call "L4$pb"
272 ; DARWIN-32-PIC-NEXT: "L4$pb":
273 ; DARWIN-32-PIC-NEXT: popl %eax
274 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L4$pb"(%eax), %ecx
275 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L4$pb"(%eax), %eax
276 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
277 ; DARWIN-32-PIC-NEXT: ret
279 ; DARWIN-64-STATIC: _fxo01:
280 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
281 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
282 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
283 ; DARWIN-64-STATIC-NEXT: ret
285 ; DARWIN-64-DYNAMIC: _fxo01:
286 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
287 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
288 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
289 ; DARWIN-64-DYNAMIC-NEXT: ret
291 ; DARWIN-64-PIC: _fxo01:
292 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
293 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
294 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
295 ; DARWIN-64-PIC-NEXT: ret
298 define void @foo02() nounwind {
300 %0 = load i32** @ptr, align 8
301 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
302 store i32 %1, i32* %0, align 4
304 ; LINUX-64-STATIC: foo02:
305 ; LINUX-64-STATIC: movl src(%rip), %
306 ; LINUX-64-STATIC: movq ptr(%rip), %
307 ; LINUX-64-STATIC: movl
308 ; LINUX-64-STATIC: ret
310 ; LINUX-32-STATIC: foo02:
311 ; LINUX-32-STATIC: movl src, %eax
312 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
313 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
314 ; LINUX-32-STATIC-NEXT: ret
316 ; LINUX-32-PIC: foo02:
317 ; LINUX-32-PIC: movl src, %eax
318 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
319 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
320 ; LINUX-32-PIC-NEXT: ret
322 ; LINUX-64-PIC: foo02:
323 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
324 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
325 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
326 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
327 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
328 ; LINUX-64-PIC-NEXT: ret
330 ; DARWIN-32-STATIC: _foo02:
331 ; DARWIN-32-STATIC: movl _src, %eax
332 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
333 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
334 ; DARWIN-32-STATIC-NEXT: ret
336 ; DARWIN-32-DYNAMIC: _foo02:
337 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
338 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
339 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
340 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
341 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
342 ; DARWIN-32-DYNAMIC-NEXT: ret
344 ; DARWIN-32-PIC: _foo02:
345 ; DARWIN-32-PIC: call "L5$pb"
346 ; DARWIN-32-PIC-NEXT: "L5$pb":
347 ; DARWIN-32-PIC-NEXT: popl %eax
348 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L5$pb"(%eax), %ecx
349 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
350 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L5$pb"(%eax), %eax
351 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
352 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
353 ; DARWIN-32-PIC-NEXT: ret
355 ; DARWIN-64-STATIC: _foo02:
356 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
357 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
358 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
359 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
360 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
361 ; DARWIN-64-STATIC-NEXT: ret
363 ; DARWIN-64-DYNAMIC: _foo02:
364 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
365 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
366 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
367 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
368 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
369 ; DARWIN-64-DYNAMIC-NEXT: ret
371 ; DARWIN-64-PIC: _foo02:
372 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
373 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
374 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
375 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
376 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
377 ; DARWIN-64-PIC-NEXT: ret
380 define void @fxo02() nounwind {
382 %0 = load i32** @ptr, align 8
383 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
384 store i32 %1, i32* %0, align 4
385 ; LINUX-64-STATIC: fxo02:
386 ; LINUX-64-STATIC: movl xsrc(%rip), %
387 ; LINUX-64-STATIC: movq ptr(%rip), %
388 ; LINUX-64-STATIC: movl
389 ; LINUX-64-STATIC: ret
391 ; LINUX-32-STATIC: fxo02:
392 ; LINUX-32-STATIC: movl xsrc, %eax
393 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
394 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
395 ; LINUX-32-STATIC-NEXT: ret
398 ; LINUX-32-PIC: fxo02:
399 ; LINUX-32-PIC: movl xsrc, %eax
400 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
401 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
402 ; LINUX-32-PIC-NEXT: ret
404 ; LINUX-64-PIC: fxo02:
405 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
406 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
407 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
408 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
409 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
410 ; LINUX-64-PIC-NEXT: ret
412 ; DARWIN-32-STATIC: _fxo02:
413 ; DARWIN-32-STATIC: movl _xsrc, %eax
414 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
415 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
416 ; DARWIN-32-STATIC-NEXT: ret
418 ; DARWIN-32-DYNAMIC: _fxo02:
419 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
420 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
421 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
422 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
423 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
424 ; DARWIN-32-DYNAMIC-NEXT: ret
426 ; DARWIN-32-PIC: _fxo02:
427 ; DARWIN-32-PIC: call "L6$pb"
428 ; DARWIN-32-PIC-NEXT: "L6$pb":
429 ; DARWIN-32-PIC-NEXT: popl %eax
430 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L6$pb"(%eax), %ecx
431 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
432 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L6$pb"(%eax), %eax
433 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
434 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
435 ; DARWIN-32-PIC-NEXT: ret
437 ; DARWIN-64-STATIC: _fxo02:
438 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
439 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
440 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
441 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
442 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
443 ; DARWIN-64-STATIC-NEXT: ret
445 ; DARWIN-64-DYNAMIC: _fxo02:
446 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
447 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
448 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
449 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
450 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
451 ; DARWIN-64-DYNAMIC-NEXT: ret
453 ; DARWIN-64-PIC: _fxo02:
454 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
455 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
456 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
457 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
458 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
459 ; DARWIN-64-PIC-NEXT: ret
462 define void @foo03() nounwind {
464 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
465 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
467 ; LINUX-64-STATIC: foo03:
468 ; LINUX-64-STATIC: movl dsrc(%rip), %eax
469 ; LINUX-64-STATIC: movl %eax, ddst
470 ; LINUX-64-STATIC: ret
472 ; LINUX-32-STATIC: foo03:
473 ; LINUX-32-STATIC: movl dsrc, %eax
474 ; LINUX-32-STATIC-NEXT: movl %eax, ddst
475 ; LINUX-32-STATIC-NEXT: ret
477 ; LINUX-32-PIC: foo03:
478 ; LINUX-32-PIC: movl dsrc, %eax
479 ; LINUX-32-PIC-NEXT: movl %eax, ddst
480 ; LINUX-32-PIC-NEXT: ret
482 ; LINUX-64-PIC: foo03:
483 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
484 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
485 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
486 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
487 ; LINUX-64-PIC-NEXT: ret
489 ; DARWIN-32-STATIC: _foo03:
490 ; DARWIN-32-STATIC: movl _dsrc, %eax
491 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst
492 ; DARWIN-32-STATIC-NEXT: ret
494 ; DARWIN-32-DYNAMIC: _foo03:
495 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
496 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst
497 ; DARWIN-32-DYNAMIC-NEXT: ret
499 ; DARWIN-32-PIC: _foo03:
500 ; DARWIN-32-PIC: call "L7$pb"
501 ; DARWIN-32-PIC-NEXT: "L7$pb":
502 ; DARWIN-32-PIC-NEXT: popl %eax
503 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L7$pb"(%eax), %ecx
504 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-"L7$pb"(%eax)
505 ; DARWIN-32-PIC-NEXT: ret
507 ; DARWIN-64-STATIC: _foo03:
508 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
509 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip)
510 ; DARWIN-64-STATIC-NEXT: ret
512 ; DARWIN-64-DYNAMIC: _foo03:
513 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
514 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip)
515 ; DARWIN-64-DYNAMIC-NEXT: ret
517 ; DARWIN-64-PIC: _foo03:
518 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
519 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip)
520 ; DARWIN-64-PIC-NEXT: ret
523 define void @foo04() nounwind {
525 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
527 ; LINUX-64-STATIC: foo04:
528 ; LINUX-64-STATIC: movq $ddst, dptr
529 ; LINUX-64-STATIC: ret
531 ; LINUX-32-STATIC: foo04:
532 ; LINUX-32-STATIC: movl $ddst, dptr
533 ; LINUX-32-STATIC-NEXT: ret
535 ; LINUX-32-PIC: foo04:
536 ; LINUX-32-PIC: movl $ddst, dptr
537 ; LINUX-32-PIC-NEXT: ret
539 ; LINUX-64-PIC: foo04:
540 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
541 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
542 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
543 ; LINUX-64-PIC-NEXT: ret
545 ; DARWIN-32-STATIC: _foo04:
546 ; DARWIN-32-STATIC: movl $_ddst, _dptr
547 ; DARWIN-32-STATIC-NEXT: ret
549 ; DARWIN-32-DYNAMIC: _foo04:
550 ; DARWIN-32-DYNAMIC: movl $_ddst, _dptr
551 ; DARWIN-32-DYNAMIC-NEXT: ret
553 ; DARWIN-32-PIC: _foo04:
554 ; DARWIN-32-PIC: call "L8$pb"
555 ; DARWIN-32-PIC-NEXT: "L8$pb":
556 ; DARWIN-32-PIC-NEXT: popl %eax
557 ; DARWIN-32-PIC-NEXT: leal _ddst-"L8$pb"(%eax), %ecx
558 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L8$pb"(%eax)
559 ; DARWIN-32-PIC-NEXT: ret
561 ; DARWIN-64-STATIC: _foo04:
562 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
563 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
564 ; DARWIN-64-STATIC-NEXT: ret
566 ; DARWIN-64-DYNAMIC: _foo04:
567 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
568 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
569 ; DARWIN-64-DYNAMIC-NEXT: ret
571 ; DARWIN-64-PIC: _foo04:
572 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
573 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
574 ; DARWIN-64-PIC-NEXT: ret
577 define void @foo05() nounwind {
579 %0 = load i32** @dptr, align 8
580 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
581 store i32 %1, i32* %0, align 4
583 ; LINUX-64-STATIC: foo05:
584 ; LINUX-64-STATIC: movl dsrc(%rip), %
585 ; LINUX-64-STATIC: movq dptr(%rip), %
586 ; LINUX-64-STATIC: movl
587 ; LINUX-64-STATIC: ret
589 ; LINUX-32-STATIC: foo05:
590 ; LINUX-32-STATIC: movl dsrc, %eax
591 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
592 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
593 ; LINUX-32-STATIC-NEXT: ret
595 ; LINUX-32-PIC: foo05:
596 ; LINUX-32-PIC: movl dsrc, %eax
597 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
598 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
599 ; LINUX-32-PIC-NEXT: ret
601 ; LINUX-64-PIC: foo05:
602 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
603 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
604 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
605 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
606 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
607 ; LINUX-64-PIC-NEXT: ret
609 ; DARWIN-32-STATIC: _foo05:
610 ; DARWIN-32-STATIC: movl _dsrc, %eax
611 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
612 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
613 ; DARWIN-32-STATIC-NEXT: ret
615 ; DARWIN-32-DYNAMIC: _foo05:
616 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
617 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
618 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
619 ; DARWIN-32-DYNAMIC-NEXT: ret
621 ; DARWIN-32-PIC: _foo05:
622 ; DARWIN-32-PIC: call "L9$pb"
623 ; DARWIN-32-PIC-NEXT: "L9$pb":
624 ; DARWIN-32-PIC-NEXT: popl %eax
625 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L9$pb"(%eax), %ecx
626 ; DARWIN-32-PIC-NEXT: movl _dptr-"L9$pb"(%eax), %eax
627 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
628 ; DARWIN-32-PIC-NEXT: ret
630 ; DARWIN-64-STATIC: _foo05:
631 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
632 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
633 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
634 ; DARWIN-64-STATIC-NEXT: ret
636 ; DARWIN-64-DYNAMIC: _foo05:
637 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
638 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
639 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
640 ; DARWIN-64-DYNAMIC-NEXT: ret
642 ; DARWIN-64-PIC: _foo05:
643 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
644 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
645 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
646 ; DARWIN-64-PIC-NEXT: ret
649 define void @foo06() nounwind {
651 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
652 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
654 ; LINUX-64-STATIC: foo06:
655 ; LINUX-64-STATIC: movl lsrc(%rip), %eax
656 ; LINUX-64-STATIC: movl %eax, ldst(%rip)
657 ; LINUX-64-STATIC: ret
659 ; LINUX-32-STATIC: foo06:
660 ; LINUX-32-STATIC: movl lsrc, %eax
661 ; LINUX-32-STATIC-NEXT: movl %eax, ldst
662 ; LINUX-32-STATIC-NEXT: ret
664 ; LINUX-32-PIC: foo06:
665 ; LINUX-32-PIC: movl lsrc, %eax
666 ; LINUX-32-PIC-NEXT: movl %eax, ldst
667 ; LINUX-32-PIC-NEXT: ret
669 ; LINUX-64-PIC: foo06:
670 ; LINUX-64-PIC: movl lsrc(%rip), %eax
671 ; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)
672 ; LINUX-64-PIC-NEXT: ret
674 ; DARWIN-32-STATIC: _foo06:
675 ; DARWIN-32-STATIC: movl _lsrc, %eax
676 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst
677 ; DARWIN-32-STATIC-NEXT: ret
679 ; DARWIN-32-DYNAMIC: _foo06:
680 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
681 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst
682 ; DARWIN-32-DYNAMIC-NEXT: ret
684 ; DARWIN-32-PIC: _foo06:
685 ; DARWIN-32-PIC: call "L10$pb"
686 ; DARWIN-32-PIC-NEXT: "L10$pb":
687 ; DARWIN-32-PIC-NEXT: popl %eax
688 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L10$pb"(%eax), %ecx
689 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-"L10$pb"(%eax)
690 ; DARWIN-32-PIC-NEXT: ret
692 ; DARWIN-64-STATIC: _foo06:
693 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
694 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)
695 ; DARWIN-64-STATIC-NEXT: ret
697 ; DARWIN-64-DYNAMIC: _foo06:
698 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
699 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)
700 ; DARWIN-64-DYNAMIC-NEXT: ret
702 ; DARWIN-64-PIC: _foo06:
703 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
704 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)
705 ; DARWIN-64-PIC-NEXT: ret
708 define void @foo07() nounwind {
710 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
712 ; LINUX-64-STATIC: foo07:
713 ; LINUX-64-STATIC: movq $ldst, lptr
714 ; LINUX-64-STATIC: ret
716 ; LINUX-32-STATIC: foo07:
717 ; LINUX-32-STATIC: movl $ldst, lptr
718 ; LINUX-32-STATIC-NEXT: ret
720 ; LINUX-32-PIC: foo07:
721 ; LINUX-32-PIC: movl $ldst, lptr
722 ; LINUX-32-PIC-NEXT: ret
724 ; LINUX-64-PIC: foo07:
725 ; LINUX-64-PIC: leaq ldst(%rip), %rax
726 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
727 ; LINUX-64-PIC-NEXT: ret
729 ; DARWIN-32-STATIC: _foo07:
730 ; DARWIN-32-STATIC: movl $_ldst, _lptr
731 ; DARWIN-32-STATIC-NEXT: ret
733 ; DARWIN-32-DYNAMIC: _foo07:
734 ; DARWIN-32-DYNAMIC: movl $_ldst, _lptr
735 ; DARWIN-32-DYNAMIC-NEXT: ret
737 ; DARWIN-32-PIC: _foo07:
738 ; DARWIN-32-PIC: call "L11$pb"
739 ; DARWIN-32-PIC-NEXT: "L11$pb":
740 ; DARWIN-32-PIC-NEXT: popl %eax
741 ; DARWIN-32-PIC-NEXT: leal _ldst-"L11$pb"(%eax), %ecx
742 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L11$pb"(%eax)
743 ; DARWIN-32-PIC-NEXT: ret
745 ; DARWIN-64-STATIC: _foo07:
746 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
747 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
748 ; DARWIN-64-STATIC-NEXT: ret
750 ; DARWIN-64-DYNAMIC: _foo07:
751 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
752 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
753 ; DARWIN-64-DYNAMIC-NEXT: ret
755 ; DARWIN-64-PIC: _foo07:
756 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
757 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
758 ; DARWIN-64-PIC-NEXT: ret
761 define void @foo08() nounwind {
763 %0 = load i32** @lptr, align 8
764 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
765 store i32 %1, i32* %0, align 4
767 ; LINUX-64-STATIC: foo08:
768 ; LINUX-64-STATIC: movl lsrc(%rip), %
769 ; LINUX-64-STATIC: movq lptr(%rip), %
770 ; LINUX-64-STATIC: movl
771 ; LINUX-64-STATIC: ret
773 ; LINUX-32-STATIC: foo08:
774 ; LINUX-32-STATIC: movl lsrc, %eax
775 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
776 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
777 ; LINUX-32-STATIC-NEXT: ret
779 ; LINUX-32-PIC: foo08:
780 ; LINUX-32-PIC: movl lsrc, %eax
781 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
782 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
783 ; LINUX-32-PIC-NEXT: ret
785 ; LINUX-64-PIC: foo08:
786 ; LINUX-64-PIC: movl lsrc(%rip), %eax
787 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
788 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
789 ; LINUX-64-PIC-NEXT: ret
791 ; DARWIN-32-STATIC: _foo08:
792 ; DARWIN-32-STATIC: movl _lsrc, %eax
793 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
794 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
795 ; DARWIN-32-STATIC-NEXT: ret
797 ; DARWIN-32-DYNAMIC: _foo08:
798 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
799 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
800 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
801 ; DARWIN-32-DYNAMIC-NEXT: ret
803 ; DARWIN-32-PIC: _foo08:
804 ; DARWIN-32-PIC: call "L12$pb"
805 ; DARWIN-32-PIC-NEXT: "L12$pb":
806 ; DARWIN-32-PIC-NEXT: popl %eax
807 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L12$pb"(%eax), %ecx
808 ; DARWIN-32-PIC-NEXT: movl _lptr-"L12$pb"(%eax), %eax
809 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
810 ; DARWIN-32-PIC-NEXT: ret
812 ; DARWIN-64-STATIC: _foo08:
813 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
814 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
815 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
816 ; DARWIN-64-STATIC-NEXT: ret
818 ; DARWIN-64-DYNAMIC: _foo08:
819 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
820 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
821 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
822 ; DARWIN-64-DYNAMIC-NEXT: ret
824 ; DARWIN-64-PIC: _foo08:
825 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
826 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
827 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
828 ; DARWIN-64-PIC-NEXT: ret
831 define void @qux00() nounwind {
833 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
834 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
836 ; LINUX-64-STATIC: qux00:
837 ; LINUX-64-STATIC: movl src+64(%rip), %eax
838 ; LINUX-64-STATIC: movl %eax, dst+64(%rip)
839 ; LINUX-64-STATIC: ret
841 ; LINUX-32-STATIC: qux00:
842 ; LINUX-32-STATIC: movl src+64, %eax
843 ; LINUX-32-STATIC-NEXT: movl %eax, dst+64
844 ; LINUX-32-STATIC-NEXT: ret
846 ; LINUX-32-PIC: qux00:
847 ; LINUX-32-PIC: movl src+64, %eax
848 ; LINUX-32-PIC-NEXT: movl %eax, dst+64
849 ; LINUX-32-PIC-NEXT: ret
851 ; LINUX-64-PIC: qux00:
852 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
853 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
854 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
855 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
856 ; LINUX-64-PIC-NEXT: ret
858 ; DARWIN-32-STATIC: _qux00:
859 ; DARWIN-32-STATIC: movl _src+64, %eax
860 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64
861 ; DARWIN-32-STATIC-NEXT: ret
863 ; DARWIN-32-DYNAMIC: _qux00:
864 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
865 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
866 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
867 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
868 ; DARWIN-32-DYNAMIC-NEXT: ret
870 ; DARWIN-32-PIC: _qux00:
871 ; DARWIN-32-PIC: call "L13$pb"
872 ; DARWIN-32-PIC-NEXT: "L13$pb":
873 ; DARWIN-32-PIC-NEXT: popl %eax
874 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L13$pb"(%eax), %ecx
875 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
876 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L13$pb"(%eax), %eax
877 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
878 ; DARWIN-32-PIC-NEXT: ret
880 ; DARWIN-64-STATIC: _qux00:
881 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
882 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
883 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
884 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
885 ; DARWIN-64-STATIC-NEXT: ret
887 ; DARWIN-64-DYNAMIC: _qux00:
888 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
889 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
890 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
891 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
892 ; DARWIN-64-DYNAMIC-NEXT: ret
894 ; DARWIN-64-PIC: _qux00:
895 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
896 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
897 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
898 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
899 ; DARWIN-64-PIC-NEXT: ret
902 define void @qxx00() nounwind {
904 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
905 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
907 ; LINUX-64-STATIC: qxx00:
908 ; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
909 ; LINUX-64-STATIC: movl %eax, xdst+64(%rip)
910 ; LINUX-64-STATIC: ret
912 ; LINUX-32-STATIC: qxx00:
913 ; LINUX-32-STATIC: movl xsrc+64, %eax
914 ; LINUX-32-STATIC-NEXT: movl %eax, xdst+64
915 ; LINUX-32-STATIC-NEXT: ret
917 ; LINUX-32-PIC: qxx00:
918 ; LINUX-32-PIC: movl xsrc+64, %eax
919 ; LINUX-32-PIC-NEXT: movl %eax, xdst+64
920 ; LINUX-32-PIC-NEXT: ret
922 ; LINUX-64-PIC: qxx00:
923 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
924 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
925 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
926 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
927 ; LINUX-64-PIC-NEXT: ret
929 ; DARWIN-32-STATIC: _qxx00:
930 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
931 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64
932 ; DARWIN-32-STATIC-NEXT: ret
934 ; DARWIN-32-DYNAMIC: _qxx00:
935 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
936 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
937 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
938 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
939 ; DARWIN-32-DYNAMIC-NEXT: ret
941 ; DARWIN-32-PIC: _qxx00:
942 ; DARWIN-32-PIC: call "L14$pb"
943 ; DARWIN-32-PIC-NEXT: "L14$pb":
944 ; DARWIN-32-PIC-NEXT: popl %eax
945 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L14$pb"(%eax), %ecx
946 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
947 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L14$pb"(%eax), %eax
948 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
949 ; DARWIN-32-PIC-NEXT: ret
951 ; DARWIN-64-STATIC: _qxx00:
952 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
953 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
954 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
955 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
956 ; DARWIN-64-STATIC-NEXT: ret
958 ; DARWIN-64-DYNAMIC: _qxx00:
959 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
960 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
961 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
962 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
963 ; DARWIN-64-DYNAMIC-NEXT: ret
965 ; DARWIN-64-PIC: _qxx00:
966 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
967 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
968 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
969 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
970 ; DARWIN-64-PIC-NEXT: ret
973 define void @qux01() nounwind {
975 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
977 ; LINUX-64-STATIC: qux01:
978 ; LINUX-64-STATIC: movq $dst+64, ptr
979 ; LINUX-64-STATIC: ret
981 ; LINUX-32-STATIC: qux01:
982 ; LINUX-32-STATIC: movl $dst+64, ptr
983 ; LINUX-32-STATIC-NEXT: ret
985 ; LINUX-32-PIC: qux01:
986 ; LINUX-32-PIC: movl $dst+64, ptr
987 ; LINUX-32-PIC-NEXT: ret
989 ; LINUX-64-PIC: qux01:
990 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
991 ; LINUX-64-PIC-NEXT: addq $64, %rax
992 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
993 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
994 ; LINUX-64-PIC-NEXT: ret
996 ; DARWIN-32-STATIC: _qux01:
997 ; DARWIN-32-STATIC: movl $_dst+64, _ptr
998 ; DARWIN-32-STATIC-NEXT: ret
1000 ; DARWIN-32-DYNAMIC: _qux01:
1001 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
1002 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1003 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1004 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1005 ; DARWIN-32-DYNAMIC-NEXT: ret
1007 ; DARWIN-32-PIC: _qux01:
1008 ; DARWIN-32-PIC: call "L15$pb"
1009 ; DARWIN-32-PIC-NEXT: "L15$pb":
1010 ; DARWIN-32-PIC-NEXT: popl %eax
1011 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L15$pb"(%eax), %ecx
1012 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1013 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L15$pb"(%eax), %eax
1014 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1015 ; DARWIN-32-PIC-NEXT: ret
1017 ; DARWIN-64-STATIC: _qux01:
1018 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
1019 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1020 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1021 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1022 ; DARWIN-64-STATIC-NEXT: ret
1024 ; DARWIN-64-DYNAMIC: _qux01:
1025 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
1026 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1027 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1028 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1029 ; DARWIN-64-DYNAMIC-NEXT: ret
1031 ; DARWIN-64-PIC: _qux01:
1032 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
1033 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1034 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1035 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1036 ; DARWIN-64-PIC-NEXT: ret
1039 define void @qxx01() nounwind {
1041 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
1043 ; LINUX-64-STATIC: qxx01:
1044 ; LINUX-64-STATIC: movq $xdst+64, ptr
1045 ; LINUX-64-STATIC: ret
1047 ; LINUX-32-STATIC: qxx01:
1048 ; LINUX-32-STATIC: movl $xdst+64, ptr
1049 ; LINUX-32-STATIC-NEXT: ret
1051 ; LINUX-32-PIC: qxx01:
1052 ; LINUX-32-PIC: movl $xdst+64, ptr
1053 ; LINUX-32-PIC-NEXT: ret
1055 ; LINUX-64-PIC: qxx01:
1056 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
1057 ; LINUX-64-PIC-NEXT: addq $64, %rax
1058 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1059 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1060 ; LINUX-64-PIC-NEXT: ret
1062 ; DARWIN-32-STATIC: _qxx01:
1063 ; DARWIN-32-STATIC: movl $_xdst+64, _ptr
1064 ; DARWIN-32-STATIC-NEXT: ret
1066 ; DARWIN-32-DYNAMIC: _qxx01:
1067 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
1068 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1069 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1070 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1071 ; DARWIN-32-DYNAMIC-NEXT: ret
1073 ; DARWIN-32-PIC: _qxx01:
1074 ; DARWIN-32-PIC: call "L16$pb"
1075 ; DARWIN-32-PIC-NEXT: "L16$pb":
1076 ; DARWIN-32-PIC-NEXT: popl %eax
1077 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L16$pb"(%eax), %ecx
1078 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1079 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L16$pb"(%eax), %eax
1080 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1081 ; DARWIN-32-PIC-NEXT: ret
1083 ; DARWIN-64-STATIC: _qxx01:
1084 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
1085 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1086 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1087 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1088 ; DARWIN-64-STATIC-NEXT: ret
1090 ; DARWIN-64-DYNAMIC: _qxx01:
1091 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
1092 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1093 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1094 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1095 ; DARWIN-64-DYNAMIC-NEXT: ret
1097 ; DARWIN-64-PIC: _qxx01:
1098 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
1099 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1100 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1101 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1102 ; DARWIN-64-PIC-NEXT: ret
1105 define void @qux02() nounwind {
1107 %0 = load i32** @ptr, align 8
1108 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
1109 %2 = getelementptr i32* %0, i64 16
1110 store i32 %1, i32* %2, align 4
1111 ; LINUX-64-STATIC: qux02:
1112 ; LINUX-64-STATIC: movl src+64(%rip), %eax
1113 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1114 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1115 ; LINUX-64-STATIC: ret
1117 ; LINUX-32-STATIC: qux02:
1118 ; LINUX-32-STATIC: movl src+64, %eax
1119 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1120 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1121 ; LINUX-32-STATIC-NEXT: ret
1124 ; LINUX-32-PIC: qux02:
1125 ; LINUX-32-PIC: movl src+64, %eax
1126 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1127 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1128 ; LINUX-32-PIC-NEXT: ret
1130 ; LINUX-64-PIC: qux02:
1131 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1132 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1133 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1134 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1135 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1136 ; LINUX-64-PIC-NEXT: ret
1138 ; DARWIN-32-STATIC: _qux02:
1139 ; DARWIN-32-STATIC: movl _src+64, %eax
1140 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1141 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1142 ; DARWIN-32-STATIC-NEXT: ret
1144 ; DARWIN-32-DYNAMIC: _qux02:
1145 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
1146 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1147 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1148 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1149 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1150 ; DARWIN-32-DYNAMIC-NEXT: ret
1152 ; DARWIN-32-PIC: _qux02:
1153 ; DARWIN-32-PIC: call "L17$pb"
1154 ; DARWIN-32-PIC-NEXT: "L17$pb":
1155 ; DARWIN-32-PIC-NEXT: popl %eax
1156 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L17$pb"(%eax), %ecx
1157 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1158 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L17$pb"(%eax), %eax
1159 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1160 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1161 ; DARWIN-32-PIC-NEXT: ret
1163 ; DARWIN-64-STATIC: _qux02:
1164 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1165 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1166 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1167 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1168 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1169 ; DARWIN-64-STATIC-NEXT: ret
1171 ; DARWIN-64-DYNAMIC: _qux02:
1172 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1173 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1174 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1175 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1176 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1177 ; DARWIN-64-DYNAMIC-NEXT: ret
1179 ; DARWIN-64-PIC: _qux02:
1180 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1181 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1182 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1183 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1184 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1185 ; DARWIN-64-PIC-NEXT: ret
1188 define void @qxx02() nounwind {
1190 %0 = load i32** @ptr, align 8
1191 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
1192 %2 = getelementptr i32* %0, i64 16
1193 store i32 %1, i32* %2, align 4
1194 ; LINUX-64-STATIC: qxx02:
1195 ; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
1196 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1197 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1198 ; LINUX-64-STATIC: ret
1200 ; LINUX-32-STATIC: qxx02:
1201 ; LINUX-32-STATIC: movl xsrc+64, %eax
1202 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1203 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1204 ; LINUX-32-STATIC-NEXT: ret
1207 ; LINUX-32-PIC: qxx02:
1208 ; LINUX-32-PIC: movl xsrc+64, %eax
1209 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1210 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1211 ; LINUX-32-PIC-NEXT: ret
1213 ; LINUX-64-PIC: qxx02:
1214 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1215 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1216 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1217 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1218 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1219 ; LINUX-64-PIC-NEXT: ret
1221 ; DARWIN-32-STATIC: _qxx02:
1222 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
1223 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1224 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1225 ; DARWIN-32-STATIC-NEXT: ret
1227 ; DARWIN-32-DYNAMIC: _qxx02:
1228 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
1229 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1230 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1231 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1232 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1233 ; DARWIN-32-DYNAMIC-NEXT: ret
1235 ; DARWIN-32-PIC: _qxx02:
1236 ; DARWIN-32-PIC: call "L18$pb"
1237 ; DARWIN-32-PIC-NEXT: "L18$pb":
1238 ; DARWIN-32-PIC-NEXT: popl %eax
1239 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L18$pb"(%eax), %ecx
1240 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1241 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L18$pb"(%eax), %eax
1242 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1243 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1244 ; DARWIN-32-PIC-NEXT: ret
1246 ; DARWIN-64-STATIC: _qxx02:
1247 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1248 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1249 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1250 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1251 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1252 ; DARWIN-64-STATIC-NEXT: ret
1254 ; DARWIN-64-DYNAMIC: _qxx02:
1255 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1256 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1257 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1258 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1259 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1260 ; DARWIN-64-DYNAMIC-NEXT: ret
1262 ; DARWIN-64-PIC: _qxx02:
1263 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1264 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1265 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1266 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1267 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1268 ; DARWIN-64-PIC-NEXT: ret
1271 define void @qux03() nounwind {
1273 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
1274 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
1276 ; LINUX-64-STATIC: qux03:
1277 ; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
1278 ; LINUX-64-STATIC: movl %eax, ddst+64(%rip)
1279 ; LINUX-64-STATIC: ret
1281 ; LINUX-32-STATIC: qux03:
1282 ; LINUX-32-STATIC: movl dsrc+64, %eax
1283 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+64
1284 ; LINUX-32-STATIC-NEXT: ret
1286 ; LINUX-32-PIC: qux03:
1287 ; LINUX-32-PIC: movl dsrc+64, %eax
1288 ; LINUX-32-PIC-NEXT: movl %eax, ddst+64
1289 ; LINUX-32-PIC-NEXT: ret
1291 ; LINUX-64-PIC: qux03:
1292 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1293 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1294 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
1295 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1296 ; LINUX-64-PIC-NEXT: ret
1298 ; DARWIN-32-STATIC: _qux03:
1299 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1300 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64
1301 ; DARWIN-32-STATIC-NEXT: ret
1303 ; DARWIN-32-DYNAMIC: _qux03:
1304 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1305 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64
1306 ; DARWIN-32-DYNAMIC-NEXT: ret
1308 ; DARWIN-32-PIC: _qux03:
1309 ; DARWIN-32-PIC: call "L19$pb"
1310 ; DARWIN-32-PIC-NEXT: "L19$pb":
1311 ; DARWIN-32-PIC-NEXT: popl %eax
1312 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L19$pb"(%eax), %ecx
1313 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst+64-"L19$pb"(%eax)
1314 ; DARWIN-32-PIC-NEXT: ret
1316 ; DARWIN-64-STATIC: _qux03:
1317 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1318 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)
1319 ; DARWIN-64-STATIC-NEXT: ret
1321 ; DARWIN-64-DYNAMIC: _qux03:
1322 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1323 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)
1324 ; DARWIN-64-DYNAMIC-NEXT: ret
1326 ; DARWIN-64-PIC: _qux03:
1327 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1328 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)
1329 ; DARWIN-64-PIC-NEXT: ret
1332 define void @qux04() nounwind {
1334 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
1336 ; LINUX-64-STATIC: qux04:
1337 ; LINUX-64-STATIC: movq $ddst+64, dptr(%rip)
1338 ; LINUX-64-STATIC: ret
1340 ; LINUX-32-STATIC: qux04:
1341 ; LINUX-32-STATIC: movl $ddst+64, dptr
1342 ; LINUX-32-STATIC-NEXT: ret
1344 ; LINUX-32-PIC: qux04:
1345 ; LINUX-32-PIC: movl $ddst+64, dptr
1346 ; LINUX-32-PIC-NEXT: ret
1348 ; LINUX-64-PIC: qux04:
1349 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
1350 ; LINUX-64-PIC-NEXT: addq $64, %rax
1351 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1352 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1353 ; LINUX-64-PIC-NEXT: ret
1355 ; DARWIN-32-STATIC: _qux04:
1356 ; DARWIN-32-STATIC: movl $_ddst+64, _dptr
1357 ; DARWIN-32-STATIC-NEXT: ret
1359 ; DARWIN-32-DYNAMIC: _qux04:
1360 ; DARWIN-32-DYNAMIC: movl $_ddst+64, _dptr
1361 ; DARWIN-32-DYNAMIC-NEXT: ret
1363 ; DARWIN-32-PIC: _qux04:
1364 ; DARWIN-32-PIC: call "L20$pb"
1365 ; DARWIN-32-PIC-NEXT: "L20$pb":
1366 ; DARWIN-32-PIC-NEXT: popl %eax
1367 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L20$pb"(%eax), %ecx
1368 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L20$pb"(%eax)
1369 ; DARWIN-32-PIC-NEXT: ret
1371 ; DARWIN-64-STATIC: _qux04:
1372 ; DARWIN-64-STATIC: leaq _ddst+64(%rip), %rax
1373 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
1374 ; DARWIN-64-STATIC-NEXT: ret
1376 ; DARWIN-64-DYNAMIC: _qux04:
1377 ; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), %rax
1378 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
1379 ; DARWIN-64-DYNAMIC-NEXT: ret
1381 ; DARWIN-64-PIC: _qux04:
1382 ; DARWIN-64-PIC: leaq _ddst+64(%rip), %rax
1383 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
1384 ; DARWIN-64-PIC-NEXT: ret
1387 define void @qux05() nounwind {
1389 %0 = load i32** @dptr, align 8
1390 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
1391 %2 = getelementptr i32* %0, i64 16
1392 store i32 %1, i32* %2, align 4
1393 ; LINUX-64-STATIC: qux05:
1394 ; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
1395 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
1396 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1397 ; LINUX-64-STATIC: ret
1399 ; LINUX-32-STATIC: qux05:
1400 ; LINUX-32-STATIC: movl dsrc+64, %eax
1401 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
1402 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1403 ; LINUX-32-STATIC-NEXT: ret
1406 ; LINUX-32-PIC: qux05:
1407 ; LINUX-32-PIC: movl dsrc+64, %eax
1408 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
1409 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1410 ; LINUX-32-PIC-NEXT: ret
1412 ; LINUX-64-PIC: qux05:
1413 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1414 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1415 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1416 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1417 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1418 ; LINUX-64-PIC-NEXT: ret
1420 ; DARWIN-32-STATIC: _qux05:
1421 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1422 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
1423 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1424 ; DARWIN-32-STATIC-NEXT: ret
1426 ; DARWIN-32-DYNAMIC: _qux05:
1427 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1428 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
1429 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1430 ; DARWIN-32-DYNAMIC-NEXT: ret
1432 ; DARWIN-32-PIC: _qux05:
1433 ; DARWIN-32-PIC: call "L21$pb"
1434 ; DARWIN-32-PIC-NEXT: "L21$pb":
1435 ; DARWIN-32-PIC-NEXT: popl %eax
1436 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L21$pb"(%eax), %ecx
1437 ; DARWIN-32-PIC-NEXT: movl _dptr-"L21$pb"(%eax), %eax
1438 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1439 ; DARWIN-32-PIC-NEXT: ret
1441 ; DARWIN-64-STATIC: _qux05:
1442 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1443 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
1444 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1445 ; DARWIN-64-STATIC-NEXT: ret
1447 ; DARWIN-64-DYNAMIC: _qux05:
1448 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1449 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
1450 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1451 ; DARWIN-64-DYNAMIC-NEXT: ret
1453 ; DARWIN-64-PIC: _qux05:
1454 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1455 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
1456 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1457 ; DARWIN-64-PIC-NEXT: ret
1460 define void @qux06() nounwind {
1462 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
1463 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
1465 ; LINUX-64-STATIC: qux06:
1466 ; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
1467 ; LINUX-64-STATIC: movl %eax, ldst+64
1468 ; LINUX-64-STATIC: ret
1470 ; LINUX-32-STATIC: qux06:
1471 ; LINUX-32-STATIC: movl lsrc+64, %eax
1472 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+64
1473 ; LINUX-32-STATIC-NEXT: ret
1475 ; LINUX-32-PIC: qux06:
1476 ; LINUX-32-PIC: movl lsrc+64, %eax
1477 ; LINUX-32-PIC-NEXT: movl %eax, ldst+64
1478 ; LINUX-32-PIC-NEXT: ret
1480 ; LINUX-64-PIC: qux06:
1481 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1482 ; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)
1483 ; LINUX-64-PIC-NEXT: ret
1485 ; DARWIN-32-STATIC: _qux06:
1486 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1487 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64
1488 ; DARWIN-32-STATIC-NEXT: ret
1490 ; DARWIN-32-DYNAMIC: _qux06:
1491 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1492 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64
1493 ; DARWIN-32-DYNAMIC-NEXT: ret
1495 ; DARWIN-32-PIC: _qux06:
1496 ; DARWIN-32-PIC: call "L22$pb"
1497 ; DARWIN-32-PIC-NEXT: "L22$pb":
1498 ; DARWIN-32-PIC-NEXT: popl %eax
1499 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L22$pb"(%eax), %ecx
1500 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst+64-"L22$pb"(%eax)
1501 ; DARWIN-32-PIC-NEXT: ret
1503 ; DARWIN-64-STATIC: _qux06:
1504 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1505 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)
1506 ; DARWIN-64-STATIC-NEXT: ret
1508 ; DARWIN-64-DYNAMIC: _qux06:
1509 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1510 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)
1511 ; DARWIN-64-DYNAMIC-NEXT: ret
1513 ; DARWIN-64-PIC: _qux06:
1514 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1515 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)
1516 ; DARWIN-64-PIC-NEXT: ret
1519 define void @qux07() nounwind {
1521 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
1523 ; LINUX-64-STATIC: qux07:
1524 ; LINUX-64-STATIC: movq $ldst+64, lptr
1525 ; LINUX-64-STATIC: ret
1527 ; LINUX-32-STATIC: qux07:
1528 ; LINUX-32-STATIC: movl $ldst+64, lptr
1529 ; LINUX-32-STATIC-NEXT: ret
1531 ; LINUX-32-PIC: qux07:
1532 ; LINUX-32-PIC: movl $ldst+64, lptr
1533 ; LINUX-32-PIC-NEXT: ret
1535 ; LINUX-64-PIC: qux07:
1536 ; LINUX-64-PIC: leaq ldst+64(%rip), %rax
1537 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
1538 ; LINUX-64-PIC-NEXT: ret
1540 ; DARWIN-32-STATIC: _qux07:
1541 ; DARWIN-32-STATIC: movl $_ldst+64, _lptr
1542 ; DARWIN-32-STATIC-NEXT: ret
1544 ; DARWIN-32-DYNAMIC: _qux07:
1545 ; DARWIN-32-DYNAMIC: movl $_ldst+64, _lptr
1546 ; DARWIN-32-DYNAMIC-NEXT: ret
1548 ; DARWIN-32-PIC: _qux07:
1549 ; DARWIN-32-PIC: call "L23$pb"
1550 ; DARWIN-32-PIC-NEXT: "L23$pb":
1551 ; DARWIN-32-PIC-NEXT: popl %eax
1552 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L23$pb"(%eax), %ecx
1553 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L23$pb"(%eax)
1554 ; DARWIN-32-PIC-NEXT: ret
1556 ; DARWIN-64-STATIC: _qux07:
1557 ; DARWIN-64-STATIC: leaq _ldst+64(%rip), %rax
1558 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
1559 ; DARWIN-64-STATIC-NEXT: ret
1561 ; DARWIN-64-DYNAMIC: _qux07:
1562 ; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), %rax
1563 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
1564 ; DARWIN-64-DYNAMIC-NEXT: ret
1566 ; DARWIN-64-PIC: _qux07:
1567 ; DARWIN-64-PIC: leaq _ldst+64(%rip), %rax
1568 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
1569 ; DARWIN-64-PIC-NEXT: ret
1572 define void @qux08() nounwind {
1574 %0 = load i32** @lptr, align 8
1575 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
1576 %2 = getelementptr i32* %0, i64 16
1577 store i32 %1, i32* %2, align 4
1578 ; LINUX-64-STATIC: qux08:
1579 ; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
1580 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
1581 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
1582 ; LINUX-64-STATIC: ret
1584 ; LINUX-32-STATIC: qux08:
1585 ; LINUX-32-STATIC: movl lsrc+64, %eax
1586 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
1587 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1588 ; LINUX-32-STATIC-NEXT: ret
1591 ; LINUX-32-PIC: qux08:
1592 ; LINUX-32-PIC: movl lsrc+64, %eax
1593 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
1594 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1595 ; LINUX-32-PIC-NEXT: ret
1597 ; LINUX-64-PIC: qux08:
1598 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1599 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
1600 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1601 ; LINUX-64-PIC-NEXT: ret
1603 ; DARWIN-32-STATIC: _qux08:
1604 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1605 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
1606 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1607 ; DARWIN-32-STATIC-NEXT: ret
1609 ; DARWIN-32-DYNAMIC: _qux08:
1610 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1611 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
1612 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1613 ; DARWIN-32-DYNAMIC-NEXT: ret
1615 ; DARWIN-32-PIC: _qux08:
1616 ; DARWIN-32-PIC: call "L24$pb"
1617 ; DARWIN-32-PIC-NEXT: "L24$pb":
1618 ; DARWIN-32-PIC-NEXT: popl %eax
1619 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L24$pb"(%eax), %ecx
1620 ; DARWIN-32-PIC-NEXT: movl _lptr-"L24$pb"(%eax), %eax
1621 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1622 ; DARWIN-32-PIC-NEXT: ret
1624 ; DARWIN-64-STATIC: _qux08:
1625 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1626 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
1627 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1628 ; DARWIN-64-STATIC-NEXT: ret
1630 ; DARWIN-64-DYNAMIC: _qux08:
1631 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1632 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
1633 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1634 ; DARWIN-64-DYNAMIC-NEXT: ret
1636 ; DARWIN-64-PIC: _qux08:
1637 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1638 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
1639 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1640 ; DARWIN-64-PIC-NEXT: ret
1643 define void @ind00(i64 %i) nounwind {
1645 %0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
1646 %1 = load i32* %0, align 4
1647 %2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
1648 store i32 %1, i32* %2, align 4
1650 ; LINUX-64-STATIC: ind00:
1651 ; LINUX-64-STATIC: movl src(,%rdi,4), %eax
1652 ; LINUX-64-STATIC: movl %eax, dst(,%rdi,4)
1653 ; LINUX-64-STATIC: ret
1655 ; LINUX-32-STATIC: ind00:
1656 ; LINUX-32-STATIC: movl 4(%esp), %eax
1657 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1658 ; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)
1659 ; LINUX-32-STATIC-NEXT: ret
1661 ; LINUX-32-PIC: ind00:
1662 ; LINUX-32-PIC: movl 4(%esp), %eax
1663 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1664 ; LINUX-32-PIC-NEXT: movl %ecx, dst(,%eax,4)
1665 ; LINUX-32-PIC-NEXT: ret
1667 ; LINUX-64-PIC: ind00:
1668 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1669 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1670 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
1671 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1672 ; LINUX-64-PIC-NEXT: ret
1674 ; DARWIN-32-STATIC: _ind00:
1675 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1676 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1677 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)
1678 ; DARWIN-32-STATIC-NEXT: ret
1680 ; DARWIN-32-DYNAMIC: _ind00:
1681 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1682 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1683 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1684 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
1685 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1686 ; DARWIN-32-DYNAMIC-NEXT: ret
1688 ; DARWIN-32-PIC: _ind00:
1689 ; DARWIN-32-PIC: call "L25$pb"
1690 ; DARWIN-32-PIC-NEXT: "L25$pb":
1691 ; DARWIN-32-PIC-NEXT: popl %eax
1692 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1693 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L25$pb"(%eax), %edx
1694 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1695 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L25$pb"(%eax), %eax
1696 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1697 ; DARWIN-32-PIC-NEXT: ret
1699 ; DARWIN-64-STATIC: _ind00:
1700 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1701 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1702 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1703 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1704 ; DARWIN-64-STATIC-NEXT: ret
1706 ; DARWIN-64-DYNAMIC: _ind00:
1707 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1708 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1709 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1710 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1711 ; DARWIN-64-DYNAMIC-NEXT: ret
1713 ; DARWIN-64-PIC: _ind00:
1714 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1715 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1716 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1717 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1718 ; DARWIN-64-PIC-NEXT: ret
1721 define void @ixd00(i64 %i) nounwind {
1723 %0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
1724 %1 = load i32* %0, align 4
1725 %2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
1726 store i32 %1, i32* %2, align 4
1728 ; LINUX-64-STATIC: ixd00:
1729 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
1730 ; LINUX-64-STATIC: movl %eax, xdst(,%rdi,4)
1731 ; LINUX-64-STATIC: ret
1733 ; LINUX-32-STATIC: ixd00:
1734 ; LINUX-32-STATIC: movl 4(%esp), %eax
1735 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
1736 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)
1737 ; LINUX-32-STATIC-NEXT: ret
1739 ; LINUX-32-PIC: ixd00:
1740 ; LINUX-32-PIC: movl 4(%esp), %eax
1741 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
1742 ; LINUX-32-PIC-NEXT: movl %ecx, xdst(,%eax,4)
1743 ; LINUX-32-PIC-NEXT: ret
1745 ; LINUX-64-PIC: ixd00:
1746 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1747 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1748 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
1749 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1750 ; LINUX-64-PIC-NEXT: ret
1752 ; DARWIN-32-STATIC: _ixd00:
1753 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1754 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
1755 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)
1756 ; DARWIN-32-STATIC-NEXT: ret
1758 ; DARWIN-32-DYNAMIC: _ixd00:
1759 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1760 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
1761 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1762 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
1763 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1764 ; DARWIN-32-DYNAMIC-NEXT: ret
1766 ; DARWIN-32-PIC: _ixd00:
1767 ; DARWIN-32-PIC: call "L26$pb"
1768 ; DARWIN-32-PIC-NEXT: "L26$pb":
1769 ; DARWIN-32-PIC-NEXT: popl %eax
1770 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1771 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L26$pb"(%eax), %edx
1772 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1773 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L26$pb"(%eax), %eax
1774 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1775 ; DARWIN-32-PIC-NEXT: ret
1777 ; DARWIN-64-STATIC: _ixd00:
1778 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1779 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1780 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1781 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1782 ; DARWIN-64-STATIC-NEXT: ret
1784 ; DARWIN-64-DYNAMIC: _ixd00:
1785 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1786 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1787 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1788 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1789 ; DARWIN-64-DYNAMIC-NEXT: ret
1791 ; DARWIN-64-PIC: _ixd00:
1792 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1793 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1794 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1795 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1796 ; DARWIN-64-PIC-NEXT: ret
1799 define void @ind01(i64 %i) nounwind {
1801 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
1802 store i32* %0, i32** @ptr, align 8
1804 ; LINUX-64-STATIC: ind01:
1805 ; LINUX-64-STATIC: leaq dst(,%rdi,4), %rax
1806 ; LINUX-64-STATIC: movq %rax, ptr
1807 ; LINUX-64-STATIC: ret
1809 ; LINUX-32-STATIC: ind01:
1810 ; LINUX-32-STATIC: movl 4(%esp), %eax
1811 ; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax
1812 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1813 ; LINUX-32-STATIC-NEXT: ret
1815 ; LINUX-32-PIC: ind01:
1816 ; LINUX-32-PIC: movl 4(%esp), %eax
1817 ; LINUX-32-PIC-NEXT: leal dst(,%eax,4), %eax
1818 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1819 ; LINUX-32-PIC-NEXT: ret
1821 ; LINUX-64-PIC: ind01:
1822 ; LINUX-64-PIC: shlq $2, %rdi
1823 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi
1824 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1825 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1826 ; LINUX-64-PIC-NEXT: ret
1828 ; DARWIN-32-STATIC: _ind01:
1829 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1830 ; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax
1831 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1832 ; DARWIN-32-STATIC-NEXT: ret
1834 ; DARWIN-32-DYNAMIC: _ind01:
1835 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1836 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1837 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
1838 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1839 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1840 ; DARWIN-32-DYNAMIC-NEXT: ret
1842 ; DARWIN-32-PIC: _ind01:
1843 ; DARWIN-32-PIC: call "L27$pb"
1844 ; DARWIN-32-PIC-NEXT: "L27$pb":
1845 ; DARWIN-32-PIC-NEXT: popl %eax
1846 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1847 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1848 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-"L27$pb"(%eax), %ecx
1849 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L27$pb"(%eax), %eax
1850 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1851 ; DARWIN-32-PIC-NEXT: ret
1853 ; DARWIN-64-STATIC: _ind01:
1854 ; DARWIN-64-STATIC: shlq $2, %rdi
1855 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1856 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1857 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1858 ; DARWIN-64-STATIC-NEXT: ret
1860 ; DARWIN-64-DYNAMIC: _ind01:
1861 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
1862 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1863 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1864 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1865 ; DARWIN-64-DYNAMIC-NEXT: ret
1867 ; DARWIN-64-PIC: _ind01:
1868 ; DARWIN-64-PIC: shlq $2, %rdi
1869 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1870 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1871 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1872 ; DARWIN-64-PIC-NEXT: ret
1875 define void @ixd01(i64 %i) nounwind {
1877 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
1878 store i32* %0, i32** @ptr, align 8
1880 ; LINUX-64-STATIC: ixd01:
1881 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), %rax
1882 ; LINUX-64-STATIC: movq %rax, ptr
1883 ; LINUX-64-STATIC: ret
1885 ; LINUX-32-STATIC: ixd01:
1886 ; LINUX-32-STATIC: movl 4(%esp), %eax
1887 ; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax
1888 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1889 ; LINUX-32-STATIC-NEXT: ret
1891 ; LINUX-32-PIC: ixd01:
1892 ; LINUX-32-PIC: movl 4(%esp), %eax
1893 ; LINUX-32-PIC-NEXT: leal xdst(,%eax,4), %eax
1894 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1895 ; LINUX-32-PIC-NEXT: ret
1897 ; LINUX-64-PIC: ixd01:
1898 ; LINUX-64-PIC: shlq $2, %rdi
1899 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi
1900 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1901 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1902 ; LINUX-64-PIC-NEXT: ret
1904 ; DARWIN-32-STATIC: _ixd01:
1905 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1906 ; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax
1907 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1908 ; DARWIN-32-STATIC-NEXT: ret
1910 ; DARWIN-32-DYNAMIC: _ixd01:
1911 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1912 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1913 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
1914 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1915 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1916 ; DARWIN-32-DYNAMIC-NEXT: ret
1918 ; DARWIN-32-PIC: _ixd01:
1919 ; DARWIN-32-PIC: call "L28$pb"
1920 ; DARWIN-32-PIC-NEXT: "L28$pb":
1921 ; DARWIN-32-PIC-NEXT: popl %eax
1922 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1923 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1924 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-"L28$pb"(%eax), %ecx
1925 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L28$pb"(%eax), %eax
1926 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1927 ; DARWIN-32-PIC-NEXT: ret
1929 ; DARWIN-64-STATIC: _ixd01:
1930 ; DARWIN-64-STATIC: shlq $2, %rdi
1931 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1932 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1933 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1934 ; DARWIN-64-STATIC-NEXT: ret
1936 ; DARWIN-64-DYNAMIC: _ixd01:
1937 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
1938 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1939 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1940 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1941 ; DARWIN-64-DYNAMIC-NEXT: ret
1943 ; DARWIN-64-PIC: _ixd01:
1944 ; DARWIN-64-PIC: shlq $2, %rdi
1945 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1946 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1947 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1948 ; DARWIN-64-PIC-NEXT: ret
1951 define void @ind02(i64 %i) nounwind {
1953 %0 = load i32** @ptr, align 8
1954 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
1955 %2 = load i32* %1, align 4
1956 %3 = getelementptr i32* %0, i64 %i
1957 store i32 %2, i32* %3, align 4
1959 ; LINUX-64-STATIC: ind02:
1960 ; LINUX-64-STATIC: movl src(,%rdi,4), %eax
1961 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
1962 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
1963 ; LINUX-64-STATIC: ret
1965 ; LINUX-32-STATIC: ind02:
1966 ; LINUX-32-STATIC: movl 4(%esp), %eax
1967 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1968 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
1969 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1970 ; LINUX-32-STATIC-NEXT: ret
1972 ; LINUX-32-PIC: ind02:
1973 ; LINUX-32-PIC: movl 4(%esp), %eax
1974 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1975 ; LINUX-32-PIC-NEXT: movl ptr, %edx
1976 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
1977 ; LINUX-32-PIC-NEXT: ret
1979 ; LINUX-64-PIC: ind02:
1980 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1981 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1982 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1983 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1984 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1985 ; LINUX-64-PIC-NEXT: ret
1987 ; DARWIN-32-STATIC: _ind02:
1988 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1989 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1990 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
1991 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1992 ; DARWIN-32-STATIC-NEXT: ret
1994 ; DARWIN-32-DYNAMIC: _ind02:
1995 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1996 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1997 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1998 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
1999 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2000 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2001 ; DARWIN-32-DYNAMIC-NEXT: ret
2003 ; DARWIN-32-PIC: _ind02:
2004 ; DARWIN-32-PIC: call "L29$pb"
2005 ; DARWIN-32-PIC-NEXT: "L29$pb":
2006 ; DARWIN-32-PIC-NEXT: popl %eax
2007 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2008 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L29$pb"(%eax), %edx
2009 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2010 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L29$pb"(%eax), %eax
2011 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2012 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2013 ; DARWIN-32-PIC-NEXT: ret
2015 ; DARWIN-64-STATIC: _ind02:
2016 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2017 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2018 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2019 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2020 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2021 ; DARWIN-64-STATIC-NEXT: ret
2023 ; DARWIN-64-DYNAMIC: _ind02:
2024 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2025 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2026 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2027 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2028 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2029 ; DARWIN-64-DYNAMIC-NEXT: ret
2031 ; DARWIN-64-PIC: _ind02:
2032 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2033 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2034 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2035 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2036 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2037 ; DARWIN-64-PIC-NEXT: ret
2040 define void @ixd02(i64 %i) nounwind {
2042 %0 = load i32** @ptr, align 8
2043 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
2044 %2 = load i32* %1, align 4
2045 %3 = getelementptr i32* %0, i64 %i
2046 store i32 %2, i32* %3, align 4
2048 ; LINUX-64-STATIC: ixd02:
2049 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
2050 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
2051 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
2052 ; LINUX-64-STATIC: ret
2054 ; LINUX-32-STATIC: ixd02:
2055 ; LINUX-32-STATIC: movl 4(%esp), %eax
2056 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
2057 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2058 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2059 ; LINUX-32-STATIC-NEXT: ret
2061 ; LINUX-32-PIC: ixd02:
2062 ; LINUX-32-PIC: movl 4(%esp), %eax
2063 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
2064 ; LINUX-32-PIC-NEXT: movl ptr, %edx
2065 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2066 ; LINUX-32-PIC-NEXT: ret
2068 ; LINUX-64-PIC: ixd02:
2069 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
2070 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2071 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2072 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2073 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2074 ; LINUX-64-PIC-NEXT: ret
2076 ; DARWIN-32-STATIC: _ixd02:
2077 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2078 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
2079 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2080 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2081 ; DARWIN-32-STATIC-NEXT: ret
2083 ; DARWIN-32-DYNAMIC: _ixd02:
2084 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2085 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2086 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2087 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2088 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2089 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2090 ; DARWIN-32-DYNAMIC-NEXT: ret
2092 ; DARWIN-32-PIC: _ixd02:
2093 ; DARWIN-32-PIC: call "L30$pb"
2094 ; DARWIN-32-PIC-NEXT: "L30$pb":
2095 ; DARWIN-32-PIC-NEXT: popl %eax
2096 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2097 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L30$pb"(%eax), %edx
2098 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2099 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L30$pb"(%eax), %eax
2100 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2101 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2102 ; DARWIN-32-PIC-NEXT: ret
2104 ; DARWIN-64-STATIC: _ixd02:
2105 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
2106 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2107 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2108 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2109 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2110 ; DARWIN-64-STATIC-NEXT: ret
2112 ; DARWIN-64-DYNAMIC: _ixd02:
2113 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
2114 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2115 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2116 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2117 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2118 ; DARWIN-64-DYNAMIC-NEXT: ret
2120 ; DARWIN-64-PIC: _ixd02:
2121 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
2122 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2123 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2124 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2125 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2126 ; DARWIN-64-PIC-NEXT: ret
2129 define void @ind03(i64 %i) nounwind {
2131 %0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
2132 %1 = load i32* %0, align 4
2133 %2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
2134 store i32 %1, i32* %2, align 4
2136 ; LINUX-64-STATIC: ind03:
2137 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
2138 ; LINUX-64-STATIC: movl %eax, ddst(,%rdi,4)
2139 ; LINUX-64-STATIC: ret
2141 ; LINUX-32-STATIC: ind03:
2142 ; LINUX-32-STATIC: movl 4(%esp), %eax
2143 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2144 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)
2145 ; LINUX-32-STATIC-NEXT: ret
2147 ; LINUX-32-PIC: ind03:
2148 ; LINUX-32-PIC: movl 4(%esp), %eax
2149 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2150 ; LINUX-32-PIC-NEXT: movl %ecx, ddst(,%eax,4)
2151 ; LINUX-32-PIC-NEXT: ret
2153 ; LINUX-64-PIC: ind03:
2154 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2155 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2156 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
2157 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2158 ; LINUX-64-PIC-NEXT: ret
2160 ; DARWIN-32-STATIC: _ind03:
2161 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2162 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2163 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)
2164 ; DARWIN-32-STATIC-NEXT: ret
2166 ; DARWIN-32-DYNAMIC: _ind03:
2167 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2168 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2169 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)
2170 ; DARWIN-32-DYNAMIC-NEXT: ret
2172 ; DARWIN-32-PIC: _ind03:
2173 ; DARWIN-32-PIC: call "L31$pb"
2174 ; DARWIN-32-PIC-NEXT: "L31$pb":
2175 ; DARWIN-32-PIC-NEXT: popl %eax
2176 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2177 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L31$pb"(%eax,%ecx,4), %edx
2178 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst-"L31$pb"(%eax,%ecx,4)
2179 ; DARWIN-32-PIC-NEXT: ret
2181 ; DARWIN-64-STATIC: _ind03:
2182 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2183 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2184 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
2185 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2186 ; DARWIN-64-STATIC-NEXT: ret
2188 ; DARWIN-64-DYNAMIC: _ind03:
2189 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2190 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2191 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
2192 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2193 ; DARWIN-64-DYNAMIC-NEXT: ret
2195 ; DARWIN-64-PIC: _ind03:
2196 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2197 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2198 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
2199 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2200 ; DARWIN-64-PIC-NEXT: ret
2203 define void @ind04(i64 %i) nounwind {
2205 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
2206 store i32* %0, i32** @dptr, align 8
2208 ; LINUX-64-STATIC: ind04:
2209 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), %rax
2210 ; LINUX-64-STATIC: movq %rax, dptr
2211 ; LINUX-64-STATIC: ret
2213 ; LINUX-32-STATIC: ind04:
2214 ; LINUX-32-STATIC: movl 4(%esp), %eax
2215 ; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax
2216 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
2217 ; LINUX-32-STATIC-NEXT: ret
2219 ; LINUX-32-PIC: ind04:
2220 ; LINUX-32-PIC: movl 4(%esp), %eax
2221 ; LINUX-32-PIC-NEXT: leal ddst(,%eax,4), %eax
2222 ; LINUX-32-PIC-NEXT: movl %eax, dptr
2223 ; LINUX-32-PIC-NEXT: ret
2225 ; LINUX-64-PIC: ind04:
2226 ; LINUX-64-PIC: shlq $2, %rdi
2227 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi
2228 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
2229 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2230 ; LINUX-64-PIC-NEXT: ret
2232 ; DARWIN-32-STATIC: _ind04:
2233 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2234 ; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax
2235 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
2236 ; DARWIN-32-STATIC-NEXT: ret
2238 ; DARWIN-32-DYNAMIC: _ind04:
2239 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2240 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax
2241 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
2242 ; DARWIN-32-DYNAMIC-NEXT: ret
2244 ; DARWIN-32-PIC: _ind04:
2245 ; DARWIN-32-PIC: call "L32$pb"
2246 ; DARWIN-32-PIC-NEXT: "L32$pb":
2247 ; DARWIN-32-PIC-NEXT: popl %eax
2248 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2249 ; DARWIN-32-PIC-NEXT: leal _ddst-"L32$pb"(%eax,%ecx,4), %ecx
2250 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L32$pb"(%eax)
2251 ; DARWIN-32-PIC-NEXT: ret
2253 ; DARWIN-64-STATIC: _ind04:
2254 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
2255 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2256 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
2257 ; DARWIN-64-STATIC-NEXT: ret
2259 ; DARWIN-64-DYNAMIC: _ind04:
2260 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
2261 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2262 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
2263 ; DARWIN-64-DYNAMIC-NEXT: ret
2265 ; DARWIN-64-PIC: _ind04:
2266 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
2267 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2268 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
2269 ; DARWIN-64-PIC-NEXT: ret
2272 define void @ind05(i64 %i) nounwind {
2274 %0 = load i32** @dptr, align 8
2275 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
2276 %2 = load i32* %1, align 4
2277 %3 = getelementptr i32* %0, i64 %i
2278 store i32 %2, i32* %3, align 4
2280 ; LINUX-64-STATIC: ind05:
2281 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
2282 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
2283 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
2284 ; LINUX-64-STATIC: ret
2286 ; LINUX-32-STATIC: ind05:
2287 ; LINUX-32-STATIC: movl 4(%esp), %eax
2288 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2289 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
2290 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2291 ; LINUX-32-STATIC-NEXT: ret
2293 ; LINUX-32-PIC: ind05:
2294 ; LINUX-32-PIC: movl 4(%esp), %eax
2295 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2296 ; LINUX-32-PIC-NEXT: movl dptr, %edx
2297 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2298 ; LINUX-32-PIC-NEXT: ret
2300 ; LINUX-64-PIC: ind05:
2301 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2302 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2303 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
2304 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2305 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2306 ; LINUX-64-PIC-NEXT: ret
2308 ; DARWIN-32-STATIC: _ind05:
2309 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2310 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2311 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
2312 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2313 ; DARWIN-32-STATIC-NEXT: ret
2315 ; DARWIN-32-DYNAMIC: _ind05:
2316 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2317 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2318 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
2319 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2320 ; DARWIN-32-DYNAMIC-NEXT: ret
2322 ; DARWIN-32-PIC: _ind05:
2323 ; DARWIN-32-PIC: call "L33$pb"
2324 ; DARWIN-32-PIC-NEXT: "L33$pb":
2325 ; DARWIN-32-PIC-NEXT: popl %eax
2326 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2327 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L33$pb"(%eax,%ecx,4), %edx
2328 ; DARWIN-32-PIC-NEXT: movl _dptr-"L33$pb"(%eax), %eax
2329 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2330 ; DARWIN-32-PIC-NEXT: ret
2332 ; DARWIN-64-STATIC: _ind05:
2333 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2334 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2335 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
2336 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2337 ; DARWIN-64-STATIC-NEXT: ret
2339 ; DARWIN-64-DYNAMIC: _ind05:
2340 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2341 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2342 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
2343 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2344 ; DARWIN-64-DYNAMIC-NEXT: ret
2346 ; DARWIN-64-PIC: _ind05:
2347 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2348 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2349 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
2350 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2351 ; DARWIN-64-PIC-NEXT: ret
2354 define void @ind06(i64 %i) nounwind {
2356 %0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
2357 %1 = load i32* %0, align 4
2358 %2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
2359 store i32 %1, i32* %2, align 4
2361 ; LINUX-64-STATIC: ind06:
2362 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
2363 ; LINUX-64-STATIC: movl %eax, ldst(,%rdi,4)
2364 ; LINUX-64-STATIC: ret
2366 ; LINUX-32-STATIC: ind06:
2367 ; LINUX-32-STATIC: movl 4(%esp), %eax
2368 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2369 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)
2370 ; LINUX-32-STATIC-NEXT: ret
2372 ; LINUX-32-PIC: ind06:
2373 ; LINUX-32-PIC: movl 4(%esp), %eax
2374 ; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
2375 ; LINUX-32-PIC-NEXT: movl %ecx, ldst(,%eax,4)
2376 ; LINUX-32-PIC-NEXT: ret
2378 ; LINUX-64-PIC: ind06:
2379 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
2380 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2381 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
2382 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2383 ; LINUX-64-PIC-NEXT: ret
2385 ; DARWIN-32-STATIC: _ind06:
2386 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2387 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2388 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)
2389 ; DARWIN-32-STATIC-NEXT: ret
2391 ; DARWIN-32-DYNAMIC: _ind06:
2392 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2393 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2394 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)
2395 ; DARWIN-32-DYNAMIC-NEXT: ret
2397 ; DARWIN-32-PIC: _ind06:
2398 ; DARWIN-32-PIC: call "L34$pb"
2399 ; DARWIN-32-PIC-NEXT: "L34$pb":
2400 ; DARWIN-32-PIC-NEXT: popl %eax
2401 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2402 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L34$pb"(%eax,%ecx,4), %edx
2403 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst-"L34$pb"(%eax,%ecx,4)
2404 ; DARWIN-32-PIC-NEXT: ret
2406 ; DARWIN-64-STATIC: _ind06:
2407 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
2408 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2409 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
2410 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2411 ; DARWIN-64-STATIC-NEXT: ret
2413 ; DARWIN-64-DYNAMIC: _ind06:
2414 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
2415 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2416 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
2417 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2418 ; DARWIN-64-DYNAMIC-NEXT: ret
2420 ; DARWIN-64-PIC: _ind06:
2421 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
2422 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2423 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
2424 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2425 ; DARWIN-64-PIC-NEXT: ret
2428 define void @ind07(i64 %i) nounwind {
2430 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
2431 store i32* %0, i32** @lptr, align 8
2433 ; LINUX-64-STATIC: ind07:
2434 ; LINUX-64-STATIC: leaq ldst(,%rdi,4), %rax
2435 ; LINUX-64-STATIC: movq %rax, lptr
2436 ; LINUX-64-STATIC: ret
2438 ; LINUX-32-STATIC: ind07:
2439 ; LINUX-32-STATIC: movl 4(%esp), %eax
2440 ; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax
2441 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
2442 ; LINUX-32-STATIC-NEXT: ret
2444 ; LINUX-32-PIC: ind07:
2445 ; LINUX-32-PIC: movl 4(%esp), %eax
2446 ; LINUX-32-PIC-NEXT: leal ldst(,%eax,4), %eax
2447 ; LINUX-32-PIC-NEXT: movl %eax, lptr
2448 ; LINUX-32-PIC-NEXT: ret
2450 ; LINUX-64-PIC: ind07:
2451 ; LINUX-64-PIC: leaq ldst(%rip), %rax
2452 ; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2453 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
2454 ; LINUX-64-PIC-NEXT: ret
2456 ; DARWIN-32-STATIC: _ind07:
2457 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2458 ; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax
2459 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
2460 ; DARWIN-32-STATIC-NEXT: ret
2462 ; DARWIN-32-DYNAMIC: _ind07:
2463 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2464 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax
2465 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
2466 ; DARWIN-32-DYNAMIC-NEXT: ret
2468 ; DARWIN-32-PIC: _ind07:
2469 ; DARWIN-32-PIC: call "L35$pb"
2470 ; DARWIN-32-PIC-NEXT: "L35$pb":
2471 ; DARWIN-32-PIC-NEXT: popl %eax
2472 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2473 ; DARWIN-32-PIC-NEXT: leal _ldst-"L35$pb"(%eax,%ecx,4), %ecx
2474 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L35$pb"(%eax)
2475 ; DARWIN-32-PIC-NEXT: ret
2477 ; DARWIN-64-STATIC: _ind07:
2478 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
2479 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2480 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
2481 ; DARWIN-64-STATIC-NEXT: ret
2483 ; DARWIN-64-DYNAMIC: _ind07:
2484 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
2485 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2486 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
2487 ; DARWIN-64-DYNAMIC-NEXT: ret
2489 ; DARWIN-64-PIC: _ind07:
2490 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
2491 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2492 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
2493 ; DARWIN-64-PIC-NEXT: ret
2496 define void @ind08(i64 %i) nounwind {
2498 %0 = load i32** @lptr, align 8
2499 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
2500 %2 = load i32* %1, align 4
2501 %3 = getelementptr i32* %0, i64 %i
2502 store i32 %2, i32* %3, align 4
2504 ; LINUX-64-STATIC: ind08:
2505 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
2506 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
2507 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
2508 ; LINUX-64-STATIC: ret
2510 ; LINUX-32-STATIC: ind08:
2511 ; LINUX-32-STATIC: movl 4(%esp), %eax
2512 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2513 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
2514 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2515 ; LINUX-32-STATIC-NEXT: ret
2517 ; LINUX-32-PIC: ind08:
2518 ; LINUX-32-PIC: movl 4(%esp), %eax
2519 ; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
2520 ; LINUX-32-PIC-NEXT: movl lptr, %edx
2521 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2522 ; LINUX-32-PIC-NEXT: ret
2524 ; LINUX-64-PIC: ind08:
2525 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
2526 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2527 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
2528 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2529 ; LINUX-64-PIC-NEXT: ret
2531 ; DARWIN-32-STATIC: _ind08:
2532 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2533 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2534 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
2535 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2536 ; DARWIN-32-STATIC-NEXT: ret
2538 ; DARWIN-32-DYNAMIC: _ind08:
2539 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2540 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2541 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
2542 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2543 ; DARWIN-32-DYNAMIC-NEXT: ret
2545 ; DARWIN-32-PIC: _ind08:
2546 ; DARWIN-32-PIC: call "L36$pb"
2547 ; DARWIN-32-PIC-NEXT: "L36$pb":
2548 ; DARWIN-32-PIC-NEXT: popl %eax
2549 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2550 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L36$pb"(%eax,%ecx,4), %edx
2551 ; DARWIN-32-PIC-NEXT: movl _lptr-"L36$pb"(%eax), %eax
2552 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2553 ; DARWIN-32-PIC-NEXT: ret
2555 ; DARWIN-64-STATIC: _ind08:
2556 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
2557 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2558 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
2559 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2560 ; DARWIN-64-STATIC-NEXT: ret
2562 ; DARWIN-64-DYNAMIC: _ind08:
2563 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
2564 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2565 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
2566 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2567 ; DARWIN-64-DYNAMIC-NEXT: ret
2569 ; DARWIN-64-PIC: _ind08:
2570 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
2571 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2572 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
2573 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2574 ; DARWIN-64-PIC-NEXT: ret
2577 define void @off00(i64 %i) nounwind {
2580 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
2581 %2 = load i32* %1, align 4
2582 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
2583 store i32 %2, i32* %3, align 4
2585 ; LINUX-64-STATIC: off00:
2586 ; LINUX-64-STATIC: movl src+64(,%rdi,4), %eax
2587 ; LINUX-64-STATIC: movl %eax, dst+64(,%rdi,4)
2588 ; LINUX-64-STATIC: ret
2590 ; LINUX-32-STATIC: off00:
2591 ; LINUX-32-STATIC: movl 4(%esp), %eax
2592 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
2593 ; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4)
2594 ; LINUX-32-STATIC-NEXT: ret
2596 ; LINUX-32-PIC: off00:
2597 ; LINUX-32-PIC: movl 4(%esp), %eax
2598 ; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
2599 ; LINUX-32-PIC-NEXT: movl %ecx, dst+64(,%eax,4)
2600 ; LINUX-32-PIC-NEXT: ret
2602 ; LINUX-64-PIC: off00:
2603 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
2604 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2605 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
2606 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2607 ; LINUX-64-PIC-NEXT: ret
2609 ; DARWIN-32-STATIC: _off00:
2610 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2611 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
2612 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4)
2613 ; DARWIN-32-STATIC-NEXT: ret
2615 ; DARWIN-32-DYNAMIC: _off00:
2616 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2617 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2618 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2619 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
2620 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2621 ; DARWIN-32-DYNAMIC-NEXT: ret
2623 ; DARWIN-32-PIC: _off00:
2624 ; DARWIN-32-PIC: call "L37$pb"
2625 ; DARWIN-32-PIC-NEXT: "L37$pb":
2626 ; DARWIN-32-PIC-NEXT: popl %eax
2627 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2628 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L37$pb"(%eax), %edx
2629 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2630 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L37$pb"(%eax), %eax
2631 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2632 ; DARWIN-32-PIC-NEXT: ret
2634 ; DARWIN-64-STATIC: _off00:
2635 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2636 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2637 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2638 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2639 ; DARWIN-64-STATIC-NEXT: ret
2641 ; DARWIN-64-DYNAMIC: _off00:
2642 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2643 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2644 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2645 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2646 ; DARWIN-64-DYNAMIC-NEXT: ret
2648 ; DARWIN-64-PIC: _off00:
2649 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2650 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2651 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2652 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2653 ; DARWIN-64-PIC-NEXT: ret
2656 define void @oxf00(i64 %i) nounwind {
2659 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
2660 %2 = load i32* %1, align 4
2661 %3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
2662 store i32 %2, i32* %3, align 4
2664 ; LINUX-64-STATIC: oxf00:
2665 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), %eax
2666 ; LINUX-64-STATIC: movl %eax, xdst+64(,%rdi,4)
2667 ; LINUX-64-STATIC: ret
2669 ; LINUX-32-STATIC: oxf00:
2670 ; LINUX-32-STATIC: movl 4(%esp), %eax
2671 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2672 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4)
2673 ; LINUX-32-STATIC-NEXT: ret
2675 ; LINUX-32-PIC: oxf00:
2676 ; LINUX-32-PIC: movl 4(%esp), %eax
2677 ; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2678 ; LINUX-32-PIC-NEXT: movl %ecx, xdst+64(,%eax,4)
2679 ; LINUX-32-PIC-NEXT: ret
2681 ; LINUX-64-PIC: oxf00:
2682 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
2683 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2684 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
2685 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2686 ; LINUX-64-PIC-NEXT: ret
2688 ; DARWIN-32-STATIC: _oxf00:
2689 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2690 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
2691 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4)
2692 ; DARWIN-32-STATIC-NEXT: ret
2694 ; DARWIN-32-DYNAMIC: _oxf00:
2695 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2696 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2697 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2698 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
2699 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2700 ; DARWIN-32-DYNAMIC-NEXT: ret
2702 ; DARWIN-32-PIC: _oxf00:
2703 ; DARWIN-32-PIC: call "L38$pb"
2704 ; DARWIN-32-PIC-NEXT: "L38$pb":
2705 ; DARWIN-32-PIC-NEXT: popl %eax
2706 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2707 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L38$pb"(%eax), %edx
2708 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2709 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L38$pb"(%eax), %eax
2710 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2711 ; DARWIN-32-PIC-NEXT: ret
2713 ; DARWIN-64-STATIC: _oxf00:
2714 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
2715 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2716 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2717 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2718 ; DARWIN-64-STATIC-NEXT: ret
2720 ; DARWIN-64-DYNAMIC: _oxf00:
2721 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
2722 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2723 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2724 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2725 ; DARWIN-64-DYNAMIC-NEXT: ret
2727 ; DARWIN-64-PIC: _oxf00:
2728 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
2729 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2730 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2731 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2732 ; DARWIN-64-PIC-NEXT: ret
2735 define void @off01(i64 %i) nounwind {
2737 %.sum = add i64 %i, 16
2738 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
2739 store i32* %0, i32** @ptr, align 8
2741 ; LINUX-64-STATIC: off01:
2742 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax
2743 ; LINUX-64-STATIC: movq %rax, ptr
2744 ; LINUX-64-STATIC: ret
2746 ; LINUX-32-STATIC: off01:
2747 ; LINUX-32-STATIC: movl 4(%esp), %eax
2748 ; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
2749 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2750 ; LINUX-32-STATIC-NEXT: ret
2752 ; LINUX-32-PIC: off01:
2753 ; LINUX-32-PIC: movl 4(%esp), %eax
2754 ; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax
2755 ; LINUX-32-PIC-NEXT: movl %eax, ptr
2756 ; LINUX-32-PIC-NEXT: ret
2758 ; LINUX-64-PIC: off01:
2759 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
2760 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2761 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2762 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
2763 ; LINUX-64-PIC-NEXT: ret
2765 ; DARWIN-32-STATIC: _off01:
2766 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2767 ; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
2768 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2769 ; DARWIN-32-STATIC-NEXT: ret
2771 ; DARWIN-32-DYNAMIC: _off01:
2772 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2773 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
2774 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
2775 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2776 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2777 ; DARWIN-32-DYNAMIC-NEXT: ret
2779 ; DARWIN-32-PIC: _off01:
2780 ; DARWIN-32-PIC: call "L39$pb"
2781 ; DARWIN-32-PIC-NEXT: "L39$pb":
2782 ; DARWIN-32-PIC-NEXT: popl %eax
2783 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2784 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L39$pb"(%eax), %edx
2785 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
2786 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L39$pb"(%eax), %eax
2787 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2788 ; DARWIN-32-PIC-NEXT: ret
2790 ; DARWIN-64-STATIC: _off01:
2791 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
2792 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2793 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2794 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
2795 ; DARWIN-64-STATIC-NEXT: ret
2797 ; DARWIN-64-DYNAMIC: _off01:
2798 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
2799 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2800 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2801 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
2802 ; DARWIN-64-DYNAMIC-NEXT: ret
2804 ; DARWIN-64-PIC: _off01:
2805 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
2806 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2807 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2808 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
2809 ; DARWIN-64-PIC-NEXT: ret
2812 define void @oxf01(i64 %i) nounwind {
2814 %.sum = add i64 %i, 16
2815 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum
2816 store i32* %0, i32** @ptr, align 8
2818 ; LINUX-64-STATIC: oxf01:
2819 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax
2820 ; LINUX-64-STATIC: movq %rax, ptr
2821 ; LINUX-64-STATIC: ret
2823 ; LINUX-32-STATIC: oxf01:
2824 ; LINUX-32-STATIC: movl 4(%esp), %eax
2825 ; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
2826 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2827 ; LINUX-32-STATIC-NEXT: ret
2829 ; LINUX-32-PIC: oxf01:
2830 ; LINUX-32-PIC: movl 4(%esp), %eax
2831 ; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax
2832 ; LINUX-32-PIC-NEXT: movl %eax, ptr
2833 ; LINUX-32-PIC-NEXT: ret
2835 ; LINUX-64-PIC: oxf01:
2836 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
2837 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2838 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2839 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
2840 ; LINUX-64-PIC-NEXT: ret
2842 ; DARWIN-32-STATIC: _oxf01:
2843 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2844 ; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
2845 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2846 ; DARWIN-32-STATIC-NEXT: ret
2848 ; DARWIN-32-DYNAMIC: _oxf01:
2849 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2850 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
2851 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
2852 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2853 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2854 ; DARWIN-32-DYNAMIC-NEXT: ret
2856 ; DARWIN-32-PIC: _oxf01:
2857 ; DARWIN-32-PIC: call "L40$pb"
2858 ; DARWIN-32-PIC-NEXT: "L40$pb":
2859 ; DARWIN-32-PIC-NEXT: popl %eax
2860 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2861 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L40$pb"(%eax), %edx
2862 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
2863 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L40$pb"(%eax), %eax
2864 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2865 ; DARWIN-32-PIC-NEXT: ret
2867 ; DARWIN-64-STATIC: _oxf01:
2868 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
2869 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2870 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2871 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
2872 ; DARWIN-64-STATIC-NEXT: ret
2874 ; DARWIN-64-DYNAMIC: _oxf01:
2875 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
2876 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2877 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2878 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
2879 ; DARWIN-64-DYNAMIC-NEXT: ret
2881 ; DARWIN-64-PIC: _oxf01:
2882 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
2883 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2884 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2885 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
2886 ; DARWIN-64-PIC-NEXT: ret
2889 define void @off02(i64 %i) nounwind {
2891 %0 = load i32** @ptr, align 8
2893 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
2894 %3 = load i32* %2, align 4
2895 %4 = getelementptr i32* %0, i64 %1
2896 store i32 %3, i32* %4, align 4
2898 ; LINUX-64-STATIC: off02:
2899 ; LINUX-64-STATIC: movl src+64(,%rdi,4), %eax
2900 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
2901 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
2902 ; LINUX-64-STATIC: ret
2904 ; LINUX-32-STATIC: off02:
2905 ; LINUX-32-STATIC: movl 4(%esp), %eax
2906 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
2907 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2908 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2909 ; LINUX-32-STATIC-NEXT: ret
2911 ; LINUX-32-PIC: off02:
2912 ; LINUX-32-PIC: movl 4(%esp), %eax
2913 ; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
2914 ; LINUX-32-PIC-NEXT: movl ptr, %edx
2915 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2916 ; LINUX-32-PIC-NEXT: ret
2918 ; LINUX-64-PIC: off02:
2919 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
2920 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2921 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2922 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2923 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2924 ; LINUX-64-PIC-NEXT: ret
2926 ; DARWIN-32-STATIC: _off02:
2927 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2928 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
2929 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2930 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2931 ; DARWIN-32-STATIC-NEXT: ret
2933 ; DARWIN-32-DYNAMIC: _off02:
2934 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2935 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2936 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2937 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2938 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2939 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2940 ; DARWIN-32-DYNAMIC-NEXT: ret
2942 ; DARWIN-32-PIC: _off02:
2943 ; DARWIN-32-PIC: call "L41$pb"
2944 ; DARWIN-32-PIC-NEXT: "L41$pb":
2945 ; DARWIN-32-PIC-NEXT: popl %eax
2946 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2947 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L41$pb"(%eax), %edx
2948 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2949 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L41$pb"(%eax), %eax
2950 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2951 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2952 ; DARWIN-32-PIC-NEXT: ret
2954 ; DARWIN-64-STATIC: _off02:
2955 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2956 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2957 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2958 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2959 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2960 ; DARWIN-64-STATIC-NEXT: ret
2962 ; DARWIN-64-DYNAMIC: _off02:
2963 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2964 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2965 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2966 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2967 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2968 ; DARWIN-64-DYNAMIC-NEXT: ret
2970 ; DARWIN-64-PIC: _off02:
2971 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2972 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2973 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2974 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2975 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2976 ; DARWIN-64-PIC-NEXT: ret
2979 define void @oxf02(i64 %i) nounwind {
2981 %0 = load i32** @ptr, align 8
2983 %2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1
2984 %3 = load i32* %2, align 4
2985 %4 = getelementptr i32* %0, i64 %1
2986 store i32 %3, i32* %4, align 4
2988 ; LINUX-64-STATIC: oxf02:
2989 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), %eax
2990 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
2991 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
2992 ; LINUX-64-STATIC: ret
2994 ; LINUX-32-STATIC: oxf02:
2995 ; LINUX-32-STATIC: movl 4(%esp), %eax
2996 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2997 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2998 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2999 ; LINUX-32-STATIC-NEXT: ret
3001 ; LINUX-32-PIC: oxf02:
3002 ; LINUX-32-PIC: movl 4(%esp), %eax
3003 ; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
3004 ; LINUX-32-PIC-NEXT: movl ptr, %edx
3005 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3006 ; LINUX-32-PIC-NEXT: ret
3008 ; LINUX-64-PIC: oxf02:
3009 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
3010 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3011 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3012 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3013 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3014 ; LINUX-64-PIC-NEXT: ret
3016 ; DARWIN-32-STATIC: _oxf02:
3017 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3018 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
3019 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
3020 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3021 ; DARWIN-32-STATIC-NEXT: ret
3023 ; DARWIN-32-DYNAMIC: _oxf02:
3024 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3025 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
3026 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3027 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
3028 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
3029 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3030 ; DARWIN-32-DYNAMIC-NEXT: ret
3032 ; DARWIN-32-PIC: _oxf02:
3033 ; DARWIN-32-PIC: call "L42$pb"
3034 ; DARWIN-32-PIC-NEXT: "L42$pb":
3035 ; DARWIN-32-PIC-NEXT: popl %eax
3036 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3037 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L42$pb"(%eax), %edx
3038 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3039 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L42$pb"(%eax), %eax
3040 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
3041 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3042 ; DARWIN-32-PIC-NEXT: ret
3044 ; DARWIN-64-STATIC: _oxf02:
3045 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
3046 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3047 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3048 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
3049 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3050 ; DARWIN-64-STATIC-NEXT: ret
3052 ; DARWIN-64-DYNAMIC: _oxf02:
3053 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
3054 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3055 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3056 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
3057 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3058 ; DARWIN-64-DYNAMIC-NEXT: ret
3060 ; DARWIN-64-PIC: _oxf02:
3061 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
3062 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3063 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3064 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
3065 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3066 ; DARWIN-64-PIC-NEXT: ret
3069 define void @off03(i64 %i) nounwind {
3072 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
3073 %2 = load i32* %1, align 4
3074 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
3075 store i32 %2, i32* %3, align 4
3077 ; LINUX-64-STATIC: off03:
3078 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), %eax
3079 ; LINUX-64-STATIC: movl %eax, ddst+64(,%rdi,4)
3080 ; LINUX-64-STATIC: ret
3082 ; LINUX-32-STATIC: off03:
3083 ; LINUX-32-STATIC: movl 4(%esp), %eax
3084 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3085 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4)
3086 ; LINUX-32-STATIC-NEXT: ret
3088 ; LINUX-32-PIC: off03:
3089 ; LINUX-32-PIC: movl 4(%esp), %eax
3090 ; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3091 ; LINUX-32-PIC-NEXT: movl %ecx, ddst+64(,%eax,4)
3092 ; LINUX-32-PIC-NEXT: ret
3094 ; LINUX-64-PIC: off03:
3095 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3096 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3097 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
3098 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3099 ; LINUX-64-PIC-NEXT: ret
3101 ; DARWIN-32-STATIC: _off03:
3102 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3103 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3104 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3105 ; DARWIN-32-STATIC-NEXT: ret
3107 ; DARWIN-32-DYNAMIC: _off03:
3108 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3109 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3110 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3111 ; DARWIN-32-DYNAMIC-NEXT: ret
3113 ; DARWIN-32-PIC: _off03:
3114 ; DARWIN-32-PIC: call "L43$pb"
3115 ; DARWIN-32-PIC-NEXT: "L43$pb":
3116 ; DARWIN-32-PIC-NEXT: popl %eax
3117 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3118 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L43$pb"(%eax,%ecx,4), %edx
3119 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst+64-"L43$pb"(%eax,%ecx,4)
3120 ; DARWIN-32-PIC-NEXT: ret
3122 ; DARWIN-64-STATIC: _off03:
3123 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
3124 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3125 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
3126 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3127 ; DARWIN-64-STATIC-NEXT: ret
3129 ; DARWIN-64-DYNAMIC: _off03:
3130 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
3131 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3132 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
3133 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3134 ; DARWIN-64-DYNAMIC-NEXT: ret
3136 ; DARWIN-64-PIC: _off03:
3137 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
3138 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3139 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
3140 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3141 ; DARWIN-64-PIC-NEXT: ret
3144 define void @off04(i64 %i) nounwind {
3146 %.sum = add i64 %i, 16
3147 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
3148 store i32* %0, i32** @dptr, align 8
3150 ; LINUX-64-STATIC: off04:
3151 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax
3152 ; LINUX-64-STATIC: movq %rax, dptr
3153 ; LINUX-64-STATIC: ret
3155 ; LINUX-32-STATIC: off04:
3156 ; LINUX-32-STATIC: movl 4(%esp), %eax
3157 ; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
3158 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
3159 ; LINUX-32-STATIC-NEXT: ret
3161 ; LINUX-32-PIC: off04:
3162 ; LINUX-32-PIC: movl 4(%esp), %eax
3163 ; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax
3164 ; LINUX-32-PIC-NEXT: movl %eax, dptr
3165 ; LINUX-32-PIC-NEXT: ret
3167 ; LINUX-64-PIC: off04:
3168 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
3169 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3170 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3171 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3172 ; LINUX-64-PIC-NEXT: ret
3174 ; DARWIN-32-STATIC: _off04:
3175 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3176 ; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
3177 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
3178 ; DARWIN-32-STATIC-NEXT: ret
3180 ; DARWIN-32-DYNAMIC: _off04:
3181 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3182 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
3183 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
3184 ; DARWIN-32-DYNAMIC-NEXT: ret
3186 ; DARWIN-32-PIC: _off04:
3187 ; DARWIN-32-PIC: call "L44$pb"
3188 ; DARWIN-32-PIC-NEXT: "L44$pb":
3189 ; DARWIN-32-PIC-NEXT: popl %eax
3190 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3191 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L44$pb"(%eax,%ecx,4), %ecx
3192 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L44$pb"(%eax)
3193 ; DARWIN-32-PIC-NEXT: ret
3195 ; DARWIN-64-STATIC: _off04:
3196 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
3197 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3198 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
3199 ; DARWIN-64-STATIC-NEXT: ret
3201 ; DARWIN-64-DYNAMIC: _off04:
3202 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
3203 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3204 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
3205 ; DARWIN-64-DYNAMIC-NEXT: ret
3207 ; DARWIN-64-PIC: _off04:
3208 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
3209 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3210 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
3211 ; DARWIN-64-PIC-NEXT: ret
3214 define void @off05(i64 %i) nounwind {
3216 %0 = load i32** @dptr, align 8
3218 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
3219 %3 = load i32* %2, align 4
3220 %4 = getelementptr i32* %0, i64 %1
3221 store i32 %3, i32* %4, align 4
3223 ; LINUX-64-STATIC: off05:
3224 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), %eax
3225 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
3226 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
3227 ; LINUX-64-STATIC: ret
3229 ; LINUX-32-STATIC: off05:
3230 ; LINUX-32-STATIC: movl 4(%esp), %eax
3231 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3232 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
3233 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3234 ; LINUX-32-STATIC-NEXT: ret
3236 ; LINUX-32-PIC: off05:
3237 ; LINUX-32-PIC: movl 4(%esp), %eax
3238 ; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3239 ; LINUX-32-PIC-NEXT: movl dptr, %edx
3240 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3241 ; LINUX-32-PIC-NEXT: ret
3243 ; LINUX-64-PIC: off05:
3244 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3245 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3246 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3247 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3248 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3249 ; LINUX-64-PIC-NEXT: ret
3251 ; DARWIN-32-STATIC: _off05:
3252 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3253 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3254 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
3255 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3256 ; DARWIN-32-STATIC-NEXT: ret
3258 ; DARWIN-32-DYNAMIC: _off05:
3259 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3260 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3261 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
3262 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3263 ; DARWIN-32-DYNAMIC-NEXT: ret
3265 ; DARWIN-32-PIC: _off05:
3266 ; DARWIN-32-PIC: call "L45$pb"
3267 ; DARWIN-32-PIC-NEXT: "L45$pb":
3268 ; DARWIN-32-PIC-NEXT: popl %eax
3269 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3270 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L45$pb"(%eax,%ecx,4), %edx
3271 ; DARWIN-32-PIC-NEXT: movl _dptr-"L45$pb"(%eax), %eax
3272 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3273 ; DARWIN-32-PIC-NEXT: ret
3275 ; DARWIN-64-STATIC: _off05:
3276 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
3277 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3278 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
3279 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3280 ; DARWIN-64-STATIC-NEXT: ret
3282 ; DARWIN-64-DYNAMIC: _off05:
3283 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
3284 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3285 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
3286 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3287 ; DARWIN-64-DYNAMIC-NEXT: ret
3289 ; DARWIN-64-PIC: _off05:
3290 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
3291 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3292 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
3293 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3294 ; DARWIN-64-PIC-NEXT: ret
3297 define void @off06(i64 %i) nounwind {
3300 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
3301 %2 = load i32* %1, align 4
3302 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
3303 store i32 %2, i32* %3, align 4
3305 ; LINUX-64-STATIC: off06:
3306 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), %eax
3307 ; LINUX-64-STATIC: movl %eax, ldst+64(,%rdi,4)
3308 ; LINUX-64-STATIC: ret
3310 ; LINUX-32-STATIC: off06:
3311 ; LINUX-32-STATIC: movl 4(%esp), %eax
3312 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3313 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4)
3314 ; LINUX-32-STATIC-NEXT: ret
3316 ; LINUX-32-PIC: off06:
3317 ; LINUX-32-PIC: movl 4(%esp), %eax
3318 ; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3319 ; LINUX-32-PIC-NEXT: movl %ecx, ldst+64(,%eax,4)
3320 ; LINUX-32-PIC-NEXT: ret
3322 ; LINUX-64-PIC: off06:
3323 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
3324 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3325 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
3326 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3327 ; LINUX-64-PIC-NEXT: ret
3329 ; DARWIN-32-STATIC: _off06:
3330 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3331 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3332 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
3333 ; DARWIN-32-STATIC-NEXT: ret
3335 ; DARWIN-32-DYNAMIC: _off06:
3336 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3337 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3338 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
3339 ; DARWIN-32-DYNAMIC-NEXT: ret
3341 ; DARWIN-32-PIC: _off06:
3342 ; DARWIN-32-PIC: call "L46$pb"
3343 ; DARWIN-32-PIC-NEXT: "L46$pb":
3344 ; DARWIN-32-PIC-NEXT: popl %eax
3345 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3346 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L46$pb"(%eax,%ecx,4), %edx
3347 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst+64-"L46$pb"(%eax,%ecx,4)
3348 ; DARWIN-32-PIC-NEXT: ret
3350 ; DARWIN-64-STATIC: _off06:
3351 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
3352 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3353 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
3354 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3355 ; DARWIN-64-STATIC-NEXT: ret
3357 ; DARWIN-64-DYNAMIC: _off06:
3358 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
3359 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3360 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
3361 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3362 ; DARWIN-64-DYNAMIC-NEXT: ret
3364 ; DARWIN-64-PIC: _off06:
3365 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
3366 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3367 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
3368 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3369 ; DARWIN-64-PIC-NEXT: ret
3372 define void @off07(i64 %i) nounwind {
3374 %.sum = add i64 %i, 16
3375 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
3376 store i32* %0, i32** @lptr, align 8
3378 ; LINUX-64-STATIC: off07:
3379 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax
3380 ; LINUX-64-STATIC: movq %rax, lptr
3381 ; LINUX-64-STATIC: ret
3383 ; LINUX-32-STATIC: off07:
3384 ; LINUX-32-STATIC: movl 4(%esp), %eax
3385 ; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
3386 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
3387 ; LINUX-32-STATIC-NEXT: ret
3389 ; LINUX-32-PIC: off07:
3390 ; LINUX-32-PIC: movl 4(%esp), %eax
3391 ; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax
3392 ; LINUX-32-PIC-NEXT: movl %eax, lptr
3393 ; LINUX-32-PIC-NEXT: ret
3395 ; LINUX-64-PIC: off07:
3396 ; LINUX-64-PIC: leaq ldst(%rip), %rax
3397 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3398 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
3399 ; LINUX-64-PIC-NEXT: ret
3401 ; DARWIN-32-STATIC: _off07:
3402 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3403 ; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
3404 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
3405 ; DARWIN-32-STATIC-NEXT: ret
3407 ; DARWIN-32-DYNAMIC: _off07:
3408 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3409 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
3410 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
3411 ; DARWIN-32-DYNAMIC-NEXT: ret
3413 ; DARWIN-32-PIC: _off07:
3414 ; DARWIN-32-PIC: call "L47$pb"
3415 ; DARWIN-32-PIC-NEXT: "L47$pb":
3416 ; DARWIN-32-PIC-NEXT: popl %eax
3417 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3418 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L47$pb"(%eax,%ecx,4), %ecx
3419 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L47$pb"(%eax)
3420 ; DARWIN-32-PIC-NEXT: ret
3422 ; DARWIN-64-STATIC: _off07:
3423 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
3424 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3425 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
3426 ; DARWIN-64-STATIC-NEXT: ret
3428 ; DARWIN-64-DYNAMIC: _off07:
3429 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
3430 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3431 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
3432 ; DARWIN-64-DYNAMIC-NEXT: ret
3434 ; DARWIN-64-PIC: _off07:
3435 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
3436 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3437 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
3438 ; DARWIN-64-PIC-NEXT: ret
3441 define void @off08(i64 %i) nounwind {
3443 %0 = load i32** @lptr, align 8
3445 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
3446 %3 = load i32* %2, align 4
3447 %4 = getelementptr i32* %0, i64 %1
3448 store i32 %3, i32* %4, align 4
3450 ; LINUX-64-STATIC: off08:
3451 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), %eax
3452 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
3453 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
3454 ; LINUX-64-STATIC: ret
3456 ; LINUX-32-STATIC: off08:
3457 ; LINUX-32-STATIC: movl 4(%esp), %eax
3458 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3459 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
3460 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3461 ; LINUX-32-STATIC-NEXT: ret
3463 ; LINUX-32-PIC: off08:
3464 ; LINUX-32-PIC: movl 4(%esp), %eax
3465 ; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3466 ; LINUX-32-PIC-NEXT: movl lptr, %edx
3467 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3468 ; LINUX-32-PIC-NEXT: ret
3470 ; LINUX-64-PIC: off08:
3471 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
3472 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3473 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
3474 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3475 ; LINUX-64-PIC-NEXT: ret
3477 ; DARWIN-32-STATIC: _off08:
3478 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3479 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3480 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
3481 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3482 ; DARWIN-32-STATIC-NEXT: ret
3484 ; DARWIN-32-DYNAMIC: _off08:
3485 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3486 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3487 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
3488 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3489 ; DARWIN-32-DYNAMIC-NEXT: ret
3491 ; DARWIN-32-PIC: _off08:
3492 ; DARWIN-32-PIC: call "L48$pb"
3493 ; DARWIN-32-PIC-NEXT: "L48$pb":
3494 ; DARWIN-32-PIC-NEXT: popl %eax
3495 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3496 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L48$pb"(%eax,%ecx,4), %edx
3497 ; DARWIN-32-PIC-NEXT: movl _lptr-"L48$pb"(%eax), %eax
3498 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3499 ; DARWIN-32-PIC-NEXT: ret
3501 ; DARWIN-64-STATIC: _off08:
3502 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
3503 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3504 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
3505 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3506 ; DARWIN-64-STATIC-NEXT: ret
3508 ; DARWIN-64-DYNAMIC: _off08:
3509 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
3510 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3511 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
3512 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3513 ; DARWIN-64-DYNAMIC-NEXT: ret
3515 ; DARWIN-64-PIC: _off08:
3516 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
3517 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3518 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
3519 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3520 ; DARWIN-64-PIC-NEXT: ret
3523 define void @moo00(i64 %i) nounwind {
3525 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
3526 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
3528 ; LINUX-64-STATIC: moo00:
3529 ; LINUX-64-STATIC: movl src+262144(%rip), %eax
3530 ; LINUX-64-STATIC: movl %eax, dst+262144(%rip)
3531 ; LINUX-64-STATIC: ret
3533 ; LINUX-32-STATIC: moo00:
3534 ; LINUX-32-STATIC: movl src+262144, %eax
3535 ; LINUX-32-STATIC-NEXT: movl %eax, dst+262144
3536 ; LINUX-32-STATIC-NEXT: ret
3538 ; LINUX-32-PIC: moo00:
3539 ; LINUX-32-PIC: movl src+262144, %eax
3540 ; LINUX-32-PIC-NEXT: movl %eax, dst+262144
3541 ; LINUX-32-PIC-NEXT: ret
3543 ; LINUX-64-PIC: moo00:
3544 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
3545 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
3546 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
3547 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
3548 ; LINUX-64-PIC-NEXT: ret
3550 ; DARWIN-32-STATIC: _moo00:
3551 ; DARWIN-32-STATIC: movl _src+262144, %eax
3552 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144
3553 ; DARWIN-32-STATIC-NEXT: ret
3555 ; DARWIN-32-DYNAMIC: _moo00:
3556 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
3557 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
3558 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
3559 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
3560 ; DARWIN-32-DYNAMIC-NEXT: ret
3562 ; DARWIN-32-PIC: _moo00:
3563 ; DARWIN-32-PIC: call "L49$pb"
3564 ; DARWIN-32-PIC-NEXT: "L49$pb":
3565 ; DARWIN-32-PIC-NEXT: popl %eax
3566 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L49$pb"(%eax), %ecx
3567 ; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
3568 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L49$pb"(%eax), %eax
3569 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
3570 ; DARWIN-32-PIC-NEXT: ret
3572 ; DARWIN-64-STATIC: _moo00:
3573 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
3574 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
3575 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3576 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
3577 ; DARWIN-64-STATIC-NEXT: ret
3579 ; DARWIN-64-DYNAMIC: _moo00:
3580 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
3581 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
3582 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3583 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
3584 ; DARWIN-64-DYNAMIC-NEXT: ret
3586 ; DARWIN-64-PIC: _moo00:
3587 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
3588 ; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
3589 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3590 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
3591 ; DARWIN-64-PIC-NEXT: ret
3594 define void @moo01(i64 %i) nounwind {
3596 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
3598 ; LINUX-64-STATIC: moo01:
3599 ; LINUX-64-STATIC: movq $dst+262144, ptr(%rip)
3600 ; LINUX-64-STATIC: ret
3602 ; LINUX-32-STATIC: moo01:
3603 ; LINUX-32-STATIC: movl $dst+262144, ptr
3604 ; LINUX-32-STATIC-NEXT: ret
3606 ; LINUX-32-PIC: moo01:
3607 ; LINUX-32-PIC: movl $dst+262144, ptr
3608 ; LINUX-32-PIC-NEXT: ret
3610 ; LINUX-64-PIC: moo01:
3611 ; LINUX-64-PIC: movl $262144, %eax
3612 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
3613 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3614 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3615 ; LINUX-64-PIC-NEXT: ret
3617 ; DARWIN-32-STATIC: _moo01:
3618 ; DARWIN-32-STATIC: movl $_dst+262144, _ptr
3619 ; DARWIN-32-STATIC-NEXT: ret
3621 ; DARWIN-32-DYNAMIC: _moo01:
3622 ; DARWIN-32-DYNAMIC: movl $262144, %eax
3623 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
3624 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
3625 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
3626 ; DARWIN-32-DYNAMIC-NEXT: ret
3628 ; DARWIN-32-PIC: _moo01:
3629 ; DARWIN-32-PIC: call "L50$pb"
3630 ; DARWIN-32-PIC-NEXT: "L50$pb":
3631 ; DARWIN-32-PIC-NEXT: popl %eax
3632 ; DARWIN-32-PIC-NEXT: movl $262144, %ecx
3633 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-"L50$pb"(%eax), %ecx
3634 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L50$pb"(%eax), %eax
3635 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
3636 ; DARWIN-32-PIC-NEXT: ret
3638 ; DARWIN-64-STATIC: _moo01:
3639 ; DARWIN-64-STATIC: movl $262144, %eax
3640 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
3641 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3642 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
3643 ; DARWIN-64-STATIC-NEXT: ret
3645 ; DARWIN-64-DYNAMIC: _moo01:
3646 ; DARWIN-64-DYNAMIC: movl $262144, %eax
3647 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
3648 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3649 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
3650 ; DARWIN-64-DYNAMIC-NEXT: ret
3652 ; DARWIN-64-PIC: _moo01:
3653 ; DARWIN-64-PIC: movl $262144, %eax
3654 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
3655 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3656 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
3657 ; DARWIN-64-PIC-NEXT: ret
3660 define void @moo02(i64 %i) nounwind {
3662 %0 = load i32** @ptr, align 8
3663 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
3664 %2 = getelementptr i32* %0, i64 65536
3665 store i32 %1, i32* %2, align 4
3667 ; LINUX-64-STATIC: moo02:
3668 ; LINUX-64-STATIC: movl src+262144(%rip), %eax
3669 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
3670 ; LINUX-64-STATIC: movl %eax, 262144(%rcx)
3671 ; LINUX-64-STATIC: ret
3673 ; LINUX-32-STATIC: moo02:
3674 ; LINUX-32-STATIC: movl src+262144, %eax
3675 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
3676 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
3677 ; LINUX-32-STATIC-NEXT: ret
3679 ; LINUX-32-PIC: moo02:
3680 ; LINUX-32-PIC: movl src+262144, %eax
3681 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
3682 ; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
3683 ; LINUX-32-PIC-NEXT: ret
3685 ; LINUX-64-PIC: moo02:
3686 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
3687 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
3688 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3689 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3690 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
3691 ; LINUX-64-PIC-NEXT: ret
3693 ; DARWIN-32-STATIC: _moo02:
3694 ; DARWIN-32-STATIC: movl _src+262144, %eax
3695 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
3696 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
3697 ; DARWIN-32-STATIC-NEXT: ret
3699 ; DARWIN-32-DYNAMIC: _moo02:
3700 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
3701 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
3702 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
3703 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
3704 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
3705 ; DARWIN-32-DYNAMIC-NEXT: ret
3707 ; DARWIN-32-PIC: _moo02:
3708 ; DARWIN-32-PIC: call "L51$pb"
3709 ; DARWIN-32-PIC-NEXT: "L51$pb":
3710 ; DARWIN-32-PIC-NEXT: popl %eax
3711 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L51$pb"(%eax), %ecx
3712 ; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
3713 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L51$pb"(%eax), %eax
3714 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
3715 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
3716 ; DARWIN-32-PIC-NEXT: ret
3718 ; DARWIN-64-STATIC: _moo02:
3719 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
3720 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
3721 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3722 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
3723 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
3724 ; DARWIN-64-STATIC-NEXT: ret
3726 ; DARWIN-64-DYNAMIC: _moo02:
3727 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
3728 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
3729 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3730 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
3731 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
3732 ; DARWIN-64-DYNAMIC-NEXT: ret
3734 ; DARWIN-64-PIC: _moo02:
3735 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
3736 ; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
3737 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3738 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
3739 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
3740 ; DARWIN-64-PIC-NEXT: ret
3743 define void @moo03(i64 %i) nounwind {
3745 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
3746 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
3748 ; LINUX-64-STATIC: moo03:
3749 ; LINUX-64-STATIC: movl dsrc+262144(%rip), %eax
3750 ; LINUX-64-STATIC: movl %eax, ddst+262144(%rip)
3751 ; LINUX-64-STATIC: ret
3753 ; LINUX-32-STATIC: moo03:
3754 ; LINUX-32-STATIC: movl dsrc+262144, %eax
3755 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144
3756 ; LINUX-32-STATIC-NEXT: ret
3758 ; LINUX-32-PIC: moo03:
3759 ; LINUX-32-PIC: movl dsrc+262144, %eax
3760 ; LINUX-32-PIC-NEXT: movl %eax, ddst+262144
3761 ; LINUX-32-PIC-NEXT: ret
3763 ; LINUX-64-PIC: moo03:
3764 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3765 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
3766 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
3767 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
3768 ; LINUX-64-PIC-NEXT: ret
3770 ; DARWIN-32-STATIC: _moo03:
3771 ; DARWIN-32-STATIC: movl _dsrc+262144, %eax
3772 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144
3773 ; DARWIN-32-STATIC-NEXT: ret
3775 ; DARWIN-32-DYNAMIC: _moo03:
3776 ; DARWIN-32-DYNAMIC: movl _dsrc+262144, %eax
3777 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144
3778 ; DARWIN-32-DYNAMIC-NEXT: ret
3780 ; DARWIN-32-PIC: _moo03:
3781 ; DARWIN-32-PIC: call "L52$pb"
3782 ; DARWIN-32-PIC-NEXT: "L52$pb":
3783 ; DARWIN-32-PIC-NEXT: popl %eax
3784 ; DARWIN-32-PIC-NEXT: movl _dsrc+262144-"L52$pb"(%eax), %ecx
3785 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst+262144-"L52$pb"(%eax)
3786 ; DARWIN-32-PIC-NEXT: ret
3788 ; DARWIN-64-STATIC: _moo03:
3789 ; DARWIN-64-STATIC: movl _dsrc+262144(%rip), %eax
3790 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip)
3791 ; DARWIN-64-STATIC-NEXT: ret
3793 ; DARWIN-64-DYNAMIC: _moo03:
3794 ; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), %eax
3795 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip)
3796 ; DARWIN-64-DYNAMIC-NEXT: ret
3798 ; DARWIN-64-PIC: _moo03:
3799 ; DARWIN-64-PIC: movl _dsrc+262144(%rip), %eax
3800 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip)
3801 ; DARWIN-64-PIC-NEXT: ret
3804 define void @moo04(i64 %i) nounwind {
3806 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
3808 ; LINUX-64-STATIC: moo04:
3809 ; LINUX-64-STATIC: movq $ddst+262144, dptr
3810 ; LINUX-64-STATIC: ret
3812 ; LINUX-32-STATIC: moo04:
3813 ; LINUX-32-STATIC: movl $ddst+262144, dptr
3814 ; LINUX-32-STATIC-NEXT: ret
3816 ; LINUX-32-PIC: moo04:
3817 ; LINUX-32-PIC: movl $ddst+262144, dptr
3818 ; LINUX-32-PIC-NEXT: ret
3820 ; LINUX-64-PIC: moo04:
3821 ; LINUX-64-PIC: movl $262144, %eax
3822 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax
3823 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3824 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3825 ; LINUX-64-PIC-NEXT: ret
3827 ; DARWIN-32-STATIC: _moo04:
3828 ; DARWIN-32-STATIC: movl $_ddst+262144, _dptr
3829 ; DARWIN-32-STATIC-NEXT: ret
3831 ; DARWIN-32-DYNAMIC: _moo04:
3832 ; DARWIN-32-DYNAMIC: movl $_ddst+262144, _dptr
3833 ; DARWIN-32-DYNAMIC-NEXT: ret
3835 ; DARWIN-32-PIC: _moo04:
3836 ; DARWIN-32-PIC: call "L53$pb"
3837 ; DARWIN-32-PIC-NEXT: "L53$pb":
3838 ; DARWIN-32-PIC-NEXT: popl %eax
3839 ; DARWIN-32-PIC-NEXT: leal _ddst+262144-"L53$pb"(%eax), %ecx
3840 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L53$pb"(%eax)
3841 ; DARWIN-32-PIC-NEXT: ret
3843 ; DARWIN-64-STATIC: _moo04:
3844 ; DARWIN-64-STATIC: leaq _ddst+262144(%rip), %rax
3845 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
3846 ; DARWIN-64-STATIC-NEXT: ret
3848 ; DARWIN-64-DYNAMIC: _moo04:
3849 ; DARWIN-64-DYNAMIC: leaq _ddst+262144(%rip), %rax
3850 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
3851 ; DARWIN-64-DYNAMIC-NEXT: ret
3853 ; DARWIN-64-PIC: _moo04:
3854 ; DARWIN-64-PIC: leaq _ddst+262144(%rip), %rax
3855 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
3856 ; DARWIN-64-PIC-NEXT: ret
3859 define void @moo05(i64 %i) nounwind {
3861 %0 = load i32** @dptr, align 8
3862 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
3863 %2 = getelementptr i32* %0, i64 65536
3864 store i32 %1, i32* %2, align 4
3866 ; LINUX-64-STATIC: moo05:
3867 ; LINUX-64-STATIC: movl dsrc+262144(%rip), %eax
3868 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
3869 ; LINUX-64-STATIC: movl %eax, 262144(%rcx)
3870 ; LINUX-64-STATIC: ret
3872 ; LINUX-32-STATIC: moo05:
3873 ; LINUX-32-STATIC: movl dsrc+262144, %eax
3874 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
3875 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
3876 ; LINUX-32-STATIC-NEXT: ret
3878 ; LINUX-32-PIC: moo05:
3879 ; LINUX-32-PIC: movl dsrc+262144, %eax
3880 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
3881 ; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
3882 ; LINUX-32-PIC-NEXT: ret
3884 ; LINUX-64-PIC: moo05:
3885 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3886 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
3887 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3888 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3889 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
3890 ; LINUX-64-PIC-NEXT: ret
3892 ; DARWIN-32-STATIC: _moo05:
3893 ; DARWIN-32-STATIC: movl _dsrc+262144, %eax
3894 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
3895 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
3896 ; DARWIN-32-STATIC-NEXT: ret
3898 ; DARWIN-32-DYNAMIC: _moo05:
3899 ; DARWIN-32-DYNAMIC: movl _dsrc+262144, %eax
3900 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
3901 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
3902 ; DARWIN-32-DYNAMIC-NEXT: ret
3904 ; DARWIN-32-PIC: _moo05:
3905 ; DARWIN-32-PIC: call "L54$pb"
3906 ; DARWIN-32-PIC-NEXT: "L54$pb":
3907 ; DARWIN-32-PIC-NEXT: popl %eax
3908 ; DARWIN-32-PIC-NEXT: movl _dsrc+262144-"L54$pb"(%eax), %ecx
3909 ; DARWIN-32-PIC-NEXT: movl _dptr-"L54$pb"(%eax), %eax
3910 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
3911 ; DARWIN-32-PIC-NEXT: ret
3913 ; DARWIN-64-STATIC: _moo05:
3914 ; DARWIN-64-STATIC: movl _dsrc+262144(%rip), %eax
3915 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
3916 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
3917 ; DARWIN-64-STATIC-NEXT: ret
3919 ; DARWIN-64-DYNAMIC: _moo05:
3920 ; DARWIN-64-DYNAMIC: movl _dsrc+262144(%rip), %eax
3921 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
3922 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
3923 ; DARWIN-64-DYNAMIC-NEXT: ret
3925 ; DARWIN-64-PIC: _moo05:
3926 ; DARWIN-64-PIC: movl _dsrc+262144(%rip), %eax
3927 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
3928 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
3929 ; DARWIN-64-PIC-NEXT: ret
3932 define void @moo06(i64 %i) nounwind {
3934 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
3935 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
3937 ; LINUX-64-STATIC: moo06:
3938 ; LINUX-64-STATIC: movl lsrc+262144(%rip), %eax
3939 ; LINUX-64-STATIC: movl %eax, ldst+262144(%rip)
3940 ; LINUX-64-STATIC: ret
3942 ; LINUX-32-STATIC: moo06:
3943 ; LINUX-32-STATIC: movl lsrc+262144, %eax
3944 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144
3945 ; LINUX-32-STATIC-NEXT: ret
3947 ; LINUX-32-PIC: moo06:
3948 ; LINUX-32-PIC: movl lsrc+262144, %eax
3949 ; LINUX-32-PIC-NEXT: movl %eax, ldst+262144
3950 ; LINUX-32-PIC-NEXT: ret
3952 ; LINUX-64-PIC: moo06:
3953 ; LINUX-64-PIC: movl lsrc+262144(%rip), %eax
3954 ; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip)
3955 ; LINUX-64-PIC-NEXT: ret
3957 ; DARWIN-32-STATIC: _moo06:
3958 ; DARWIN-32-STATIC: movl _lsrc+262144, %eax
3959 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144
3960 ; DARWIN-32-STATIC-NEXT: ret
3962 ; DARWIN-32-DYNAMIC: _moo06:
3963 ; DARWIN-32-DYNAMIC: movl _lsrc+262144, %eax
3964 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144
3965 ; DARWIN-32-DYNAMIC-NEXT: ret
3967 ; DARWIN-32-PIC: _moo06:
3968 ; DARWIN-32-PIC: call "L55$pb"
3969 ; DARWIN-32-PIC-NEXT: "L55$pb":
3970 ; DARWIN-32-PIC-NEXT: popl %eax
3971 ; DARWIN-32-PIC-NEXT: movl _lsrc+262144-"L55$pb"(%eax), %ecx
3972 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst+262144-"L55$pb"(%eax)
3973 ; DARWIN-32-PIC-NEXT: ret
3975 ; DARWIN-64-STATIC: _moo06:
3976 ; DARWIN-64-STATIC: movl _lsrc+262144(%rip), %eax
3977 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip)
3978 ; DARWIN-64-STATIC-NEXT: ret
3980 ; DARWIN-64-DYNAMIC: _moo06:
3981 ; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), %eax
3982 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip)
3983 ; DARWIN-64-DYNAMIC-NEXT: ret
3985 ; DARWIN-64-PIC: _moo06:
3986 ; DARWIN-64-PIC: movl _lsrc+262144(%rip), %eax
3987 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip)
3988 ; DARWIN-64-PIC-NEXT: ret
3991 define void @moo07(i64 %i) nounwind {
3993 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
3995 ; LINUX-64-STATIC: moo07:
3996 ; LINUX-64-STATIC: movq $ldst+262144, lptr
3997 ; LINUX-64-STATIC: ret
3999 ; LINUX-32-STATIC: moo07:
4000 ; LINUX-32-STATIC: movl $ldst+262144, lptr
4001 ; LINUX-32-STATIC-NEXT: ret
4003 ; LINUX-32-PIC: moo07:
4004 ; LINUX-32-PIC: movl $ldst+262144, lptr
4005 ; LINUX-32-PIC-NEXT: ret
4007 ; LINUX-64-PIC: moo07:
4008 ; LINUX-64-PIC: leaq ldst+262144(%rip), %rax
4009 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
4010 ; LINUX-64-PIC-NEXT: ret
4012 ; DARWIN-32-STATIC: _moo07:
4013 ; DARWIN-32-STATIC: movl $_ldst+262144, _lptr
4014 ; DARWIN-32-STATIC-NEXT: ret
4016 ; DARWIN-32-DYNAMIC: _moo07:
4017 ; DARWIN-32-DYNAMIC: movl $_ldst+262144, _lptr
4018 ; DARWIN-32-DYNAMIC-NEXT: ret
4020 ; DARWIN-32-PIC: _moo07:
4021 ; DARWIN-32-PIC: call "L56$pb"
4022 ; DARWIN-32-PIC-NEXT: "L56$pb":
4023 ; DARWIN-32-PIC-NEXT: popl %eax
4024 ; DARWIN-32-PIC-NEXT: leal _ldst+262144-"L56$pb"(%eax), %ecx
4025 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L56$pb"(%eax)
4026 ; DARWIN-32-PIC-NEXT: ret
4028 ; DARWIN-64-STATIC: _moo07:
4029 ; DARWIN-64-STATIC: leaq _ldst+262144(%rip), %rax
4030 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
4031 ; DARWIN-64-STATIC-NEXT: ret
4033 ; DARWIN-64-DYNAMIC: _moo07:
4034 ; DARWIN-64-DYNAMIC: leaq _ldst+262144(%rip), %rax
4035 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
4036 ; DARWIN-64-DYNAMIC-NEXT: ret
4038 ; DARWIN-64-PIC: _moo07:
4039 ; DARWIN-64-PIC: leaq _ldst+262144(%rip), %rax
4040 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
4041 ; DARWIN-64-PIC-NEXT: ret
4044 define void @moo08(i64 %i) nounwind {
4046 %0 = load i32** @lptr, align 8
4047 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
4048 %2 = getelementptr i32* %0, i64 65536
4049 store i32 %1, i32* %2, align 4
4051 ; LINUX-64-STATIC: moo08:
4052 ; LINUX-64-STATIC: movl lsrc+262144(%rip), %eax
4053 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
4054 ; LINUX-64-STATIC: movl %eax, 262144(%rcx)
4055 ; LINUX-64-STATIC: ret
4057 ; LINUX-32-STATIC: moo08:
4058 ; LINUX-32-STATIC: movl lsrc+262144, %eax
4059 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
4060 ; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4061 ; LINUX-32-STATIC-NEXT: ret
4063 ; LINUX-32-PIC: moo08:
4064 ; LINUX-32-PIC: movl lsrc+262144, %eax
4065 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
4066 ; LINUX-32-PIC-NEXT: movl %eax, 262144(%ecx)
4067 ; LINUX-32-PIC-NEXT: ret
4069 ; LINUX-64-PIC: moo08:
4070 ; LINUX-64-PIC: movl lsrc+262144(%rip), %eax
4071 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
4072 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
4073 ; LINUX-64-PIC-NEXT: ret
4075 ; DARWIN-32-STATIC: _moo08:
4076 ; DARWIN-32-STATIC: movl _lsrc+262144, %eax
4077 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
4078 ; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx)
4079 ; DARWIN-32-STATIC-NEXT: ret
4081 ; DARWIN-32-DYNAMIC: _moo08:
4082 ; DARWIN-32-DYNAMIC: movl _lsrc+262144, %eax
4083 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
4084 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
4085 ; DARWIN-32-DYNAMIC-NEXT: ret
4087 ; DARWIN-32-PIC: _moo08:
4088 ; DARWIN-32-PIC: call "L57$pb"
4089 ; DARWIN-32-PIC-NEXT: "L57$pb":
4090 ; DARWIN-32-PIC-NEXT: popl %eax
4091 ; DARWIN-32-PIC-NEXT: movl _lsrc+262144-"L57$pb"(%eax), %ecx
4092 ; DARWIN-32-PIC-NEXT: movl _lptr-"L57$pb"(%eax), %eax
4093 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
4094 ; DARWIN-32-PIC-NEXT: ret
4096 ; DARWIN-64-STATIC: _moo08:
4097 ; DARWIN-64-STATIC: movl _lsrc+262144(%rip), %eax
4098 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
4099 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
4100 ; DARWIN-64-STATIC-NEXT: ret
4102 ; DARWIN-64-DYNAMIC: _moo08:
4103 ; DARWIN-64-DYNAMIC: movl _lsrc+262144(%rip), %eax
4104 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
4105 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
4106 ; DARWIN-64-DYNAMIC-NEXT: ret
4108 ; DARWIN-64-PIC: _moo08:
4109 ; DARWIN-64-PIC: movl _lsrc+262144(%rip), %eax
4110 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
4111 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
4112 ; DARWIN-64-PIC-NEXT: ret
4115 define void @big00(i64 %i) nounwind {
4117 %0 = add i64 %i, 65536
4118 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
4119 %2 = load i32* %1, align 4
4120 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
4121 store i32 %2, i32* %3, align 4
4123 ; LINUX-64-STATIC: big00:
4124 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), %eax
4125 ; LINUX-64-STATIC: movl %eax, dst+262144(,%rdi,4)
4126 ; LINUX-64-STATIC: ret
4128 ; LINUX-32-STATIC: big00:
4129 ; LINUX-32-STATIC: movl 4(%esp), %eax
4130 ; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
4131 ; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4)
4132 ; LINUX-32-STATIC-NEXT: ret
4134 ; LINUX-32-PIC: big00:
4135 ; LINUX-32-PIC: movl 4(%esp), %eax
4136 ; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx
4137 ; LINUX-32-PIC-NEXT: movl %ecx, dst+262144(,%eax,4)
4138 ; LINUX-32-PIC-NEXT: ret
4140 ; LINUX-64-PIC: big00:
4141 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
4142 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4143 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
4144 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4145 ; LINUX-64-PIC-NEXT: ret
4147 ; DARWIN-32-STATIC: _big00:
4148 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4149 ; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
4150 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4)
4151 ; DARWIN-32-STATIC-NEXT: ret
4153 ; DARWIN-32-DYNAMIC: _big00:
4154 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4155 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
4156 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
4157 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
4158 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4159 ; DARWIN-32-DYNAMIC-NEXT: ret
4161 ; DARWIN-32-PIC: _big00:
4162 ; DARWIN-32-PIC: call "L58$pb"
4163 ; DARWIN-32-PIC-NEXT: "L58$pb":
4164 ; DARWIN-32-PIC-NEXT: popl %eax
4165 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4166 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L58$pb"(%eax), %edx
4167 ; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
4168 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L58$pb"(%eax), %eax
4169 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
4170 ; DARWIN-32-PIC-NEXT: ret
4172 ; DARWIN-64-STATIC: _big00:
4173 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
4174 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4175 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4176 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4177 ; DARWIN-64-STATIC-NEXT: ret
4179 ; DARWIN-64-DYNAMIC: _big00:
4180 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
4181 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4182 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4183 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4184 ; DARWIN-64-DYNAMIC-NEXT: ret
4186 ; DARWIN-64-PIC: _big00:
4187 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
4188 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4189 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
4190 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4191 ; DARWIN-64-PIC-NEXT: ret
4194 define void @big01(i64 %i) nounwind {
4196 %.sum = add i64 %i, 65536
4197 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
4198 store i32* %0, i32** @ptr, align 8
4200 ; LINUX-64-STATIC: big01:
4201 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), %rax
4202 ; LINUX-64-STATIC: movq %rax, ptr(%rip)
4203 ; LINUX-64-STATIC: ret
4205 ; LINUX-32-STATIC: big01:
4206 ; LINUX-32-STATIC: movl 4(%esp), %eax
4207 ; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
4208 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
4209 ; LINUX-32-STATIC-NEXT: ret
4211 ; LINUX-32-PIC: big01:
4212 ; LINUX-32-PIC: movl 4(%esp), %eax
4213 ; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax
4214 ; LINUX-32-PIC-NEXT: movl %eax, ptr
4215 ; LINUX-32-PIC-NEXT: ret
4217 ; LINUX-64-PIC: big01:
4218 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
4219 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4220 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
4221 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
4222 ; LINUX-64-PIC-NEXT: ret
4224 ; DARWIN-32-STATIC: _big01:
4225 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4226 ; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
4227 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
4228 ; DARWIN-32-STATIC-NEXT: ret
4230 ; DARWIN-32-DYNAMIC: _big01:
4231 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4232 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
4233 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
4234 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
4235 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
4236 ; DARWIN-32-DYNAMIC-NEXT: ret
4238 ; DARWIN-32-PIC: _big01:
4239 ; DARWIN-32-PIC: call "L59$pb"
4240 ; DARWIN-32-PIC-NEXT: "L59$pb":
4241 ; DARWIN-32-PIC-NEXT: popl %eax
4242 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4243 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L59$pb"(%eax), %edx
4244 ; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx
4245 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L59$pb"(%eax), %eax
4246 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
4247 ; DARWIN-32-PIC-NEXT: ret
4249 ; DARWIN-64-STATIC: _big01:
4250 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
4251 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4252 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4253 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
4254 ; DARWIN-64-STATIC-NEXT: ret
4256 ; DARWIN-64-DYNAMIC: _big01:
4257 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
4258 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4259 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4260 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
4261 ; DARWIN-64-DYNAMIC-NEXT: ret
4263 ; DARWIN-64-PIC: _big01:
4264 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
4265 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4266 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4267 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
4268 ; DARWIN-64-PIC-NEXT: ret
4271 define void @big02(i64 %i) nounwind {
4273 %0 = load i32** @ptr, align 8
4274 %1 = add i64 %i, 65536
4275 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
4276 %3 = load i32* %2, align 4
4277 %4 = getelementptr i32* %0, i64 %1
4278 store i32 %3, i32* %4, align 4
4280 ; LINUX-64-STATIC: big02:
4281 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), %eax
4282 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
4283 ; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
4284 ; LINUX-64-STATIC: ret
4286 ; LINUX-32-STATIC: big02:
4287 ; LINUX-32-STATIC: movl 4(%esp), %eax
4288 ; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx
4289 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
4290 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4291 ; LINUX-32-STATIC-NEXT: ret
4293 ; LINUX-32-PIC: big02:
4294 ; LINUX-32-PIC: movl 4(%esp), %eax
4295 ; LINUX-32-PIC-NEXT: movl src+262144(,%eax,4), %ecx
4296 ; LINUX-32-PIC-NEXT: movl ptr, %edx
4297 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4298 ; LINUX-32-PIC-NEXT: ret
4300 ; LINUX-64-PIC: big02:
4301 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
4302 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4303 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
4304 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
4305 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4306 ; LINUX-64-PIC-NEXT: ret
4308 ; DARWIN-32-STATIC: _big02:
4309 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4310 ; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx
4311 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
4312 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4313 ; DARWIN-32-STATIC-NEXT: ret
4315 ; DARWIN-32-DYNAMIC: _big02:
4316 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4317 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
4318 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx
4319 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
4320 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
4321 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4322 ; DARWIN-32-DYNAMIC-NEXT: ret
4324 ; DARWIN-32-PIC: _big02:
4325 ; DARWIN-32-PIC: call "L60$pb"
4326 ; DARWIN-32-PIC-NEXT: "L60$pb":
4327 ; DARWIN-32-PIC-NEXT: popl %eax
4328 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4329 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L60$pb"(%eax), %edx
4330 ; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx
4331 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L60$pb"(%eax), %eax
4332 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
4333 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
4334 ; DARWIN-32-PIC-NEXT: ret
4336 ; DARWIN-64-STATIC: _big02:
4337 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
4338 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4339 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4340 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
4341 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4342 ; DARWIN-64-STATIC-NEXT: ret
4344 ; DARWIN-64-DYNAMIC: _big02:
4345 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
4346 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4347 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4348 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
4349 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4350 ; DARWIN-64-DYNAMIC-NEXT: ret
4352 ; DARWIN-64-PIC: _big02:
4353 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
4354 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4355 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
4356 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
4357 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4358 ; DARWIN-64-PIC-NEXT: ret
4361 define void @big03(i64 %i) nounwind {
4363 %0 = add i64 %i, 65536
4364 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
4365 %2 = load i32* %1, align 4
4366 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
4367 store i32 %2, i32* %3, align 4
4369 ; LINUX-64-STATIC: big03:
4370 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), %eax
4371 ; LINUX-64-STATIC: movl %eax, ddst+262144(,%rdi,4)
4372 ; LINUX-64-STATIC: ret
4374 ; LINUX-32-STATIC: big03:
4375 ; LINUX-32-STATIC: movl 4(%esp), %eax
4376 ; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
4377 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4)
4378 ; LINUX-32-STATIC-NEXT: ret
4380 ; LINUX-32-PIC: big03:
4381 ; LINUX-32-PIC: movl 4(%esp), %eax
4382 ; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
4383 ; LINUX-32-PIC-NEXT: movl %ecx, ddst+262144(,%eax,4)
4384 ; LINUX-32-PIC-NEXT: ret
4386 ; LINUX-64-PIC: big03:
4387 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
4388 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4389 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
4390 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4391 ; LINUX-64-PIC-NEXT: ret
4393 ; DARWIN-32-STATIC: _big03:
4394 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4395 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
4396 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
4397 ; DARWIN-32-STATIC-NEXT: ret
4399 ; DARWIN-32-DYNAMIC: _big03:
4400 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4401 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
4402 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4)
4403 ; DARWIN-32-DYNAMIC-NEXT: ret
4405 ; DARWIN-32-PIC: _big03:
4406 ; DARWIN-32-PIC: call "L61$pb"
4407 ; DARWIN-32-PIC-NEXT: "L61$pb":
4408 ; DARWIN-32-PIC-NEXT: popl %eax
4409 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4410 ; DARWIN-32-PIC-NEXT: movl _dsrc+262144-"L61$pb"(%eax,%ecx,4), %edx
4411 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst+262144-"L61$pb"(%eax,%ecx,4)
4412 ; DARWIN-32-PIC-NEXT: ret
4414 ; DARWIN-64-STATIC: _big03:
4415 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
4416 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4417 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
4418 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4419 ; DARWIN-64-STATIC-NEXT: ret
4421 ; DARWIN-64-DYNAMIC: _big03:
4422 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
4423 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4424 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
4425 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4426 ; DARWIN-64-DYNAMIC-NEXT: ret
4428 ; DARWIN-64-PIC: _big03:
4429 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
4430 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4431 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
4432 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4433 ; DARWIN-64-PIC-NEXT: ret
4436 define void @big04(i64 %i) nounwind {
4438 %.sum = add i64 %i, 65536
4439 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
4440 store i32* %0, i32** @dptr, align 8
4442 ; LINUX-64-STATIC: big04:
4443 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), %rax
4444 ; LINUX-64-STATIC: movq %rax, dptr
4445 ; LINUX-64-STATIC: ret
4447 ; LINUX-32-STATIC: big04:
4448 ; LINUX-32-STATIC: movl 4(%esp), %eax
4449 ; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
4450 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
4451 ; LINUX-32-STATIC-NEXT: ret
4453 ; LINUX-32-PIC: big04:
4454 ; LINUX-32-PIC: movl 4(%esp), %eax
4455 ; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax
4456 ; LINUX-32-PIC-NEXT: movl %eax, dptr
4457 ; LINUX-32-PIC-NEXT: ret
4459 ; LINUX-64-PIC: big04:
4460 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
4461 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4462 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
4463 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
4464 ; LINUX-64-PIC-NEXT: ret
4466 ; DARWIN-32-STATIC: _big04:
4467 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4468 ; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
4469 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
4470 ; DARWIN-32-STATIC-NEXT: ret
4472 ; DARWIN-32-DYNAMIC: _big04:
4473 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4474 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
4475 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
4476 ; DARWIN-32-DYNAMIC-NEXT: ret
4478 ; DARWIN-32-PIC: _big04:
4479 ; DARWIN-32-PIC: call "L62$pb"
4480 ; DARWIN-32-PIC-NEXT: "L62$pb":
4481 ; DARWIN-32-PIC-NEXT: popl %eax
4482 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4483 ; DARWIN-32-PIC-NEXT: leal _ddst+262144-"L62$pb"(%eax,%ecx,4), %ecx
4484 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L62$pb"(%eax)
4485 ; DARWIN-32-PIC-NEXT: ret
4487 ; DARWIN-64-STATIC: _big04:
4488 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
4489 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4490 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
4491 ; DARWIN-64-STATIC-NEXT: ret
4493 ; DARWIN-64-DYNAMIC: _big04:
4494 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
4495 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4496 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
4497 ; DARWIN-64-DYNAMIC-NEXT: ret
4499 ; DARWIN-64-PIC: _big04:
4500 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
4501 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4502 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
4503 ; DARWIN-64-PIC-NEXT: ret
4506 define void @big05(i64 %i) nounwind {
4508 %0 = load i32** @dptr, align 8
4509 %1 = add i64 %i, 65536
4510 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
4511 %3 = load i32* %2, align 4
4512 %4 = getelementptr i32* %0, i64 %1
4513 store i32 %3, i32* %4, align 4
4515 ; LINUX-64-STATIC: big05:
4516 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), %eax
4517 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
4518 ; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
4519 ; LINUX-64-STATIC: ret
4521 ; LINUX-32-STATIC: big05:
4522 ; LINUX-32-STATIC: movl 4(%esp), %eax
4523 ; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
4524 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
4525 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4526 ; LINUX-32-STATIC-NEXT: ret
4528 ; LINUX-32-PIC: big05:
4529 ; LINUX-32-PIC: movl 4(%esp), %eax
4530 ; LINUX-32-PIC-NEXT: movl dsrc+262144(,%eax,4), %ecx
4531 ; LINUX-32-PIC-NEXT: movl dptr, %edx
4532 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4533 ; LINUX-32-PIC-NEXT: ret
4535 ; LINUX-64-PIC: big05:
4536 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
4537 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4538 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
4539 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
4540 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4541 ; LINUX-64-PIC-NEXT: ret
4543 ; DARWIN-32-STATIC: _big05:
4544 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4545 ; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
4546 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
4547 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4548 ; DARWIN-32-STATIC-NEXT: ret
4550 ; DARWIN-32-DYNAMIC: _big05:
4551 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4552 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx
4553 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
4554 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4555 ; DARWIN-32-DYNAMIC-NEXT: ret
4557 ; DARWIN-32-PIC: _big05:
4558 ; DARWIN-32-PIC: call "L63$pb"
4559 ; DARWIN-32-PIC-NEXT: "L63$pb":
4560 ; DARWIN-32-PIC-NEXT: popl %eax
4561 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4562 ; DARWIN-32-PIC-NEXT: movl _dsrc+262144-"L63$pb"(%eax,%ecx,4), %edx
4563 ; DARWIN-32-PIC-NEXT: movl _dptr-"L63$pb"(%eax), %eax
4564 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
4565 ; DARWIN-32-PIC-NEXT: ret
4567 ; DARWIN-64-STATIC: _big05:
4568 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
4569 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4570 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
4571 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4572 ; DARWIN-64-STATIC-NEXT: ret
4574 ; DARWIN-64-DYNAMIC: _big05:
4575 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
4576 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4577 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
4578 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4579 ; DARWIN-64-DYNAMIC-NEXT: ret
4581 ; DARWIN-64-PIC: _big05:
4582 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
4583 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4584 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
4585 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4586 ; DARWIN-64-PIC-NEXT: ret
4589 define void @big06(i64 %i) nounwind {
4591 %0 = add i64 %i, 65536
4592 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
4593 %2 = load i32* %1, align 4
4594 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
4595 store i32 %2, i32* %3, align 4
4597 ; LINUX-64-STATIC: big06:
4598 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), %eax
4599 ; LINUX-64-STATIC: movl %eax, ldst+262144(,%rdi,4)
4600 ; LINUX-64-STATIC: ret
4602 ; LINUX-32-STATIC: big06:
4603 ; LINUX-32-STATIC: movl 4(%esp), %eax
4604 ; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
4605 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4)
4606 ; LINUX-32-STATIC-NEXT: ret
4608 ; LINUX-32-PIC: big06:
4609 ; LINUX-32-PIC: movl 4(%esp), %eax
4610 ; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
4611 ; LINUX-32-PIC-NEXT: movl %ecx, ldst+262144(,%eax,4)
4612 ; LINUX-32-PIC-NEXT: ret
4614 ; LINUX-64-PIC: big06:
4615 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
4616 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4617 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
4618 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4619 ; LINUX-64-PIC-NEXT: ret
4621 ; DARWIN-32-STATIC: _big06:
4622 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4623 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
4624 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
4625 ; DARWIN-32-STATIC-NEXT: ret
4627 ; DARWIN-32-DYNAMIC: _big06:
4628 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4629 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
4630 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4)
4631 ; DARWIN-32-DYNAMIC-NEXT: ret
4633 ; DARWIN-32-PIC: _big06:
4634 ; DARWIN-32-PIC: call "L64$pb"
4635 ; DARWIN-32-PIC-NEXT: "L64$pb":
4636 ; DARWIN-32-PIC-NEXT: popl %eax
4637 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4638 ; DARWIN-32-PIC-NEXT: movl _lsrc+262144-"L64$pb"(%eax,%ecx,4), %edx
4639 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst+262144-"L64$pb"(%eax,%ecx,4)
4640 ; DARWIN-32-PIC-NEXT: ret
4642 ; DARWIN-64-STATIC: _big06:
4643 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
4644 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4645 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
4646 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4647 ; DARWIN-64-STATIC-NEXT: ret
4649 ; DARWIN-64-DYNAMIC: _big06:
4650 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
4651 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4652 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
4653 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4654 ; DARWIN-64-DYNAMIC-NEXT: ret
4656 ; DARWIN-64-PIC: _big06:
4657 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
4658 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4659 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
4660 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4661 ; DARWIN-64-PIC-NEXT: ret
4664 define void @big07(i64 %i) nounwind {
4666 %.sum = add i64 %i, 65536
4667 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
4668 store i32* %0, i32** @lptr, align 8
4670 ; LINUX-64-STATIC: big07:
4671 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), %rax
4672 ; LINUX-64-STATIC: movq %rax, lptr
4673 ; LINUX-64-STATIC: ret
4675 ; LINUX-32-STATIC: big07:
4676 ; LINUX-32-STATIC: movl 4(%esp), %eax
4677 ; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
4678 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
4679 ; LINUX-32-STATIC-NEXT: ret
4681 ; LINUX-32-PIC: big07:
4682 ; LINUX-32-PIC: movl 4(%esp), %eax
4683 ; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax
4684 ; LINUX-32-PIC-NEXT: movl %eax, lptr
4685 ; LINUX-32-PIC-NEXT: ret
4687 ; LINUX-64-PIC: big07:
4688 ; LINUX-64-PIC: leaq ldst(%rip), %rax
4689 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4690 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
4691 ; LINUX-64-PIC-NEXT: ret
4693 ; DARWIN-32-STATIC: _big07:
4694 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4695 ; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
4696 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
4697 ; DARWIN-32-STATIC-NEXT: ret
4699 ; DARWIN-32-DYNAMIC: _big07:
4700 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4701 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
4702 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
4703 ; DARWIN-32-DYNAMIC-NEXT: ret
4705 ; DARWIN-32-PIC: _big07:
4706 ; DARWIN-32-PIC: call "L65$pb"
4707 ; DARWIN-32-PIC-NEXT: "L65$pb":
4708 ; DARWIN-32-PIC-NEXT: popl %eax
4709 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4710 ; DARWIN-32-PIC-NEXT: leal _ldst+262144-"L65$pb"(%eax,%ecx,4), %ecx
4711 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L65$pb"(%eax)
4712 ; DARWIN-32-PIC-NEXT: ret
4714 ; DARWIN-64-STATIC: _big07:
4715 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
4716 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4717 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
4718 ; DARWIN-64-STATIC-NEXT: ret
4720 ; DARWIN-64-DYNAMIC: _big07:
4721 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
4722 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4723 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
4724 ; DARWIN-64-DYNAMIC-NEXT: ret
4726 ; DARWIN-64-PIC: _big07:
4727 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
4728 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
4729 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
4730 ; DARWIN-64-PIC-NEXT: ret
4733 define void @big08(i64 %i) nounwind {
4735 %0 = load i32** @lptr, align 8
4736 %1 = add i64 %i, 65536
4737 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
4738 %3 = load i32* %2, align 4
4739 %4 = getelementptr i32* %0, i64 %1
4740 store i32 %3, i32* %4, align 4
4742 ; LINUX-64-STATIC: big08:
4743 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), %eax
4744 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
4745 ; LINUX-64-STATIC: movl %eax, 262144(%rcx,%rdi,4)
4746 ; LINUX-64-STATIC: ret
4748 ; LINUX-32-STATIC: big08:
4749 ; LINUX-32-STATIC: movl 4(%esp), %eax
4750 ; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
4751 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
4752 ; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4753 ; LINUX-32-STATIC-NEXT: ret
4755 ; LINUX-32-PIC: big08:
4756 ; LINUX-32-PIC: movl 4(%esp), %eax
4757 ; LINUX-32-PIC-NEXT: movl lsrc+262144(,%eax,4), %ecx
4758 ; LINUX-32-PIC-NEXT: movl lptr, %edx
4759 ; LINUX-32-PIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4760 ; LINUX-32-PIC-NEXT: ret
4762 ; LINUX-64-PIC: big08:
4763 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
4764 ; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4765 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
4766 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4767 ; LINUX-64-PIC-NEXT: ret
4769 ; DARWIN-32-STATIC: _big08:
4770 ; DARWIN-32-STATIC: movl 4(%esp), %eax
4771 ; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
4772 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
4773 ; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4774 ; DARWIN-32-STATIC-NEXT: ret
4776 ; DARWIN-32-DYNAMIC: _big08:
4777 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
4778 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx
4779 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
4780 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4)
4781 ; DARWIN-32-DYNAMIC-NEXT: ret
4783 ; DARWIN-32-PIC: _big08:
4784 ; DARWIN-32-PIC: call "L66$pb"
4785 ; DARWIN-32-PIC-NEXT: "L66$pb":
4786 ; DARWIN-32-PIC-NEXT: popl %eax
4787 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
4788 ; DARWIN-32-PIC-NEXT: movl _lsrc+262144-"L66$pb"(%eax,%ecx,4), %edx
4789 ; DARWIN-32-PIC-NEXT: movl _lptr-"L66$pb"(%eax), %eax
4790 ; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4)
4791 ; DARWIN-32-PIC-NEXT: ret
4793 ; DARWIN-64-STATIC: _big08:
4794 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
4795 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4796 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
4797 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4798 ; DARWIN-64-STATIC-NEXT: ret
4800 ; DARWIN-64-DYNAMIC: _big08:
4801 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
4802 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4803 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
4804 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4805 ; DARWIN-64-DYNAMIC-NEXT: ret
4807 ; DARWIN-64-PIC: _big08:
4808 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
4809 ; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax
4810 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
4811 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4)
4812 ; DARWIN-64-PIC-NEXT: ret
4815 define i8* @bar00() nounwind {
4817 ret i8* bitcast ([131072 x i32]* @src to i8*)
4818 ; LINUX-64-STATIC: bar00:
4819 ; LINUX-64-STATIC: movl $src, %eax
4820 ; LINUX-64-STATIC: ret
4822 ; LINUX-32-STATIC: bar00:
4823 ; LINUX-32-STATIC: movl $src, %eax
4824 ; LINUX-32-STATIC-NEXT: ret
4826 ; LINUX-32-PIC: bar00:
4827 ; LINUX-32-PIC: movl $src, %eax
4828 ; LINUX-32-PIC-NEXT: ret
4830 ; LINUX-64-PIC: bar00:
4831 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
4832 ; LINUX-64-PIC-NEXT: ret
4834 ; DARWIN-32-STATIC: _bar00:
4835 ; DARWIN-32-STATIC: movl $_src, %eax
4836 ; DARWIN-32-STATIC-NEXT: ret
4838 ; DARWIN-32-DYNAMIC: _bar00:
4839 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
4840 ; DARWIN-32-DYNAMIC-NEXT: ret
4842 ; DARWIN-32-PIC: _bar00:
4843 ; DARWIN-32-PIC: call "L67$pb"
4844 ; DARWIN-32-PIC-NEXT: "L67$pb":
4845 ; DARWIN-32-PIC-NEXT: popl %eax
4846 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L67$pb"(%eax), %eax
4847 ; DARWIN-32-PIC-NEXT: ret
4849 ; DARWIN-64-STATIC: _bar00:
4850 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
4851 ; DARWIN-64-STATIC-NEXT: ret
4853 ; DARWIN-64-DYNAMIC: _bar00:
4854 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
4855 ; DARWIN-64-DYNAMIC-NEXT: ret
4857 ; DARWIN-64-PIC: _bar00:
4858 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
4859 ; DARWIN-64-PIC-NEXT: ret
4862 define i8* @bxr00() nounwind {
4864 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
4865 ; LINUX-64-STATIC: bxr00:
4866 ; LINUX-64-STATIC: movl $xsrc, %eax
4867 ; LINUX-64-STATIC: ret
4869 ; LINUX-32-STATIC: bxr00:
4870 ; LINUX-32-STATIC: movl $xsrc, %eax
4871 ; LINUX-32-STATIC-NEXT: ret
4873 ; LINUX-32-PIC: bxr00:
4874 ; LINUX-32-PIC: movl $xsrc, %eax
4875 ; LINUX-32-PIC-NEXT: ret
4877 ; LINUX-64-PIC: bxr00:
4878 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
4879 ; LINUX-64-PIC-NEXT: ret
4881 ; DARWIN-32-STATIC: _bxr00:
4882 ; DARWIN-32-STATIC: movl $_xsrc, %eax
4883 ; DARWIN-32-STATIC-NEXT: ret
4885 ; DARWIN-32-DYNAMIC: _bxr00:
4886 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
4887 ; DARWIN-32-DYNAMIC-NEXT: ret
4889 ; DARWIN-32-PIC: _bxr00:
4890 ; DARWIN-32-PIC: call "L68$pb"
4891 ; DARWIN-32-PIC-NEXT: "L68$pb":
4892 ; DARWIN-32-PIC-NEXT: popl %eax
4893 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L68$pb"(%eax), %eax
4894 ; DARWIN-32-PIC-NEXT: ret
4896 ; DARWIN-64-STATIC: _bxr00:
4897 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
4898 ; DARWIN-64-STATIC-NEXT: ret
4900 ; DARWIN-64-DYNAMIC: _bxr00:
4901 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
4902 ; DARWIN-64-DYNAMIC-NEXT: ret
4904 ; DARWIN-64-PIC: _bxr00:
4905 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
4906 ; DARWIN-64-PIC-NEXT: ret
4909 define i8* @bar01() nounwind {
4911 ret i8* bitcast ([131072 x i32]* @dst to i8*)
4912 ; LINUX-64-STATIC: bar01:
4913 ; LINUX-64-STATIC: movl $dst, %eax
4914 ; LINUX-64-STATIC: ret
4916 ; LINUX-32-STATIC: bar01:
4917 ; LINUX-32-STATIC: movl $dst, %eax
4918 ; LINUX-32-STATIC-NEXT: ret
4920 ; LINUX-32-PIC: bar01:
4921 ; LINUX-32-PIC: movl $dst, %eax
4922 ; LINUX-32-PIC-NEXT: ret
4924 ; LINUX-64-PIC: bar01:
4925 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
4926 ; LINUX-64-PIC-NEXT: ret
4928 ; DARWIN-32-STATIC: _bar01:
4929 ; DARWIN-32-STATIC: movl $_dst, %eax
4930 ; DARWIN-32-STATIC-NEXT: ret
4932 ; DARWIN-32-DYNAMIC: _bar01:
4933 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
4934 ; DARWIN-32-DYNAMIC-NEXT: ret
4936 ; DARWIN-32-PIC: _bar01:
4937 ; DARWIN-32-PIC: call "L69$pb"
4938 ; DARWIN-32-PIC-NEXT: "L69$pb":
4939 ; DARWIN-32-PIC-NEXT: popl %eax
4940 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L69$pb"(%eax), %eax
4941 ; DARWIN-32-PIC-NEXT: ret
4943 ; DARWIN-64-STATIC: _bar01:
4944 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
4945 ; DARWIN-64-STATIC-NEXT: ret
4947 ; DARWIN-64-DYNAMIC: _bar01:
4948 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
4949 ; DARWIN-64-DYNAMIC-NEXT: ret
4951 ; DARWIN-64-PIC: _bar01:
4952 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
4953 ; DARWIN-64-PIC-NEXT: ret
4956 define i8* @bxr01() nounwind {
4958 ret i8* bitcast ([32 x i32]* @xdst to i8*)
4959 ; LINUX-64-STATIC: bxr01:
4960 ; LINUX-64-STATIC: movl $xdst, %eax
4961 ; LINUX-64-STATIC: ret
4963 ; LINUX-32-STATIC: bxr01:
4964 ; LINUX-32-STATIC: movl $xdst, %eax
4965 ; LINUX-32-STATIC-NEXT: ret
4967 ; LINUX-32-PIC: bxr01:
4968 ; LINUX-32-PIC: movl $xdst, %eax
4969 ; LINUX-32-PIC-NEXT: ret
4971 ; LINUX-64-PIC: bxr01:
4972 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
4973 ; LINUX-64-PIC-NEXT: ret
4975 ; DARWIN-32-STATIC: _bxr01:
4976 ; DARWIN-32-STATIC: movl $_xdst, %eax
4977 ; DARWIN-32-STATIC-NEXT: ret
4979 ; DARWIN-32-DYNAMIC: _bxr01:
4980 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
4981 ; DARWIN-32-DYNAMIC-NEXT: ret
4983 ; DARWIN-32-PIC: _bxr01:
4984 ; DARWIN-32-PIC: call "L70$pb"
4985 ; DARWIN-32-PIC-NEXT: "L70$pb":
4986 ; DARWIN-32-PIC-NEXT: popl %eax
4987 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L70$pb"(%eax), %eax
4988 ; DARWIN-32-PIC-NEXT: ret
4990 ; DARWIN-64-STATIC: _bxr01:
4991 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
4992 ; DARWIN-64-STATIC-NEXT: ret
4994 ; DARWIN-64-DYNAMIC: _bxr01:
4995 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
4996 ; DARWIN-64-DYNAMIC-NEXT: ret
4998 ; DARWIN-64-PIC: _bxr01:
4999 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
5000 ; DARWIN-64-PIC-NEXT: ret
5003 define i8* @bar02() nounwind {
5005 ret i8* bitcast (i32** @ptr to i8*)
5006 ; LINUX-64-STATIC: bar02:
5007 ; LINUX-64-STATIC: movl $ptr, %eax
5008 ; LINUX-64-STATIC: ret
5010 ; LINUX-32-STATIC: bar02:
5011 ; LINUX-32-STATIC: movl $ptr, %eax
5012 ; LINUX-32-STATIC-NEXT: ret
5014 ; LINUX-32-PIC: bar02:
5015 ; LINUX-32-PIC: movl $ptr, %eax
5016 ; LINUX-32-PIC-NEXT: ret
5018 ; LINUX-64-PIC: bar02:
5019 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
5020 ; LINUX-64-PIC-NEXT: ret
5022 ; DARWIN-32-STATIC: _bar02:
5023 ; DARWIN-32-STATIC: movl $_ptr, %eax
5024 ; DARWIN-32-STATIC-NEXT: ret
5026 ; DARWIN-32-DYNAMIC: _bar02:
5027 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
5028 ; DARWIN-32-DYNAMIC-NEXT: ret
5030 ; DARWIN-32-PIC: _bar02:
5031 ; DARWIN-32-PIC: call "L71$pb"
5032 ; DARWIN-32-PIC-NEXT: "L71$pb":
5033 ; DARWIN-32-PIC-NEXT: popl %eax
5034 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L71$pb"(%eax), %eax
5035 ; DARWIN-32-PIC-NEXT: ret
5037 ; DARWIN-64-STATIC: _bar02:
5038 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
5039 ; DARWIN-64-STATIC-NEXT: ret
5041 ; DARWIN-64-DYNAMIC: _bar02:
5042 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
5043 ; DARWIN-64-DYNAMIC-NEXT: ret
5045 ; DARWIN-64-PIC: _bar02:
5046 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
5047 ; DARWIN-64-PIC-NEXT: ret
5050 define i8* @bar03() nounwind {
5052 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
5053 ; LINUX-64-STATIC: bar03:
5054 ; LINUX-64-STATIC: movl $dsrc, %eax
5055 ; LINUX-64-STATIC: ret
5057 ; LINUX-32-STATIC: bar03:
5058 ; LINUX-32-STATIC: movl $dsrc, %eax
5059 ; LINUX-32-STATIC-NEXT: ret
5061 ; LINUX-32-PIC: bar03:
5062 ; LINUX-32-PIC: movl $dsrc, %eax
5063 ; LINUX-32-PIC-NEXT: ret
5065 ; LINUX-64-PIC: bar03:
5066 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
5067 ; LINUX-64-PIC-NEXT: ret
5069 ; DARWIN-32-STATIC: _bar03:
5070 ; DARWIN-32-STATIC: movl $_dsrc, %eax
5071 ; DARWIN-32-STATIC-NEXT: ret
5073 ; DARWIN-32-DYNAMIC: _bar03:
5074 ; DARWIN-32-DYNAMIC: movl $_dsrc, %eax
5075 ; DARWIN-32-DYNAMIC-NEXT: ret
5077 ; DARWIN-32-PIC: _bar03:
5078 ; DARWIN-32-PIC: call "L72$pb"
5079 ; DARWIN-32-PIC-NEXT: "L72$pb":
5080 ; DARWIN-32-PIC-NEXT: popl %eax
5081 ; DARWIN-32-PIC-NEXT: leal _dsrc-"L72$pb"(%eax), %eax
5082 ; DARWIN-32-PIC-NEXT: ret
5084 ; DARWIN-64-STATIC: _bar03:
5085 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
5086 ; DARWIN-64-STATIC-NEXT: ret
5088 ; DARWIN-64-DYNAMIC: _bar03:
5089 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
5090 ; DARWIN-64-DYNAMIC-NEXT: ret
5092 ; DARWIN-64-PIC: _bar03:
5093 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
5094 ; DARWIN-64-PIC-NEXT: ret
5097 define i8* @bar04() nounwind {
5099 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
5100 ; LINUX-64-STATIC: bar04:
5101 ; LINUX-64-STATIC: movl $ddst, %eax
5102 ; LINUX-64-STATIC: ret
5104 ; LINUX-32-STATIC: bar04:
5105 ; LINUX-32-STATIC: movl $ddst, %eax
5106 ; LINUX-32-STATIC-NEXT: ret
5108 ; LINUX-32-PIC: bar04:
5109 ; LINUX-32-PIC: movl $ddst, %eax
5110 ; LINUX-32-PIC-NEXT: ret
5112 ; LINUX-64-PIC: bar04:
5113 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
5114 ; LINUX-64-PIC-NEXT: ret
5116 ; DARWIN-32-STATIC: _bar04:
5117 ; DARWIN-32-STATIC: movl $_ddst, %eax
5118 ; DARWIN-32-STATIC-NEXT: ret
5120 ; DARWIN-32-DYNAMIC: _bar04:
5121 ; DARWIN-32-DYNAMIC: movl $_ddst, %eax
5122 ; DARWIN-32-DYNAMIC-NEXT: ret
5124 ; DARWIN-32-PIC: _bar04:
5125 ; DARWIN-32-PIC: call "L73$pb"
5126 ; DARWIN-32-PIC-NEXT: "L73$pb":
5127 ; DARWIN-32-PIC-NEXT: popl %eax
5128 ; DARWIN-32-PIC-NEXT: leal _ddst-"L73$pb"(%eax), %eax
5129 ; DARWIN-32-PIC-NEXT: ret
5131 ; DARWIN-64-STATIC: _bar04:
5132 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
5133 ; DARWIN-64-STATIC-NEXT: ret
5135 ; DARWIN-64-DYNAMIC: _bar04:
5136 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
5137 ; DARWIN-64-DYNAMIC-NEXT: ret
5139 ; DARWIN-64-PIC: _bar04:
5140 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
5141 ; DARWIN-64-PIC-NEXT: ret
5144 define i8* @bar05() nounwind {
5146 ret i8* bitcast (i32** @dptr to i8*)
5147 ; LINUX-64-STATIC: bar05:
5148 ; LINUX-64-STATIC: movl $dptr, %eax
5149 ; LINUX-64-STATIC: ret
5151 ; LINUX-32-STATIC: bar05:
5152 ; LINUX-32-STATIC: movl $dptr, %eax
5153 ; LINUX-32-STATIC-NEXT: ret
5155 ; LINUX-32-PIC: bar05:
5156 ; LINUX-32-PIC: movl $dptr, %eax
5157 ; LINUX-32-PIC-NEXT: ret
5159 ; LINUX-64-PIC: bar05:
5160 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
5161 ; LINUX-64-PIC-NEXT: ret
5163 ; DARWIN-32-STATIC: _bar05:
5164 ; DARWIN-32-STATIC: movl $_dptr, %eax
5165 ; DARWIN-32-STATIC-NEXT: ret
5167 ; DARWIN-32-DYNAMIC: _bar05:
5168 ; DARWIN-32-DYNAMIC: movl $_dptr, %eax
5169 ; DARWIN-32-DYNAMIC-NEXT: ret
5171 ; DARWIN-32-PIC: _bar05:
5172 ; DARWIN-32-PIC: call "L74$pb"
5173 ; DARWIN-32-PIC-NEXT: "L74$pb":
5174 ; DARWIN-32-PIC-NEXT: popl %eax
5175 ; DARWIN-32-PIC-NEXT: leal _dptr-"L74$pb"(%eax), %eax
5176 ; DARWIN-32-PIC-NEXT: ret
5178 ; DARWIN-64-STATIC: _bar05:
5179 ; DARWIN-64-STATIC: leaq _dptr(%rip), %rax
5180 ; DARWIN-64-STATIC-NEXT: ret
5182 ; DARWIN-64-DYNAMIC: _bar05:
5183 ; DARWIN-64-DYNAMIC: leaq _dptr(%rip), %rax
5184 ; DARWIN-64-DYNAMIC-NEXT: ret
5186 ; DARWIN-64-PIC: _bar05:
5187 ; DARWIN-64-PIC: leaq _dptr(%rip), %rax
5188 ; DARWIN-64-PIC-NEXT: ret
5191 define i8* @bar06() nounwind {
5193 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
5194 ; LINUX-64-STATIC: bar06:
5195 ; LINUX-64-STATIC: movl $lsrc, %eax
5196 ; LINUX-64-STATIC: ret
5198 ; LINUX-32-STATIC: bar06:
5199 ; LINUX-32-STATIC: movl $lsrc, %eax
5200 ; LINUX-32-STATIC-NEXT: ret
5202 ; LINUX-32-PIC: bar06:
5203 ; LINUX-32-PIC: movl $lsrc, %eax
5204 ; LINUX-32-PIC-NEXT: ret
5206 ; LINUX-64-PIC: bar06:
5207 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
5208 ; LINUX-64-PIC-NEXT: ret
5210 ; DARWIN-32-STATIC: _bar06:
5211 ; DARWIN-32-STATIC: movl $_lsrc, %eax
5212 ; DARWIN-32-STATIC-NEXT: ret
5214 ; DARWIN-32-DYNAMIC: _bar06:
5215 ; DARWIN-32-DYNAMIC: movl $_lsrc, %eax
5216 ; DARWIN-32-DYNAMIC-NEXT: ret
5218 ; DARWIN-32-PIC: _bar06:
5219 ; DARWIN-32-PIC: call "L75$pb"
5220 ; DARWIN-32-PIC-NEXT: "L75$pb":
5221 ; DARWIN-32-PIC-NEXT: popl %eax
5222 ; DARWIN-32-PIC-NEXT: leal _lsrc-"L75$pb"(%eax), %eax
5223 ; DARWIN-32-PIC-NEXT: ret
5225 ; DARWIN-64-STATIC: _bar06:
5226 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
5227 ; DARWIN-64-STATIC-NEXT: ret
5229 ; DARWIN-64-DYNAMIC: _bar06:
5230 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
5231 ; DARWIN-64-DYNAMIC-NEXT: ret
5233 ; DARWIN-64-PIC: _bar06:
5234 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
5235 ; DARWIN-64-PIC-NEXT: ret
5238 define i8* @bar07() nounwind {
5240 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
5241 ; LINUX-64-STATIC: bar07:
5242 ; LINUX-64-STATIC: movl $ldst, %eax
5243 ; LINUX-64-STATIC: ret
5245 ; LINUX-32-STATIC: bar07:
5246 ; LINUX-32-STATIC: movl $ldst, %eax
5247 ; LINUX-32-STATIC-NEXT: ret
5249 ; LINUX-32-PIC: bar07:
5250 ; LINUX-32-PIC: movl $ldst, %eax
5251 ; LINUX-32-PIC-NEXT: ret
5253 ; LINUX-64-PIC: bar07:
5254 ; LINUX-64-PIC: leaq ldst(%rip), %rax
5255 ; LINUX-64-PIC-NEXT: ret
5257 ; DARWIN-32-STATIC: _bar07:
5258 ; DARWIN-32-STATIC: movl $_ldst, %eax
5259 ; DARWIN-32-STATIC-NEXT: ret
5261 ; DARWIN-32-DYNAMIC: _bar07:
5262 ; DARWIN-32-DYNAMIC: movl $_ldst, %eax
5263 ; DARWIN-32-DYNAMIC-NEXT: ret
5265 ; DARWIN-32-PIC: _bar07:
5266 ; DARWIN-32-PIC: call "L76$pb"
5267 ; DARWIN-32-PIC-NEXT: "L76$pb":
5268 ; DARWIN-32-PIC-NEXT: popl %eax
5269 ; DARWIN-32-PIC-NEXT: leal _ldst-"L76$pb"(%eax), %eax
5270 ; DARWIN-32-PIC-NEXT: ret
5272 ; DARWIN-64-STATIC: _bar07:
5273 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
5274 ; DARWIN-64-STATIC-NEXT: ret
5276 ; DARWIN-64-DYNAMIC: _bar07:
5277 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
5278 ; DARWIN-64-DYNAMIC-NEXT: ret
5280 ; DARWIN-64-PIC: _bar07:
5281 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
5282 ; DARWIN-64-PIC-NEXT: ret
5285 define i8* @bar08() nounwind {
5287 ret i8* bitcast (i32** @lptr to i8*)
5288 ; LINUX-64-STATIC: bar08:
5289 ; LINUX-64-STATIC: movl $lptr, %eax
5290 ; LINUX-64-STATIC: ret
5292 ; LINUX-32-STATIC: bar08:
5293 ; LINUX-32-STATIC: movl $lptr, %eax
5294 ; LINUX-32-STATIC-NEXT: ret
5296 ; LINUX-32-PIC: bar08:
5297 ; LINUX-32-PIC: movl $lptr, %eax
5298 ; LINUX-32-PIC-NEXT: ret
5300 ; LINUX-64-PIC: bar08:
5301 ; LINUX-64-PIC: leaq lptr(%rip), %rax
5302 ; LINUX-64-PIC-NEXT: ret
5304 ; DARWIN-32-STATIC: _bar08:
5305 ; DARWIN-32-STATIC: movl $_lptr, %eax
5306 ; DARWIN-32-STATIC-NEXT: ret
5308 ; DARWIN-32-DYNAMIC: _bar08:
5309 ; DARWIN-32-DYNAMIC: movl $_lptr, %eax
5310 ; DARWIN-32-DYNAMIC-NEXT: ret
5312 ; DARWIN-32-PIC: _bar08:
5313 ; DARWIN-32-PIC: call "L77$pb"
5314 ; DARWIN-32-PIC-NEXT: "L77$pb":
5315 ; DARWIN-32-PIC-NEXT: popl %eax
5316 ; DARWIN-32-PIC-NEXT: leal _lptr-"L77$pb"(%eax), %eax
5317 ; DARWIN-32-PIC-NEXT: ret
5319 ; DARWIN-64-STATIC: _bar08:
5320 ; DARWIN-64-STATIC: leaq _lptr(%rip), %rax
5321 ; DARWIN-64-STATIC-NEXT: ret
5323 ; DARWIN-64-DYNAMIC: _bar08:
5324 ; DARWIN-64-DYNAMIC: leaq _lptr(%rip), %rax
5325 ; DARWIN-64-DYNAMIC-NEXT: ret
5327 ; DARWIN-64-PIC: _bar08:
5328 ; DARWIN-64-PIC: leaq _lptr(%rip), %rax
5329 ; DARWIN-64-PIC-NEXT: ret
5332 define i8* @har00() nounwind {
5334 ret i8* bitcast ([131072 x i32]* @src to i8*)
5335 ; LINUX-64-STATIC: har00:
5336 ; LINUX-64-STATIC: movl $src, %eax
5337 ; LINUX-64-STATIC: ret
5339 ; LINUX-32-STATIC: har00:
5340 ; LINUX-32-STATIC: movl $src, %eax
5341 ; LINUX-32-STATIC-NEXT: ret
5343 ; LINUX-32-PIC: har00:
5344 ; LINUX-32-PIC: movl $src, %eax
5345 ; LINUX-32-PIC-NEXT: ret
5347 ; LINUX-64-PIC: har00:
5348 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
5349 ; LINUX-64-PIC-NEXT: ret
5351 ; DARWIN-32-STATIC: _har00:
5352 ; DARWIN-32-STATIC: movl $_src, %eax
5353 ; DARWIN-32-STATIC-NEXT: ret
5355 ; DARWIN-32-DYNAMIC: _har00:
5356 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
5357 ; DARWIN-32-DYNAMIC-NEXT: ret
5359 ; DARWIN-32-PIC: _har00:
5360 ; DARWIN-32-PIC: call "L78$pb"
5361 ; DARWIN-32-PIC-NEXT: "L78$pb":
5362 ; DARWIN-32-PIC-NEXT: popl %eax
5363 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L78$pb"(%eax), %eax
5364 ; DARWIN-32-PIC-NEXT: ret
5366 ; DARWIN-64-STATIC: _har00:
5367 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
5368 ; DARWIN-64-STATIC-NEXT: ret
5370 ; DARWIN-64-DYNAMIC: _har00:
5371 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
5372 ; DARWIN-64-DYNAMIC-NEXT: ret
5374 ; DARWIN-64-PIC: _har00:
5375 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
5376 ; DARWIN-64-PIC-NEXT: ret
5379 define i8* @hxr00() nounwind {
5381 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
5382 ; LINUX-64-STATIC: hxr00:
5383 ; LINUX-64-STATIC: movl $xsrc, %eax
5384 ; LINUX-64-STATIC: ret
5386 ; LINUX-32-STATIC: hxr00:
5387 ; LINUX-32-STATIC: movl $xsrc, %eax
5388 ; LINUX-32-STATIC-NEXT: ret
5390 ; LINUX-32-PIC: hxr00:
5391 ; LINUX-32-PIC: movl $xsrc, %eax
5392 ; LINUX-32-PIC-NEXT: ret
5394 ; LINUX-64-PIC: hxr00:
5395 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
5396 ; LINUX-64-PIC-NEXT: ret
5398 ; DARWIN-32-STATIC: _hxr00:
5399 ; DARWIN-32-STATIC: movl $_xsrc, %eax
5400 ; DARWIN-32-STATIC-NEXT: ret
5402 ; DARWIN-32-DYNAMIC: _hxr00:
5403 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
5404 ; DARWIN-32-DYNAMIC-NEXT: ret
5406 ; DARWIN-32-PIC: _hxr00:
5407 ; DARWIN-32-PIC: call "L79$pb"
5408 ; DARWIN-32-PIC-NEXT: "L79$pb":
5409 ; DARWIN-32-PIC-NEXT: popl %eax
5410 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L79$pb"(%eax), %eax
5411 ; DARWIN-32-PIC-NEXT: ret
5413 ; DARWIN-64-STATIC: _hxr00:
5414 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
5415 ; DARWIN-64-STATIC-NEXT: ret
5417 ; DARWIN-64-DYNAMIC: _hxr00:
5418 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
5419 ; DARWIN-64-DYNAMIC-NEXT: ret
5421 ; DARWIN-64-PIC: _hxr00:
5422 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
5423 ; DARWIN-64-PIC-NEXT: ret
5426 define i8* @har01() nounwind {
5428 ret i8* bitcast ([131072 x i32]* @dst to i8*)
5429 ; LINUX-64-STATIC: har01:
5430 ; LINUX-64-STATIC: movl $dst, %eax
5431 ; LINUX-64-STATIC: ret
5433 ; LINUX-32-STATIC: har01:
5434 ; LINUX-32-STATIC: movl $dst, %eax
5435 ; LINUX-32-STATIC-NEXT: ret
5437 ; LINUX-32-PIC: har01:
5438 ; LINUX-32-PIC: movl $dst, %eax
5439 ; LINUX-32-PIC-NEXT: ret
5441 ; LINUX-64-PIC: har01:
5442 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
5443 ; LINUX-64-PIC-NEXT: ret
5445 ; DARWIN-32-STATIC: _har01:
5446 ; DARWIN-32-STATIC: movl $_dst, %eax
5447 ; DARWIN-32-STATIC-NEXT: ret
5449 ; DARWIN-32-DYNAMIC: _har01:
5450 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
5451 ; DARWIN-32-DYNAMIC-NEXT: ret
5453 ; DARWIN-32-PIC: _har01:
5454 ; DARWIN-32-PIC: call "L80$pb"
5455 ; DARWIN-32-PIC-NEXT: "L80$pb":
5456 ; DARWIN-32-PIC-NEXT: popl %eax
5457 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L80$pb"(%eax), %eax
5458 ; DARWIN-32-PIC-NEXT: ret
5460 ; DARWIN-64-STATIC: _har01:
5461 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
5462 ; DARWIN-64-STATIC-NEXT: ret
5464 ; DARWIN-64-DYNAMIC: _har01:
5465 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
5466 ; DARWIN-64-DYNAMIC-NEXT: ret
5468 ; DARWIN-64-PIC: _har01:
5469 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
5470 ; DARWIN-64-PIC-NEXT: ret
5473 define i8* @hxr01() nounwind {
5475 ret i8* bitcast ([32 x i32]* @xdst to i8*)
5476 ; LINUX-64-STATIC: hxr01:
5477 ; LINUX-64-STATIC: movl $xdst, %eax
5478 ; LINUX-64-STATIC: ret
5480 ; LINUX-32-STATIC: hxr01:
5481 ; LINUX-32-STATIC: movl $xdst, %eax
5482 ; LINUX-32-STATIC-NEXT: ret
5484 ; LINUX-32-PIC: hxr01:
5485 ; LINUX-32-PIC: movl $xdst, %eax
5486 ; LINUX-32-PIC-NEXT: ret
5488 ; LINUX-64-PIC: hxr01:
5489 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
5490 ; LINUX-64-PIC-NEXT: ret
5492 ; DARWIN-32-STATIC: _hxr01:
5493 ; DARWIN-32-STATIC: movl $_xdst, %eax
5494 ; DARWIN-32-STATIC-NEXT: ret
5496 ; DARWIN-32-DYNAMIC: _hxr01:
5497 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
5498 ; DARWIN-32-DYNAMIC-NEXT: ret
5500 ; DARWIN-32-PIC: _hxr01:
5501 ; DARWIN-32-PIC: call "L81$pb"
5502 ; DARWIN-32-PIC-NEXT: "L81$pb":
5503 ; DARWIN-32-PIC-NEXT: popl %eax
5504 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L81$pb"(%eax), %eax
5505 ; DARWIN-32-PIC-NEXT: ret
5507 ; DARWIN-64-STATIC: _hxr01:
5508 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
5509 ; DARWIN-64-STATIC-NEXT: ret
5511 ; DARWIN-64-DYNAMIC: _hxr01:
5512 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
5513 ; DARWIN-64-DYNAMIC-NEXT: ret
5515 ; DARWIN-64-PIC: _hxr01:
5516 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
5517 ; DARWIN-64-PIC-NEXT: ret
5520 define i8* @har02() nounwind {
5522 %0 = load i32** @ptr, align 8
5523 %1 = bitcast i32* %0 to i8*
5525 ; LINUX-64-STATIC: har02:
5526 ; LINUX-64-STATIC: movq ptr(%rip), %rax
5527 ; LINUX-64-STATIC: ret
5529 ; LINUX-32-STATIC: har02:
5530 ; LINUX-32-STATIC: movl ptr, %eax
5531 ; LINUX-32-STATIC-NEXT: ret
5533 ; LINUX-32-PIC: har02:
5534 ; LINUX-32-PIC: movl ptr, %eax
5535 ; LINUX-32-PIC-NEXT: ret
5537 ; LINUX-64-PIC: har02:
5538 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
5539 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
5540 ; LINUX-64-PIC-NEXT: ret
5542 ; DARWIN-32-STATIC: _har02:
5543 ; DARWIN-32-STATIC: movl _ptr, %eax
5544 ; DARWIN-32-STATIC-NEXT: ret
5546 ; DARWIN-32-DYNAMIC: _har02:
5547 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
5548 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
5549 ; DARWIN-32-DYNAMIC-NEXT: ret
5551 ; DARWIN-32-PIC: _har02:
5552 ; DARWIN-32-PIC: call "L82$pb"
5553 ; DARWIN-32-PIC-NEXT: "L82$pb":
5554 ; DARWIN-32-PIC-NEXT: popl %eax
5555 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L82$pb"(%eax), %eax
5556 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
5557 ; DARWIN-32-PIC-NEXT: ret
5559 ; DARWIN-64-STATIC: _har02:
5560 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
5561 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
5562 ; DARWIN-64-STATIC-NEXT: ret
5564 ; DARWIN-64-DYNAMIC: _har02:
5565 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
5566 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
5567 ; DARWIN-64-DYNAMIC-NEXT: ret
5569 ; DARWIN-64-PIC: _har02:
5570 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
5571 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
5572 ; DARWIN-64-PIC-NEXT: ret
5575 define i8* @har03() nounwind {
5577 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
5578 ; LINUX-64-STATIC: har03:
5579 ; LINUX-64-STATIC: movl $dsrc, %eax
5580 ; LINUX-64-STATIC: ret
5582 ; LINUX-32-STATIC: har03:
5583 ; LINUX-32-STATIC: movl $dsrc, %eax
5584 ; LINUX-32-STATIC-NEXT: ret
5586 ; LINUX-32-PIC: har03:
5587 ; LINUX-32-PIC: movl $dsrc, %eax
5588 ; LINUX-32-PIC-NEXT: ret
5590 ; LINUX-64-PIC: har03:
5591 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
5592 ; LINUX-64-PIC-NEXT: ret
5594 ; DARWIN-32-STATIC: _har03:
5595 ; DARWIN-32-STATIC: movl $_dsrc, %eax
5596 ; DARWIN-32-STATIC-NEXT: ret
5598 ; DARWIN-32-DYNAMIC: _har03:
5599 ; DARWIN-32-DYNAMIC: movl $_dsrc, %eax
5600 ; DARWIN-32-DYNAMIC-NEXT: ret
5602 ; DARWIN-32-PIC: _har03:
5603 ; DARWIN-32-PIC: call "L83$pb"
5604 ; DARWIN-32-PIC-NEXT: "L83$pb":
5605 ; DARWIN-32-PIC-NEXT: popl %eax
5606 ; DARWIN-32-PIC-NEXT: leal _dsrc-"L83$pb"(%eax), %eax
5607 ; DARWIN-32-PIC-NEXT: ret
5609 ; DARWIN-64-STATIC: _har03:
5610 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
5611 ; DARWIN-64-STATIC-NEXT: ret
5613 ; DARWIN-64-DYNAMIC: _har03:
5614 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
5615 ; DARWIN-64-DYNAMIC-NEXT: ret
5617 ; DARWIN-64-PIC: _har03:
5618 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
5619 ; DARWIN-64-PIC-NEXT: ret
5622 define i8* @har04() nounwind {
5624 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
5625 ; LINUX-64-STATIC: har04:
5626 ; LINUX-64-STATIC: movl $ddst, %eax
5627 ; LINUX-64-STATIC: ret
5629 ; LINUX-32-STATIC: har04:
5630 ; LINUX-32-STATIC: movl $ddst, %eax
5631 ; LINUX-32-STATIC-NEXT: ret
5633 ; LINUX-32-PIC: har04:
5634 ; LINUX-32-PIC: movl $ddst, %eax
5635 ; LINUX-32-PIC-NEXT: ret
5637 ; LINUX-64-PIC: har04:
5638 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
5639 ; LINUX-64-PIC-NEXT: ret
5641 ; DARWIN-32-STATIC: _har04:
5642 ; DARWIN-32-STATIC: movl $_ddst, %eax
5643 ; DARWIN-32-STATIC-NEXT: ret
5645 ; DARWIN-32-DYNAMIC: _har04:
5646 ; DARWIN-32-DYNAMIC: movl $_ddst, %eax
5647 ; DARWIN-32-DYNAMIC-NEXT: ret
5649 ; DARWIN-32-PIC: _har04:
5650 ; DARWIN-32-PIC: call "L84$pb"
5651 ; DARWIN-32-PIC-NEXT: "L84$pb":
5652 ; DARWIN-32-PIC-NEXT: popl %eax
5653 ; DARWIN-32-PIC-NEXT: leal _ddst-"L84$pb"(%eax), %eax
5654 ; DARWIN-32-PIC-NEXT: ret
5656 ; DARWIN-64-STATIC: _har04:
5657 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
5658 ; DARWIN-64-STATIC-NEXT: ret
5660 ; DARWIN-64-DYNAMIC: _har04:
5661 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
5662 ; DARWIN-64-DYNAMIC-NEXT: ret
5664 ; DARWIN-64-PIC: _har04:
5665 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
5666 ; DARWIN-64-PIC-NEXT: ret
5669 define i8* @har05() nounwind {
5671 %0 = load i32** @dptr, align 8
5672 %1 = bitcast i32* %0 to i8*
5674 ; LINUX-64-STATIC: har05:
5675 ; LINUX-64-STATIC: movq dptr(%rip), %rax
5676 ; LINUX-64-STATIC: ret
5678 ; LINUX-32-STATIC: har05:
5679 ; LINUX-32-STATIC: movl dptr, %eax
5680 ; LINUX-32-STATIC-NEXT: ret
5682 ; LINUX-32-PIC: har05:
5683 ; LINUX-32-PIC: movl dptr, %eax
5684 ; LINUX-32-PIC-NEXT: ret
5686 ; LINUX-64-PIC: har05:
5687 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
5688 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
5689 ; LINUX-64-PIC-NEXT: ret
5691 ; DARWIN-32-STATIC: _har05:
5692 ; DARWIN-32-STATIC: movl _dptr, %eax
5693 ; DARWIN-32-STATIC-NEXT: ret
5695 ; DARWIN-32-DYNAMIC: _har05:
5696 ; DARWIN-32-DYNAMIC: movl _dptr, %eax
5697 ; DARWIN-32-DYNAMIC-NEXT: ret
5699 ; DARWIN-32-PIC: _har05:
5700 ; DARWIN-32-PIC: call "L85$pb"
5701 ; DARWIN-32-PIC-NEXT: "L85$pb":
5702 ; DARWIN-32-PIC-NEXT: popl %eax
5703 ; DARWIN-32-PIC-NEXT: movl _dptr-"L85$pb"(%eax), %eax
5704 ; DARWIN-32-PIC-NEXT: ret
5706 ; DARWIN-64-STATIC: _har05:
5707 ; DARWIN-64-STATIC: movq _dptr(%rip), %rax
5708 ; DARWIN-64-STATIC-NEXT: ret
5710 ; DARWIN-64-DYNAMIC: _har05:
5711 ; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
5712 ; DARWIN-64-DYNAMIC-NEXT: ret
5714 ; DARWIN-64-PIC: _har05:
5715 ; DARWIN-64-PIC: movq _dptr(%rip), %rax
5716 ; DARWIN-64-PIC-NEXT: ret
5719 define i8* @har06() nounwind {
5721 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
5722 ; LINUX-64-STATIC: har06:
5723 ; LINUX-64-STATIC: movl $lsrc, %eax
5724 ; LINUX-64-STATIC: ret
5726 ; LINUX-32-STATIC: har06:
5727 ; LINUX-32-STATIC: movl $lsrc, %eax
5728 ; LINUX-32-STATIC-NEXT: ret
5730 ; LINUX-32-PIC: har06:
5731 ; LINUX-32-PIC: movl $lsrc, %eax
5732 ; LINUX-32-PIC-NEXT: ret
5734 ; LINUX-64-PIC: har06:
5735 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
5736 ; LINUX-64-PIC-NEXT: ret
5738 ; DARWIN-32-STATIC: _har06:
5739 ; DARWIN-32-STATIC: movl $_lsrc, %eax
5740 ; DARWIN-32-STATIC-NEXT: ret
5742 ; DARWIN-32-DYNAMIC: _har06:
5743 ; DARWIN-32-DYNAMIC: movl $_lsrc, %eax
5744 ; DARWIN-32-DYNAMIC-NEXT: ret
5746 ; DARWIN-32-PIC: _har06:
5747 ; DARWIN-32-PIC: call "L86$pb"
5748 ; DARWIN-32-PIC-NEXT: "L86$pb":
5749 ; DARWIN-32-PIC-NEXT: popl %eax
5750 ; DARWIN-32-PIC-NEXT: leal _lsrc-"L86$pb"(%eax), %eax
5751 ; DARWIN-32-PIC-NEXT: ret
5753 ; DARWIN-64-STATIC: _har06:
5754 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
5755 ; DARWIN-64-STATIC-NEXT: ret
5757 ; DARWIN-64-DYNAMIC: _har06:
5758 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
5759 ; DARWIN-64-DYNAMIC-NEXT: ret
5761 ; DARWIN-64-PIC: _har06:
5762 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
5763 ; DARWIN-64-PIC-NEXT: ret
5766 define i8* @har07() nounwind {
5768 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
5769 ; LINUX-64-STATIC: har07:
5770 ; LINUX-64-STATIC: movl $ldst, %eax
5771 ; LINUX-64-STATIC: ret
5773 ; LINUX-32-STATIC: har07:
5774 ; LINUX-32-STATIC: movl $ldst, %eax
5775 ; LINUX-32-STATIC-NEXT: ret
5777 ; LINUX-32-PIC: har07:
5778 ; LINUX-32-PIC: movl $ldst, %eax
5779 ; LINUX-32-PIC-NEXT: ret
5781 ; LINUX-64-PIC: har07:
5782 ; LINUX-64-PIC: leaq ldst(%rip), %rax
5783 ; LINUX-64-PIC-NEXT: ret
5785 ; DARWIN-32-STATIC: _har07:
5786 ; DARWIN-32-STATIC: movl $_ldst, %eax
5787 ; DARWIN-32-STATIC-NEXT: ret
5789 ; DARWIN-32-DYNAMIC: _har07:
5790 ; DARWIN-32-DYNAMIC: movl $_ldst, %eax
5791 ; DARWIN-32-DYNAMIC-NEXT: ret
5793 ; DARWIN-32-PIC: _har07:
5794 ; DARWIN-32-PIC: call "L87$pb"
5795 ; DARWIN-32-PIC-NEXT: "L87$pb":
5796 ; DARWIN-32-PIC-NEXT: popl %eax
5797 ; DARWIN-32-PIC-NEXT: leal _ldst-"L87$pb"(%eax), %eax
5798 ; DARWIN-32-PIC-NEXT: ret
5800 ; DARWIN-64-STATIC: _har07:
5801 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
5802 ; DARWIN-64-STATIC-NEXT: ret
5804 ; DARWIN-64-DYNAMIC: _har07:
5805 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
5806 ; DARWIN-64-DYNAMIC-NEXT: ret
5808 ; DARWIN-64-PIC: _har07:
5809 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
5810 ; DARWIN-64-PIC-NEXT: ret
5813 define i8* @har08() nounwind {
5815 %0 = load i32** @lptr, align 8
5816 %1 = bitcast i32* %0 to i8*
5818 ; LINUX-64-STATIC: har08:
5819 ; LINUX-64-STATIC: movq lptr(%rip), %rax
5820 ; LINUX-64-STATIC: ret
5822 ; LINUX-32-STATIC: har08:
5823 ; LINUX-32-STATIC: movl lptr, %eax
5824 ; LINUX-32-STATIC-NEXT: ret
5826 ; LINUX-32-PIC: har08:
5827 ; LINUX-32-PIC: movl lptr, %eax
5828 ; LINUX-32-PIC-NEXT: ret
5830 ; LINUX-64-PIC: har08:
5831 ; LINUX-64-PIC: movq lptr(%rip), %rax
5832 ; LINUX-64-PIC-NEXT: ret
5834 ; DARWIN-32-STATIC: _har08:
5835 ; DARWIN-32-STATIC: movl _lptr, %eax
5836 ; DARWIN-32-STATIC-NEXT: ret
5838 ; DARWIN-32-DYNAMIC: _har08:
5839 ; DARWIN-32-DYNAMIC: movl _lptr, %eax
5840 ; DARWIN-32-DYNAMIC-NEXT: ret
5842 ; DARWIN-32-PIC: _har08:
5843 ; DARWIN-32-PIC: call "L88$pb"
5844 ; DARWIN-32-PIC-NEXT: "L88$pb":
5845 ; DARWIN-32-PIC-NEXT: popl %eax
5846 ; DARWIN-32-PIC-NEXT: movl _lptr-"L88$pb"(%eax), %eax
5847 ; DARWIN-32-PIC-NEXT: ret
5849 ; DARWIN-64-STATIC: _har08:
5850 ; DARWIN-64-STATIC: movq _lptr(%rip), %rax
5851 ; DARWIN-64-STATIC-NEXT: ret
5853 ; DARWIN-64-DYNAMIC: _har08:
5854 ; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
5855 ; DARWIN-64-DYNAMIC-NEXT: ret
5857 ; DARWIN-64-PIC: _har08:
5858 ; DARWIN-64-PIC: movq _lptr(%rip), %rax
5859 ; DARWIN-64-PIC-NEXT: ret
5862 define i8* @bat00() nounwind {
5864 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
5865 ; LINUX-64-STATIC: bat00:
5866 ; LINUX-64-STATIC: movl $src+64, %eax
5867 ; LINUX-64-STATIC: ret
5869 ; LINUX-32-STATIC: bat00:
5870 ; LINUX-32-STATIC: movl $src+64, %eax
5871 ; LINUX-32-STATIC-NEXT: ret
5873 ; LINUX-32-PIC: bat00:
5874 ; LINUX-32-PIC: movl $src+64, %eax
5875 ; LINUX-32-PIC-NEXT: ret
5877 ; LINUX-64-PIC: bat00:
5878 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
5879 ; LINUX-64-PIC-NEXT: addq $64, %rax
5880 ; LINUX-64-PIC-NEXT: ret
5882 ; DARWIN-32-STATIC: _bat00:
5883 ; DARWIN-32-STATIC: movl $_src+64, %eax
5884 ; DARWIN-32-STATIC-NEXT: ret
5886 ; DARWIN-32-DYNAMIC: _bat00:
5887 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
5888 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
5889 ; DARWIN-32-DYNAMIC-NEXT: ret
5891 ; DARWIN-32-PIC: _bat00:
5892 ; DARWIN-32-PIC: call "L89$pb"
5893 ; DARWIN-32-PIC-NEXT: "L89$pb":
5894 ; DARWIN-32-PIC-NEXT: popl %eax
5895 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L89$pb"(%eax), %eax
5896 ; DARWIN-32-PIC-NEXT: addl $64, %eax
5897 ; DARWIN-32-PIC-NEXT: ret
5899 ; DARWIN-64-STATIC: _bat00:
5900 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
5901 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
5902 ; DARWIN-64-STATIC-NEXT: ret
5904 ; DARWIN-64-DYNAMIC: _bat00:
5905 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
5906 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
5907 ; DARWIN-64-DYNAMIC-NEXT: ret
5909 ; DARWIN-64-PIC: _bat00:
5910 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
5911 ; DARWIN-64-PIC-NEXT: addq $64, %rax
5912 ; DARWIN-64-PIC-NEXT: ret
5915 define i8* @bxt00() nounwind {
5917 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
5918 ; LINUX-64-STATIC: bxt00:
5919 ; LINUX-64-STATIC: movl $xsrc+64, %eax
5920 ; LINUX-64-STATIC: ret
5922 ; LINUX-32-STATIC: bxt00:
5923 ; LINUX-32-STATIC: movl $xsrc+64, %eax
5924 ; LINUX-32-STATIC-NEXT: ret
5926 ; LINUX-32-PIC: bxt00:
5927 ; LINUX-32-PIC: movl $xsrc+64, %eax
5928 ; LINUX-32-PIC-NEXT: ret
5930 ; LINUX-64-PIC: bxt00:
5931 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
5932 ; LINUX-64-PIC-NEXT: addq $64, %rax
5933 ; LINUX-64-PIC-NEXT: ret
5935 ; DARWIN-32-STATIC: _bxt00:
5936 ; DARWIN-32-STATIC: movl $_xsrc+64, %eax
5937 ; DARWIN-32-STATIC-NEXT: ret
5939 ; DARWIN-32-DYNAMIC: _bxt00:
5940 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
5941 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
5942 ; DARWIN-32-DYNAMIC-NEXT: ret
5944 ; DARWIN-32-PIC: _bxt00:
5945 ; DARWIN-32-PIC: call "L90$pb"
5946 ; DARWIN-32-PIC-NEXT: "L90$pb":
5947 ; DARWIN-32-PIC-NEXT: popl %eax
5948 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L90$pb"(%eax), %eax
5949 ; DARWIN-32-PIC-NEXT: addl $64, %eax
5950 ; DARWIN-32-PIC-NEXT: ret
5952 ; DARWIN-64-STATIC: _bxt00:
5953 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
5954 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
5955 ; DARWIN-64-STATIC-NEXT: ret
5957 ; DARWIN-64-DYNAMIC: _bxt00:
5958 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
5959 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
5960 ; DARWIN-64-DYNAMIC-NEXT: ret
5962 ; DARWIN-64-PIC: _bxt00:
5963 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
5964 ; DARWIN-64-PIC-NEXT: addq $64, %rax
5965 ; DARWIN-64-PIC-NEXT: ret
5968 define i8* @bat01() nounwind {
5970 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
5971 ; LINUX-64-STATIC: bat01:
5972 ; LINUX-64-STATIC: movl $dst+64, %eax
5973 ; LINUX-64-STATIC: ret
5975 ; LINUX-32-STATIC: bat01:
5976 ; LINUX-32-STATIC: movl $dst+64, %eax
5977 ; LINUX-32-STATIC-NEXT: ret
5979 ; LINUX-32-PIC: bat01:
5980 ; LINUX-32-PIC: movl $dst+64, %eax
5981 ; LINUX-32-PIC-NEXT: ret
5983 ; LINUX-64-PIC: bat01:
5984 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
5985 ; LINUX-64-PIC-NEXT: addq $64, %rax
5986 ; LINUX-64-PIC-NEXT: ret
5988 ; DARWIN-32-STATIC: _bat01:
5989 ; DARWIN-32-STATIC: movl $_dst+64, %eax
5990 ; DARWIN-32-STATIC-NEXT: ret
5992 ; DARWIN-32-DYNAMIC: _bat01:
5993 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
5994 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
5995 ; DARWIN-32-DYNAMIC-NEXT: ret
5997 ; DARWIN-32-PIC: _bat01:
5998 ; DARWIN-32-PIC: call "L91$pb"
5999 ; DARWIN-32-PIC-NEXT: "L91$pb":
6000 ; DARWIN-32-PIC-NEXT: popl %eax
6001 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L91$pb"(%eax), %eax
6002 ; DARWIN-32-PIC-NEXT: addl $64, %eax
6003 ; DARWIN-32-PIC-NEXT: ret
6005 ; DARWIN-64-STATIC: _bat01:
6006 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
6007 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
6008 ; DARWIN-64-STATIC-NEXT: ret
6010 ; DARWIN-64-DYNAMIC: _bat01:
6011 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
6012 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
6013 ; DARWIN-64-DYNAMIC-NEXT: ret
6015 ; DARWIN-64-PIC: _bat01:
6016 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
6017 ; DARWIN-64-PIC-NEXT: addq $64, %rax
6018 ; DARWIN-64-PIC-NEXT: ret
6021 define i8* @bxt01() nounwind {
6023 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
6024 ; LINUX-64-STATIC: bxt01:
6025 ; LINUX-64-STATIC: movl $xdst+64, %eax
6026 ; LINUX-64-STATIC: ret
6028 ; LINUX-32-STATIC: bxt01:
6029 ; LINUX-32-STATIC: movl $xdst+64, %eax
6030 ; LINUX-32-STATIC-NEXT: ret
6032 ; LINUX-32-PIC: bxt01:
6033 ; LINUX-32-PIC: movl $xdst+64, %eax
6034 ; LINUX-32-PIC-NEXT: ret
6036 ; LINUX-64-PIC: bxt01:
6037 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
6038 ; LINUX-64-PIC-NEXT: addq $64, %rax
6039 ; LINUX-64-PIC-NEXT: ret
6041 ; DARWIN-32-STATIC: _bxt01:
6042 ; DARWIN-32-STATIC: movl $_xdst+64, %eax
6043 ; DARWIN-32-STATIC-NEXT: ret
6045 ; DARWIN-32-DYNAMIC: _bxt01:
6046 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
6047 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
6048 ; DARWIN-32-DYNAMIC-NEXT: ret
6050 ; DARWIN-32-PIC: _bxt01:
6051 ; DARWIN-32-PIC: call "L92$pb"
6052 ; DARWIN-32-PIC-NEXT: "L92$pb":
6053 ; DARWIN-32-PIC-NEXT: popl %eax
6054 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L92$pb"(%eax), %eax
6055 ; DARWIN-32-PIC-NEXT: addl $64, %eax
6056 ; DARWIN-32-PIC-NEXT: ret
6058 ; DARWIN-64-STATIC: _bxt01:
6059 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
6060 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
6061 ; DARWIN-64-STATIC-NEXT: ret
6063 ; DARWIN-64-DYNAMIC: _bxt01:
6064 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
6065 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
6066 ; DARWIN-64-DYNAMIC-NEXT: ret
6068 ; DARWIN-64-PIC: _bxt01:
6069 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
6070 ; DARWIN-64-PIC-NEXT: addq $64, %rax
6071 ; DARWIN-64-PIC-NEXT: ret
6074 define i8* @bat02() nounwind {
6076 %0 = load i32** @ptr, align 8
6077 %1 = getelementptr i32* %0, i64 16
6078 %2 = bitcast i32* %1 to i8*
6080 ; LINUX-64-STATIC: bat02:
6081 ; LINUX-64-STATIC: movq ptr(%rip), %rax
6082 ; LINUX-64-STATIC: addq $64, %rax
6083 ; LINUX-64-STATIC: ret
6085 ; LINUX-32-STATIC: bat02:
6086 ; LINUX-32-STATIC: movl ptr, %eax
6087 ; LINUX-32-STATIC-NEXT: addl $64, %eax
6088 ; LINUX-32-STATIC-NEXT: ret
6090 ; LINUX-32-PIC: bat02:
6091 ; LINUX-32-PIC: movl ptr, %eax
6092 ; LINUX-32-PIC-NEXT: addl $64, %eax
6093 ; LINUX-32-PIC-NEXT: ret
6095 ; LINUX-64-PIC: bat02:
6096 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
6097 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
6098 ; LINUX-64-PIC-NEXT: addq $64, %rax
6099 ; LINUX-64-PIC-NEXT: ret
6101 ; DARWIN-32-STATIC: _bat02:
6102 ; DARWIN-32-STATIC: movl _ptr, %eax
6103 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
6104 ; DARWIN-32-STATIC-NEXT: ret
6106 ; DARWIN-32-DYNAMIC: _bat02:
6107 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
6108 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
6109 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
6110 ; DARWIN-32-DYNAMIC-NEXT: ret
6112 ; DARWIN-32-PIC: _bat02:
6113 ; DARWIN-32-PIC: call "L93$pb"
6114 ; DARWIN-32-PIC-NEXT: "L93$pb":
6115 ; DARWIN-32-PIC-NEXT: popl %eax
6116 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L93$pb"(%eax), %eax
6117 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
6118 ; DARWIN-32-PIC-NEXT: addl $64, %eax
6119 ; DARWIN-32-PIC-NEXT: ret
6121 ; DARWIN-64-STATIC: _bat02:
6122 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
6123 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
6124 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
6125 ; DARWIN-64-STATIC-NEXT: ret
6127 ; DARWIN-64-DYNAMIC: _bat02:
6128 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
6129 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
6130 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
6131 ; DARWIN-64-DYNAMIC-NEXT: ret
6133 ; DARWIN-64-PIC: _bat02:
6134 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
6135 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
6136 ; DARWIN-64-PIC-NEXT: addq $64, %rax
6137 ; DARWIN-64-PIC-NEXT: ret
6140 define i8* @bat03() nounwind {
6142 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
6143 ; LINUX-64-STATIC: bat03:
6144 ; LINUX-64-STATIC: movl $dsrc+64, %eax
6145 ; LINUX-64-STATIC: ret
6147 ; LINUX-32-STATIC: bat03:
6148 ; LINUX-32-STATIC: movl $dsrc+64, %eax
6149 ; LINUX-32-STATIC-NEXT: ret
6151 ; LINUX-32-PIC: bat03:
6152 ; LINUX-32-PIC: movl $dsrc+64, %eax
6153 ; LINUX-32-PIC-NEXT: ret
6155 ; LINUX-64-PIC: bat03:
6156 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
6157 ; LINUX-64-PIC-NEXT: addq $64, %rax
6158 ; LINUX-64-PIC-NEXT: ret
6160 ; DARWIN-32-STATIC: _bat03:
6161 ; DARWIN-32-STATIC: movl $_dsrc+64, %eax
6162 ; DARWIN-32-STATIC-NEXT: ret
6164 ; DARWIN-32-DYNAMIC: _bat03:
6165 ; DARWIN-32-DYNAMIC: movl $_dsrc+64, %eax
6166 ; DARWIN-32-DYNAMIC-NEXT: ret
6168 ; DARWIN-32-PIC: _bat03:
6169 ; DARWIN-32-PIC: call "L94$pb"
6170 ; DARWIN-32-PIC-NEXT: "L94$pb":
6171 ; DARWIN-32-PIC-NEXT: popl %eax
6172 ; DARWIN-32-PIC-NEXT: leal _dsrc+64-"L94$pb"(%eax), %eax
6173 ; DARWIN-32-PIC-NEXT: ret
6175 ; DARWIN-64-STATIC: _bat03:
6176 ; DARWIN-64-STATIC: leaq _dsrc+64(%rip), %rax
6177 ; DARWIN-64-STATIC-NEXT: ret
6179 ; DARWIN-64-DYNAMIC: _bat03:
6180 ; DARWIN-64-DYNAMIC: leaq _dsrc+64(%rip), %rax
6181 ; DARWIN-64-DYNAMIC-NEXT: ret
6183 ; DARWIN-64-PIC: _bat03:
6184 ; DARWIN-64-PIC: leaq _dsrc+64(%rip), %rax
6185 ; DARWIN-64-PIC-NEXT: ret
6188 define i8* @bat04() nounwind {
6190 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
6191 ; LINUX-64-STATIC: bat04:
6192 ; LINUX-64-STATIC: movl $ddst+64, %eax
6193 ; LINUX-64-STATIC: ret
6195 ; LINUX-32-STATIC: bat04:
6196 ; LINUX-32-STATIC: movl $ddst+64, %eax
6197 ; LINUX-32-STATIC-NEXT: ret
6199 ; LINUX-32-PIC: bat04:
6200 ; LINUX-32-PIC: movl $ddst+64, %eax
6201 ; LINUX-32-PIC-NEXT: ret
6203 ; LINUX-64-PIC: bat04:
6204 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
6205 ; LINUX-64-PIC-NEXT: addq $64, %rax
6206 ; LINUX-64-PIC-NEXT: ret
6208 ; DARWIN-32-STATIC: _bat04:
6209 ; DARWIN-32-STATIC: movl $_ddst+64, %eax
6210 ; DARWIN-32-STATIC-NEXT: ret
6212 ; DARWIN-32-DYNAMIC: _bat04:
6213 ; DARWIN-32-DYNAMIC: movl $_ddst+64, %eax
6214 ; DARWIN-32-DYNAMIC-NEXT: ret
6216 ; DARWIN-32-PIC: _bat04:
6217 ; DARWIN-32-PIC: call "L95$pb"
6218 ; DARWIN-32-PIC-NEXT: "L95$pb":
6219 ; DARWIN-32-PIC-NEXT: popl %eax
6220 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L95$pb"(%eax), %eax
6221 ; DARWIN-32-PIC-NEXT: ret
6223 ; DARWIN-64-STATIC: _bat04:
6224 ; DARWIN-64-STATIC: leaq _ddst+64(%rip), %rax
6225 ; DARWIN-64-STATIC-NEXT: ret
6227 ; DARWIN-64-DYNAMIC: _bat04:
6228 ; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), %rax
6229 ; DARWIN-64-DYNAMIC-NEXT: ret
6231 ; DARWIN-64-PIC: _bat04:
6232 ; DARWIN-64-PIC: leaq _ddst+64(%rip), %rax
6233 ; DARWIN-64-PIC-NEXT: ret
6236 define i8* @bat05() nounwind {
6238 %0 = load i32** @dptr, align 8
6239 %1 = getelementptr i32* %0, i64 16
6240 %2 = bitcast i32* %1 to i8*
6242 ; LINUX-64-STATIC: bat05:
6243 ; LINUX-64-STATIC: movq dptr(%rip), %rax
6244 ; LINUX-64-STATIC: addq $64, %rax
6245 ; LINUX-64-STATIC: ret
6247 ; LINUX-32-STATIC: bat05:
6248 ; LINUX-32-STATIC: movl dptr, %eax
6249 ; LINUX-32-STATIC-NEXT: addl $64, %eax
6250 ; LINUX-32-STATIC-NEXT: ret
6252 ; LINUX-32-PIC: bat05:
6253 ; LINUX-32-PIC: movl dptr, %eax
6254 ; LINUX-32-PIC-NEXT: addl $64, %eax
6255 ; LINUX-32-PIC-NEXT: ret
6257 ; LINUX-64-PIC: bat05:
6258 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
6259 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
6260 ; LINUX-64-PIC-NEXT: addq $64, %rax
6261 ; LINUX-64-PIC-NEXT: ret
6263 ; DARWIN-32-STATIC: _bat05:
6264 ; DARWIN-32-STATIC: movl _dptr, %eax
6265 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
6266 ; DARWIN-32-STATIC-NEXT: ret
6268 ; DARWIN-32-DYNAMIC: _bat05:
6269 ; DARWIN-32-DYNAMIC: movl _dptr, %eax
6270 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
6271 ; DARWIN-32-DYNAMIC-NEXT: ret
6273 ; DARWIN-32-PIC: _bat05:
6274 ; DARWIN-32-PIC: call "L96$pb"
6275 ; DARWIN-32-PIC-NEXT: "L96$pb":
6276 ; DARWIN-32-PIC-NEXT: popl %eax
6277 ; DARWIN-32-PIC-NEXT: movl _dptr-"L96$pb"(%eax), %eax
6278 ; DARWIN-32-PIC-NEXT: addl $64, %eax
6279 ; DARWIN-32-PIC-NEXT: ret
6281 ; DARWIN-64-STATIC: _bat05:
6282 ; DARWIN-64-STATIC: movq _dptr(%rip), %rax
6283 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
6284 ; DARWIN-64-STATIC-NEXT: ret
6286 ; DARWIN-64-DYNAMIC: _bat05:
6287 ; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
6288 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
6289 ; DARWIN-64-DYNAMIC-NEXT: ret
6291 ; DARWIN-64-PIC: _bat05:
6292 ; DARWIN-64-PIC: movq _dptr(%rip), %rax
6293 ; DARWIN-64-PIC-NEXT: addq $64, %rax
6294 ; DARWIN-64-PIC-NEXT: ret
6297 define i8* @bat06() nounwind {
6299 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
6300 ; LINUX-64-STATIC: bat06:
6301 ; LINUX-64-STATIC: movl $lsrc+64, %eax
6302 ; LINUX-64-STATIC: ret
6304 ; LINUX-32-STATIC: bat06:
6305 ; LINUX-32-STATIC: movl $lsrc+64, %eax
6306 ; LINUX-32-STATIC-NEXT: ret
6308 ; LINUX-32-PIC: bat06:
6309 ; LINUX-32-PIC: movl $lsrc+64, %eax
6310 ; LINUX-32-PIC-NEXT: ret
6312 ; LINUX-64-PIC: bat06:
6313 ; LINUX-64-PIC: leaq lsrc+64(%rip), %rax
6314 ; LINUX-64-PIC-NEXT: ret
6316 ; DARWIN-32-STATIC: _bat06:
6317 ; DARWIN-32-STATIC: movl $_lsrc+64, %eax
6318 ; DARWIN-32-STATIC-NEXT: ret
6320 ; DARWIN-32-DYNAMIC: _bat06:
6321 ; DARWIN-32-DYNAMIC: movl $_lsrc+64, %eax
6322 ; DARWIN-32-DYNAMIC-NEXT: ret
6324 ; DARWIN-32-PIC: _bat06:
6325 ; DARWIN-32-PIC: call "L97$pb"
6326 ; DARWIN-32-PIC-NEXT: "L97$pb":
6327 ; DARWIN-32-PIC-NEXT: popl %eax
6328 ; DARWIN-32-PIC-NEXT: leal _lsrc+64-"L97$pb"(%eax), %eax
6329 ; DARWIN-32-PIC-NEXT: ret
6331 ; DARWIN-64-STATIC: _bat06:
6332 ; DARWIN-64-STATIC: leaq _lsrc+64(%rip), %rax
6333 ; DARWIN-64-STATIC-NEXT: ret
6335 ; DARWIN-64-DYNAMIC: _bat06:
6336 ; DARWIN-64-DYNAMIC: leaq _lsrc+64(%rip), %rax
6337 ; DARWIN-64-DYNAMIC-NEXT: ret
6339 ; DARWIN-64-PIC: _bat06:
6340 ; DARWIN-64-PIC: leaq _lsrc+64(%rip), %rax
6341 ; DARWIN-64-PIC-NEXT: ret
6344 define i8* @bat07() nounwind {
6346 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
6347 ; LINUX-64-STATIC: bat07:
6348 ; LINUX-64-STATIC: movl $ldst+64, %eax
6349 ; LINUX-64-STATIC: ret
6351 ; LINUX-32-STATIC: bat07:
6352 ; LINUX-32-STATIC: movl $ldst+64, %eax
6353 ; LINUX-32-STATIC-NEXT: ret
6355 ; LINUX-32-PIC: bat07:
6356 ; LINUX-32-PIC: movl $ldst+64, %eax
6357 ; LINUX-32-PIC-NEXT: ret
6359 ; LINUX-64-PIC: bat07:
6360 ; LINUX-64-PIC: leaq ldst+64(%rip), %rax
6361 ; LINUX-64-PIC-NEXT: ret
6363 ; DARWIN-32-STATIC: _bat07:
6364 ; DARWIN-32-STATIC: movl $_ldst+64, %eax
6365 ; DARWIN-32-STATIC-NEXT: ret
6367 ; DARWIN-32-DYNAMIC: _bat07:
6368 ; DARWIN-32-DYNAMIC: movl $_ldst+64, %eax
6369 ; DARWIN-32-DYNAMIC-NEXT: ret
6371 ; DARWIN-32-PIC: _bat07:
6372 ; DARWIN-32-PIC: call "L98$pb"
6373 ; DARWIN-32-PIC-NEXT: "L98$pb":
6374 ; DARWIN-32-PIC-NEXT: popl %eax
6375 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L98$pb"(%eax), %eax
6376 ; DARWIN-32-PIC-NEXT: ret
6378 ; DARWIN-64-STATIC: _bat07:
6379 ; DARWIN-64-STATIC: leaq _ldst+64(%rip), %rax
6380 ; DARWIN-64-STATIC-NEXT: ret
6382 ; DARWIN-64-DYNAMIC: _bat07:
6383 ; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), %rax
6384 ; DARWIN-64-DYNAMIC-NEXT: ret
6386 ; DARWIN-64-PIC: _bat07:
6387 ; DARWIN-64-PIC: leaq _ldst+64(%rip), %rax
6388 ; DARWIN-64-PIC-NEXT: ret
6391 define i8* @bat08() nounwind {
6393 %0 = load i32** @lptr, align 8
6394 %1 = getelementptr i32* %0, i64 16
6395 %2 = bitcast i32* %1 to i8*
6397 ; LINUX-64-STATIC: bat08:
6398 ; LINUX-64-STATIC: movq lptr(%rip), %rax
6399 ; LINUX-64-STATIC: addq $64, %rax
6400 ; LINUX-64-STATIC: ret
6402 ; LINUX-32-STATIC: bat08:
6403 ; LINUX-32-STATIC: movl lptr, %eax
6404 ; LINUX-32-STATIC-NEXT: addl $64, %eax
6405 ; LINUX-32-STATIC-NEXT: ret
6407 ; LINUX-32-PIC: bat08:
6408 ; LINUX-32-PIC: movl lptr, %eax
6409 ; LINUX-32-PIC-NEXT: addl $64, %eax
6410 ; LINUX-32-PIC-NEXT: ret
6412 ; LINUX-64-PIC: bat08:
6413 ; LINUX-64-PIC: movq lptr(%rip), %rax
6414 ; LINUX-64-PIC-NEXT: addq $64, %rax
6415 ; LINUX-64-PIC-NEXT: ret
6417 ; DARWIN-32-STATIC: _bat08:
6418 ; DARWIN-32-STATIC: movl _lptr, %eax
6419 ; DARWIN-32-STATIC-NEXT: addl $64, %eax
6420 ; DARWIN-32-STATIC-NEXT: ret
6422 ; DARWIN-32-DYNAMIC: _bat08:
6423 ; DARWIN-32-DYNAMIC: movl _lptr, %eax
6424 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
6425 ; DARWIN-32-DYNAMIC-NEXT: ret
6427 ; DARWIN-32-PIC: _bat08:
6428 ; DARWIN-32-PIC: call "L99$pb"
6429 ; DARWIN-32-PIC-NEXT: "L99$pb":
6430 ; DARWIN-32-PIC-NEXT: popl %eax
6431 ; DARWIN-32-PIC-NEXT: movl _lptr-"L99$pb"(%eax), %eax
6432 ; DARWIN-32-PIC-NEXT: addl $64, %eax
6433 ; DARWIN-32-PIC-NEXT: ret
6435 ; DARWIN-64-STATIC: _bat08:
6436 ; DARWIN-64-STATIC: movq _lptr(%rip), %rax
6437 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
6438 ; DARWIN-64-STATIC-NEXT: ret
6440 ; DARWIN-64-DYNAMIC: _bat08:
6441 ; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
6442 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
6443 ; DARWIN-64-DYNAMIC-NEXT: ret
6445 ; DARWIN-64-PIC: _bat08:
6446 ; DARWIN-64-PIC: movq _lptr(%rip), %rax
6447 ; DARWIN-64-PIC-NEXT: addq $64, %rax
6448 ; DARWIN-64-PIC-NEXT: ret
6451 define i8* @bam00() nounwind {
6453 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
6454 ; LINUX-64-STATIC: bam00:
6455 ; LINUX-64-STATIC: movl $src+262144, %eax
6456 ; LINUX-64-STATIC: ret
6458 ; LINUX-32-STATIC: bam00:
6459 ; LINUX-32-STATIC: movl $src+262144, %eax
6460 ; LINUX-32-STATIC-NEXT: ret
6462 ; LINUX-32-PIC: bam00:
6463 ; LINUX-32-PIC: movl $src+262144, %eax
6464 ; LINUX-32-PIC-NEXT: ret
6466 ; LINUX-64-PIC: bam00:
6467 ; LINUX-64-PIC: movl $262144, %eax
6468 ; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax
6469 ; LINUX-64-PIC-NEXT: ret
6471 ; DARWIN-32-STATIC: _bam00:
6472 ; DARWIN-32-STATIC: movl $_src+262144, %eax
6473 ; DARWIN-32-STATIC-NEXT: ret
6475 ; DARWIN-32-DYNAMIC: _bam00:
6476 ; DARWIN-32-DYNAMIC: movl $262144, %eax
6477 ; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax
6478 ; DARWIN-32-DYNAMIC-NEXT: ret
6480 ; DARWIN-32-PIC: _bam00:
6481 ; DARWIN-32-PIC: call "L100$pb"
6482 ; DARWIN-32-PIC-NEXT: "L100$pb":
6483 ; DARWIN-32-PIC-NEXT: popl %ecx
6484 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6485 ; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-"L100$pb"(%ecx), %eax
6486 ; DARWIN-32-PIC-NEXT: ret
6488 ; DARWIN-64-STATIC: _bam00:
6489 ; DARWIN-64-STATIC: movl $262144, %eax
6490 ; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax
6491 ; DARWIN-64-STATIC-NEXT: ret
6493 ; DARWIN-64-DYNAMIC: _bam00:
6494 ; DARWIN-64-DYNAMIC: movl $262144, %eax
6495 ; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax
6496 ; DARWIN-64-DYNAMIC-NEXT: ret
6498 ; DARWIN-64-PIC: _bam00:
6499 ; DARWIN-64-PIC: movl $262144, %eax
6500 ; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax
6501 ; DARWIN-64-PIC-NEXT: ret
6504 define i8* @bam01() nounwind {
6506 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
6507 ; LINUX-64-STATIC: bam01:
6508 ; LINUX-64-STATIC: movl $dst+262144, %eax
6509 ; LINUX-64-STATIC: ret
6511 ; LINUX-32-STATIC: bam01:
6512 ; LINUX-32-STATIC: movl $dst+262144, %eax
6513 ; LINUX-32-STATIC-NEXT: ret
6515 ; LINUX-32-PIC: bam01:
6516 ; LINUX-32-PIC: movl $dst+262144, %eax
6517 ; LINUX-32-PIC-NEXT: ret
6519 ; LINUX-64-PIC: bam01:
6520 ; LINUX-64-PIC: movl $262144, %eax
6521 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
6522 ; LINUX-64-PIC-NEXT: ret
6524 ; DARWIN-32-STATIC: _bam01:
6525 ; DARWIN-32-STATIC: movl $_dst+262144, %eax
6526 ; DARWIN-32-STATIC-NEXT: ret
6528 ; DARWIN-32-DYNAMIC: _bam01:
6529 ; DARWIN-32-DYNAMIC: movl $262144, %eax
6530 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
6531 ; DARWIN-32-DYNAMIC-NEXT: ret
6533 ; DARWIN-32-PIC: _bam01:
6534 ; DARWIN-32-PIC: call "L101$pb"
6535 ; DARWIN-32-PIC-NEXT: "L101$pb":
6536 ; DARWIN-32-PIC-NEXT: popl %ecx
6537 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6538 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-"L101$pb"(%ecx), %eax
6539 ; DARWIN-32-PIC-NEXT: ret
6541 ; DARWIN-64-STATIC: _bam01:
6542 ; DARWIN-64-STATIC: movl $262144, %eax
6543 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
6544 ; DARWIN-64-STATIC-NEXT: ret
6546 ; DARWIN-64-DYNAMIC: _bam01:
6547 ; DARWIN-64-DYNAMIC: movl $262144, %eax
6548 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
6549 ; DARWIN-64-DYNAMIC-NEXT: ret
6551 ; DARWIN-64-PIC: _bam01:
6552 ; DARWIN-64-PIC: movl $262144, %eax
6553 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
6554 ; DARWIN-64-PIC-NEXT: ret
6557 define i8* @bxm01() nounwind {
6559 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
6560 ; LINUX-64-STATIC: bxm01:
6561 ; LINUX-64-STATIC: movl $xdst+262144, %eax
6562 ; LINUX-64-STATIC: ret
6564 ; LINUX-32-STATIC: bxm01:
6565 ; LINUX-32-STATIC: movl $xdst+262144, %eax
6566 ; LINUX-32-STATIC-NEXT: ret
6568 ; LINUX-32-PIC: bxm01:
6569 ; LINUX-32-PIC: movl $xdst+262144, %eax
6570 ; LINUX-32-PIC-NEXT: ret
6572 ; LINUX-64-PIC: bxm01:
6573 ; LINUX-64-PIC: movl $262144, %eax
6574 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax
6575 ; LINUX-64-PIC-NEXT: ret
6577 ; DARWIN-32-STATIC: _bxm01:
6578 ; DARWIN-32-STATIC: movl $_xdst+262144, %eax
6579 ; DARWIN-32-STATIC-NEXT: ret
6581 ; DARWIN-32-DYNAMIC: _bxm01:
6582 ; DARWIN-32-DYNAMIC: movl $262144, %eax
6583 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
6584 ; DARWIN-32-DYNAMIC-NEXT: ret
6586 ; DARWIN-32-PIC: _bxm01:
6587 ; DARWIN-32-PIC: call "L102$pb"
6588 ; DARWIN-32-PIC-NEXT: "L102$pb":
6589 ; DARWIN-32-PIC-NEXT: popl %ecx
6590 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6591 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-"L102$pb"(%ecx), %eax
6592 ; DARWIN-32-PIC-NEXT: ret
6594 ; DARWIN-64-STATIC: _bxm01:
6595 ; DARWIN-64-STATIC: movl $262144, %eax
6596 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
6597 ; DARWIN-64-STATIC-NEXT: ret
6599 ; DARWIN-64-DYNAMIC: _bxm01:
6600 ; DARWIN-64-DYNAMIC: movl $262144, %eax
6601 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
6602 ; DARWIN-64-DYNAMIC-NEXT: ret
6604 ; DARWIN-64-PIC: _bxm01:
6605 ; DARWIN-64-PIC: movl $262144, %eax
6606 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax
6607 ; DARWIN-64-PIC-NEXT: ret
6610 define i8* @bam02() nounwind {
6612 %0 = load i32** @ptr, align 8
6613 %1 = getelementptr i32* %0, i64 65536
6614 %2 = bitcast i32* %1 to i8*
6616 ; LINUX-64-STATIC: bam02:
6617 ; LINUX-64-STATIC: movl $262144, %eax
6618 ; LINUX-64-STATIC: addq ptr(%rip), %rax
6619 ; LINUX-64-STATIC: ret
6621 ; LINUX-32-STATIC: bam02:
6622 ; LINUX-32-STATIC: movl $262144, %eax
6623 ; LINUX-32-STATIC-NEXT: addl ptr, %eax
6624 ; LINUX-32-STATIC-NEXT: ret
6626 ; LINUX-32-PIC: bam02:
6627 ; LINUX-32-PIC: movl $262144, %eax
6628 ; LINUX-32-PIC-NEXT: addl ptr, %eax
6629 ; LINUX-32-PIC-NEXT: ret
6631 ; LINUX-64-PIC: bam02:
6632 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rcx
6633 ; LINUX-64-PIC-NEXT: movl $262144, %eax
6634 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax
6635 ; LINUX-64-PIC-NEXT: ret
6637 ; DARWIN-32-STATIC: _bam02:
6638 ; DARWIN-32-STATIC: movl $262144, %eax
6639 ; DARWIN-32-STATIC-NEXT: addl _ptr, %eax
6640 ; DARWIN-32-STATIC-NEXT: ret
6642 ; DARWIN-32-DYNAMIC: _bam02:
6643 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %ecx
6644 ; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax
6645 ; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax
6646 ; DARWIN-32-DYNAMIC-NEXT: ret
6648 ; DARWIN-32-PIC: _bam02:
6649 ; DARWIN-32-PIC: call "L103$pb"
6650 ; DARWIN-32-PIC-NEXT: "L103$pb":
6651 ; DARWIN-32-PIC-NEXT: popl %eax
6652 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L103$pb"(%eax), %ecx
6653 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6654 ; DARWIN-32-PIC-NEXT: addl (%ecx), %eax
6655 ; DARWIN-32-PIC-NEXT: ret
6657 ; DARWIN-64-STATIC: _bam02:
6658 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rcx
6659 ; DARWIN-64-STATIC-NEXT: movl $262144, %eax
6660 ; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax
6661 ; DARWIN-64-STATIC-NEXT: ret
6663 ; DARWIN-64-DYNAMIC: _bam02:
6664 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rcx
6665 ; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax
6666 ; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax
6667 ; DARWIN-64-DYNAMIC-NEXT: ret
6669 ; DARWIN-64-PIC: _bam02:
6670 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rcx
6671 ; DARWIN-64-PIC-NEXT: movl $262144, %eax
6672 ; DARWIN-64-PIC-NEXT: addq (%rcx), %rax
6673 ; DARWIN-64-PIC-NEXT: ret
6676 define i8* @bam03() nounwind {
6678 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
6679 ; LINUX-64-STATIC: bam03:
6680 ; LINUX-64-STATIC: movl $dsrc+262144, %eax
6681 ; LINUX-64-STATIC: ret
6683 ; LINUX-32-STATIC: bam03:
6684 ; LINUX-32-STATIC: movl $dsrc+262144, %eax
6685 ; LINUX-32-STATIC-NEXT: ret
6687 ; LINUX-32-PIC: bam03:
6688 ; LINUX-32-PIC: movl $dsrc+262144, %eax
6689 ; LINUX-32-PIC-NEXT: ret
6691 ; LINUX-64-PIC: bam03:
6692 ; LINUX-64-PIC: movl $262144, %eax
6693 ; LINUX-64-PIC-NEXT: addq dsrc@GOTPCREL(%rip), %rax
6694 ; LINUX-64-PIC-NEXT: ret
6696 ; DARWIN-32-STATIC: _bam03:
6697 ; DARWIN-32-STATIC: movl $_dsrc+262144, %eax
6698 ; DARWIN-32-STATIC-NEXT: ret
6700 ; DARWIN-32-DYNAMIC: _bam03:
6701 ; DARWIN-32-DYNAMIC: movl $_dsrc+262144, %eax
6702 ; DARWIN-32-DYNAMIC-NEXT: ret
6704 ; DARWIN-32-PIC: _bam03:
6705 ; DARWIN-32-PIC: call "L104$pb"
6706 ; DARWIN-32-PIC-NEXT: "L104$pb":
6707 ; DARWIN-32-PIC-NEXT: popl %eax
6708 ; DARWIN-32-PIC-NEXT: leal _dsrc+262144-"L104$pb"(%eax), %eax
6709 ; DARWIN-32-PIC-NEXT: ret
6711 ; DARWIN-64-STATIC: _bam03:
6712 ; DARWIN-64-STATIC: leaq _dsrc+262144(%rip), %rax
6713 ; DARWIN-64-STATIC-NEXT: ret
6715 ; DARWIN-64-DYNAMIC: _bam03:
6716 ; DARWIN-64-DYNAMIC: leaq _dsrc+262144(%rip), %rax
6717 ; DARWIN-64-DYNAMIC-NEXT: ret
6719 ; DARWIN-64-PIC: _bam03:
6720 ; DARWIN-64-PIC: leaq _dsrc+262144(%rip), %rax
6721 ; DARWIN-64-PIC-NEXT: ret
6724 define i8* @bam04() nounwind {
6726 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
6727 ; LINUX-64-STATIC: bam04:
6728 ; LINUX-64-STATIC: movl $ddst+262144, %eax
6729 ; LINUX-64-STATIC: ret
6731 ; LINUX-32-STATIC: bam04:
6732 ; LINUX-32-STATIC: movl $ddst+262144, %eax
6733 ; LINUX-32-STATIC-NEXT: ret
6735 ; LINUX-32-PIC: bam04:
6736 ; LINUX-32-PIC: movl $ddst+262144, %eax
6737 ; LINUX-32-PIC-NEXT: ret
6739 ; LINUX-64-PIC: bam04:
6740 ; LINUX-64-PIC: movl $262144, %eax
6741 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax
6742 ; LINUX-64-PIC-NEXT: ret
6744 ; DARWIN-32-STATIC: _bam04:
6745 ; DARWIN-32-STATIC: movl $_ddst+262144, %eax
6746 ; DARWIN-32-STATIC-NEXT: ret
6748 ; DARWIN-32-DYNAMIC: _bam04:
6749 ; DARWIN-32-DYNAMIC: movl $_ddst+262144, %eax
6750 ; DARWIN-32-DYNAMIC-NEXT: ret
6752 ; DARWIN-32-PIC: _bam04:
6753 ; DARWIN-32-PIC: call "L105$pb"
6754 ; DARWIN-32-PIC-NEXT: "L105$pb":
6755 ; DARWIN-32-PIC-NEXT: popl %eax
6756 ; DARWIN-32-PIC-NEXT: leal _ddst+262144-"L105$pb"(%eax), %eax
6757 ; DARWIN-32-PIC-NEXT: ret
6759 ; DARWIN-64-STATIC: _bam04:
6760 ; DARWIN-64-STATIC: leaq _ddst+262144(%rip), %rax
6761 ; DARWIN-64-STATIC-NEXT: ret
6763 ; DARWIN-64-DYNAMIC: _bam04:
6764 ; DARWIN-64-DYNAMIC: leaq _ddst+262144(%rip), %rax
6765 ; DARWIN-64-DYNAMIC-NEXT: ret
6767 ; DARWIN-64-PIC: _bam04:
6768 ; DARWIN-64-PIC: leaq _ddst+262144(%rip), %rax
6769 ; DARWIN-64-PIC-NEXT: ret
6772 define i8* @bam05() nounwind {
6774 %0 = load i32** @dptr, align 8
6775 %1 = getelementptr i32* %0, i64 65536
6776 %2 = bitcast i32* %1 to i8*
6778 ; LINUX-64-STATIC: bam05:
6779 ; LINUX-64-STATIC: movl $262144, %eax
6780 ; LINUX-64-STATIC: addq dptr(%rip), %rax
6781 ; LINUX-64-STATIC: ret
6783 ; LINUX-32-STATIC: bam05:
6784 ; LINUX-32-STATIC: movl $262144, %eax
6785 ; LINUX-32-STATIC-NEXT: addl dptr, %eax
6786 ; LINUX-32-STATIC-NEXT: ret
6788 ; LINUX-32-PIC: bam05:
6789 ; LINUX-32-PIC: movl $262144, %eax
6790 ; LINUX-32-PIC-NEXT: addl dptr, %eax
6791 ; LINUX-32-PIC-NEXT: ret
6793 ; LINUX-64-PIC: bam05:
6794 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rcx
6795 ; LINUX-64-PIC-NEXT: movl $262144, %eax
6796 ; LINUX-64-PIC-NEXT: addq (%rcx), %rax
6797 ; LINUX-64-PIC-NEXT: ret
6799 ; DARWIN-32-STATIC: _bam05:
6800 ; DARWIN-32-STATIC: movl $262144, %eax
6801 ; DARWIN-32-STATIC-NEXT: addl _dptr, %eax
6802 ; DARWIN-32-STATIC-NEXT: ret
6804 ; DARWIN-32-DYNAMIC: _bam05:
6805 ; DARWIN-32-DYNAMIC: movl $262144, %eax
6806 ; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax
6807 ; DARWIN-32-DYNAMIC-NEXT: ret
6809 ; DARWIN-32-PIC: _bam05:
6810 ; DARWIN-32-PIC: call "L106$pb"
6811 ; DARWIN-32-PIC-NEXT: "L106$pb":
6812 ; DARWIN-32-PIC-NEXT: popl %ecx
6813 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6814 ; DARWIN-32-PIC-NEXT: addl _dptr-"L106$pb"(%ecx), %eax
6815 ; DARWIN-32-PIC-NEXT: ret
6817 ; DARWIN-64-STATIC: _bam05:
6818 ; DARWIN-64-STATIC: movl $262144, %eax
6819 ; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax
6820 ; DARWIN-64-STATIC-NEXT: ret
6822 ; DARWIN-64-DYNAMIC: _bam05:
6823 ; DARWIN-64-DYNAMIC: movl $262144, %eax
6824 ; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax
6825 ; DARWIN-64-DYNAMIC-NEXT: ret
6827 ; DARWIN-64-PIC: _bam05:
6828 ; DARWIN-64-PIC: movl $262144, %eax
6829 ; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax
6830 ; DARWIN-64-PIC-NEXT: ret
6833 define i8* @bam06() nounwind {
6835 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
6836 ; LINUX-64-STATIC: bam06:
6837 ; LINUX-64-STATIC: movl $lsrc+262144, %eax
6838 ; LINUX-64-STATIC: ret
6840 ; LINUX-32-STATIC: bam06:
6841 ; LINUX-32-STATIC: movl $lsrc+262144, %eax
6842 ; LINUX-32-STATIC-NEXT: ret
6844 ; LINUX-32-PIC: bam06:
6845 ; LINUX-32-PIC: movl $lsrc+262144, %eax
6846 ; LINUX-32-PIC-NEXT: ret
6848 ; LINUX-64-PIC: bam06:
6849 ; LINUX-64-PIC: leaq lsrc+262144(%rip), %rax
6850 ; LINUX-64-PIC-NEXT: ret
6852 ; DARWIN-32-STATIC: _bam06:
6853 ; DARWIN-32-STATIC: movl $_lsrc+262144, %eax
6854 ; DARWIN-32-STATIC-NEXT: ret
6856 ; DARWIN-32-DYNAMIC: _bam06:
6857 ; DARWIN-32-DYNAMIC: movl $_lsrc+262144, %eax
6858 ; DARWIN-32-DYNAMIC-NEXT: ret
6860 ; DARWIN-32-PIC: _bam06:
6861 ; DARWIN-32-PIC: call "L107$pb"
6862 ; DARWIN-32-PIC-NEXT: "L107$pb":
6863 ; DARWIN-32-PIC-NEXT: popl %eax
6864 ; DARWIN-32-PIC-NEXT: leal _lsrc+262144-"L107$pb"(%eax), %eax
6865 ; DARWIN-32-PIC-NEXT: ret
6867 ; DARWIN-64-STATIC: _bam06:
6868 ; DARWIN-64-STATIC: leaq _lsrc+262144(%rip), %rax
6869 ; DARWIN-64-STATIC-NEXT: ret
6871 ; DARWIN-64-DYNAMIC: _bam06:
6872 ; DARWIN-64-DYNAMIC: leaq _lsrc+262144(%rip), %rax
6873 ; DARWIN-64-DYNAMIC-NEXT: ret
6875 ; DARWIN-64-PIC: _bam06:
6876 ; DARWIN-64-PIC: leaq _lsrc+262144(%rip), %rax
6877 ; DARWIN-64-PIC-NEXT: ret
6880 define i8* @bam07() nounwind {
6882 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
6883 ; LINUX-64-STATIC: bam07:
6884 ; LINUX-64-STATIC: movl $ldst+262144, %eax
6885 ; LINUX-64-STATIC: ret
6887 ; LINUX-32-STATIC: bam07:
6888 ; LINUX-32-STATIC: movl $ldst+262144, %eax
6889 ; LINUX-32-STATIC-NEXT: ret
6891 ; LINUX-32-PIC: bam07:
6892 ; LINUX-32-PIC: movl $ldst+262144, %eax
6893 ; LINUX-32-PIC-NEXT: ret
6895 ; LINUX-64-PIC: bam07:
6896 ; LINUX-64-PIC: leaq ldst+262144(%rip), %rax
6897 ; LINUX-64-PIC-NEXT: ret
6899 ; DARWIN-32-STATIC: _bam07:
6900 ; DARWIN-32-STATIC: movl $_ldst+262144, %eax
6901 ; DARWIN-32-STATIC-NEXT: ret
6903 ; DARWIN-32-DYNAMIC: _bam07:
6904 ; DARWIN-32-DYNAMIC: movl $_ldst+262144, %eax
6905 ; DARWIN-32-DYNAMIC-NEXT: ret
6907 ; DARWIN-32-PIC: _bam07:
6908 ; DARWIN-32-PIC: call "L108$pb"
6909 ; DARWIN-32-PIC-NEXT: "L108$pb":
6910 ; DARWIN-32-PIC-NEXT: popl %eax
6911 ; DARWIN-32-PIC-NEXT: leal _ldst+262144-"L108$pb"(%eax), %eax
6912 ; DARWIN-32-PIC-NEXT: ret
6914 ; DARWIN-64-STATIC: _bam07:
6915 ; DARWIN-64-STATIC: leaq _ldst+262144(%rip), %rax
6916 ; DARWIN-64-STATIC-NEXT: ret
6918 ; DARWIN-64-DYNAMIC: _bam07:
6919 ; DARWIN-64-DYNAMIC: leaq _ldst+262144(%rip), %rax
6920 ; DARWIN-64-DYNAMIC-NEXT: ret
6922 ; DARWIN-64-PIC: _bam07:
6923 ; DARWIN-64-PIC: leaq _ldst+262144(%rip), %rax
6924 ; DARWIN-64-PIC-NEXT: ret
6927 define i8* @bam08() nounwind {
6929 %0 = load i32** @lptr, align 8
6930 %1 = getelementptr i32* %0, i64 65536
6931 %2 = bitcast i32* %1 to i8*
6933 ; LINUX-64-STATIC: bam08:
6934 ; LINUX-64-STATIC: movl $262144, %eax
6935 ; LINUX-64-STATIC: addq lptr(%rip), %rax
6936 ; LINUX-64-STATIC: ret
6938 ; LINUX-32-STATIC: bam08:
6939 ; LINUX-32-STATIC: movl $262144, %eax
6940 ; LINUX-32-STATIC-NEXT: addl lptr, %eax
6941 ; LINUX-32-STATIC-NEXT: ret
6943 ; LINUX-32-PIC: bam08:
6944 ; LINUX-32-PIC: movl $262144, %eax
6945 ; LINUX-32-PIC-NEXT: addl lptr, %eax
6946 ; LINUX-32-PIC-NEXT: ret
6948 ; LINUX-64-PIC: bam08:
6949 ; LINUX-64-PIC: movl $262144, %eax
6950 ; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax
6951 ; LINUX-64-PIC-NEXT: ret
6953 ; DARWIN-32-STATIC: _bam08:
6954 ; DARWIN-32-STATIC: movl $262144, %eax
6955 ; DARWIN-32-STATIC-NEXT: addl _lptr, %eax
6956 ; DARWIN-32-STATIC-NEXT: ret
6958 ; DARWIN-32-DYNAMIC: _bam08:
6959 ; DARWIN-32-DYNAMIC: movl $262144, %eax
6960 ; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax
6961 ; DARWIN-32-DYNAMIC-NEXT: ret
6963 ; DARWIN-32-PIC: _bam08:
6964 ; DARWIN-32-PIC: call "L109$pb"
6965 ; DARWIN-32-PIC-NEXT: "L109$pb":
6966 ; DARWIN-32-PIC-NEXT: popl %ecx
6967 ; DARWIN-32-PIC-NEXT: movl $262144, %eax
6968 ; DARWIN-32-PIC-NEXT: addl _lptr-"L109$pb"(%ecx), %eax
6969 ; DARWIN-32-PIC-NEXT: ret
6971 ; DARWIN-64-STATIC: _bam08:
6972 ; DARWIN-64-STATIC: movl $262144, %eax
6973 ; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax
6974 ; DARWIN-64-STATIC-NEXT: ret
6976 ; DARWIN-64-DYNAMIC: _bam08:
6977 ; DARWIN-64-DYNAMIC: movl $262144, %eax
6978 ; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax
6979 ; DARWIN-64-DYNAMIC-NEXT: ret
6981 ; DARWIN-64-PIC: _bam08:
6982 ; DARWIN-64-PIC: movl $262144, %eax
6983 ; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax
6984 ; DARWIN-64-PIC-NEXT: ret
6987 define i8* @cat00(i64 %i) nounwind {
6990 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
6991 %2 = bitcast i32* %1 to i8*
6993 ; LINUX-64-STATIC: cat00:
6994 ; LINUX-64-STATIC: leaq src+64(,%rdi,4), %rax
6995 ; LINUX-64-STATIC: ret
6997 ; LINUX-32-STATIC: cat00:
6998 ; LINUX-32-STATIC: movl 4(%esp), %eax
6999 ; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax
7000 ; LINUX-32-STATIC-NEXT: ret
7002 ; LINUX-32-PIC: cat00:
7003 ; LINUX-32-PIC: movl 4(%esp), %eax
7004 ; LINUX-32-PIC-NEXT: leal src+64(,%eax,4), %eax
7005 ; LINUX-32-PIC-NEXT: ret
7007 ; LINUX-64-PIC: cat00:
7008 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
7009 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7010 ; LINUX-64-PIC-NEXT: ret
7012 ; DARWIN-32-STATIC: _cat00:
7013 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7014 ; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax
7015 ; DARWIN-32-STATIC-NEXT: ret
7017 ; DARWIN-32-DYNAMIC: _cat00:
7018 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7019 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
7020 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7021 ; DARWIN-32-DYNAMIC-NEXT: ret
7023 ; DARWIN-32-PIC: _cat00:
7024 ; DARWIN-32-PIC: call "L110$pb"
7025 ; DARWIN-32-PIC-NEXT: "L110$pb":
7026 ; DARWIN-32-PIC-NEXT: popl %eax
7027 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7028 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L110$pb"(%eax), %eax
7029 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7030 ; DARWIN-32-PIC-NEXT: ret
7032 ; DARWIN-64-STATIC: _cat00:
7033 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
7034 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7035 ; DARWIN-64-STATIC-NEXT: ret
7037 ; DARWIN-64-DYNAMIC: _cat00:
7038 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
7039 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7040 ; DARWIN-64-DYNAMIC-NEXT: ret
7042 ; DARWIN-64-PIC: _cat00:
7043 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
7044 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7045 ; DARWIN-64-PIC-NEXT: ret
7048 define i8* @cxt00(i64 %i) nounwind {
7051 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
7052 %2 = bitcast i32* %1 to i8*
7054 ; LINUX-64-STATIC: cxt00:
7055 ; LINUX-64-STATIC: leaq xsrc+64(,%rdi,4), %rax
7056 ; LINUX-64-STATIC: ret
7058 ; LINUX-32-STATIC: cxt00:
7059 ; LINUX-32-STATIC: movl 4(%esp), %eax
7060 ; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax
7061 ; LINUX-32-STATIC-NEXT: ret
7063 ; LINUX-32-PIC: cxt00:
7064 ; LINUX-32-PIC: movl 4(%esp), %eax
7065 ; LINUX-32-PIC-NEXT: leal xsrc+64(,%eax,4), %eax
7066 ; LINUX-32-PIC-NEXT: ret
7068 ; LINUX-64-PIC: cxt00:
7069 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
7070 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7071 ; LINUX-64-PIC-NEXT: ret
7073 ; DARWIN-32-STATIC: _cxt00:
7074 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7075 ; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax
7076 ; DARWIN-32-STATIC-NEXT: ret
7078 ; DARWIN-32-DYNAMIC: _cxt00:
7079 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7080 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
7081 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7082 ; DARWIN-32-DYNAMIC-NEXT: ret
7084 ; DARWIN-32-PIC: _cxt00:
7085 ; DARWIN-32-PIC: call "L111$pb"
7086 ; DARWIN-32-PIC-NEXT: "L111$pb":
7087 ; DARWIN-32-PIC-NEXT: popl %eax
7088 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7089 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L111$pb"(%eax), %eax
7090 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7091 ; DARWIN-32-PIC-NEXT: ret
7093 ; DARWIN-64-STATIC: _cxt00:
7094 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
7095 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7096 ; DARWIN-64-STATIC-NEXT: ret
7098 ; DARWIN-64-DYNAMIC: _cxt00:
7099 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
7100 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7101 ; DARWIN-64-DYNAMIC-NEXT: ret
7103 ; DARWIN-64-PIC: _cxt00:
7104 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
7105 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7106 ; DARWIN-64-PIC-NEXT: ret
7109 define i8* @cat01(i64 %i) nounwind {
7112 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
7113 %2 = bitcast i32* %1 to i8*
7115 ; LINUX-64-STATIC: cat01:
7116 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax
7117 ; LINUX-64-STATIC: ret
7119 ; LINUX-32-STATIC: cat01:
7120 ; LINUX-32-STATIC: movl 4(%esp), %eax
7121 ; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
7122 ; LINUX-32-STATIC-NEXT: ret
7124 ; LINUX-32-PIC: cat01:
7125 ; LINUX-32-PIC: movl 4(%esp), %eax
7126 ; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax
7127 ; LINUX-32-PIC-NEXT: ret
7129 ; LINUX-64-PIC: cat01:
7130 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
7131 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7132 ; LINUX-64-PIC-NEXT: ret
7134 ; DARWIN-32-STATIC: _cat01:
7135 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7136 ; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
7137 ; DARWIN-32-STATIC-NEXT: ret
7139 ; DARWIN-32-DYNAMIC: _cat01:
7140 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7141 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
7142 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7143 ; DARWIN-32-DYNAMIC-NEXT: ret
7145 ; DARWIN-32-PIC: _cat01:
7146 ; DARWIN-32-PIC: call "L112$pb"
7147 ; DARWIN-32-PIC-NEXT: "L112$pb":
7148 ; DARWIN-32-PIC-NEXT: popl %eax
7149 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7150 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L112$pb"(%eax), %eax
7151 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7152 ; DARWIN-32-PIC-NEXT: ret
7154 ; DARWIN-64-STATIC: _cat01:
7155 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
7156 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7157 ; DARWIN-64-STATIC-NEXT: ret
7159 ; DARWIN-64-DYNAMIC: _cat01:
7160 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
7161 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7162 ; DARWIN-64-DYNAMIC-NEXT: ret
7164 ; DARWIN-64-PIC: _cat01:
7165 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
7166 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7167 ; DARWIN-64-PIC-NEXT: ret
7170 define i8* @cxt01(i64 %i) nounwind {
7173 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
7174 %2 = bitcast i32* %1 to i8*
7176 ; LINUX-64-STATIC: cxt01:
7177 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax
7178 ; LINUX-64-STATIC: ret
7180 ; LINUX-32-STATIC: cxt01:
7181 ; LINUX-32-STATIC: movl 4(%esp), %eax
7182 ; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
7183 ; LINUX-32-STATIC-NEXT: ret
7185 ; LINUX-32-PIC: cxt01:
7186 ; LINUX-32-PIC: movl 4(%esp), %eax
7187 ; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax
7188 ; LINUX-32-PIC-NEXT: ret
7190 ; LINUX-64-PIC: cxt01:
7191 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
7192 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7193 ; LINUX-64-PIC-NEXT: ret
7195 ; DARWIN-32-STATIC: _cxt01:
7196 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7197 ; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
7198 ; DARWIN-32-STATIC-NEXT: ret
7200 ; DARWIN-32-DYNAMIC: _cxt01:
7201 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7202 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
7203 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7204 ; DARWIN-32-DYNAMIC-NEXT: ret
7206 ; DARWIN-32-PIC: _cxt01:
7207 ; DARWIN-32-PIC: call "L113$pb"
7208 ; DARWIN-32-PIC-NEXT: "L113$pb":
7209 ; DARWIN-32-PIC-NEXT: popl %eax
7210 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7211 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L113$pb"(%eax), %eax
7212 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7213 ; DARWIN-32-PIC-NEXT: ret
7215 ; DARWIN-64-STATIC: _cxt01:
7216 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
7217 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7218 ; DARWIN-64-STATIC-NEXT: ret
7220 ; DARWIN-64-DYNAMIC: _cxt01:
7221 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
7222 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7223 ; DARWIN-64-DYNAMIC-NEXT: ret
7225 ; DARWIN-64-PIC: _cxt01:
7226 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
7227 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7228 ; DARWIN-64-PIC-NEXT: ret
7231 define i8* @cat02(i64 %i) nounwind {
7233 %0 = load i32** @ptr, align 8
7235 %2 = getelementptr i32* %0, i64 %1
7236 %3 = bitcast i32* %2 to i8*
7238 ; LINUX-64-STATIC: cat02:
7239 ; LINUX-64-STATIC: movq ptr(%rip), %rax
7240 ; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
7241 ; LINUX-64-STATIC: ret
7243 ; LINUX-32-STATIC: cat02:
7244 ; LINUX-32-STATIC: movl 4(%esp), %eax
7245 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
7246 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7247 ; LINUX-32-STATIC-NEXT: ret
7249 ; LINUX-32-PIC: cat02:
7250 ; LINUX-32-PIC: movl 4(%esp), %eax
7251 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
7252 ; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
7253 ; LINUX-32-PIC-NEXT: ret
7255 ; LINUX-64-PIC: cat02:
7256 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
7257 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7258 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7259 ; LINUX-64-PIC-NEXT: ret
7261 ; DARWIN-32-STATIC: _cat02:
7262 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7263 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
7264 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7265 ; DARWIN-32-STATIC-NEXT: ret
7267 ; DARWIN-32-DYNAMIC: _cat02:
7268 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
7269 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
7270 ; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), %ecx
7271 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax
7272 ; DARWIN-32-DYNAMIC-NEXT: ret
7274 ; DARWIN-32-PIC: _cat02:
7275 ; DARWIN-32-PIC: call "L114$pb"
7276 ; DARWIN-32-PIC-NEXT: "L114$pb":
7277 ; DARWIN-32-PIC-NEXT: popl %eax
7278 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L114$pb"(%eax), %eax
7279 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
7280 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7281 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7282 ; DARWIN-32-PIC-NEXT: ret
7284 ; DARWIN-64-STATIC: _cat02:
7285 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
7286 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
7287 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7288 ; DARWIN-64-STATIC-NEXT: ret
7290 ; DARWIN-64-DYNAMIC: _cat02:
7291 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
7292 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
7293 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7294 ; DARWIN-64-DYNAMIC-NEXT: ret
7296 ; DARWIN-64-PIC: _cat02:
7297 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
7298 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
7299 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7300 ; DARWIN-64-PIC-NEXT: ret
7303 define i8* @cat03(i64 %i) nounwind {
7306 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
7307 %2 = bitcast i32* %1 to i8*
7309 ; LINUX-64-STATIC: cat03:
7310 ; LINUX-64-STATIC: leaq dsrc+64(,%rdi,4), %rax
7311 ; LINUX-64-STATIC: ret
7313 ; LINUX-32-STATIC: cat03:
7314 ; LINUX-32-STATIC: movl 4(%esp), %eax
7315 ; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax
7316 ; LINUX-32-STATIC-NEXT: ret
7318 ; LINUX-32-PIC: cat03:
7319 ; LINUX-32-PIC: movl 4(%esp), %eax
7320 ; LINUX-32-PIC-NEXT: leal dsrc+64(,%eax,4), %eax
7321 ; LINUX-32-PIC-NEXT: ret
7323 ; LINUX-64-PIC: cat03:
7324 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
7325 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7326 ; LINUX-64-PIC-NEXT: ret
7328 ; DARWIN-32-STATIC: _cat03:
7329 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7330 ; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax
7331 ; DARWIN-32-STATIC-NEXT: ret
7333 ; DARWIN-32-DYNAMIC: _cat03:
7334 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7335 ; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax
7336 ; DARWIN-32-DYNAMIC-NEXT: ret
7338 ; DARWIN-32-PIC: _cat03:
7339 ; DARWIN-32-PIC: call "L115$pb"
7340 ; DARWIN-32-PIC-NEXT: "L115$pb":
7341 ; DARWIN-32-PIC-NEXT: popl %eax
7342 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7343 ; DARWIN-32-PIC-NEXT: leal _dsrc+64-"L115$pb"(%eax,%ecx,4), %eax
7344 ; DARWIN-32-PIC-NEXT: ret
7346 ; DARWIN-64-STATIC: _cat03:
7347 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
7348 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7349 ; DARWIN-64-STATIC-NEXT: ret
7351 ; DARWIN-64-DYNAMIC: _cat03:
7352 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
7353 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7354 ; DARWIN-64-DYNAMIC-NEXT: ret
7356 ; DARWIN-64-PIC: _cat03:
7357 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
7358 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7359 ; DARWIN-64-PIC-NEXT: ret
7362 define i8* @cat04(i64 %i) nounwind {
7365 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
7366 %2 = bitcast i32* %1 to i8*
7368 ; LINUX-64-STATIC: cat04:
7369 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax
7370 ; LINUX-64-STATIC: ret
7372 ; LINUX-32-STATIC: cat04:
7373 ; LINUX-32-STATIC: movl 4(%esp), %eax
7374 ; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
7375 ; LINUX-32-STATIC-NEXT: ret
7377 ; LINUX-32-PIC: cat04:
7378 ; LINUX-32-PIC: movl 4(%esp), %eax
7379 ; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax
7380 ; LINUX-32-PIC-NEXT: ret
7382 ; LINUX-64-PIC: cat04:
7383 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
7384 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7385 ; LINUX-64-PIC-NEXT: ret
7387 ; DARWIN-32-STATIC: _cat04:
7388 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7389 ; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
7390 ; DARWIN-32-STATIC-NEXT: ret
7392 ; DARWIN-32-DYNAMIC: _cat04:
7393 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7394 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
7395 ; DARWIN-32-DYNAMIC-NEXT: ret
7397 ; DARWIN-32-PIC: _cat04:
7398 ; DARWIN-32-PIC: call "L116$pb"
7399 ; DARWIN-32-PIC-NEXT: "L116$pb":
7400 ; DARWIN-32-PIC-NEXT: popl %eax
7401 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7402 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L116$pb"(%eax,%ecx,4), %eax
7403 ; DARWIN-32-PIC-NEXT: ret
7405 ; DARWIN-64-STATIC: _cat04:
7406 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
7407 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7408 ; DARWIN-64-STATIC-NEXT: ret
7410 ; DARWIN-64-DYNAMIC: _cat04:
7411 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
7412 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7413 ; DARWIN-64-DYNAMIC-NEXT: ret
7415 ; DARWIN-64-PIC: _cat04:
7416 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
7417 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7418 ; DARWIN-64-PIC-NEXT: ret
7421 define i8* @cat05(i64 %i) nounwind {
7423 %0 = load i32** @dptr, align 8
7425 %2 = getelementptr i32* %0, i64 %1
7426 %3 = bitcast i32* %2 to i8*
7428 ; LINUX-64-STATIC: cat05:
7429 ; LINUX-64-STATIC: movq dptr(%rip), %rax
7430 ; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
7431 ; LINUX-64-STATIC: ret
7433 ; LINUX-32-STATIC: cat05:
7434 ; LINUX-32-STATIC: movl 4(%esp), %eax
7435 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
7436 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7437 ; LINUX-32-STATIC-NEXT: ret
7439 ; LINUX-32-PIC: cat05:
7440 ; LINUX-32-PIC: movl 4(%esp), %eax
7441 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
7442 ; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
7443 ; LINUX-32-PIC-NEXT: ret
7445 ; LINUX-64-PIC: cat05:
7446 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
7447 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7448 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7449 ; LINUX-64-PIC-NEXT: ret
7451 ; DARWIN-32-STATIC: _cat05:
7452 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7453 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
7454 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7455 ; DARWIN-32-STATIC-NEXT: ret
7457 ; DARWIN-32-DYNAMIC: _cat05:
7458 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7459 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
7460 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7461 ; DARWIN-32-DYNAMIC-NEXT: ret
7463 ; DARWIN-32-PIC: _cat05:
7464 ; DARWIN-32-PIC: call "L117$pb"
7465 ; DARWIN-32-PIC-NEXT: "L117$pb":
7466 ; DARWIN-32-PIC-NEXT: popl %eax
7467 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7468 ; DARWIN-32-PIC-NEXT: movl _dptr-"L117$pb"(%eax), %eax
7469 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7470 ; DARWIN-32-PIC-NEXT: ret
7472 ; DARWIN-64-STATIC: _cat05:
7473 ; DARWIN-64-STATIC: movq _dptr(%rip), %rax
7474 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7475 ; DARWIN-64-STATIC-NEXT: ret
7477 ; DARWIN-64-DYNAMIC: _cat05:
7478 ; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
7479 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7480 ; DARWIN-64-DYNAMIC-NEXT: ret
7482 ; DARWIN-64-PIC: _cat05:
7483 ; DARWIN-64-PIC: movq _dptr(%rip), %rax
7484 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7485 ; DARWIN-64-PIC-NEXT: ret
7488 define i8* @cat06(i64 %i) nounwind {
7491 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
7492 %2 = bitcast i32* %1 to i8*
7494 ; LINUX-64-STATIC: cat06:
7495 ; LINUX-64-STATIC: leaq lsrc+64(,%rdi,4), %rax
7496 ; LINUX-64-STATIC: ret
7498 ; LINUX-32-STATIC: cat06:
7499 ; LINUX-32-STATIC: movl 4(%esp), %eax
7500 ; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax
7501 ; LINUX-32-STATIC-NEXT: ret
7503 ; LINUX-32-PIC: cat06:
7504 ; LINUX-32-PIC: movl 4(%esp), %eax
7505 ; LINUX-32-PIC-NEXT: leal lsrc+64(,%eax,4), %eax
7506 ; LINUX-32-PIC-NEXT: ret
7508 ; LINUX-64-PIC: cat06:
7509 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
7510 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7511 ; LINUX-64-PIC-NEXT: ret
7513 ; DARWIN-32-STATIC: _cat06:
7514 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7515 ; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax
7516 ; DARWIN-32-STATIC-NEXT: ret
7518 ; DARWIN-32-DYNAMIC: _cat06:
7519 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7520 ; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax
7521 ; DARWIN-32-DYNAMIC-NEXT: ret
7523 ; DARWIN-32-PIC: _cat06:
7524 ; DARWIN-32-PIC: call "L118$pb"
7525 ; DARWIN-32-PIC-NEXT: "L118$pb":
7526 ; DARWIN-32-PIC-NEXT: popl %eax
7527 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7528 ; DARWIN-32-PIC-NEXT: leal _lsrc+64-"L118$pb"(%eax,%ecx,4), %eax
7529 ; DARWIN-32-PIC-NEXT: ret
7531 ; DARWIN-64-STATIC: _cat06:
7532 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
7533 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7534 ; DARWIN-64-STATIC-NEXT: ret
7536 ; DARWIN-64-DYNAMIC: _cat06:
7537 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
7538 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7539 ; DARWIN-64-DYNAMIC-NEXT: ret
7541 ; DARWIN-64-PIC: _cat06:
7542 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
7543 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7544 ; DARWIN-64-PIC-NEXT: ret
7547 define i8* @cat07(i64 %i) nounwind {
7550 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
7551 %2 = bitcast i32* %1 to i8*
7553 ; LINUX-64-STATIC: cat07:
7554 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax
7555 ; LINUX-64-STATIC: ret
7557 ; LINUX-32-STATIC: cat07:
7558 ; LINUX-32-STATIC: movl 4(%esp), %eax
7559 ; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
7560 ; LINUX-32-STATIC-NEXT: ret
7562 ; LINUX-32-PIC: cat07:
7563 ; LINUX-32-PIC: movl 4(%esp), %eax
7564 ; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax
7565 ; LINUX-32-PIC-NEXT: ret
7567 ; LINUX-64-PIC: cat07:
7568 ; LINUX-64-PIC: leaq ldst(%rip), %rax
7569 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7570 ; LINUX-64-PIC-NEXT: ret
7572 ; DARWIN-32-STATIC: _cat07:
7573 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7574 ; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
7575 ; DARWIN-32-STATIC-NEXT: ret
7577 ; DARWIN-32-DYNAMIC: _cat07:
7578 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7579 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
7580 ; DARWIN-32-DYNAMIC-NEXT: ret
7582 ; DARWIN-32-PIC: _cat07:
7583 ; DARWIN-32-PIC: call "L119$pb"
7584 ; DARWIN-32-PIC-NEXT: "L119$pb":
7585 ; DARWIN-32-PIC-NEXT: popl %eax
7586 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7587 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L119$pb"(%eax,%ecx,4), %eax
7588 ; DARWIN-32-PIC-NEXT: ret
7590 ; DARWIN-64-STATIC: _cat07:
7591 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
7592 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7593 ; DARWIN-64-STATIC-NEXT: ret
7595 ; DARWIN-64-DYNAMIC: _cat07:
7596 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
7597 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7598 ; DARWIN-64-DYNAMIC-NEXT: ret
7600 ; DARWIN-64-PIC: _cat07:
7601 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
7602 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7603 ; DARWIN-64-PIC-NEXT: ret
7606 define i8* @cat08(i64 %i) nounwind {
7608 %0 = load i32** @lptr, align 8
7610 %2 = getelementptr i32* %0, i64 %1
7611 %3 = bitcast i32* %2 to i8*
7613 ; LINUX-64-STATIC: cat08:
7614 ; LINUX-64-STATIC: movq lptr(%rip), %rax
7615 ; LINUX-64-STATIC: leaq 64(%rax,%rdi,4), %rax
7616 ; LINUX-64-STATIC: ret
7618 ; LINUX-32-STATIC: cat08:
7619 ; LINUX-32-STATIC: movl 4(%esp), %eax
7620 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
7621 ; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7622 ; LINUX-32-STATIC-NEXT: ret
7624 ; LINUX-32-PIC: cat08:
7625 ; LINUX-32-PIC: movl 4(%esp), %eax
7626 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
7627 ; LINUX-32-PIC-NEXT: leal 64(%ecx,%eax,4), %eax
7628 ; LINUX-32-PIC-NEXT: ret
7630 ; LINUX-64-PIC: cat08:
7631 ; LINUX-64-PIC: movq lptr(%rip), %rax
7632 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7633 ; LINUX-64-PIC-NEXT: ret
7635 ; DARWIN-32-STATIC: _cat08:
7636 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7637 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
7638 ; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax
7639 ; DARWIN-32-STATIC-NEXT: ret
7641 ; DARWIN-32-DYNAMIC: _cat08:
7642 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7643 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
7644 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
7645 ; DARWIN-32-DYNAMIC-NEXT: ret
7647 ; DARWIN-32-PIC: _cat08:
7648 ; DARWIN-32-PIC: call "L120$pb"
7649 ; DARWIN-32-PIC-NEXT: "L120$pb":
7650 ; DARWIN-32-PIC-NEXT: popl %eax
7651 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7652 ; DARWIN-32-PIC-NEXT: movl _lptr-"L120$pb"(%eax), %eax
7653 ; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax
7654 ; DARWIN-32-PIC-NEXT: ret
7656 ; DARWIN-64-STATIC: _cat08:
7657 ; DARWIN-64-STATIC: movq _lptr(%rip), %rax
7658 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7659 ; DARWIN-64-STATIC-NEXT: ret
7661 ; DARWIN-64-DYNAMIC: _cat08:
7662 ; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
7663 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7664 ; DARWIN-64-DYNAMIC-NEXT: ret
7666 ; DARWIN-64-PIC: _cat08:
7667 ; DARWIN-64-PIC: movq _lptr(%rip), %rax
7668 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
7669 ; DARWIN-64-PIC-NEXT: ret
7672 define i8* @cam00(i64 %i) nounwind {
7674 %0 = add i64 %i, 65536
7675 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
7676 %2 = bitcast i32* %1 to i8*
7678 ; LINUX-64-STATIC: cam00:
7679 ; LINUX-64-STATIC: leaq src+262144(,%rdi,4), %rax
7680 ; LINUX-64-STATIC: ret
7682 ; LINUX-32-STATIC: cam00:
7683 ; LINUX-32-STATIC: movl 4(%esp), %eax
7684 ; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax
7685 ; LINUX-32-STATIC-NEXT: ret
7687 ; LINUX-32-PIC: cam00:
7688 ; LINUX-32-PIC: movl 4(%esp), %eax
7689 ; LINUX-32-PIC-NEXT: leal src+262144(,%eax,4), %eax
7690 ; LINUX-32-PIC-NEXT: ret
7692 ; LINUX-64-PIC: cam00:
7693 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
7694 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7695 ; LINUX-64-PIC-NEXT: ret
7697 ; DARWIN-32-STATIC: _cam00:
7698 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7699 ; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax
7700 ; DARWIN-32-STATIC-NEXT: ret
7702 ; DARWIN-32-DYNAMIC: _cam00:
7703 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7704 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
7705 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7706 ; DARWIN-32-DYNAMIC-NEXT: ret
7708 ; DARWIN-32-PIC: _cam00:
7709 ; DARWIN-32-PIC: call "L121$pb"
7710 ; DARWIN-32-PIC-NEXT: "L121$pb":
7711 ; DARWIN-32-PIC-NEXT: popl %eax
7712 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7713 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L121$pb"(%eax), %eax
7714 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7715 ; DARWIN-32-PIC-NEXT: ret
7717 ; DARWIN-64-STATIC: _cam00:
7718 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
7719 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7720 ; DARWIN-64-STATIC-NEXT: ret
7722 ; DARWIN-64-DYNAMIC: _cam00:
7723 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
7724 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7725 ; DARWIN-64-DYNAMIC-NEXT: ret
7727 ; DARWIN-64-PIC: _cam00:
7728 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
7729 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7730 ; DARWIN-64-PIC-NEXT: ret
7733 define i8* @cxm00(i64 %i) nounwind {
7735 %0 = add i64 %i, 65536
7736 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
7737 %2 = bitcast i32* %1 to i8*
7739 ; LINUX-64-STATIC: cxm00:
7740 ; LINUX-64-STATIC: leaq xsrc+262144(,%rdi,4), %rax
7741 ; LINUX-64-STATIC: ret
7743 ; LINUX-32-STATIC: cxm00:
7744 ; LINUX-32-STATIC: movl 4(%esp), %eax
7745 ; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax
7746 ; LINUX-32-STATIC-NEXT: ret
7748 ; LINUX-32-PIC: cxm00:
7749 ; LINUX-32-PIC: movl 4(%esp), %eax
7750 ; LINUX-32-PIC-NEXT: leal xsrc+262144(,%eax,4), %eax
7751 ; LINUX-32-PIC-NEXT: ret
7753 ; LINUX-64-PIC: cxm00:
7754 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
7755 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7756 ; LINUX-64-PIC-NEXT: ret
7758 ; DARWIN-32-STATIC: _cxm00:
7759 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7760 ; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax
7761 ; DARWIN-32-STATIC-NEXT: ret
7763 ; DARWIN-32-DYNAMIC: _cxm00:
7764 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7765 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
7766 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7767 ; DARWIN-32-DYNAMIC-NEXT: ret
7769 ; DARWIN-32-PIC: _cxm00:
7770 ; DARWIN-32-PIC: call "L122$pb"
7771 ; DARWIN-32-PIC-NEXT: "L122$pb":
7772 ; DARWIN-32-PIC-NEXT: popl %eax
7773 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7774 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L122$pb"(%eax), %eax
7775 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7776 ; DARWIN-32-PIC-NEXT: ret
7778 ; DARWIN-64-STATIC: _cxm00:
7779 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
7780 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7781 ; DARWIN-64-STATIC-NEXT: ret
7783 ; DARWIN-64-DYNAMIC: _cxm00:
7784 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
7785 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7786 ; DARWIN-64-DYNAMIC-NEXT: ret
7788 ; DARWIN-64-PIC: _cxm00:
7789 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
7790 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7791 ; DARWIN-64-PIC-NEXT: ret
7794 define i8* @cam01(i64 %i) nounwind {
7796 %0 = add i64 %i, 65536
7797 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
7798 %2 = bitcast i32* %1 to i8*
7800 ; LINUX-64-STATIC: cam01:
7801 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), %rax
7802 ; LINUX-64-STATIC: ret
7804 ; LINUX-32-STATIC: cam01:
7805 ; LINUX-32-STATIC: movl 4(%esp), %eax
7806 ; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax
7807 ; LINUX-32-STATIC-NEXT: ret
7809 ; LINUX-32-PIC: cam01:
7810 ; LINUX-32-PIC: movl 4(%esp), %eax
7811 ; LINUX-32-PIC-NEXT: leal dst+262144(,%eax,4), %eax
7812 ; LINUX-32-PIC-NEXT: ret
7814 ; LINUX-64-PIC: cam01:
7815 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
7816 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7817 ; LINUX-64-PIC-NEXT: ret
7819 ; DARWIN-32-STATIC: _cam01:
7820 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7821 ; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax
7822 ; DARWIN-32-STATIC-NEXT: ret
7824 ; DARWIN-32-DYNAMIC: _cam01:
7825 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7826 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
7827 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7828 ; DARWIN-32-DYNAMIC-NEXT: ret
7830 ; DARWIN-32-PIC: _cam01:
7831 ; DARWIN-32-PIC: call "L123$pb"
7832 ; DARWIN-32-PIC-NEXT: "L123$pb":
7833 ; DARWIN-32-PIC-NEXT: popl %eax
7834 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7835 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L123$pb"(%eax), %eax
7836 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7837 ; DARWIN-32-PIC-NEXT: ret
7839 ; DARWIN-64-STATIC: _cam01:
7840 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
7841 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7842 ; DARWIN-64-STATIC-NEXT: ret
7844 ; DARWIN-64-DYNAMIC: _cam01:
7845 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
7846 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7847 ; DARWIN-64-DYNAMIC-NEXT: ret
7849 ; DARWIN-64-PIC: _cam01:
7850 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
7851 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7852 ; DARWIN-64-PIC-NEXT: ret
7855 define i8* @cxm01(i64 %i) nounwind {
7857 %0 = add i64 %i, 65536
7858 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
7859 %2 = bitcast i32* %1 to i8*
7861 ; LINUX-64-STATIC: cxm01:
7862 ; LINUX-64-STATIC: leaq xdst+262144(,%rdi,4), %rax
7863 ; LINUX-64-STATIC: ret
7865 ; LINUX-32-STATIC: cxm01:
7866 ; LINUX-32-STATIC: movl 4(%esp), %eax
7867 ; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax
7868 ; LINUX-32-STATIC-NEXT: ret
7870 ; LINUX-32-PIC: cxm01:
7871 ; LINUX-32-PIC: movl 4(%esp), %eax
7872 ; LINUX-32-PIC-NEXT: leal xdst+262144(,%eax,4), %eax
7873 ; LINUX-32-PIC-NEXT: ret
7875 ; LINUX-64-PIC: cxm01:
7876 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
7877 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7878 ; LINUX-64-PIC-NEXT: ret
7880 ; DARWIN-32-STATIC: _cxm01:
7881 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7882 ; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax
7883 ; DARWIN-32-STATIC-NEXT: ret
7885 ; DARWIN-32-DYNAMIC: _cxm01:
7886 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
7887 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
7888 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7889 ; DARWIN-32-DYNAMIC-NEXT: ret
7891 ; DARWIN-32-PIC: _cxm01:
7892 ; DARWIN-32-PIC: call "L124$pb"
7893 ; DARWIN-32-PIC-NEXT: "L124$pb":
7894 ; DARWIN-32-PIC-NEXT: popl %eax
7895 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7896 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L124$pb"(%eax), %eax
7897 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7898 ; DARWIN-32-PIC-NEXT: ret
7900 ; DARWIN-64-STATIC: _cxm01:
7901 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
7902 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7903 ; DARWIN-64-STATIC-NEXT: ret
7905 ; DARWIN-64-DYNAMIC: _cxm01:
7906 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
7907 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7908 ; DARWIN-64-DYNAMIC-NEXT: ret
7910 ; DARWIN-64-PIC: _cxm01:
7911 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
7912 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7913 ; DARWIN-64-PIC-NEXT: ret
7916 define i8* @cam02(i64 %i) nounwind {
7918 %0 = load i32** @ptr, align 8
7919 %1 = add i64 %i, 65536
7920 %2 = getelementptr i32* %0, i64 %1
7921 %3 = bitcast i32* %2 to i8*
7923 ; LINUX-64-STATIC: cam02:
7924 ; LINUX-64-STATIC: movq ptr(%rip), %rax
7925 ; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
7926 ; LINUX-64-STATIC: ret
7928 ; LINUX-32-STATIC: cam02:
7929 ; LINUX-32-STATIC: movl 4(%esp), %eax
7930 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
7931 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7932 ; LINUX-32-STATIC-NEXT: ret
7934 ; LINUX-32-PIC: cam02:
7935 ; LINUX-32-PIC: movl 4(%esp), %eax
7936 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
7937 ; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7938 ; LINUX-32-PIC-NEXT: ret
7940 ; LINUX-64-PIC: cam02:
7941 ; LINUX-64-PIC: movq ptr@GOTPCREL(%rip), %rax
7942 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
7943 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7944 ; LINUX-64-PIC-NEXT: ret
7946 ; DARWIN-32-STATIC: _cam02:
7947 ; DARWIN-32-STATIC: movl 4(%esp), %eax
7948 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
7949 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
7950 ; DARWIN-32-STATIC-NEXT: ret
7952 ; DARWIN-32-DYNAMIC: _cam02:
7953 ; DARWIN-32-DYNAMIC: movl L_ptr$non_lazy_ptr, %eax
7954 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
7955 ; DARWIN-32-DYNAMIC-NEXT: movl 4(%esp), %ecx
7956 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7957 ; DARWIN-32-DYNAMIC-NEXT: ret
7959 ; DARWIN-32-PIC: _cam02:
7960 ; DARWIN-32-PIC: call "L125$pb"
7961 ; DARWIN-32-PIC-NEXT: "L125$pb":
7962 ; DARWIN-32-PIC-NEXT: popl %eax
7963 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L125$pb"(%eax), %eax
7964 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
7965 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
7966 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
7967 ; DARWIN-32-PIC-NEXT: ret
7969 ; DARWIN-64-STATIC: _cam02:
7970 ; DARWIN-64-STATIC: movq _ptr@GOTPCREL(%rip), %rax
7971 ; DARWIN-64-STATIC-NEXT: movq (%rax), %rax
7972 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7973 ; DARWIN-64-STATIC-NEXT: ret
7975 ; DARWIN-64-DYNAMIC: _cam02:
7976 ; DARWIN-64-DYNAMIC: movq _ptr@GOTPCREL(%rip), %rax
7977 ; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax
7978 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7979 ; DARWIN-64-DYNAMIC-NEXT: ret
7981 ; DARWIN-64-PIC: _cam02:
7982 ; DARWIN-64-PIC: movq _ptr@GOTPCREL(%rip), %rax
7983 ; DARWIN-64-PIC-NEXT: movq (%rax), %rax
7984 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
7985 ; DARWIN-64-PIC-NEXT: ret
7988 define i8* @cam03(i64 %i) nounwind {
7990 %0 = add i64 %i, 65536
7991 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
7992 %2 = bitcast i32* %1 to i8*
7994 ; LINUX-64-STATIC: cam03:
7995 ; LINUX-64-STATIC: leaq dsrc+262144(,%rdi,4), %rax
7996 ; LINUX-64-STATIC: ret
7998 ; LINUX-32-STATIC: cam03:
7999 ; LINUX-32-STATIC: movl 4(%esp), %eax
8000 ; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax
8001 ; LINUX-32-STATIC-NEXT: ret
8003 ; LINUX-32-PIC: cam03:
8004 ; LINUX-32-PIC: movl 4(%esp), %eax
8005 ; LINUX-32-PIC-NEXT: leal dsrc+262144(,%eax,4), %eax
8006 ; LINUX-32-PIC-NEXT: ret
8008 ; LINUX-64-PIC: cam03:
8009 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
8010 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8011 ; LINUX-64-PIC-NEXT: ret
8013 ; DARWIN-32-STATIC: _cam03:
8014 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8015 ; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
8016 ; DARWIN-32-STATIC-NEXT: ret
8018 ; DARWIN-32-DYNAMIC: _cam03:
8019 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8020 ; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax
8021 ; DARWIN-32-DYNAMIC-NEXT: ret
8023 ; DARWIN-32-PIC: _cam03:
8024 ; DARWIN-32-PIC: call "L126$pb"
8025 ; DARWIN-32-PIC-NEXT: "L126$pb":
8026 ; DARWIN-32-PIC-NEXT: popl %eax
8027 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8028 ; DARWIN-32-PIC-NEXT: leal _dsrc+262144-"L126$pb"(%eax,%ecx,4), %eax
8029 ; DARWIN-32-PIC-NEXT: ret
8031 ; DARWIN-64-STATIC: _cam03:
8032 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
8033 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8034 ; DARWIN-64-STATIC-NEXT: ret
8036 ; DARWIN-64-DYNAMIC: _cam03:
8037 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
8038 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8039 ; DARWIN-64-DYNAMIC-NEXT: ret
8041 ; DARWIN-64-PIC: _cam03:
8042 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
8043 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8044 ; DARWIN-64-PIC-NEXT: ret
8047 define i8* @cam04(i64 %i) nounwind {
8049 %0 = add i64 %i, 65536
8050 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
8051 %2 = bitcast i32* %1 to i8*
8053 ; LINUX-64-STATIC: cam04:
8054 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), %rax
8055 ; LINUX-64-STATIC: ret
8057 ; LINUX-32-STATIC: cam04:
8058 ; LINUX-32-STATIC: movl 4(%esp), %eax
8059 ; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax
8060 ; LINUX-32-STATIC-NEXT: ret
8062 ; LINUX-32-PIC: cam04:
8063 ; LINUX-32-PIC: movl 4(%esp), %eax
8064 ; LINUX-32-PIC-NEXT: leal ddst+262144(,%eax,4), %eax
8065 ; LINUX-32-PIC-NEXT: ret
8067 ; LINUX-64-PIC: cam04:
8068 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
8069 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8070 ; LINUX-64-PIC-NEXT: ret
8072 ; DARWIN-32-STATIC: _cam04:
8073 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8074 ; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax
8075 ; DARWIN-32-STATIC-NEXT: ret
8077 ; DARWIN-32-DYNAMIC: _cam04:
8078 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8079 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax
8080 ; DARWIN-32-DYNAMIC-NEXT: ret
8082 ; DARWIN-32-PIC: _cam04:
8083 ; DARWIN-32-PIC: call "L127$pb"
8084 ; DARWIN-32-PIC-NEXT: "L127$pb":
8085 ; DARWIN-32-PIC-NEXT: popl %eax
8086 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8087 ; DARWIN-32-PIC-NEXT: leal _ddst+262144-"L127$pb"(%eax,%ecx,4), %eax
8088 ; DARWIN-32-PIC-NEXT: ret
8090 ; DARWIN-64-STATIC: _cam04:
8091 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
8092 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8093 ; DARWIN-64-STATIC-NEXT: ret
8095 ; DARWIN-64-DYNAMIC: _cam04:
8096 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
8097 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8098 ; DARWIN-64-DYNAMIC-NEXT: ret
8100 ; DARWIN-64-PIC: _cam04:
8101 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
8102 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8103 ; DARWIN-64-PIC-NEXT: ret
8106 define i8* @cam05(i64 %i) nounwind {
8108 %0 = load i32** @dptr, align 8
8109 %1 = add i64 %i, 65536
8110 %2 = getelementptr i32* %0, i64 %1
8111 %3 = bitcast i32* %2 to i8*
8113 ; LINUX-64-STATIC: cam05:
8114 ; LINUX-64-STATIC: movq dptr(%rip), %rax
8115 ; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
8116 ; LINUX-64-STATIC: ret
8118 ; LINUX-32-STATIC: cam05:
8119 ; LINUX-32-STATIC: movl 4(%esp), %eax
8120 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
8121 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8122 ; LINUX-32-STATIC-NEXT: ret
8124 ; LINUX-32-PIC: cam05:
8125 ; LINUX-32-PIC: movl 4(%esp), %eax
8126 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
8127 ; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8128 ; LINUX-32-PIC-NEXT: ret
8130 ; LINUX-64-PIC: cam05:
8131 ; LINUX-64-PIC: movq dptr@GOTPCREL(%rip), %rax
8132 ; LINUX-64-PIC-NEXT: movq (%rax), %rax
8133 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8134 ; LINUX-64-PIC-NEXT: ret
8136 ; DARWIN-32-STATIC: _cam05:
8137 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8138 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
8139 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8140 ; DARWIN-32-STATIC-NEXT: ret
8142 ; DARWIN-32-DYNAMIC: _cam05:
8143 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8144 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
8145 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8146 ; DARWIN-32-DYNAMIC-NEXT: ret
8148 ; DARWIN-32-PIC: _cam05:
8149 ; DARWIN-32-PIC: call "L128$pb"
8150 ; DARWIN-32-PIC-NEXT: "L128$pb":
8151 ; DARWIN-32-PIC-NEXT: popl %eax
8152 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8153 ; DARWIN-32-PIC-NEXT: movl _dptr-"L128$pb"(%eax), %eax
8154 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
8155 ; DARWIN-32-PIC-NEXT: ret
8157 ; DARWIN-64-STATIC: _cam05:
8158 ; DARWIN-64-STATIC: movq _dptr(%rip), %rax
8159 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8160 ; DARWIN-64-STATIC-NEXT: ret
8162 ; DARWIN-64-DYNAMIC: _cam05:
8163 ; DARWIN-64-DYNAMIC: movq _dptr(%rip), %rax
8164 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8165 ; DARWIN-64-DYNAMIC-NEXT: ret
8167 ; DARWIN-64-PIC: _cam05:
8168 ; DARWIN-64-PIC: movq _dptr(%rip), %rax
8169 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8170 ; DARWIN-64-PIC-NEXT: ret
8173 define i8* @cam06(i64 %i) nounwind {
8175 %0 = add i64 %i, 65536
8176 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
8177 %2 = bitcast i32* %1 to i8*
8179 ; LINUX-64-STATIC: cam06:
8180 ; LINUX-64-STATIC: leaq lsrc+262144(,%rdi,4), %rax
8181 ; LINUX-64-STATIC: ret
8183 ; LINUX-32-STATIC: cam06:
8184 ; LINUX-32-STATIC: movl 4(%esp), %eax
8185 ; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax
8186 ; LINUX-32-STATIC-NEXT: ret
8188 ; LINUX-32-PIC: cam06:
8189 ; LINUX-32-PIC: movl 4(%esp), %eax
8190 ; LINUX-32-PIC-NEXT: leal lsrc+262144(,%eax,4), %eax
8191 ; LINUX-32-PIC-NEXT: ret
8193 ; LINUX-64-PIC: cam06:
8194 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
8195 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8196 ; LINUX-64-PIC-NEXT: ret
8198 ; DARWIN-32-STATIC: _cam06:
8199 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8200 ; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
8201 ; DARWIN-32-STATIC-NEXT: ret
8203 ; DARWIN-32-DYNAMIC: _cam06:
8204 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8205 ; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax
8206 ; DARWIN-32-DYNAMIC-NEXT: ret
8208 ; DARWIN-32-PIC: _cam06:
8209 ; DARWIN-32-PIC: call "L129$pb"
8210 ; DARWIN-32-PIC-NEXT: "L129$pb":
8211 ; DARWIN-32-PIC-NEXT: popl %eax
8212 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8213 ; DARWIN-32-PIC-NEXT: leal _lsrc+262144-"L129$pb"(%eax,%ecx,4), %eax
8214 ; DARWIN-32-PIC-NEXT: ret
8216 ; DARWIN-64-STATIC: _cam06:
8217 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
8218 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8219 ; DARWIN-64-STATIC-NEXT: ret
8221 ; DARWIN-64-DYNAMIC: _cam06:
8222 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
8223 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8224 ; DARWIN-64-DYNAMIC-NEXT: ret
8226 ; DARWIN-64-PIC: _cam06:
8227 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
8228 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8229 ; DARWIN-64-PIC-NEXT: ret
8232 define i8* @cam07(i64 %i) nounwind {
8234 %0 = add i64 %i, 65536
8235 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
8236 %2 = bitcast i32* %1 to i8*
8238 ; LINUX-64-STATIC: cam07:
8239 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), %rax
8240 ; LINUX-64-STATIC: ret
8242 ; LINUX-32-STATIC: cam07:
8243 ; LINUX-32-STATIC: movl 4(%esp), %eax
8244 ; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax
8245 ; LINUX-32-STATIC-NEXT: ret
8247 ; LINUX-32-PIC: cam07:
8248 ; LINUX-32-PIC: movl 4(%esp), %eax
8249 ; LINUX-32-PIC-NEXT: leal ldst+262144(,%eax,4), %eax
8250 ; LINUX-32-PIC-NEXT: ret
8252 ; LINUX-64-PIC: cam07:
8253 ; LINUX-64-PIC: leaq ldst(%rip), %rax
8254 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8255 ; LINUX-64-PIC-NEXT: ret
8257 ; DARWIN-32-STATIC: _cam07:
8258 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8259 ; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax
8260 ; DARWIN-32-STATIC-NEXT: ret
8262 ; DARWIN-32-DYNAMIC: _cam07:
8263 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8264 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax
8265 ; DARWIN-32-DYNAMIC-NEXT: ret
8267 ; DARWIN-32-PIC: _cam07:
8268 ; DARWIN-32-PIC: call "L130$pb"
8269 ; DARWIN-32-PIC-NEXT: "L130$pb":
8270 ; DARWIN-32-PIC-NEXT: popl %eax
8271 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8272 ; DARWIN-32-PIC-NEXT: leal _ldst+262144-"L130$pb"(%eax,%ecx,4), %eax
8273 ; DARWIN-32-PIC-NEXT: ret
8275 ; DARWIN-64-STATIC: _cam07:
8276 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
8277 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8278 ; DARWIN-64-STATIC-NEXT: ret
8280 ; DARWIN-64-DYNAMIC: _cam07:
8281 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
8282 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8283 ; DARWIN-64-DYNAMIC-NEXT: ret
8285 ; DARWIN-64-PIC: _cam07:
8286 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
8287 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8288 ; DARWIN-64-PIC-NEXT: ret
8291 define i8* @cam08(i64 %i) nounwind {
8293 %0 = load i32** @lptr, align 8
8294 %1 = add i64 %i, 65536
8295 %2 = getelementptr i32* %0, i64 %1
8296 %3 = bitcast i32* %2 to i8*
8298 ; LINUX-64-STATIC: cam08:
8299 ; LINUX-64-STATIC: movq lptr(%rip), %rax
8300 ; LINUX-64-STATIC: leaq 262144(%rax,%rdi,4), %rax
8301 ; LINUX-64-STATIC: ret
8303 ; LINUX-32-STATIC: cam08:
8304 ; LINUX-32-STATIC: movl 4(%esp), %eax
8305 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
8306 ; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8307 ; LINUX-32-STATIC-NEXT: ret
8309 ; LINUX-32-PIC: cam08:
8310 ; LINUX-32-PIC: movl 4(%esp), %eax
8311 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
8312 ; LINUX-32-PIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8313 ; LINUX-32-PIC-NEXT: ret
8315 ; LINUX-64-PIC: cam08:
8316 ; LINUX-64-PIC: movq lptr(%rip), %rax
8317 ; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8318 ; LINUX-64-PIC-NEXT: ret
8320 ; DARWIN-32-STATIC: _cam08:
8321 ; DARWIN-32-STATIC: movl 4(%esp), %eax
8322 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
8323 ; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8324 ; DARWIN-32-STATIC-NEXT: ret
8326 ; DARWIN-32-DYNAMIC: _cam08:
8327 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
8328 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
8329 ; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax
8330 ; DARWIN-32-DYNAMIC-NEXT: ret
8332 ; DARWIN-32-PIC: _cam08:
8333 ; DARWIN-32-PIC: call "L131$pb"
8334 ; DARWIN-32-PIC-NEXT: "L131$pb":
8335 ; DARWIN-32-PIC-NEXT: popl %eax
8336 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
8337 ; DARWIN-32-PIC-NEXT: movl _lptr-"L131$pb"(%eax), %eax
8338 ; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax
8339 ; DARWIN-32-PIC-NEXT: ret
8341 ; DARWIN-64-STATIC: _cam08:
8342 ; DARWIN-64-STATIC: movq _lptr(%rip), %rax
8343 ; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8344 ; DARWIN-64-STATIC-NEXT: ret
8346 ; DARWIN-64-DYNAMIC: _cam08:
8347 ; DARWIN-64-DYNAMIC: movq _lptr(%rip), %rax
8348 ; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8349 ; DARWIN-64-DYNAMIC-NEXT: ret
8351 ; DARWIN-64-PIC: _cam08:
8352 ; DARWIN-64-PIC: movq _lptr(%rip), %rax
8353 ; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax
8354 ; DARWIN-64-PIC-NEXT: ret
8357 define void @lcallee() nounwind {
8359 tail call void @x() nounwind
8360 tail call void @x() nounwind
8361 tail call void @x() nounwind
8362 tail call void @x() nounwind
8363 tail call void @x() nounwind
8364 tail call void @x() nounwind
8365 tail call void @x() nounwind
8367 ; LINUX-64-STATIC: lcallee:
8368 ; LINUX-64-STATIC: call x
8369 ; LINUX-64-STATIC: call x
8370 ; LINUX-64-STATIC: call x
8371 ; LINUX-64-STATIC: call x
8372 ; LINUX-64-STATIC: call x
8373 ; LINUX-64-STATIC: call x
8374 ; LINUX-64-STATIC: call x
8375 ; LINUX-64-STATIC: ret
8377 ; LINUX-32-STATIC: lcallee:
8378 ; LINUX-32-STATIC: subl $4, %esp
8379 ; LINUX-32-STATIC-NEXT: call x
8380 ; LINUX-32-STATIC-NEXT: call x
8381 ; LINUX-32-STATIC-NEXT: call x
8382 ; LINUX-32-STATIC-NEXT: call x
8383 ; LINUX-32-STATIC-NEXT: call x
8384 ; LINUX-32-STATIC-NEXT: call x
8385 ; LINUX-32-STATIC-NEXT: call x
8386 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8387 ; LINUX-32-STATIC-NEXT: ret
8389 ; LINUX-32-PIC: lcallee:
8390 ; LINUX-32-PIC: subl $4, %esp
8391 ; LINUX-32-PIC-NEXT: call x
8392 ; LINUX-32-PIC-NEXT: call x
8393 ; LINUX-32-PIC-NEXT: call x
8394 ; LINUX-32-PIC-NEXT: call x
8395 ; LINUX-32-PIC-NEXT: call x
8396 ; LINUX-32-PIC-NEXT: call x
8397 ; LINUX-32-PIC-NEXT: call x
8398 ; LINUX-32-PIC-NEXT: addl $4, %esp
8399 ; LINUX-32-PIC-NEXT: ret
8401 ; LINUX-64-PIC: lcallee:
8402 ; LINUX-64-PIC: subq $8, %rsp
8403 ; LINUX-64-PIC-NEXT: call x@PLT
8404 ; LINUX-64-PIC-NEXT: call x@PLT
8405 ; LINUX-64-PIC-NEXT: call x@PLT
8406 ; LINUX-64-PIC-NEXT: call x@PLT
8407 ; LINUX-64-PIC-NEXT: call x@PLT
8408 ; LINUX-64-PIC-NEXT: call x@PLT
8409 ; LINUX-64-PIC-NEXT: call x@PLT
8410 ; LINUX-64-PIC-NEXT: addq $8, %rsp
8411 ; LINUX-64-PIC-NEXT: ret
8413 ; DARWIN-32-STATIC: _lcallee:
8414 ; DARWIN-32-STATIC: subl $12, %esp
8415 ; DARWIN-32-STATIC-NEXT: call _x
8416 ; DARWIN-32-STATIC-NEXT: call _x
8417 ; DARWIN-32-STATIC-NEXT: call _x
8418 ; DARWIN-32-STATIC-NEXT: call _x
8419 ; DARWIN-32-STATIC-NEXT: call _x
8420 ; DARWIN-32-STATIC-NEXT: call _x
8421 ; DARWIN-32-STATIC-NEXT: call _x
8422 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
8423 ; DARWIN-32-STATIC-NEXT: ret
8425 ; DARWIN-32-DYNAMIC: _lcallee:
8426 ; DARWIN-32-DYNAMIC: subl $12, %esp
8427 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8428 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8429 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8430 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8431 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8432 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8433 ; DARWIN-32-DYNAMIC-NEXT: call L_x$stub
8434 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
8435 ; DARWIN-32-DYNAMIC-NEXT: ret
8437 ; DARWIN-32-PIC: _lcallee:
8438 ; DARWIN-32-PIC: subl $12, %esp
8439 ; DARWIN-32-PIC-NEXT: call L_x$stub
8440 ; DARWIN-32-PIC-NEXT: call L_x$stub
8441 ; DARWIN-32-PIC-NEXT: call L_x$stub
8442 ; DARWIN-32-PIC-NEXT: call L_x$stub
8443 ; DARWIN-32-PIC-NEXT: call L_x$stub
8444 ; DARWIN-32-PIC-NEXT: call L_x$stub
8445 ; DARWIN-32-PIC-NEXT: call L_x$stub
8446 ; DARWIN-32-PIC-NEXT: addl $12, %esp
8447 ; DARWIN-32-PIC-NEXT: ret
8449 ; DARWIN-64-STATIC: _lcallee:
8450 ; DARWIN-64-STATIC: subq $8, %rsp
8451 ; DARWIN-64-STATIC-NEXT: call _x
8452 ; DARWIN-64-STATIC-NEXT: call _x
8453 ; DARWIN-64-STATIC-NEXT: call _x
8454 ; DARWIN-64-STATIC-NEXT: call _x
8455 ; DARWIN-64-STATIC-NEXT: call _x
8456 ; DARWIN-64-STATIC-NEXT: call _x
8457 ; DARWIN-64-STATIC-NEXT: call _x
8458 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
8459 ; DARWIN-64-STATIC-NEXT: ret
8461 ; DARWIN-64-DYNAMIC: _lcallee:
8462 ; DARWIN-64-DYNAMIC: subq $8, %rsp
8463 ; DARWIN-64-DYNAMIC-NEXT: call _x
8464 ; DARWIN-64-DYNAMIC-NEXT: call _x
8465 ; DARWIN-64-DYNAMIC-NEXT: call _x
8466 ; DARWIN-64-DYNAMIC-NEXT: call _x
8467 ; DARWIN-64-DYNAMIC-NEXT: call _x
8468 ; DARWIN-64-DYNAMIC-NEXT: call _x
8469 ; DARWIN-64-DYNAMIC-NEXT: call _x
8470 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
8471 ; DARWIN-64-DYNAMIC-NEXT: ret
8473 ; DARWIN-64-PIC: _lcallee:
8474 ; DARWIN-64-PIC: subq $8, %rsp
8475 ; DARWIN-64-PIC-NEXT: call _x
8476 ; DARWIN-64-PIC-NEXT: call _x
8477 ; DARWIN-64-PIC-NEXT: call _x
8478 ; DARWIN-64-PIC-NEXT: call _x
8479 ; DARWIN-64-PIC-NEXT: call _x
8480 ; DARWIN-64-PIC-NEXT: call _x
8481 ; DARWIN-64-PIC-NEXT: call _x
8482 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
8483 ; DARWIN-64-PIC-NEXT: ret
8488 define internal void @dcallee() nounwind {
8490 tail call void @y() nounwind
8491 tail call void @y() nounwind
8492 tail call void @y() nounwind
8493 tail call void @y() nounwind
8494 tail call void @y() nounwind
8495 tail call void @y() nounwind
8496 tail call void @y() nounwind
8498 ; LINUX-64-STATIC: dcallee:
8499 ; LINUX-64-STATIC: call y
8500 ; LINUX-64-STATIC: call y
8501 ; LINUX-64-STATIC: call y
8502 ; LINUX-64-STATIC: call y
8503 ; LINUX-64-STATIC: call y
8504 ; LINUX-64-STATIC: call y
8505 ; LINUX-64-STATIC: call y
8506 ; LINUX-64-STATIC: ret
8508 ; LINUX-32-STATIC: dcallee:
8509 ; LINUX-32-STATIC: subl $4, %esp
8510 ; LINUX-32-STATIC-NEXT: call y
8511 ; LINUX-32-STATIC-NEXT: call y
8512 ; LINUX-32-STATIC-NEXT: call y
8513 ; LINUX-32-STATIC-NEXT: call y
8514 ; LINUX-32-STATIC-NEXT: call y
8515 ; LINUX-32-STATIC-NEXT: call y
8516 ; LINUX-32-STATIC-NEXT: call y
8517 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8518 ; LINUX-32-STATIC-NEXT: ret
8520 ; LINUX-32-PIC: dcallee:
8521 ; LINUX-32-PIC: subl $4, %esp
8522 ; LINUX-32-PIC-NEXT: call y
8523 ; LINUX-32-PIC-NEXT: call y
8524 ; LINUX-32-PIC-NEXT: call y
8525 ; LINUX-32-PIC-NEXT: call y
8526 ; LINUX-32-PIC-NEXT: call y
8527 ; LINUX-32-PIC-NEXT: call y
8528 ; LINUX-32-PIC-NEXT: call y
8529 ; LINUX-32-PIC-NEXT: addl $4, %esp
8530 ; LINUX-32-PIC-NEXT: ret
8532 ; LINUX-64-PIC: dcallee:
8533 ; LINUX-64-PIC: subq $8, %rsp
8534 ; LINUX-64-PIC-NEXT: call y@PLT
8535 ; LINUX-64-PIC-NEXT: call y@PLT
8536 ; LINUX-64-PIC-NEXT: call y@PLT
8537 ; LINUX-64-PIC-NEXT: call y@PLT
8538 ; LINUX-64-PIC-NEXT: call y@PLT
8539 ; LINUX-64-PIC-NEXT: call y@PLT
8540 ; LINUX-64-PIC-NEXT: call y@PLT
8541 ; LINUX-64-PIC-NEXT: addq $8, %rsp
8542 ; LINUX-64-PIC-NEXT: ret
8544 ; DARWIN-32-STATIC: _dcallee:
8545 ; DARWIN-32-STATIC: subl $12, %esp
8546 ; DARWIN-32-STATIC-NEXT: call _y
8547 ; DARWIN-32-STATIC-NEXT: call _y
8548 ; DARWIN-32-STATIC-NEXT: call _y
8549 ; DARWIN-32-STATIC-NEXT: call _y
8550 ; DARWIN-32-STATIC-NEXT: call _y
8551 ; DARWIN-32-STATIC-NEXT: call _y
8552 ; DARWIN-32-STATIC-NEXT: call _y
8553 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
8554 ; DARWIN-32-STATIC-NEXT: ret
8556 ; DARWIN-32-DYNAMIC: _dcallee:
8557 ; DARWIN-32-DYNAMIC: subl $12, %esp
8558 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8559 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8560 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8561 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8562 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8563 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8564 ; DARWIN-32-DYNAMIC-NEXT: call L_y$stub
8565 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
8566 ; DARWIN-32-DYNAMIC-NEXT: ret
8568 ; DARWIN-32-PIC: _dcallee:
8569 ; DARWIN-32-PIC: subl $12, %esp
8570 ; DARWIN-32-PIC-NEXT: call L_y$stub
8571 ; DARWIN-32-PIC-NEXT: call L_y$stub
8572 ; DARWIN-32-PIC-NEXT: call L_y$stub
8573 ; DARWIN-32-PIC-NEXT: call L_y$stub
8574 ; DARWIN-32-PIC-NEXT: call L_y$stub
8575 ; DARWIN-32-PIC-NEXT: call L_y$stub
8576 ; DARWIN-32-PIC-NEXT: call L_y$stub
8577 ; DARWIN-32-PIC-NEXT: addl $12, %esp
8578 ; DARWIN-32-PIC-NEXT: ret
8580 ; DARWIN-64-STATIC: _dcallee:
8581 ; DARWIN-64-STATIC: subq $8, %rsp
8582 ; DARWIN-64-STATIC-NEXT: call _y
8583 ; DARWIN-64-STATIC-NEXT: call _y
8584 ; DARWIN-64-STATIC-NEXT: call _y
8585 ; DARWIN-64-STATIC-NEXT: call _y
8586 ; DARWIN-64-STATIC-NEXT: call _y
8587 ; DARWIN-64-STATIC-NEXT: call _y
8588 ; DARWIN-64-STATIC-NEXT: call _y
8589 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
8590 ; DARWIN-64-STATIC-NEXT: ret
8592 ; DARWIN-64-DYNAMIC: _dcallee:
8593 ; DARWIN-64-DYNAMIC: subq $8, %rsp
8594 ; DARWIN-64-DYNAMIC-NEXT: call _y
8595 ; DARWIN-64-DYNAMIC-NEXT: call _y
8596 ; DARWIN-64-DYNAMIC-NEXT: call _y
8597 ; DARWIN-64-DYNAMIC-NEXT: call _y
8598 ; DARWIN-64-DYNAMIC-NEXT: call _y
8599 ; DARWIN-64-DYNAMIC-NEXT: call _y
8600 ; DARWIN-64-DYNAMIC-NEXT: call _y
8601 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
8602 ; DARWIN-64-DYNAMIC-NEXT: ret
8604 ; DARWIN-64-PIC: _dcallee:
8605 ; DARWIN-64-PIC: subq $8, %rsp
8606 ; DARWIN-64-PIC-NEXT: call _y
8607 ; DARWIN-64-PIC-NEXT: call _y
8608 ; DARWIN-64-PIC-NEXT: call _y
8609 ; DARWIN-64-PIC-NEXT: call _y
8610 ; DARWIN-64-PIC-NEXT: call _y
8611 ; DARWIN-64-PIC-NEXT: call _y
8612 ; DARWIN-64-PIC-NEXT: call _y
8613 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
8614 ; DARWIN-64-PIC-NEXT: ret
8619 define void ()* @address() nounwind {
8621 ret void ()* @callee
8622 ; LINUX-64-STATIC: address:
8623 ; LINUX-64-STATIC: movl $callee, %eax
8624 ; LINUX-64-STATIC: ret
8626 ; LINUX-32-STATIC: address:
8627 ; LINUX-32-STATIC: movl $callee, %eax
8628 ; LINUX-32-STATIC-NEXT: ret
8630 ; LINUX-32-PIC: address:
8631 ; LINUX-32-PIC: movl $callee, %eax
8632 ; LINUX-32-PIC-NEXT: ret
8634 ; LINUX-64-PIC: address:
8635 ; LINUX-64-PIC: movq callee@GOTPCREL(%rip), %rax
8636 ; LINUX-64-PIC-NEXT: ret
8638 ; DARWIN-32-STATIC: _address:
8639 ; DARWIN-32-STATIC: movl $_callee, %eax
8640 ; DARWIN-32-STATIC-NEXT: ret
8642 ; DARWIN-32-DYNAMIC: _address:
8643 ; DARWIN-32-DYNAMIC: movl L_callee$non_lazy_ptr, %eax
8644 ; DARWIN-32-DYNAMIC-NEXT: ret
8646 ; DARWIN-32-PIC: _address:
8647 ; DARWIN-32-PIC: call "L134$pb"
8648 ; DARWIN-32-PIC-NEXT: "L134$pb":
8649 ; DARWIN-32-PIC-NEXT: popl %eax
8650 ; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-"L134$pb"(%eax), %eax
8651 ; DARWIN-32-PIC-NEXT: ret
8653 ; DARWIN-64-STATIC: _address:
8654 ; DARWIN-64-STATIC: movq _callee@GOTPCREL(%rip), %rax
8655 ; DARWIN-64-STATIC-NEXT: ret
8657 ; DARWIN-64-DYNAMIC: _address:
8658 ; DARWIN-64-DYNAMIC: movq _callee@GOTPCREL(%rip), %rax
8659 ; DARWIN-64-DYNAMIC-NEXT: ret
8661 ; DARWIN-64-PIC: _address:
8662 ; DARWIN-64-PIC: movq _callee@GOTPCREL(%rip), %rax
8663 ; DARWIN-64-PIC-NEXT: ret
8666 declare void @callee()
8668 define void ()* @laddress() nounwind {
8670 ret void ()* @lcallee
8671 ; LINUX-64-STATIC: laddress:
8672 ; LINUX-64-STATIC: movl $lcallee, %eax
8673 ; LINUX-64-STATIC: ret
8675 ; LINUX-32-STATIC: laddress:
8676 ; LINUX-32-STATIC: movl $lcallee, %eax
8677 ; LINUX-32-STATIC-NEXT: ret
8679 ; LINUX-32-PIC: laddress:
8680 ; LINUX-32-PIC: movl $lcallee, %eax
8681 ; LINUX-32-PIC-NEXT: ret
8683 ; LINUX-64-PIC: laddress:
8684 ; LINUX-64-PIC: movq lcallee@GOTPCREL(%rip), %rax
8685 ; LINUX-64-PIC-NEXT: ret
8687 ; DARWIN-32-STATIC: _laddress:
8688 ; DARWIN-32-STATIC: movl $_lcallee, %eax
8689 ; DARWIN-32-STATIC-NEXT: ret
8691 ; DARWIN-32-DYNAMIC: _laddress:
8692 ; DARWIN-32-DYNAMIC: movl $_lcallee, %eax
8693 ; DARWIN-32-DYNAMIC-NEXT: ret
8695 ; DARWIN-32-PIC: _laddress:
8696 ; DARWIN-32-PIC: call "L135$pb"
8697 ; DARWIN-32-PIC-NEXT: "L135$pb":
8698 ; DARWIN-32-PIC-NEXT: popl %eax
8699 ; DARWIN-32-PIC-NEXT: leal _lcallee-"L135$pb"(%eax), %eax
8700 ; DARWIN-32-PIC-NEXT: ret
8702 ; DARWIN-64-STATIC: _laddress:
8703 ; DARWIN-64-STATIC: leaq _lcallee(%rip), %rax
8704 ; DARWIN-64-STATIC-NEXT: ret
8706 ; DARWIN-64-DYNAMIC: _laddress:
8707 ; DARWIN-64-DYNAMIC: leaq _lcallee(%rip), %rax
8708 ; DARWIN-64-DYNAMIC-NEXT: ret
8710 ; DARWIN-64-PIC: _laddress:
8711 ; DARWIN-64-PIC: leaq _lcallee(%rip), %rax
8712 ; DARWIN-64-PIC-NEXT: ret
8715 define void ()* @daddress() nounwind {
8717 ret void ()* @dcallee
8718 ; LINUX-64-STATIC: daddress:
8719 ; LINUX-64-STATIC: movl $dcallee, %eax
8720 ; LINUX-64-STATIC: ret
8722 ; LINUX-32-STATIC: daddress:
8723 ; LINUX-32-STATIC: movl $dcallee, %eax
8724 ; LINUX-32-STATIC-NEXT: ret
8726 ; LINUX-32-PIC: daddress:
8727 ; LINUX-32-PIC: movl $dcallee, %eax
8728 ; LINUX-32-PIC-NEXT: ret
8730 ; LINUX-64-PIC: daddress:
8731 ; LINUX-64-PIC: leaq dcallee(%rip), %rax
8732 ; LINUX-64-PIC-NEXT: ret
8734 ; DARWIN-32-STATIC: _daddress:
8735 ; DARWIN-32-STATIC: movl $_dcallee, %eax
8736 ; DARWIN-32-STATIC-NEXT: ret
8738 ; DARWIN-32-DYNAMIC: _daddress:
8739 ; DARWIN-32-DYNAMIC: movl $_dcallee, %eax
8740 ; DARWIN-32-DYNAMIC-NEXT: ret
8742 ; DARWIN-32-PIC: _daddress:
8743 ; DARWIN-32-PIC: call "L136$pb"
8744 ; DARWIN-32-PIC-NEXT: "L136$pb":
8745 ; DARWIN-32-PIC-NEXT: popl %eax
8746 ; DARWIN-32-PIC-NEXT: leal _dcallee-"L136$pb"(%eax), %eax
8747 ; DARWIN-32-PIC-NEXT: ret
8749 ; DARWIN-64-STATIC: _daddress:
8750 ; DARWIN-64-STATIC: leaq _dcallee(%rip), %rax
8751 ; DARWIN-64-STATIC-NEXT: ret
8753 ; DARWIN-64-DYNAMIC: _daddress:
8754 ; DARWIN-64-DYNAMIC: leaq _dcallee(%rip), %rax
8755 ; DARWIN-64-DYNAMIC-NEXT: ret
8757 ; DARWIN-64-PIC: _daddress:
8758 ; DARWIN-64-PIC: leaq _dcallee(%rip), %rax
8759 ; DARWIN-64-PIC-NEXT: ret
8762 define void @caller() nounwind {
8764 tail call void @callee() nounwind
8765 tail call void @callee() nounwind
8767 ; LINUX-64-STATIC: caller:
8768 ; LINUX-64-STATIC: call callee
8769 ; LINUX-64-STATIC: call callee
8770 ; LINUX-64-STATIC: ret
8772 ; LINUX-32-STATIC: caller:
8773 ; LINUX-32-STATIC: subl $4, %esp
8774 ; LINUX-32-STATIC-NEXT: call callee
8775 ; LINUX-32-STATIC-NEXT: call callee
8776 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8777 ; LINUX-32-STATIC-NEXT: ret
8779 ; LINUX-32-PIC: caller:
8780 ; LINUX-32-PIC: subl $4, %esp
8781 ; LINUX-32-PIC-NEXT: call callee
8782 ; LINUX-32-PIC-NEXT: call callee
8783 ; LINUX-32-PIC-NEXT: addl $4, %esp
8784 ; LINUX-32-PIC-NEXT: ret
8786 ; LINUX-64-PIC: caller:
8787 ; LINUX-64-PIC: subq $8, %rsp
8788 ; LINUX-64-PIC-NEXT: call callee@PLT
8789 ; LINUX-64-PIC-NEXT: call callee@PLT
8790 ; LINUX-64-PIC-NEXT: addq $8, %rsp
8791 ; LINUX-64-PIC-NEXT: ret
8793 ; DARWIN-32-STATIC: _caller:
8794 ; DARWIN-32-STATIC: subl $12, %esp
8795 ; DARWIN-32-STATIC-NEXT: call _callee
8796 ; DARWIN-32-STATIC-NEXT: call _callee
8797 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
8798 ; DARWIN-32-STATIC-NEXT: ret
8800 ; DARWIN-32-DYNAMIC: _caller:
8801 ; DARWIN-32-DYNAMIC: subl $12, %esp
8802 ; DARWIN-32-DYNAMIC-NEXT: call L_callee$stub
8803 ; DARWIN-32-DYNAMIC-NEXT: call L_callee$stub
8804 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
8805 ; DARWIN-32-DYNAMIC-NEXT: ret
8807 ; DARWIN-32-PIC: _caller:
8808 ; DARWIN-32-PIC: subl $12, %esp
8809 ; DARWIN-32-PIC-NEXT: call L_callee$stub
8810 ; DARWIN-32-PIC-NEXT: call L_callee$stub
8811 ; DARWIN-32-PIC-NEXT: addl $12, %esp
8812 ; DARWIN-32-PIC-NEXT: ret
8814 ; DARWIN-64-STATIC: _caller:
8815 ; DARWIN-64-STATIC: subq $8, %rsp
8816 ; DARWIN-64-STATIC-NEXT: call _callee
8817 ; DARWIN-64-STATIC-NEXT: call _callee
8818 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
8819 ; DARWIN-64-STATIC-NEXT: ret
8821 ; DARWIN-64-DYNAMIC: _caller:
8822 ; DARWIN-64-DYNAMIC: subq $8, %rsp
8823 ; DARWIN-64-DYNAMIC-NEXT: call _callee
8824 ; DARWIN-64-DYNAMIC-NEXT: call _callee
8825 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
8826 ; DARWIN-64-DYNAMIC-NEXT: ret
8828 ; DARWIN-64-PIC: _caller:
8829 ; DARWIN-64-PIC: subq $8, %rsp
8830 ; DARWIN-64-PIC-NEXT: call _callee
8831 ; DARWIN-64-PIC-NEXT: call _callee
8832 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
8833 ; DARWIN-64-PIC-NEXT: ret
8836 define void @dcaller() nounwind {
8838 tail call void @dcallee() nounwind
8839 tail call void @dcallee() nounwind
8841 ; LINUX-64-STATIC: dcaller:
8842 ; LINUX-64-STATIC: call dcallee
8843 ; LINUX-64-STATIC: call dcallee
8844 ; LINUX-64-STATIC: ret
8846 ; LINUX-32-STATIC: dcaller:
8847 ; LINUX-32-STATIC: subl $4, %esp
8848 ; LINUX-32-STATIC-NEXT: call dcallee
8849 ; LINUX-32-STATIC-NEXT: call dcallee
8850 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8851 ; LINUX-32-STATIC-NEXT: ret
8853 ; LINUX-32-PIC: dcaller:
8854 ; LINUX-32-PIC: subl $4, %esp
8855 ; LINUX-32-PIC-NEXT: call dcallee
8856 ; LINUX-32-PIC-NEXT: call dcallee
8857 ; LINUX-32-PIC-NEXT: addl $4, %esp
8858 ; LINUX-32-PIC-NEXT: ret
8860 ; LINUX-64-PIC: dcaller:
8861 ; LINUX-64-PIC: subq $8, %rsp
8862 ; LINUX-64-PIC-NEXT: call dcallee
8863 ; LINUX-64-PIC-NEXT: call dcallee
8864 ; LINUX-64-PIC-NEXT: addq $8, %rsp
8865 ; LINUX-64-PIC-NEXT: ret
8867 ; DARWIN-32-STATIC: _dcaller:
8868 ; DARWIN-32-STATIC: subl $12, %esp
8869 ; DARWIN-32-STATIC-NEXT: call _dcallee
8870 ; DARWIN-32-STATIC-NEXT: call _dcallee
8871 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
8872 ; DARWIN-32-STATIC-NEXT: ret
8874 ; DARWIN-32-DYNAMIC: _dcaller:
8875 ; DARWIN-32-DYNAMIC: subl $12, %esp
8876 ; DARWIN-32-DYNAMIC-NEXT: call _dcallee
8877 ; DARWIN-32-DYNAMIC-NEXT: call _dcallee
8878 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
8879 ; DARWIN-32-DYNAMIC-NEXT: ret
8881 ; DARWIN-32-PIC: _dcaller:
8882 ; DARWIN-32-PIC: subl $12, %esp
8883 ; DARWIN-32-PIC-NEXT: call _dcallee
8884 ; DARWIN-32-PIC-NEXT: call _dcallee
8885 ; DARWIN-32-PIC-NEXT: addl $12, %esp
8886 ; DARWIN-32-PIC-NEXT: ret
8888 ; DARWIN-64-STATIC: _dcaller:
8889 ; DARWIN-64-STATIC: subq $8, %rsp
8890 ; DARWIN-64-STATIC-NEXT: call _dcallee
8891 ; DARWIN-64-STATIC-NEXT: call _dcallee
8892 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
8893 ; DARWIN-64-STATIC-NEXT: ret
8895 ; DARWIN-64-DYNAMIC: _dcaller:
8896 ; DARWIN-64-DYNAMIC: subq $8, %rsp
8897 ; DARWIN-64-DYNAMIC-NEXT: call _dcallee
8898 ; DARWIN-64-DYNAMIC-NEXT: call _dcallee
8899 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
8900 ; DARWIN-64-DYNAMIC-NEXT: ret
8902 ; DARWIN-64-PIC: _dcaller:
8903 ; DARWIN-64-PIC: subq $8, %rsp
8904 ; DARWIN-64-PIC-NEXT: call _dcallee
8905 ; DARWIN-64-PIC-NEXT: call _dcallee
8906 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
8907 ; DARWIN-64-PIC-NEXT: ret
8910 define void @lcaller() nounwind {
8912 tail call void @lcallee() nounwind
8913 tail call void @lcallee() nounwind
8915 ; LINUX-64-STATIC: lcaller:
8916 ; LINUX-64-STATIC: call lcallee
8917 ; LINUX-64-STATIC: call lcallee
8918 ; LINUX-64-STATIC: ret
8920 ; LINUX-32-STATIC: lcaller:
8921 ; LINUX-32-STATIC: subl $4, %esp
8922 ; LINUX-32-STATIC-NEXT: call lcallee
8923 ; LINUX-32-STATIC-NEXT: call lcallee
8924 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8925 ; LINUX-32-STATIC-NEXT: ret
8927 ; LINUX-32-PIC: lcaller:
8928 ; LINUX-32-PIC: subl $4, %esp
8929 ; LINUX-32-PIC-NEXT: call lcallee
8930 ; LINUX-32-PIC-NEXT: call lcallee
8931 ; LINUX-32-PIC-NEXT: addl $4, %esp
8932 ; LINUX-32-PIC-NEXT: ret
8934 ; LINUX-64-PIC: lcaller:
8935 ; LINUX-64-PIC: subq $8, %rsp
8936 ; LINUX-64-PIC-NEXT: call lcallee@PLT
8937 ; LINUX-64-PIC-NEXT: call lcallee@PLT
8938 ; LINUX-64-PIC-NEXT: addq $8, %rsp
8939 ; LINUX-64-PIC-NEXT: ret
8941 ; DARWIN-32-STATIC: _lcaller:
8942 ; DARWIN-32-STATIC: subl $12, %esp
8943 ; DARWIN-32-STATIC-NEXT: call _lcallee
8944 ; DARWIN-32-STATIC-NEXT: call _lcallee
8945 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
8946 ; DARWIN-32-STATIC-NEXT: ret
8948 ; DARWIN-32-DYNAMIC: _lcaller:
8949 ; DARWIN-32-DYNAMIC: subl $12, %esp
8950 ; DARWIN-32-DYNAMIC-NEXT: call _lcallee
8951 ; DARWIN-32-DYNAMIC-NEXT: call _lcallee
8952 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
8953 ; DARWIN-32-DYNAMIC-NEXT: ret
8955 ; DARWIN-32-PIC: _lcaller:
8956 ; DARWIN-32-PIC: subl $12, %esp
8957 ; DARWIN-32-PIC-NEXT: call _lcallee
8958 ; DARWIN-32-PIC-NEXT: call _lcallee
8959 ; DARWIN-32-PIC-NEXT: addl $12, %esp
8960 ; DARWIN-32-PIC-NEXT: ret
8962 ; DARWIN-64-STATIC: _lcaller:
8963 ; DARWIN-64-STATIC: subq $8, %rsp
8964 ; DARWIN-64-STATIC-NEXT: call _lcallee
8965 ; DARWIN-64-STATIC-NEXT: call _lcallee
8966 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
8967 ; DARWIN-64-STATIC-NEXT: ret
8969 ; DARWIN-64-DYNAMIC: _lcaller:
8970 ; DARWIN-64-DYNAMIC: subq $8, %rsp
8971 ; DARWIN-64-DYNAMIC-NEXT: call _lcallee
8972 ; DARWIN-64-DYNAMIC-NEXT: call _lcallee
8973 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
8974 ; DARWIN-64-DYNAMIC-NEXT: ret
8976 ; DARWIN-64-PIC: _lcaller:
8977 ; DARWIN-64-PIC: subq $8, %rsp
8978 ; DARWIN-64-PIC-NEXT: call _lcallee
8979 ; DARWIN-64-PIC-NEXT: call _lcallee
8980 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
8981 ; DARWIN-64-PIC-NEXT: ret
8984 define void @tailcaller() nounwind {
8986 tail call void @callee() nounwind
8988 ; LINUX-64-STATIC: tailcaller:
8989 ; LINUX-64-STATIC: call callee
8990 ; LINUX-64-STATIC: ret
8992 ; LINUX-32-STATIC: tailcaller:
8993 ; LINUX-32-STATIC: subl $4, %esp
8994 ; LINUX-32-STATIC-NEXT: call callee
8995 ; LINUX-32-STATIC-NEXT: addl $4, %esp
8996 ; LINUX-32-STATIC-NEXT: ret
8998 ; LINUX-32-PIC: tailcaller:
8999 ; LINUX-32-PIC: subl $4, %esp
9000 ; LINUX-32-PIC-NEXT: call callee
9001 ; LINUX-32-PIC-NEXT: addl $4, %esp
9002 ; LINUX-32-PIC-NEXT: ret
9004 ; LINUX-64-PIC: tailcaller:
9005 ; LINUX-64-PIC: subq $8, %rsp
9006 ; LINUX-64-PIC-NEXT: call callee@PLT
9007 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9008 ; LINUX-64-PIC-NEXT: ret
9010 ; DARWIN-32-STATIC: _tailcaller:
9011 ; DARWIN-32-STATIC: subl $12, %esp
9012 ; DARWIN-32-STATIC-NEXT: call _callee
9013 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9014 ; DARWIN-32-STATIC-NEXT: ret
9016 ; DARWIN-32-DYNAMIC: _tailcaller:
9017 ; DARWIN-32-DYNAMIC: subl $12, %esp
9018 ; DARWIN-32-DYNAMIC-NEXT: call L_callee$stub
9019 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9020 ; DARWIN-32-DYNAMIC-NEXT: ret
9022 ; DARWIN-32-PIC: _tailcaller:
9023 ; DARWIN-32-PIC: subl $12, %esp
9024 ; DARWIN-32-PIC-NEXT: call L_callee$stub
9025 ; DARWIN-32-PIC-NEXT: addl $12, %esp
9026 ; DARWIN-32-PIC-NEXT: ret
9028 ; DARWIN-64-STATIC: _tailcaller:
9029 ; DARWIN-64-STATIC: subq $8, %rsp
9030 ; DARWIN-64-STATIC-NEXT: call _callee
9031 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9032 ; DARWIN-64-STATIC-NEXT: ret
9034 ; DARWIN-64-DYNAMIC: _tailcaller:
9035 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9036 ; DARWIN-64-DYNAMIC-NEXT: call _callee
9037 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9038 ; DARWIN-64-DYNAMIC-NEXT: ret
9040 ; DARWIN-64-PIC: _tailcaller:
9041 ; DARWIN-64-PIC: subq $8, %rsp
9042 ; DARWIN-64-PIC-NEXT: call _callee
9043 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9044 ; DARWIN-64-PIC-NEXT: ret
9047 define void @dtailcaller() nounwind {
9049 tail call void @dcallee() nounwind
9051 ; LINUX-64-STATIC: dtailcaller:
9052 ; LINUX-64-STATIC: call dcallee
9053 ; LINUX-64-STATIC: ret
9055 ; LINUX-32-STATIC: dtailcaller:
9056 ; LINUX-32-STATIC: subl $4, %esp
9057 ; LINUX-32-STATIC-NEXT: call dcallee
9058 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9059 ; LINUX-32-STATIC-NEXT: ret
9061 ; LINUX-32-PIC: dtailcaller:
9062 ; LINUX-32-PIC: subl $4, %esp
9063 ; LINUX-32-PIC-NEXT: call dcallee
9064 ; LINUX-32-PIC-NEXT: addl $4, %esp
9065 ; LINUX-32-PIC-NEXT: ret
9067 ; LINUX-64-PIC: dtailcaller:
9068 ; LINUX-64-PIC: subq $8, %rsp
9069 ; LINUX-64-PIC-NEXT: call dcallee
9070 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9071 ; LINUX-64-PIC-NEXT: ret
9073 ; DARWIN-32-STATIC: _dtailcaller:
9074 ; DARWIN-32-STATIC: subl $12, %esp
9075 ; DARWIN-32-STATIC-NEXT: call _dcallee
9076 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9077 ; DARWIN-32-STATIC-NEXT: ret
9079 ; DARWIN-32-DYNAMIC: _dtailcaller:
9080 ; DARWIN-32-DYNAMIC: subl $12, %esp
9081 ; DARWIN-32-DYNAMIC-NEXT: call _dcallee
9082 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9083 ; DARWIN-32-DYNAMIC-NEXT: ret
9085 ; DARWIN-32-PIC: _dtailcaller:
9086 ; DARWIN-32-PIC: subl $12, %esp
9087 ; DARWIN-32-PIC-NEXT: call _dcallee
9088 ; DARWIN-32-PIC-NEXT: addl $12, %esp
9089 ; DARWIN-32-PIC-NEXT: ret
9091 ; DARWIN-64-STATIC: _dtailcaller:
9092 ; DARWIN-64-STATIC: subq $8, %rsp
9093 ; DARWIN-64-STATIC-NEXT: call _dcallee
9094 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9095 ; DARWIN-64-STATIC-NEXT: ret
9097 ; DARWIN-64-DYNAMIC: _dtailcaller:
9098 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9099 ; DARWIN-64-DYNAMIC-NEXT: call _dcallee
9100 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9101 ; DARWIN-64-DYNAMIC-NEXT: ret
9103 ; DARWIN-64-PIC: _dtailcaller:
9104 ; DARWIN-64-PIC: subq $8, %rsp
9105 ; DARWIN-64-PIC-NEXT: call _dcallee
9106 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9107 ; DARWIN-64-PIC-NEXT: ret
9110 define void @ltailcaller() nounwind {
9112 tail call void @lcallee() nounwind
9114 ; LINUX-64-STATIC: ltailcaller:
9115 ; LINUX-64-STATIC: call lcallee
9116 ; LINUX-64-STATIC: ret
9118 ; LINUX-32-STATIC: ltailcaller:
9119 ; LINUX-32-STATIC: subl $4, %esp
9120 ; LINUX-32-STATIC-NEXT: call lcallee
9121 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9122 ; LINUX-32-STATIC-NEXT: ret
9124 ; LINUX-32-PIC: ltailcaller:
9125 ; LINUX-32-PIC: subl $4, %esp
9126 ; LINUX-32-PIC-NEXT: call lcallee
9127 ; LINUX-32-PIC-NEXT: addl $4, %esp
9128 ; LINUX-32-PIC-NEXT: ret
9130 ; LINUX-64-PIC: ltailcaller:
9131 ; LINUX-64-PIC: subq $8, %rsp
9132 ; LINUX-64-PIC-NEXT: call lcallee@PLT
9133 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9134 ; LINUX-64-PIC-NEXT: ret
9136 ; DARWIN-32-STATIC: _ltailcaller:
9137 ; DARWIN-32-STATIC: subl $12, %esp
9138 ; DARWIN-32-STATIC-NEXT: call _lcallee
9139 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9140 ; DARWIN-32-STATIC-NEXT: ret
9142 ; DARWIN-32-DYNAMIC: _ltailcaller:
9143 ; DARWIN-32-DYNAMIC: subl $12, %esp
9144 ; DARWIN-32-DYNAMIC-NEXT: call _lcallee
9145 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9146 ; DARWIN-32-DYNAMIC-NEXT: ret
9148 ; DARWIN-32-PIC: _ltailcaller:
9149 ; DARWIN-32-PIC: subl $12, %esp
9150 ; DARWIN-32-PIC-NEXT: call _lcallee
9151 ; DARWIN-32-PIC-NEXT: addl $12, %esp
9152 ; DARWIN-32-PIC-NEXT: ret
9154 ; DARWIN-64-STATIC: _ltailcaller:
9155 ; DARWIN-64-STATIC: subq $8, %rsp
9156 ; DARWIN-64-STATIC-NEXT: call _lcallee
9157 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9158 ; DARWIN-64-STATIC-NEXT: ret
9160 ; DARWIN-64-DYNAMIC: _ltailcaller:
9161 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9162 ; DARWIN-64-DYNAMIC-NEXT: call _lcallee
9163 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9164 ; DARWIN-64-DYNAMIC-NEXT: ret
9166 ; DARWIN-64-PIC: _ltailcaller:
9167 ; DARWIN-64-PIC: subq $8, %rsp
9168 ; DARWIN-64-PIC-NEXT: call _lcallee
9169 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9170 ; DARWIN-64-PIC-NEXT: ret
9173 define void @icaller() nounwind {
9175 %0 = load void ()** @ifunc, align 8
9176 tail call void %0() nounwind
9177 %1 = load void ()** @ifunc, align 8
9178 tail call void %1() nounwind
9180 ; LINUX-64-STATIC: icaller:
9181 ; LINUX-64-STATIC: call *ifunc
9182 ; LINUX-64-STATIC: call *ifunc
9183 ; LINUX-64-STATIC: ret
9185 ; LINUX-32-STATIC: icaller:
9186 ; LINUX-32-STATIC: subl $4, %esp
9187 ; LINUX-32-STATIC-NEXT: call *ifunc
9188 ; LINUX-32-STATIC-NEXT: call *ifunc
9189 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9190 ; LINUX-32-STATIC-NEXT: ret
9192 ; LINUX-32-PIC: icaller:
9193 ; LINUX-32-PIC: subl $4, %esp
9194 ; LINUX-32-PIC-NEXT: call *ifunc
9195 ; LINUX-32-PIC-NEXT: call *ifunc
9196 ; LINUX-32-PIC-NEXT: addl $4, %esp
9197 ; LINUX-32-PIC-NEXT: ret
9199 ; LINUX-64-PIC: icaller:
9200 ; LINUX-64-PIC: pushq %rbx
9201 ; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
9202 ; LINUX-64-PIC-NEXT: call *(%rbx)
9203 ; LINUX-64-PIC-NEXT: call *(%rbx)
9204 ; LINUX-64-PIC-NEXT: popq %rbx
9205 ; LINUX-64-PIC-NEXT: ret
9207 ; DARWIN-32-STATIC: _icaller:
9208 ; DARWIN-32-STATIC: subl $12, %esp
9209 ; DARWIN-32-STATIC-NEXT: call *_ifunc
9210 ; DARWIN-32-STATIC-NEXT: call *_ifunc
9211 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9212 ; DARWIN-32-STATIC-NEXT: ret
9214 ; DARWIN-32-DYNAMIC: _icaller:
9215 ; DARWIN-32-DYNAMIC: pushl %esi
9216 ; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp
9217 ; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi
9218 ; DARWIN-32-DYNAMIC-NEXT: call *(%esi)
9219 ; DARWIN-32-DYNAMIC-NEXT: call *(%esi)
9220 ; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp
9221 ; DARWIN-32-DYNAMIC-NEXT: popl %esi
9222 ; DARWIN-32-DYNAMIC-NEXT: ret
9224 ; DARWIN-32-PIC: _icaller:
9225 ; DARWIN-32-PIC: pushl %esi
9226 ; DARWIN-32-PIC-NEXT: subl $8, %esp
9227 ; DARWIN-32-PIC-NEXT: call "L143$pb"
9228 ; DARWIN-32-PIC-NEXT: "L143$pb":
9229 ; DARWIN-32-PIC-NEXT: popl %eax
9230 ; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-"L143$pb"(%eax), %esi
9231 ; DARWIN-32-PIC-NEXT: call *(%esi)
9232 ; DARWIN-32-PIC-NEXT: call *(%esi)
9233 ; DARWIN-32-PIC-NEXT: addl $8, %esp
9234 ; DARWIN-32-PIC-NEXT: popl %esi
9235 ; DARWIN-32-PIC-NEXT: ret
9237 ; DARWIN-64-STATIC: _icaller:
9238 ; DARWIN-64-STATIC: pushq %rbx
9239 ; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9240 ; DARWIN-64-STATIC-NEXT: call *(%rbx)
9241 ; DARWIN-64-STATIC-NEXT: call *(%rbx)
9242 ; DARWIN-64-STATIC-NEXT: popq %rbx
9243 ; DARWIN-64-STATIC-NEXT: ret
9245 ; DARWIN-64-DYNAMIC: _icaller:
9246 ; DARWIN-64-DYNAMIC: pushq %rbx
9247 ; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9248 ; DARWIN-64-DYNAMIC-NEXT: call *(%rbx)
9249 ; DARWIN-64-DYNAMIC-NEXT: call *(%rbx)
9250 ; DARWIN-64-DYNAMIC-NEXT: popq %rbx
9251 ; DARWIN-64-DYNAMIC-NEXT: ret
9253 ; DARWIN-64-PIC: _icaller:
9254 ; DARWIN-64-PIC: pushq %rbx
9255 ; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9256 ; DARWIN-64-PIC-NEXT: call *(%rbx)
9257 ; DARWIN-64-PIC-NEXT: call *(%rbx)
9258 ; DARWIN-64-PIC-NEXT: popq %rbx
9259 ; DARWIN-64-PIC-NEXT: ret
9262 define void @dicaller() nounwind {
9264 %0 = load void ()** @difunc, align 8
9265 tail call void %0() nounwind
9266 %1 = load void ()** @difunc, align 8
9267 tail call void %1() nounwind
9269 ; LINUX-64-STATIC: dicaller:
9270 ; LINUX-64-STATIC: call *difunc
9271 ; LINUX-64-STATIC: call *difunc
9272 ; LINUX-64-STATIC: ret
9274 ; LINUX-32-STATIC: dicaller:
9275 ; LINUX-32-STATIC: subl $4, %esp
9276 ; LINUX-32-STATIC-NEXT: call *difunc
9277 ; LINUX-32-STATIC-NEXT: call *difunc
9278 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9279 ; LINUX-32-STATIC-NEXT: ret
9281 ; LINUX-32-PIC: dicaller:
9282 ; LINUX-32-PIC: subl $4, %esp
9283 ; LINUX-32-PIC-NEXT: call *difunc
9284 ; LINUX-32-PIC-NEXT: call *difunc
9285 ; LINUX-32-PIC-NEXT: addl $4, %esp
9286 ; LINUX-32-PIC-NEXT: ret
9288 ; LINUX-64-PIC: dicaller:
9289 ; LINUX-64-PIC: pushq %rbx
9290 ; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rbx
9291 ; LINUX-64-PIC-NEXT: call *(%rbx)
9292 ; LINUX-64-PIC-NEXT: call *(%rbx)
9293 ; LINUX-64-PIC-NEXT: popq %rbx
9294 ; LINUX-64-PIC-NEXT: ret
9296 ; DARWIN-32-STATIC: _dicaller:
9297 ; DARWIN-32-STATIC: subl $12, %esp
9298 ; DARWIN-32-STATIC-NEXT: call *_difunc
9299 ; DARWIN-32-STATIC-NEXT: call *_difunc
9300 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9301 ; DARWIN-32-STATIC-NEXT: ret
9303 ; DARWIN-32-DYNAMIC: _dicaller:
9304 ; DARWIN-32-DYNAMIC: subl $12, %esp
9305 ; DARWIN-32-DYNAMIC-NEXT: call *_difunc
9306 ; DARWIN-32-DYNAMIC-NEXT: call *_difunc
9307 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9308 ; DARWIN-32-DYNAMIC-NEXT: ret
9310 ; DARWIN-32-PIC: _dicaller:
9311 ; DARWIN-32-PIC: pushl %esi
9312 ; DARWIN-32-PIC-NEXT: subl $8, %esp
9313 ; DARWIN-32-PIC-NEXT: call "L144$pb"
9314 ; DARWIN-32-PIC-NEXT: "L144$pb":
9315 ; DARWIN-32-PIC-NEXT: popl %esi
9316 ; DARWIN-32-PIC-NEXT: call *_difunc-"L144$pb"(%esi)
9317 ; DARWIN-32-PIC-NEXT: call *_difunc-"L144$pb"(%esi)
9318 ; DARWIN-32-PIC-NEXT: addl $8, %esp
9319 ; DARWIN-32-PIC-NEXT: popl %esi
9320 ; DARWIN-32-PIC-NEXT: ret
9322 ; DARWIN-64-STATIC: _dicaller:
9323 ; DARWIN-64-STATIC: subq $8, %rsp
9324 ; DARWIN-64-STATIC-NEXT: call *_difunc(%rip)
9325 ; DARWIN-64-STATIC-NEXT: call *_difunc(%rip)
9326 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9327 ; DARWIN-64-STATIC-NEXT: ret
9329 ; DARWIN-64-DYNAMIC: _dicaller:
9330 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9331 ; DARWIN-64-DYNAMIC-NEXT: call *_difunc(%rip)
9332 ; DARWIN-64-DYNAMIC-NEXT: call *_difunc(%rip)
9333 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9334 ; DARWIN-64-DYNAMIC-NEXT: ret
9336 ; DARWIN-64-PIC: _dicaller:
9337 ; DARWIN-64-PIC: subq $8, %rsp
9338 ; DARWIN-64-PIC-NEXT: call *_difunc(%rip)
9339 ; DARWIN-64-PIC-NEXT: call *_difunc(%rip)
9340 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9341 ; DARWIN-64-PIC-NEXT: ret
9344 define void @licaller() nounwind {
9346 %0 = load void ()** @lifunc, align 8
9347 tail call void %0() nounwind
9348 %1 = load void ()** @lifunc, align 8
9349 tail call void %1() nounwind
9351 ; LINUX-64-STATIC: licaller:
9352 ; LINUX-64-STATIC: call *lifunc
9353 ; LINUX-64-STATIC: call *lifunc
9354 ; LINUX-64-STATIC: ret
9356 ; LINUX-32-STATIC: licaller:
9357 ; LINUX-32-STATIC: subl $4, %esp
9358 ; LINUX-32-STATIC-NEXT: call *lifunc
9359 ; LINUX-32-STATIC-NEXT: call *lifunc
9360 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9361 ; LINUX-32-STATIC-NEXT: ret
9363 ; LINUX-32-PIC: licaller:
9364 ; LINUX-32-PIC: subl $4, %esp
9365 ; LINUX-32-PIC-NEXT: call *lifunc
9366 ; LINUX-32-PIC-NEXT: call *lifunc
9367 ; LINUX-32-PIC-NEXT: addl $4, %esp
9368 ; LINUX-32-PIC-NEXT: ret
9370 ; LINUX-64-PIC: licaller:
9371 ; LINUX-64-PIC: subq $8, %rsp
9372 ; LINUX-64-PIC-NEXT: call *lifunc(%rip)
9373 ; LINUX-64-PIC-NEXT: call *lifunc(%rip)
9374 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9375 ; LINUX-64-PIC-NEXT: ret
9377 ; DARWIN-32-STATIC: _licaller:
9378 ; DARWIN-32-STATIC: subl $12, %esp
9379 ; DARWIN-32-STATIC-NEXT: call *_lifunc
9380 ; DARWIN-32-STATIC-NEXT: call *_lifunc
9381 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9382 ; DARWIN-32-STATIC-NEXT: ret
9384 ; DARWIN-32-DYNAMIC: _licaller:
9385 ; DARWIN-32-DYNAMIC: subl $12, %esp
9386 ; DARWIN-32-DYNAMIC-NEXT: call *_lifunc
9387 ; DARWIN-32-DYNAMIC-NEXT: call *_lifunc
9388 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9389 ; DARWIN-32-DYNAMIC-NEXT: ret
9391 ; DARWIN-32-PIC: _licaller:
9392 ; DARWIN-32-PIC: pushl %esi
9393 ; DARWIN-32-PIC-NEXT: subl $8, %esp
9394 ; DARWIN-32-PIC-NEXT: call "L145$pb"
9395 ; DARWIN-32-PIC-NEXT: "L145$pb":
9396 ; DARWIN-32-PIC-NEXT: popl %esi
9397 ; DARWIN-32-PIC-NEXT: call *_lifunc-"L145$pb"(%esi)
9398 ; DARWIN-32-PIC-NEXT: call *_lifunc-"L145$pb"(%esi)
9399 ; DARWIN-32-PIC-NEXT: addl $8, %esp
9400 ; DARWIN-32-PIC-NEXT: popl %esi
9401 ; DARWIN-32-PIC-NEXT: ret
9403 ; DARWIN-64-STATIC: _licaller:
9404 ; DARWIN-64-STATIC: subq $8, %rsp
9405 ; DARWIN-64-STATIC-NEXT: call *_lifunc(%rip)
9406 ; DARWIN-64-STATIC-NEXT: call *_lifunc(%rip)
9407 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9408 ; DARWIN-64-STATIC-NEXT: ret
9410 ; DARWIN-64-DYNAMIC: _licaller:
9411 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9412 ; DARWIN-64-DYNAMIC-NEXT: call *_lifunc(%rip)
9413 ; DARWIN-64-DYNAMIC-NEXT: call *_lifunc(%rip)
9414 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9415 ; DARWIN-64-DYNAMIC-NEXT: ret
9417 ; DARWIN-64-PIC: _licaller:
9418 ; DARWIN-64-PIC: subq $8, %rsp
9419 ; DARWIN-64-PIC-NEXT: call *_lifunc(%rip)
9420 ; DARWIN-64-PIC-NEXT: call *_lifunc(%rip)
9421 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9422 ; DARWIN-64-PIC-NEXT: ret
9425 define void @itailcaller() nounwind {
9427 %0 = load void ()** @ifunc, align 8
9428 tail call void %0() nounwind
9429 %1 = load void ()** @ifunc, align 8
9430 tail call void %1() nounwind
9432 ; LINUX-64-STATIC: itailcaller:
9433 ; LINUX-64-STATIC: call *ifunc
9434 ; LINUX-64-STATIC: call *ifunc
9435 ; LINUX-64-STATIC: ret
9437 ; LINUX-32-STATIC: itailcaller:
9438 ; LINUX-32-STATIC: subl $4, %esp
9439 ; LINUX-32-STATIC-NEXT: call *ifunc
9440 ; LINUX-32-STATIC-NEXT: call *ifunc
9441 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9442 ; LINUX-32-STATIC-NEXT: ret
9444 ; LINUX-32-PIC: itailcaller:
9445 ; LINUX-32-PIC: subl $4, %esp
9446 ; LINUX-32-PIC-NEXT: call *ifunc
9447 ; LINUX-32-PIC-NEXT: call *ifunc
9448 ; LINUX-32-PIC-NEXT: addl $4, %esp
9449 ; LINUX-32-PIC-NEXT: ret
9451 ; LINUX-64-PIC: itailcaller:
9452 ; LINUX-64-PIC: pushq %rbx
9453 ; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx
9454 ; LINUX-64-PIC-NEXT: call *(%rbx)
9455 ; LINUX-64-PIC-NEXT: call *(%rbx)
9456 ; LINUX-64-PIC-NEXT: popq %rbx
9457 ; LINUX-64-PIC-NEXT: ret
9459 ; DARWIN-32-STATIC: _itailcaller:
9460 ; DARWIN-32-STATIC: subl $12, %esp
9461 ; DARWIN-32-STATIC-NEXT: call *_ifunc
9462 ; DARWIN-32-STATIC-NEXT: call *_ifunc
9463 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9464 ; DARWIN-32-STATIC-NEXT: ret
9466 ; DARWIN-32-DYNAMIC: _itailcaller:
9467 ; DARWIN-32-DYNAMIC: pushl %esi
9468 ; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp
9469 ; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi
9470 ; DARWIN-32-DYNAMIC-NEXT: call *(%esi)
9471 ; DARWIN-32-DYNAMIC-NEXT: call *(%esi)
9472 ; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp
9473 ; DARWIN-32-DYNAMIC-NEXT: popl %esi
9474 ; DARWIN-32-DYNAMIC-NEXT: ret
9476 ; DARWIN-32-PIC: _itailcaller:
9477 ; DARWIN-32-PIC: pushl %esi
9478 ; DARWIN-32-PIC-NEXT: subl $8, %esp
9479 ; DARWIN-32-PIC-NEXT: call "L146$pb"
9480 ; DARWIN-32-PIC-NEXT: "L146$pb":
9481 ; DARWIN-32-PIC-NEXT: popl %eax
9482 ; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-"L146$pb"(%eax), %esi
9483 ; DARWIN-32-PIC-NEXT: call *(%esi)
9484 ; DARWIN-32-PIC-NEXT: call *(%esi)
9485 ; DARWIN-32-PIC-NEXT: addl $8, %esp
9486 ; DARWIN-32-PIC-NEXT: popl %esi
9487 ; DARWIN-32-PIC-NEXT: ret
9489 ; DARWIN-64-STATIC: _itailcaller:
9490 ; DARWIN-64-STATIC: pushq %rbx
9491 ; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9492 ; DARWIN-64-STATIC-NEXT: call *(%rbx)
9493 ; DARWIN-64-STATIC-NEXT: call *(%rbx)
9494 ; DARWIN-64-STATIC-NEXT: popq %rbx
9495 ; DARWIN-64-STATIC-NEXT: ret
9497 ; DARWIN-64-DYNAMIC: _itailcaller:
9498 ; DARWIN-64-DYNAMIC: pushq %rbx
9499 ; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9500 ; DARWIN-64-DYNAMIC-NEXT: call *(%rbx)
9501 ; DARWIN-64-DYNAMIC-NEXT: call *(%rbx)
9502 ; DARWIN-64-DYNAMIC-NEXT: popq %rbx
9503 ; DARWIN-64-DYNAMIC-NEXT: ret
9505 ; DARWIN-64-PIC: _itailcaller:
9506 ; DARWIN-64-PIC: pushq %rbx
9507 ; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx
9508 ; DARWIN-64-PIC-NEXT: call *(%rbx)
9509 ; DARWIN-64-PIC-NEXT: call *(%rbx)
9510 ; DARWIN-64-PIC-NEXT: popq %rbx
9511 ; DARWIN-64-PIC-NEXT: ret
9514 define void @ditailcaller() nounwind {
9516 %0 = load void ()** @difunc, align 8
9517 tail call void %0() nounwind
9519 ; LINUX-64-STATIC: ditailcaller:
9520 ; LINUX-64-STATIC: call *difunc
9521 ; LINUX-64-STATIC: ret
9523 ; LINUX-32-STATIC: ditailcaller:
9524 ; LINUX-32-STATIC: subl $4, %esp
9525 ; LINUX-32-STATIC-NEXT: call *difunc
9526 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9527 ; LINUX-32-STATIC-NEXT: ret
9529 ; LINUX-32-PIC: ditailcaller:
9530 ; LINUX-32-PIC: subl $4, %esp
9531 ; LINUX-32-PIC-NEXT: call *difunc
9532 ; LINUX-32-PIC-NEXT: addl $4, %esp
9533 ; LINUX-32-PIC-NEXT: ret
9535 ; LINUX-64-PIC: ditailcaller:
9536 ; LINUX-64-PIC: subq $8, %rsp
9537 ; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rax
9538 ; LINUX-64-PIC-NEXT: call *(%rax)
9539 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9540 ; LINUX-64-PIC-NEXT: ret
9542 ; DARWIN-32-STATIC: _ditailcaller:
9543 ; DARWIN-32-STATIC: subl $12, %esp
9544 ; DARWIN-32-STATIC-NEXT: call *_difunc
9545 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9546 ; DARWIN-32-STATIC-NEXT: ret
9548 ; DARWIN-32-DYNAMIC: _ditailcaller:
9549 ; DARWIN-32-DYNAMIC: subl $12, %esp
9550 ; DARWIN-32-DYNAMIC-NEXT: call *_difunc
9551 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9552 ; DARWIN-32-DYNAMIC-NEXT: ret
9554 ; DARWIN-32-PIC: _ditailcaller:
9555 ; DARWIN-32-PIC: subl $12, %esp
9556 ; DARWIN-32-PIC-NEXT: call "L147$pb"
9557 ; DARWIN-32-PIC-NEXT: "L147$pb":
9558 ; DARWIN-32-PIC-NEXT: popl %eax
9559 ; DARWIN-32-PIC-NEXT: call *_difunc-"L147$pb"(%eax)
9560 ; DARWIN-32-PIC-NEXT: addl $12, %esp
9561 ; DARWIN-32-PIC-NEXT: ret
9563 ; DARWIN-64-STATIC: _ditailcaller:
9564 ; DARWIN-64-STATIC: subq $8, %rsp
9565 ; DARWIN-64-STATIC-NEXT: call *_difunc(%rip)
9566 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9567 ; DARWIN-64-STATIC-NEXT: ret
9569 ; DARWIN-64-DYNAMIC: _ditailcaller:
9570 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9571 ; DARWIN-64-DYNAMIC-NEXT: call *_difunc(%rip)
9572 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9573 ; DARWIN-64-DYNAMIC-NEXT: ret
9575 ; DARWIN-64-PIC: _ditailcaller:
9576 ; DARWIN-64-PIC: call *_difunc(%rip)
9577 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9578 ; DARWIN-64-PIC-NEXT: ret
9581 define void @litailcaller() nounwind {
9583 %0 = load void ()** @lifunc, align 8
9584 tail call void %0() nounwind
9586 ; LINUX-64-STATIC: litailcaller:
9587 ; LINUX-64-STATIC: call *lifunc
9588 ; LINUX-64-STATIC: ret
9590 ; LINUX-32-STATIC: litailcaller:
9591 ; LINUX-32-STATIC: subl $4, %esp
9592 ; LINUX-32-STATIC-NEXT: call *lifunc
9593 ; LINUX-32-STATIC-NEXT: addl $4, %esp
9594 ; LINUX-32-STATIC-NEXT: ret
9596 ; LINUX-32-PIC: litailcaller:
9597 ; LINUX-32-PIC: subl $4, %esp
9598 ; LINUX-32-PIC-NEXT: call *lifunc
9599 ; LINUX-32-PIC-NEXT: addl $4, %esp
9600 ; LINUX-32-PIC-NEXT: ret
9602 ; LINUX-64-PIC: litailcaller:
9603 ; LINUX-64-PIC: subq $8, %rsp
9604 ; LINUX-64-PIC-NEXT: call *lifunc(%rip)
9605 ; LINUX-64-PIC-NEXT: addq $8, %rsp
9606 ; LINUX-64-PIC-NEXT: ret
9608 ; DARWIN-32-STATIC: _litailcaller:
9609 ; DARWIN-32-STATIC: subl $12, %esp
9610 ; DARWIN-32-STATIC-NEXT: call *_lifunc
9611 ; DARWIN-32-STATIC-NEXT: addl $12, %esp
9612 ; DARWIN-32-STATIC-NEXT: ret
9614 ; DARWIN-32-DYNAMIC: _litailcaller:
9615 ; DARWIN-32-DYNAMIC: subl $12, %esp
9616 ; DARWIN-32-DYNAMIC-NEXT: call *_lifunc
9617 ; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp
9618 ; DARWIN-32-DYNAMIC-NEXT: ret
9620 ; DARWIN-32-PIC: _litailcaller:
9621 ; DARWIN-32-PIC: subl $12, %esp
9622 ; DARWIN-32-PIC-NEXT: call "L148$pb"
9623 ; DARWIN-32-PIC-NEXT: "L148$pb":
9624 ; DARWIN-32-PIC-NEXT: popl %eax
9625 ; DARWIN-32-PIC-NEXT: call *_lifunc-"L148$pb"(%eax)
9626 ; DARWIN-32-PIC-NEXT: addl $12, %esp
9627 ; DARWIN-32-PIC-NEXT: ret
9629 ; DARWIN-64-STATIC: _litailcaller:
9630 ; DARWIN-64-STATIC: subq $8, %rsp
9631 ; DARWIN-64-STATIC-NEXT: call *_lifunc(%rip)
9632 ; DARWIN-64-STATIC-NEXT: addq $8, %rsp
9633 ; DARWIN-64-STATIC-NEXT: ret
9635 ; DARWIN-64-DYNAMIC: _litailcaller:
9636 ; DARWIN-64-DYNAMIC: subq $8, %rsp
9637 ; DARWIN-64-DYNAMIC-NEXT: call *_lifunc(%rip)
9638 ; DARWIN-64-DYNAMIC-NEXT: addq $8, %rsp
9639 ; DARWIN-64-DYNAMIC-NEXT: ret
9641 ; DARWIN-64-PIC: _litailcaller:
9642 ; DARWIN-64-PIC: subq $8, %rsp
9643 ; DARWIN-64-PIC-NEXT: call *_lifunc(%rip)
9644 ; DARWIN-64-PIC-NEXT: addq $8, %rsp
9645 ; DARWIN-64-PIC-NEXT: ret