|
9 | 9 | ; RUN: llc -verify-machineinstrs < %s -relocation-model=pic -code-model=medium -large-data-threshold=1000 | FileCheck %s --check-prefix=CHECK --check-prefix=MEDIUM-SMALL-DATA-PIC
|
10 | 10 | ; RUN: llc -verify-machineinstrs < %s -relocation-model=pic -code-model=medium | FileCheck %s --check-prefix=CHECK --check-prefix=MEDIUM-PIC
|
11 | 11 | ; RUN: llc -verify-machineinstrs < %s -relocation-model=pic -code-model=large | FileCheck %s --check-prefix=CHECK --check-prefix=LARGE-PIC
|
12 |
| -; RUN: llc -verify-machineinstrs < %s -relocation-model=pic -code-model=large -large-data-threshold=1000 | FileCheck %s --check-prefix=CHECK --check-prefix=LARGE-PIC |
| 12 | +; RUN: llc -verify-machineinstrs < %s -relocation-model=pic -code-model=large -large-data-threshold=1000 | FileCheck %s --check-prefix=CHECK --check-prefix=LARGE-SMALL-DATA-PIC |
13 | 13 |
|
14 | 14 | ; Generated from this C source:
|
15 | 15 | ;
|
@@ -89,6 +89,16 @@ define dso_local ptr @lea_static_data() #0 {
|
89 | 89 | ; LARGE-PIC-NEXT: movabsq $static_data@GOTOFF, %rax
|
90 | 90 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
91 | 91 | ; LARGE-PIC-NEXT: retq
|
| 92 | +; |
| 93 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_static_data: |
| 94 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 95 | +; LARGE-SMALL-DATA-PIC-NEXT: .L0$pb: |
| 96 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L0$pb(%rip), %rax |
| 97 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L0$pb, %rcx |
| 98 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 99 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $static_data@GOTOFF, %rax |
| 100 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 101 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
92 | 102 | ret ptr @static_data
|
93 | 103 | }
|
94 | 104 |
|
@@ -134,6 +144,16 @@ define dso_local ptr @lea_global_data() #0 {
|
134 | 144 | ; LARGE-PIC-NEXT: movabsq $global_data@GOTOFF, %rax
|
135 | 145 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
136 | 146 | ; LARGE-PIC-NEXT: retq
|
| 147 | +; |
| 148 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_global_data: |
| 149 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 150 | +; LARGE-SMALL-DATA-PIC-NEXT: .L1$pb: |
| 151 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L1$pb(%rip), %rax |
| 152 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L1$pb, %rcx |
| 153 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 154 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $global_data@GOTOFF, %rax |
| 155 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 156 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
137 | 157 | ret ptr @global_data
|
138 | 158 | }
|
139 | 159 |
|
@@ -177,6 +197,16 @@ define dso_local ptr @lea_extern_data() #0 {
|
177 | 197 | ; LARGE-PIC-NEXT: movabsq $extern_data@GOT, %rax
|
178 | 198 | ; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
|
179 | 199 | ; LARGE-PIC-NEXT: retq
|
| 200 | +; |
| 201 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_extern_data: |
| 202 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 203 | +; LARGE-SMALL-DATA-PIC-NEXT: .L2$pb: |
| 204 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L2$pb(%rip), %rax |
| 205 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L2$pb, %rcx |
| 206 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 207 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $extern_data@GOT, %rax |
| 208 | +; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax |
| 209 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
180 | 210 | ret ptr @extern_data
|
181 | 211 | }
|
182 | 212 |
|
@@ -224,6 +254,16 @@ define dso_local ptr @lea_unknown_size_data() #0 {
|
224 | 254 | ; LARGE-PIC-NEXT: movabsq $unknown_size_data@GOTOFF, %rax
|
225 | 255 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
226 | 256 | ; LARGE-PIC-NEXT: retq
|
| 257 | +; |
| 258 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_unknown_size_data: |
| 259 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 260 | +; LARGE-SMALL-DATA-PIC-NEXT: .L3$pb: |
| 261 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L3$pb(%rip), %rax |
| 262 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L3$pb, %rcx |
| 263 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 264 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $unknown_size_data@GOTOFF, %rax |
| 265 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 266 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
227 | 267 | ret ptr @unknown_size_data
|
228 | 268 | }
|
229 | 269 |
|
@@ -268,6 +308,16 @@ define dso_local ptr @lea_forced_small_data() #0 {
|
268 | 308 | ; LARGE-PIC-NEXT: movabsq $forced_small_data@GOTOFF, %rax
|
269 | 309 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
270 | 310 | ; LARGE-PIC-NEXT: retq
|
| 311 | +; |
| 312 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_forced_small_data: |
| 313 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 314 | +; LARGE-SMALL-DATA-PIC-NEXT: .L4$pb: |
| 315 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L4$pb(%rip), %rax |
| 316 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L4$pb, %rcx |
| 317 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 318 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $forced_small_data@GOTOFF, %rax |
| 319 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 320 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
271 | 321 | ret ptr @forced_small_data
|
272 | 322 | }
|
273 | 323 |
|
@@ -316,6 +366,16 @@ define dso_local i32 @load_forced_small_data() #0 {
|
316 | 366 | ; LARGE-PIC-NEXT: movabsq $forced_small_data@GOTOFF, %rax
|
317 | 367 | ; LARGE-PIC-NEXT: movl 8(%rcx,%rax), %eax
|
318 | 368 | ; LARGE-PIC-NEXT: retq
|
| 369 | +; |
| 370 | +; LARGE-SMALL-DATA-PIC-LABEL: load_forced_small_data: |
| 371 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 372 | +; LARGE-SMALL-DATA-PIC-NEXT: .L5$pb: |
| 373 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L5$pb(%rip), %rax |
| 374 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L5$pb, %rcx |
| 375 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 376 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $forced_small_data@GOTOFF, %rax |
| 377 | +; LARGE-SMALL-DATA-PIC-NEXT: movl 8(%rcx,%rax), %eax |
| 378 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
319 | 379 | %rv = load i32, ptr getelementptr inbounds (i32, ptr @forced_small_data, i64 2)
|
320 | 380 | ret i32 %rv
|
321 | 381 | }
|
@@ -366,6 +426,16 @@ define dso_local ptr @lea_forced_large_data() #0 {
|
366 | 426 | ; LARGE-PIC-NEXT: movabsq $forced_large_data@GOTOFF, %rax
|
367 | 427 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
368 | 428 | ; LARGE-PIC-NEXT: retq
|
| 429 | +; |
| 430 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_forced_large_data: |
| 431 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 432 | +; LARGE-SMALL-DATA-PIC-NEXT: .L6$pb: |
| 433 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L6$pb(%rip), %rax |
| 434 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L6$pb, %rcx |
| 435 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 436 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $forced_large_data@GOTOFF, %rax |
| 437 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 438 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
369 | 439 | ret ptr @forced_large_data
|
370 | 440 | }
|
371 | 441 |
|
@@ -416,6 +486,16 @@ define dso_local i32 @load_forced_large_data() #0 {
|
416 | 486 | ; LARGE-PIC-NEXT: movabsq $forced_large_data@GOTOFF, %rax
|
417 | 487 | ; LARGE-PIC-NEXT: movl 8(%rcx,%rax), %eax
|
418 | 488 | ; LARGE-PIC-NEXT: retq
|
| 489 | +; |
| 490 | +; LARGE-SMALL-DATA-PIC-LABEL: load_forced_large_data: |
| 491 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 492 | +; LARGE-SMALL-DATA-PIC-NEXT: .L7$pb: |
| 493 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L7$pb(%rip), %rax |
| 494 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L7$pb, %rcx |
| 495 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 496 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $forced_large_data@GOTOFF, %rax |
| 497 | +; LARGE-SMALL-DATA-PIC-NEXT: movl 8(%rcx,%rax), %eax |
| 498 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
419 | 499 | %rv = load i32, ptr getelementptr inbounds (i32, ptr @forced_large_data, i64 2)
|
420 | 500 | ret i32 %rv
|
421 | 501 | }
|
@@ -465,6 +545,16 @@ define dso_local i32 @load_global_data() #0 {
|
465 | 545 | ; LARGE-PIC-NEXT: movabsq $global_data@GOTOFF, %rax
|
466 | 546 | ; LARGE-PIC-NEXT: movl 8(%rcx,%rax), %eax
|
467 | 547 | ; LARGE-PIC-NEXT: retq
|
| 548 | +; |
| 549 | +; LARGE-SMALL-DATA-PIC-LABEL: load_global_data: |
| 550 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 551 | +; LARGE-SMALL-DATA-PIC-NEXT: .L8$pb: |
| 552 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L8$pb(%rip), %rax |
| 553 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L8$pb, %rcx |
| 554 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 555 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $global_data@GOTOFF, %rax |
| 556 | +; LARGE-SMALL-DATA-PIC-NEXT: movl 8(%rcx,%rax), %eax |
| 557 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
468 | 558 | %rv = load i32, ptr getelementptr inbounds ([10 x i32], ptr @global_data, i64 0, i64 2)
|
469 | 559 | ret i32 %rv
|
470 | 560 | }
|
@@ -516,6 +606,17 @@ define dso_local i32 @load_extern_data() #0 {
|
516 | 606 | ; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
|
517 | 607 | ; LARGE-PIC-NEXT: movl 8(%rax), %eax
|
518 | 608 | ; LARGE-PIC-NEXT: retq
|
| 609 | +; |
| 610 | +; LARGE-SMALL-DATA-PIC-LABEL: load_extern_data: |
| 611 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 612 | +; LARGE-SMALL-DATA-PIC-NEXT: .L9$pb: |
| 613 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L9$pb(%rip), %rax |
| 614 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L9$pb, %rcx |
| 615 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 616 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $extern_data@GOT, %rax |
| 617 | +; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax |
| 618 | +; LARGE-SMALL-DATA-PIC-NEXT: movl 8(%rax), %eax |
| 619 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
519 | 620 | %rv = load i32, ptr getelementptr inbounds ([10 x i32], ptr @extern_data, i64 0, i64 2)
|
520 | 621 | ret i32 %rv
|
521 | 622 | }
|
@@ -566,6 +667,16 @@ define dso_local i32 @load_unknown_size_data() #0 {
|
566 | 667 | ; LARGE-PIC-NEXT: movabsq $unknown_size_data@GOTOFF, %rax
|
567 | 668 | ; LARGE-PIC-NEXT: movl 8(%rcx,%rax), %eax
|
568 | 669 | ; LARGE-PIC-NEXT: retq
|
| 670 | +; |
| 671 | +; LARGE-SMALL-DATA-PIC-LABEL: load_unknown_size_data: |
| 672 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 673 | +; LARGE-SMALL-DATA-PIC-NEXT: .L10$pb: |
| 674 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L10$pb(%rip), %rax |
| 675 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L10$pb, %rcx |
| 676 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 677 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $unknown_size_data@GOTOFF, %rax |
| 678 | +; LARGE-SMALL-DATA-PIC-NEXT: movl 8(%rcx,%rax), %eax |
| 679 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
569 | 680 | %rv = load i32, ptr getelementptr inbounds (i32, ptr @unknown_size_data, i64 2)
|
570 | 681 | ret i32 %rv
|
571 | 682 | }
|
@@ -614,6 +725,16 @@ define dso_local ptr @lea_opaque() #0 {
|
614 | 725 | ; LARGE-PIC-NEXT: movabsq $opaque@GOTOFF, %rax
|
615 | 726 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
616 | 727 | ; LARGE-PIC-NEXT: retq
|
| 728 | +; |
| 729 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_opaque: |
| 730 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 731 | +; LARGE-SMALL-DATA-PIC-NEXT: .L11$pb: |
| 732 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L11$pb(%rip), %rax |
| 733 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L11$pb, %rcx |
| 734 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 735 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $opaque@GOTOFF, %rax |
| 736 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 737 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
617 | 738 | ret ptr @opaque
|
618 | 739 | }
|
619 | 740 |
|
@@ -685,6 +806,16 @@ define dso_local ptr @lea_static_fn() #0 {
|
685 | 806 | ; LARGE-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax
|
686 | 807 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
687 | 808 | ; LARGE-PIC-NEXT: retq
|
| 809 | +; |
| 810 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_static_fn: |
| 811 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 812 | +; LARGE-SMALL-DATA-PIC-NEXT: .L15$pb: |
| 813 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L15$pb(%rip), %rax |
| 814 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L15$pb, %rcx |
| 815 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 816 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $static_fn@GOTOFF, %rax |
| 817 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 818 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
688 | 819 | ret ptr @static_fn
|
689 | 820 | }
|
690 | 821 |
|
@@ -728,6 +859,16 @@ define dso_local ptr @lea_global_fn() #0 {
|
728 | 859 | ; LARGE-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax
|
729 | 860 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
730 | 861 | ; LARGE-PIC-NEXT: retq
|
| 862 | +; |
| 863 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_global_fn: |
| 864 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 865 | +; LARGE-SMALL-DATA-PIC-NEXT: .L16$pb: |
| 866 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L16$pb(%rip), %rax |
| 867 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L16$pb, %rcx |
| 868 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 869 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $global_fn@GOTOFF, %rax |
| 870 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 871 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
731 | 872 | ret ptr @global_fn
|
732 | 873 | }
|
733 | 874 |
|
@@ -771,6 +912,16 @@ define dso_local ptr @lea_extern_fn() #0 {
|
771 | 912 | ; LARGE-PIC-NEXT: movabsq $extern_fn@GOT, %rax
|
772 | 913 | ; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
|
773 | 914 | ; LARGE-PIC-NEXT: retq
|
| 915 | +; |
| 916 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_extern_fn: |
| 917 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 918 | +; LARGE-SMALL-DATA-PIC-NEXT: .L17$pb: |
| 919 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L17$pb(%rip), %rax |
| 920 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L17$pb, %rcx |
| 921 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 922 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $extern_fn@GOT, %rax |
| 923 | +; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax |
| 924 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
774 | 925 | ret ptr @extern_fn
|
775 | 926 | }
|
776 | 927 |
|
@@ -814,6 +965,16 @@ define dso_local ptr @lea_ifunc() #0 {
|
814 | 965 | ; LARGE-PIC-NEXT: movabsq $ifunc_func@GOT, %rax
|
815 | 966 | ; LARGE-PIC-NEXT: movq (%rcx,%rax), %rax
|
816 | 967 | ; LARGE-PIC-NEXT: retq
|
| 968 | +; |
| 969 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_ifunc: |
| 970 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 971 | +; LARGE-SMALL-DATA-PIC-NEXT: .L18$pb: |
| 972 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L18$pb(%rip), %rax |
| 973 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L18$pb, %rcx |
| 974 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 975 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $ifunc_func@GOT, %rax |
| 976 | +; LARGE-SMALL-DATA-PIC-NEXT: movq (%rcx,%rax), %rax |
| 977 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
817 | 978 | ret ptr @ifunc_func
|
818 | 979 | }
|
819 | 980 |
|
@@ -857,6 +1018,16 @@ define dso_local ptr @lea_dso_local_ifunc() #0 {
|
857 | 1018 | ; LARGE-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax
|
858 | 1019 | ; LARGE-PIC-NEXT: addq %rcx, %rax
|
859 | 1020 | ; LARGE-PIC-NEXT: retq
|
| 1021 | +; |
| 1022 | +; LARGE-SMALL-DATA-PIC-LABEL: lea_dso_local_ifunc: |
| 1023 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 1024 | +; LARGE-SMALL-DATA-PIC-NEXT: .L19$pb: |
| 1025 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L19$pb(%rip), %rax |
| 1026 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L19$pb, %rcx |
| 1027 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 1028 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $dso_local_ifunc_func@GOTOFF, %rax |
| 1029 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rcx, %rax |
| 1030 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
860 | 1031 | ret ptr @dso_local_ifunc_func
|
861 | 1032 | }
|
862 | 1033 |
|
@@ -935,6 +1106,16 @@ define dso_local float @load_constant_pool(float %x) #0 {
|
935 | 1106 | ; LARGE-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax
|
936 | 1107 | ; LARGE-PIC-NEXT: addss (%rcx,%rax), %xmm0
|
937 | 1108 | ; LARGE-PIC-NEXT: retq
|
| 1109 | +; |
| 1110 | +; LARGE-SMALL-DATA-PIC-LABEL: load_constant_pool: |
| 1111 | +; LARGE-SMALL-DATA-PIC: # %bb.0: |
| 1112 | +; LARGE-SMALL-DATA-PIC-NEXT: .L21$pb: |
| 1113 | +; LARGE-SMALL-DATA-PIC-NEXT: leaq .L21$pb(%rip), %rax |
| 1114 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq $_GLOBAL_OFFSET_TABLE_-.L21$pb, %rcx |
| 1115 | +; LARGE-SMALL-DATA-PIC-NEXT: addq %rax, %rcx |
| 1116 | +; LARGE-SMALL-DATA-PIC-NEXT: movabsq ${{\.?LCPI[0-9]+_[0-9]+}}@GOTOFF, %rax |
| 1117 | +; LARGE-SMALL-DATA-PIC-NEXT: addss (%rcx,%rax), %xmm0 |
| 1118 | +; LARGE-SMALL-DATA-PIC-NEXT: retq |
938 | 1119 | %a = fadd float %x, 1.0
|
939 | 1120 | ret float %a
|
940 | 1121 | }
|
|
0 commit comments