1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64 -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s 3# 4# Test that we don't have to emit a CSINC when emitting a G_FCMP being used by 5# a G_BRCOND. 6# 7# Condition codes which require more than one instruction should have two Bccs. 8 9... 10--- 11name: oeq 12legalized: true 13regBankSelected: true 14tracksRegLiveness: true 15body: | 16 ; CHECK-LABEL: name: oeq 17 ; CHECK: bb.0: 18 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 19 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 20 ; CHECK-NEXT: {{ $}} 21 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 22 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 23 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 24 ; CHECK-NEXT: Bcc 0, %bb.2, implicit $nzcv 25 ; CHECK-NEXT: B %bb.1 26 ; CHECK-NEXT: {{ $}} 27 ; CHECK-NEXT: bb.1: 28 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 29 ; CHECK-NEXT: RET_ReallyLR implicit $s0 30 ; CHECK-NEXT: {{ $}} 31 ; CHECK-NEXT: bb.2: 32 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 33 ; CHECK-NEXT: RET_ReallyLR implicit $s1 34 bb.0: 35 successors: %bb.1(0x50000000), %bb.2(0x30000000) 36 liveins: $s0, $s1, $w0, $w1 37 38 %cmp_lhs:fpr(s32) = COPY $s0 39 %cmp_rhs:fpr(s32) = COPY $s1 40 %fcmp:gpr(s32) = G_FCMP floatpred(oeq), %cmp_lhs(s32), %cmp_rhs 41 G_BRCOND %fcmp, %bb.2 42 G_BR %bb.1 43 bb.1: 44 $s0 = COPY %cmp_lhs 45 RET_ReallyLR implicit $s0 46 bb.2: 47 $s1 = COPY %cmp_rhs 48 RET_ReallyLR implicit $s1 49 50... 51--- 52name: ogt 53legalized: true 54regBankSelected: true 55tracksRegLiveness: true 56body: | 57 ; CHECK-LABEL: name: ogt 58 ; CHECK: bb.0: 59 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 60 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 61 ; CHECK-NEXT: {{ $}} 62 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 63 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 64 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 65 ; CHECK-NEXT: Bcc 12, %bb.2, implicit $nzcv 66 ; CHECK-NEXT: B %bb.1 67 ; CHECK-NEXT: {{ $}} 68 ; CHECK-NEXT: bb.1: 69 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 70 ; CHECK-NEXT: RET_ReallyLR implicit $s0 71 ; CHECK-NEXT: {{ $}} 72 ; CHECK-NEXT: bb.2: 73 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 74 ; CHECK-NEXT: RET_ReallyLR implicit $s1 75 bb.0: 76 successors: %bb.1(0x50000000), %bb.2(0x30000000) 77 liveins: $s0, $s1, $w0, $w1 78 79 %cmp_lhs:fpr(s32) = COPY $s0 80 %cmp_rhs:fpr(s32) = COPY $s1 81 %fcmp:gpr(s32) = G_FCMP floatpred(ogt), %cmp_lhs(s32), %cmp_rhs 82 G_BRCOND %fcmp, %bb.2 83 G_BR %bb.1 84 bb.1: 85 $s0 = COPY %cmp_lhs 86 RET_ReallyLR implicit $s0 87 bb.2: 88 $s1 = COPY %cmp_rhs 89 RET_ReallyLR implicit $s1 90 91... 92--- 93name: oge 94legalized: true 95regBankSelected: true 96tracksRegLiveness: true 97body: | 98 ; CHECK-LABEL: name: oge 99 ; CHECK: bb.0: 100 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 101 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 102 ; CHECK-NEXT: {{ $}} 103 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 104 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 105 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 106 ; CHECK-NEXT: Bcc 10, %bb.2, implicit $nzcv 107 ; CHECK-NEXT: B %bb.1 108 ; CHECK-NEXT: {{ $}} 109 ; CHECK-NEXT: bb.1: 110 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 111 ; CHECK-NEXT: RET_ReallyLR implicit $s0 112 ; CHECK-NEXT: {{ $}} 113 ; CHECK-NEXT: bb.2: 114 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 115 ; CHECK-NEXT: RET_ReallyLR implicit $s1 116 bb.0: 117 successors: %bb.1(0x50000000), %bb.2(0x30000000) 118 liveins: $s0, $s1, $w0, $w1 119 120 %cmp_lhs:fpr(s32) = COPY $s0 121 %cmp_rhs:fpr(s32) = COPY $s1 122 %fcmp:gpr(s32) = G_FCMP floatpred(oge), %cmp_lhs(s32), %cmp_rhs 123 G_BRCOND %fcmp, %bb.2 124 G_BR %bb.1 125 bb.1: 126 $s0 = COPY %cmp_lhs 127 RET_ReallyLR implicit $s0 128 bb.2: 129 $s1 = COPY %cmp_rhs 130 RET_ReallyLR implicit $s1 131 132... 133--- 134name: olt 135legalized: true 136regBankSelected: true 137tracksRegLiveness: true 138body: | 139 ; CHECK-LABEL: name: olt 140 ; CHECK: bb.0: 141 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 142 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 143 ; CHECK-NEXT: {{ $}} 144 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 145 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 146 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 147 ; CHECK-NEXT: Bcc 4, %bb.2, implicit $nzcv 148 ; CHECK-NEXT: B %bb.1 149 ; CHECK-NEXT: {{ $}} 150 ; CHECK-NEXT: bb.1: 151 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 152 ; CHECK-NEXT: RET_ReallyLR implicit $s0 153 ; CHECK-NEXT: {{ $}} 154 ; CHECK-NEXT: bb.2: 155 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 156 ; CHECK-NEXT: RET_ReallyLR implicit $s1 157 bb.0: 158 successors: %bb.1(0x50000000), %bb.2(0x30000000) 159 liveins: $s0, $s1, $w0, $w1 160 161 %cmp_lhs:fpr(s32) = COPY $s0 162 %cmp_rhs:fpr(s32) = COPY $s1 163 %fcmp:gpr(s32) = G_FCMP floatpred(olt), %cmp_lhs(s32), %cmp_rhs 164 G_BRCOND %fcmp, %bb.2 165 G_BR %bb.1 166 bb.1: 167 $s0 = COPY %cmp_lhs 168 RET_ReallyLR implicit $s0 169 bb.2: 170 $s1 = COPY %cmp_rhs 171 RET_ReallyLR implicit $s1 172 173... 174--- 175name: ole 176legalized: true 177regBankSelected: true 178tracksRegLiveness: true 179body: | 180 ; CHECK-LABEL: name: ole 181 ; CHECK: bb.0: 182 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 183 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 184 ; CHECK-NEXT: {{ $}} 185 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 186 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 187 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 188 ; CHECK-NEXT: Bcc 9, %bb.2, implicit $nzcv 189 ; CHECK-NEXT: B %bb.1 190 ; CHECK-NEXT: {{ $}} 191 ; CHECK-NEXT: bb.1: 192 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 193 ; CHECK-NEXT: RET_ReallyLR implicit $s0 194 ; CHECK-NEXT: {{ $}} 195 ; CHECK-NEXT: bb.2: 196 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 197 ; CHECK-NEXT: RET_ReallyLR implicit $s1 198 bb.0: 199 successors: %bb.1(0x50000000), %bb.2(0x30000000) 200 liveins: $s0, $s1, $w0, $w1 201 202 %cmp_lhs:fpr(s32) = COPY $s0 203 %cmp_rhs:fpr(s32) = COPY $s1 204 %fcmp:gpr(s32) = G_FCMP floatpred(ole), %cmp_lhs(s32), %cmp_rhs 205 G_BRCOND %fcmp, %bb.2 206 G_BR %bb.1 207 bb.1: 208 $s0 = COPY %cmp_lhs 209 RET_ReallyLR implicit $s0 210 bb.2: 211 $s1 = COPY %cmp_rhs 212 RET_ReallyLR implicit $s1 213 214... 215--- 216name: one 217legalized: true 218regBankSelected: true 219tracksRegLiveness: true 220body: | 221 ; CHECK-LABEL: name: one 222 ; CHECK: bb.0: 223 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 224 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 225 ; CHECK-NEXT: {{ $}} 226 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 227 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 228 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 229 ; CHECK-NEXT: Bcc 4, %bb.2, implicit $nzcv 230 ; CHECK-NEXT: Bcc 12, %bb.2, implicit $nzcv 231 ; CHECK-NEXT: B %bb.1 232 ; CHECK-NEXT: {{ $}} 233 ; CHECK-NEXT: bb.1: 234 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 235 ; CHECK-NEXT: RET_ReallyLR implicit $s0 236 ; CHECK-NEXT: {{ $}} 237 ; CHECK-NEXT: bb.2: 238 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 239 ; CHECK-NEXT: RET_ReallyLR implicit $s1 240 bb.0: 241 successors: %bb.1(0x50000000), %bb.2(0x30000000) 242 liveins: $s0, $s1, $w0, $w1 243 244 %cmp_lhs:fpr(s32) = COPY $s0 245 %cmp_rhs:fpr(s32) = COPY $s1 246 %fcmp:gpr(s32) = G_FCMP floatpred(one), %cmp_lhs(s32), %cmp_rhs 247 G_BRCOND %fcmp, %bb.2 248 G_BR %bb.1 249 bb.1: 250 $s0 = COPY %cmp_lhs 251 RET_ReallyLR implicit $s0 252 bb.2: 253 $s1 = COPY %cmp_rhs 254 RET_ReallyLR implicit $s1 255 256... 257--- 258name: ord 259legalized: true 260regBankSelected: true 261tracksRegLiveness: true 262body: | 263 ; CHECK-LABEL: name: ord 264 ; CHECK: bb.0: 265 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 266 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 267 ; CHECK-NEXT: {{ $}} 268 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 269 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 270 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 271 ; CHECK-NEXT: Bcc 7, %bb.2, implicit $nzcv 272 ; CHECK-NEXT: B %bb.1 273 ; CHECK-NEXT: {{ $}} 274 ; CHECK-NEXT: bb.1: 275 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 276 ; CHECK-NEXT: RET_ReallyLR implicit $s0 277 ; CHECK-NEXT: {{ $}} 278 ; CHECK-NEXT: bb.2: 279 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 280 ; CHECK-NEXT: RET_ReallyLR implicit $s1 281 bb.0: 282 successors: %bb.1(0x50000000), %bb.2(0x30000000) 283 liveins: $s0, $s1, $w0, $w1 284 285 %cmp_lhs:fpr(s32) = COPY $s0 286 %cmp_rhs:fpr(s32) = COPY $s1 287 %fcmp:gpr(s32) = G_FCMP floatpred(ord), %cmp_lhs(s32), %cmp_rhs 288 G_BRCOND %fcmp, %bb.2 289 G_BR %bb.1 290 bb.1: 291 $s0 = COPY %cmp_lhs 292 RET_ReallyLR implicit $s0 293 bb.2: 294 $s1 = COPY %cmp_rhs 295 RET_ReallyLR implicit $s1 296 297... 298--- 299name: uno 300legalized: true 301regBankSelected: true 302tracksRegLiveness: true 303body: | 304 ; CHECK-LABEL: name: uno 305 ; CHECK: bb.0: 306 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 307 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 308 ; CHECK-NEXT: {{ $}} 309 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 310 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 311 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 312 ; CHECK-NEXT: Bcc 6, %bb.2, implicit $nzcv 313 ; CHECK-NEXT: B %bb.1 314 ; CHECK-NEXT: {{ $}} 315 ; CHECK-NEXT: bb.1: 316 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 317 ; CHECK-NEXT: RET_ReallyLR implicit $s0 318 ; CHECK-NEXT: {{ $}} 319 ; CHECK-NEXT: bb.2: 320 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 321 ; CHECK-NEXT: RET_ReallyLR implicit $s1 322 bb.0: 323 successors: %bb.1(0x50000000), %bb.2(0x30000000) 324 liveins: $s0, $s1, $w0, $w1 325 326 %cmp_lhs:fpr(s32) = COPY $s0 327 %cmp_rhs:fpr(s32) = COPY $s1 328 %fcmp:gpr(s32) = G_FCMP floatpred(uno), %cmp_lhs(s32), %cmp_rhs 329 G_BRCOND %fcmp, %bb.2 330 G_BR %bb.1 331 bb.1: 332 $s0 = COPY %cmp_lhs 333 RET_ReallyLR implicit $s0 334 bb.2: 335 $s1 = COPY %cmp_rhs 336 RET_ReallyLR implicit $s1 337 338... 339--- 340name: ueq 341legalized: true 342regBankSelected: true 343tracksRegLiveness: true 344body: | 345 ; CHECK-LABEL: name: ueq 346 ; CHECK: bb.0: 347 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 348 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 349 ; CHECK-NEXT: {{ $}} 350 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 351 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 352 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 353 ; CHECK-NEXT: Bcc 0, %bb.2, implicit $nzcv 354 ; CHECK-NEXT: Bcc 6, %bb.2, implicit $nzcv 355 ; CHECK-NEXT: B %bb.1 356 ; CHECK-NEXT: {{ $}} 357 ; CHECK-NEXT: bb.1: 358 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 359 ; CHECK-NEXT: RET_ReallyLR implicit $s0 360 ; CHECK-NEXT: {{ $}} 361 ; CHECK-NEXT: bb.2: 362 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 363 ; CHECK-NEXT: RET_ReallyLR implicit $s1 364 bb.0: 365 successors: %bb.1(0x50000000), %bb.2(0x30000000) 366 liveins: $s0, $s1, $w0, $w1 367 368 %cmp_lhs:fpr(s32) = COPY $s0 369 %cmp_rhs:fpr(s32) = COPY $s1 370 %fcmp:gpr(s32) = G_FCMP floatpred(ueq), %cmp_lhs(s32), %cmp_rhs 371 G_BRCOND %fcmp, %bb.2 372 G_BR %bb.1 373 bb.1: 374 $s0 = COPY %cmp_lhs 375 RET_ReallyLR implicit $s0 376 bb.2: 377 $s1 = COPY %cmp_rhs 378 RET_ReallyLR implicit $s1 379 380... 381--- 382name: ugt 383legalized: true 384regBankSelected: true 385tracksRegLiveness: true 386body: | 387 ; CHECK-LABEL: name: ugt 388 ; CHECK: bb.0: 389 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 390 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 391 ; CHECK-NEXT: {{ $}} 392 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 393 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 394 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 395 ; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv 396 ; CHECK-NEXT: B %bb.1 397 ; CHECK-NEXT: {{ $}} 398 ; CHECK-NEXT: bb.1: 399 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 400 ; CHECK-NEXT: RET_ReallyLR implicit $s0 401 ; CHECK-NEXT: {{ $}} 402 ; CHECK-NEXT: bb.2: 403 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 404 ; CHECK-NEXT: RET_ReallyLR implicit $s1 405 bb.0: 406 successors: %bb.1(0x50000000), %bb.2(0x30000000) 407 liveins: $s0, $s1, $w0, $w1 408 409 %cmp_lhs:fpr(s32) = COPY $s0 410 %cmp_rhs:fpr(s32) = COPY $s1 411 %fcmp:gpr(s32) = G_FCMP floatpred(ugt), %cmp_lhs(s32), %cmp_rhs 412 G_BRCOND %fcmp, %bb.2 413 G_BR %bb.1 414 bb.1: 415 $s0 = COPY %cmp_lhs 416 RET_ReallyLR implicit $s0 417 bb.2: 418 $s1 = COPY %cmp_rhs 419 RET_ReallyLR implicit $s1 420 421... 422--- 423name: uge 424legalized: true 425regBankSelected: true 426tracksRegLiveness: true 427body: | 428 ; CHECK-LABEL: name: uge 429 ; CHECK: bb.0: 430 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 431 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 432 ; CHECK-NEXT: {{ $}} 433 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 434 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 435 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 436 ; CHECK-NEXT: Bcc 5, %bb.2, implicit $nzcv 437 ; CHECK-NEXT: B %bb.1 438 ; CHECK-NEXT: {{ $}} 439 ; CHECK-NEXT: bb.1: 440 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 441 ; CHECK-NEXT: RET_ReallyLR implicit $s0 442 ; CHECK-NEXT: {{ $}} 443 ; CHECK-NEXT: bb.2: 444 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 445 ; CHECK-NEXT: RET_ReallyLR implicit $s1 446 bb.0: 447 successors: %bb.1(0x50000000), %bb.2(0x30000000) 448 liveins: $s0, $s1, $w0, $w1 449 450 %cmp_lhs:fpr(s32) = COPY $s0 451 %cmp_rhs:fpr(s32) = COPY $s1 452 %fcmp:gpr(s32) = G_FCMP floatpred(uge), %cmp_lhs(s32), %cmp_rhs 453 G_BRCOND %fcmp, %bb.2 454 G_BR %bb.1 455 bb.1: 456 $s0 = COPY %cmp_lhs 457 RET_ReallyLR implicit $s0 458 bb.2: 459 $s1 = COPY %cmp_rhs 460 RET_ReallyLR implicit $s1 461 462... 463--- 464name: ult 465legalized: true 466regBankSelected: true 467tracksRegLiveness: true 468body: | 469 ; CHECK-LABEL: name: ult 470 ; CHECK: bb.0: 471 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 472 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 473 ; CHECK-NEXT: {{ $}} 474 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 475 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 476 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 477 ; CHECK-NEXT: Bcc 11, %bb.2, implicit $nzcv 478 ; CHECK-NEXT: B %bb.1 479 ; CHECK-NEXT: {{ $}} 480 ; CHECK-NEXT: bb.1: 481 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 482 ; CHECK-NEXT: RET_ReallyLR implicit $s0 483 ; CHECK-NEXT: {{ $}} 484 ; CHECK-NEXT: bb.2: 485 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 486 ; CHECK-NEXT: RET_ReallyLR implicit $s1 487 bb.0: 488 successors: %bb.1(0x50000000), %bb.2(0x30000000) 489 liveins: $s0, $s1, $w0, $w1 490 491 %cmp_lhs:fpr(s32) = COPY $s0 492 %cmp_rhs:fpr(s32) = COPY $s1 493 %fcmp:gpr(s32) = G_FCMP floatpred(ult), %cmp_lhs(s32), %cmp_rhs 494 G_BRCOND %fcmp, %bb.2 495 G_BR %bb.1 496 bb.1: 497 $s0 = COPY %cmp_lhs 498 RET_ReallyLR implicit $s0 499 bb.2: 500 $s1 = COPY %cmp_rhs 501 RET_ReallyLR implicit $s1 502 503... 504--- 505name: ule 506legalized: true 507regBankSelected: true 508tracksRegLiveness: true 509body: | 510 ; CHECK-LABEL: name: ule 511 ; CHECK: bb.0: 512 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 513 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 514 ; CHECK-NEXT: {{ $}} 515 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 516 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 517 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 518 ; CHECK-NEXT: Bcc 13, %bb.2, implicit $nzcv 519 ; CHECK-NEXT: B %bb.1 520 ; CHECK-NEXT: {{ $}} 521 ; CHECK-NEXT: bb.1: 522 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 523 ; CHECK-NEXT: RET_ReallyLR implicit $s0 524 ; CHECK-NEXT: {{ $}} 525 ; CHECK-NEXT: bb.2: 526 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 527 ; CHECK-NEXT: RET_ReallyLR implicit $s1 528 bb.0: 529 successors: %bb.1(0x50000000), %bb.2(0x30000000) 530 liveins: $s0, $s1, $w0, $w1 531 532 %cmp_lhs:fpr(s32) = COPY $s0 533 %cmp_rhs:fpr(s32) = COPY $s1 534 %fcmp:gpr(s32) = G_FCMP floatpred(ule), %cmp_lhs(s32), %cmp_rhs 535 G_BRCOND %fcmp, %bb.2 536 G_BR %bb.1 537 bb.1: 538 $s0 = COPY %cmp_lhs 539 RET_ReallyLR implicit $s0 540 bb.2: 541 $s1 = COPY %cmp_rhs 542 RET_ReallyLR implicit $s1 543 544... 545--- 546name: une 547legalized: true 548regBankSelected: true 549tracksRegLiveness: true 550body: | 551 ; CHECK-LABEL: name: une 552 ; CHECK: bb.0: 553 ; CHECK-NEXT: successors: %bb.1(0x50000000), %bb.2(0x30000000) 554 ; CHECK-NEXT: liveins: $s0, $s1, $w0, $w1 555 ; CHECK-NEXT: {{ $}} 556 ; CHECK-NEXT: %cmp_lhs:fpr32 = COPY $s0 557 ; CHECK-NEXT: %cmp_rhs:fpr32 = COPY $s1 558 ; CHECK-NEXT: nofpexcept FCMPSrr %cmp_lhs, %cmp_rhs, implicit-def $nzcv 559 ; CHECK-NEXT: Bcc 1, %bb.2, implicit $nzcv 560 ; CHECK-NEXT: B %bb.1 561 ; CHECK-NEXT: {{ $}} 562 ; CHECK-NEXT: bb.1: 563 ; CHECK-NEXT: $s0 = COPY %cmp_lhs 564 ; CHECK-NEXT: RET_ReallyLR implicit $s0 565 ; CHECK-NEXT: {{ $}} 566 ; CHECK-NEXT: bb.2: 567 ; CHECK-NEXT: $s1 = COPY %cmp_rhs 568 ; CHECK-NEXT: RET_ReallyLR implicit $s1 569 bb.0: 570 successors: %bb.1(0x50000000), %bb.2(0x30000000) 571 liveins: $s0, $s1, $w0, $w1 572 573 %cmp_lhs:fpr(s32) = COPY $s0 574 %cmp_rhs:fpr(s32) = COPY $s1 575 %fcmp:gpr(s32) = G_FCMP floatpred(une), %cmp_lhs(s32), %cmp_rhs 576 G_BRCOND %fcmp, %bb.2 577 G_BR %bb.1 578 bb.1: 579 $s0 = COPY %cmp_lhs 580 RET_ReallyLR implicit $s0 581 bb.2: 582 $s1 = COPY %cmp_rhs 583 RET_ReallyLR implicit $s1 584