1 ; RUN: llvm-as < %s | llc -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small > %t
2 ; RUN: grep leal %t | count 33
3 ; RUN: grep movl %t | count 239
4 ; RUN: grep addl %t | count 20
5 ; RUN: grep subl %t | count 14
6 ; RUN: not grep leaq %t
7 ; RUN: not grep movq %t
8 ; RUN: not grep addq %t
9 ; RUN: not grep subq %t
10 ; RUN: not grep movabs %t
11 ; RUN: not grep largecomm %t
12 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
13 ; RUN: not grep @GOT %t
14 ; RUN: not grep @GOTOFF %t
15 ; RUN: not grep @GOTPCREL %t
16 ; RUN: not grep @GOTPLT %t
17 ; RUN: not grep @PLT %t
18 ; RUN: not grep @PLTOFF %t
19 ; RUN: grep {call \\\*} %t | count 10
20 ; RUN: not grep %rip %t
21 ; RUN: llvm-as < %s | llc -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=pic -code-model=small > %t
22 ; RUN: grep leal %t | count 43
23 ; RUN: grep movl %t | count 377
24 ; RUN: grep addl %t | count 179
25 ; RUN: grep subl %t | count 6
26 ; RUN: not grep leaq %t
27 ; RUN: not grep movq %t
28 ; RUN: not grep addq %t
29 ; RUN: not grep subq %t
30 ; RUN: not grep movabs %t
31 ; RUN: not grep largecomm %t
32 ; RUN: grep _GLOBAL_OFFSET_TABLE_ %t | count 148
33 ; RUN: grep @GOT %t | count 207
34 ; RUN: grep @GOTOFF %t | count 58
35 ; RUN: not grep @GOTPCREL %t
36 ; RUN: not grep @GOTPLT %t
37 ; RUN: grep @PLT %t | count 20
38 ; RUN: not grep @PLTOFF %t
39 ; RUN: grep {call \\\*} %t | count 10
40 ; RUN: not grep {%rip} %t
41 ; RUN: llvm-as < %s | llc -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small > %t
42 ; RUN: not grep leal %t
43 ; RUN: grep movl %t | count 91
44 ; RUN: not grep addl %t
45 ; RUN: not grep subl %t
46 ; RUN: grep leaq %t | count 70
47 ; RUN: grep movq %t | count 56
48 ; RUN: grep addq %t | count 20
49 ; RUN: grep subq %t | count 14
50 ; RUN: not grep movabs %t
51 ; RUN: not grep largecomm %t
52 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
53 ; RUN: not grep @GOT %t
54 ; RUN: not grep @GOTOFF %t
55 ; RUN: not grep @GOTPCREL %t
56 ; RUN: not grep @GOTPLT %t
57 ; RUN: not grep @PLT %t
58 ; RUN: not grep @PLTOFF %t
59 ; RUN: grep {call \\\*} %t | count 10
60 ; RUN: grep {%rip} %t | count 139
61 ; RUN: llvm-as < %s | llc -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small > %t
62 ; RUN: not grep leal %t
63 ; RUN: grep movl %t | count 98
64 ; RUN: not grep addl %t
65 ; RUN: not grep subl %t
66 ; RUN: grep leaq %t | count 59
67 ; RUN: grep movq %t | count 195
68 ; RUN: grep addq %t | count 36
69 ; RUN: grep subq %t | count 11
70 ; RUN: not grep movabs %t
71 ; RUN: not grep largecomm %t
72 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
73 ; RUN: grep @GOT %t | count 149
74 ; RUN: not grep @GOTOFF %t
75 ; RUN: grep @GOTPCREL %t | count 149
76 ; RUN: not grep @GOTPLT %t
77 ; RUN: grep @PLT %t | count 20
78 ; RUN: not grep @PLTOFF %t
79 ; RUN: grep {call \\\*} %t | count 10
80 ; RUN: grep {%rip} %t | count 207
84 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small > %t
85 ; RUN: grep leal %t | count 33
86 ; RUN: grep movl %t | count 239
87 ; RUN: grep addl %t | count 20
88 ; RUN: grep subl %t | count 14
89 ; RUN: not grep leaq %t
90 ; RUN: not grep movq %t
91 ; RUN: not grep addq %t
92 ; RUN: not grep subq %t
93 ; RUN: not grep movabs %t
94 ; RUN: not grep largecomm %t
95 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
96 ; RUN: not grep @GOT %t
97 ; RUN: not grep @GOTOFF %t
98 ; RUN: not grep @GOTPCREL %t
99 ; RUN: not grep @GOTPLT %t
100 ; RUN: not grep @PLT %t
101 ; RUN: not grep @PLTOFF %t
102 ; RUN: grep {call \\\*} %t | count 10
103 ; RUN: not grep %rip %t
104 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small > %t
105 ; RUN: grep leal %t | count 31
106 ; RUN: grep movl %t | count 312
107 ; RUN: grep addl %t | count 32
108 ; RUN: grep subl %t | count 14
109 ; RUN: not grep leaq %t
110 ; RUN: not grep movq %t
111 ; RUN: not grep addq %t
112 ; RUN: not grep subq %t
113 ; RUN: not grep movabs %t
114 ; RUN: not grep largecomm %t
115 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
116 ; RUN: not grep @GOT %t
117 ; RUN: not grep @GOTOFF %t
118 ; RUN: not grep @GOTPCREL %t
119 ; RUN: not grep @GOTPLT %t
120 ; RUN: not grep @PLT %t
121 ; RUN: not grep @PLTOFF %t
122 ; RUN: grep {call \\\*} %t | count 10
123 ; RUN: not grep {%rip} %t
124 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small > %t
125 ; RUN: grep leal %t | count 57
126 ; RUN: grep movl %t | count 292
127 ; RUN: grep addl %t | count 32
128 ; RUN: grep subl %t | count 14
129 ; RUN: not grep leaq %t
130 ; RUN: not grep movq %t
131 ; RUN: not grep addq %t
132 ; RUN: not grep subq %t
133 ; RUN: not grep movabs %t
134 ; RUN: not grep largecomm %t
135 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
136 ; RUN: not grep @GOT %t
137 ; RUN: not grep @GOTOFF %t
138 ; RUN: not grep @GOTPCREL %t
139 ; RUN: not grep @GOTPLT %t
140 ; RUN: not grep @PLT %t
141 ; RUN: not grep @PLTOFF %t
142 ; RUN: grep {call \\\*} %t | count 10
143 ; RUN: not grep {%rip} %t
144 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small > %t
145 ; RUN: not grep leal %t
146 ; RUN: grep movl %t | count 95
147 ; RUN: not grep addl %t
148 ; RUN: not grep subl %t
149 ; RUN: grep leaq %t | count 89
150 ; RUN: grep movq %t | count 142
151 ; RUN: grep addq %t | count 30
152 ; RUN: grep subq %t | count 12
153 ; RUN: not grep movabs %t
154 ; RUN: not grep largecomm %t
155 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
156 ; RUN: grep @GOT %t | count 92
157 ; RUN: not grep @GOTOFF %t
158 ; RUN: grep @GOTPCREL %t | count 92
159 ; RUN: not grep @GOTPLT %t
160 ; RUN: not grep @PLT %t
161 ; RUN: not grep @PLTOFF %t
162 ; RUN: grep {call \\\*} %t | count 10
163 ; RUN: grep {%rip} %t | count 208
164 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small > %t
165 ; RUN: not grep leal %t
166 ; RUN: grep movl %t | count 95
167 ; RUN: not grep addl %t
168 ; RUN: not grep subl %t
169 ; RUN: grep leaq %t | count 89
170 ; RUN: grep movq %t | count 142
171 ; RUN: grep addq %t | count 30
172 ; RUN: grep subq %t | count 12
173 ; RUN: not grep movabs %t
174 ; RUN: not grep largecomm %t
175 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
176 ; RUN: grep @GOT %t | count 92
177 ; RUN: not grep @GOTOFF %t
178 ; RUN: grep @GOTPCREL %t | count 92
179 ; RUN: not grep @GOTPLT %t
180 ; RUN: not grep @PLT %t
181 ; RUN: not grep @PLTOFF %t
182 ; RUN: grep {call \\\*} %t | count 10
183 ; RUN: grep {%rip} %t | count 208
185 @src = external global [131072 x i32]
186 @dst = external global [131072 x i32]
187 @xsrc = external global [32 x i32]
188 @xdst = external global [32 x i32]
189 @ptr = external global i32*
190 @dsrc = global [131072 x i32] zeroinitializer, align 32
191 @ddst = global [131072 x i32] zeroinitializer, align 32
192 @dptr = global i32* null
193 @lsrc = internal global [131072 x i32] zeroinitializer
194 @ldst = internal global [131072 x i32] zeroinitializer
195 @lptr = internal global i32* null
196 @ifunc = external global void ()*
197 @difunc = global void ()* null
198 @lifunc = internal global void ()* null
199 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
200 @lxdst = internal global [32 x i32] zeroinitializer, align 32
201 @dxsrc = global [32 x i32] zeroinitializer, align 32
202 @dxdst = global [32 x i32] zeroinitializer, align 32
204 define void @foo00() nounwind {
206 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
207 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
211 define void @fxo00() nounwind {
213 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
214 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
218 define void @foo01() nounwind {
220 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
224 define void @fxo01() nounwind {
226 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
230 define void @foo02() nounwind {
232 %0 = load i32** @ptr, align 8
233 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
234 store i32 %1, i32* %0, align 4
238 define void @fxo02() nounwind {
240 %0 = load i32** @ptr, align 8
241 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
242 store i32 %1, i32* %0, align 4
246 define void @foo03() nounwind {
248 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
249 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
253 define void @foo04() nounwind {
255 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
259 define void @foo05() nounwind {
261 %0 = load i32** @dptr, align 8
262 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
263 store i32 %1, i32* %0, align 4
267 define void @foo06() nounwind {
269 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
270 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
274 define void @foo07() nounwind {
276 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
280 define void @foo08() nounwind {
282 %0 = load i32** @lptr, align 8
283 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
284 store i32 %1, i32* %0, align 4
288 define void @qux00() nounwind {
290 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
291 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
295 define void @qxx00() nounwind {
297 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
298 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
302 define void @qux01() nounwind {
304 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
308 define void @qxx01() nounwind {
310 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
314 define void @qux02() nounwind {
316 %0 = load i32** @ptr, align 8
317 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
318 %2 = getelementptr i32* %0, i64 16
319 store i32 %1, i32* %2, align 4
323 define void @qxx02() nounwind {
325 %0 = load i32** @ptr, align 8
326 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
327 %2 = getelementptr i32* %0, i64 16
328 store i32 %1, i32* %2, align 4
332 define void @qux03() nounwind {
334 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
335 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
339 define void @qux04() nounwind {
341 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
345 define void @qux05() nounwind {
347 %0 = load i32** @dptr, align 8
348 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
349 %2 = getelementptr i32* %0, i64 16
350 store i32 %1, i32* %2, align 4
354 define void @qux06() nounwind {
356 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
357 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
361 define void @qux07() nounwind {
363 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
367 define void @qux08() nounwind {
369 %0 = load i32** @lptr, align 8
370 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
371 %2 = getelementptr i32* %0, i64 16
372 store i32 %1, i32* %2, align 4
376 define void @ind00(i64 %i) nounwind {
378 %0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
379 %1 = load i32* %0, align 4
380 %2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
381 store i32 %1, i32* %2, align 4
385 define void @ixd00(i64 %i) nounwind {
387 %0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
388 %1 = load i32* %0, align 4
389 %2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
390 store i32 %1, i32* %2, align 4
394 define void @ind01(i64 %i) nounwind {
396 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
397 store i32* %0, i32** @ptr, align 8
401 define void @ixd01(i64 %i) nounwind {
403 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
404 store i32* %0, i32** @ptr, align 8
408 define void @ind02(i64 %i) nounwind {
410 %0 = load i32** @ptr, align 8
411 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
412 %2 = load i32* %1, align 4
413 %3 = getelementptr i32* %0, i64 %i
414 store i32 %2, i32* %3, align 4
418 define void @ixd02(i64 %i) nounwind {
420 %0 = load i32** @ptr, align 8
421 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
422 %2 = load i32* %1, align 4
423 %3 = getelementptr i32* %0, i64 %i
424 store i32 %2, i32* %3, align 4
428 define void @ind03(i64 %i) nounwind {
430 %0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
431 %1 = load i32* %0, align 4
432 %2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
433 store i32 %1, i32* %2, align 4
437 define void @ind04(i64 %i) nounwind {
439 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
440 store i32* %0, i32** @dptr, align 8
444 define void @ind05(i64 %i) nounwind {
446 %0 = load i32** @dptr, align 8
447 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
448 %2 = load i32* %1, align 4
449 %3 = getelementptr i32* %0, i64 %i
450 store i32 %2, i32* %3, align 4
454 define void @ind06(i64 %i) nounwind {
456 %0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
457 %1 = load i32* %0, align 4
458 %2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
459 store i32 %1, i32* %2, align 4
463 define void @ind07(i64 %i) nounwind {
465 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
466 store i32* %0, i32** @lptr, align 8
470 define void @ind08(i64 %i) nounwind {
472 %0 = load i32** @lptr, align 8
473 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
474 %2 = load i32* %1, align 4
475 %3 = getelementptr i32* %0, i64 %i
476 store i32 %2, i32* %3, align 4
480 define void @off00(i64 %i) nounwind {
483 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
484 %2 = load i32* %1, align 4
485 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
486 store i32 %2, i32* %3, align 4
490 define void @oxf00(i64 %i) nounwind {
493 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
494 %2 = load i32* %1, align 4
495 %3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
496 store i32 %2, i32* %3, align 4
500 define void @off01(i64 %i) nounwind {
502 %.sum = add i64 %i, 16
503 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
504 store i32* %0, i32** @ptr, align 8
508 define void @oxf01(i64 %i) nounwind {
510 %.sum = add i64 %i, 16
511 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum
512 store i32* %0, i32** @ptr, align 8
516 define void @off02(i64 %i) nounwind {
518 %0 = load i32** @ptr, align 8
520 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
521 %3 = load i32* %2, align 4
522 %4 = getelementptr i32* %0, i64 %1
523 store i32 %3, i32* %4, align 4
527 define void @oxf02(i64 %i) nounwind {
529 %0 = load i32** @ptr, align 8
531 %2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1
532 %3 = load i32* %2, align 4
533 %4 = getelementptr i32* %0, i64 %1
534 store i32 %3, i32* %4, align 4
538 define void @off03(i64 %i) nounwind {
541 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
542 %2 = load i32* %1, align 4
543 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
544 store i32 %2, i32* %3, align 4
548 define void @off04(i64 %i) nounwind {
550 %.sum = add i64 %i, 16
551 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
552 store i32* %0, i32** @dptr, align 8
556 define void @off05(i64 %i) nounwind {
558 %0 = load i32** @dptr, align 8
560 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
561 %3 = load i32* %2, align 4
562 %4 = getelementptr i32* %0, i64 %1
563 store i32 %3, i32* %4, align 4
567 define void @off06(i64 %i) nounwind {
570 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
571 %2 = load i32* %1, align 4
572 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
573 store i32 %2, i32* %3, align 4
577 define void @off07(i64 %i) nounwind {
579 %.sum = add i64 %i, 16
580 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
581 store i32* %0, i32** @lptr, align 8
585 define void @off08(i64 %i) nounwind {
587 %0 = load i32** @lptr, align 8
589 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
590 %3 = load i32* %2, align 4
591 %4 = getelementptr i32* %0, i64 %1
592 store i32 %3, i32* %4, align 4
596 define void @moo00(i64 %i) nounwind {
598 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
599 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
603 define void @moo01(i64 %i) nounwind {
605 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
609 define void @moo02(i64 %i) nounwind {
611 %0 = load i32** @ptr, align 8
612 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
613 %2 = getelementptr i32* %0, i64 65536
614 store i32 %1, i32* %2, align 4
618 define void @moo03(i64 %i) nounwind {
620 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
621 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
625 define void @moo04(i64 %i) nounwind {
627 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
631 define void @moo05(i64 %i) nounwind {
633 %0 = load i32** @dptr, align 8
634 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
635 %2 = getelementptr i32* %0, i64 65536
636 store i32 %1, i32* %2, align 4
640 define void @moo06(i64 %i) nounwind {
642 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
643 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
647 define void @moo07(i64 %i) nounwind {
649 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
653 define void @moo08(i64 %i) nounwind {
655 %0 = load i32** @lptr, align 8
656 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
657 %2 = getelementptr i32* %0, i64 65536
658 store i32 %1, i32* %2, align 4
662 define void @big00(i64 %i) nounwind {
664 %0 = add i64 %i, 65536
665 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
666 %2 = load i32* %1, align 4
667 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
668 store i32 %2, i32* %3, align 4
672 define void @big01(i64 %i) nounwind {
674 %.sum = add i64 %i, 65536
675 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
676 store i32* %0, i32** @ptr, align 8
680 define void @big02(i64 %i) nounwind {
682 %0 = load i32** @ptr, align 8
683 %1 = add i64 %i, 65536
684 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
685 %3 = load i32* %2, align 4
686 %4 = getelementptr i32* %0, i64 %1
687 store i32 %3, i32* %4, align 4
691 define void @big03(i64 %i) nounwind {
693 %0 = add i64 %i, 65536
694 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
695 %2 = load i32* %1, align 4
696 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
697 store i32 %2, i32* %3, align 4
701 define void @big04(i64 %i) nounwind {
703 %.sum = add i64 %i, 65536
704 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
705 store i32* %0, i32** @dptr, align 8
709 define void @big05(i64 %i) nounwind {
711 %0 = load i32** @dptr, align 8
712 %1 = add i64 %i, 65536
713 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
714 %3 = load i32* %2, align 4
715 %4 = getelementptr i32* %0, i64 %1
716 store i32 %3, i32* %4, align 4
720 define void @big06(i64 %i) nounwind {
722 %0 = add i64 %i, 65536
723 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
724 %2 = load i32* %1, align 4
725 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
726 store i32 %2, i32* %3, align 4
730 define void @big07(i64 %i) nounwind {
732 %.sum = add i64 %i, 65536
733 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
734 store i32* %0, i32** @lptr, align 8
738 define void @big08(i64 %i) nounwind {
740 %0 = load i32** @lptr, align 8
741 %1 = add i64 %i, 65536
742 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
743 %3 = load i32* %2, align 4
744 %4 = getelementptr i32* %0, i64 %1
745 store i32 %3, i32* %4, align 4
749 define i8* @bar00() nounwind {
751 ret i8* bitcast ([131072 x i32]* @src to i8*)
754 define i8* @bxr00() nounwind {
756 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
759 define i8* @bar01() nounwind {
761 ret i8* bitcast ([131072 x i32]* @dst to i8*)
764 define i8* @bxr01() nounwind {
766 ret i8* bitcast ([32 x i32]* @xdst to i8*)
769 define i8* @bar02() nounwind {
771 ret i8* bitcast (i32** @ptr to i8*)
774 define i8* @bar03() nounwind {
776 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
779 define i8* @bar04() nounwind {
781 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
784 define i8* @bar05() nounwind {
786 ret i8* bitcast (i32** @dptr to i8*)
789 define i8* @bar06() nounwind {
791 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
794 define i8* @bar07() nounwind {
796 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
799 define i8* @bar08() nounwind {
801 ret i8* bitcast (i32** @lptr to i8*)
804 define i8* @har00() nounwind {
806 ret i8* bitcast ([131072 x i32]* @src to i8*)
809 define i8* @hxr00() nounwind {
811 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
814 define i8* @har01() nounwind {
816 ret i8* bitcast ([131072 x i32]* @dst to i8*)
819 define i8* @hxr01() nounwind {
821 ret i8* bitcast ([32 x i32]* @xdst to i8*)
824 define i8* @har02() nounwind {
826 %0 = load i32** @ptr, align 8
827 %1 = bitcast i32* %0 to i8*
831 define i8* @har03() nounwind {
833 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
836 define i8* @har04() nounwind {
838 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
841 define i8* @har05() nounwind {
843 %0 = load i32** @dptr, align 8
844 %1 = bitcast i32* %0 to i8*
848 define i8* @har06() nounwind {
850 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
853 define i8* @har07() nounwind {
855 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
858 define i8* @har08() nounwind {
860 %0 = load i32** @lptr, align 8
861 %1 = bitcast i32* %0 to i8*
865 define i8* @bat00() nounwind {
867 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
870 define i8* @bxt00() nounwind {
872 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
875 define i8* @bat01() nounwind {
877 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
880 define i8* @bxt01() nounwind {
882 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
885 define i8* @bat02() nounwind {
887 %0 = load i32** @ptr, align 8
888 %1 = getelementptr i32* %0, i64 16
889 %2 = bitcast i32* %1 to i8*
893 define i8* @bat03() nounwind {
895 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
898 define i8* @bat04() nounwind {
900 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
903 define i8* @bat05() nounwind {
905 %0 = load i32** @dptr, align 8
906 %1 = getelementptr i32* %0, i64 16
907 %2 = bitcast i32* %1 to i8*
911 define i8* @bat06() nounwind {
913 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
916 define i8* @bat07() nounwind {
918 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
921 define i8* @bat08() nounwind {
923 %0 = load i32** @lptr, align 8
924 %1 = getelementptr i32* %0, i64 16
925 %2 = bitcast i32* %1 to i8*
929 define i8* @bam00() nounwind {
931 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
934 define i8* @bam01() nounwind {
936 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
939 define i8* @bxm01() nounwind {
941 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
944 define i8* @bam02() nounwind {
946 %0 = load i32** @ptr, align 8
947 %1 = getelementptr i32* %0, i64 65536
948 %2 = bitcast i32* %1 to i8*
952 define i8* @bam03() nounwind {
954 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
957 define i8* @bam04() nounwind {
959 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
962 define i8* @bam05() nounwind {
964 %0 = load i32** @dptr, align 8
965 %1 = getelementptr i32* %0, i64 65536
966 %2 = bitcast i32* %1 to i8*
970 define i8* @bam06() nounwind {
972 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
975 define i8* @bam07() nounwind {
977 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
980 define i8* @bam08() nounwind {
982 %0 = load i32** @lptr, align 8
983 %1 = getelementptr i32* %0, i64 65536
984 %2 = bitcast i32* %1 to i8*
988 define i8* @cat00(i64 %i) nounwind {
991 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
992 %2 = bitcast i32* %1 to i8*
996 define i8* @cxt00(i64 %i) nounwind {
999 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1000 %2 = bitcast i32* %1 to i8*
1004 define i8* @cat01(i64 %i) nounwind {
1007 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1008 %2 = bitcast i32* %1 to i8*
1012 define i8* @cxt01(i64 %i) nounwind {
1015 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1016 %2 = bitcast i32* %1 to i8*
1020 define i8* @cat02(i64 %i) nounwind {
1022 %0 = load i32** @ptr, align 8
1024 %2 = getelementptr i32* %0, i64 %1
1025 %3 = bitcast i32* %2 to i8*
1029 define i8* @cat03(i64 %i) nounwind {
1032 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1033 %2 = bitcast i32* %1 to i8*
1037 define i8* @cat04(i64 %i) nounwind {
1040 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1041 %2 = bitcast i32* %1 to i8*
1045 define i8* @cat05(i64 %i) nounwind {
1047 %0 = load i32** @dptr, align 8
1049 %2 = getelementptr i32* %0, i64 %1
1050 %3 = bitcast i32* %2 to i8*
1054 define i8* @cat06(i64 %i) nounwind {
1057 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1058 %2 = bitcast i32* %1 to i8*
1062 define i8* @cat07(i64 %i) nounwind {
1065 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1066 %2 = bitcast i32* %1 to i8*
1070 define i8* @cat08(i64 %i) nounwind {
1072 %0 = load i32** @lptr, align 8
1074 %2 = getelementptr i32* %0, i64 %1
1075 %3 = bitcast i32* %2 to i8*
1079 define i8* @cam00(i64 %i) nounwind {
1081 %0 = add i64 %i, 65536
1082 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
1083 %2 = bitcast i32* %1 to i8*
1087 define i8* @cxm00(i64 %i) nounwind {
1089 %0 = add i64 %i, 65536
1090 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1091 %2 = bitcast i32* %1 to i8*
1095 define i8* @cam01(i64 %i) nounwind {
1097 %0 = add i64 %i, 65536
1098 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1099 %2 = bitcast i32* %1 to i8*
1103 define i8* @cxm01(i64 %i) nounwind {
1105 %0 = add i64 %i, 65536
1106 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1107 %2 = bitcast i32* %1 to i8*
1111 define i8* @cam02(i64 %i) nounwind {
1113 %0 = load i32** @ptr, align 8
1114 %1 = add i64 %i, 65536
1115 %2 = getelementptr i32* %0, i64 %1
1116 %3 = bitcast i32* %2 to i8*
1120 define i8* @cam03(i64 %i) nounwind {
1122 %0 = add i64 %i, 65536
1123 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1124 %2 = bitcast i32* %1 to i8*
1128 define i8* @cam04(i64 %i) nounwind {
1130 %0 = add i64 %i, 65536
1131 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1132 %2 = bitcast i32* %1 to i8*
1136 define i8* @cam05(i64 %i) nounwind {
1138 %0 = load i32** @dptr, align 8
1139 %1 = add i64 %i, 65536
1140 %2 = getelementptr i32* %0, i64 %1
1141 %3 = bitcast i32* %2 to i8*
1145 define i8* @cam06(i64 %i) nounwind {
1147 %0 = add i64 %i, 65536
1148 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1149 %2 = bitcast i32* %1 to i8*
1153 define i8* @cam07(i64 %i) nounwind {
1155 %0 = add i64 %i, 65536
1156 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1157 %2 = bitcast i32* %1 to i8*
1161 define i8* @cam08(i64 %i) nounwind {
1163 %0 = load i32** @lptr, align 8
1164 %1 = add i64 %i, 65536
1165 %2 = getelementptr i32* %0, i64 %1
1166 %3 = bitcast i32* %2 to i8*
1170 define void @lcallee() nounwind {
1172 tail call void @x() nounwind
1173 tail call void @x() nounwind
1174 tail call void @x() nounwind
1175 tail call void @x() nounwind
1176 tail call void @x() nounwind
1177 tail call void @x() nounwind
1178 tail call void @x() nounwind
1184 define internal void @dcallee() nounwind {
1186 tail call void @y() nounwind
1187 tail call void @y() nounwind
1188 tail call void @y() nounwind
1189 tail call void @y() nounwind
1190 tail call void @y() nounwind
1191 tail call void @y() nounwind
1192 tail call void @y() nounwind
1198 define void ()* @address() nounwind {
1200 ret void ()* @callee
1203 declare void @callee()
1205 define void ()* @laddress() nounwind {
1207 ret void ()* @lcallee
1210 define void ()* @daddress() nounwind {
1212 ret void ()* @dcallee
1215 define void @caller() nounwind {
1217 tail call void @callee() nounwind
1218 tail call void @callee() nounwind
1222 define void @dcaller() nounwind {
1224 tail call void @dcallee() nounwind
1225 tail call void @dcallee() nounwind
1229 define void @lcaller() nounwind {
1231 tail call void @lcallee() nounwind
1232 tail call void @lcallee() nounwind
1236 define void @tailcaller() nounwind {
1238 tail call void @callee() nounwind
1242 define void @dtailcaller() nounwind {
1244 tail call void @dcallee() nounwind
1248 define void @ltailcaller() nounwind {
1250 tail call void @lcallee() nounwind
1254 define void @icaller() nounwind {
1256 %0 = load void ()** @ifunc, align 8
1257 tail call void %0() nounwind
1258 %1 = load void ()** @ifunc, align 8
1259 tail call void %1() nounwind
1263 define void @dicaller() nounwind {
1265 %0 = load void ()** @difunc, align 8
1266 tail call void %0() nounwind
1267 %1 = load void ()** @difunc, align 8
1268 tail call void %1() nounwind
1272 define void @licaller() nounwind {
1274 %0 = load void ()** @lifunc, align 8
1275 tail call void %0() nounwind
1276 %1 = load void ()** @lifunc, align 8
1277 tail call void %1() nounwind
1281 define void @itailcaller() nounwind {
1283 %0 = load void ()** @ifunc, align 8
1284 tail call void %0() nounwind
1285 %1 = load void ()** @ifunc, align 8
1286 tail call void %1() nounwind
1290 define void @ditailcaller() nounwind {
1292 %0 = load void ()** @difunc, align 8
1293 tail call void %0() nounwind
1297 define void @litailcaller() nounwind {
1299 %0 = load void ()** @lifunc, align 8
1300 tail call void %0() nounwind