367 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+zfh,+d -run-pass=instruction-select \3# RUN: -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s4# RUN: llc -mtriple=riscv64 -mattr=+zfh,+d -run-pass=instruction-select \5# RUN: -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s6 7---8name: fadd_f169legalized: true10regBankSelected: true11tracksRegLiveness: true12body: |13 bb.0:14 liveins: $f10_h, $f11_h15 16 ; CHECK-LABEL: name: fadd_f1617 ; CHECK: liveins: $f10_h, $f11_h18 ; CHECK-NEXT: {{ $}}19 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h20 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h21 ; CHECK-NEXT: [[FADD_H:%[0-9]+]]:fpr16 = nofpexcept FADD_H [[COPY]], [[COPY1]], 722 ; CHECK-NEXT: $f10_h = COPY [[FADD_H]]23 ; CHECK-NEXT: PseudoRET implicit $f10_h24 %0:fprb(s16) = COPY $f10_h25 %1:fprb(s16) = COPY $f11_h26 %2:fprb(s16) = G_FADD %0, %127 $f10_h = COPY %2(s16)28 PseudoRET implicit $f10_h29 30...31---32name: fsub_f1633legalized: true34regBankSelected: true35tracksRegLiveness: true36body: |37 bb.0:38 liveins: $f10_h, $f11_h39 40 ; CHECK-LABEL: name: fsub_f1641 ; CHECK: liveins: $f10_h, $f11_h42 ; CHECK-NEXT: {{ $}}43 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h44 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h45 ; CHECK-NEXT: [[FSUB_H:%[0-9]+]]:fpr16 = nofpexcept FSUB_H [[COPY]], [[COPY1]], 746 ; CHECK-NEXT: $f10_h = COPY [[FSUB_H]]47 ; CHECK-NEXT: PseudoRET implicit $f10_h48 %0:fprb(s16) = COPY $f10_h49 %1:fprb(s16) = COPY $f11_h50 %2:fprb(s16) = G_FSUB %0, %151 $f10_h = COPY %2(s16)52 PseudoRET implicit $f10_h53 54...55---56name: fmul_f1657legalized: true58regBankSelected: true59tracksRegLiveness: true60body: |61 bb.0:62 liveins: $f10_h, $f11_h63 64 ; CHECK-LABEL: name: fmul_f1665 ; CHECK: liveins: $f10_h, $f11_h66 ; CHECK-NEXT: {{ $}}67 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h68 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h69 ; CHECK-NEXT: [[FMUL_H:%[0-9]+]]:fpr16 = nofpexcept FMUL_H [[COPY]], [[COPY1]], 770 ; CHECK-NEXT: $f10_h = COPY [[FMUL_H]]71 ; CHECK-NEXT: PseudoRET implicit $f10_h72 %0:fprb(s16) = COPY $f10_h73 %1:fprb(s16) = COPY $f11_h74 %2:fprb(s16) = G_FMUL %0, %175 $f10_h = COPY %2(s16)76 PseudoRET implicit $f10_h77 78...79---80name: fdiv_f1681legalized: true82regBankSelected: true83tracksRegLiveness: true84body: |85 bb.0:86 liveins: $f10_h, $f11_h87 88 ; CHECK-LABEL: name: fdiv_f1689 ; CHECK: liveins: $f10_h, $f11_h90 ; CHECK-NEXT: {{ $}}91 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h92 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h93 ; CHECK-NEXT: [[FDIV_H:%[0-9]+]]:fpr16 = nofpexcept FDIV_H [[COPY]], [[COPY1]], 794 ; CHECK-NEXT: $f10_h = COPY [[FDIV_H]]95 ; CHECK-NEXT: PseudoRET implicit $f10_h96 %0:fprb(s16) = COPY $f10_h97 %1:fprb(s16) = COPY $f11_h98 %2:fprb(s16) = G_FDIV %0, %199 $f10_h = COPY %2(s16)100 PseudoRET implicit $f10_h101 102...103---104name: fma_f16105legalized: true106regBankSelected: true107tracksRegLiveness: true108body: |109 bb.0:110 liveins: $f10_h, $f11_h, $f12_h111 112 ; CHECK-LABEL: name: fma_f16113 ; CHECK: liveins: $f10_h, $f11_h, $f12_h114 ; CHECK-NEXT: {{ $}}115 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h116 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h117 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr16 = COPY $f12_h118 ; CHECK-NEXT: [[FMADD_H:%[0-9]+]]:fpr16 = nofpexcept FMADD_H [[COPY]], [[COPY1]], [[COPY2]], 7119 ; CHECK-NEXT: $f10_h = COPY [[FMADD_H]]120 ; CHECK-NEXT: PseudoRET implicit $f10_h121 %0:fprb(s16) = COPY $f10_h122 %1:fprb(s16) = COPY $f11_h123 %2:fprb(s16) = COPY $f12_h124 %3:fprb(s16) = G_FMA %0, %1, %2125 $f10_h = COPY %3(s16)126 PseudoRET implicit $f10_h127 128...129---130name: fneg_f16131legalized: true132regBankSelected: true133tracksRegLiveness: true134body: |135 bb.0:136 liveins: $f10_h, $f11_h, $f12_h137 138 ; CHECK-LABEL: name: fneg_f16139 ; CHECK: liveins: $f10_h, $f11_h, $f12_h140 ; CHECK-NEXT: {{ $}}141 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h142 ; CHECK-NEXT: [[FSGNJN_H:%[0-9]+]]:fpr16 = FSGNJN_H [[COPY]], [[COPY]]143 ; CHECK-NEXT: $f10_h = COPY [[FSGNJN_H]]144 ; CHECK-NEXT: PseudoRET implicit $f10_h145 %0:fprb(s16) = COPY $f10_h146 %1:fprb(s16) = G_FNEG %0147 $f10_h = COPY %1(s16)148 PseudoRET implicit $f10_h149 150...151---152name: fabs_f16153legalized: true154regBankSelected: true155tracksRegLiveness: true156body: |157 bb.0:158 liveins: $f10_h, $f11_h, $f12_h159 160 ; CHECK-LABEL: name: fabs_f16161 ; CHECK: liveins: $f10_h, $f11_h, $f12_h162 ; CHECK-NEXT: {{ $}}163 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h164 ; CHECK-NEXT: [[FSGNJX_H:%[0-9]+]]:fpr16 = FSGNJX_H [[COPY]], [[COPY]]165 ; CHECK-NEXT: $f10_h = COPY [[FSGNJX_H]]166 ; CHECK-NEXT: PseudoRET implicit $f10_h167 %0:fprb(s16) = COPY $f10_h168 %1:fprb(s16) = G_FABS %0169 $f10_h = COPY %1(s16)170 PseudoRET implicit $f10_h171 172...173---174name: fsqrt_f16175legalized: true176regBankSelected: true177tracksRegLiveness: true178body: |179 bb.0:180 liveins: $f10_h, $f11_h, $f12_h181 182 ; CHECK-LABEL: name: fsqrt_f16183 ; CHECK: liveins: $f10_h, $f11_h, $f12_h184 ; CHECK-NEXT: {{ $}}185 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h186 ; CHECK-NEXT: [[FSQRT_H:%[0-9]+]]:fpr16 = nofpexcept FSQRT_H [[COPY]], 7187 ; CHECK-NEXT: $f10_h = COPY [[FSQRT_H]]188 ; CHECK-NEXT: PseudoRET implicit $f10_h189 %0:fprb(s16) = COPY $f10_h190 %1:fprb(s16) = G_FSQRT %0191 $f10_h = COPY %1(s16)192 PseudoRET implicit $f10_h193 194...195---196name: fmaxnum_f16197legalized: true198regBankSelected: true199tracksRegLiveness: true200body: |201 bb.0:202 liveins: $f10_h, $f11_h203 204 ; CHECK-LABEL: name: fmaxnum_f16205 ; CHECK: liveins: $f10_h, $f11_h206 ; CHECK-NEXT: {{ $}}207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h209 ; CHECK-NEXT: [[FMAX_H:%[0-9]+]]:fpr16 = nofpexcept FMAX_H [[COPY]], [[COPY1]]210 ; CHECK-NEXT: $f10_h = COPY [[FMAX_H]]211 ; CHECK-NEXT: PseudoRET implicit $f10_h212 %0:fprb(s16) = COPY $f10_h213 %1:fprb(s16) = COPY $f11_h214 %2:fprb(s16) = G_FMAXNUM %0, %1215 $f10_h = COPY %2(s16)216 PseudoRET implicit $f10_h217 218...219---220name: fminnum_f16221legalized: true222regBankSelected: true223tracksRegLiveness: true224body: |225 bb.0:226 liveins: $f10_h, $f11_h227 228 ; CHECK-LABEL: name: fminnum_f16229 ; CHECK: liveins: $f10_h, $f11_h230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h232 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h233 ; CHECK-NEXT: [[FMIN_H:%[0-9]+]]:fpr16 = nofpexcept FMIN_H [[COPY]], [[COPY1]]234 ; CHECK-NEXT: $f10_h = COPY [[FMIN_H]]235 ; CHECK-NEXT: PseudoRET implicit $f10_h236 %0:fprb(s16) = COPY $f10_h237 %1:fprb(s16) = COPY $f11_h238 %2:fprb(s16) = G_FMINNUM %0, %1239 $f10_h = COPY %2(s16)240 PseudoRET implicit $f10_h241 242...243---244name: fcopysign_f16_f16245legalized: true246regBankSelected: true247tracksRegLiveness: true248body: |249 bb.0:250 liveins: $f10_h, $f11_h251 252 ; CHECK-LABEL: name: fcopysign_f16_f16253 ; CHECK: liveins: $f10_h, $f11_h254 ; CHECK-NEXT: {{ $}}255 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h256 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h257 ; CHECK-NEXT: [[FSGNJ_H:%[0-9]+]]:fpr16 = FSGNJ_H [[COPY]], [[COPY1]]258 ; CHECK-NEXT: $f10_h = COPY [[FSGNJ_H]]259 ; CHECK-NEXT: PseudoRET implicit $f10_h260 %0:fprb(s16) = COPY $f10_h261 %1:fprb(s16) = COPY $f11_h262 %2:fprb(s16) = G_FCOPYSIGN %0, %1263 $f10_h = COPY %2(s16)264 PseudoRET implicit $f10_h265 266...267---268name: fcopysign_f16_f32269legalized: true270regBankSelected: true271tracksRegLiveness: true272body: |273 bb.0:274 liveins: $f10_h, $f11_f275 276 ; CHECK-LABEL: name: fcopysign_f16_f32277 ; CHECK: liveins: $f10_h, $f11_f278 ; CHECK-NEXT: {{ $}}279 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h280 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr32 = COPY $f11_f281 ; CHECK-NEXT: [[FCVT_H_S:%[0-9]+]]:fpr16 = nofpexcept FCVT_H_S [[COPY1]], 7282 ; CHECK-NEXT: [[FSGNJ_H:%[0-9]+]]:fpr16 = FSGNJ_H [[COPY]], [[FCVT_H_S]]283 ; CHECK-NEXT: $f10_h = COPY [[FSGNJ_H]]284 ; CHECK-NEXT: PseudoRET implicit $f10_h285 %0:fprb(s16) = COPY $f10_h286 %1:fprb(s32) = COPY $f11_f287 %2:fprb(s16) = G_FCOPYSIGN %0, %1288 $f10_h = COPY %2(s16)289 PseudoRET implicit $f10_h290 291...292---293name: fcopysign_f32_f16294legalized: true295regBankSelected: true296tracksRegLiveness: true297body: |298 bb.0:299 liveins: $f10_f, $f11_h300 301 ; CHECK-LABEL: name: fcopysign_f32_f16302 ; CHECK: liveins: $f10_f, $f11_h303 ; CHECK-NEXT: {{ $}}304 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY $f10_f305 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h306 ; CHECK-NEXT: [[FCVT_S_H:%[0-9]+]]:fpr32 = nofpexcept FCVT_S_H [[COPY1]], 0307 ; CHECK-NEXT: [[FSGNJ_S:%[0-9]+]]:fpr32 = FSGNJ_S [[COPY]], [[FCVT_S_H]]308 ; CHECK-NEXT: $f10_f = COPY [[FSGNJ_S]]309 ; CHECK-NEXT: PseudoRET implicit $f10_f310 %0:fprb(s32) = COPY $f10_f311 %1:fprb(s16) = COPY $f11_h312 %2:fprb(s32) = G_FCOPYSIGN %0, %1313 $f10_f = COPY %2(s32)314 PseudoRET implicit $f10_f315 316...317---318name: fcopysign_f16_f64319legalized: true320regBankSelected: true321tracksRegLiveness: true322body: |323 bb.0:324 liveins: $f10_h, $f11_d325 326 ; CHECK-LABEL: name: fcopysign_f16_f64327 ; CHECK: liveins: $f10_h, $f11_d328 ; CHECK-NEXT: {{ $}}329 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h330 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $f11_d331 ; CHECK-NEXT: [[FCVT_H_D:%[0-9]+]]:fpr16 = nofpexcept FCVT_H_D [[COPY1]], 7332 ; CHECK-NEXT: [[FSGNJ_H:%[0-9]+]]:fpr16 = FSGNJ_H [[COPY]], [[FCVT_H_D]]333 ; CHECK-NEXT: $f10_h = COPY [[FSGNJ_H]]334 ; CHECK-NEXT: PseudoRET implicit $f10_h335 %0:fprb(s16) = COPY $f10_h336 %1:fprb(s64) = COPY $f11_d337 %2:fprb(s16) = G_FCOPYSIGN %0, %1338 $f10_h = COPY %2(s16)339 PseudoRET implicit $f10_h340 341...342---343name: fcopysign_f64_f16344legalized: true345regBankSelected: true346tracksRegLiveness: true347body: |348 bb.0:349 liveins: $f10_d, $f11_h350 351 ; CHECK-LABEL: name: fcopysign_f64_f16352 ; CHECK: liveins: $f10_d, $f11_h353 ; CHECK-NEXT: {{ $}}354 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $f10_d355 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h356 ; CHECK-NEXT: [[FCVT_D_H:%[0-9]+]]:fpr64 = nofpexcept FCVT_D_H [[COPY1]], 0357 ; CHECK-NEXT: [[FSGNJ_D:%[0-9]+]]:fpr64 = FSGNJ_D [[COPY]], [[FCVT_D_H]]358 ; CHECK-NEXT: $f10_d = COPY [[FSGNJ_D]]359 ; CHECK-NEXT: PseudoRET implicit $f10_d360 %0:fprb(s64) = COPY $f10_d361 %1:fprb(s16) = COPY $f11_h362 %2:fprb(s64) = G_FCOPYSIGN %0, %1363 $f10_d = COPY %2(s64)364 PseudoRET implicit $f10_d365 366...367