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