Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/abi-isel.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
31 @dxsrc = global [32 x i32] zeroinitializer, align 32 | 31 @dxsrc = global [32 x i32] zeroinitializer, align 32 |
32 @dxdst = global [32 x i32] zeroinitializer, align 32 | 32 @dxdst = global [32 x i32] zeroinitializer, align 32 |
33 | 33 |
34 define void @foo00() nounwind { | 34 define void @foo00() nounwind { |
35 entry: | 35 entry: |
36 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4 | 36 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 |
37 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4 | 37 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4 |
38 ret void | 38 ret void |
39 | 39 |
40 ; LINUX-64-STATIC-LABEL: foo00: | 40 ; LINUX-64-STATIC-LABEL: foo00: |
41 ; LINUX-64-STATIC: movl src(%rip), [[EAX:%e.x]] | 41 ; LINUX-64-STATIC: movl src(%rip), [[EAX:%e.x]] |
42 ; LINUX-64-STATIC: movl [[EAX]], dst | 42 ; LINUX-64-STATIC: movl [[EAX]], dst |
103 ; DARWIN-64-PIC-NEXT: ret | 103 ; DARWIN-64-PIC-NEXT: ret |
104 } | 104 } |
105 | 105 |
106 define void @fxo00() nounwind { | 106 define void @fxo00() nounwind { |
107 entry: | 107 entry: |
108 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4 | 108 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 |
109 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4 | 109 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4 |
110 ret void | 110 ret void |
111 | 111 |
112 ; LINUX-64-STATIC-LABEL: fxo00: | 112 ; LINUX-64-STATIC-LABEL: fxo00: |
113 ; LINUX-64-STATIC: movl xsrc(%rip), [[EAX:%e.x]] | 113 ; LINUX-64-STATIC: movl xsrc(%rip), [[EAX:%e.x]] |
114 ; LINUX-64-STATIC: movl [[EAX]], xdst | 114 ; LINUX-64-STATIC: movl [[EAX]], xdst |
175 ; DARWIN-64-PIC-NEXT: ret | 175 ; DARWIN-64-PIC-NEXT: ret |
176 } | 176 } |
177 | 177 |
178 define void @foo01() nounwind { | 178 define void @foo01() nounwind { |
179 entry: | 179 entry: |
180 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8 | 180 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8 |
181 ret void | 181 ret void |
182 ; LINUX-64-STATIC-LABEL: foo01: | 182 ; LINUX-64-STATIC-LABEL: foo01: |
183 ; LINUX-64-STATIC: movq $dst, ptr | 183 ; LINUX-64-STATIC: movq $dst, ptr |
184 ; LINUX-64-STATIC: ret | 184 ; LINUX-64-STATIC: ret |
185 | 185 |
235 ; DARWIN-64-PIC-NEXT: ret | 235 ; DARWIN-64-PIC-NEXT: ret |
236 } | 236 } |
237 | 237 |
238 define void @fxo01() nounwind { | 238 define void @fxo01() nounwind { |
239 entry: | 239 entry: |
240 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8 | 240 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8 |
241 ret void | 241 ret void |
242 ; LINUX-64-STATIC-LABEL: fxo01: | 242 ; LINUX-64-STATIC-LABEL: fxo01: |
243 ; LINUX-64-STATIC: movq $xdst, ptr | 243 ; LINUX-64-STATIC: movq $xdst, ptr |
244 ; LINUX-64-STATIC: ret | 244 ; LINUX-64-STATIC: ret |
245 | 245 |
295 ; DARWIN-64-PIC-NEXT: ret | 295 ; DARWIN-64-PIC-NEXT: ret |
296 } | 296 } |
297 | 297 |
298 define void @foo02() nounwind { | 298 define void @foo02() nounwind { |
299 entry: | 299 entry: |
300 %0 = load i32** @ptr, align 8 | 300 %0 = load i32*, i32** @ptr, align 8 |
301 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4 | 301 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 |
302 store i32 %1, i32* %0, align 4 | 302 store i32 %1, i32* %0, align 4 |
303 ret void | 303 ret void |
304 ; LINUX-64-STATIC-LABEL: foo02: | 304 ; LINUX-64-STATIC-LABEL: foo02: |
305 ; LINUX-64-STATIC: movl src(%rip), % | 305 ; LINUX-64-STATIC: movl src(%rip), % |
306 ; LINUX-64-STATIC: movq ptr(%rip), % | 306 ; LINUX-64-STATIC: movq ptr(%rip), % |
377 ; DARWIN-64-PIC-NEXT: ret | 377 ; DARWIN-64-PIC-NEXT: ret |
378 } | 378 } |
379 | 379 |
380 define void @fxo02() nounwind { | 380 define void @fxo02() nounwind { |
381 entry: | 381 entry: |
382 %0 = load i32** @ptr, align 8 | 382 %0 = load i32*, i32** @ptr, align 8 |
383 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4 | 383 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 |
384 store i32 %1, i32* %0, align 4 | 384 store i32 %1, i32* %0, align 4 |
385 ; LINUX-64-STATIC-LABEL: fxo02: | 385 ; LINUX-64-STATIC-LABEL: fxo02: |
386 ; LINUX-64-STATIC: movl xsrc(%rip), % | 386 ; LINUX-64-STATIC: movl xsrc(%rip), % |
387 ; LINUX-64-STATIC: movq ptr(%rip), % | 387 ; LINUX-64-STATIC: movq ptr(%rip), % |
388 ; LINUX-64-STATIC: movl | 388 ; LINUX-64-STATIC: movl |
459 ; DARWIN-64-PIC-NEXT: ret | 459 ; DARWIN-64-PIC-NEXT: ret |
460 } | 460 } |
461 | 461 |
462 define void @foo03() nounwind { | 462 define void @foo03() nounwind { |
463 entry: | 463 entry: |
464 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32 | 464 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 |
465 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32 | 465 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32 |
466 ret void | 466 ret void |
467 ; LINUX-64-STATIC-LABEL: foo03: | 467 ; LINUX-64-STATIC-LABEL: foo03: |
468 ; LINUX-64-STATIC: movl dsrc(%rip), [[EAX:%e.x]] | 468 ; LINUX-64-STATIC: movl dsrc(%rip), [[EAX:%e.x]] |
469 ; LINUX-64-STATIC: movl [[EAX]], ddst | 469 ; LINUX-64-STATIC: movl [[EAX]], ddst |
470 ; LINUX-64-STATIC: ret | 470 ; LINUX-64-STATIC: ret |
520 ; DARWIN-64-PIC-NEXT: ret | 520 ; DARWIN-64-PIC-NEXT: ret |
521 } | 521 } |
522 | 522 |
523 define void @foo04() nounwind { | 523 define void @foo04() nounwind { |
524 entry: | 524 entry: |
525 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8 | 525 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8 |
526 ret void | 526 ret void |
527 ; LINUX-64-STATIC-LABEL: foo04: | 527 ; LINUX-64-STATIC-LABEL: foo04: |
528 ; LINUX-64-STATIC: movq $ddst, dptr | 528 ; LINUX-64-STATIC: movq $ddst, dptr |
529 ; LINUX-64-STATIC: ret | 529 ; LINUX-64-STATIC: ret |
530 | 530 |
574 ; DARWIN-64-PIC-NEXT: ret | 574 ; DARWIN-64-PIC-NEXT: ret |
575 } | 575 } |
576 | 576 |
577 define void @foo05() nounwind { | 577 define void @foo05() nounwind { |
578 entry: | 578 entry: |
579 %0 = load i32** @dptr, align 8 | 579 %0 = load i32*, i32** @dptr, align 8 |
580 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32 | 580 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 |
581 store i32 %1, i32* %0, align 4 | 581 store i32 %1, i32* %0, align 4 |
582 ret void | 582 ret void |
583 ; LINUX-64-STATIC-LABEL: foo05: | 583 ; LINUX-64-STATIC-LABEL: foo05: |
584 ; LINUX-64-STATIC: movl dsrc(%rip), % | 584 ; LINUX-64-STATIC: movl dsrc(%rip), % |
585 ; LINUX-64-STATIC: movq dptr(%rip), % | 585 ; LINUX-64-STATIC: movq dptr(%rip), % |
646 ; DARWIN-64-PIC-NEXT: ret | 646 ; DARWIN-64-PIC-NEXT: ret |
647 } | 647 } |
648 | 648 |
649 define void @foo06() nounwind { | 649 define void @foo06() nounwind { |
650 entry: | 650 entry: |
651 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4 | 651 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 |
652 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4 | 652 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4 |
653 ret void | 653 ret void |
654 ; LINUX-64-STATIC-LABEL: foo06: | 654 ; LINUX-64-STATIC-LABEL: foo06: |
655 ; LINUX-64-STATIC: movl lsrc(%rip), [[EAX:%e.x]] | 655 ; LINUX-64-STATIC: movl lsrc(%rip), [[EAX:%e.x]] |
656 ; LINUX-64-STATIC: movl [[EAX]], ldst(%rip) | 656 ; LINUX-64-STATIC: movl [[EAX]], ldst(%rip) |
657 ; LINUX-64-STATIC: ret | 657 ; LINUX-64-STATIC: ret |
705 ; DARWIN-64-PIC-NEXT: ret | 705 ; DARWIN-64-PIC-NEXT: ret |
706 } | 706 } |
707 | 707 |
708 define void @foo07() nounwind { | 708 define void @foo07() nounwind { |
709 entry: | 709 entry: |
710 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8 | 710 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8 |
711 ret void | 711 ret void |
712 ; LINUX-64-STATIC-LABEL: foo07: | 712 ; LINUX-64-STATIC-LABEL: foo07: |
713 ; LINUX-64-STATIC: movq $ldst, lptr | 713 ; LINUX-64-STATIC: movq $ldst, lptr |
714 ; LINUX-64-STATIC: ret | 714 ; LINUX-64-STATIC: ret |
715 | 715 |
758 ; DARWIN-64-PIC-NEXT: ret | 758 ; DARWIN-64-PIC-NEXT: ret |
759 } | 759 } |
760 | 760 |
761 define void @foo08() nounwind { | 761 define void @foo08() nounwind { |
762 entry: | 762 entry: |
763 %0 = load i32** @lptr, align 8 | 763 %0 = load i32*, i32** @lptr, align 8 |
764 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4 | 764 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 |
765 store i32 %1, i32* %0, align 4 | 765 store i32 %1, i32* %0, align 4 |
766 ret void | 766 ret void |
767 ; LINUX-64-STATIC-LABEL: foo08: | 767 ; LINUX-64-STATIC-LABEL: foo08: |
768 ; LINUX-64-STATIC: movl lsrc(%rip), % | 768 ; LINUX-64-STATIC: movl lsrc(%rip), % |
769 ; LINUX-64-STATIC: movq lptr(%rip), % | 769 ; LINUX-64-STATIC: movq lptr(%rip), % |
828 ; DARWIN-64-PIC-NEXT: ret | 828 ; DARWIN-64-PIC-NEXT: ret |
829 } | 829 } |
830 | 830 |
831 define void @qux00() nounwind { | 831 define void @qux00() nounwind { |
832 entry: | 832 entry: |
833 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4 | 833 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 |
834 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4 | 834 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4 |
835 ret void | 835 ret void |
836 ; LINUX-64-STATIC-LABEL: qux00: | 836 ; LINUX-64-STATIC-LABEL: qux00: |
837 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]] | 837 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]] |
838 ; LINUX-64-STATIC: movl [[EAX]], dst+64(%rip) | 838 ; LINUX-64-STATIC: movl [[EAX]], dst+64(%rip) |
839 ; LINUX-64-STATIC: ret | 839 ; LINUX-64-STATIC: ret |
899 ; DARWIN-64-PIC-NEXT: ret | 899 ; DARWIN-64-PIC-NEXT: ret |
900 } | 900 } |
901 | 901 |
902 define void @qxx00() nounwind { | 902 define void @qxx00() nounwind { |
903 entry: | 903 entry: |
904 %0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4 | 904 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 |
905 store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4 | 905 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4 |
906 ret void | 906 ret void |
907 ; LINUX-64-STATIC-LABEL: qxx00: | 907 ; LINUX-64-STATIC-LABEL: qxx00: |
908 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]] | 908 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]] |
909 ; LINUX-64-STATIC: movl [[EAX]], xdst+64(%rip) | 909 ; LINUX-64-STATIC: movl [[EAX]], xdst+64(%rip) |
910 ; LINUX-64-STATIC: ret | 910 ; LINUX-64-STATIC: ret |
970 ; DARWIN-64-PIC-NEXT: ret | 970 ; DARWIN-64-PIC-NEXT: ret |
971 } | 971 } |
972 | 972 |
973 define void @qux01() nounwind { | 973 define void @qux01() nounwind { |
974 entry: | 974 entry: |
975 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8 | 975 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8 |
976 ret void | 976 ret void |
977 ; LINUX-64-STATIC-LABEL: qux01: | 977 ; LINUX-64-STATIC-LABEL: qux01: |
978 ; LINUX-64-STATIC: movq $dst+64, ptr | 978 ; LINUX-64-STATIC: movq $dst+64, ptr |
979 ; LINUX-64-STATIC: ret | 979 ; LINUX-64-STATIC: ret |
980 | 980 |
1036 ; DARWIN-64-PIC-NEXT: ret | 1036 ; DARWIN-64-PIC-NEXT: ret |
1037 } | 1037 } |
1038 | 1038 |
1039 define void @qxx01() nounwind { | 1039 define void @qxx01() nounwind { |
1040 entry: | 1040 entry: |
1041 store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8 | 1041 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8 |
1042 ret void | 1042 ret void |
1043 ; LINUX-64-STATIC-LABEL: qxx01: | 1043 ; LINUX-64-STATIC-LABEL: qxx01: |
1044 ; LINUX-64-STATIC: movq $xdst+64, ptr | 1044 ; LINUX-64-STATIC: movq $xdst+64, ptr |
1045 ; LINUX-64-STATIC: ret | 1045 ; LINUX-64-STATIC: ret |
1046 | 1046 |
1102 ; DARWIN-64-PIC-NEXT: ret | 1102 ; DARWIN-64-PIC-NEXT: ret |
1103 } | 1103 } |
1104 | 1104 |
1105 define void @qux02() nounwind { | 1105 define void @qux02() nounwind { |
1106 entry: | 1106 entry: |
1107 %0 = load i32** @ptr, align 8 | 1107 %0 = load i32*, i32** @ptr, align 8 |
1108 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4 | 1108 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 |
1109 %2 = getelementptr i32* %0, i64 16 | 1109 %2 = getelementptr i32, i32* %0, i64 16 |
1110 store i32 %1, i32* %2, align 4 | 1110 store i32 %1, i32* %2, align 4 |
1111 ; LINUX-64-STATIC-LABEL: qux02: | 1111 ; LINUX-64-STATIC-LABEL: qux02: |
1112 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]] | 1112 ; LINUX-64-STATIC: movl src+64(%rip), [[EAX:%e.x]] |
1113 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 1113 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
1114 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) | 1114 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) |
1185 ; DARWIN-64-PIC-NEXT: ret | 1185 ; DARWIN-64-PIC-NEXT: ret |
1186 } | 1186 } |
1187 | 1187 |
1188 define void @qxx02() nounwind { | 1188 define void @qxx02() nounwind { |
1189 entry: | 1189 entry: |
1190 %0 = load i32** @ptr, align 8 | 1190 %0 = load i32*, i32** @ptr, align 8 |
1191 %1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4 | 1191 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 |
1192 %2 = getelementptr i32* %0, i64 16 | 1192 %2 = getelementptr i32, i32* %0, i64 16 |
1193 store i32 %1, i32* %2, align 4 | 1193 store i32 %1, i32* %2, align 4 |
1194 ; LINUX-64-STATIC-LABEL: qxx02: | 1194 ; LINUX-64-STATIC-LABEL: qxx02: |
1195 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]] | 1195 ; LINUX-64-STATIC: movl xsrc+64(%rip), [[EAX:%e.x]] |
1196 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 1196 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
1197 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) | 1197 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) |
1268 ; DARWIN-64-PIC-NEXT: ret | 1268 ; DARWIN-64-PIC-NEXT: ret |
1269 } | 1269 } |
1270 | 1270 |
1271 define void @qux03() nounwind { | 1271 define void @qux03() nounwind { |
1272 entry: | 1272 entry: |
1273 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32 | 1273 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 |
1274 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32 | 1274 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32 |
1275 ret void | 1275 ret void |
1276 ; LINUX-64-STATIC-LABEL: qux03: | 1276 ; LINUX-64-STATIC-LABEL: qux03: |
1277 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]] | 1277 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]] |
1278 ; LINUX-64-STATIC: movl [[EAX]], ddst+64(%rip) | 1278 ; LINUX-64-STATIC: movl [[EAX]], ddst+64(%rip) |
1279 ; LINUX-64-STATIC: ret | 1279 ; LINUX-64-STATIC: ret |
1329 ; DARWIN-64-PIC-NEXT: ret | 1329 ; DARWIN-64-PIC-NEXT: ret |
1330 } | 1330 } |
1331 | 1331 |
1332 define void @qux04() nounwind { | 1332 define void @qux04() nounwind { |
1333 entry: | 1333 entry: |
1334 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8 | 1334 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8 |
1335 ret void | 1335 ret void |
1336 ; LINUX-64-STATIC-LABEL: qux04: | 1336 ; LINUX-64-STATIC-LABEL: qux04: |
1337 ; LINUX-64-STATIC: movq $ddst+64, dptr(%rip) | 1337 ; LINUX-64-STATIC: movq $ddst+64, dptr(%rip) |
1338 ; LINUX-64-STATIC: ret | 1338 ; LINUX-64-STATIC: ret |
1339 | 1339 |
1384 ; DARWIN-64-PIC-NEXT: ret | 1384 ; DARWIN-64-PIC-NEXT: ret |
1385 } | 1385 } |
1386 | 1386 |
1387 define void @qux05() nounwind { | 1387 define void @qux05() nounwind { |
1388 entry: | 1388 entry: |
1389 %0 = load i32** @dptr, align 8 | 1389 %0 = load i32*, i32** @dptr, align 8 |
1390 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32 | 1390 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 |
1391 %2 = getelementptr i32* %0, i64 16 | 1391 %2 = getelementptr i32, i32* %0, i64 16 |
1392 store i32 %1, i32* %2, align 4 | 1392 store i32 %1, i32* %2, align 4 |
1393 ; LINUX-64-STATIC-LABEL: qux05: | 1393 ; LINUX-64-STATIC-LABEL: qux05: |
1394 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]] | 1394 ; LINUX-64-STATIC: movl dsrc+64(%rip), [[EAX:%e.x]] |
1395 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] | 1395 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] |
1396 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) | 1396 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) |
1457 ; DARWIN-64-PIC-NEXT: ret | 1457 ; DARWIN-64-PIC-NEXT: ret |
1458 } | 1458 } |
1459 | 1459 |
1460 define void @qux06() nounwind { | 1460 define void @qux06() nounwind { |
1461 entry: | 1461 entry: |
1462 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4 | 1462 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 |
1463 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4 | 1463 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4 |
1464 ret void | 1464 ret void |
1465 ; LINUX-64-STATIC-LABEL: qux06: | 1465 ; LINUX-64-STATIC-LABEL: qux06: |
1466 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]] | 1466 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]] |
1467 ; LINUX-64-STATIC: movl [[EAX]], ldst+64 | 1467 ; LINUX-64-STATIC: movl [[EAX]], ldst+64 |
1468 ; LINUX-64-STATIC: ret | 1468 ; LINUX-64-STATIC: ret |
1516 ; DARWIN-64-PIC-NEXT: ret | 1516 ; DARWIN-64-PIC-NEXT: ret |
1517 } | 1517 } |
1518 | 1518 |
1519 define void @qux07() nounwind { | 1519 define void @qux07() nounwind { |
1520 entry: | 1520 entry: |
1521 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8 | 1521 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8 |
1522 ret void | 1522 ret void |
1523 ; LINUX-64-STATIC-LABEL: qux07: | 1523 ; LINUX-64-STATIC-LABEL: qux07: |
1524 ; LINUX-64-STATIC: movq $ldst+64, lptr | 1524 ; LINUX-64-STATIC: movq $ldst+64, lptr |
1525 ; LINUX-64-STATIC: ret | 1525 ; LINUX-64-STATIC: ret |
1526 | 1526 |
1569 ; DARWIN-64-PIC-NEXT: ret | 1569 ; DARWIN-64-PIC-NEXT: ret |
1570 } | 1570 } |
1571 | 1571 |
1572 define void @qux08() nounwind { | 1572 define void @qux08() nounwind { |
1573 entry: | 1573 entry: |
1574 %0 = load i32** @lptr, align 8 | 1574 %0 = load i32*, i32** @lptr, align 8 |
1575 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4 | 1575 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 |
1576 %2 = getelementptr i32* %0, i64 16 | 1576 %2 = getelementptr i32, i32* %0, i64 16 |
1577 store i32 %1, i32* %2, align 4 | 1577 store i32 %1, i32* %2, align 4 |
1578 ; LINUX-64-STATIC-LABEL: qux08: | 1578 ; LINUX-64-STATIC-LABEL: qux08: |
1579 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]] | 1579 ; LINUX-64-STATIC: movl lsrc+64(%rip), [[EAX:%e.x]] |
1580 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] | 1580 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] |
1581 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) | 1581 ; LINUX-64-STATIC: movl [[EAX]], 64([[RCX]]) |
1640 ; DARWIN-64-PIC-NEXT: ret | 1640 ; DARWIN-64-PIC-NEXT: ret |
1641 } | 1641 } |
1642 | 1642 |
1643 define void @ind00(i64 %i) nounwind { | 1643 define void @ind00(i64 %i) nounwind { |
1644 entry: | 1644 entry: |
1645 %0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i | 1645 %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i |
1646 %1 = load i32* %0, align 4 | 1646 %1 = load i32, i32* %0, align 4 |
1647 %2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i | 1647 %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i |
1648 store i32 %1, i32* %2, align 4 | 1648 store i32 %1, i32* %2, align 4 |
1649 ret void | 1649 ret void |
1650 ; LINUX-64-STATIC-LABEL: ind00: | 1650 ; LINUX-64-STATIC-LABEL: ind00: |
1651 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]] | 1651 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]] |
1652 ; LINUX-64-STATIC: movl [[EAX]], dst(,%rdi,4) | 1652 ; LINUX-64-STATIC: movl [[EAX]], dst(,%rdi,4) |
1718 ; DARWIN-64-PIC-NEXT: ret | 1718 ; DARWIN-64-PIC-NEXT: ret |
1719 } | 1719 } |
1720 | 1720 |
1721 define void @ixd00(i64 %i) nounwind { | 1721 define void @ixd00(i64 %i) nounwind { |
1722 entry: | 1722 entry: |
1723 %0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i | 1723 %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i |
1724 %1 = load i32* %0, align 4 | 1724 %1 = load i32, i32* %0, align 4 |
1725 %2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i | 1725 %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i |
1726 store i32 %1, i32* %2, align 4 | 1726 store i32 %1, i32* %2, align 4 |
1727 ret void | 1727 ret void |
1728 ; LINUX-64-STATIC-LABEL: ixd00: | 1728 ; LINUX-64-STATIC-LABEL: ixd00: |
1729 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]] | 1729 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]] |
1730 ; LINUX-64-STATIC: movl [[EAX]], xdst(,%rdi,4) | 1730 ; LINUX-64-STATIC: movl [[EAX]], xdst(,%rdi,4) |
1796 ; DARWIN-64-PIC-NEXT: ret | 1796 ; DARWIN-64-PIC-NEXT: ret |
1797 } | 1797 } |
1798 | 1798 |
1799 define void @ind01(i64 %i) nounwind { | 1799 define void @ind01(i64 %i) nounwind { |
1800 entry: | 1800 entry: |
1801 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i | 1801 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i |
1802 store i32* %0, i32** @ptr, align 8 | 1802 store i32* %0, i32** @ptr, align 8 |
1803 ret void | 1803 ret void |
1804 ; LINUX-64-STATIC-LABEL: ind01: | 1804 ; LINUX-64-STATIC-LABEL: ind01: |
1805 ; LINUX-64-STATIC: leaq dst(,%rdi,4), [[RAX:%r.x]] | 1805 ; LINUX-64-STATIC: leaq dst(,%rdi,4), [[RAX:%r.x]] |
1806 ; LINUX-64-STATIC: movq [[RAX]], ptr | 1806 ; LINUX-64-STATIC: movq [[RAX]], ptr |
1872 ; DARWIN-64-PIC-NEXT: ret | 1872 ; DARWIN-64-PIC-NEXT: ret |
1873 } | 1873 } |
1874 | 1874 |
1875 define void @ixd01(i64 %i) nounwind { | 1875 define void @ixd01(i64 %i) nounwind { |
1876 entry: | 1876 entry: |
1877 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i | 1877 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i |
1878 store i32* %0, i32** @ptr, align 8 | 1878 store i32* %0, i32** @ptr, align 8 |
1879 ret void | 1879 ret void |
1880 ; LINUX-64-STATIC-LABEL: ixd01: | 1880 ; LINUX-64-STATIC-LABEL: ixd01: |
1881 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), [[RAX:%r.x]] | 1881 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), [[RAX:%r.x]] |
1882 ; LINUX-64-STATIC: movq [[RAX]], ptr | 1882 ; LINUX-64-STATIC: movq [[RAX]], ptr |
1948 ; DARWIN-64-PIC-NEXT: ret | 1948 ; DARWIN-64-PIC-NEXT: ret |
1949 } | 1949 } |
1950 | 1950 |
1951 define void @ind02(i64 %i) nounwind { | 1951 define void @ind02(i64 %i) nounwind { |
1952 entry: | 1952 entry: |
1953 %0 = load i32** @ptr, align 8 | 1953 %0 = load i32*, i32** @ptr, align 8 |
1954 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i | 1954 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i |
1955 %2 = load i32* %1, align 4 | 1955 %2 = load i32, i32* %1, align 4 |
1956 %3 = getelementptr i32* %0, i64 %i | 1956 %3 = getelementptr i32, i32* %0, i64 %i |
1957 store i32 %2, i32* %3, align 4 | 1957 store i32 %2, i32* %3, align 4 |
1958 ret void | 1958 ret void |
1959 ; LINUX-64-STATIC-LABEL: ind02: | 1959 ; LINUX-64-STATIC-LABEL: ind02: |
1960 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]] | 1960 ; LINUX-64-STATIC: movl src(,%rdi,4), [[EAX:%e.x]] |
1961 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 1961 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
2037 ; DARWIN-64-PIC-NEXT: ret | 2037 ; DARWIN-64-PIC-NEXT: ret |
2038 } | 2038 } |
2039 | 2039 |
2040 define void @ixd02(i64 %i) nounwind { | 2040 define void @ixd02(i64 %i) nounwind { |
2041 entry: | 2041 entry: |
2042 %0 = load i32** @ptr, align 8 | 2042 %0 = load i32*, i32** @ptr, align 8 |
2043 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i | 2043 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i |
2044 %2 = load i32* %1, align 4 | 2044 %2 = load i32, i32* %1, align 4 |
2045 %3 = getelementptr i32* %0, i64 %i | 2045 %3 = getelementptr i32, i32* %0, i64 %i |
2046 store i32 %2, i32* %3, align 4 | 2046 store i32 %2, i32* %3, align 4 |
2047 ret void | 2047 ret void |
2048 ; LINUX-64-STATIC-LABEL: ixd02: | 2048 ; LINUX-64-STATIC-LABEL: ixd02: |
2049 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]] | 2049 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), [[EAX:%e.x]] |
2050 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 2050 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
2126 ; DARWIN-64-PIC-NEXT: ret | 2126 ; DARWIN-64-PIC-NEXT: ret |
2127 } | 2127 } |
2128 | 2128 |
2129 define void @ind03(i64 %i) nounwind { | 2129 define void @ind03(i64 %i) nounwind { |
2130 entry: | 2130 entry: |
2131 %0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i | 2131 %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i |
2132 %1 = load i32* %0, align 4 | 2132 %1 = load i32, i32* %0, align 4 |
2133 %2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i | 2133 %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i |
2134 store i32 %1, i32* %2, align 4 | 2134 store i32 %1, i32* %2, align 4 |
2135 ret void | 2135 ret void |
2136 ; LINUX-64-STATIC-LABEL: ind03: | 2136 ; LINUX-64-STATIC-LABEL: ind03: |
2137 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]] | 2137 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]] |
2138 ; LINUX-64-STATIC: movl [[EAX]], ddst(,%rdi,4) | 2138 ; LINUX-64-STATIC: movl [[EAX]], ddst(,%rdi,4) |
2200 ; DARWIN-64-PIC-NEXT: ret | 2200 ; DARWIN-64-PIC-NEXT: ret |
2201 } | 2201 } |
2202 | 2202 |
2203 define void @ind04(i64 %i) nounwind { | 2203 define void @ind04(i64 %i) nounwind { |
2204 entry: | 2204 entry: |
2205 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i | 2205 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i |
2206 store i32* %0, i32** @dptr, align 8 | 2206 store i32* %0, i32** @dptr, align 8 |
2207 ret void | 2207 ret void |
2208 ; LINUX-64-STATIC-LABEL: ind04: | 2208 ; LINUX-64-STATIC-LABEL: ind04: |
2209 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), [[RAX:%r.x]] | 2209 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), [[RAX:%r.x]] |
2210 ; LINUX-64-STATIC: movq [[RAX]], dptr | 2210 ; LINUX-64-STATIC: movq [[RAX]], dptr |
2269 ; DARWIN-64-PIC-NEXT: ret | 2269 ; DARWIN-64-PIC-NEXT: ret |
2270 } | 2270 } |
2271 | 2271 |
2272 define void @ind05(i64 %i) nounwind { | 2272 define void @ind05(i64 %i) nounwind { |
2273 entry: | 2273 entry: |
2274 %0 = load i32** @dptr, align 8 | 2274 %0 = load i32*, i32** @dptr, align 8 |
2275 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i | 2275 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i |
2276 %2 = load i32* %1, align 4 | 2276 %2 = load i32, i32* %1, align 4 |
2277 %3 = getelementptr i32* %0, i64 %i | 2277 %3 = getelementptr i32, i32* %0, i64 %i |
2278 store i32 %2, i32* %3, align 4 | 2278 store i32 %2, i32* %3, align 4 |
2279 ret void | 2279 ret void |
2280 ; LINUX-64-STATIC-LABEL: ind05: | 2280 ; LINUX-64-STATIC-LABEL: ind05: |
2281 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]] | 2281 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), [[EAX:%e.x]] |
2282 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] | 2282 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] |
2351 ; DARWIN-64-PIC-NEXT: ret | 2351 ; DARWIN-64-PIC-NEXT: ret |
2352 } | 2352 } |
2353 | 2353 |
2354 define void @ind06(i64 %i) nounwind { | 2354 define void @ind06(i64 %i) nounwind { |
2355 entry: | 2355 entry: |
2356 %0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i | 2356 %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i |
2357 %1 = load i32* %0, align 4 | 2357 %1 = load i32, i32* %0, align 4 |
2358 %2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i | 2358 %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i |
2359 store i32 %1, i32* %2, align 4 | 2359 store i32 %1, i32* %2, align 4 |
2360 ret void | 2360 ret void |
2361 ; LINUX-64-STATIC-LABEL: ind06: | 2361 ; LINUX-64-STATIC-LABEL: ind06: |
2362 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]] | 2362 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]] |
2363 ; LINUX-64-STATIC: movl [[EAX]], ldst(,%rdi,4) | 2363 ; LINUX-64-STATIC: movl [[EAX]], ldst(,%rdi,4) |
2425 ; DARWIN-64-PIC-NEXT: ret | 2425 ; DARWIN-64-PIC-NEXT: ret |
2426 } | 2426 } |
2427 | 2427 |
2428 define void @ind07(i64 %i) nounwind { | 2428 define void @ind07(i64 %i) nounwind { |
2429 entry: | 2429 entry: |
2430 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i | 2430 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i |
2431 store i32* %0, i32** @lptr, align 8 | 2431 store i32* %0, i32** @lptr, align 8 |
2432 ret void | 2432 ret void |
2433 ; LINUX-64-STATIC-LABEL: ind07: | 2433 ; LINUX-64-STATIC-LABEL: ind07: |
2434 ; LINUX-64-STATIC: leaq ldst(,%rdi,4), [[RAX:%r.x]] | 2434 ; LINUX-64-STATIC: leaq ldst(,%rdi,4), [[RAX:%r.x]] |
2435 ; LINUX-64-STATIC: movq [[RAX]], lptr | 2435 ; LINUX-64-STATIC: movq [[RAX]], lptr |
2493 ; DARWIN-64-PIC-NEXT: ret | 2493 ; DARWIN-64-PIC-NEXT: ret |
2494 } | 2494 } |
2495 | 2495 |
2496 define void @ind08(i64 %i) nounwind { | 2496 define void @ind08(i64 %i) nounwind { |
2497 entry: | 2497 entry: |
2498 %0 = load i32** @lptr, align 8 | 2498 %0 = load i32*, i32** @lptr, align 8 |
2499 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i | 2499 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i |
2500 %2 = load i32* %1, align 4 | 2500 %2 = load i32, i32* %1, align 4 |
2501 %3 = getelementptr i32* %0, i64 %i | 2501 %3 = getelementptr i32, i32* %0, i64 %i |
2502 store i32 %2, i32* %3, align 4 | 2502 store i32 %2, i32* %3, align 4 |
2503 ret void | 2503 ret void |
2504 ; LINUX-64-STATIC-LABEL: ind08: | 2504 ; LINUX-64-STATIC-LABEL: ind08: |
2505 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]] | 2505 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), [[EAX:%e.x]] |
2506 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] | 2506 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] |
2575 } | 2575 } |
2576 | 2576 |
2577 define void @off00(i64 %i) nounwind { | 2577 define void @off00(i64 %i) nounwind { |
2578 entry: | 2578 entry: |
2579 %0 = add i64 %i, 16 | 2579 %0 = add i64 %i, 16 |
2580 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0 | 2580 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 |
2581 %2 = load i32* %1, align 4 | 2581 %2 = load i32, i32* %1, align 4 |
2582 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0 | 2582 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 |
2583 store i32 %2, i32* %3, align 4 | 2583 store i32 %2, i32* %3, align 4 |
2584 ret void | 2584 ret void |
2585 ; LINUX-64-STATIC-LABEL: off00: | 2585 ; LINUX-64-STATIC-LABEL: off00: |
2586 ; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]] | 2586 ; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]] |
2587 ; LINUX-64-STATIC: movl [[EAX]], dst+64(,%rdi,4) | 2587 ; LINUX-64-STATIC: movl [[EAX]], dst+64(,%rdi,4) |
2654 } | 2654 } |
2655 | 2655 |
2656 define void @oxf00(i64 %i) nounwind { | 2656 define void @oxf00(i64 %i) nounwind { |
2657 entry: | 2657 entry: |
2658 %0 = add i64 %i, 16 | 2658 %0 = add i64 %i, 16 |
2659 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0 | 2659 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 |
2660 %2 = load i32* %1, align 4 | 2660 %2 = load i32, i32* %1, align 4 |
2661 %3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0 | 2661 %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 |
2662 store i32 %2, i32* %3, align 4 | 2662 store i32 %2, i32* %3, align 4 |
2663 ret void | 2663 ret void |
2664 ; LINUX-64-STATIC-LABEL: oxf00: | 2664 ; LINUX-64-STATIC-LABEL: oxf00: |
2665 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]] | 2665 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]] |
2666 ; LINUX-64-STATIC: movl [[EAX]], xdst+64(,%rdi,4) | 2666 ; LINUX-64-STATIC: movl [[EAX]], xdst+64(,%rdi,4) |
2733 } | 2733 } |
2734 | 2734 |
2735 define void @off01(i64 %i) nounwind { | 2735 define void @off01(i64 %i) nounwind { |
2736 entry: | 2736 entry: |
2737 %.sum = add i64 %i, 16 | 2737 %.sum = add i64 %i, 16 |
2738 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum | 2738 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum |
2739 store i32* %0, i32** @ptr, align 8 | 2739 store i32* %0, i32** @ptr, align 8 |
2740 ret void | 2740 ret void |
2741 ; LINUX-64-STATIC-LABEL: off01: | 2741 ; LINUX-64-STATIC-LABEL: off01: |
2742 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), [[RAX:%r.x]] | 2742 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), [[RAX:%r.x]] |
2743 ; LINUX-64-STATIC: movq [[RAX]], ptr | 2743 ; LINUX-64-STATIC: movq [[RAX]], ptr |
2810 } | 2810 } |
2811 | 2811 |
2812 define void @oxf01(i64 %i) nounwind { | 2812 define void @oxf01(i64 %i) nounwind { |
2813 entry: | 2813 entry: |
2814 %.sum = add i64 %i, 16 | 2814 %.sum = add i64 %i, 16 |
2815 %0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum | 2815 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum |
2816 store i32* %0, i32** @ptr, align 8 | 2816 store i32* %0, i32** @ptr, align 8 |
2817 ret void | 2817 ret void |
2818 ; LINUX-64-STATIC-LABEL: oxf01: | 2818 ; LINUX-64-STATIC-LABEL: oxf01: |
2819 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), [[RAX:%r.x]] | 2819 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), [[RAX:%r.x]] |
2820 ; LINUX-64-STATIC: movq [[RAX]], ptr | 2820 ; LINUX-64-STATIC: movq [[RAX]], ptr |
2886 ; DARWIN-64-PIC-NEXT: ret | 2886 ; DARWIN-64-PIC-NEXT: ret |
2887 } | 2887 } |
2888 | 2888 |
2889 define void @off02(i64 %i) nounwind { | 2889 define void @off02(i64 %i) nounwind { |
2890 entry: | 2890 entry: |
2891 %0 = load i32** @ptr, align 8 | 2891 %0 = load i32*, i32** @ptr, align 8 |
2892 %1 = add i64 %i, 16 | 2892 %1 = add i64 %i, 16 |
2893 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1 | 2893 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 |
2894 %3 = load i32* %2, align 4 | 2894 %3 = load i32, i32* %2, align 4 |
2895 %4 = getelementptr i32* %0, i64 %1 | 2895 %4 = getelementptr i32, i32* %0, i64 %1 |
2896 store i32 %3, i32* %4, align 4 | 2896 store i32 %3, i32* %4, align 4 |
2897 ret void | 2897 ret void |
2898 ; LINUX-64-STATIC-LABEL: off02: | 2898 ; LINUX-64-STATIC-LABEL: off02: |
2899 ; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]] | 2899 ; LINUX-64-STATIC: movl src+64(,%rdi,4), [[EAX:%e.x]] |
2900 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 2900 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
2976 ; DARWIN-64-PIC-NEXT: ret | 2976 ; DARWIN-64-PIC-NEXT: ret |
2977 } | 2977 } |
2978 | 2978 |
2979 define void @oxf02(i64 %i) nounwind { | 2979 define void @oxf02(i64 %i) nounwind { |
2980 entry: | 2980 entry: |
2981 %0 = load i32** @ptr, align 8 | 2981 %0 = load i32*, i32** @ptr, align 8 |
2982 %1 = add i64 %i, 16 | 2982 %1 = add i64 %i, 16 |
2983 %2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1 | 2983 %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1 |
2984 %3 = load i32* %2, align 4 | 2984 %3 = load i32, i32* %2, align 4 |
2985 %4 = getelementptr i32* %0, i64 %1 | 2985 %4 = getelementptr i32, i32* %0, i64 %1 |
2986 store i32 %3, i32* %4, align 4 | 2986 store i32 %3, i32* %4, align 4 |
2987 ret void | 2987 ret void |
2988 ; LINUX-64-STATIC-LABEL: oxf02: | 2988 ; LINUX-64-STATIC-LABEL: oxf02: |
2989 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]] | 2989 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), [[EAX:%e.x]] |
2990 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 2990 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
3067 } | 3067 } |
3068 | 3068 |
3069 define void @off03(i64 %i) nounwind { | 3069 define void @off03(i64 %i) nounwind { |
3070 entry: | 3070 entry: |
3071 %0 = add i64 %i, 16 | 3071 %0 = add i64 %i, 16 |
3072 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0 | 3072 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 |
3073 %2 = load i32* %1, align 4 | 3073 %2 = load i32, i32* %1, align 4 |
3074 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0 | 3074 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 |
3075 store i32 %2, i32* %3, align 4 | 3075 store i32 %2, i32* %3, align 4 |
3076 ret void | 3076 ret void |
3077 ; LINUX-64-STATIC-LABEL: off03: | 3077 ; LINUX-64-STATIC-LABEL: off03: |
3078 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]] | 3078 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]] |
3079 ; LINUX-64-STATIC: movl [[EAX]], ddst+64(,%rdi,4) | 3079 ; LINUX-64-STATIC: movl [[EAX]], ddst+64(,%rdi,4) |
3142 } | 3142 } |
3143 | 3143 |
3144 define void @off04(i64 %i) nounwind { | 3144 define void @off04(i64 %i) nounwind { |
3145 entry: | 3145 entry: |
3146 %.sum = add i64 %i, 16 | 3146 %.sum = add i64 %i, 16 |
3147 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum | 3147 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum |
3148 store i32* %0, i32** @dptr, align 8 | 3148 store i32* %0, i32** @dptr, align 8 |
3149 ret void | 3149 ret void |
3150 ; LINUX-64-STATIC-LABEL: off04: | 3150 ; LINUX-64-STATIC-LABEL: off04: |
3151 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), [[RAX:%r.x]] | 3151 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), [[RAX:%r.x]] |
3152 ; LINUX-64-STATIC: movq [[RAX]], dptr | 3152 ; LINUX-64-STATIC: movq [[RAX]], dptr |
3211 ; DARWIN-64-PIC-NEXT: ret | 3211 ; DARWIN-64-PIC-NEXT: ret |
3212 } | 3212 } |
3213 | 3213 |
3214 define void @off05(i64 %i) nounwind { | 3214 define void @off05(i64 %i) nounwind { |
3215 entry: | 3215 entry: |
3216 %0 = load i32** @dptr, align 8 | 3216 %0 = load i32*, i32** @dptr, align 8 |
3217 %1 = add i64 %i, 16 | 3217 %1 = add i64 %i, 16 |
3218 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1 | 3218 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 |
3219 %3 = load i32* %2, align 4 | 3219 %3 = load i32, i32* %2, align 4 |
3220 %4 = getelementptr i32* %0, i64 %1 | 3220 %4 = getelementptr i32, i32* %0, i64 %1 |
3221 store i32 %3, i32* %4, align 4 | 3221 store i32 %3, i32* %4, align 4 |
3222 ret void | 3222 ret void |
3223 ; LINUX-64-STATIC-LABEL: off05: | 3223 ; LINUX-64-STATIC-LABEL: off05: |
3224 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]] | 3224 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), [[EAX:%e.x]] |
3225 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] | 3225 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] |
3295 } | 3295 } |
3296 | 3296 |
3297 define void @off06(i64 %i) nounwind { | 3297 define void @off06(i64 %i) nounwind { |
3298 entry: | 3298 entry: |
3299 %0 = add i64 %i, 16 | 3299 %0 = add i64 %i, 16 |
3300 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0 | 3300 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 |
3301 %2 = load i32* %1, align 4 | 3301 %2 = load i32, i32* %1, align 4 |
3302 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0 | 3302 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 |
3303 store i32 %2, i32* %3, align 4 | 3303 store i32 %2, i32* %3, align 4 |
3304 ret void | 3304 ret void |
3305 ; LINUX-64-STATIC-LABEL: off06: | 3305 ; LINUX-64-STATIC-LABEL: off06: |
3306 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]] | 3306 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]] |
3307 ; LINUX-64-STATIC: movl [[EAX]], ldst+64(,%rdi,4) | 3307 ; LINUX-64-STATIC: movl [[EAX]], ldst+64(,%rdi,4) |
3370 } | 3370 } |
3371 | 3371 |
3372 define void @off07(i64 %i) nounwind { | 3372 define void @off07(i64 %i) nounwind { |
3373 entry: | 3373 entry: |
3374 %.sum = add i64 %i, 16 | 3374 %.sum = add i64 %i, 16 |
3375 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum | 3375 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum |
3376 store i32* %0, i32** @lptr, align 8 | 3376 store i32* %0, i32** @lptr, align 8 |
3377 ret void | 3377 ret void |
3378 ; LINUX-64-STATIC-LABEL: off07: | 3378 ; LINUX-64-STATIC-LABEL: off07: |
3379 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), [[RAX:%r.x]] | 3379 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), [[RAX:%r.x]] |
3380 ; LINUX-64-STATIC: movq [[RAX]], lptr | 3380 ; LINUX-64-STATIC: movq [[RAX]], lptr |
3438 ; DARWIN-64-PIC-NEXT: ret | 3438 ; DARWIN-64-PIC-NEXT: ret |
3439 } | 3439 } |
3440 | 3440 |
3441 define void @off08(i64 %i) nounwind { | 3441 define void @off08(i64 %i) nounwind { |
3442 entry: | 3442 entry: |
3443 %0 = load i32** @lptr, align 8 | 3443 %0 = load i32*, i32** @lptr, align 8 |
3444 %1 = add i64 %i, 16 | 3444 %1 = add i64 %i, 16 |
3445 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1 | 3445 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 |
3446 %3 = load i32* %2, align 4 | 3446 %3 = load i32, i32* %2, align 4 |
3447 %4 = getelementptr i32* %0, i64 %1 | 3447 %4 = getelementptr i32, i32* %0, i64 %1 |
3448 store i32 %3, i32* %4, align 4 | 3448 store i32 %3, i32* %4, align 4 |
3449 ret void | 3449 ret void |
3450 ; LINUX-64-STATIC-LABEL: off08: | 3450 ; LINUX-64-STATIC-LABEL: off08: |
3451 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]] | 3451 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), [[EAX:%e.x]] |
3452 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] | 3452 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] |
3520 ; DARWIN-64-PIC-NEXT: ret | 3520 ; DARWIN-64-PIC-NEXT: ret |
3521 } | 3521 } |
3522 | 3522 |
3523 define void @moo00(i64 %i) nounwind { | 3523 define void @moo00(i64 %i) nounwind { |
3524 entry: | 3524 entry: |
3525 %0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4 | 3525 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 |
3526 store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4 | 3526 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4 |
3527 ret void | 3527 ret void |
3528 ; LINUX-64-STATIC-LABEL: moo00: | 3528 ; LINUX-64-STATIC-LABEL: moo00: |
3529 ; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]] | 3529 ; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]] |
3530 ; LINUX-64-STATIC: movl [[EAX]], dst+262144(%rip) | 3530 ; LINUX-64-STATIC: movl [[EAX]], dst+262144(%rip) |
3531 ; LINUX-64-STATIC: ret | 3531 ; LINUX-64-STATIC: ret |
3591 ; DARWIN-64-PIC-NEXT: ret | 3591 ; DARWIN-64-PIC-NEXT: ret |
3592 } | 3592 } |
3593 | 3593 |
3594 define void @moo01(i64 %i) nounwind { | 3594 define void @moo01(i64 %i) nounwind { |
3595 entry: | 3595 entry: |
3596 store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8 | 3596 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8 |
3597 ret void | 3597 ret void |
3598 ; LINUX-64-STATIC-LABEL: moo01: | 3598 ; LINUX-64-STATIC-LABEL: moo01: |
3599 ; LINUX-64-STATIC: movq $dst+262144, ptr(%rip) | 3599 ; LINUX-64-STATIC: movq $dst+262144, ptr(%rip) |
3600 ; LINUX-64-STATIC: ret | 3600 ; LINUX-64-STATIC: ret |
3601 | 3601 |
3657 ; DARWIN-64-PIC-NEXT: ret | 3657 ; DARWIN-64-PIC-NEXT: ret |
3658 } | 3658 } |
3659 | 3659 |
3660 define void @moo02(i64 %i) nounwind { | 3660 define void @moo02(i64 %i) nounwind { |
3661 entry: | 3661 entry: |
3662 %0 = load i32** @ptr, align 8 | 3662 %0 = load i32*, i32** @ptr, align 8 |
3663 %1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4 | 3663 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 |
3664 %2 = getelementptr i32* %0, i64 65536 | 3664 %2 = getelementptr i32, i32* %0, i64 65536 |
3665 store i32 %1, i32* %2, align 4 | 3665 store i32 %1, i32* %2, align 4 |
3666 ret void | 3666 ret void |
3667 ; LINUX-64-STATIC-LABEL: moo02: | 3667 ; LINUX-64-STATIC-LABEL: moo02: |
3668 ; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]] | 3668 ; LINUX-64-STATIC: movl src+262144(%rip), [[EAX:%e.x]] |
3669 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 3669 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
3740 ; DARWIN-64-PIC-NEXT: ret | 3740 ; DARWIN-64-PIC-NEXT: ret |
3741 } | 3741 } |
3742 | 3742 |
3743 define void @moo03(i64 %i) nounwind { | 3743 define void @moo03(i64 %i) nounwind { |
3744 entry: | 3744 entry: |
3745 %0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32 | 3745 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 |
3746 store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32 | 3746 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32 |
3747 ret void | 3747 ret void |
3748 ; LINUX-64-STATIC-LABEL: moo03: | 3748 ; LINUX-64-STATIC-LABEL: moo03: |
3749 ; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]] | 3749 ; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]] |
3750 ; LINUX-64-STATIC: movl [[EAX]], ddst+262144(%rip) | 3750 ; LINUX-64-STATIC: movl [[EAX]], ddst+262144(%rip) |
3751 ; LINUX-64-STATIC: ret | 3751 ; LINUX-64-STATIC: ret |
3801 ; DARWIN-64-PIC-NEXT: ret | 3801 ; DARWIN-64-PIC-NEXT: ret |
3802 } | 3802 } |
3803 | 3803 |
3804 define void @moo04(i64 %i) nounwind { | 3804 define void @moo04(i64 %i) nounwind { |
3805 entry: | 3805 entry: |
3806 store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8 | 3806 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8 |
3807 ret void | 3807 ret void |
3808 ; LINUX-64-STATIC-LABEL: moo04: | 3808 ; LINUX-64-STATIC-LABEL: moo04: |
3809 ; LINUX-64-STATIC: movq $ddst+262144, dptr | 3809 ; LINUX-64-STATIC: movq $ddst+262144, dptr |
3810 ; LINUX-64-STATIC: ret | 3810 ; LINUX-64-STATIC: ret |
3811 | 3811 |
3856 ; DARWIN-64-PIC-NEXT: ret | 3856 ; DARWIN-64-PIC-NEXT: ret |
3857 } | 3857 } |
3858 | 3858 |
3859 define void @moo05(i64 %i) nounwind { | 3859 define void @moo05(i64 %i) nounwind { |
3860 entry: | 3860 entry: |
3861 %0 = load i32** @dptr, align 8 | 3861 %0 = load i32*, i32** @dptr, align 8 |
3862 %1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32 | 3862 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 |
3863 %2 = getelementptr i32* %0, i64 65536 | 3863 %2 = getelementptr i32, i32* %0, i64 65536 |
3864 store i32 %1, i32* %2, align 4 | 3864 store i32 %1, i32* %2, align 4 |
3865 ret void | 3865 ret void |
3866 ; LINUX-64-STATIC-LABEL: moo05: | 3866 ; LINUX-64-STATIC-LABEL: moo05: |
3867 ; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]] | 3867 ; LINUX-64-STATIC: movl dsrc+262144(%rip), [[EAX:%e.x]] |
3868 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] | 3868 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] |
3929 ; DARWIN-64-PIC-NEXT: ret | 3929 ; DARWIN-64-PIC-NEXT: ret |
3930 } | 3930 } |
3931 | 3931 |
3932 define void @moo06(i64 %i) nounwind { | 3932 define void @moo06(i64 %i) nounwind { |
3933 entry: | 3933 entry: |
3934 %0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4 | 3934 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 |
3935 store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4 | 3935 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4 |
3936 ret void | 3936 ret void |
3937 ; LINUX-64-STATIC-LABEL: moo06: | 3937 ; LINUX-64-STATIC-LABEL: moo06: |
3938 ; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]] | 3938 ; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]] |
3939 ; LINUX-64-STATIC: movl [[EAX]], ldst+262144(%rip) | 3939 ; LINUX-64-STATIC: movl [[EAX]], ldst+262144(%rip) |
3940 ; LINUX-64-STATIC: ret | 3940 ; LINUX-64-STATIC: ret |
3988 ; DARWIN-64-PIC-NEXT: ret | 3988 ; DARWIN-64-PIC-NEXT: ret |
3989 } | 3989 } |
3990 | 3990 |
3991 define void @moo07(i64 %i) nounwind { | 3991 define void @moo07(i64 %i) nounwind { |
3992 entry: | 3992 entry: |
3993 store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8 | 3993 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8 |
3994 ret void | 3994 ret void |
3995 ; LINUX-64-STATIC-LABEL: moo07: | 3995 ; LINUX-64-STATIC-LABEL: moo07: |
3996 ; LINUX-64-STATIC: movq $ldst+262144, lptr | 3996 ; LINUX-64-STATIC: movq $ldst+262144, lptr |
3997 ; LINUX-64-STATIC: ret | 3997 ; LINUX-64-STATIC: ret |
3998 | 3998 |
4041 ; DARWIN-64-PIC-NEXT: ret | 4041 ; DARWIN-64-PIC-NEXT: ret |
4042 } | 4042 } |
4043 | 4043 |
4044 define void @moo08(i64 %i) nounwind { | 4044 define void @moo08(i64 %i) nounwind { |
4045 entry: | 4045 entry: |
4046 %0 = load i32** @lptr, align 8 | 4046 %0 = load i32*, i32** @lptr, align 8 |
4047 %1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4 | 4047 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 |
4048 %2 = getelementptr i32* %0, i64 65536 | 4048 %2 = getelementptr i32, i32* %0, i64 65536 |
4049 store i32 %1, i32* %2, align 4 | 4049 store i32 %1, i32* %2, align 4 |
4050 ret void | 4050 ret void |
4051 ; LINUX-64-STATIC-LABEL: moo08: | 4051 ; LINUX-64-STATIC-LABEL: moo08: |
4052 ; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]] | 4052 ; LINUX-64-STATIC: movl lsrc+262144(%rip), [[EAX:%e.x]] |
4053 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] | 4053 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] |
4113 } | 4113 } |
4114 | 4114 |
4115 define void @big00(i64 %i) nounwind { | 4115 define void @big00(i64 %i) nounwind { |
4116 entry: | 4116 entry: |
4117 %0 = add i64 %i, 65536 | 4117 %0 = add i64 %i, 65536 |
4118 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0 | 4118 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 |
4119 %2 = load i32* %1, align 4 | 4119 %2 = load i32, i32* %1, align 4 |
4120 %3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0 | 4120 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 |
4121 store i32 %2, i32* %3, align 4 | 4121 store i32 %2, i32* %3, align 4 |
4122 ret void | 4122 ret void |
4123 ; LINUX-64-STATIC-LABEL: big00: | 4123 ; LINUX-64-STATIC-LABEL: big00: |
4124 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]] | 4124 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]] |
4125 ; LINUX-64-STATIC: movl [[EAX]], dst+262144(,%rdi,4) | 4125 ; LINUX-64-STATIC: movl [[EAX]], dst+262144(,%rdi,4) |
4192 } | 4192 } |
4193 | 4193 |
4194 define void @big01(i64 %i) nounwind { | 4194 define void @big01(i64 %i) nounwind { |
4195 entry: | 4195 entry: |
4196 %.sum = add i64 %i, 65536 | 4196 %.sum = add i64 %i, 65536 |
4197 %0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum | 4197 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum |
4198 store i32* %0, i32** @ptr, align 8 | 4198 store i32* %0, i32** @ptr, align 8 |
4199 ret void | 4199 ret void |
4200 ; LINUX-64-STATIC-LABEL: big01: | 4200 ; LINUX-64-STATIC-LABEL: big01: |
4201 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), [[RAX:%r.x]] | 4201 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), [[RAX:%r.x]] |
4202 ; LINUX-64-STATIC: movq [[RAX]], ptr(%rip) | 4202 ; LINUX-64-STATIC: movq [[RAX]], ptr(%rip) |
4268 ; DARWIN-64-PIC-NEXT: ret | 4268 ; DARWIN-64-PIC-NEXT: ret |
4269 } | 4269 } |
4270 | 4270 |
4271 define void @big02(i64 %i) nounwind { | 4271 define void @big02(i64 %i) nounwind { |
4272 entry: | 4272 entry: |
4273 %0 = load i32** @ptr, align 8 | 4273 %0 = load i32*, i32** @ptr, align 8 |
4274 %1 = add i64 %i, 65536 | 4274 %1 = add i64 %i, 65536 |
4275 %2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1 | 4275 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 |
4276 %3 = load i32* %2, align 4 | 4276 %3 = load i32, i32* %2, align 4 |
4277 %4 = getelementptr i32* %0, i64 %1 | 4277 %4 = getelementptr i32, i32* %0, i64 %1 |
4278 store i32 %3, i32* %4, align 4 | 4278 store i32 %3, i32* %4, align 4 |
4279 ret void | 4279 ret void |
4280 ; LINUX-64-STATIC-LABEL: big02: | 4280 ; LINUX-64-STATIC-LABEL: big02: |
4281 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]] | 4281 ; LINUX-64-STATIC: movl src+262144(,%rdi,4), [[EAX:%e.x]] |
4282 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] | 4282 ; LINUX-64-STATIC: movq ptr(%rip), [[RCX:%r.x]] |
4359 } | 4359 } |
4360 | 4360 |
4361 define void @big03(i64 %i) nounwind { | 4361 define void @big03(i64 %i) nounwind { |
4362 entry: | 4362 entry: |
4363 %0 = add i64 %i, 65536 | 4363 %0 = add i64 %i, 65536 |
4364 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0 | 4364 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 |
4365 %2 = load i32* %1, align 4 | 4365 %2 = load i32, i32* %1, align 4 |
4366 %3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0 | 4366 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 |
4367 store i32 %2, i32* %3, align 4 | 4367 store i32 %2, i32* %3, align 4 |
4368 ret void | 4368 ret void |
4369 ; LINUX-64-STATIC-LABEL: big03: | 4369 ; LINUX-64-STATIC-LABEL: big03: |
4370 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]] | 4370 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]] |
4371 ; LINUX-64-STATIC: movl [[EAX]], ddst+262144(,%rdi,4) | 4371 ; LINUX-64-STATIC: movl [[EAX]], ddst+262144(,%rdi,4) |
4434 } | 4434 } |
4435 | 4435 |
4436 define void @big04(i64 %i) nounwind { | 4436 define void @big04(i64 %i) nounwind { |
4437 entry: | 4437 entry: |
4438 %.sum = add i64 %i, 65536 | 4438 %.sum = add i64 %i, 65536 |
4439 %0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum | 4439 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum |
4440 store i32* %0, i32** @dptr, align 8 | 4440 store i32* %0, i32** @dptr, align 8 |
4441 ret void | 4441 ret void |
4442 ; LINUX-64-STATIC-LABEL: big04: | 4442 ; LINUX-64-STATIC-LABEL: big04: |
4443 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), [[RAX:%r.x]] | 4443 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), [[RAX:%r.x]] |
4444 ; LINUX-64-STATIC: movq [[RAX]], dptr | 4444 ; LINUX-64-STATIC: movq [[RAX]], dptr |
4503 ; DARWIN-64-PIC-NEXT: ret | 4503 ; DARWIN-64-PIC-NEXT: ret |
4504 } | 4504 } |
4505 | 4505 |
4506 define void @big05(i64 %i) nounwind { | 4506 define void @big05(i64 %i) nounwind { |
4507 entry: | 4507 entry: |
4508 %0 = load i32** @dptr, align 8 | 4508 %0 = load i32*, i32** @dptr, align 8 |
4509 %1 = add i64 %i, 65536 | 4509 %1 = add i64 %i, 65536 |
4510 %2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1 | 4510 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 |
4511 %3 = load i32* %2, align 4 | 4511 %3 = load i32, i32* %2, align 4 |
4512 %4 = getelementptr i32* %0, i64 %1 | 4512 %4 = getelementptr i32, i32* %0, i64 %1 |
4513 store i32 %3, i32* %4, align 4 | 4513 store i32 %3, i32* %4, align 4 |
4514 ret void | 4514 ret void |
4515 ; LINUX-64-STATIC-LABEL: big05: | 4515 ; LINUX-64-STATIC-LABEL: big05: |
4516 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]] | 4516 ; LINUX-64-STATIC: movl dsrc+262144(,%rdi,4), [[EAX:%e.x]] |
4517 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] | 4517 ; LINUX-64-STATIC: movq dptr(%rip), [[RCX:%r.x]] |
4587 } | 4587 } |
4588 | 4588 |
4589 define void @big06(i64 %i) nounwind { | 4589 define void @big06(i64 %i) nounwind { |
4590 entry: | 4590 entry: |
4591 %0 = add i64 %i, 65536 | 4591 %0 = add i64 %i, 65536 |
4592 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0 | 4592 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 |
4593 %2 = load i32* %1, align 4 | 4593 %2 = load i32, i32* %1, align 4 |
4594 %3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0 | 4594 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 |
4595 store i32 %2, i32* %3, align 4 | 4595 store i32 %2, i32* %3, align 4 |
4596 ret void | 4596 ret void |
4597 ; LINUX-64-STATIC-LABEL: big06: | 4597 ; LINUX-64-STATIC-LABEL: big06: |
4598 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]] | 4598 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]] |
4599 ; LINUX-64-STATIC: movl [[EAX]], ldst+262144(,%rdi,4) | 4599 ; LINUX-64-STATIC: movl [[EAX]], ldst+262144(,%rdi,4) |
4662 } | 4662 } |
4663 | 4663 |
4664 define void @big07(i64 %i) nounwind { | 4664 define void @big07(i64 %i) nounwind { |
4665 entry: | 4665 entry: |
4666 %.sum = add i64 %i, 65536 | 4666 %.sum = add i64 %i, 65536 |
4667 %0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum | 4667 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum |
4668 store i32* %0, i32** @lptr, align 8 | 4668 store i32* %0, i32** @lptr, align 8 |
4669 ret void | 4669 ret void |
4670 ; LINUX-64-STATIC-LABEL: big07: | 4670 ; LINUX-64-STATIC-LABEL: big07: |
4671 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), [[RAX:%r.x]] | 4671 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), [[RAX:%r.x]] |
4672 ; LINUX-64-STATIC: movq [[RAX]], lptr | 4672 ; LINUX-64-STATIC: movq [[RAX]], lptr |
4730 ; DARWIN-64-PIC-NEXT: ret | 4730 ; DARWIN-64-PIC-NEXT: ret |
4731 } | 4731 } |
4732 | 4732 |
4733 define void @big08(i64 %i) nounwind { | 4733 define void @big08(i64 %i) nounwind { |
4734 entry: | 4734 entry: |
4735 %0 = load i32** @lptr, align 8 | 4735 %0 = load i32*, i32** @lptr, align 8 |
4736 %1 = add i64 %i, 65536 | 4736 %1 = add i64 %i, 65536 |
4737 %2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1 | 4737 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 |
4738 %3 = load i32* %2, align 4 | 4738 %3 = load i32, i32* %2, align 4 |
4739 %4 = getelementptr i32* %0, i64 %1 | 4739 %4 = getelementptr i32, i32* %0, i64 %1 |
4740 store i32 %3, i32* %4, align 4 | 4740 store i32 %3, i32* %4, align 4 |
4741 ret void | 4741 ret void |
4742 ; LINUX-64-STATIC-LABEL: big08: | 4742 ; LINUX-64-STATIC-LABEL: big08: |
4743 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]] | 4743 ; LINUX-64-STATIC: movl lsrc+262144(,%rdi,4), [[EAX:%e.x]] |
4744 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] | 4744 ; LINUX-64-STATIC: movq lptr(%rip), [[RCX:%r.x]] |
5517 ; DARWIN-64-PIC-NEXT: ret | 5517 ; DARWIN-64-PIC-NEXT: ret |
5518 } | 5518 } |
5519 | 5519 |
5520 define i8* @har02() nounwind { | 5520 define i8* @har02() nounwind { |
5521 entry: | 5521 entry: |
5522 %0 = load i32** @ptr, align 8 | 5522 %0 = load i32*, i32** @ptr, align 8 |
5523 %1 = bitcast i32* %0 to i8* | 5523 %1 = bitcast i32* %0 to i8* |
5524 ret i8* %1 | 5524 ret i8* %1 |
5525 ; LINUX-64-STATIC-LABEL: har02: | 5525 ; LINUX-64-STATIC-LABEL: har02: |
5526 ; LINUX-64-STATIC: movq ptr(%rip), %rax | 5526 ; LINUX-64-STATIC: movq ptr(%rip), %rax |
5527 ; LINUX-64-STATIC: ret | 5527 ; LINUX-64-STATIC: ret |
5666 ; DARWIN-64-PIC-NEXT: ret | 5666 ; DARWIN-64-PIC-NEXT: ret |
5667 } | 5667 } |
5668 | 5668 |
5669 define i8* @har05() nounwind { | 5669 define i8* @har05() nounwind { |
5670 entry: | 5670 entry: |
5671 %0 = load i32** @dptr, align 8 | 5671 %0 = load i32*, i32** @dptr, align 8 |
5672 %1 = bitcast i32* %0 to i8* | 5672 %1 = bitcast i32* %0 to i8* |
5673 ret i8* %1 | 5673 ret i8* %1 |
5674 ; LINUX-64-STATIC-LABEL: har05: | 5674 ; LINUX-64-STATIC-LABEL: har05: |
5675 ; LINUX-64-STATIC: movq dptr(%rip), %rax | 5675 ; LINUX-64-STATIC: movq dptr(%rip), %rax |
5676 ; LINUX-64-STATIC: ret | 5676 ; LINUX-64-STATIC: ret |
5810 ; DARWIN-64-PIC-NEXT: ret | 5810 ; DARWIN-64-PIC-NEXT: ret |
5811 } | 5811 } |
5812 | 5812 |
5813 define i8* @har08() nounwind { | 5813 define i8* @har08() nounwind { |
5814 entry: | 5814 entry: |
5815 %0 = load i32** @lptr, align 8 | 5815 %0 = load i32*, i32** @lptr, align 8 |
5816 %1 = bitcast i32* %0 to i8* | 5816 %1 = bitcast i32* %0 to i8* |
5817 ret i8* %1 | 5817 ret i8* %1 |
5818 ; LINUX-64-STATIC-LABEL: har08: | 5818 ; LINUX-64-STATIC-LABEL: har08: |
5819 ; LINUX-64-STATIC: movq lptr(%rip), %rax | 5819 ; LINUX-64-STATIC: movq lptr(%rip), %rax |
5820 ; LINUX-64-STATIC: ret | 5820 ; LINUX-64-STATIC: ret |
5859 ; DARWIN-64-PIC-NEXT: ret | 5859 ; DARWIN-64-PIC-NEXT: ret |
5860 } | 5860 } |
5861 | 5861 |
5862 define i8* @bat00() nounwind { | 5862 define i8* @bat00() nounwind { |
5863 entry: | 5863 entry: |
5864 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*) | 5864 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*) |
5865 ; LINUX-64-STATIC-LABEL: bat00: | 5865 ; LINUX-64-STATIC-LABEL: bat00: |
5866 ; LINUX-64-STATIC: movl $src+64, %eax | 5866 ; LINUX-64-STATIC: movl $src+64, %eax |
5867 ; LINUX-64-STATIC: ret | 5867 ; LINUX-64-STATIC: ret |
5868 | 5868 |
5869 ; LINUX-32-STATIC-LABEL: bat00: | 5869 ; LINUX-32-STATIC-LABEL: bat00: |
5912 ; DARWIN-64-PIC-NEXT: ret | 5912 ; DARWIN-64-PIC-NEXT: ret |
5913 } | 5913 } |
5914 | 5914 |
5915 define i8* @bxt00() nounwind { | 5915 define i8* @bxt00() nounwind { |
5916 entry: | 5916 entry: |
5917 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*) | 5917 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*) |
5918 ; LINUX-64-STATIC-LABEL: bxt00: | 5918 ; LINUX-64-STATIC-LABEL: bxt00: |
5919 ; LINUX-64-STATIC: movl $xsrc+64, %eax | 5919 ; LINUX-64-STATIC: movl $xsrc+64, %eax |
5920 ; LINUX-64-STATIC: ret | 5920 ; LINUX-64-STATIC: ret |
5921 | 5921 |
5922 ; LINUX-32-STATIC-LABEL: bxt00: | 5922 ; LINUX-32-STATIC-LABEL: bxt00: |
5965 ; DARWIN-64-PIC-NEXT: ret | 5965 ; DARWIN-64-PIC-NEXT: ret |
5966 } | 5966 } |
5967 | 5967 |
5968 define i8* @bat01() nounwind { | 5968 define i8* @bat01() nounwind { |
5969 entry: | 5969 entry: |
5970 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*) | 5970 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*) |
5971 ; LINUX-64-STATIC-LABEL: bat01: | 5971 ; LINUX-64-STATIC-LABEL: bat01: |
5972 ; LINUX-64-STATIC: movl $dst+64, %eax | 5972 ; LINUX-64-STATIC: movl $dst+64, %eax |
5973 ; LINUX-64-STATIC: ret | 5973 ; LINUX-64-STATIC: ret |
5974 | 5974 |
5975 ; LINUX-32-STATIC-LABEL: bat01: | 5975 ; LINUX-32-STATIC-LABEL: bat01: |
6018 ; DARWIN-64-PIC-NEXT: ret | 6018 ; DARWIN-64-PIC-NEXT: ret |
6019 } | 6019 } |
6020 | 6020 |
6021 define i8* @bxt01() nounwind { | 6021 define i8* @bxt01() nounwind { |
6022 entry: | 6022 entry: |
6023 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*) | 6023 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*) |
6024 ; LINUX-64-STATIC-LABEL: bxt01: | 6024 ; LINUX-64-STATIC-LABEL: bxt01: |
6025 ; LINUX-64-STATIC: movl $xdst+64, %eax | 6025 ; LINUX-64-STATIC: movl $xdst+64, %eax |
6026 ; LINUX-64-STATIC: ret | 6026 ; LINUX-64-STATIC: ret |
6027 | 6027 |
6028 ; LINUX-32-STATIC-LABEL: bxt01: | 6028 ; LINUX-32-STATIC-LABEL: bxt01: |
6071 ; DARWIN-64-PIC-NEXT: ret | 6071 ; DARWIN-64-PIC-NEXT: ret |
6072 } | 6072 } |
6073 | 6073 |
6074 define i8* @bat02() nounwind { | 6074 define i8* @bat02() nounwind { |
6075 entry: | 6075 entry: |
6076 %0 = load i32** @ptr, align 8 | 6076 %0 = load i32*, i32** @ptr, align 8 |
6077 %1 = getelementptr i32* %0, i64 16 | 6077 %1 = getelementptr i32, i32* %0, i64 16 |
6078 %2 = bitcast i32* %1 to i8* | 6078 %2 = bitcast i32* %1 to i8* |
6079 ret i8* %2 | 6079 ret i8* %2 |
6080 ; LINUX-64-STATIC-LABEL: bat02: | 6080 ; LINUX-64-STATIC-LABEL: bat02: |
6081 ; LINUX-64-STATIC: movq ptr(%rip), %rax | 6081 ; LINUX-64-STATIC: movq ptr(%rip), %rax |
6082 ; LINUX-64-STATIC: addq $64, %rax | 6082 ; LINUX-64-STATIC: addq $64, %rax |
6137 ; DARWIN-64-PIC-NEXT: ret | 6137 ; DARWIN-64-PIC-NEXT: ret |
6138 } | 6138 } |
6139 | 6139 |
6140 define i8* @bat03() nounwind { | 6140 define i8* @bat03() nounwind { |
6141 entry: | 6141 entry: |
6142 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*) | 6142 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*) |
6143 ; LINUX-64-STATIC-LABEL: bat03: | 6143 ; LINUX-64-STATIC-LABEL: bat03: |
6144 ; LINUX-64-STATIC: movl $dsrc+64, %eax | 6144 ; LINUX-64-STATIC: movl $dsrc+64, %eax |
6145 ; LINUX-64-STATIC: ret | 6145 ; LINUX-64-STATIC: ret |
6146 | 6146 |
6147 ; LINUX-32-STATIC-LABEL: bat03: | 6147 ; LINUX-32-STATIC-LABEL: bat03: |
6185 ; DARWIN-64-PIC-NEXT: ret | 6185 ; DARWIN-64-PIC-NEXT: ret |
6186 } | 6186 } |
6187 | 6187 |
6188 define i8* @bat04() nounwind { | 6188 define i8* @bat04() nounwind { |
6189 entry: | 6189 entry: |
6190 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*) | 6190 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*) |
6191 ; LINUX-64-STATIC-LABEL: bat04: | 6191 ; LINUX-64-STATIC-LABEL: bat04: |
6192 ; LINUX-64-STATIC: movl $ddst+64, %eax | 6192 ; LINUX-64-STATIC: movl $ddst+64, %eax |
6193 ; LINUX-64-STATIC: ret | 6193 ; LINUX-64-STATIC: ret |
6194 | 6194 |
6195 ; LINUX-32-STATIC-LABEL: bat04: | 6195 ; LINUX-32-STATIC-LABEL: bat04: |
6233 ; DARWIN-64-PIC-NEXT: ret | 6233 ; DARWIN-64-PIC-NEXT: ret |
6234 } | 6234 } |
6235 | 6235 |
6236 define i8* @bat05() nounwind { | 6236 define i8* @bat05() nounwind { |
6237 entry: | 6237 entry: |
6238 %0 = load i32** @dptr, align 8 | 6238 %0 = load i32*, i32** @dptr, align 8 |
6239 %1 = getelementptr i32* %0, i64 16 | 6239 %1 = getelementptr i32, i32* %0, i64 16 |
6240 %2 = bitcast i32* %1 to i8* | 6240 %2 = bitcast i32* %1 to i8* |
6241 ret i8* %2 | 6241 ret i8* %2 |
6242 ; LINUX-64-STATIC-LABEL: bat05: | 6242 ; LINUX-64-STATIC-LABEL: bat05: |
6243 ; LINUX-64-STATIC: movq dptr(%rip), %rax | 6243 ; LINUX-64-STATIC: movq dptr(%rip), %rax |
6244 ; LINUX-64-STATIC: addq $64, %rax | 6244 ; LINUX-64-STATIC: addq $64, %rax |
6294 ; DARWIN-64-PIC-NEXT: ret | 6294 ; DARWIN-64-PIC-NEXT: ret |
6295 } | 6295 } |
6296 | 6296 |
6297 define i8* @bat06() nounwind { | 6297 define i8* @bat06() nounwind { |
6298 entry: | 6298 entry: |
6299 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*) | 6299 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*) |
6300 ; LINUX-64-STATIC-LABEL: bat06: | 6300 ; LINUX-64-STATIC-LABEL: bat06: |
6301 ; LINUX-64-STATIC: movl $lsrc+64, %eax | 6301 ; LINUX-64-STATIC: movl $lsrc+64, %eax |
6302 ; LINUX-64-STATIC: ret | 6302 ; LINUX-64-STATIC: ret |
6303 | 6303 |
6304 ; LINUX-32-STATIC-LABEL: bat06: | 6304 ; LINUX-32-STATIC-LABEL: bat06: |
6341 ; DARWIN-64-PIC-NEXT: ret | 6341 ; DARWIN-64-PIC-NEXT: ret |
6342 } | 6342 } |
6343 | 6343 |
6344 define i8* @bat07() nounwind { | 6344 define i8* @bat07() nounwind { |
6345 entry: | 6345 entry: |
6346 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*) | 6346 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*) |
6347 ; LINUX-64-STATIC-LABEL: bat07: | 6347 ; LINUX-64-STATIC-LABEL: bat07: |
6348 ; LINUX-64-STATIC: movl $ldst+64, %eax | 6348 ; LINUX-64-STATIC: movl $ldst+64, %eax |
6349 ; LINUX-64-STATIC: ret | 6349 ; LINUX-64-STATIC: ret |
6350 | 6350 |
6351 ; LINUX-32-STATIC-LABEL: bat07: | 6351 ; LINUX-32-STATIC-LABEL: bat07: |
6388 ; DARWIN-64-PIC-NEXT: ret | 6388 ; DARWIN-64-PIC-NEXT: ret |
6389 } | 6389 } |
6390 | 6390 |
6391 define i8* @bat08() nounwind { | 6391 define i8* @bat08() nounwind { |
6392 entry: | 6392 entry: |
6393 %0 = load i32** @lptr, align 8 | 6393 %0 = load i32*, i32** @lptr, align 8 |
6394 %1 = getelementptr i32* %0, i64 16 | 6394 %1 = getelementptr i32, i32* %0, i64 16 |
6395 %2 = bitcast i32* %1 to i8* | 6395 %2 = bitcast i32* %1 to i8* |
6396 ret i8* %2 | 6396 ret i8* %2 |
6397 ; LINUX-64-STATIC-LABEL: bat08: | 6397 ; LINUX-64-STATIC-LABEL: bat08: |
6398 ; LINUX-64-STATIC: movq lptr(%rip), %rax | 6398 ; LINUX-64-STATIC: movq lptr(%rip), %rax |
6399 ; LINUX-64-STATIC: addq $64, %rax | 6399 ; LINUX-64-STATIC: addq $64, %rax |
6448 ; DARWIN-64-PIC-NEXT: ret | 6448 ; DARWIN-64-PIC-NEXT: ret |
6449 } | 6449 } |
6450 | 6450 |
6451 define i8* @bam00() nounwind { | 6451 define i8* @bam00() nounwind { |
6452 entry: | 6452 entry: |
6453 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*) | 6453 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*) |
6454 ; LINUX-64-STATIC-LABEL: bam00: | 6454 ; LINUX-64-STATIC-LABEL: bam00: |
6455 ; LINUX-64-STATIC: movl $src+262144, %eax | 6455 ; LINUX-64-STATIC: movl $src+262144, %eax |
6456 ; LINUX-64-STATIC: ret | 6456 ; LINUX-64-STATIC: ret |
6457 | 6457 |
6458 ; LINUX-32-STATIC-LABEL: bam00: | 6458 ; LINUX-32-STATIC-LABEL: bam00: |
6501 ; DARWIN-64-PIC-NEXT: ret | 6501 ; DARWIN-64-PIC-NEXT: ret |
6502 } | 6502 } |
6503 | 6503 |
6504 define i8* @bam01() nounwind { | 6504 define i8* @bam01() nounwind { |
6505 entry: | 6505 entry: |
6506 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*) | 6506 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*) |
6507 ; LINUX-64-STATIC-LABEL: bam01: | 6507 ; LINUX-64-STATIC-LABEL: bam01: |
6508 ; LINUX-64-STATIC: movl $dst+262144, %eax | 6508 ; LINUX-64-STATIC: movl $dst+262144, %eax |
6509 ; LINUX-64-STATIC: ret | 6509 ; LINUX-64-STATIC: ret |
6510 | 6510 |
6511 ; LINUX-32-STATIC-LABEL: bam01: | 6511 ; LINUX-32-STATIC-LABEL: bam01: |
6554 ; DARWIN-64-PIC-NEXT: ret | 6554 ; DARWIN-64-PIC-NEXT: ret |
6555 } | 6555 } |
6556 | 6556 |
6557 define i8* @bxm01() nounwind { | 6557 define i8* @bxm01() nounwind { |
6558 entry: | 6558 entry: |
6559 ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*) | 6559 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*) |
6560 ; LINUX-64-STATIC-LABEL: bxm01: | 6560 ; LINUX-64-STATIC-LABEL: bxm01: |
6561 ; LINUX-64-STATIC: movl $xdst+262144, %eax | 6561 ; LINUX-64-STATIC: movl $xdst+262144, %eax |
6562 ; LINUX-64-STATIC: ret | 6562 ; LINUX-64-STATIC: ret |
6563 | 6563 |
6564 ; LINUX-32-STATIC-LABEL: bxm01: | 6564 ; LINUX-32-STATIC-LABEL: bxm01: |
6607 ; DARWIN-64-PIC-NEXT: ret | 6607 ; DARWIN-64-PIC-NEXT: ret |
6608 } | 6608 } |
6609 | 6609 |
6610 define i8* @bam02() nounwind { | 6610 define i8* @bam02() nounwind { |
6611 entry: | 6611 entry: |
6612 %0 = load i32** @ptr, align 8 | 6612 %0 = load i32*, i32** @ptr, align 8 |
6613 %1 = getelementptr i32* %0, i64 65536 | 6613 %1 = getelementptr i32, i32* %0, i64 65536 |
6614 %2 = bitcast i32* %1 to i8* | 6614 %2 = bitcast i32* %1 to i8* |
6615 ret i8* %2 | 6615 ret i8* %2 |
6616 ; LINUX-64-STATIC-LABEL: bam02: | 6616 ; LINUX-64-STATIC-LABEL: bam02: |
6617 ; LINUX-64-STATIC: movl $262144, %eax | 6617 ; LINUX-64-STATIC: movl $262144, %eax |
6618 ; LINUX-64-STATIC: addq ptr(%rip), %rax | 6618 ; LINUX-64-STATIC: addq ptr(%rip), %rax |
6673 ; DARWIN-64-PIC-NEXT: ret | 6673 ; DARWIN-64-PIC-NEXT: ret |
6674 } | 6674 } |
6675 | 6675 |
6676 define i8* @bam03() nounwind { | 6676 define i8* @bam03() nounwind { |
6677 entry: | 6677 entry: |
6678 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*) | 6678 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*) |
6679 ; LINUX-64-STATIC-LABEL: bam03: | 6679 ; LINUX-64-STATIC-LABEL: bam03: |
6680 ; LINUX-64-STATIC: movl $dsrc+262144, %eax | 6680 ; LINUX-64-STATIC: movl $dsrc+262144, %eax |
6681 ; LINUX-64-STATIC: ret | 6681 ; LINUX-64-STATIC: ret |
6682 | 6682 |
6683 ; LINUX-32-STATIC-LABEL: bam03: | 6683 ; LINUX-32-STATIC-LABEL: bam03: |
6721 ; DARWIN-64-PIC-NEXT: ret | 6721 ; DARWIN-64-PIC-NEXT: ret |
6722 } | 6722 } |
6723 | 6723 |
6724 define i8* @bam04() nounwind { | 6724 define i8* @bam04() nounwind { |
6725 entry: | 6725 entry: |
6726 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*) | 6726 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*) |
6727 ; LINUX-64-STATIC-LABEL: bam04: | 6727 ; LINUX-64-STATIC-LABEL: bam04: |
6728 ; LINUX-64-STATIC: movl $ddst+262144, %eax | 6728 ; LINUX-64-STATIC: movl $ddst+262144, %eax |
6729 ; LINUX-64-STATIC: ret | 6729 ; LINUX-64-STATIC: ret |
6730 | 6730 |
6731 ; LINUX-32-STATIC-LABEL: bam04: | 6731 ; LINUX-32-STATIC-LABEL: bam04: |
6769 ; DARWIN-64-PIC-NEXT: ret | 6769 ; DARWIN-64-PIC-NEXT: ret |
6770 } | 6770 } |
6771 | 6771 |
6772 define i8* @bam05() nounwind { | 6772 define i8* @bam05() nounwind { |
6773 entry: | 6773 entry: |
6774 %0 = load i32** @dptr, align 8 | 6774 %0 = load i32*, i32** @dptr, align 8 |
6775 %1 = getelementptr i32* %0, i64 65536 | 6775 %1 = getelementptr i32, i32* %0, i64 65536 |
6776 %2 = bitcast i32* %1 to i8* | 6776 %2 = bitcast i32* %1 to i8* |
6777 ret i8* %2 | 6777 ret i8* %2 |
6778 ; LINUX-64-STATIC-LABEL: bam05: | 6778 ; LINUX-64-STATIC-LABEL: bam05: |
6779 ; LINUX-64-STATIC: movl $262144, %eax | 6779 ; LINUX-64-STATIC: movl $262144, %eax |
6780 ; LINUX-64-STATIC: addq dptr(%rip), %rax | 6780 ; LINUX-64-STATIC: addq dptr(%rip), %rax |
6830 ; DARWIN-64-PIC-NEXT: ret | 6830 ; DARWIN-64-PIC-NEXT: ret |
6831 } | 6831 } |
6832 | 6832 |
6833 define i8* @bam06() nounwind { | 6833 define i8* @bam06() nounwind { |
6834 entry: | 6834 entry: |
6835 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*) | 6835 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*) |
6836 ; LINUX-64-STATIC-LABEL: bam06: | 6836 ; LINUX-64-STATIC-LABEL: bam06: |
6837 ; LINUX-64-STATIC: movl $lsrc+262144, %eax | 6837 ; LINUX-64-STATIC: movl $lsrc+262144, %eax |
6838 ; LINUX-64-STATIC: ret | 6838 ; LINUX-64-STATIC: ret |
6839 | 6839 |
6840 ; LINUX-32-STATIC-LABEL: bam06: | 6840 ; LINUX-32-STATIC-LABEL: bam06: |
6877 ; DARWIN-64-PIC-NEXT: ret | 6877 ; DARWIN-64-PIC-NEXT: ret |
6878 } | 6878 } |
6879 | 6879 |
6880 define i8* @bam07() nounwind { | 6880 define i8* @bam07() nounwind { |
6881 entry: | 6881 entry: |
6882 ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*) | 6882 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*) |
6883 ; LINUX-64-STATIC-LABEL: bam07: | 6883 ; LINUX-64-STATIC-LABEL: bam07: |
6884 ; LINUX-64-STATIC: movl $ldst+262144, %eax | 6884 ; LINUX-64-STATIC: movl $ldst+262144, %eax |
6885 ; LINUX-64-STATIC: ret | 6885 ; LINUX-64-STATIC: ret |
6886 | 6886 |
6887 ; LINUX-32-STATIC-LABEL: bam07: | 6887 ; LINUX-32-STATIC-LABEL: bam07: |
6924 ; DARWIN-64-PIC-NEXT: ret | 6924 ; DARWIN-64-PIC-NEXT: ret |
6925 } | 6925 } |
6926 | 6926 |
6927 define i8* @bam08() nounwind { | 6927 define i8* @bam08() nounwind { |
6928 entry: | 6928 entry: |
6929 %0 = load i32** @lptr, align 8 | 6929 %0 = load i32*, i32** @lptr, align 8 |
6930 %1 = getelementptr i32* %0, i64 65536 | 6930 %1 = getelementptr i32, i32* %0, i64 65536 |
6931 %2 = bitcast i32* %1 to i8* | 6931 %2 = bitcast i32* %1 to i8* |
6932 ret i8* %2 | 6932 ret i8* %2 |
6933 ; LINUX-64-STATIC-LABEL: bam08: | 6933 ; LINUX-64-STATIC-LABEL: bam08: |
6934 ; LINUX-64-STATIC: movl $262144, %eax | 6934 ; LINUX-64-STATIC: movl $262144, %eax |
6935 ; LINUX-64-STATIC: addq lptr(%rip), %rax | 6935 ; LINUX-64-STATIC: addq lptr(%rip), %rax |
6985 } | 6985 } |
6986 | 6986 |
6987 define i8* @cat00(i64 %i) nounwind { | 6987 define i8* @cat00(i64 %i) nounwind { |
6988 entry: | 6988 entry: |
6989 %0 = add i64 %i, 16 | 6989 %0 = add i64 %i, 16 |
6990 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0 | 6990 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 |
6991 %2 = bitcast i32* %1 to i8* | 6991 %2 = bitcast i32* %1 to i8* |
6992 ret i8* %2 | 6992 ret i8* %2 |
6993 ; LINUX-64-STATIC-LABEL: cat00: | 6993 ; LINUX-64-STATIC-LABEL: cat00: |
6994 ; LINUX-64-STATIC: leaq src+64(,%rdi,4), %rax | 6994 ; LINUX-64-STATIC: leaq src+64(,%rdi,4), %rax |
6995 ; LINUX-64-STATIC: ret | 6995 ; LINUX-64-STATIC: ret |
7046 } | 7046 } |
7047 | 7047 |
7048 define i8* @cxt00(i64 %i) nounwind { | 7048 define i8* @cxt00(i64 %i) nounwind { |
7049 entry: | 7049 entry: |
7050 %0 = add i64 %i, 16 | 7050 %0 = add i64 %i, 16 |
7051 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0 | 7051 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 |
7052 %2 = bitcast i32* %1 to i8* | 7052 %2 = bitcast i32* %1 to i8* |
7053 ret i8* %2 | 7053 ret i8* %2 |
7054 ; LINUX-64-STATIC-LABEL: cxt00: | 7054 ; LINUX-64-STATIC-LABEL: cxt00: |
7055 ; LINUX-64-STATIC: leaq xsrc+64(,%rdi,4), %rax | 7055 ; LINUX-64-STATIC: leaq xsrc+64(,%rdi,4), %rax |
7056 ; LINUX-64-STATIC: ret | 7056 ; LINUX-64-STATIC: ret |
7107 } | 7107 } |
7108 | 7108 |
7109 define i8* @cat01(i64 %i) nounwind { | 7109 define i8* @cat01(i64 %i) nounwind { |
7110 entry: | 7110 entry: |
7111 %0 = add i64 %i, 16 | 7111 %0 = add i64 %i, 16 |
7112 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0 | 7112 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 |
7113 %2 = bitcast i32* %1 to i8* | 7113 %2 = bitcast i32* %1 to i8* |
7114 ret i8* %2 | 7114 ret i8* %2 |
7115 ; LINUX-64-STATIC-LABEL: cat01: | 7115 ; LINUX-64-STATIC-LABEL: cat01: |
7116 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax | 7116 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax |
7117 ; LINUX-64-STATIC: ret | 7117 ; LINUX-64-STATIC: ret |
7168 } | 7168 } |
7169 | 7169 |
7170 define i8* @cxt01(i64 %i) nounwind { | 7170 define i8* @cxt01(i64 %i) nounwind { |
7171 entry: | 7171 entry: |
7172 %0 = add i64 %i, 16 | 7172 %0 = add i64 %i, 16 |
7173 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0 | 7173 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 |
7174 %2 = bitcast i32* %1 to i8* | 7174 %2 = bitcast i32* %1 to i8* |
7175 ret i8* %2 | 7175 ret i8* %2 |
7176 ; LINUX-64-STATIC-LABEL: cxt01: | 7176 ; LINUX-64-STATIC-LABEL: cxt01: |
7177 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax | 7177 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax |
7178 ; LINUX-64-STATIC: ret | 7178 ; LINUX-64-STATIC: ret |
7228 ; DARWIN-64-PIC-NEXT: ret | 7228 ; DARWIN-64-PIC-NEXT: ret |
7229 } | 7229 } |
7230 | 7230 |
7231 define i8* @cat02(i64 %i) nounwind { | 7231 define i8* @cat02(i64 %i) nounwind { |
7232 entry: | 7232 entry: |
7233 %0 = load i32** @ptr, align 8 | 7233 %0 = load i32*, i32** @ptr, align 8 |
7234 %1 = add i64 %i, 16 | 7234 %1 = add i64 %i, 16 |
7235 %2 = getelementptr i32* %0, i64 %1 | 7235 %2 = getelementptr i32, i32* %0, i64 %1 |
7236 %3 = bitcast i32* %2 to i8* | 7236 %3 = bitcast i32* %2 to i8* |
7237 ret i8* %3 | 7237 ret i8* %3 |
7238 ; LINUX-64-STATIC-LABEL: cat02: | 7238 ; LINUX-64-STATIC-LABEL: cat02: |
7239 ; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]] | 7239 ; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]] |
7240 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax | 7240 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax |
7301 } | 7301 } |
7302 | 7302 |
7303 define i8* @cat03(i64 %i) nounwind { | 7303 define i8* @cat03(i64 %i) nounwind { |
7304 entry: | 7304 entry: |
7305 %0 = add i64 %i, 16 | 7305 %0 = add i64 %i, 16 |
7306 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0 | 7306 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 |
7307 %2 = bitcast i32* %1 to i8* | 7307 %2 = bitcast i32* %1 to i8* |
7308 ret i8* %2 | 7308 ret i8* %2 |
7309 ; LINUX-64-STATIC-LABEL: cat03: | 7309 ; LINUX-64-STATIC-LABEL: cat03: |
7310 ; LINUX-64-STATIC: leaq dsrc+64(,%rdi,4), %rax | 7310 ; LINUX-64-STATIC: leaq dsrc+64(,%rdi,4), %rax |
7311 ; LINUX-64-STATIC: ret | 7311 ; LINUX-64-STATIC: ret |
7360 } | 7360 } |
7361 | 7361 |
7362 define i8* @cat04(i64 %i) nounwind { | 7362 define i8* @cat04(i64 %i) nounwind { |
7363 entry: | 7363 entry: |
7364 %0 = add i64 %i, 16 | 7364 %0 = add i64 %i, 16 |
7365 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0 | 7365 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 |
7366 %2 = bitcast i32* %1 to i8* | 7366 %2 = bitcast i32* %1 to i8* |
7367 ret i8* %2 | 7367 ret i8* %2 |
7368 ; LINUX-64-STATIC-LABEL: cat04: | 7368 ; LINUX-64-STATIC-LABEL: cat04: |
7369 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax | 7369 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax |
7370 ; LINUX-64-STATIC: ret | 7370 ; LINUX-64-STATIC: ret |
7418 ; DARWIN-64-PIC-NEXT: ret | 7418 ; DARWIN-64-PIC-NEXT: ret |
7419 } | 7419 } |
7420 | 7420 |
7421 define i8* @cat05(i64 %i) nounwind { | 7421 define i8* @cat05(i64 %i) nounwind { |
7422 entry: | 7422 entry: |
7423 %0 = load i32** @dptr, align 8 | 7423 %0 = load i32*, i32** @dptr, align 8 |
7424 %1 = add i64 %i, 16 | 7424 %1 = add i64 %i, 16 |
7425 %2 = getelementptr i32* %0, i64 %1 | 7425 %2 = getelementptr i32, i32* %0, i64 %1 |
7426 %3 = bitcast i32* %2 to i8* | 7426 %3 = bitcast i32* %2 to i8* |
7427 ret i8* %3 | 7427 ret i8* %3 |
7428 ; LINUX-64-STATIC-LABEL: cat05: | 7428 ; LINUX-64-STATIC-LABEL: cat05: |
7429 ; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]] | 7429 ; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]] |
7430 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax | 7430 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax |
7486 } | 7486 } |
7487 | 7487 |
7488 define i8* @cat06(i64 %i) nounwind { | 7488 define i8* @cat06(i64 %i) nounwind { |
7489 entry: | 7489 entry: |
7490 %0 = add i64 %i, 16 | 7490 %0 = add i64 %i, 16 |
7491 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0 | 7491 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 |
7492 %2 = bitcast i32* %1 to i8* | 7492 %2 = bitcast i32* %1 to i8* |
7493 ret i8* %2 | 7493 ret i8* %2 |
7494 ; LINUX-64-STATIC-LABEL: cat06: | 7494 ; LINUX-64-STATIC-LABEL: cat06: |
7495 ; LINUX-64-STATIC: leaq lsrc+64(,%rdi,4), %rax | 7495 ; LINUX-64-STATIC: leaq lsrc+64(,%rdi,4), %rax |
7496 ; LINUX-64-STATIC: ret | 7496 ; LINUX-64-STATIC: ret |
7545 } | 7545 } |
7546 | 7546 |
7547 define i8* @cat07(i64 %i) nounwind { | 7547 define i8* @cat07(i64 %i) nounwind { |
7548 entry: | 7548 entry: |
7549 %0 = add i64 %i, 16 | 7549 %0 = add i64 %i, 16 |
7550 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0 | 7550 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 |
7551 %2 = bitcast i32* %1 to i8* | 7551 %2 = bitcast i32* %1 to i8* |
7552 ret i8* %2 | 7552 ret i8* %2 |
7553 ; LINUX-64-STATIC-LABEL: cat07: | 7553 ; LINUX-64-STATIC-LABEL: cat07: |
7554 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax | 7554 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax |
7555 ; LINUX-64-STATIC: ret | 7555 ; LINUX-64-STATIC: ret |
7603 ; DARWIN-64-PIC-NEXT: ret | 7603 ; DARWIN-64-PIC-NEXT: ret |
7604 } | 7604 } |
7605 | 7605 |
7606 define i8* @cat08(i64 %i) nounwind { | 7606 define i8* @cat08(i64 %i) nounwind { |
7607 entry: | 7607 entry: |
7608 %0 = load i32** @lptr, align 8 | 7608 %0 = load i32*, i32** @lptr, align 8 |
7609 %1 = add i64 %i, 16 | 7609 %1 = add i64 %i, 16 |
7610 %2 = getelementptr i32* %0, i64 %1 | 7610 %2 = getelementptr i32, i32* %0, i64 %1 |
7611 %3 = bitcast i32* %2 to i8* | 7611 %3 = bitcast i32* %2 to i8* |
7612 ret i8* %3 | 7612 ret i8* %3 |
7613 ; LINUX-64-STATIC-LABEL: cat08: | 7613 ; LINUX-64-STATIC-LABEL: cat08: |
7614 ; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]] | 7614 ; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]] |
7615 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax | 7615 ; LINUX-64-STATIC: leaq 64([[RAX]],%rdi,4), %rax |
7670 } | 7670 } |
7671 | 7671 |
7672 define i8* @cam00(i64 %i) nounwind { | 7672 define i8* @cam00(i64 %i) nounwind { |
7673 entry: | 7673 entry: |
7674 %0 = add i64 %i, 65536 | 7674 %0 = add i64 %i, 65536 |
7675 %1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0 | 7675 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 |
7676 %2 = bitcast i32* %1 to i8* | 7676 %2 = bitcast i32* %1 to i8* |
7677 ret i8* %2 | 7677 ret i8* %2 |
7678 ; LINUX-64-STATIC-LABEL: cam00: | 7678 ; LINUX-64-STATIC-LABEL: cam00: |
7679 ; LINUX-64-STATIC: leaq src+262144(,%rdi,4), %rax | 7679 ; LINUX-64-STATIC: leaq src+262144(,%rdi,4), %rax |
7680 ; LINUX-64-STATIC: ret | 7680 ; LINUX-64-STATIC: ret |
7731 } | 7731 } |
7732 | 7732 |
7733 define i8* @cxm00(i64 %i) nounwind { | 7733 define i8* @cxm00(i64 %i) nounwind { |
7734 entry: | 7734 entry: |
7735 %0 = add i64 %i, 65536 | 7735 %0 = add i64 %i, 65536 |
7736 %1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0 | 7736 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 |
7737 %2 = bitcast i32* %1 to i8* | 7737 %2 = bitcast i32* %1 to i8* |
7738 ret i8* %2 | 7738 ret i8* %2 |
7739 ; LINUX-64-STATIC-LABEL: cxm00: | 7739 ; LINUX-64-STATIC-LABEL: cxm00: |
7740 ; LINUX-64-STATIC: leaq xsrc+262144(,%rdi,4), %rax | 7740 ; LINUX-64-STATIC: leaq xsrc+262144(,%rdi,4), %rax |
7741 ; LINUX-64-STATIC: ret | 7741 ; LINUX-64-STATIC: ret |
7792 } | 7792 } |
7793 | 7793 |
7794 define i8* @cam01(i64 %i) nounwind { | 7794 define i8* @cam01(i64 %i) nounwind { |
7795 entry: | 7795 entry: |
7796 %0 = add i64 %i, 65536 | 7796 %0 = add i64 %i, 65536 |
7797 %1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0 | 7797 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 |
7798 %2 = bitcast i32* %1 to i8* | 7798 %2 = bitcast i32* %1 to i8* |
7799 ret i8* %2 | 7799 ret i8* %2 |
7800 ; LINUX-64-STATIC-LABEL: cam01: | 7800 ; LINUX-64-STATIC-LABEL: cam01: |
7801 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), %rax | 7801 ; LINUX-64-STATIC: leaq dst+262144(,%rdi,4), %rax |
7802 ; LINUX-64-STATIC: ret | 7802 ; LINUX-64-STATIC: ret |
7853 } | 7853 } |
7854 | 7854 |
7855 define i8* @cxm01(i64 %i) nounwind { | 7855 define i8* @cxm01(i64 %i) nounwind { |
7856 entry: | 7856 entry: |
7857 %0 = add i64 %i, 65536 | 7857 %0 = add i64 %i, 65536 |
7858 %1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0 | 7858 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 |
7859 %2 = bitcast i32* %1 to i8* | 7859 %2 = bitcast i32* %1 to i8* |
7860 ret i8* %2 | 7860 ret i8* %2 |
7861 ; LINUX-64-STATIC-LABEL: cxm01: | 7861 ; LINUX-64-STATIC-LABEL: cxm01: |
7862 ; LINUX-64-STATIC: leaq xdst+262144(,%rdi,4), %rax | 7862 ; LINUX-64-STATIC: leaq xdst+262144(,%rdi,4), %rax |
7863 ; LINUX-64-STATIC: ret | 7863 ; LINUX-64-STATIC: ret |
7913 ; DARWIN-64-PIC-NEXT: ret | 7913 ; DARWIN-64-PIC-NEXT: ret |
7914 } | 7914 } |
7915 | 7915 |
7916 define i8* @cam02(i64 %i) nounwind { | 7916 define i8* @cam02(i64 %i) nounwind { |
7917 entry: | 7917 entry: |
7918 %0 = load i32** @ptr, align 8 | 7918 %0 = load i32*, i32** @ptr, align 8 |
7919 %1 = add i64 %i, 65536 | 7919 %1 = add i64 %i, 65536 |
7920 %2 = getelementptr i32* %0, i64 %1 | 7920 %2 = getelementptr i32, i32* %0, i64 %1 |
7921 %3 = bitcast i32* %2 to i8* | 7921 %3 = bitcast i32* %2 to i8* |
7922 ret i8* %3 | 7922 ret i8* %3 |
7923 ; LINUX-64-STATIC-LABEL: cam02: | 7923 ; LINUX-64-STATIC-LABEL: cam02: |
7924 ; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]] | 7924 ; LINUX-64-STATIC: movq ptr(%rip), [[RAX:%r.x]] |
7925 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax | 7925 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax |
7986 } | 7986 } |
7987 | 7987 |
7988 define i8* @cam03(i64 %i) nounwind { | 7988 define i8* @cam03(i64 %i) nounwind { |
7989 entry: | 7989 entry: |
7990 %0 = add i64 %i, 65536 | 7990 %0 = add i64 %i, 65536 |
7991 %1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0 | 7991 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 |
7992 %2 = bitcast i32* %1 to i8* | 7992 %2 = bitcast i32* %1 to i8* |
7993 ret i8* %2 | 7993 ret i8* %2 |
7994 ; LINUX-64-STATIC-LABEL: cam03: | 7994 ; LINUX-64-STATIC-LABEL: cam03: |
7995 ; LINUX-64-STATIC: leaq dsrc+262144(,%rdi,4), %rax | 7995 ; LINUX-64-STATIC: leaq dsrc+262144(,%rdi,4), %rax |
7996 ; LINUX-64-STATIC: ret | 7996 ; LINUX-64-STATIC: ret |
8045 } | 8045 } |
8046 | 8046 |
8047 define i8* @cam04(i64 %i) nounwind { | 8047 define i8* @cam04(i64 %i) nounwind { |
8048 entry: | 8048 entry: |
8049 %0 = add i64 %i, 65536 | 8049 %0 = add i64 %i, 65536 |
8050 %1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0 | 8050 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 |
8051 %2 = bitcast i32* %1 to i8* | 8051 %2 = bitcast i32* %1 to i8* |
8052 ret i8* %2 | 8052 ret i8* %2 |
8053 ; LINUX-64-STATIC-LABEL: cam04: | 8053 ; LINUX-64-STATIC-LABEL: cam04: |
8054 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), %rax | 8054 ; LINUX-64-STATIC: leaq ddst+262144(,%rdi,4), %rax |
8055 ; LINUX-64-STATIC: ret | 8055 ; LINUX-64-STATIC: ret |
8103 ; DARWIN-64-PIC-NEXT: ret | 8103 ; DARWIN-64-PIC-NEXT: ret |
8104 } | 8104 } |
8105 | 8105 |
8106 define i8* @cam05(i64 %i) nounwind { | 8106 define i8* @cam05(i64 %i) nounwind { |
8107 entry: | 8107 entry: |
8108 %0 = load i32** @dptr, align 8 | 8108 %0 = load i32*, i32** @dptr, align 8 |
8109 %1 = add i64 %i, 65536 | 8109 %1 = add i64 %i, 65536 |
8110 %2 = getelementptr i32* %0, i64 %1 | 8110 %2 = getelementptr i32, i32* %0, i64 %1 |
8111 %3 = bitcast i32* %2 to i8* | 8111 %3 = bitcast i32* %2 to i8* |
8112 ret i8* %3 | 8112 ret i8* %3 |
8113 ; LINUX-64-STATIC-LABEL: cam05: | 8113 ; LINUX-64-STATIC-LABEL: cam05: |
8114 ; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]] | 8114 ; LINUX-64-STATIC: movq dptr(%rip), [[RAX:%r.x]] |
8115 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax | 8115 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax |
8171 } | 8171 } |
8172 | 8172 |
8173 define i8* @cam06(i64 %i) nounwind { | 8173 define i8* @cam06(i64 %i) nounwind { |
8174 entry: | 8174 entry: |
8175 %0 = add i64 %i, 65536 | 8175 %0 = add i64 %i, 65536 |
8176 %1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0 | 8176 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 |
8177 %2 = bitcast i32* %1 to i8* | 8177 %2 = bitcast i32* %1 to i8* |
8178 ret i8* %2 | 8178 ret i8* %2 |
8179 ; LINUX-64-STATIC-LABEL: cam06: | 8179 ; LINUX-64-STATIC-LABEL: cam06: |
8180 ; LINUX-64-STATIC: leaq lsrc+262144(,%rdi,4), %rax | 8180 ; LINUX-64-STATIC: leaq lsrc+262144(,%rdi,4), %rax |
8181 ; LINUX-64-STATIC: ret | 8181 ; LINUX-64-STATIC: ret |
8230 } | 8230 } |
8231 | 8231 |
8232 define i8* @cam07(i64 %i) nounwind { | 8232 define i8* @cam07(i64 %i) nounwind { |
8233 entry: | 8233 entry: |
8234 %0 = add i64 %i, 65536 | 8234 %0 = add i64 %i, 65536 |
8235 %1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0 | 8235 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 |
8236 %2 = bitcast i32* %1 to i8* | 8236 %2 = bitcast i32* %1 to i8* |
8237 ret i8* %2 | 8237 ret i8* %2 |
8238 ; LINUX-64-STATIC-LABEL: cam07: | 8238 ; LINUX-64-STATIC-LABEL: cam07: |
8239 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), %rax | 8239 ; LINUX-64-STATIC: leaq ldst+262144(,%rdi,4), %rax |
8240 ; LINUX-64-STATIC: ret | 8240 ; LINUX-64-STATIC: ret |
8288 ; DARWIN-64-PIC-NEXT: ret | 8288 ; DARWIN-64-PIC-NEXT: ret |
8289 } | 8289 } |
8290 | 8290 |
8291 define i8* @cam08(i64 %i) nounwind { | 8291 define i8* @cam08(i64 %i) nounwind { |
8292 entry: | 8292 entry: |
8293 %0 = load i32** @lptr, align 8 | 8293 %0 = load i32*, i32** @lptr, align 8 |
8294 %1 = add i64 %i, 65536 | 8294 %1 = add i64 %i, 65536 |
8295 %2 = getelementptr i32* %0, i64 %1 | 8295 %2 = getelementptr i32, i32* %0, i64 %1 |
8296 %3 = bitcast i32* %2 to i8* | 8296 %3 = bitcast i32* %2 to i8* |
8297 ret i8* %3 | 8297 ret i8* %3 |
8298 ; LINUX-64-STATIC-LABEL: cam08: | 8298 ; LINUX-64-STATIC-LABEL: cam08: |
8299 ; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]] | 8299 ; LINUX-64-STATIC: movq lptr(%rip), [[RAX:%r.x]] |
8300 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax | 8300 ; LINUX-64-STATIC: leaq 262144([[RAX]],%rdi,4), %rax |
9178 ; DARWIN-64-PIC-NEXT: ret | 9178 ; DARWIN-64-PIC-NEXT: ret |
9179 } | 9179 } |
9180 | 9180 |
9181 define void @icaller() nounwind { | 9181 define void @icaller() nounwind { |
9182 entry: | 9182 entry: |
9183 %0 = load void ()** @ifunc, align 8 | 9183 %0 = load void ()*, void ()** @ifunc, align 8 |
9184 call void %0() nounwind | 9184 call void %0() nounwind |
9185 %1 = load void ()** @ifunc, align 8 | 9185 %1 = load void ()*, void ()** @ifunc, align 8 |
9186 call void %1() nounwind | 9186 call void %1() nounwind |
9187 ret void | 9187 ret void |
9188 ; LINUX-64-STATIC-LABEL: icaller: | 9188 ; LINUX-64-STATIC-LABEL: icaller: |
9189 ; LINUX-64-STATIC: callq *ifunc | 9189 ; LINUX-64-STATIC: callq *ifunc |
9190 ; LINUX-64-STATIC: callq *ifunc | 9190 ; LINUX-64-STATIC: callq *ifunc |
9268 ; DARWIN-64-PIC-NEXT: ret | 9268 ; DARWIN-64-PIC-NEXT: ret |
9269 } | 9269 } |
9270 | 9270 |
9271 define void @dicaller() nounwind { | 9271 define void @dicaller() nounwind { |
9272 entry: | 9272 entry: |
9273 %0 = load void ()** @difunc, align 8 | 9273 %0 = load void ()*, void ()** @difunc, align 8 |
9274 call void %0() nounwind | 9274 call void %0() nounwind |
9275 %1 = load void ()** @difunc, align 8 | 9275 %1 = load void ()*, void ()** @difunc, align 8 |
9276 call void %1() nounwind | 9276 call void %1() nounwind |
9277 ret void | 9277 ret void |
9278 ; LINUX-64-STATIC-LABEL: dicaller: | 9278 ; LINUX-64-STATIC-LABEL: dicaller: |
9279 ; LINUX-64-STATIC: callq *difunc | 9279 ; LINUX-64-STATIC: callq *difunc |
9280 ; LINUX-64-STATIC: callq *difunc | 9280 ; LINUX-64-STATIC: callq *difunc |
9351 ; DARWIN-64-PIC-NEXT: ret | 9351 ; DARWIN-64-PIC-NEXT: ret |
9352 } | 9352 } |
9353 | 9353 |
9354 define void @licaller() nounwind { | 9354 define void @licaller() nounwind { |
9355 entry: | 9355 entry: |
9356 %0 = load void ()** @lifunc, align 8 | 9356 %0 = load void ()*, void ()** @lifunc, align 8 |
9357 call void %0() nounwind | 9357 call void %0() nounwind |
9358 %1 = load void ()** @lifunc, align 8 | 9358 %1 = load void ()*, void ()** @lifunc, align 8 |
9359 call void %1() nounwind | 9359 call void %1() nounwind |
9360 ret void | 9360 ret void |
9361 ; LINUX-64-STATIC-LABEL: licaller: | 9361 ; LINUX-64-STATIC-LABEL: licaller: |
9362 ; LINUX-64-STATIC: callq *lifunc | 9362 ; LINUX-64-STATIC: callq *lifunc |
9363 ; LINUX-64-STATIC: callq *lifunc | 9363 ; LINUX-64-STATIC: callq *lifunc |
9433 ; DARWIN-64-PIC-NEXT: ret | 9433 ; DARWIN-64-PIC-NEXT: ret |
9434 } | 9434 } |
9435 | 9435 |
9436 define void @itailcaller() nounwind { | 9436 define void @itailcaller() nounwind { |
9437 entry: | 9437 entry: |
9438 %0 = load void ()** @ifunc, align 8 | 9438 %0 = load void ()*, void ()** @ifunc, align 8 |
9439 call void %0() nounwind | 9439 call void %0() nounwind |
9440 %1 = load void ()** @ifunc, align 8 | 9440 %1 = load void ()*, void ()** @ifunc, align 8 |
9441 call void %1() nounwind | 9441 call void %1() nounwind |
9442 ret void | 9442 ret void |
9443 ; LINUX-64-STATIC-LABEL: itailcaller: | 9443 ; LINUX-64-STATIC-LABEL: itailcaller: |
9444 ; LINUX-64-STATIC: callq *ifunc | 9444 ; LINUX-64-STATIC: callq *ifunc |
9445 ; LINUX-64-STATIC: callq *ifunc | 9445 ; LINUX-64-STATIC: callq *ifunc |
9523 ; DARWIN-64-PIC-NEXT: ret | 9523 ; DARWIN-64-PIC-NEXT: ret |
9524 } | 9524 } |
9525 | 9525 |
9526 define void @ditailcaller() nounwind { | 9526 define void @ditailcaller() nounwind { |
9527 entry: | 9527 entry: |
9528 %0 = load void ()** @difunc, align 8 | 9528 %0 = load void ()*, void ()** @difunc, align 8 |
9529 call void %0() nounwind | 9529 call void %0() nounwind |
9530 ret void | 9530 ret void |
9531 ; LINUX-64-STATIC-LABEL: ditailcaller: | 9531 ; LINUX-64-STATIC-LABEL: ditailcaller: |
9532 ; LINUX-64-STATIC: callq *difunc | 9532 ; LINUX-64-STATIC: callq *difunc |
9533 ; LINUX-64-STATIC: ret | 9533 ; LINUX-64-STATIC: ret |
9591 ; DARWIN-64-PIC-NEXT: ret | 9591 ; DARWIN-64-PIC-NEXT: ret |
9592 } | 9592 } |
9593 | 9593 |
9594 define void @litailcaller() nounwind { | 9594 define void @litailcaller() nounwind { |
9595 entry: | 9595 entry: |
9596 %0 = load void ()** @lifunc, align 8 | 9596 %0 = load void ()*, void ()** @lifunc, align 8 |
9597 call void %0() nounwind | 9597 call void %0() nounwind |
9598 ret void | 9598 ret void |
9599 ; LINUX-64-STATIC-LABEL: litailcaller: | 9599 ; LINUX-64-STATIC-LABEL: litailcaller: |
9600 ; LINUX-64-STATIC: callq *lifunc | 9600 ; LINUX-64-STATIC: callq *lifunc |
9601 ; LINUX-64-STATIC: ret | 9601 ; LINUX-64-STATIC: ret |