166 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -relocation-model=pic -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS323--- |4 5 @val = global i32 06 @val_with_local_linkage = internal global i32 17 8 declare i32 @f(i32, i32)9 define internal void @f_with_local_linkage() {entry: ret void}10 define void @call_global() {entry: ret void}11 define void @call_global_with_local_linkage() {entry: ret void}12 define void @ret_global_int() {entry: ret void}13 define void @ret_global_int_with_local_linkage() {entry: ret void}14 15...16---17name: f_with_local_linkage18alignment: 419legalized: true20regBankSelected: true21tracksRegLiveness: true22body: |23 bb.1.entry:24 liveins: $a0, $a125 26 ; MIPS32-LABEL: name: f_with_local_linkage27 ; MIPS32: liveins: $a0, $a128 ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a029 ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a130 ; MIPS32: [[ADDu:%[0-9]+]]:gpr32 = ADDu [[COPY1]], [[COPY]]31 ; MIPS32: $v0 = COPY [[ADDu]]32 ; MIPS32: RetRA implicit $v033 %0:gprb(s32) = COPY $a034 %1:gprb(s32) = COPY $a135 %2:gprb(s32) = G_ADD %1, %036 $v0 = COPY %2(s32)37 RetRA implicit $v038 39...40---41name: call_global42alignment: 443legalized: true44regBankSelected: true45tracksRegLiveness: true46body: |47 bb.1.entry:48 liveins: $a0, $a1, $t9, $v049 50 ; MIPS32-LABEL: name: call_global51 ; MIPS32: liveins: $a0, $a1, $t9, $v0, $t9, $v052 ; MIPS32: [[ADDu:%[0-9]+]]:gpr32 = ADDu $v0, $t953 ; MIPS32: [[ADDu1:%[0-9]+]]:gpr32 = ADDu $v0, $t954 ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a055 ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a156 ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp57 ; MIPS32: [[LW:%[0-9]+]]:gpr32 = LW [[ADDu]], target-flags(mips-got-call) @f :: (load (s32) from got)58 ; MIPS32: $a0 = COPY [[COPY]]59 ; MIPS32: $a1 = COPY [[COPY1]]60 ; MIPS32: $gp = COPY [[ADDu1]]61 ; MIPS32: JALRPseudo [[LW]], csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $gp, implicit-def $v062 ; MIPS32: [[COPY2:%[0-9]+]]:gpr32 = COPY $v063 ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp64 ; MIPS32: $v0 = COPY [[COPY2]]65 ; MIPS32: RetRA implicit $v066 %4:gpr32 = ADDu $v0, $t967 %0:gprb(s32) = COPY $a068 %1:gprb(s32) = COPY $a169 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp70 %3:gpr32(p0) = G_GLOBAL_VALUE target-flags(mips-got-call) @f71 $a0 = COPY %0(s32)72 $a1 = COPY %1(s32)73 $gp = COPY %474 JALRPseudo %3(p0), csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $gp, implicit-def $v075 %2:gprb(s32) = COPY $v076 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp77 $v0 = COPY %2(s32)78 RetRA implicit $v079 80...81---82name: call_global_with_local_linkage83alignment: 484legalized: true85regBankSelected: true86tracksRegLiveness: true87body: |88 bb.1.entry:89 liveins: $a0, $a1, $t9, $v090 91 ; MIPS32-LABEL: name: call_global_with_local_linkage92 ; MIPS32: liveins: $a0, $a1, $t9, $v0, $t9, $v093 ; MIPS32: [[ADDu:%[0-9]+]]:gpr32 = ADDu $v0, $t994 ; MIPS32: [[ADDu1:%[0-9]+]]:gpr32 = ADDu $v0, $t995 ; MIPS32: [[COPY:%[0-9]+]]:gpr32 = COPY $a096 ; MIPS32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a197 ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp98 ; MIPS32: [[LW:%[0-9]+]]:gpr32 = LW [[ADDu]], target-flags(mips-got) @f_with_local_linkage :: (load (s32) from got)99 ; MIPS32: [[ADDiu:%[0-9]+]]:gpr32 = ADDiu [[LW]], target-flags(mips-abs-lo) @f_with_local_linkage100 ; MIPS32: $a0 = COPY [[COPY]]101 ; MIPS32: $a1 = COPY [[COPY1]]102 ; MIPS32: $gp = COPY [[ADDu1]]103 ; MIPS32: JALRPseudo [[ADDiu]], csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $gp, implicit-def $v0104 ; MIPS32: [[COPY2:%[0-9]+]]:gpr32 = COPY $v0105 ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp106 ; MIPS32: $v0 = COPY [[COPY2]]107 ; MIPS32: RetRA implicit $v0108 %4:gpr32 = ADDu $v0, $t9109 %0:gprb(s32) = COPY $a0110 %1:gprb(s32) = COPY $a1111 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp112 %3:gpr32(p0) = G_GLOBAL_VALUE @f_with_local_linkage113 $a0 = COPY %0(s32)114 $a1 = COPY %1(s32)115 $gp = COPY %4116 JALRPseudo %3(p0), csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1, implicit-def $gp, implicit-def $v0117 %2:gprb(s32) = COPY $v0118 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp119 $v0 = COPY %2(s32)120 RetRA implicit $v0121 122...123---124name: ret_global_int125alignment: 4126legalized: true127regBankSelected: true128tracksRegLiveness: true129body: |130 bb.1.entry:131 ; MIPS32-LABEL: name: ret_global_int132 ; MIPS32: liveins: $t9, $v0133 ; MIPS32: [[ADDu:%[0-9]+]]:gpr32 = ADDu $v0, $t9134 ; MIPS32: [[LW:%[0-9]+]]:gpr32 = LW [[ADDu]], target-flags(mips-got) @val :: (load (s32) from got)135 ; MIPS32: [[LW1:%[0-9]+]]:gpr32 = LW [[LW]], 0 :: (load (s32) from @val)136 ; MIPS32: $v0 = COPY [[LW1]]137 ; MIPS32: RetRA implicit $v0138 %1:gprb(p0) = G_GLOBAL_VALUE @val139 %0:gprb(s32) = G_LOAD %1(p0) :: (load (s32) from @val)140 $v0 = COPY %0(s32)141 RetRA implicit $v0142 143...144---145name: ret_global_int_with_local_linkage146alignment: 4147legalized: true148regBankSelected: true149tracksRegLiveness: true150body: |151 bb.1.entry:152 ; MIPS32-LABEL: name: ret_global_int_with_local_linkage153 ; MIPS32: liveins: $t9, $v0154 ; MIPS32: [[ADDu:%[0-9]+]]:gpr32 = ADDu $v0, $t9155 ; MIPS32: [[LW:%[0-9]+]]:gpr32 = LW [[ADDu]], target-flags(mips-got) @val_with_local_linkage :: (load (s32) from got)156 ; MIPS32: [[ADDiu:%[0-9]+]]:gpr32 = ADDiu [[LW]], target-flags(mips-abs-lo) @val_with_local_linkage157 ; MIPS32: [[LW1:%[0-9]+]]:gpr32 = LW [[ADDiu]], 0 :: (load (s32) from @val_with_local_linkage)158 ; MIPS32: $v0 = COPY [[LW1]]159 ; MIPS32: RetRA implicit $v0160 %1:gprb(p0) = G_GLOBAL_VALUE @val_with_local_linkage161 %0:gprb(s32) = G_LOAD %1(p0) :: (load (s32) from @val_with_local_linkage)162 $v0 = COPY %0(s32)163 RetRA implicit $v0164 165...166