1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX1150 %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX1150 %s 4 5--- 6name: f32_olt 7legalized: true 8regBankSelected: true 9body: | 10 bb.1.entry: 11 liveins: $sgpr0, $sgpr1 12 13 ; GFX1150-LABEL: name: f32_olt 14 ; GFX1150: liveins: $sgpr0, $sgpr1 15 ; GFX1150-NEXT: {{ $}} 16 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 17 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 18 ; GFX1150-NEXT: S_CMP_LT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 19 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 20 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 21 %0:sgpr(s32) = COPY $sgpr0 22 %1:sgpr(s32) = COPY $sgpr1 23 %2:sgpr(s32) = G_FCMP floatpred(olt), %0(s32), %1 24 $sgpr0 = COPY %2(s32) 25 26... 27--- 28name: f32_oeq 29legalized: true 30regBankSelected: true 31body: | 32 bb.1.entry: 33 liveins: $sgpr0, $sgpr1 34 35 ; GFX1150-LABEL: name: f32_oeq 36 ; GFX1150: liveins: $sgpr0, $sgpr1 37 ; GFX1150-NEXT: {{ $}} 38 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 39 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 40 ; GFX1150-NEXT: S_CMP_EQ_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 41 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 42 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 43 %0:sgpr(s32) = COPY $sgpr0 44 %1:sgpr(s32) = COPY $sgpr1 45 %2:sgpr(s32) = G_FCMP floatpred(oeq), %0(s32), %1 46 $sgpr0 = COPY %2(s32) 47 48... 49--- 50name: f32_ole 51legalized: true 52regBankSelected: true 53body: | 54 bb.1.entry: 55 liveins: $sgpr0, $sgpr1 56 57 ; GFX1150-LABEL: name: f32_ole 58 ; GFX1150: liveins: $sgpr0, $sgpr1 59 ; GFX1150-NEXT: {{ $}} 60 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 61 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 62 ; GFX1150-NEXT: S_CMP_LE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 63 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 64 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 65 %0:sgpr(s32) = COPY $sgpr0 66 %1:sgpr(s32) = COPY $sgpr1 67 %2:sgpr(s32) = G_FCMP floatpred(ole), %0(s32), %1 68 $sgpr0 = COPY %2(s32) 69 70... 71--- 72name: f32_ogt 73legalized: true 74regBankSelected: true 75body: | 76 bb.1.entry: 77 liveins: $sgpr0, $sgpr1 78 79 ; GFX1150-LABEL: name: f32_ogt 80 ; GFX1150: liveins: $sgpr0, $sgpr1 81 ; GFX1150-NEXT: {{ $}} 82 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 83 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 84 ; GFX1150-NEXT: S_CMP_GT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 85 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 86 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 87 %0:sgpr(s32) = COPY $sgpr0 88 %1:sgpr(s32) = COPY $sgpr1 89 %2:sgpr(s32) = G_FCMP floatpred(ogt), %0(s32), %1 90 $sgpr0 = COPY %2(s32) 91 92... 93--- 94name: f32_one 95legalized: true 96regBankSelected: true 97body: | 98 bb.1.entry: 99 liveins: $sgpr0, $sgpr1 100 101 ; GFX1150-LABEL: name: f32_one 102 ; GFX1150: liveins: $sgpr0, $sgpr1 103 ; GFX1150-NEXT: {{ $}} 104 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 105 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 106 ; GFX1150-NEXT: S_CMP_LG_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 107 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 108 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 109 %0:sgpr(s32) = COPY $sgpr0 110 %1:sgpr(s32) = COPY $sgpr1 111 %2:sgpr(s32) = G_FCMP floatpred(one), %0(s32), %1 112 $sgpr0 = COPY %2(s32) 113 114... 115--- 116name: f32_oge 117legalized: true 118regBankSelected: true 119body: | 120 bb.1.entry: 121 liveins: $sgpr0, $sgpr1 122 123 ; GFX1150-LABEL: name: f32_oge 124 ; GFX1150: liveins: $sgpr0, $sgpr1 125 ; GFX1150-NEXT: {{ $}} 126 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 127 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 128 ; GFX1150-NEXT: S_CMP_GE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 129 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 130 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 131 %0:sgpr(s32) = COPY $sgpr0 132 %1:sgpr(s32) = COPY $sgpr1 133 %2:sgpr(s32) = G_FCMP floatpred(oge), %0(s32), %1 134 $sgpr0 = COPY %2(s32) 135 136... 137--- 138name: f32_ord 139legalized: true 140regBankSelected: true 141body: | 142 bb.1.entry: 143 liveins: $sgpr0, $sgpr1 144 145 ; GFX1150-LABEL: name: f32_ord 146 ; GFX1150: liveins: $sgpr0, $sgpr1 147 ; GFX1150-NEXT: {{ $}} 148 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 149 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 150 ; GFX1150-NEXT: S_CMP_O_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 151 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 152 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 153 %0:sgpr(s32) = COPY $sgpr0 154 %1:sgpr(s32) = COPY $sgpr1 155 %2:sgpr(s32) = G_FCMP floatpred(ord), %0(s32), %1 156 $sgpr0 = COPY %2(s32) 157 158... 159--- 160name: f32_uno 161legalized: true 162regBankSelected: true 163body: | 164 bb.1.entry: 165 liveins: $sgpr0, $sgpr1 166 167 ; GFX1150-LABEL: name: f32_uno 168 ; GFX1150: liveins: $sgpr0, $sgpr1 169 ; GFX1150-NEXT: {{ $}} 170 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 171 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 172 ; GFX1150-NEXT: S_CMP_U_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 173 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 174 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 175 %0:sgpr(s32) = COPY $sgpr0 176 %1:sgpr(s32) = COPY $sgpr1 177 %2:sgpr(s32) = G_FCMP floatpred(uno), %0(s32), %1 178 $sgpr0 = COPY %2(s32) 179 180... 181--- 182name: f32_ult 183legalized: true 184regBankSelected: true 185body: | 186 bb.1.entry: 187 liveins: $sgpr0, $sgpr1 188 189 ; GFX1150-LABEL: name: f32_ult 190 ; GFX1150: liveins: $sgpr0, $sgpr1 191 ; GFX1150-NEXT: {{ $}} 192 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 193 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 194 ; GFX1150-NEXT: S_CMP_NGE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 195 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 196 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 197 %0:sgpr(s32) = COPY $sgpr0 198 %1:sgpr(s32) = COPY $sgpr1 199 %2:sgpr(s32) = G_FCMP floatpred(ult), %0(s32), %1 200 $sgpr0 = COPY %2(s32) 201 202... 203--- 204name: f32_ueq 205legalized: true 206regBankSelected: true 207body: | 208 bb.1.entry: 209 liveins: $sgpr0, $sgpr1 210 211 ; GFX1150-LABEL: name: f32_ueq 212 ; GFX1150: liveins: $sgpr0, $sgpr1 213 ; GFX1150-NEXT: {{ $}} 214 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 215 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 216 ; GFX1150-NEXT: S_CMP_NLG_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 217 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 218 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 219 %0:sgpr(s32) = COPY $sgpr0 220 %1:sgpr(s32) = COPY $sgpr1 221 %2:sgpr(s32) = G_FCMP floatpred(ueq), %0(s32), %1 222 $sgpr0 = COPY %2(s32) 223 224... 225--- 226name: f32_ule 227legalized: true 228regBankSelected: true 229body: | 230 bb.1.entry: 231 liveins: $sgpr0, $sgpr1 232 233 ; GFX1150-LABEL: name: f32_ule 234 ; GFX1150: liveins: $sgpr0, $sgpr1 235 ; GFX1150-NEXT: {{ $}} 236 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 237 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 238 ; GFX1150-NEXT: S_CMP_NGT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 239 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 240 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 241 %0:sgpr(s32) = COPY $sgpr0 242 %1:sgpr(s32) = COPY $sgpr1 243 %2:sgpr(s32) = G_FCMP floatpred(ule), %0(s32), %1 244 $sgpr0 = COPY %2(s32) 245 246... 247--- 248name: f32_ugt 249legalized: true 250regBankSelected: true 251body: | 252 bb.1.entry: 253 liveins: $sgpr0, $sgpr1 254 255 ; GFX1150-LABEL: name: f32_ugt 256 ; GFX1150: liveins: $sgpr0, $sgpr1 257 ; GFX1150-NEXT: {{ $}} 258 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 259 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 260 ; GFX1150-NEXT: S_CMP_NLE_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 261 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 262 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 263 %0:sgpr(s32) = COPY $sgpr0 264 %1:sgpr(s32) = COPY $sgpr1 265 %2:sgpr(s32) = G_FCMP floatpred(ugt), %0(s32), %1 266 $sgpr0 = COPY %2(s32) 267 268... 269--- 270name: f32_une 271legalized: true 272regBankSelected: true 273body: | 274 bb.1.entry: 275 liveins: $sgpr0, $sgpr1 276 277 ; GFX1150-LABEL: name: f32_une 278 ; GFX1150: liveins: $sgpr0, $sgpr1 279 ; GFX1150-NEXT: {{ $}} 280 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 281 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 282 ; GFX1150-NEXT: S_CMP_NEQ_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 283 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 284 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 285 %0:sgpr(s32) = COPY $sgpr0 286 %1:sgpr(s32) = COPY $sgpr1 287 %2:sgpr(s32) = G_FCMP floatpred(une), %0(s32), %1 288 $sgpr0 = COPY %2(s32) 289 290... 291--- 292name: f32_uge 293legalized: true 294regBankSelected: true 295body: | 296 bb.1.entry: 297 liveins: $sgpr0, $sgpr1 298 299 ; GFX1150-LABEL: name: f32_uge 300 ; GFX1150: liveins: $sgpr0, $sgpr1 301 ; GFX1150-NEXT: {{ $}} 302 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 303 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 304 ; GFX1150-NEXT: S_CMP_NLT_F32 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 305 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 306 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 307 %0:sgpr(s32) = COPY $sgpr0 308 %1:sgpr(s32) = COPY $sgpr1 309 %2:sgpr(s32) = G_FCMP floatpred(uge), %0(s32), %1 310 $sgpr0 = COPY %2(s32) 311 312... 313--- 314name: f16_olt 315legalized: true 316regBankSelected: true 317body: | 318 bb.1.entry: 319 liveins: $sgpr0, $sgpr1 320 321 ; GFX1150-LABEL: name: f16_olt 322 ; GFX1150: liveins: $sgpr0, $sgpr1 323 ; GFX1150-NEXT: {{ $}} 324 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 325 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 326 ; GFX1150-NEXT: S_CMP_LT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 327 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 328 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 329 %0:sgpr(s32) = COPY $sgpr0 330 %1:sgpr(s16) = G_TRUNC %0(s32) 331 %2:sgpr(s32) = COPY $sgpr1 332 %3:sgpr(s16) = G_TRUNC %2(s32) 333 %4:sgpr(s32) = G_FCMP floatpred(olt), %1(s16), %3 334 $sgpr0 = COPY %4(s32) 335 336... 337--- 338name: f16_oeq 339legalized: true 340regBankSelected: true 341body: | 342 bb.1.entry: 343 liveins: $sgpr0, $sgpr1 344 345 ; GFX1150-LABEL: name: f16_oeq 346 ; GFX1150: liveins: $sgpr0, $sgpr1 347 ; GFX1150-NEXT: {{ $}} 348 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 349 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 350 ; GFX1150-NEXT: S_CMP_EQ_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 351 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 352 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 353 %0:sgpr(s32) = COPY $sgpr0 354 %1:sgpr(s16) = G_TRUNC %0(s32) 355 %2:sgpr(s32) = COPY $sgpr1 356 %3:sgpr(s16) = G_TRUNC %2(s32) 357 %4:sgpr(s32) = G_FCMP floatpred(oeq), %1(s16), %3 358 $sgpr0 = COPY %4(s32) 359 360... 361--- 362name: f16_ole 363legalized: true 364regBankSelected: true 365body: | 366 bb.1.entry: 367 liveins: $sgpr0, $sgpr1 368 369 ; GFX1150-LABEL: name: f16_ole 370 ; GFX1150: liveins: $sgpr0, $sgpr1 371 ; GFX1150-NEXT: {{ $}} 372 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 373 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 374 ; GFX1150-NEXT: S_CMP_LE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 375 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 376 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 377 %0:sgpr(s32) = COPY $sgpr0 378 %1:sgpr(s16) = G_TRUNC %0(s32) 379 %2:sgpr(s32) = COPY $sgpr1 380 %3:sgpr(s16) = G_TRUNC %2(s32) 381 %4:sgpr(s32) = G_FCMP floatpred(ole), %1(s16), %3 382 $sgpr0 = COPY %4(s32) 383 384... 385--- 386name: f16_ogt 387legalized: true 388regBankSelected: true 389body: | 390 bb.1.entry: 391 liveins: $sgpr0, $sgpr1 392 393 ; GFX1150-LABEL: name: f16_ogt 394 ; GFX1150: liveins: $sgpr0, $sgpr1 395 ; GFX1150-NEXT: {{ $}} 396 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 397 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 398 ; GFX1150-NEXT: S_CMP_GT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 399 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 400 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 401 %0:sgpr(s32) = COPY $sgpr0 402 %1:sgpr(s16) = G_TRUNC %0(s32) 403 %2:sgpr(s32) = COPY $sgpr1 404 %3:sgpr(s16) = G_TRUNC %2(s32) 405 %4:sgpr(s32) = G_FCMP floatpred(ogt), %1(s16), %3 406 $sgpr0 = COPY %4(s32) 407 408... 409--- 410name: f16_one 411legalized: true 412regBankSelected: true 413body: | 414 bb.1.entry: 415 liveins: $sgpr0, $sgpr1 416 417 ; GFX1150-LABEL: name: f16_one 418 ; GFX1150: liveins: $sgpr0, $sgpr1 419 ; GFX1150-NEXT: {{ $}} 420 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 421 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 422 ; GFX1150-NEXT: S_CMP_LG_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 423 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 424 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 425 %0:sgpr(s32) = COPY $sgpr0 426 %1:sgpr(s16) = G_TRUNC %0(s32) 427 %2:sgpr(s32) = COPY $sgpr1 428 %3:sgpr(s16) = G_TRUNC %2(s32) 429 %4:sgpr(s32) = G_FCMP floatpred(one), %1(s16), %3 430 $sgpr0 = COPY %4(s32) 431 432... 433--- 434name: f16_oge 435legalized: true 436regBankSelected: true 437body: | 438 bb.1.entry: 439 liveins: $sgpr0, $sgpr1 440 441 ; GFX1150-LABEL: name: f16_oge 442 ; GFX1150: liveins: $sgpr0, $sgpr1 443 ; GFX1150-NEXT: {{ $}} 444 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 445 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 446 ; GFX1150-NEXT: S_CMP_GE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 447 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 448 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 449 %0:sgpr(s32) = COPY $sgpr0 450 %1:sgpr(s16) = G_TRUNC %0(s32) 451 %2:sgpr(s32) = COPY $sgpr1 452 %3:sgpr(s16) = G_TRUNC %2(s32) 453 %4:sgpr(s32) = G_FCMP floatpred(oge), %1(s16), %3 454 $sgpr0 = COPY %4(s32) 455 456... 457--- 458name: f16_ord 459legalized: true 460regBankSelected: true 461body: | 462 bb.1.entry: 463 liveins: $sgpr0, $sgpr1 464 465 ; GFX1150-LABEL: name: f16_ord 466 ; GFX1150: liveins: $sgpr0, $sgpr1 467 ; GFX1150-NEXT: {{ $}} 468 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 469 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 470 ; GFX1150-NEXT: S_CMP_O_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 471 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 472 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 473 %0:sgpr(s32) = COPY $sgpr0 474 %1:sgpr(s16) = G_TRUNC %0(s32) 475 %2:sgpr(s32) = COPY $sgpr1 476 %3:sgpr(s16) = G_TRUNC %2(s32) 477 %4:sgpr(s32) = G_FCMP floatpred(ord), %1(s16), %3 478 $sgpr0 = COPY %4(s32) 479 480... 481--- 482name: f16_uno 483legalized: true 484regBankSelected: true 485body: | 486 bb.1.entry: 487 liveins: $sgpr0, $sgpr1 488 489 ; GFX1150-LABEL: name: f16_uno 490 ; GFX1150: liveins: $sgpr0, $sgpr1 491 ; GFX1150-NEXT: {{ $}} 492 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 493 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 494 ; GFX1150-NEXT: S_CMP_U_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 495 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 496 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 497 %0:sgpr(s32) = COPY $sgpr0 498 %1:sgpr(s16) = G_TRUNC %0(s32) 499 %2:sgpr(s32) = COPY $sgpr1 500 %3:sgpr(s16) = G_TRUNC %2(s32) 501 %4:sgpr(s32) = G_FCMP floatpred(uno), %1(s16), %3 502 $sgpr0 = COPY %4(s32) 503 504... 505--- 506name: f16_ult 507legalized: true 508regBankSelected: true 509body: | 510 bb.1.entry: 511 liveins: $sgpr0, $sgpr1 512 513 ; GFX1150-LABEL: name: f16_ult 514 ; GFX1150: liveins: $sgpr0, $sgpr1 515 ; GFX1150-NEXT: {{ $}} 516 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 517 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 518 ; GFX1150-NEXT: S_CMP_NGE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 519 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 520 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 521 %0:sgpr(s32) = COPY $sgpr0 522 %1:sgpr(s16) = G_TRUNC %0(s32) 523 %2:sgpr(s32) = COPY $sgpr1 524 %3:sgpr(s16) = G_TRUNC %2(s32) 525 %4:sgpr(s32) = G_FCMP floatpred(ult), %1(s16), %3 526 $sgpr0 = COPY %4(s32) 527 528... 529--- 530name: f16_ueq 531legalized: true 532regBankSelected: true 533body: | 534 bb.1.entry: 535 liveins: $sgpr0, $sgpr1 536 537 ; GFX1150-LABEL: name: f16_ueq 538 ; GFX1150: liveins: $sgpr0, $sgpr1 539 ; GFX1150-NEXT: {{ $}} 540 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 541 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 542 ; GFX1150-NEXT: S_CMP_NLG_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 543 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 544 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 545 %0:sgpr(s32) = COPY $sgpr0 546 %1:sgpr(s16) = G_TRUNC %0(s32) 547 %2:sgpr(s32) = COPY $sgpr1 548 %3:sgpr(s16) = G_TRUNC %2(s32) 549 %4:sgpr(s32) = G_FCMP floatpred(ueq), %1(s16), %3 550 $sgpr0 = COPY %4(s32) 551 552... 553--- 554name: f16_ule 555legalized: true 556regBankSelected: true 557body: | 558 bb.1.entry: 559 liveins: $sgpr0, $sgpr1 560 561 ; GFX1150-LABEL: name: f16_ule 562 ; GFX1150: liveins: $sgpr0, $sgpr1 563 ; GFX1150-NEXT: {{ $}} 564 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 565 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 566 ; GFX1150-NEXT: S_CMP_NGT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 567 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 568 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 569 %0:sgpr(s32) = COPY $sgpr0 570 %1:sgpr(s16) = G_TRUNC %0(s32) 571 %2:sgpr(s32) = COPY $sgpr1 572 %3:sgpr(s16) = G_TRUNC %2(s32) 573 %4:sgpr(s32) = G_FCMP floatpred(ule), %1(s16), %3 574 $sgpr0 = COPY %4(s32) 575 576... 577--- 578name: f16_ugt 579legalized: true 580regBankSelected: true 581body: | 582 bb.1.entry: 583 liveins: $sgpr0, $sgpr1 584 585 ; GFX1150-LABEL: name: f16_ugt 586 ; GFX1150: liveins: $sgpr0, $sgpr1 587 ; GFX1150-NEXT: {{ $}} 588 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 589 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 590 ; GFX1150-NEXT: S_CMP_NLE_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 591 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 592 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 593 %0:sgpr(s32) = COPY $sgpr0 594 %1:sgpr(s16) = G_TRUNC %0(s32) 595 %2:sgpr(s32) = COPY $sgpr1 596 %3:sgpr(s16) = G_TRUNC %2(s32) 597 %4:sgpr(s32) = G_FCMP floatpred(ugt), %1(s16), %3 598 $sgpr0 = COPY %4(s32) 599 600... 601--- 602name: f16_une 603legalized: true 604regBankSelected: true 605body: | 606 bb.1.entry: 607 liveins: $sgpr0, $sgpr1 608 609 ; GFX1150-LABEL: name: f16_une 610 ; GFX1150: liveins: $sgpr0, $sgpr1 611 ; GFX1150-NEXT: {{ $}} 612 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 613 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 614 ; GFX1150-NEXT: S_CMP_NEQ_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 615 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 616 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 617 %0:sgpr(s32) = COPY $sgpr0 618 %1:sgpr(s16) = G_TRUNC %0(s32) 619 %2:sgpr(s32) = COPY $sgpr1 620 %3:sgpr(s16) = G_TRUNC %2(s32) 621 %4:sgpr(s32) = G_FCMP floatpred(une), %1(s16), %3 622 $sgpr0 = COPY %4(s32) 623 624... 625--- 626name: f16_uge 627legalized: true 628regBankSelected: true 629body: | 630 bb.1.entry: 631 liveins: $sgpr0, $sgpr1 632 633 ; GFX1150-LABEL: name: f16_uge 634 ; GFX1150: liveins: $sgpr0, $sgpr1 635 ; GFX1150-NEXT: {{ $}} 636 ; GFX1150-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 637 ; GFX1150-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 638 ; GFX1150-NEXT: S_CMP_NLT_F16 [[COPY]], [[COPY1]], implicit-def $scc, implicit $mode 639 ; GFX1150-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $scc 640 ; GFX1150-NEXT: $sgpr0 = COPY [[COPY2]] 641 %0:sgpr(s32) = COPY $sgpr0 642 %1:sgpr(s16) = G_TRUNC %0(s32) 643 %2:sgpr(s32) = COPY $sgpr1 644 %3:sgpr(s16) = G_TRUNC %2(s32) 645 %4:sgpr(s32) = G_FCMP floatpred(uge), %1(s16), %3 646 $sgpr0 = COPY %4(s32) 647 648... 649