blob: f1fec3f8b94da7bb20709e05169eafa82fef13eb [file] [log] [blame]
Dan Gohman318f5052009-03-14 02:35:10 +00001; 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
Rafael Espindolab2157762009-04-12 23:00:38 +000046; RUN: grep leaq %t | count 70
Dan Gohman318f5052009-03-14 02:35:10 +000047; 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
Rafael Espindolab2157762009-04-12 23:00:38 +000060; RUN: grep {%rip} %t | count 139
Dan Gohman318f5052009-03-14 02:35:10 +000061; 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
81
82
83
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
Rafael Espindolab2157762009-04-12 23:00:38 +0000149; RUN: grep leaq %t | count 70
Dan Gohman318f5052009-03-14 02:35:10 +0000150; 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
Rafael Espindolab2157762009-04-12 23:00:38 +0000163; RUN: grep {%rip} %t | count 139
Dan Gohman318f5052009-03-14 02:35:10 +0000164; 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
204
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
223
224define void @foo00() nounwind {
225entry:
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
228 ret void
229}
230
231define void @fxo00() nounwind {
232entry:
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
235 ret void
236}
237
238define void @foo01() nounwind {
239entry:
240 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
241 ret void
242}
243
244define void @fxo01() nounwind {
245entry:
246 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
247 ret void
248}
249
250define void @foo02() nounwind {
251entry:
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
255 ret void
256}
257
258define void @fxo02() nounwind {
259entry:
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
263 ret void
264}
265
266define void @foo03() nounwind {
267entry:
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
270 ret void
271}
272
273define void @foo04() nounwind {
274entry:
275 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
276 ret void
277}
278
279define void @foo05() nounwind {
280entry:
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
284 ret void
285}
286
287define void @foo06() nounwind {
288entry:
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
291 ret void
292}
293
294define void @foo07() nounwind {
295entry:
296 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
297 ret void
298}
299
300define void @foo08() nounwind {
301entry:
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
305 ret void
306}
307
308define void @qux00() nounwind {
309entry:
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
312 ret void
313}
314
315define void @qxx00() nounwind {
316entry:
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
319 ret void
320}
321
322define void @qux01() nounwind {
323entry:
324 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
325 ret void
326}
327
328define void @qxx01() nounwind {
329entry:
330 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
331 ret void
332}
333
334define void @qux02() nounwind {
335entry:
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
340 ret void
341}
342
343define void @qxx02() nounwind {
344entry:
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
349 ret void
350}
351
352define void @qux03() nounwind {
353entry:
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
356 ret void
357}
358
359define void @qux04() nounwind {
360entry:
361 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
362 ret void
363}
364
365define void @qux05() nounwind {
366entry:
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
371 ret void
372}
373
374define void @qux06() nounwind {
375entry:
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
378 ret void
379}
380
381define void @qux07() nounwind {
382entry:
383 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
384 ret void
385}
386
387define void @qux08() nounwind {
388entry:
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
393 ret void
394}
395
396define void @ind00(i64 %i) nounwind {
397entry:
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
402 ret void
403}
404
405define void @ixd00(i64 %i) nounwind {
406entry:
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
411 ret void
412}
413
414define void @ind01(i64 %i) nounwind {
415entry:
416 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
417 store i32* %0, i32** @ptr, align 8
418 ret void
419}
420
421define void @ixd01(i64 %i) nounwind {
422entry:
423 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
424 store i32* %0, i32** @ptr, align 8
425 ret void
426}
427
428define void @ind02(i64 %i) nounwind {
429entry:
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
435 ret void
436}
437
438define void @ixd02(i64 %i) nounwind {
439entry:
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
445 ret void
446}
447
448define void @ind03(i64 %i) nounwind {
449entry:
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
454 ret void
455}
456
457define void @ind04(i64 %i) nounwind {
458entry:
459 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
460 store i32* %0, i32** @dptr, align 8
461 ret void
462}
463
464define void @ind05(i64 %i) nounwind {
465entry:
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
471 ret void
472}
473
474define void @ind06(i64 %i) nounwind {
475entry:
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
480 ret void
481}
482
483define void @ind07(i64 %i) nounwind {
484entry:
485 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
486 store i32* %0, i32** @lptr, align 8
487 ret void
488}
489
490define void @ind08(i64 %i) nounwind {
491entry:
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
497 ret void
498}
499
500define void @off00(i64 %i) nounwind {
501entry:
502 %0 = add i64 %i, 16
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
507 ret void
508}
509
510define void @oxf00(i64 %i) nounwind {
511entry:
512 %0 = add i64 %i, 16
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
517 ret void
518}
519
520define void @off01(i64 %i) nounwind {
521entry:
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
525 ret void
526}
527
528define void @oxf01(i64 %i) nounwind {
529entry:
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
533 ret void
534}
535
536define void @off02(i64 %i) nounwind {
537entry:
538 %0 = load i32** @ptr, align 8
539 %1 = add i64 %i, 16
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
544 ret void
545}
546
547define void @oxf02(i64 %i) nounwind {
548entry:
549 %0 = load i32** @ptr, align 8
550 %1 = add i64 %i, 16
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
555 ret void
556}
557
558define void @off03(i64 %i) nounwind {
559entry:
560 %0 = add i64 %i, 16
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
565 ret void
566}
567
568define void @off04(i64 %i) nounwind {
569entry:
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
573 ret void
574}
575
576define void @off05(i64 %i) nounwind {
577entry:
578 %0 = load i32** @dptr, align 8
579 %1 = add i64 %i, 16
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
584 ret void
585}
586
587define void @off06(i64 %i) nounwind {
588entry:
589 %0 = add i64 %i, 16
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
594 ret void
595}
596
597define void @off07(i64 %i) nounwind {
598entry:
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
602 ret void
603}
604
605define void @off08(i64 %i) nounwind {
606entry:
607 %0 = load i32** @lptr, align 8
608 %1 = add i64 %i, 16
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
613 ret void
614}
615
616define void @moo00(i64 %i) nounwind {
617entry:
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
620 ret void
621}
622
623define void @moo01(i64 %i) nounwind {
624entry:
625 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
626 ret void
627}
628
629define void @moo02(i64 %i) nounwind {
630entry:
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
635 ret void
636}
637
638define void @moo03(i64 %i) nounwind {
639entry:
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
642 ret void
643}
644
645define void @moo04(i64 %i) nounwind {
646entry:
647 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
648 ret void
649}
650
651define void @moo05(i64 %i) nounwind {
652entry:
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
657 ret void
658}
659
660define void @moo06(i64 %i) nounwind {
661entry:
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
664 ret void
665}
666
667define void @moo07(i64 %i) nounwind {
668entry:
669 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
670 ret void
671}
672
673define void @moo08(i64 %i) nounwind {
674entry:
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
679 ret void
680}
681
682define void @big00(i64 %i) nounwind {
683entry:
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
689 ret void
690}
691
692define void @big01(i64 %i) nounwind {
693entry:
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
697 ret void
698}
699
700define void @big02(i64 %i) nounwind {
701entry:
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
708 ret void
709}
710
711define void @big03(i64 %i) nounwind {
712entry:
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
718 ret void
719}
720
721define void @big04(i64 %i) nounwind {
722entry:
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
726 ret void
727}
728
729define void @big05(i64 %i) nounwind {
730entry:
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
737 ret void
738}
739
740define void @big06(i64 %i) nounwind {
741entry:
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
747 ret void
748}
749
750define void @big07(i64 %i) nounwind {
751entry:
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
755 ret void
756}
757
758define void @big08(i64 %i) nounwind {
759entry:
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
766 ret void
767}
768
769define i8* @bar00() nounwind {
770entry:
771 ret i8* bitcast ([131072 x i32]* @src to i8*)
772}
773
774define i8* @bxr00() nounwind {
775entry:
776 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
777}
778
779define i8* @bar01() nounwind {
780entry:
781 ret i8* bitcast ([131072 x i32]* @dst to i8*)
782}
783
784define i8* @bxr01() nounwind {
785entry:
786 ret i8* bitcast ([32 x i32]* @xdst to i8*)
787}
788
789define i8* @bar02() nounwind {
790entry:
791 ret i8* bitcast (i32** @ptr to i8*)
792}
793
794define i8* @bar03() nounwind {
795entry:
796 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
797}
798
799define i8* @bar04() nounwind {
800entry:
801 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
802}
803
804define i8* @bar05() nounwind {
805entry:
806 ret i8* bitcast (i32** @dptr to i8*)
807}
808
809define i8* @bar06() nounwind {
810entry:
811 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
812}
813
814define i8* @bar07() nounwind {
815entry:
816 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
817}
818
819define i8* @bar08() nounwind {
820entry:
821 ret i8* bitcast (i32** @lptr to i8*)
822}
823
824define i8* @har00() nounwind {
825entry:
826 ret i8* bitcast ([131072 x i32]* @src to i8*)
827}
828
829define i8* @hxr00() nounwind {
830entry:
831 ret i8* bitcast ([32 x i32]* @xsrc to i8*)
832}
833
834define i8* @har01() nounwind {
835entry:
836 ret i8* bitcast ([131072 x i32]* @dst to i8*)
837}
838
839define i8* @hxr01() nounwind {
840entry:
841 ret i8* bitcast ([32 x i32]* @xdst to i8*)
842}
843
844define i8* @har02() nounwind {
845entry:
846 %0 = load i32** @ptr, align 8
847 %1 = bitcast i32* %0 to i8*
848 ret i8* %1
849}
850
851define i8* @har03() nounwind {
852entry:
853 ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
854}
855
856define i8* @har04() nounwind {
857entry:
858 ret i8* bitcast ([131072 x i32]* @ddst to i8*)
859}
860
861define i8* @har05() nounwind {
862entry:
863 %0 = load i32** @dptr, align 8
864 %1 = bitcast i32* %0 to i8*
865 ret i8* %1
866}
867
868define i8* @har06() nounwind {
869entry:
870 ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
871}
872
873define i8* @har07() nounwind {
874entry:
875 ret i8* bitcast ([131072 x i32]* @ldst to i8*)
876}
877
878define i8* @har08() nounwind {
879entry:
880 %0 = load i32** @lptr, align 8
881 %1 = bitcast i32* %0 to i8*
882 ret i8* %1
883}
884
885define i8* @bat00() nounwind {
886entry:
887 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
888}
889
890define i8* @bxt00() nounwind {
891entry:
892 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
893}
894
895define i8* @bat01() nounwind {
896entry:
897 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
898}
899
900define i8* @bxt01() nounwind {
901entry:
902 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
903}
904
905define i8* @bat02() nounwind {
906entry:
907 %0 = load i32** @ptr, align 8
908 %1 = getelementptr i32* %0, i64 16
909 %2 = bitcast i32* %1 to i8*
910 ret i8* %2
911}
912
913define i8* @bat03() nounwind {
914entry:
915 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
916}
917
918define i8* @bat04() nounwind {
919entry:
920 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
921}
922
923define i8* @bat05() nounwind {
924entry:
925 %0 = load i32** @dptr, align 8
926 %1 = getelementptr i32* %0, i64 16
927 %2 = bitcast i32* %1 to i8*
928 ret i8* %2
929}
930
931define i8* @bat06() nounwind {
932entry:
933 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
934}
935
936define i8* @bat07() nounwind {
937entry:
938 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
939}
940
941define i8* @bat08() nounwind {
942entry:
943 %0 = load i32** @lptr, align 8
944 %1 = getelementptr i32* %0, i64 16
945 %2 = bitcast i32* %1 to i8*
946 ret i8* %2
947}
948
949define i8* @bam00() nounwind {
950entry:
951 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
952}
953
954define i8* @bam01() nounwind {
955entry:
956 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
957}
958
959define i8* @bxm01() nounwind {
960entry:
961 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
962}
963
964define i8* @bam02() nounwind {
965entry:
966 %0 = load i32** @ptr, align 8
967 %1 = getelementptr i32* %0, i64 65536
968 %2 = bitcast i32* %1 to i8*
969 ret i8* %2
970}
971
972define i8* @bam03() nounwind {
973entry:
974 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
975}
976
977define i8* @bam04() nounwind {
978entry:
979 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
980}
981
982define i8* @bam05() nounwind {
983entry:
984 %0 = load i32** @dptr, align 8
985 %1 = getelementptr i32* %0, i64 65536
986 %2 = bitcast i32* %1 to i8*
987 ret i8* %2
988}
989
990define i8* @bam06() nounwind {
991entry:
992 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
993}
994
995define i8* @bam07() nounwind {
996entry:
997 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
998}
999
1000define i8* @bam08() nounwind {
1001entry:
1002 %0 = load i32** @lptr, align 8
1003 %1 = getelementptr i32* %0, i64 65536
1004 %2 = bitcast i32* %1 to i8*
1005 ret i8* %2
1006}
1007
1008define i8* @cat00(i64 %i) nounwind {
1009entry:
1010 %0 = add i64 %i, 16
1011 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
1012 %2 = bitcast i32* %1 to i8*
1013 ret i8* %2
1014}
1015
1016define i8* @cxt00(i64 %i) nounwind {
1017entry:
1018 %0 = add i64 %i, 16
1019 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1020 %2 = bitcast i32* %1 to i8*
1021 ret i8* %2
1022}
1023
1024define i8* @cat01(i64 %i) nounwind {
1025entry:
1026 %0 = add i64 %i, 16
1027 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1028 %2 = bitcast i32* %1 to i8*
1029 ret i8* %2
1030}
1031
1032define i8* @cxt01(i64 %i) nounwind {
1033entry:
1034 %0 = add i64 %i, 16
1035 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1036 %2 = bitcast i32* %1 to i8*
1037 ret i8* %2
1038}
1039
1040define i8* @cat02(i64 %i) nounwind {
1041entry:
1042 %0 = load i32** @ptr, align 8
1043 %1 = add i64 %i, 16
1044 %2 = getelementptr i32* %0, i64 %1
1045 %3 = bitcast i32* %2 to i8*
1046 ret i8* %3
1047}
1048
1049define i8* @cat03(i64 %i) nounwind {
1050entry:
1051 %0 = add i64 %i, 16
1052 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1053 %2 = bitcast i32* %1 to i8*
1054 ret i8* %2
1055}
1056
1057define i8* @cat04(i64 %i) nounwind {
1058entry:
1059 %0 = add i64 %i, 16
1060 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1061 %2 = bitcast i32* %1 to i8*
1062 ret i8* %2
1063}
1064
1065define i8* @cat05(i64 %i) nounwind {
1066entry:
1067 %0 = load i32** @dptr, align 8
1068 %1 = add i64 %i, 16
1069 %2 = getelementptr i32* %0, i64 %1
1070 %3 = bitcast i32* %2 to i8*
1071 ret i8* %3
1072}
1073
1074define i8* @cat06(i64 %i) nounwind {
1075entry:
1076 %0 = add i64 %i, 16
1077 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1078 %2 = bitcast i32* %1 to i8*
1079 ret i8* %2
1080}
1081
1082define i8* @cat07(i64 %i) nounwind {
1083entry:
1084 %0 = add i64 %i, 16
1085 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1086 %2 = bitcast i32* %1 to i8*
1087 ret i8* %2
1088}
1089
1090define i8* @cat08(i64 %i) nounwind {
1091entry:
1092 %0 = load i32** @lptr, align 8
1093 %1 = add i64 %i, 16
1094 %2 = getelementptr i32* %0, i64 %1
1095 %3 = bitcast i32* %2 to i8*
1096 ret i8* %3
1097}
1098
1099define i8* @cam00(i64 %i) nounwind {
1100entry:
1101 %0 = add i64 %i, 65536
1102 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
1103 %2 = bitcast i32* %1 to i8*
1104 ret i8* %2
1105}
1106
1107define i8* @cxm00(i64 %i) nounwind {
1108entry:
1109 %0 = add i64 %i, 65536
1110 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
1111 %2 = bitcast i32* %1 to i8*
1112 ret i8* %2
1113}
1114
1115define i8* @cam01(i64 %i) nounwind {
1116entry:
1117 %0 = add i64 %i, 65536
1118 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
1119 %2 = bitcast i32* %1 to i8*
1120 ret i8* %2
1121}
1122
1123define i8* @cxm01(i64 %i) nounwind {
1124entry:
1125 %0 = add i64 %i, 65536
1126 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
1127 %2 = bitcast i32* %1 to i8*
1128 ret i8* %2
1129}
1130
1131define i8* @cam02(i64 %i) nounwind {
1132entry:
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*
1137 ret i8* %3
1138}
1139
1140define i8* @cam03(i64 %i) nounwind {
1141entry:
1142 %0 = add i64 %i, 65536
1143 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
1144 %2 = bitcast i32* %1 to i8*
1145 ret i8* %2
1146}
1147
1148define i8* @cam04(i64 %i) nounwind {
1149entry:
1150 %0 = add i64 %i, 65536
1151 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
1152 %2 = bitcast i32* %1 to i8*
1153 ret i8* %2
1154}
1155
1156define i8* @cam05(i64 %i) nounwind {
1157entry:
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*
1162 ret i8* %3
1163}
1164
1165define i8* @cam06(i64 %i) nounwind {
1166entry:
1167 %0 = add i64 %i, 65536
1168 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
1169 %2 = bitcast i32* %1 to i8*
1170 ret i8* %2
1171}
1172
1173define i8* @cam07(i64 %i) nounwind {
1174entry:
1175 %0 = add i64 %i, 65536
1176 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
1177 %2 = bitcast i32* %1 to i8*
1178 ret i8* %2
1179}
1180
1181define i8* @cam08(i64 %i) nounwind {
1182entry:
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*
1187 ret i8* %3
1188}
1189
1190define void @lcallee() nounwind {
1191entry:
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
1199 ret void
1200}
1201
1202declare void @x()
1203
1204define internal void @dcallee() nounwind {
1205entry:
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
1213 ret void
1214}
1215
1216declare void @y()
1217
1218define void ()* @address() nounwind {
1219entry:
1220 ret void ()* @callee
1221}
1222
1223declare void @callee()
1224
1225define void ()* @laddress() nounwind {
1226entry:
1227 ret void ()* @lcallee
1228}
1229
1230define void ()* @daddress() nounwind {
1231entry:
1232 ret void ()* @dcallee
1233}
1234
1235define void @caller() nounwind {
1236entry:
1237 tail call void @callee() nounwind
1238 tail call void @callee() nounwind
1239 ret void
1240}
1241
1242define void @dcaller() nounwind {
1243entry:
1244 tail call void @dcallee() nounwind
1245 tail call void @dcallee() nounwind
1246 ret void
1247}
1248
1249define void @lcaller() nounwind {
1250entry:
1251 tail call void @lcallee() nounwind
1252 tail call void @lcallee() nounwind
1253 ret void
1254}
1255
1256define void @tailcaller() nounwind {
1257entry:
1258 tail call void @callee() nounwind
1259 ret void
1260}
1261
1262define void @dtailcaller() nounwind {
1263entry:
1264 tail call void @dcallee() nounwind
1265 ret void
1266}
1267
1268define void @ltailcaller() nounwind {
1269entry:
1270 tail call void @lcallee() nounwind
1271 ret void
1272}
1273
1274define void @icaller() nounwind {
1275entry:
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
1280 ret void
1281}
1282
1283define void @dicaller() nounwind {
1284entry:
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
1289 ret void
1290}
1291
1292define void @licaller() nounwind {
1293entry:
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
1298 ret void
1299}
1300
1301define void @itailcaller() nounwind {
1302entry:
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
1307 ret void
1308}
1309
1310define void @ditailcaller() nounwind {
1311entry:
1312 %0 = load void ()** @difunc, align 8
1313 tail call void %0() nounwind
1314 ret void
1315}
1316
1317define void @litailcaller() nounwind {
1318entry:
1319 %0 = load void ()** @lifunc, align 8
1320 tail call void %0() nounwind
1321 ret void
1322}