350 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+zfh,+d -run-pass=regbankselect \3# RUN: -simplify-mir -verify-machineinstrs %s \4# RUN: -o - | FileCheck %s5# RUN: llc -mtriple=riscv64 -mattr=+zfh,+d -run-pass=regbankselect \6# RUN: -simplify-mir -verify-machineinstrs %s \7# RUN: -o - | FileCheck %s8 9---10name: fadd_f1611legalized: true12tracksRegLiveness: true13body: |14 bb.0:15 liveins: $f10_h, $f11_h16 17 ; CHECK-LABEL: name: fadd_f1618 ; CHECK: liveins: $f10_h, $f11_h19 ; CHECK-NEXT: {{ $}}20 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h21 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h22 ; CHECK-NEXT: [[FADD:%[0-9]+]]:fprb(s16) = G_FADD [[COPY]], [[COPY1]]23 ; CHECK-NEXT: $f10_h = COPY [[FADD]](s16)24 ; CHECK-NEXT: PseudoRET implicit $f10_h25 %0:_(s16) = COPY $f10_h26 %1:_(s16) = COPY $f11_h27 %2:_(s16) = G_FADD %0, %128 $f10_h = COPY %2(s16)29 PseudoRET implicit $f10_h30 31...32---33name: fsub_f1634legalized: 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]+]]:fprb(s16) = COPY $f10_h44 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h45 ; CHECK-NEXT: [[FSUB:%[0-9]+]]:fprb(s16) = G_FSUB [[COPY]], [[COPY1]]46 ; CHECK-NEXT: $f10_h = COPY [[FSUB]](s16)47 ; CHECK-NEXT: PseudoRET implicit $f10_h48 %0:_(s16) = COPY $f10_h49 %1:_(s16) = COPY $f11_h50 %2:_(s16) = G_FSUB %0, %151 $f10_h = COPY %2(s16)52 PseudoRET implicit $f10_h53 54...55---56name: fmul_f1657legalized: true58tracksRegLiveness: true59body: |60 bb.0:61 liveins: $f10_h, $f11_h62 63 ; CHECK-LABEL: name: fmul_f1664 ; CHECK: liveins: $f10_h, $f11_h65 ; CHECK-NEXT: {{ $}}66 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h67 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h68 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:fprb(s16) = G_FMUL [[COPY]], [[COPY1]]69 ; CHECK-NEXT: $f10_h = COPY [[FMUL]](s16)70 ; CHECK-NEXT: PseudoRET implicit $f10_h71 %0:_(s16) = COPY $f10_h72 %1:_(s16) = COPY $f11_h73 %2:_(s16) = G_FMUL %0, %174 $f10_h = COPY %2(s16)75 PseudoRET implicit $f10_h76 77...78---79name: fdiv_f1680legalized: true81tracksRegLiveness: true82body: |83 bb.0:84 liveins: $f10_h, $f11_h85 86 ; CHECK-LABEL: name: fdiv_f1687 ; CHECK: liveins: $f10_h, $f11_h88 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h90 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h91 ; CHECK-NEXT: [[FDIV:%[0-9]+]]:fprb(s16) = G_FDIV [[COPY]], [[COPY1]]92 ; CHECK-NEXT: $f10_h = COPY [[FDIV]](s16)93 ; CHECK-NEXT: PseudoRET implicit $f10_h94 %0:_(s16) = COPY $f10_h95 %1:_(s16) = COPY $f11_h96 %2:_(s16) = G_FDIV %0, %197 $f10_h = COPY %2(s16)98 PseudoRET implicit $f10_h99 100...101---102name: fma_f16103legalized: true104tracksRegLiveness: true105body: |106 bb.0:107 liveins: $f10_h, $f11_h, $f12_h108 109 ; CHECK-LABEL: name: fma_f16110 ; CHECK: liveins: $f10_h, $f11_h, $f12_h111 ; CHECK-NEXT: {{ $}}112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h113 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h114 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fprb(s16) = COPY $f12_h115 ; CHECK-NEXT: [[FMA:%[0-9]+]]:fprb(s16) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]116 ; CHECK-NEXT: $f10_h = COPY [[FMA]](s16)117 ; CHECK-NEXT: PseudoRET implicit $f10_h118 %0:_(s16) = COPY $f10_h119 %1:_(s16) = COPY $f11_h120 %2:_(s16) = COPY $f12_h121 %3:_(s16) = G_FMA %0, %1, %2122 $f10_h = COPY %3(s16)123 PseudoRET implicit $f10_h124 125...126---127name: fneg_f16128legalized: true129tracksRegLiveness: true130body: |131 bb.0:132 liveins: $f10_h133 134 ; CHECK-LABEL: name: fneg_f16135 ; CHECK: liveins: $f10_h136 ; CHECK-NEXT: {{ $}}137 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h138 ; CHECK-NEXT: [[FNEG:%[0-9]+]]:fprb(s16) = G_FNEG [[COPY]]139 ; CHECK-NEXT: $f10_h = COPY [[FNEG]](s16)140 ; CHECK-NEXT: PseudoRET implicit $f10_h141 %0:_(s16) = COPY $f10_h142 %1:_(s16) = G_FNEG %0143 $f10_h = COPY %1(s16)144 PseudoRET implicit $f10_h145 146...147---148name: fabs_f16149legalized: true150tracksRegLiveness: true151body: |152 bb.0:153 liveins: $f10_h154 155 ; CHECK-LABEL: name: fabs_f16156 ; CHECK: liveins: $f10_h157 ; CHECK-NEXT: {{ $}}158 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h159 ; CHECK-NEXT: [[FABS:%[0-9]+]]:fprb(s16) = G_FABS [[COPY]]160 ; CHECK-NEXT: $f10_h = COPY [[FABS]](s16)161 ; CHECK-NEXT: PseudoRET implicit $f10_h162 %0:_(s16) = COPY $f10_h163 %1:_(s16) = G_FABS %0164 $f10_h = COPY %1(s16)165 PseudoRET implicit $f10_h166 167...168---169name: fsqrt_f16170legalized: true171tracksRegLiveness: true172body: |173 bb.0:174 liveins: $f10_h175 176 ; CHECK-LABEL: name: fsqrt_f16177 ; CHECK: liveins: $f10_h178 ; CHECK-NEXT: {{ $}}179 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h180 ; CHECK-NEXT: [[FSQRT:%[0-9]+]]:fprb(s16) = G_FSQRT [[COPY]]181 ; CHECK-NEXT: $f10_h = COPY [[FSQRT]](s16)182 ; CHECK-NEXT: PseudoRET implicit $f10_h183 %0:_(s16) = COPY $f10_h184 %1:_(s16) = G_FSQRT %0185 $f10_h = COPY %1(s16)186 PseudoRET implicit $f10_h187 188...189---190name: fmaxnum_f16191legalized: true192tracksRegLiveness: true193body: |194 bb.0:195 liveins: $f10_h, $f11_h196 197 ; CHECK-LABEL: name: fmaxnum_f16198 ; CHECK: liveins: $f10_h, $f11_h199 ; CHECK-NEXT: {{ $}}200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h201 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h202 ; CHECK-NEXT: [[FMAXNUM:%[0-9]+]]:fprb(s16) = G_FMAXNUM [[COPY]], [[COPY1]]203 ; CHECK-NEXT: $f10_h = COPY [[FMAXNUM]](s16)204 ; CHECK-NEXT: PseudoRET implicit $f10_h205 %0:_(s16) = COPY $f10_h206 %1:_(s16) = COPY $f11_h207 %2:_(s16) = G_FMAXNUM %0, %1208 $f10_h = COPY %2(s16)209 PseudoRET implicit $f10_h210 211...212---213name: fminnum_f16214legalized: true215tracksRegLiveness: true216body: |217 bb.0:218 liveins: $f10_h, $f11_h219 220 ; CHECK-LABEL: name: fminnum_f16221 ; CHECK: liveins: $f10_h, $f11_h222 ; CHECK-NEXT: {{ $}}223 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h224 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h225 ; CHECK-NEXT: [[FMINNUM:%[0-9]+]]:fprb(s16) = G_FMINNUM [[COPY]], [[COPY1]]226 ; CHECK-NEXT: $f10_h = COPY [[FMINNUM]](s16)227 ; CHECK-NEXT: PseudoRET implicit $f10_h228 %0:_(s16) = COPY $f10_h229 %1:_(s16) = COPY $f11_h230 %2:_(s16) = G_FMINNUM %0, %1231 $f10_h = COPY %2(s16)232 PseudoRET implicit $f10_h233 234...235---236name: fcopysign_f16_f16237legalized: true238tracksRegLiveness: true239body: |240 bb.0:241 liveins: $f10_h, $f11_h242 243 ; CHECK-LABEL: name: fcopysign_f16_f16244 ; CHECK: liveins: $f10_h, $f11_h245 ; CHECK-NEXT: {{ $}}246 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h247 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h248 ; CHECK-NEXT: [[FCOPYSIGN:%[0-9]+]]:fprb(s16) = G_FCOPYSIGN [[COPY]], [[COPY1]](s16)249 ; CHECK-NEXT: $f10_h = COPY [[FCOPYSIGN]](s16)250 ; CHECK-NEXT: PseudoRET implicit $f10_h251 %0:_(s16) = COPY $f10_h252 %1:_(s16) = COPY $f11_h253 %2:_(s16) = G_FCOPYSIGN %0, %1254 $f10_h = COPY %2(s16)255 PseudoRET implicit $f10_h256 257...258---259name: fcopysign_f16_f32260legalized: true261tracksRegLiveness: true262body: |263 bb.0:264 liveins: $f10_h, $f11_f265 266 ; CHECK-LABEL: name: fcopysign_f16_f32267 ; CHECK: liveins: $f10_h, $f11_f268 ; CHECK-NEXT: {{ $}}269 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h270 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s32) = COPY $f11_f271 ; CHECK-NEXT: [[FCOPYSIGN:%[0-9]+]]:fprb(s16) = G_FCOPYSIGN [[COPY]], [[COPY1]](s32)272 ; CHECK-NEXT: $f10_h = COPY [[FCOPYSIGN]](s16)273 ; CHECK-NEXT: PseudoRET implicit $f10_h274 %0:_(s16) = COPY $f10_h275 %1:_(s32) = COPY $f11_f276 %2:_(s16) = G_FCOPYSIGN %0, %1277 $f10_h = COPY %2(s16)278 PseudoRET implicit $f10_h279 280...281---282name: fcopysign_f32_f16283legalized: true284tracksRegLiveness: true285body: |286 bb.0:287 liveins: $f10_f, $f11_h288 289 ; CHECK-LABEL: name: fcopysign_f32_f16290 ; CHECK: liveins: $f10_f, $f11_h291 ; CHECK-NEXT: {{ $}}292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s32) = COPY $f10_f293 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h294 ; CHECK-NEXT: [[FCOPYSIGN:%[0-9]+]]:fprb(s32) = G_FCOPYSIGN [[COPY]], [[COPY1]](s16)295 ; CHECK-NEXT: $f10_f = COPY [[FCOPYSIGN]](s32)296 ; CHECK-NEXT: PseudoRET implicit $f10_f297 %0:_(s32) = COPY $f10_f298 %1:_(s16) = COPY $f11_h299 %2:_(s32) = G_FCOPYSIGN %0, %1300 $f10_f = COPY %2(s32)301 PseudoRET implicit $f10_f302 303...304---305name: fcopysign_f16_f64306legalized: true307tracksRegLiveness: true308body: |309 bb.0:310 liveins: $f10_h, $f11_d311 312 ; CHECK-LABEL: name: fcopysign_f16_f64313 ; CHECK: liveins: $f10_h, $f11_d314 ; CHECK-NEXT: {{ $}}315 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s16) = COPY $f10_h316 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s64) = COPY $f11_d317 ; CHECK-NEXT: [[FCOPYSIGN:%[0-9]+]]:fprb(s16) = G_FCOPYSIGN [[COPY]], [[COPY1]](s64)318 ; CHECK-NEXT: $f10_h = COPY [[FCOPYSIGN]](s16)319 ; CHECK-NEXT: PseudoRET implicit $f10_h320 %0:_(s16) = COPY $f10_h321 %1:_(s64) = COPY $f11_d322 %2:_(s16) = G_FCOPYSIGN %0, %1323 $f10_h = COPY %2(s16)324 PseudoRET implicit $f10_h325 326...327---328name: fcopysign_f64_f16329legalized: true330tracksRegLiveness: true331body: |332 bb.0:333 liveins: $f10_d, $f11_h334 335 ; CHECK-LABEL: name: fcopysign_f64_f16336 ; CHECK: liveins: $f10_d, $f11_h337 ; CHECK-NEXT: {{ $}}338 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fprb(s64) = COPY $f10_d339 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fprb(s16) = COPY $f11_h340 ; CHECK-NEXT: [[FCOPYSIGN:%[0-9]+]]:fprb(s64) = G_FCOPYSIGN [[COPY]], [[COPY1]](s16)341 ; CHECK-NEXT: $f10_d = COPY [[FCOPYSIGN]](s64)342 ; CHECK-NEXT: PseudoRET implicit $f10_d343 %0:_(s64) = COPY $f10_d344 %1:_(s16) = COPY $f11_h345 %2:_(s64) = G_FCOPYSIGN %0, %1346 $f10_d = COPY %2(s64)347 PseudoRET implicit $f10_d348 349...350