1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=riscv32 -mattr=+zfh -run-pass=instruction-select \ 3# RUN: -simplify-mir -verify-machineinstrs %s -o - | FileCheck %s 4 5--- 6name: fcmp_oeq_f16 7legalized: true 8regBankSelected: true 9tracksRegLiveness: true 10body: | 11 bb.1: 12 liveins: $f10_h, $f11_h 13 14 ; CHECK-LABEL: name: fcmp_oeq_f16 15 ; CHECK: liveins: $f10_h, $f11_h 16 ; CHECK-NEXT: {{ $}} 17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 18 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 19 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = nofpexcept FEQ_H [[COPY]], [[COPY1]] 20 ; CHECK-NEXT: $x10 = COPY [[FEQ_H]] 21 ; CHECK-NEXT: PseudoRET implicit $x10 22 %0:fprb(s16) = COPY $f10_h 23 %1:fprb(s16) = COPY $f11_h 24 %4:gprb(s32) = G_FCMP floatpred(oeq), %0(s16), %1 25 $x10 = COPY %4(s32) 26 PseudoRET implicit $x10 27 28... 29--- 30name: fcmp_ogt_f16 31legalized: true 32regBankSelected: true 33tracksRegLiveness: true 34body: | 35 bb.1: 36 liveins: $f10_h, $f11_h 37 38 ; CHECK-LABEL: name: fcmp_ogt_f16 39 ; CHECK: liveins: $f10_h, $f11_h 40 ; CHECK-NEXT: {{ $}} 41 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 42 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 43 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]] 44 ; CHECK-NEXT: $x10 = COPY [[FLT_H]] 45 ; CHECK-NEXT: PseudoRET implicit $x10 46 %0:fprb(s16) = COPY $f10_h 47 %1:fprb(s16) = COPY $f11_h 48 %4:gprb(s32) = G_FCMP floatpred(ogt), %0(s16), %1 49 $x10 = COPY %4(s32) 50 PseudoRET implicit $x10 51 52... 53--- 54name: fcmp_oge_f16 55legalized: true 56regBankSelected: true 57tracksRegLiveness: true 58body: | 59 bb.1: 60 liveins: $f10_h, $f11_h 61 62 ; CHECK-LABEL: name: fcmp_oge_f16 63 ; CHECK: liveins: $f10_h, $f11_h 64 ; CHECK-NEXT: {{ $}} 65 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 66 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 67 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]] 68 ; CHECK-NEXT: $x10 = COPY [[FLE_H]] 69 ; CHECK-NEXT: PseudoRET implicit $x10 70 %0:fprb(s16) = COPY $f10_h 71 %1:fprb(s16) = COPY $f11_h 72 %4:gprb(s32) = G_FCMP floatpred(oge), %0(s16), %1 73 $x10 = COPY %4(s32) 74 PseudoRET implicit $x10 75 76... 77--- 78name: fcmp_olt_f16 79legalized: true 80regBankSelected: true 81tracksRegLiveness: true 82body: | 83 bb.1: 84 liveins: $f10_h, $f11_h 85 86 ; CHECK-LABEL: name: fcmp_olt_f16 87 ; CHECK: liveins: $f10_h, $f11_h 88 ; CHECK-NEXT: {{ $}} 89 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 90 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 91 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = nofpexcept FLT_H [[COPY]], [[COPY1]] 92 ; CHECK-NEXT: $x10 = COPY [[FLT_H]] 93 ; CHECK-NEXT: PseudoRET implicit $x10 94 %0:fprb(s16) = COPY $f10_h 95 %1:fprb(s16) = COPY $f11_h 96 %4:gprb(s32) = G_FCMP floatpred(olt), %0(s16), %1 97 $x10 = COPY %4(s32) 98 PseudoRET implicit $x10 99 100... 101--- 102name: fcmp_ole_f16 103legalized: true 104regBankSelected: true 105tracksRegLiveness: true 106body: | 107 bb.1: 108 liveins: $f10_h, $f11_h 109 110 ; CHECK-LABEL: name: fcmp_ole_f16 111 ; CHECK: liveins: $f10_h, $f11_h 112 ; CHECK-NEXT: {{ $}} 113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 115 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = nofpexcept FLE_H [[COPY]], [[COPY1]] 116 ; CHECK-NEXT: $x10 = COPY [[FLE_H]] 117 ; CHECK-NEXT: PseudoRET implicit $x10 118 %0:fprb(s16) = COPY $f10_h 119 %1:fprb(s16) = COPY $f11_h 120 %4:gprb(s32) = G_FCMP floatpred(ole), %0(s16), %1 121 $x10 = COPY %4(s32) 122 PseudoRET implicit $x10 123 124... 125--- 126name: fcmp_one_f16 127legalized: true 128regBankSelected: true 129tracksRegLiveness: true 130body: | 131 bb.1: 132 liveins: $f10_h, $f11_h 133 134 ; CHECK-LABEL: name: fcmp_one_f16 135 ; CHECK: liveins: $f10_h, $f11_h 136 ; CHECK-NEXT: {{ $}} 137 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 138 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 139 ; 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 $x10 144 %0:fprb(s16) = COPY $f10_h 145 %1:fprb(s16) = COPY $f11_h 146 %4:gprb(s32) = G_FCMP floatpred(one), %0(s16), %1 147 $x10 = COPY %4(s32) 148 PseudoRET implicit $x10 149 150... 151--- 152name: fcmp_ord_f16 153legalized: true 154regBankSelected: true 155tracksRegLiveness: true 156body: | 157 bb.1: 158 liveins: $f10_h, $f11_h 159 160 ; CHECK-LABEL: name: fcmp_ord_f16 161 ; CHECK: liveins: $f10_h, $f11_h 162 ; CHECK-NEXT: {{ $}} 163 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 164 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 165 ; 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 $x10 170 %0:fprb(s16) = COPY $f10_h 171 %1:fprb(s16) = COPY $f11_h 172 %4:gprb(s32) = G_FCMP floatpred(ord), %0(s16), %1 173 $x10 = COPY %4(s32) 174 PseudoRET implicit $x10 175 176... 177--- 178name: fcmp_ueq_f16 179legalized: true 180regBankSelected: true 181tracksRegLiveness: true 182body: | 183 bb.1: 184 liveins: $f10_h, $f11_h 185 186 ; CHECK-LABEL: name: fcmp_ueq_f16 187 ; CHECK: liveins: $f10_h, $f11_h 188 ; CHECK-NEXT: {{ $}} 189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 191 ; 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]], 1 195 ; CHECK-NEXT: $x10 = COPY [[XORI]] 196 ; CHECK-NEXT: PseudoRET implicit $x10 197 %0:fprb(s16) = COPY $f10_h 198 %1:fprb(s16) = COPY $f11_h 199 %4:gprb(s32) = G_FCMP floatpred(ueq), %0(s16), %1 200 $x10 = COPY %4(s32) 201 PseudoRET implicit $x10 202 203... 204--- 205name: fcmp_ugt_f16 206legalized: true 207regBankSelected: true 208tracksRegLiveness: true 209body: | 210 bb.1: 211 liveins: $f10_h, $f11_h 212 213 ; CHECK-LABEL: name: fcmp_ugt_f16 214 ; CHECK: liveins: $f10_h, $f11_h 215 ; CHECK-NEXT: {{ $}} 216 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 217 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 218 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY]], [[COPY1]] 219 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1 220 ; CHECK-NEXT: $x10 = COPY [[XORI]] 221 ; CHECK-NEXT: PseudoRET implicit $x10 222 %0:fprb(s16) = COPY $f10_h 223 %1:fprb(s16) = COPY $f11_h 224 %4:gprb(s32) = G_FCMP floatpred(ugt), %0(s16), %1 225 $x10 = COPY %4(s32) 226 PseudoRET implicit $x10 227 228... 229--- 230name: fcmp_uge_f16 231legalized: true 232regBankSelected: true 233tracksRegLiveness: true 234body: | 235 bb.1: 236 liveins: $f10_h, $f11_h 237 238 ; CHECK-LABEL: name: fcmp_uge_f16 239 ; CHECK: liveins: $f10_h, $f11_h 240 ; CHECK-NEXT: {{ $}} 241 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 242 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 243 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY]], [[COPY1]] 244 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1 245 ; CHECK-NEXT: $x10 = COPY [[XORI]] 246 ; CHECK-NEXT: PseudoRET implicit $x10 247 %0:fprb(s16) = COPY $f10_h 248 %1:fprb(s16) = COPY $f11_h 249 %4:gprb(s32) = G_FCMP floatpred(uge), %0(s16), %1 250 $x10 = COPY %4(s32) 251 PseudoRET implicit $x10 252 253... 254--- 255name: fcmp_ult_f16 256legalized: true 257regBankSelected: true 258tracksRegLiveness: true 259body: | 260 bb.1: 261 liveins: $f10_h, $f11_h 262 263 ; CHECK-LABEL: name: fcmp_ult_f16 264 ; CHECK: liveins: $f10_h, $f11_h 265 ; CHECK-NEXT: {{ $}} 266 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 267 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 268 ; CHECK-NEXT: [[FLE_H:%[0-9]+]]:gpr = FLE_H [[COPY1]], [[COPY]] 269 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLE_H]], 1 270 ; CHECK-NEXT: $x10 = COPY [[XORI]] 271 ; CHECK-NEXT: PseudoRET implicit $x10 272 %0:fprb(s16) = COPY $f10_h 273 %1:fprb(s16) = COPY $f11_h 274 %4:gprb(s32) = G_FCMP floatpred(ult), %0(s16), %1 275 $x10 = COPY %4(s32) 276 PseudoRET implicit $x10 277 278... 279--- 280name: fcmp_ule_f16 281legalized: true 282regBankSelected: true 283tracksRegLiveness: true 284body: | 285 bb.1: 286 liveins: $f10_h, $f11_h 287 288 ; CHECK-LABEL: name: fcmp_ule_f16 289 ; CHECK: liveins: $f10_h, $f11_h 290 ; CHECK-NEXT: {{ $}} 291 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 292 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 293 ; CHECK-NEXT: [[FLT_H:%[0-9]+]]:gpr = FLT_H [[COPY1]], [[COPY]] 294 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FLT_H]], 1 295 ; CHECK-NEXT: $x10 = COPY [[XORI]] 296 ; CHECK-NEXT: PseudoRET implicit $x10 297 %0:fprb(s16) = COPY $f10_h 298 %1:fprb(s16) = COPY $f11_h 299 %4:gprb(s32) = G_FCMP floatpred(ule), %0(s16), %1 300 $x10 = COPY %4(s32) 301 PseudoRET implicit $x10 302 303... 304--- 305name: fcmp_une_f16 306legalized: true 307regBankSelected: true 308tracksRegLiveness: true 309body: | 310 bb.1: 311 liveins: $f10_h, $f11_h 312 313 ; CHECK-LABEL: name: fcmp_une_f16 314 ; CHECK: liveins: $f10_h, $f11_h 315 ; CHECK-NEXT: {{ $}} 316 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 317 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 318 ; CHECK-NEXT: [[FEQ_H:%[0-9]+]]:gpr = FEQ_H [[COPY]], [[COPY1]] 319 ; CHECK-NEXT: [[XORI:%[0-9]+]]:gpr = XORI [[FEQ_H]], 1 320 ; CHECK-NEXT: $x10 = COPY [[XORI]] 321 ; CHECK-NEXT: PseudoRET implicit $x10 322 %0:fprb(s16) = COPY $f10_h 323 %1:fprb(s16) = COPY $f11_h 324 %4:gprb(s32) = G_FCMP floatpred(une), %0(s16), %1 325 $x10 = COPY %4(s32) 326 PseudoRET implicit $x10 327 328... 329--- 330name: fcmp_uno_f16 331legalized: true 332regBankSelected: true 333tracksRegLiveness: true 334body: | 335 bb.1: 336 liveins: $f10_h, $f11_h 337 338 ; CHECK-LABEL: name: fcmp_uno_f16 339 ; CHECK: liveins: $f10_h, $f11_h 340 ; CHECK-NEXT: {{ $}} 341 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr16 = COPY $f10_h 342 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr16 = COPY $f11_h 343 ; 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]], 1 347 ; CHECK-NEXT: $x10 = COPY [[XORI]] 348 ; CHECK-NEXT: PseudoRET implicit $x10 349 %0:fprb(s16) = COPY $f10_h 350 %1:fprb(s16) = COPY $f11_h 351 %4:gprb(s32) = G_FCMP floatpred(uno), %0(s16), %1 352 $x10 = COPY %4(s32) 353 PseudoRET implicit $x10 354 355... 356