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=static -code-model=small > %t
145 ; RUN: not grep leal %t
146 ; RUN: grep movl %t | count 91
147 ; RUN: not grep addl %t
148 ; RUN: not grep subl %t
149 ; RUN: grep leaq %t | count 70
150 ; RUN: grep movq %t | count 56
151 ; RUN: grep addq %t | count 20
152 ; RUN: grep subq %t | count 14
153 ; RUN: not grep movabs %t
154 ; RUN: not grep largecomm %t
155 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
156 ; RUN: not grep @GOT %t
157 ; RUN: not grep @GOTOFF %t
158 ; RUN: not grep @GOTPCREL %t
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 139
164 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-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
184 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small > %t
185 ; RUN: not grep leal %t
186 ; RUN: grep movl %t | count 95
187 ; RUN: not grep addl %t
188 ; RUN: not grep subl %t
189 ; RUN: grep leaq %t | count 89
190 ; RUN: grep movq %t | count 142
191 ; RUN: grep addq %t | count 30
192 ; RUN: grep subq %t | count 12
193 ; RUN: not grep movabs %t
194 ; RUN: not grep largecomm %t
195 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
196 ; RUN: grep @GOT %t | count 92
197 ; RUN: not grep @GOTOFF %t
198 ; RUN: grep @GOTPCREL %t | count 92
199 ; RUN: not grep @GOTPLT %t
200 ; RUN: not grep @PLT %t
201 ; RUN: not grep @PLTOFF %t
202 ; RUN: grep {call \\\*} %t | count 10
203 ; RUN: grep {%rip} %t | count 208
205 @src = external global [131072 x i32]
206 @dst = external global [131072 x i32]
207 @xsrc = external global [32 x i32]
208 @xdst = external global [32 x i32]
209 @ptr = external global i32*
210 @dsrc = global [131072 x i32] zeroinitializer, align 32
211 @ddst = global [131072 x i32] zeroinitializer, align 32
212 @dptr = global i32* null
213 @lsrc = internal global [131072 x i32] zeroinitializer
214 @ldst = internal global [131072 x i32] zeroinitializer
215 @lptr = internal global i32* null
216 @ifunc = external global void ()*
217 @difunc = global void ()* null
218 @lifunc = internal global void ()* null
219 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
220 @lxdst = internal global [32 x i32] zeroinitializer, align 32
221 @dxsrc = global [32 x i32] zeroinitializer, align 32
222 @dxdst = global [32 x i32] zeroinitializer, align 32
224 define void @foo00() nounwind {
226 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
227 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
231 define void @fxo00() nounwind {
233 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
234 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
238 define void @foo01() nounwind {
240 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
244 define void @fxo01() nounwind {
246 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
250 define void @foo02() nounwind {
252 %0 = load i32** @ptr, align 8
253 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
254 store i32 %1, i32* %0, align 4
258 define void @fxo02() nounwind {
260 %0 = load i32** @ptr, align 8
261 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
262 store i32 %1, i32* %0, align 4
266 define void @foo03() nounwind {
268 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
269 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
273 define void @foo04() nounwind {
275 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
279 define void @foo05() nounwind {
281 %0 = load i32** @dptr, align 8
282 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
283 store i32 %1, i32* %0, align 4
287 define void @foo06() nounwind {
289 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
290 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
294 define void @foo07() nounwind {
296 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
300 define void @foo08() nounwind {
302 %0 = load i32** @lptr, align 8
303 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
304 store i32 %1, i32* %0, align 4
308 define void @qux00() nounwind {
310 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
311 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
315 define void @qxx00() nounwind {
317 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
318 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
322 define void @qux01() nounwind {
324 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
328 define void @qxx01() nounwind {
330 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
334 define void @qux02() nounwind {
336 %0 = load i32** @ptr, align 8
337 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
338 %2 = getelementptr i32* %0, i64 16
339 store i32 %1, i32* %2, align 4
343 define void @qxx02() nounwind {
345 %0 = load i32** @ptr, align 8
346 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
347 %2 = getelementptr i32* %0, i64 16
348 store i32 %1, i32* %2, align 4
352 define void @qux03() nounwind {
354 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
355 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
359 define void @qux04() nounwind {
361 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
365 define void @qux05() nounwind {
367 %0 = load i32** @dptr, align 8
368 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
369 %2 = getelementptr i32* %0, i64 16
370 store i32 %1, i32* %2, align 4
374 define void @qux06() nounwind {
376 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
377 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
381 define void @qux07() nounwind {
383 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
387 define void @qux08() nounwind {
389 %0 = load i32** @lptr, align 8
390 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
391 %2 = getelementptr i32* %0, i64 16
392 store i32 %1, i32* %2, align 4
396 define void @ind00(i64 %i) nounwind {
398 %0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
399 %1 = load i32* %0, align 4
400 %2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
401 store i32 %1, i32* %2, align 4
405 define void @ixd00(i64 %i) nounwind {
407 %0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
408 %1 = load i32* %0, align 4
409 %2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
410 store i32 %1, i32* %2, align 4
414 define void @ind01(i64 %i) nounwind {
416 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
417 store i32* %0, i32** @ptr, align 8
421 define void @ixd01(i64 %i) nounwind {
423 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
424 store i32* %0, i32** @ptr, align 8
428 define void @ind02(i64 %i) nounwind {
430 %0 = load i32** @ptr, align 8
431 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
432 %2 = load i32* %1, align 4
433 %3 = getelementptr i32* %0, i64 %i
434 store i32 %2, i32* %3, align 4
438 define void @ixd02(i64 %i) nounwind {
440 %0 = load i32** @ptr, align 8
441 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
442 %2 = load i32* %1, align 4
443 %3 = getelementptr i32* %0, i64 %i
444 store i32 %2, i32* %3, align 4
448 define void @ind03(i64 %i) nounwind {
450 %0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
451 %1 = load i32* %0, align 4
452 %2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
453 store i32 %1, i32* %2, align 4
457 define void @ind04(i64 %i) nounwind {
459 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
460 store i32* %0, i32** @dptr, align 8
464 define void @ind05(i64 %i) nounwind {
466 %0 = load i32** @dptr, align 8
467 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
468 %2 = load i32* %1, align 4
469 %3 = getelementptr i32* %0, i64 %i
470 store i32 %2, i32* %3, align 4
474 define void @ind06(i64 %i) nounwind {
476 %0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
477 %1 = load i32* %0, align 4
478 %2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
479 store i32 %1, i32* %2, align 4
483 define void @ind07(i64 %i) nounwind {
485 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
486 store i32* %0, i32** @lptr, align 8
490 define void @ind08(i64 %i) nounwind {
492 %0 = load i32** @lptr, align 8
493 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
494 %2 = load i32* %1, align 4
495 %3 = getelementptr i32* %0, i64 %i
496 store i32 %2, i32* %3, align 4
500 define void @off00(i64 %i) nounwind {
503 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
504 %2 = load i32* %1, align 4
505 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
506 store i32 %2, i32* %3, align 4
510 define void @oxf00(i64 %i) nounwind {
513 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
514 %2 = load i32* %1, align 4
515 %3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
516 store i32 %2, i32* %3, align 4
520 define void @off01(i64 %i) nounwind {
522 %.sum = add i64 %i, 16
523 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
524 store i32* %0, i32** @ptr, align 8
528 define void @oxf01(i64 %i) nounwind {
530 %.sum = add i64 %i, 16
531 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum
532 store i32* %0, i32** @ptr, align 8
536 define void @off02(i64 %i) nounwind {
538 %0 = load i32** @ptr, align 8
540 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
541 %3 = load i32* %2, align 4
542 %4 = getelementptr i32* %0, i64 %1
543 store i32 %3, i32* %4, align 4
547 define void @oxf02(i64 %i) nounwind {
549 %0 = load i32** @ptr, align 8
551 %2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1
552 %3 = load i32* %2, align 4
553 %4 = getelementptr i32* %0, i64 %1
554 store i32 %3, i32* %4, align 4
558 define void @off03(i64 %i) nounwind {
561 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
562 %2 = load i32* %1, align 4
563 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
564 store i32 %2, i32* %3, align 4
568 define void @off04(i64 %i) nounwind {
570 %.sum = add i64 %i, 16
571 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
572 store i32* %0, i32** @dptr, align 8
576 define void @off05(i64 %i) nounwind {
578 %0 = load i32** @dptr, align 8
580 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
581 %3 = load i32* %2, align 4
582 %4 = getelementptr i32* %0, i64 %1
583 store i32 %3, i32* %4, align 4
587 define void @off06(i64 %i) nounwind {
590 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
591 %2 = load i32* %1, align 4
592 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
593 store i32 %2, i32* %3, align 4
597 define void @off07(i64 %i) nounwind {
599 %.sum = add i64 %i, 16
600 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
601 store i32* %0, i32** @lptr, align 8
605 define void @off08(i64 %i) nounwind {
607 %0 = load i32** @lptr, align 8
609 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
610 %3 = load i32* %2, align 4
611 %4 = getelementptr i32* %0, i64 %1
612 store i32 %3, i32* %4, align 4
616 define void @moo00(i64 %i) nounwind {
618 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
619 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
623 define void @moo01(i64 %i) nounwind {
625 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
629 define void @moo02(i64 %i) nounwind {
631 %0 = load i32** @ptr, align 8
632 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
633 %2 = getelementptr i32* %0, i64 65536
634 store i32 %1, i32* %2, align 4
638 define void @moo03(i64 %i) nounwind {
640 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
641 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
645 define void @moo04(i64 %i) nounwind {
647 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
651 define void @moo05(i64 %i) nounwind {
653 %0 = load i32** @dptr, align 8
654 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
655 %2 = getelementptr i32* %0, i64 65536
656 store i32 %1, i32* %2, align 4
660 define void @moo06(i64 %i) nounwind {
662 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
663 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
667 define void @moo07(i64 %i) nounwind {
669 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
673 define void @moo08(i64 %i) nounwind {
675 %0 = load i32** @lptr, align 8
676 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
677 %2 = getelementptr i32* %0, i64 65536
678 store i32 %1, i32* %2, align 4
682 define void @big00(i64 %i) nounwind {
684 %0 = add i64 %i, 65536
685 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
686 %2 = load i32* %1, align 4
687 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
688 store i32 %2, i32* %3, align 4
692 define void @big01(i64 %i) nounwind {
694 %.sum = add i64 %i, 65536
695 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
696 store i32* %0, i32** @ptr, align 8
700 define void @big02(i64 %i) nounwind {
702 %0 = load i32** @ptr, align 8
703 %1 = add i64 %i, 65536
704 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
705 %3 = load i32* %2, align 4
706 %4 = getelementptr i32* %0, i64 %1
707 store i32 %3, i32* %4, align 4
711 define void @big03(i64 %i) nounwind {
713 %0 = add i64 %i, 65536
714 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
715 %2 = load i32* %1, align 4
716 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
717 store i32 %2, i32* %3, align 4
721 define void @big04(i64 %i) nounwind {
723 %.sum = add i64 %i, 65536
724 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
725 store i32* %0, i32** @dptr, align 8
729 define void @big05(i64 %i) nounwind {
731 %0 = load i32** @dptr, align 8
732 %1 = add i64 %i, 65536
733 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
734 %3 = load i32* %2, align 4
735 %4 = getelementptr i32* %0, i64 %1
736 store i32 %3, i32* %4, align 4
740 define void @big06(i64 %i) nounwind {
742 %0 = add i64 %i, 65536
743 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
744 %2 = load i32* %1, align 4
745 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
746 store i32 %2, i32* %3, align 4
750 define void @big07(i64 %i) nounwind {
752 %.sum = add i64 %i, 65536
753 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
754 store i32* %0, i32** @lptr, align 8
758 define void @big08(i64 %i) nounwind {
760 %0 = load i32** @lptr, align 8
761 %1 = add i64 %i, 65536
762 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
763 %3 = load i32* %2, align 4
764 %4 = getelementptr i32* %0, i64 %1
765 store i32 %3, i32* %4, align 4
769 define i8* @bar00() nounwind {
771 ret i8* bitcast ([131072 x i32]* @src to i8*)
774 define i8* @bxr00() nounwind {
776 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
779 define i8* @bar01() nounwind {
781 ret i8* bitcast ([131072 x i32]* @dst to i8*)
784 define i8* @bxr01() nounwind {
786 ret i8* bitcast ([32 x i32]* @xdst to i8*)
789 define i8* @bar02() nounwind {
791 ret i8* bitcast (i32** @ptr to i8*)
794 define i8* @bar03() nounwind {
796 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
799 define i8* @bar04() nounwind {
801 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
804 define i8* @bar05() nounwind {
806 ret i8* bitcast (i32** @dptr to i8*)
809 define i8* @bar06() nounwind {
811 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
814 define i8* @bar07() nounwind {
816 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
819 define i8* @bar08() nounwind {
821 ret i8* bitcast (i32** @lptr to i8*)
824 define i8* @har00() nounwind {
826 ret i8* bitcast ([131072 x i32]* @src to i8*)
829 define i8* @hxr00() nounwind {
831 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
834 define i8* @har01() nounwind {
836 ret i8* bitcast ([131072 x i32]* @dst to i8*)
839 define i8* @hxr01() nounwind {
841 ret i8* bitcast ([32 x i32]* @xdst to i8*)
844 define i8* @har02() nounwind {
846 %0 = load i32** @ptr, align 8
847 %1 = bitcast i32* %0 to i8*
851 define i8* @har03() nounwind {
853 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
856 define i8* @har04() nounwind {
858 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
861 define i8* @har05() nounwind {
863 %0 = load i32** @dptr, align 8
864 %1 = bitcast i32* %0 to i8*
868 define i8* @har06() nounwind {
870 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
873 define i8* @har07() nounwind {
875 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
878 define i8* @har08() nounwind {
880 %0 = load i32** @lptr, align 8
881 %1 = bitcast i32* %0 to i8*
885 define i8* @bat00() nounwind {
887 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
890 define i8* @bxt00() nounwind {
892 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
895 define i8* @bat01() nounwind {
897 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
900 define i8* @bxt01() nounwind {
902 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
905 define i8* @bat02() nounwind {
907 %0 = load i32** @ptr, align 8
908 %1 = getelementptr i32* %0, i64 16
909 %2 = bitcast i32* %1 to i8*
913 define i8* @bat03() nounwind {
915 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
918 define i8* @bat04() nounwind {
920 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
923 define i8* @bat05() nounwind {
925 %0 = load i32** @dptr, align 8
926 %1 = getelementptr i32* %0, i64 16
927 %2 = bitcast i32* %1 to i8*
931 define i8* @bat06() nounwind {
933 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
936 define i8* @bat07() nounwind {
938 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
941 define i8* @bat08() nounwind {
943 %0 = load i32** @lptr, align 8
944 %1 = getelementptr i32* %0, i64 16
945 %2 = bitcast i32* %1 to i8*
949 define i8* @bam00() nounwind {
951 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
954 define i8* @bam01() nounwind {
956 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
959 define i8* @bxm01() nounwind {
961 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
964 define i8* @bam02() nounwind {
966 %0 = load i32** @ptr, align 8
967 %1 = getelementptr i32* %0, i64 65536
968 %2 = bitcast i32* %1 to i8*
972 define i8* @bam03() nounwind {
974 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
977 define i8* @bam04() nounwind {
979 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
982 define i8* @bam05() nounwind {
984 %0 = load i32** @dptr, align 8
985 %1 = getelementptr i32* %0, i64 65536
986 %2 = bitcast i32* %1 to i8*
990 define i8* @bam06() nounwind {
992 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
995 define i8* @bam07() nounwind {
997 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
1000 define i8* @bam08() nounwind {
1002 %0 = load i32** @lptr, align 8
1003 %1 = getelementptr i32* %0, i64 65536
1004 %2 = bitcast i32* %1 to i8*
1008 define i8* @cat00(i64 %i) nounwind {
1011 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
1012 %2 = bitcast i32* %1 to i8*
1016 define i8* @cxt00(i64 %i) nounwind {
1019 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1020 %2 = bitcast i32* %1 to i8*
1024 define i8* @cat01(i64 %i) nounwind {
1027 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1028 %2 = bitcast i32* %1 to i8*
1032 define i8* @cxt01(i64 %i) nounwind {
1035 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1036 %2 = bitcast i32* %1 to i8*
1040 define i8* @cat02(i64 %i) nounwind {
1042 %0 = load i32** @ptr, align 8
1044 %2 = getelementptr i32* %0, i64 %1
1045 %3 = bitcast i32* %2 to i8*
1049 define i8* @cat03(i64 %i) nounwind {
1052 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1053 %2 = bitcast i32* %1 to i8*
1057 define i8* @cat04(i64 %i) nounwind {
1060 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1061 %2 = bitcast i32* %1 to i8*
1065 define i8* @cat05(i64 %i) nounwind {
1067 %0 = load i32** @dptr, align 8
1069 %2 = getelementptr i32* %0, i64 %1
1070 %3 = bitcast i32* %2 to i8*
1074 define i8* @cat06(i64 %i) nounwind {
1077 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1078 %2 = bitcast i32* %1 to i8*
1082 define i8* @cat07(i64 %i) nounwind {
1085 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1086 %2 = bitcast i32* %1 to i8*
1090 define i8* @cat08(i64 %i) nounwind {
1092 %0 = load i32** @lptr, align 8
1094 %2 = getelementptr i32* %0, i64 %1
1095 %3 = bitcast i32* %2 to i8*
1099 define i8* @cam00(i64 %i) nounwind {
1101 %0 = add i64 %i, 65536
1102 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
1103 %2 = bitcast i32* %1 to i8*
1107 define i8* @cxm00(i64 %i) nounwind {
1109 %0 = add i64 %i, 65536
1110 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1111 %2 = bitcast i32* %1 to i8*
1115 define i8* @cam01(i64 %i) nounwind {
1117 %0 = add i64 %i, 65536
1118 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1119 %2 = bitcast i32* %1 to i8*
1123 define i8* @cxm01(i64 %i) nounwind {
1125 %0 = add i64 %i, 65536
1126 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1127 %2 = bitcast i32* %1 to i8*
1131 define i8* @cam02(i64 %i) nounwind {
1133 %0 = load i32** @ptr, align 8
1134 %1 = add i64 %i, 65536
1135 %2 = getelementptr i32* %0, i64 %1
1136 %3 = bitcast i32* %2 to i8*
1140 define i8* @cam03(i64 %i) nounwind {
1142 %0 = add i64 %i, 65536
1143 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1144 %2 = bitcast i32* %1 to i8*
1148 define i8* @cam04(i64 %i) nounwind {
1150 %0 = add i64 %i, 65536
1151 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1152 %2 = bitcast i32* %1 to i8*
1156 define i8* @cam05(i64 %i) nounwind {
1158 %0 = load i32** @dptr, align 8
1159 %1 = add i64 %i, 65536
1160 %2 = getelementptr i32* %0, i64 %1
1161 %3 = bitcast i32* %2 to i8*
1165 define i8* @cam06(i64 %i) nounwind {
1167 %0 = add i64 %i, 65536
1168 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1169 %2 = bitcast i32* %1 to i8*
1173 define i8* @cam07(i64 %i) nounwind {
1175 %0 = add i64 %i, 65536
1176 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1177 %2 = bitcast i32* %1 to i8*
1181 define i8* @cam08(i64 %i) nounwind {
1183 %0 = load i32** @lptr, align 8
1184 %1 = add i64 %i, 65536
1185 %2 = getelementptr i32* %0, i64 %1
1186 %3 = bitcast i32* %2 to i8*
1190 define void @lcallee() nounwind {
1192 tail call void @x() nounwind
1193 tail call void @x() nounwind
1194 tail call void @x() nounwind
1195 tail call void @x() nounwind
1196 tail call void @x() nounwind
1197 tail call void @x() nounwind
1198 tail call void @x() nounwind
1204 define internal void @dcallee() nounwind {
1206 tail call void @y() nounwind
1207 tail call void @y() nounwind
1208 tail call void @y() nounwind
1209 tail call void @y() nounwind
1210 tail call void @y() nounwind
1211 tail call void @y() nounwind
1212 tail call void @y() nounwind
1218 define void ()* @address() nounwind {
1220 ret void ()* @callee
1223 declare void @callee()
1225 define void ()* @laddress() nounwind {
1227 ret void ()* @lcallee
1230 define void ()* @daddress() nounwind {
1232 ret void ()* @dcallee
1235 define void @caller() nounwind {
1237 tail call void @callee() nounwind
1238 tail call void @callee() nounwind
1242 define void @dcaller() nounwind {
1244 tail call void @dcallee() nounwind
1245 tail call void @dcallee() nounwind
1249 define void @lcaller() nounwind {
1251 tail call void @lcallee() nounwind
1252 tail call void @lcallee() nounwind
1256 define void @tailcaller() nounwind {
1258 tail call void @callee() nounwind
1262 define void @dtailcaller() nounwind {
1264 tail call void @dcallee() nounwind
1268 define void @ltailcaller() nounwind {
1270 tail call void @lcallee() nounwind
1274 define void @icaller() nounwind {
1276 %0 = load void ()** @ifunc, align 8
1277 tail call void %0() nounwind
1278 %1 = load void ()** @ifunc, align 8
1279 tail call void %1() nounwind
1283 define void @dicaller() nounwind {
1285 %0 = load void ()** @difunc, align 8
1286 tail call void %0() nounwind
1287 %1 = load void ()** @difunc, align 8
1288 tail call void %1() nounwind
1292 define void @licaller() nounwind {
1294 %0 = load void ()** @lifunc, align 8
1295 tail call void %0() nounwind
1296 %1 = load void ()** @lifunc, align 8
1297 tail call void %1() nounwind
1301 define void @itailcaller() nounwind {
1303 %0 = load void ()** @ifunc, align 8
1304 tail call void %0() nounwind
1305 %1 = load void ()** @ifunc, align 8
1306 tail call void %1() nounwind
1310 define void @ditailcaller() nounwind {
1312 %0 = load void ()** @difunc, align 8
1313 tail call void %0() nounwind
1317 define void @litailcaller() nounwind {
1319 %0 = load void ()** @lifunc, align 8
1320 tail call void %0() nounwind