129 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -mtriple=riscv64 -run-pass=instruction-select -relocation-model=pic \3# RUN: %s -o - | FileCheck --check-prefix=RV64-PIE %s4# RUN: llc -mtriple=riscv64 -run-pass=instruction-select \5# RUN: -mattr=+tagged-globals %s -o - | FileCheck \6# RUN: --check-prefix=RV64-NOPIE-TAG %s7# RUN: llc -mtriple=riscv64 -run-pass=instruction-select -code-model=small \8# RUN: %s -o - | FileCheck --check-prefix=RV64-SMALL-NOPIE-NOTAG %s9# RUN: llc -mtriple=riscv64 -run-pass=instruction-select -code-model=medium \10# RUN: %s -o - | FileCheck --check-prefix=RV64-MED %s11 12--- |13 @x = global i32 0, align 414 define ptr @global_addr() {15 entry:16 ret ptr @x17 }18 @y = extern_weak global i32, align 419 define ptr @extern_weak_global_addr() {20 entry:21 ret ptr @y22 }23 @z = dso_local global i32 0, align 424 define ptr @local_global_addr() {25 entry:26 ret ptr @z27 }28...29---30name: global_addr31legalized: true32regBankSelected: true33tracksRegLiveness: true34registers:35 - { id: 0, class: gprb, preferred-register: '' }36body: |37 bb.1.entry:38 ; RV64-PIE-LABEL: name: global_addr39 ; RV64-PIE: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @x :: (dereferenceable invariant load (p0) from got)40 ; RV64-PIE-NEXT: $x10 = COPY [[PseudoLGA]]41 ; RV64-PIE-NEXT: PseudoRET implicit $x1042 ;43 ; RV64-NOPIE-TAG-LABEL: name: global_addr44 ; RV64-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @x :: (dereferenceable invariant load (p0) from got)45 ; RV64-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]46 ; RV64-NOPIE-TAG-NEXT: PseudoRET implicit $x1047 ;48 ; RV64-SMALL-NOPIE-NOTAG-LABEL: name: global_addr49 ; RV64-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @x50 ; RV64-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @x51 ; RV64-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]52 ; RV64-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x1053 ;54 ; RV64-MED-LABEL: name: global_addr55 ; RV64-MED: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @x56 ; RV64-MED-NEXT: $x10 = COPY [[PseudoLLA]]57 ; RV64-MED-NEXT: PseudoRET implicit $x1058 %0:gprb(p0) = G_GLOBAL_VALUE @x59 $x10 = COPY %0(p0)60 PseudoRET implicit $x1061...62---63name: extern_weak_global_addr64legalized: true65regBankSelected: true66tracksRegLiveness: true67registers:68 - { id: 0, class: gprb, preferred-register: '' }69body: |70 bb.1.entry:71 ; RV64-PIE-LABEL: name: extern_weak_global_addr72 ; RV64-PIE: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)73 ; RV64-PIE-NEXT: $x10 = COPY [[PseudoLGA]]74 ; RV64-PIE-NEXT: PseudoRET implicit $x1075 ;76 ; RV64-NOPIE-TAG-LABEL: name: extern_weak_global_addr77 ; RV64-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)78 ; RV64-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]79 ; RV64-NOPIE-TAG-NEXT: PseudoRET implicit $x1080 ;81 ; RV64-SMALL-NOPIE-NOTAG-LABEL: name: extern_weak_global_addr82 ; RV64-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @y83 ; RV64-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @y84 ; RV64-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]85 ; RV64-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x1086 ;87 ; RV64-MED-LABEL: name: extern_weak_global_addr88 ; RV64-MED: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @y :: (dereferenceable invariant load (p0) from got)89 ; RV64-MED-NEXT: $x10 = COPY [[PseudoLGA]]90 ; RV64-MED-NEXT: PseudoRET implicit $x1091 %0:gprb(p0) = G_GLOBAL_VALUE @y92 $x10 = COPY %0(p0)93 PseudoRET implicit $x1094...95---96name: local_global_addr97legalized: true98regBankSelected: true99tracksRegLiveness: true100registers:101 - { id: 0, class: gprb, preferred-register: '' }102body: |103 bb.1.entry:104 ; RV64-PIE-LABEL: name: local_global_addr105 ; RV64-PIE: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @z106 ; RV64-PIE-NEXT: $x10 = COPY [[PseudoLLA]]107 ; RV64-PIE-NEXT: PseudoRET implicit $x10108 ;109 ; RV64-NOPIE-TAG-LABEL: name: local_global_addr110 ; RV64-NOPIE-TAG: [[PseudoLGA:%[0-9]+]]:gpr = PseudoLGA @z :: (dereferenceable invariant load (p0) from got)111 ; RV64-NOPIE-TAG-NEXT: $x10 = COPY [[PseudoLGA]]112 ; RV64-NOPIE-TAG-NEXT: PseudoRET implicit $x10113 ;114 ; RV64-SMALL-NOPIE-NOTAG-LABEL: name: local_global_addr115 ; RV64-SMALL-NOPIE-NOTAG: [[LUI:%[0-9]+]]:gpr = LUI target-flags(riscv-hi) @z116 ; RV64-SMALL-NOPIE-NOTAG-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[LUI]], target-flags(riscv-lo) @z117 ; RV64-SMALL-NOPIE-NOTAG-NEXT: $x10 = COPY [[ADDI]]118 ; RV64-SMALL-NOPIE-NOTAG-NEXT: PseudoRET implicit $x10119 ;120 ; RV64-MED-LABEL: name: local_global_addr121 ; RV64-MED: [[PseudoLLA:%[0-9]+]]:gpr = PseudoLLA @z122 ; RV64-MED-NEXT: $x10 = COPY [[PseudoLLA]]123 ; RV64-MED-NEXT: PseudoRET implicit $x10124 %0:gprb(p0) = G_GLOBAL_VALUE @z125 $x10 = COPY %0(p0)126 PseudoRET implicit $x10127...128 129