brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.5 KiB · 8197bf9 Raw
235 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=DEFAULT,CHECK3# RUN: llc -mtriple aarch64-apple-darwin -code-model=large -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=LARGE-MACHO,CHECK4# RUN: llc -mtriple aarch64-apple-darwin -code-model=small -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=SMALL-MACHO,CHECK5# RUN: llc -mtriple aarch64-linux-elf -code-model=large -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=LARGE-ELF,CHECK6# RUN: llc -mtriple aarch64-linux-elf -code-model=tiny -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=TINY,CHECK7# RUN: llc -mtriple aarch64-windows-coff -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=WINDOWS,CHECK8 9# Each of these tests has a trivial pattern for folding a G_PTR_ADD into a10# G_GLOBAL_VALUE.11#12# Check that given different code models/target features, we do/don't fold.13 14--- |15    @external_linkage = external hidden global i3216    @common_linkage = common local_unnamed_addr global i32 0, align 417    @internal_linkage = internal unnamed_addr global i32 0, align 418    @extern_weak_linkage = extern_weak hidden global i3219    @dll_import = external dllimport global i3220 21    define void @test_external_linkage() { ret void }22    define void @test_internal_linkage() { ret void }23    define void @test_common_linkage() { ret void }24    define void @test_extern_weak_linkage() { ret void }25    define void @never_fold_tagged_globals() #0 { ret void }26    define void @test_dll_import() { ret void }27 28    attributes #0 = { "target-features"="+tagged-globals" }29...30---31name:            test_external_linkage32alignment:       433tracksRegLiveness: true34machineFunctionInfo: {}35body:             |36  bb.0:37    ; Large + Mach-O goes via GOT, so we can't fold.38 39    ; DEFAULT-LABEL: name: test_external_linkage40    ; DEFAULT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_linkage + 141    ; DEFAULT-NEXT: $x0 = COPY [[GV]](p0)42    ; DEFAULT-NEXT: RET_ReallyLR implicit $x043    ;44    ; LARGE-MACHO-LABEL: name: test_external_linkage45    ; LARGE-MACHO: %global:_(p0) = G_GLOBAL_VALUE @external_linkage46    ; LARGE-MACHO-NEXT: %imm:_(s64) = G_CONSTANT i64 147    ; LARGE-MACHO-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)48    ; LARGE-MACHO-NEXT: $x0 = COPY %ptr_add(p0)49    ; LARGE-MACHO-NEXT: RET_ReallyLR implicit $x050    ;51    ; SMALL-MACHO-LABEL: name: test_external_linkage52    ; SMALL-MACHO: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_linkage + 153    ; SMALL-MACHO-NEXT: $x0 = COPY [[GV]](p0)54    ; SMALL-MACHO-NEXT: RET_ReallyLR implicit $x055    ;56    ; LARGE-ELF-LABEL: name: test_external_linkage57    ; LARGE-ELF: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_linkage + 158    ; LARGE-ELF-NEXT: $x0 = COPY [[GV]](p0)59    ; LARGE-ELF-NEXT: RET_ReallyLR implicit $x060    ;61    ; TINY-LABEL: name: test_external_linkage62    ; TINY: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_linkage + 163    ; TINY-NEXT: $x0 = COPY [[GV]](p0)64    ; TINY-NEXT: RET_ReallyLR implicit $x065    ;66    ; WINDOWS-LABEL: name: test_external_linkage67    ; WINDOWS: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @external_linkage + 168    ; WINDOWS-NEXT: $x0 = COPY [[GV]](p0)69    ; WINDOWS-NEXT: RET_ReallyLR implicit $x070    %global:_(p0) = G_GLOBAL_VALUE @external_linkage71    %imm:_(s64) = G_CONSTANT i64 172    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)73    $x0 = COPY %ptr_add(p0)74    RET_ReallyLR implicit $x075 76...77---78name:            test_internal_linkage79alignment:       480tracksRegLiveness: true81machineFunctionInfo: {}82body:             |83  bb.0:84    ; Large + Mach-O goes via GOT, so we can't fold.85 86    ; DEFAULT-LABEL: name: test_internal_linkage87    ; DEFAULT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @internal_linkage + 188    ; DEFAULT-NEXT: $x0 = COPY [[GV]](p0)89    ; DEFAULT-NEXT: RET_ReallyLR implicit $x090    ;91    ; LARGE-MACHO-LABEL: name: test_internal_linkage92    ; LARGE-MACHO: %global:_(p0) = G_GLOBAL_VALUE @internal_linkage93    ; LARGE-MACHO-NEXT: %imm:_(s64) = G_CONSTANT i64 194    ; LARGE-MACHO-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)95    ; LARGE-MACHO-NEXT: $x0 = COPY %ptr_add(p0)96    ; LARGE-MACHO-NEXT: RET_ReallyLR implicit $x097    ;98    ; SMALL-MACHO-LABEL: name: test_internal_linkage99    ; SMALL-MACHO: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @internal_linkage + 1100    ; SMALL-MACHO-NEXT: $x0 = COPY [[GV]](p0)101    ; SMALL-MACHO-NEXT: RET_ReallyLR implicit $x0102    ;103    ; LARGE-ELF-LABEL: name: test_internal_linkage104    ; LARGE-ELF: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @internal_linkage + 1105    ; LARGE-ELF-NEXT: $x0 = COPY [[GV]](p0)106    ; LARGE-ELF-NEXT: RET_ReallyLR implicit $x0107    ;108    ; TINY-LABEL: name: test_internal_linkage109    ; TINY: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @internal_linkage + 1110    ; TINY-NEXT: $x0 = COPY [[GV]](p0)111    ; TINY-NEXT: RET_ReallyLR implicit $x0112    ;113    ; WINDOWS-LABEL: name: test_internal_linkage114    ; WINDOWS: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @internal_linkage + 1115    ; WINDOWS-NEXT: $x0 = COPY [[GV]](p0)116    ; WINDOWS-NEXT: RET_ReallyLR implicit $x0117    %global:_(p0) = G_GLOBAL_VALUE @internal_linkage118    %imm:_(s64) = G_CONSTANT i64 1119    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)120    $x0 = COPY %ptr_add(p0)121    RET_ReallyLR implicit $x0122 123...124---125name:            test_common_linkage126alignment:       4127tracksRegLiveness: true128machineFunctionInfo: {}129body:             |130  bb.0:131    ; DEFAULT-LABEL: name: test_common_linkage132    ; DEFAULT: %global:_(p0) = G_GLOBAL_VALUE @common_linkage133    ; DEFAULT-NEXT: %imm:_(s64) = G_CONSTANT i64 1134    ; DEFAULT-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)135    ; DEFAULT-NEXT: $x0 = COPY %ptr_add(p0)136    ; DEFAULT-NEXT: RET_ReallyLR implicit $x0137    ;138    ; LARGE-MACHO-LABEL: name: test_common_linkage139    ; LARGE-MACHO: %global:_(p0) = G_GLOBAL_VALUE @common_linkage140    ; LARGE-MACHO-NEXT: %imm:_(s64) = G_CONSTANT i64 1141    ; LARGE-MACHO-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)142    ; LARGE-MACHO-NEXT: $x0 = COPY %ptr_add(p0)143    ; LARGE-MACHO-NEXT: RET_ReallyLR implicit $x0144    ;145    ; SMALL-MACHO-LABEL: name: test_common_linkage146    ; SMALL-MACHO: %global:_(p0) = G_GLOBAL_VALUE @common_linkage147    ; SMALL-MACHO-NEXT: %imm:_(s64) = G_CONSTANT i64 1148    ; SMALL-MACHO-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)149    ; SMALL-MACHO-NEXT: $x0 = COPY %ptr_add(p0)150    ; SMALL-MACHO-NEXT: RET_ReallyLR implicit $x0151    ;152    ; LARGE-ELF-LABEL: name: test_common_linkage153    ; LARGE-ELF: %global:_(p0) = G_GLOBAL_VALUE @common_linkage154    ; LARGE-ELF-NEXT: %imm:_(s64) = G_CONSTANT i64 1155    ; LARGE-ELF-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)156    ; LARGE-ELF-NEXT: $x0 = COPY %ptr_add(p0)157    ; LARGE-ELF-NEXT: RET_ReallyLR implicit $x0158    ;159    ; TINY-LABEL: name: test_common_linkage160    ; TINY: %global:_(p0) = G_GLOBAL_VALUE @common_linkage161    ; TINY-NEXT: %imm:_(s64) = G_CONSTANT i64 1162    ; TINY-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)163    ; TINY-NEXT: $x0 = COPY %ptr_add(p0)164    ; TINY-NEXT: RET_ReallyLR implicit $x0165    ;166    ; WINDOWS-LABEL: name: test_common_linkage167    ; WINDOWS: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @common_linkage + 1168    ; WINDOWS-NEXT: $x0 = COPY [[GV]](p0)169    ; WINDOWS-NEXT: RET_ReallyLR implicit $x0170    %global:_(p0) = G_GLOBAL_VALUE @common_linkage171    %imm:_(s64) = G_CONSTANT i64 1172    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)173    $x0 = COPY %ptr_add(p0)174    RET_ReallyLR implicit $x0175 176...177---178name:            test_extern_weak_linkage179alignment:       4180tracksRegLiveness: true181machineFunctionInfo: {}182body:             |183  bb.0:184    ; CHECK-LABEL: name: test_extern_weak_linkage185    ; CHECK: %global:_(p0) = G_GLOBAL_VALUE @extern_weak_linkage186    ; CHECK-NEXT: %imm:_(s64) = G_CONSTANT i64 1187    ; CHECK-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)188    ; CHECK-NEXT: $x0 = COPY %ptr_add(p0)189    ; CHECK-NEXT: RET_ReallyLR implicit $x0190    %global:_(p0) = G_GLOBAL_VALUE @extern_weak_linkage191    %imm:_(s64) = G_CONSTANT i64 1192    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)193    $x0 = COPY %ptr_add(p0)194    RET_ReallyLR implicit $x0195 196...197---198name:            never_fold_tagged_globals199alignment:       4200tracksRegLiveness: true201machineFunctionInfo: {}202body:             |203  bb.0:204    ; CHECK-LABEL: name: never_fold_tagged_globals205    ; CHECK: %global:_(p0) = G_GLOBAL_VALUE @external_linkage206    ; CHECK-NEXT: %imm:_(s64) = G_CONSTANT i64 1207    ; CHECK-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)208    ; CHECK-NEXT: $x0 = COPY %ptr_add(p0)209    ; CHECK-NEXT: RET_ReallyLR implicit $x0210    %global:_(p0) = G_GLOBAL_VALUE @external_linkage211    %imm:_(s64) = G_CONSTANT i64 1212    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)213    $x0 = COPY %ptr_add(p0)214    RET_ReallyLR implicit $x0215 216...217---218name:            test_dll_import219alignment:       4220tracksRegLiveness: true221machineFunctionInfo: {}222body:             |223  bb.0:224    ; CHECK-LABEL: name: test_dll_import225    ; CHECK: %global:_(p0) = G_GLOBAL_VALUE @dll_import226    ; CHECK-NEXT: %imm:_(s64) = G_CONSTANT i64 1227    ; CHECK-NEXT: %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)228    ; CHECK-NEXT: $x0 = COPY %ptr_add(p0)229    ; CHECK-NEXT: RET_ReallyLR implicit $x0230    %global:_(p0) = G_GLOBAL_VALUE @dll_import231    %imm:_(s64) = G_CONSTANT i64 1232    %ptr_add:_(p0) = G_PTR_ADD %global, %imm(s64)233    $x0 = COPY %ptr_add(p0)234    RET_ReallyLR implicit $x0235