312 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP323# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP644--- |5 6 define void @float_in_fpr() {entry: ret void}7 define void @double_in_fpr() {entry: ret void}8 define void @float_in_gpr() {entry: ret void}9 define void @double_in_gpr() {entry: ret void}10 define void @call_float_in_fpr() {entry: ret void}11 define void @call_double_in_fpr() {entry: ret void}12 define void @call_float_in_gpr() {entry: ret void}13 define void @call_double_in_gpr() {entry: ret void}14 15...16---17name: float_in_fpr18alignment: 419legalized: true20regBankSelected: true21tracksRegLiveness: true22body: |23 bb.1.entry:24 liveins: $f12, $f1425 26 ; FP32-LABEL: name: float_in_fpr27 ; FP32: liveins: $f12, $f1428 ; FP32: [[COPY:%[0-9]+]]:fgr32 = COPY $f1429 ; FP32: $f0 = COPY [[COPY]]30 ; FP32: RetRA implicit $f031 ; FP64-LABEL: name: float_in_fpr32 ; FP64: liveins: $f12, $f1433 ; FP64: [[COPY:%[0-9]+]]:fgr32 = COPY $f1434 ; FP64: $f0 = COPY [[COPY]]35 ; FP64: RetRA implicit $f036 %1:fprb(s32) = COPY $f1437 $f0 = COPY %1(s32)38 RetRA implicit $f039 40...41---42name: double_in_fpr43alignment: 444legalized: true45regBankSelected: true46tracksRegLiveness: true47body: |48 bb.1.entry:49 liveins: $d6, $d750 51 ; FP32-LABEL: name: double_in_fpr52 ; FP32: liveins: $d6, $d753 ; FP32: [[COPY:%[0-9]+]]:afgr64 = COPY $d754 ; FP32: $d0 = COPY [[COPY]]55 ; FP32: RetRA implicit $d056 ; FP64-LABEL: name: double_in_fpr57 ; FP64: liveins: $d6, $d758 ; FP64: [[COPY:%[0-9]+]]:fgr64 = COPY $d759 ; FP64: $d0 = COPY [[COPY]]60 ; FP64: RetRA implicit $d061 %1:fprb(s64) = COPY $d762 $d0 = COPY %1(s64)63 RetRA implicit $d064 65...66---67name: float_in_gpr68alignment: 469legalized: true70regBankSelected: true71tracksRegLiveness: true72body: |73 bb.1.entry:74 liveins: $a0, $a175 76 ; FP32-LABEL: name: float_in_gpr77 ; FP32: liveins: $a0, $a178 ; FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a179 ; FP32: $f0 = COPY [[COPY]]80 ; FP32: RetRA implicit $f081 ; FP64-LABEL: name: float_in_gpr82 ; FP64: liveins: $a0, $a183 ; FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a184 ; FP64: $f0 = COPY [[COPY]]85 ; FP64: RetRA implicit $f086 %1:gprb(s32) = COPY $a187 $f0 = COPY %1(s32)88 RetRA implicit $f089 90...91---92name: double_in_gpr93alignment: 494legalized: true95regBankSelected: true96tracksRegLiveness: true97body: |98 bb.1.entry:99 liveins: $a0, $a2, $a3100 101 ; FP32-LABEL: name: double_in_gpr102 ; FP32: liveins: $a0, $a2, $a3103 ; FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a2104 ; FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a3105 ; FP32: [[BuildPairF64_:%[0-9]+]]:afgr64 = BuildPairF64 [[COPY]], [[COPY1]]106 ; FP32: $d0 = COPY [[BuildPairF64_]]107 ; FP32: RetRA implicit $d0108 ; FP64-LABEL: name: double_in_gpr109 ; FP64: liveins: $a0, $a2, $a3110 ; FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a2111 ; FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a3112 ; FP64: [[BuildPairF64_64_:%[0-9]+]]:fgr64 = BuildPairF64_64 [[COPY]], [[COPY1]]113 ; FP64: $d0 = COPY [[BuildPairF64_64_]]114 ; FP64: RetRA implicit $d0115 %2:gprb(s32) = COPY $a2116 %3:gprb(s32) = COPY $a3117 %1:fprb(s64) = G_MERGE_VALUES %2(s32), %3(s32)118 $d0 = COPY %1(s64)119 RetRA implicit $d0120 121...122---123name: call_float_in_fpr124alignment: 4125legalized: true126regBankSelected: true127tracksRegLiveness: true128body: |129 bb.1.entry:130 liveins: $f12, $f14131 132 ; FP32-LABEL: name: call_float_in_fpr133 ; FP32: liveins: $f12, $f14134 ; FP32: [[COPY:%[0-9]+]]:fgr32 = COPY $f12135 ; FP32: [[COPY1:%[0-9]+]]:fgr32 = COPY $f14136 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp137 ; FP32: $f12 = COPY [[COPY]]138 ; FP32: $f14 = COPY [[COPY1]]139 ; FP32: JAL @float_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12, implicit $f14, implicit-def $f0140 ; FP32: [[COPY2:%[0-9]+]]:fgr32 = COPY $f0141 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp142 ; FP32: $f0 = COPY [[COPY2]]143 ; FP32: RetRA implicit $f0144 ; FP64-LABEL: name: call_float_in_fpr145 ; FP64: liveins: $f12, $f14146 ; FP64: [[COPY:%[0-9]+]]:fgr32 = COPY $f12147 ; FP64: [[COPY1:%[0-9]+]]:fgr32 = COPY $f14148 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp149 ; FP64: $f12 = COPY [[COPY]]150 ; FP64: $f14 = COPY [[COPY1]]151 ; FP64: JAL @float_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12, implicit $f14, implicit-def $f0152 ; FP64: [[COPY2:%[0-9]+]]:fgr32 = COPY $f0153 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp154 ; FP64: $f0 = COPY [[COPY2]]155 ; FP64: RetRA implicit $f0156 %0:fprb(s32) = COPY $f12157 %1:fprb(s32) = COPY $f14158 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp159 $f12 = COPY %0(s32)160 $f14 = COPY %1(s32)161 JAL @float_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12, implicit $f14, implicit-def $f0162 %2:fprb(s32) = COPY $f0163 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp164 $f0 = COPY %2(s32)165 RetRA implicit $f0166 167...168---169name: call_double_in_fpr170alignment: 4171legalized: true172regBankSelected: true173tracksRegLiveness: true174body: |175 bb.1.entry:176 liveins: $d6, $d7177 178 ; FP32-LABEL: name: call_double_in_fpr179 ; FP32: liveins: $d6, $d7180 ; FP32: [[COPY:%[0-9]+]]:afgr64 = COPY $d6181 ; FP32: [[COPY1:%[0-9]+]]:afgr64 = COPY $d7182 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp183 ; FP32: $d6 = COPY [[COPY]]184 ; FP32: $d7 = COPY [[COPY1]]185 ; FP32: JAL @double_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6, implicit $d7, implicit-def $d0186 ; FP32: [[COPY2:%[0-9]+]]:afgr64 = COPY $d0187 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp188 ; FP32: $d0 = COPY [[COPY2]]189 ; FP32: RetRA implicit $d0190 ; FP64-LABEL: name: call_double_in_fpr191 ; FP64: liveins: $d6, $d7192 ; FP64: [[COPY:%[0-9]+]]:fgr64 = COPY $d6193 ; FP64: [[COPY1:%[0-9]+]]:fgr64 = COPY $d7194 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp195 ; FP64: $d6 = COPY [[COPY]]196 ; FP64: $d7 = COPY [[COPY1]]197 ; FP64: JAL @double_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6, implicit $d7, implicit-def $d0198 ; FP64: [[COPY2:%[0-9]+]]:fgr64 = COPY $d0199 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp200 ; FP64: $d0 = COPY [[COPY2]]201 ; FP64: RetRA implicit $d0202 %0:fprb(s64) = COPY $d6203 %1:fprb(s64) = COPY $d7204 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp205 $d6 = COPY %0(s64)206 $d7 = COPY %1(s64)207 JAL @double_in_fpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6, implicit $d7, implicit-def $d0208 %2:fprb(s64) = COPY $d0209 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp210 $d0 = COPY %2(s64)211 RetRA implicit $d0212 213...214---215name: call_float_in_gpr216alignment: 4217legalized: true218regBankSelected: true219tracksRegLiveness: true220body: |221 bb.1.entry:222 liveins: $a0, $a1223 224 ; FP32-LABEL: name: call_float_in_gpr225 ; FP32: liveins: $a0, $a1226 ; FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0227 ; FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1228 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp229 ; FP32: $a0 = COPY [[COPY]]230 ; FP32: $a1 = COPY [[COPY1]]231 ; FP32: JAL @float_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $f0232 ; FP32: [[COPY2:%[0-9]+]]:fgr32 = COPY $f0233 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp234 ; FP32: $f0 = COPY [[COPY2]]235 ; FP32: RetRA implicit $f0236 ; FP64-LABEL: name: call_float_in_gpr237 ; FP64: liveins: $a0, $a1238 ; FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a0239 ; FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a1240 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp241 ; FP64: $a0 = COPY [[COPY]]242 ; FP64: $a1 = COPY [[COPY1]]243 ; FP64: JAL @float_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $f0244 ; FP64: [[COPY2:%[0-9]+]]:fgr32 = COPY $f0245 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp246 ; FP64: $f0 = COPY [[COPY2]]247 ; FP64: RetRA implicit $f0248 %0:gprb(s32) = COPY $a0249 %1:gprb(s32) = COPY $a1250 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp251 $a0 = COPY %0(s32)252 $a1 = COPY %1(s32)253 JAL @float_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $f0254 %2:fprb(s32) = COPY $f0255 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp256 $f0 = COPY %2(s32)257 RetRA implicit $f0258 259...260---261name: call_double_in_gpr262alignment: 4263legalized: true264regBankSelected: true265tracksRegLiveness: true266body: |267 bb.1.entry:268 liveins: $a0, $a2, $a3269 270 ; FP32-LABEL: name: call_double_in_gpr271 ; FP32: liveins: $a0, $a2, $a3272 ; FP32: [[COPY:%[0-9]+]]:gpr32 = COPY $a0273 ; FP32: [[COPY1:%[0-9]+]]:gpr32 = COPY $a2274 ; FP32: [[COPY2:%[0-9]+]]:gpr32 = COPY $a3275 ; FP32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp276 ; FP32: $a0 = COPY [[COPY]]277 ; FP32: $a2 = COPY [[COPY1]]278 ; FP32: $a3 = COPY [[COPY2]]279 ; FP32: JAL @double_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $d0280 ; FP32: [[COPY3:%[0-9]+]]:afgr64 = COPY $d0281 ; FP32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp282 ; FP32: $d0 = COPY [[COPY3]]283 ; FP32: RetRA implicit $d0284 ; FP64-LABEL: name: call_double_in_gpr285 ; FP64: liveins: $a0, $a2, $a3286 ; FP64: [[COPY:%[0-9]+]]:gpr32 = COPY $a0287 ; FP64: [[COPY1:%[0-9]+]]:gpr32 = COPY $a2288 ; FP64: [[COPY2:%[0-9]+]]:gpr32 = COPY $a3289 ; FP64: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp290 ; FP64: $a0 = COPY [[COPY]]291 ; FP64: $a2 = COPY [[COPY1]]292 ; FP64: $a3 = COPY [[COPY2]]293 ; FP64: JAL @double_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $d0294 ; FP64: [[COPY3:%[0-9]+]]:fgr64 = COPY $d0295 ; FP64: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp296 ; FP64: $d0 = COPY [[COPY3]]297 ; FP64: RetRA implicit $d0298 %0:gprb(s32) = COPY $a0299 %2:gprb(s32) = COPY $a2300 %3:gprb(s32) = COPY $a3301 ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp302 $a0 = COPY %0(s32)303 $a2 = COPY %2(s32)304 $a3 = COPY %3(s32)305 JAL @double_in_gpr, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit-def $d0306 %4:fprb(s64) = COPY $d0307 ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp308 $d0 = COPY %4(s64)309 RetRA implicit $d0310 311...312