130 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -mtriple=riscv32 -run-pass=instruction-select -relocation-model=pic \3# RUN: %s -o - | FileCheck --check-prefix=RV32-PIE %s4# RUN: llc -mtriple=riscv32 -run-pass=instruction-select \5# RUN: -mattr=+tagged-globals %s -o - | FileCheck \6# RUN: --check-prefix=RV32-NOPIE-TAG %s7# RUN: llc -mtriple=riscv32 -run-pass=instruction-select -code-model=small \8# RUN: %s -o - | FileCheck --check-prefix=RV32-SMALL-NOPIE-NOTAG %s9# RUN: llc -mtriple=riscv32 -run-pass=instruction-select -code-model=medium \10# RUN: %s -o - | FileCheck --check-prefix=RV32-MED %s11 12 13--- |14 @x = global i32 0, align 415 define ptr @global_addr() {16 entry:17 ret ptr @x18 }19 @y = extern_weak global i32, align 420 define ptr @extern_weak_global_addr() {21 entry:22 ret ptr @y23 }24 @z = dso_local global i32 0, align 425 define ptr @local_global_addr() {26 entry:27 ret ptr @z28 }29...30---31name: global_addr32legalized: true33regBankSelected: true34tracksRegLiveness: true35registers:36 - { id: 0, class: gprb, preferred-register: '' }37body: |38 bb.1.entry:39 ; RV32-PIE-LABEL: name: global_addr40 ; RV32-PIE: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @x :: (dereferenceable invariant load (p0) from got)41 ; RV32-PIE-NEXT: $x10 = COPY [[PseudoLGA]]42 ; RV32-PIE-NEXT: PseudoRET implicit $x1043 ;44 ; RV32-NOPIE-TAG-LABEL: name: global_addr45 ; RV32-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @x :: (dereferenceable invariant load (p0) from got)46 ; RV32-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]47 ; RV32-NOPIE-TAG-NEXT: PseudoRET implicit $x1048 ;49 ; RV32-SMALL-NOPIE-NOTAG-LABEL: name: global_addr50 ; RV32-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @x51 ; RV32-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @x52 ; RV32-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]53 ; RV32-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x1054 ;55 ; RV32-MED-LABEL: name: global_addr56 ; RV32-MED: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @x57 ; RV32-MED-NEXT: $x10 = COPY [[PseudoLLA]]58 ; RV32-MED-NEXT: PseudoRET implicit $x1059 %0:gprb(p0) = G_GLOBAL_VALUE @x60 $x10 = COPY %0(p0)61 PseudoRET implicit $x1062...63---64name: extern_weak_global_addr65legalized: true66regBankSelected: true67tracksRegLiveness: true68registers:69 - { id: 0, class: gprb, preferred-register: '' }70body: |71 bb.1.entry:72 ; RV32-PIE-LABEL: name: extern_weak_global_addr73 ; RV32-PIE: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)74 ; RV32-PIE-NEXT: $x10 = COPY [[PseudoLGA]]75 ; RV32-PIE-NEXT: PseudoRET implicit $x1076 ;77 ; RV32-NOPIE-TAG-LABEL: name: extern_weak_global_addr78 ; RV32-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)79 ; RV32-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]80 ; RV32-NOPIE-TAG-NEXT: PseudoRET implicit $x1081 ;82 ; RV32-SMALL-NOPIE-NOTAG-LABEL: name: extern_weak_global_addr83 ; RV32-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @y84 ; RV32-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @y85 ; RV32-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]86 ; RV32-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x1087 ;88 ; RV32-MED-LABEL: name: extern_weak_global_addr89 ; RV32-MED: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)90 ; RV32-MED-NEXT: $x10 = COPY [[PseudoLGA]]91 ; RV32-MED-NEXT: PseudoRET implicit $x1092 %0:gprb(p0) = G_GLOBAL_VALUE @y93 $x10 = COPY %0(p0)94 PseudoRET implicit $x1095...96---97name: local_global_addr98legalized: true99regBankSelected: true100tracksRegLiveness: true101registers:102 - { id: 0, class: gprb, preferred-register: '' }103body: |104 bb.1.entry:105 ; RV32-PIE-LABEL: name: local_global_addr106 ; RV32-PIE: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @z107 ; RV32-PIE-NEXT: $x10 = COPY [[PseudoLLA]]108 ; RV32-PIE-NEXT: PseudoRET implicit $x10109 ;110 ; RV32-NOPIE-TAG-LABEL: name: local_global_addr111 ; RV32-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @z :: (dereferenceable invariant load (p0) from got)112 ; RV32-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]113 ; RV32-NOPIE-TAG-NEXT: PseudoRET implicit $x10114 ;115 ; RV32-SMALL-NOPIE-NOTAG-LABEL: name: local_global_addr116 ; RV32-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @z117 ; RV32-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @z118 ; RV32-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]119 ; RV32-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x10120 ;121 ; RV32-MED-LABEL: name: local_global_addr122 ; RV32-MED: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @z123 ; RV32-MED-NEXT: $x10 = COPY [[PseudoLLA]]124 ; RV32-MED-NEXT: PseudoRET implicit $x10125 %0:gprb(p0) = G_GLOBAL_VALUE @z126 $x10 = COPY %0(p0)127 PseudoRET implicit $x10128...129 130