356 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -mattr=+zfh -run-pass=instruction-select \3# RUN: -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s4 5---6name: fcmp_oeq_f167legalized: true8regBankSelected: true9tracksRegLiveness: true10body: |11 bb.1:12 liveins: $f10_h, $f11_h13 14 ; CHECK-LABEL: name: fcmp_oeq_f1615 ; CHECK: liveins: $f10_h, $f11_h16 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h18 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h19 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = nofpexcept FEQ_H [[COPY]], [[COPY1]]20 ; CHECK-NEXT: $x10 = COPY [[FEQ_H]]21 ; CHECK-NEXT: PseudoRET implicit $x1022 %0:fprb(s16) = COPY $f10_h23 %1:fprb(s16) = COPY $f11_h24 %4:gprb(s32) = G_FCMP floatpred(oeq), %0(s16), %125 $x10 = COPY %4(s32)26 PseudoRET implicit $x1027 28...29---30name: fcmp_ogt_f1631legalized: true32regBankSelected: true33tracksRegLiveness: true34body: |35 bb.1:36 liveins: $f10_h, $f11_h37 38 ; CHECK-LABEL: name: fcmp_ogt_f1639 ; CHECK: liveins: $f10_h, $f11_h40 ; CHECK-NEXT: {{ $}}41 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h42 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h43 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]44 ; CHECK-NEXT: $x10 = COPY [[FLT_H]]45 ; CHECK-NEXT: PseudoRET implicit $x1046 %0:fprb(s16) = COPY $f10_h47 %1:fprb(s16) = COPY $f11_h48 %4:gprb(s32) = G_FCMP floatpred(ogt), %0(s16), %149 $x10 = COPY %4(s32)50 PseudoRET implicit $x1051 52...53---54name: fcmp_oge_f1655legalized: true56regBankSelected: true57tracksRegLiveness: true58body: |59 bb.1:60 liveins: $f10_h, $f11_h61 62 ; CHECK-LABEL: name: fcmp_oge_f1663 ; CHECK: liveins: $f10_h, $f11_h64 ; CHECK-NEXT: {{ $}}65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h66 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h67 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]]68 ; CHECK-NEXT: $x10 = COPY [[FLE_H]]69 ; CHECK-NEXT: PseudoRET implicit $x1070 %0:fprb(s16) = COPY $f10_h71 %1:fprb(s16) = COPY $f11_h72 %4:gprb(s32) = G_FCMP floatpred(oge), %0(s16), %173 $x10 = COPY %4(s32)74 PseudoRET implicit $x1075 76...77---78name: fcmp_olt_f1679legalized: true80regBankSelected: true81tracksRegLiveness: true82body: |83 bb.1:84 liveins: $f10_h, $f11_h85 86 ; CHECK-LABEL: name: fcmp_olt_f1687 ; CHECK: liveins: $f10_h, $f11_h88 ; CHECK-NEXT: {{ $}}89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h90 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h91 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = nofpexcept FLT_H [[COPY]], [[COPY1]]92 ; CHECK-NEXT: $x10 = COPY [[FLT_H]]93 ; CHECK-NEXT: PseudoRET implicit $x1094 %0:fprb(s16) = COPY $f10_h95 %1:fprb(s16) = COPY $f11_h96 %4:gprb(s32) = G_FCMP floatpred(olt), %0(s16), %197 $x10 = COPY %4(s32)98 PseudoRET implicit $x1099 100...101---102name: fcmp_ole_f16103legalized: true104regBankSelected: true105tracksRegLiveness: true106body: |107 bb.1:108 liveins: $f10_h, $f11_h109 110 ; CHECK-LABEL: name: fcmp_ole_f16111 ; CHECK: liveins: $f10_h, $f11_h112 ; CHECK-NEXT: {{ $}}113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h115 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = nofpexcept FLE_H [[COPY]], [[COPY1]]116 ; CHECK-NEXT: $x10 = COPY [[FLE_H]]117 ; CHECK-NEXT: PseudoRET implicit $x10118 %0:fprb(s16) = COPY $f10_h119 %1:fprb(s16) = COPY $f11_h120 %4:gprb(s32) = G_FCMP floatpred(ole), %0(s16), %1121 $x10 = COPY %4(s32)122 PseudoRET implicit $x10123 124...125---126name: fcmp_one_f16127legalized: true128regBankSelected: true129tracksRegLiveness: true130body: |131 bb.1:132 liveins: $f10_h, $f11_h133 134 ; CHECK-LABEL: name: fcmp_one_f16135 ; CHECK: liveins: $f10_h, $f11_h136 ; CHECK-NEXT: {{ $}}137 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h138 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h139 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]140 ; CHECK-NEXT: [[FLT_H1:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]141 ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr = OR [[FLT_H]], [[FLT_H1]]142 ; CHECK-NEXT: $x10 = COPY [[OR]]143 ; CHECK-NEXT: PseudoRET implicit $x10144 %0:fprb(s16) = COPY $f10_h145 %1:fprb(s16) = COPY $f11_h146 %4:gprb(s32) = G_FCMP floatpred(one), %0(s16), %1147 $x10 = COPY %4(s32)148 PseudoRET implicit $x10149 150...151---152name: fcmp_ord_f16153legalized: true154regBankSelected: true155tracksRegLiveness: true156body: |157 bb.1:158 liveins: $f10_h, $f11_h159 160 ; CHECK-LABEL: name: fcmp_ord_f16161 ; CHECK: liveins: $f10_h, $f11_h162 ; CHECK-NEXT: {{ $}}163 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h164 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h165 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY]]166 ; CHECK-NEXT: [[FEQ_H1:%[0-9]+]]:gpr = FEQ_H [[COPY1]], [[COPY1]]167 ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[FEQ_H]], [[FEQ_H1]]168 ; CHECK-NEXT: $x10 = COPY [[AND]]169 ; CHECK-NEXT: PseudoRET implicit $x10170 %0:fprb(s16) = COPY $f10_h171 %1:fprb(s16) = COPY $f11_h172 %4:gprb(s32) = G_FCMP floatpred(ord), %0(s16), %1173 $x10 = COPY %4(s32)174 PseudoRET implicit $x10175 176...177---178name: fcmp_ueq_f16179legalized: true180regBankSelected: true181tracksRegLiveness: true182body: |183 bb.1:184 liveins: $f10_h, $f11_h185 186 ; CHECK-LABEL: name: fcmp_ueq_f16187 ; CHECK: liveins: $f10_h, $f11_h188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h191 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]192 ; CHECK-NEXT: [[FLT_H1:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]193 ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr = OR [[FLT_H]], [[FLT_H1]]194 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[OR]], 1195 ; CHECK-NEXT: $x10 = COPY [[XORI]]196 ; CHECK-NEXT: PseudoRET implicit $x10197 %0:fprb(s16) = COPY $f10_h198 %1:fprb(s16) = COPY $f11_h199 %4:gprb(s32) = G_FCMP floatpred(ueq), %0(s16), %1200 $x10 = COPY %4(s32)201 PseudoRET implicit $x10202 203...204---205name: fcmp_ugt_f16206legalized: true207regBankSelected: true208tracksRegLiveness: true209body: |210 bb.1:211 liveins: $f10_h, $f11_h212 213 ; CHECK-LABEL: name: fcmp_ugt_f16214 ; CHECK: liveins: $f10_h, $f11_h215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h217 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h218 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY]], [[COPY1]]219 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1220 ; CHECK-NEXT: $x10 = COPY [[XORI]]221 ; CHECK-NEXT: PseudoRET implicit $x10222 %0:fprb(s16) = COPY $f10_h223 %1:fprb(s16) = COPY $f11_h224 %4:gprb(s32) = G_FCMP floatpred(ugt), %0(s16), %1225 $x10 = COPY %4(s32)226 PseudoRET implicit $x10227 228...229---230name: fcmp_uge_f16231legalized: true232regBankSelected: true233tracksRegLiveness: true234body: |235 bb.1:236 liveins: $f10_h, $f11_h237 238 ; CHECK-LABEL: name: fcmp_uge_f16239 ; CHECK: liveins: $f10_h, $f11_h240 ; CHECK-NEXT: {{ $}}241 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h242 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h243 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]]244 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1245 ; CHECK-NEXT: $x10 = COPY [[XORI]]246 ; CHECK-NEXT: PseudoRET implicit $x10247 %0:fprb(s16) = COPY $f10_h248 %1:fprb(s16) = COPY $f11_h249 %4:gprb(s32) = G_FCMP floatpred(uge), %0(s16), %1250 $x10 = COPY %4(s32)251 PseudoRET implicit $x10252 253...254---255name: fcmp_ult_f16256legalized: true257regBankSelected: true258tracksRegLiveness: true259body: |260 bb.1:261 liveins: $f10_h, $f11_h262 263 ; CHECK-LABEL: name: fcmp_ult_f16264 ; CHECK: liveins: $f10_h, $f11_h265 ; CHECK-NEXT: {{ $}}266 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h267 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h268 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]]269 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1270 ; CHECK-NEXT: $x10 = COPY [[XORI]]271 ; CHECK-NEXT: PseudoRET implicit $x10272 %0:fprb(s16) = COPY $f10_h273 %1:fprb(s16) = COPY $f11_h274 %4:gprb(s32) = G_FCMP floatpred(ult), %0(s16), %1275 $x10 = COPY %4(s32)276 PseudoRET implicit $x10277 278...279---280name: fcmp_ule_f16281legalized: true282regBankSelected: true283tracksRegLiveness: true284body: |285 bb.1:286 liveins: $f10_h, $f11_h287 288 ; CHECK-LABEL: name: fcmp_ule_f16289 ; CHECK: liveins: $f10_h, $f11_h290 ; CHECK-NEXT: {{ $}}291 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h292 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h293 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]]294 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1295 ; CHECK-NEXT: $x10 = COPY [[XORI]]296 ; CHECK-NEXT: PseudoRET implicit $x10297 %0:fprb(s16) = COPY $f10_h298 %1:fprb(s16) = COPY $f11_h299 %4:gprb(s32) = G_FCMP floatpred(ule), %0(s16), %1300 $x10 = COPY %4(s32)301 PseudoRET implicit $x10302 303...304---305name: fcmp_une_f16306legalized: true307regBankSelected: true308tracksRegLiveness: true309body: |310 bb.1:311 liveins: $f10_h, $f11_h312 313 ; CHECK-LABEL: name: fcmp_une_f16314 ; CHECK: liveins: $f10_h, $f11_h315 ; CHECK-NEXT: {{ $}}316 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h317 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h318 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY1]]319 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FEQ_H]], 1320 ; CHECK-NEXT: $x10 = COPY [[XORI]]321 ; CHECK-NEXT: PseudoRET implicit $x10322 %0:fprb(s16) = COPY $f10_h323 %1:fprb(s16) = COPY $f11_h324 %4:gprb(s32) = G_FCMP floatpred(une), %0(s16), %1325 $x10 = COPY %4(s32)326 PseudoRET implicit $x10327 328...329---330name: fcmp_uno_f16331legalized: true332regBankSelected: true333tracksRegLiveness: true334body: |335 bb.1:336 liveins: $f10_h, $f11_h337 338 ; CHECK-LABEL: name: fcmp_uno_f16339 ; CHECK: liveins: $f10_h, $f11_h340 ; CHECK-NEXT: {{ $}}341 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h342 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h343 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY]]344 ; CHECK-NEXT: [[FEQ_H1:%[0-9]+]]:gpr = FEQ_H [[COPY1]], [[COPY1]]345 ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr = AND [[FEQ_H]], [[FEQ_H1]]346 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[AND]], 1347 ; CHECK-NEXT: $x10 = COPY [[XORI]]348 ; CHECK-NEXT: PseudoRET implicit $x10349 %0:fprb(s16) = COPY $f10_h350 %1:fprb(s16) = COPY $f11_h351 %4:gprb(s32) = G_FCMP floatpred(uno), %0(s16), %1352 $x10 = COPY %4(s32)353 PseudoRET implicit $x10354 355...356