1 # RUN: llc -mtriple arm-- -run-pass=regbankselect %s -o - | FileCheck %s 2 --- | 3 define void @test_add_s32() { ret void } 4 define void @test_sub_s32() { ret void } 5 define void @test_mul_s32() { ret void } 6 7 define void @test_sdiv_s32() #1 { ret void } 8 define void @test_udiv_s32() #1 { ret void } 9 10 define void @test_and_s32() { ret void} 11 define void @test_or_s32() { ret void} 12 define void @test_xor_s32() { ret void} 13 14 define void @test_lshr_s32() { ret void } 15 define void @test_ashr_s32() { ret void } 16 define void @test_shl_s32() { ret void } 17 18 define void @test_loads() #0 { ret void } 19 define void @test_stores() #0 { ret void } 20 21 define void @test_stack() { ret void } 22 23 define void @test_gep() { ret void } 24 25 define void @test_constants() { ret void } 26 27 define void @test_inttoptr_s32() { ret void } 28 define void @test_ptrtoint_s32() { ret void } 29 30 @a_global = global float 1.0 31 define void @test_globals() { ret void } 32 33 define void @test_anyext_s8_32() { ret void } 34 define void @test_anyext_s16_32() { ret void } 35 36 define void @test_trunc_s32_16() { ret void } 37 define void @test_trunc_s64_32() #0 { ret void } 38 39 define void @test_icmp_eq_s32() { ret void } 40 define void @test_fcmp_one_s32() #0 { ret void } 41 define void @test_fcmp_ugt_s64() #0 { ret void } 42 43 define void @test_select_s32() { ret void } 44 45 define void @test_br() { ret void } 46 47 define void @test_phi_s32() { ret void } 48 define void @test_phi_s64() #0 { ret void } 49 50 define void @test_fadd_s32() #0 { ret void } 51 define void @test_fadd_s64() #0 { ret void } 52 53 define void @test_fsub_s32() #0 { ret void } 54 define void @test_fsub_s64() #0 { ret void } 55 56 define void @test_fmul_s32() #0 { ret void } 57 define void @test_fmul_s64() #0 { ret void } 58 59 define void @test_fdiv_s32() #0 { ret void } 60 define void @test_fdiv_s64() #0 { ret void } 61 62 define void @test_fneg_s32() #0 { ret void } 63 define void @test_fneg_s64() #0 { ret void } 64 65 define void @test_fma_s32() #2 { ret void } 66 define void @test_fma_s64() #2 { ret void } 67 68 define void @test_fpext_s32_to_s64() #0 { ret void } 69 define void @test_fptrunc_s64_to_s32() #0 { ret void } 70 71 define void @test_fptosi_s32() #0 { ret void } 72 define void @test_fptosi_s64() #0 { ret void } 73 define void @test_fptoui_s32() #0 { ret void } 74 define void @test_fptoui_s64() #0 { ret void } 75 76 define void @test_sitofp_s32() #0 { ret void } 77 define void @test_sitofp_s64() #0 { ret void } 78 define void @test_uitofp_s32() #0 { ret void } 79 define void @test_uitofp_s64() #0 { ret void } 80 81 define void @test_soft_fp_s64() #0 { ret void } 82 83 attributes #0 = { "target-features"="+vfp2"} 84 attributes #1 = { "target-features"="+hwdiv-arm" } 85 attributes #2 = { "target-features"="+vfp4"} 86 ... 87 --- 88 name: test_add_s32 89 # CHECK-LABEL: name: test_add_s32 90 legalized: true 91 regBankSelected: false 92 selected: false 93 # CHECK: registers: 94 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 95 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 96 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 97 98 registers: 99 - { id: 0, class: _ } 100 - { id: 1, class: _ } 101 - { id: 2, class: _ } 102 body: | 103 bb.0: 104 liveins: $r0, $r1 105 106 %0(s32) = COPY $r0 107 %1(s32) = COPY $r1 108 %2(s32) = G_ADD %0, %1 109 $r0 = COPY %2(s32) 110 BX_RET 14, $noreg, implicit $r0 111 112 ... 113 --- 114 name: test_sub_s32 115 # CHECK-LABEL: name: test_sub_s32 116 legalized: true 117 regBankSelected: false 118 selected: false 119 # CHECK: registers: 120 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 121 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 122 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 123 124 registers: 125 - { id: 0, class: _ } 126 - { id: 1, class: _ } 127 - { id: 2, class: _ } 128 body: | 129 bb.0: 130 liveins: $r0, $r1 131 132 %0(s32) = COPY $r0 133 %1(s32) = COPY $r1 134 %2(s32) = G_SUB %0, %1 135 $r0 = COPY %2(s32) 136 BX_RET 14, $noreg, implicit $r0 137 138 ... 139 --- 140 name: test_mul_s32 141 # CHECK-LABEL: name: test_mul_s32 142 legalized: true 143 regBankSelected: false 144 selected: false 145 # CHECK: registers: 146 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 147 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 148 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 149 150 registers: 151 - { id: 0, class: _ } 152 - { id: 1, class: _ } 153 - { id: 2, class: _ } 154 body: | 155 bb.0: 156 liveins: $r0, $r1 157 158 %0(s32) = COPY $r0 159 %1(s32) = COPY $r1 160 %2(s32) = G_MUL %0, %1 161 $r0 = COPY %2(s32) 162 BX_RET 14, $noreg, implicit $r0 163 164 ... 165 --- 166 name: test_sdiv_s32 167 # CHECK-LABEL: name: test_sdiv_s32 168 legalized: true 169 regBankSelected: false 170 selected: false 171 # CHECK: registers: 172 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 173 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 174 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 175 176 registers: 177 - { id: 0, class: _ } 178 - { id: 1, class: _ } 179 - { id: 2, class: _ } 180 body: | 181 bb.0: 182 liveins: $r0, $r1 183 184 %0(s32) = COPY $r0 185 %1(s32) = COPY $r1 186 %2(s32) = G_SDIV %0, %1 187 $r0 = COPY %2(s32) 188 BX_RET 14, $noreg, implicit $r0 189 190 ... 191 --- 192 name: test_udiv_s32 193 # CHECK-LABEL: name: test_udiv_s32 194 legalized: true 195 regBankSelected: false 196 selected: false 197 # CHECK: registers: 198 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 199 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 200 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 201 202 registers: 203 - { id: 0, class: _ } 204 - { id: 1, class: _ } 205 - { id: 2, class: _ } 206 body: | 207 bb.0: 208 liveins: $r0, $r1 209 210 %0(s32) = COPY $r0 211 %1(s32) = COPY $r1 212 %2(s32) = G_UDIV %0, %1 213 $r0 = COPY %2(s32) 214 BX_RET 14, $noreg, implicit $r0 215 216 ... 217 --- 218 name: test_and_s32 219 # CHECK-LABEL: name: test_and_s32 220 legalized: true 221 regBankSelected: false 222 selected: false 223 # CHECK: registers: 224 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 225 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 226 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 227 228 registers: 229 - { id: 0, class: _ } 230 - { id: 1, class: _ } 231 - { id: 2, class: _ } 232 body: | 233 bb.0: 234 liveins: $r0, $r1 235 236 %0(s32) = COPY $r0 237 %1(s32) = COPY $r1 238 %2(s32) = G_AND %0, %1 239 $r0 = COPY %2(s32) 240 BX_RET 14, $noreg, implicit $r0 241 242 ... 243 --- 244 name: test_or_s32 245 # CHECK-LABEL: name: test_or_s32 246 legalized: true 247 regBankSelected: false 248 selected: false 249 # CHECK: registers: 250 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 251 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 252 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 253 254 registers: 255 - { id: 0, class: _ } 256 - { id: 1, class: _ } 257 - { id: 2, class: _ } 258 body: | 259 bb.0: 260 liveins: $r0, $r1 261 262 %0(s32) = COPY $r0 263 %1(s32) = COPY $r1 264 %2(s32) = G_OR %0, %1 265 $r0 = COPY %2(s32) 266 BX_RET 14, $noreg, implicit $r0 267 268 ... 269 --- 270 name: test_xor_s32 271 # CHECK-LABEL: name: test_xor_s32 272 legalized: true 273 regBankSelected: false 274 selected: false 275 # CHECK: registers: 276 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 277 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 278 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 279 280 registers: 281 - { id: 0, class: _ } 282 - { id: 1, class: _ } 283 - { id: 2, class: _ } 284 body: | 285 bb.0: 286 liveins: $r0, $r1 287 288 %0(s32) = COPY $r0 289 %1(s32) = COPY $r1 290 %2(s32) = G_XOR %0, %1 291 $r0 = COPY %2(s32) 292 BX_RET 14, $noreg, implicit $r0 293 294 ... 295 --- 296 name: test_lshr_s32 297 # CHECK-LABEL: name: test_lshr_s32 298 legalized: true 299 regBankSelected: false 300 selected: false 301 # CHECK: registers: 302 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 303 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 304 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 305 306 registers: 307 - { id: 0, class: _ } 308 - { id: 1, class: _ } 309 - { id: 2, class: _ } 310 body: | 311 bb.0: 312 liveins: $r0, $r1 313 314 %0(s32) = COPY $r0 315 %1(s32) = COPY $r1 316 %2(s32) = G_LSHR %0, %1 317 $r0 = COPY %2(s32) 318 BX_RET 14, $noreg, implicit $r0 319 320 ... 321 --- 322 name: test_ashr_s32 323 # CHECK-LABEL: name: test_ashr_s32 324 legalized: true 325 regBankSelected: false 326 selected: false 327 # CHECK: registers: 328 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 329 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 330 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 331 332 registers: 333 - { id: 0, class: _ } 334 - { id: 1, class: _ } 335 - { id: 2, class: _ } 336 body: | 337 bb.0: 338 liveins: $r0, $r1 339 340 %0(s32) = COPY $r0 341 %1(s32) = COPY $r1 342 %2(s32) = G_ASHR %0, %1 343 $r0 = COPY %2(s32) 344 BX_RET 14, $noreg, implicit $r0 345 346 ... 347 --- 348 name: test_shl_s32 349 # CHECK-LABEL: name: test_shl_s32 350 legalized: true 351 regBankSelected: false 352 selected: false 353 # CHECK: registers: 354 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 355 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 356 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 357 358 registers: 359 - { id: 0, class: _ } 360 - { id: 1, class: _ } 361 - { id: 2, class: _ } 362 body: | 363 bb.0: 364 liveins: $r0, $r1 365 366 %0(s32) = COPY $r0 367 %1(s32) = COPY $r1 368 %2(s32) = G_SHL %0, %1 369 $r0 = COPY %2(s32) 370 BX_RET 14, $noreg, implicit $r0 371 372 ... 373 --- 374 name: test_loads 375 # CHECK-LABEL: name: test_loads 376 legalized: true 377 regBankSelected: false 378 selected: false 379 # CHECK: registers: 380 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 381 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 382 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 383 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 384 # CHECK: - { id: 4, class: gprb, preferred-register: '' } 385 # CHECK: - { id: 5, class: gprb, preferred-register: '' } 386 # CHECK: - { id: 6, class: fprb, preferred-register: '' } 387 388 registers: 389 - { id: 0, class: _ } 390 - { id: 1, class: _ } 391 - { id: 2, class: _ } 392 - { id: 3, class: _ } 393 - { id: 4, class: _ } 394 - { id: 5, class: _ } 395 - { id: 6, class: _ } 396 body: | 397 bb.0: 398 liveins: $r0 399 %0(p0) = COPY $r0 400 %6(s64) = G_LOAD %0 :: (load 8) 401 %1(s32) = G_LOAD %0 :: (load 4) 402 %2(s16) = G_LOAD %0 :: (load 2) 403 %3(s8) = G_LOAD %0 :: (load 1) 404 %4(s1) = G_LOAD %0 :: (load 1) 405 %5(p0) = G_LOAD %0 :: (load 4) 406 BX_RET 14, $noreg, implicit $r0 407 408 ... 409 --- 410 name: test_stores 411 # CHECK-LABEL: name: test_stores 412 legalized: true 413 regBankSelected: false 414 selected: false 415 # CHECK: registers: 416 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 417 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 418 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 419 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 420 # CHECK: - { id: 4, class: gprb, preferred-register: '' } 421 # CHECK: - { id: 5, class: gprb, preferred-register: '' } 422 # CHECK: - { id: 6, class: fprb, preferred-register: '' } 423 424 registers: 425 - { id: 0, class: _ } 426 - { id: 1, class: _ } 427 - { id: 2, class: _ } 428 - { id: 3, class: _ } 429 - { id: 4, class: _ } 430 - { id: 5, class: _ } 431 - { id: 6, class: _ } 432 body: | 433 bb.0: 434 liveins: $r0, $r1, $r5, $d6 435 %0(p0) = COPY $r0 436 %1(s32) = COPY $r1 437 G_STORE %1(s32), %0 :: (store 4) 438 %2(s16) = G_TRUNC %1(s32) 439 G_STORE %2(s16), %0 :: (store 2) 440 %3(s8) = G_TRUNC %1(s32) 441 G_STORE %3(s8), %0 :: (store 1) 442 %4(s1) = G_TRUNC %1(s32) 443 G_STORE %4(s1), %0 :: (store 1) 444 %5(p0) = COPY $r5 445 G_STORE %5(p0), %0 :: (store 4) 446 %6(s64) = COPY $d6 447 G_STORE %6(s64), %0 :: (store 8) 448 BX_RET 14, $noreg, implicit $r0 449 450 ... 451 --- 452 name: test_stack 453 # CHECK-LABEL: name: test_stack 454 legalized: true 455 regBankSelected: false 456 selected: false 457 # CHECK: registers: 458 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 459 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 460 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 461 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 462 # CHECK: - { id: 4, class: gprb, preferred-register: '' } 463 registers: 464 - { id: 0, class: _ } 465 - { id: 1, class: _ } 466 - { id: 2, class: _ } 467 - { id: 3, class: _ } 468 - { id: 4, class: _ } 469 fixedStack: 470 - { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false } 471 body: | 472 bb.0: 473 %0(p0) = G_FRAME_INDEX %fixed-stack.0 474 %1(s32) = G_LOAD %0(p0) :: (load 4 from %fixed-stack.0, align 0) 475 476 %2(p0) = COPY $sp 477 %3(s32) = G_CONSTANT i32 8 478 %4(p0) = G_GEP %2, %3(s32) 479 G_STORE %1(s32), %4(p0) :: (store 4) 480 481 BX_RET 14, $noreg 482 483 ... 484 --- 485 name: test_gep 486 # CHECK-LABEL: name: test_gep 487 legalized: true 488 regBankSelected: false 489 selected: false 490 # CHECK: registers: 491 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 492 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 493 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 494 495 registers: 496 - { id: 0, class: _ } 497 - { id: 1, class: _ } 498 - { id: 2, class: _ } 499 body: | 500 bb.0: 501 liveins: $r0, $r1 502 503 %0(p0) = COPY $r0 504 %1(s32) = COPY $r1 505 %2(p0) = G_GEP %0, %1(s32) 506 $r0 = COPY %2(p0) 507 BX_RET 14, $noreg, implicit $r0 508 ... 509 --- 510 name: test_constants 511 # CHECK-LABEL: name: test_constants 512 legalized: true 513 regBankSelected: false 514 selected: false 515 # CHECK: registers: 516 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 517 registers: 518 - { id: 0, class: _ } 519 body: | 520 bb.0: 521 %0(s32) = G_CONSTANT 42 522 $r0 = COPY %0(s32) 523 BX_RET 14, $noreg, implicit $r0 524 ... 525 --- 526 name: test_inttoptr_s32 527 # CHECK-LABEL: name: test_inttoptr_s32 528 legalized: true 529 regBankSelected: false 530 selected: false 531 # CHECK: registers: 532 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 533 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 534 registers: 535 - { id: 0, class: _ } 536 - { id: 1, class: _ } 537 body: | 538 bb.0: 539 %0(s32) = COPY $r0 540 %1(p0) = G_INTTOPTR %0(s32) 541 $r0 = COPY %1(p0) 542 BX_RET 14, $noreg, implicit $r0 543 ... 544 --- 545 name: test_ptrtoint_s32 546 # CHECK-LABEL: name: test_ptrtoint_s32 547 legalized: true 548 regBankSelected: false 549 selected: false 550 # CHECK: registers: 551 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 552 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 553 registers: 554 - { id: 0, class: _ } 555 - { id: 1, class: _ } 556 body: | 557 bb.0: 558 %0(p0) = COPY $r0 559 %1(s32) = G_PTRTOINT %0(p0) 560 $r0 = COPY %1(s32) 561 BX_RET 14, $noreg, implicit $r0 562 ... 563 --- 564 name: test_globals 565 # CHECK-LABEL: name: test_globals 566 legalized: true 567 regBankSelected: false 568 selected: false 569 # CHECK: registers: 570 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 571 registers: 572 - { id: 0, class: _ } 573 body: | 574 bb.0: 575 %0(p0) = G_GLOBAL_VALUE @a_global 576 $r0 = COPY %0(p0) 577 BX_RET 14, $noreg, implicit $r0 578 ... 579 --- 580 name: test_anyext_s8_32 581 # CHECK-LABEL: name: test_anyext_s8_32 582 legalized: true 583 regBankSelected: false 584 selected: false 585 # CHECK: registers: 586 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 587 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 588 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 589 registers: 590 - { id: 0, class: _ } 591 - { id: 1, class: _ } 592 - { id: 2, class: _ } 593 body: | 594 bb.0: 595 liveins: $r0 596 597 %0(s32) = COPY $r0 598 %1(s8) = G_TRUNC %0(s32) 599 %2(s32) = G_ANYEXT %1(s8) 600 $r0 = COPY %2(s32) 601 BX_RET 14, $noreg, implicit $r0 602 ... 603 --- 604 name: test_anyext_s16_32 605 # CHECK-LABEL: name: test_anyext_s16_32 606 legalized: true 607 regBankSelected: false 608 selected: false 609 # CHECK: registers: 610 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 611 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 612 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 613 registers: 614 - { id: 0, class: _ } 615 - { id: 1, class: _ } 616 - { id: 2, class: _ } 617 body: | 618 bb.0: 619 liveins: $r0 620 621 %0(s32) = COPY $r0 622 %1(s16) = G_TRUNC %0(s32) 623 %2(s32) = G_ANYEXT %1(s16) 624 $r0 = COPY %2(s32) 625 BX_RET 14, $noreg, implicit $r0 626 ... 627 --- 628 name: test_trunc_s32_16 629 # CHECK-LABEL: name: test_trunc_s32_16 630 legalized: true 631 regBankSelected: false 632 selected: false 633 # CHECK: registers: 634 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 635 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 636 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 637 registers: 638 - { id: 0, class: _ } 639 - { id: 1, class: _ } 640 - { id: 2, class: _ } 641 body: | 642 bb.0: 643 liveins: $r0, $r1 644 645 %0(s32) = COPY $r0 646 %2(p0) = COPY $r1 647 %1(s16) = G_TRUNC %0(s32) 648 G_STORE %1(s16), %2 :: (store 2) 649 BX_RET 14, $noreg 650 ... 651 --- 652 name: test_trunc_s64_32 653 # CHECK-LABEL: name: test_trunc_s64_32 654 legalized: true 655 regBankSelected: false 656 selected: false 657 # CHECK: registers: 658 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 659 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 660 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 661 registers: 662 - { id: 0, class: _ } 663 - { id: 1, class: _ } 664 - { id: 2, class: _ } 665 body: | 666 bb.0: 667 liveins: $r0, $d0 668 669 %0(s64) = COPY $d0 670 %2(p0) = COPY $r0 671 %1(s32) = G_TRUNC %0(s64) 672 G_STORE %1(s32), %2 :: (store 4) 673 BX_RET 14, $noreg 674 ... 675 --- 676 name: test_icmp_eq_s32 677 # CHECK-LABEL: name: test_icmp_eq_s32 678 legalized: true 679 regBankSelected: false 680 selected: false 681 # CHECK: registers: 682 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 683 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 684 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 685 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 686 687 registers: 688 - { id: 0, class: _ } 689 - { id: 1, class: _ } 690 - { id: 2, class: _ } 691 - { id: 3, class: _ } 692 body: | 693 bb.0: 694 liveins: $r0, $r1 695 696 %0(s32) = COPY $r0 697 %1(s32) = COPY $r1 698 %2(s1) = G_ICMP intpred(eq), %0(s32), %1 699 %3(s32) = G_ZEXT %2(s1) 700 $r0 = COPY %3(s32) 701 BX_RET 14, $noreg, implicit $r0 702 703 ... 704 --- 705 name: test_fcmp_one_s32 706 # CHECK-LABEL: name: test_fcmp_one_s32 707 legalized: true 708 regBankSelected: false 709 selected: false 710 # CHECK: registers: 711 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 712 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 713 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 714 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 715 716 registers: 717 - { id: 0, class: _ } 718 - { id: 1, class: _ } 719 - { id: 2, class: _ } 720 - { id: 3, class: _ } 721 body: | 722 bb.0: 723 liveins: $s0, $s1 724 725 %0(s32) = COPY $s0 726 %1(s32) = COPY $s1 727 %2(s1) = G_FCMP floatpred(one), %0(s32), %1 728 %3(s32) = G_ZEXT %2(s1) 729 $r0 = COPY %3(s32) 730 BX_RET 14, $noreg, implicit $r0 731 732 ... 733 --- 734 name: test_fcmp_ugt_s64 735 # CHECK-LABEL: name: test_fcmp_ugt_s64 736 legalized: true 737 regBankSelected: false 738 selected: false 739 # CHECK: registers: 740 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 741 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 742 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 743 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 744 745 registers: 746 - { id: 0, class: _ } 747 - { id: 1, class: _ } 748 - { id: 2, class: _ } 749 - { id: 3, class: _ } 750 body: | 751 bb.0: 752 liveins: $d0, $d1 753 754 %0(s64) = COPY $d0 755 %1(s64) = COPY $d1 756 %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1 757 %3(s32) = G_ZEXT %2(s1) 758 $r0 = COPY %3(s32) 759 BX_RET 14, $noreg, implicit $r0 760 761 ... 762 --- 763 name: test_select_s32 764 # CHECK-LABEL: name: test_select_s32 765 legalized: true 766 regBankSelected: false 767 selected: false 768 # CHECK: registers: 769 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 770 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 771 # CHECK: - { id: 2, class: gprb, preferred-register: '' } 772 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 773 # CHECK: - { id: 4, class: gprb, preferred-register: '' } 774 775 registers: 776 - { id: 0, class: _ } 777 - { id: 1, class: _ } 778 - { id: 2, class: _ } 779 - { id: 3, class: _ } 780 - { id: 4, class: _ } 781 body: | 782 bb.0: 783 liveins: $r0, $r1, $r2 784 785 %0(s32) = COPY $r0 786 %1(s32) = COPY $r1 787 %2(s32) = COPY $r2 788 %3(s1) = G_TRUNC %2(s32) 789 %4(s32) = G_SELECT %3(s1), %0, %1 790 $r0 = COPY %4(s32) 791 BX_RET 14, $noreg, implicit $r0 792 793 ... 794 --- 795 name: test_br 796 # CHECK-LABEL: name: test_br 797 legalized: true 798 regBankSelected: false 799 # CHECK: regBankSelected: true 800 selected: false 801 registers: 802 - { id: 0, class: _ } 803 - { id: 1, class: _ } 804 # CHECK: { id: 0, class: gprb, preferred-register: '' } 805 # CHECK: { id: 1, class: gprb, preferred-register: '' } 806 # Check that we map the condition of the G_BRCOND into the GPR. 807 # For the G_BR, there are no registers to map, but make sure we don't crash. 808 body: | 809 bb.0: 810 successors: %bb.1(0x40000000), %bb.2(0x40000000) 811 liveins: $r0 812 813 %0(s32) = COPY $r0 814 %1(s1) = G_TRUNC %0(s32) 815 G_BRCOND %1(s1), %bb.1 816 G_BR %bb.2 817 818 bb.1: 819 BX_RET 14, $noreg 820 821 bb.2: 822 BX_RET 14, $noreg 823 824 ... 825 --- 826 name: test_phi_s32 827 # CHECK-LABEL: name: test_phi_s32 828 legalized: true 829 regBankSelected: false 830 # CHECK: regBankSelected: true 831 selected: false 832 tracksRegLiveness: true 833 registers: 834 - { id: 0, class: _ } 835 - { id: 1, class: _ } 836 - { id: 2, class: _ } 837 - { id: 3, class: _ } 838 - { id: 4, class: _ } 839 # CHECK: { id: 0, class: gprb, preferred-register: '' } 840 # CHECK: { id: 1, class: gprb, preferred-register: '' } 841 # CHECK: { id: 2, class: gprb, preferred-register: '' } 842 # CHECK: { id: 3, class: gprb, preferred-register: '' } 843 # CHECK: { id: 4, class: gprb, preferred-register: '' } 844 body: | 845 bb.0: 846 successors: %bb.1(0x40000000), %bb.2(0x40000000) 847 liveins: $r0, $r1, $r2 848 849 %0(s32) = COPY $r0 850 %1(s1) = G_TRUNC %0(s32) 851 852 %2(s32) = COPY $r1 853 %3(s32) = COPY $r2 854 855 G_BRCOND %1(s1), %bb.1 856 G_BR %bb.2 857 858 bb.1: 859 successors: %bb.2(0x80000000) 860 861 bb.2: 862 %4(s32) = G_PHI %2(s32), %bb.0, %3(s32), %bb.1 863 $r0 = COPY %4(s32) 864 BX_RET 14, $noreg, implicit $r0 865 ... 866 --- 867 name: test_phi_s64 868 # CHECK-LABEL: name: test_phi_s64 869 legalized: true 870 regBankSelected: false 871 # CHECK: regBankSelected: true 872 selected: false 873 tracksRegLiveness: true 874 registers: 875 - { id: 0, class: _ } 876 - { id: 1, class: _ } 877 - { id: 2, class: _ } 878 - { id: 3, class: _ } 879 - { id: 4, class: _ } 880 # CHECK: { id: 0, class: gprb, preferred-register: '' } 881 # CHECK: { id: 1, class: gprb, preferred-register: '' } 882 # CHECK: { id: 2, class: fprb, preferred-register: '' } 883 # CHECK: { id: 3, class: fprb, preferred-register: '' } 884 # CHECK: { id: 4, class: fprb, preferred-register: '' } 885 body: | 886 bb.0: 887 successors: %bb.1(0x40000000), %bb.2(0x40000000) 888 liveins: $r0, $d0, $d1 889 890 %0(s32) = COPY $r0 891 %1(s1) = G_TRUNC %0(s32) 892 893 %2(s64) = COPY $d0 894 %3(s64) = COPY $d1 895 896 G_BRCOND %1(s1), %bb.1 897 G_BR %bb.2 898 899 bb.1: 900 successors: %bb.2(0x80000000) 901 902 bb.2: 903 %4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1 904 $d0 = COPY %4(s64) 905 BX_RET 14, $noreg, implicit $d0 906 ... 907 --- 908 name: test_fadd_s32 909 # CHECK-LABEL: name: test_fadd_s32 910 legalized: true 911 regBankSelected: false 912 selected: false 913 # CHECK: registers: 914 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 915 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 916 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 917 918 registers: 919 - { id: 0, class: _ } 920 - { id: 1, class: _ } 921 - { id: 2, class: _ } 922 body: | 923 bb.0: 924 liveins: $s0, $s1 925 926 %0(s32) = COPY $s0 927 %1(s32) = COPY $s1 928 %2(s32) = G_FADD %0, %1 929 $s0 = COPY %2(s32) 930 BX_RET 14, $noreg, implicit $s0 931 932 ... 933 --- 934 name: test_fadd_s64 935 # CHECK-LABEL: name: test_fadd_s64 936 legalized: true 937 regBankSelected: false 938 selected: false 939 # CHECK: registers: 940 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 941 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 942 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 943 944 registers: 945 - { id: 0, class: _ } 946 - { id: 1, class: _ } 947 - { id: 2, class: _ } 948 body: | 949 bb.0: 950 liveins: $d0, $d1 951 952 %0(s64) = COPY $d0 953 %1(s64) = COPY $d1 954 %2(s64) = G_FADD %0, %1 955 $d0 = COPY %2(s64) 956 BX_RET 14, $noreg, implicit $d0 957 958 ... 959 --- 960 name: test_fsub_s32 961 # CHECK-LABEL: name: test_fsub_s32 962 legalized: true 963 regBankSelected: false 964 selected: false 965 # CHECK: registers: 966 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 967 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 968 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 969 970 registers: 971 - { id: 0, class: _ } 972 - { id: 1, class: _ } 973 - { id: 2, class: _ } 974 body: | 975 bb.0: 976 liveins: $s0, $s1 977 978 %0(s32) = COPY $s0 979 %1(s32) = COPY $s1 980 %2(s32) = G_FSUB %0, %1 981 $s0 = COPY %2(s32) 982 BX_RET 14, $noreg, implicit $s0 983 984 ... 985 --- 986 name: test_fsub_s64 987 # CHECK-LABEL: name: test_fsub_s64 988 legalized: true 989 regBankSelected: false 990 selected: false 991 # CHECK: registers: 992 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 993 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 994 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 995 996 registers: 997 - { id: 0, class: _ } 998 - { id: 1, class: _ } 999 - { id: 2, class: _ } 1000 body: | 1001 bb.0: 1002 liveins: $d0, $d1 1003 1004 %0(s64) = COPY $d0 1005 %1(s64) = COPY $d1 1006 %2(s64) = G_FSUB %0, %1 1007 $d0 = COPY %2(s64) 1008 BX_RET 14, $noreg, implicit $d0 1009 1010 ... 1011 --- 1012 name: test_fmul_s32 1013 # CHECK-LABEL: name: test_fmul_s32 1014 legalized: true 1015 regBankSelected: false 1016 selected: false 1017 # CHECK: registers: 1018 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1019 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1020 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1021 1022 registers: 1023 - { id: 0, class: _ } 1024 - { id: 1, class: _ } 1025 - { id: 2, class: _ } 1026 body: | 1027 bb.0: 1028 liveins: $s0, $s1 1029 1030 %0(s32) = COPY $s0 1031 %1(s32) = COPY $s1 1032 %2(s32) = G_FMUL %0, %1 1033 $s0 = COPY %2(s32) 1034 BX_RET 14, $noreg, implicit $s0 1035 1036 ... 1037 --- 1038 name: test_fmul_s64 1039 # CHECK-LABEL: name: test_fmul_s64 1040 legalized: true 1041 regBankSelected: false 1042 selected: false 1043 # CHECK: registers: 1044 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1045 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1046 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1047 1048 registers: 1049 - { id: 0, class: _ } 1050 - { id: 1, class: _ } 1051 - { id: 2, class: _ } 1052 body: | 1053 bb.0: 1054 liveins: $d0, $d1 1055 1056 %0(s64) = COPY $d0 1057 %1(s64) = COPY $d1 1058 %2(s64) = G_FMUL %0, %1 1059 $d0 = COPY %2(s64) 1060 BX_RET 14, $noreg, implicit $d0 1061 1062 ... 1063 --- 1064 name: test_fdiv_s32 1065 # CHECK-LABEL: name: test_fdiv_s32 1066 legalized: true 1067 regBankSelected: false 1068 selected: false 1069 # CHECK: registers: 1070 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1071 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1072 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1073 1074 registers: 1075 - { id: 0, class: _ } 1076 - { id: 1, class: _ } 1077 - { id: 2, class: _ } 1078 body: | 1079 bb.0: 1080 liveins: $s0, $s1 1081 1082 %0(s32) = COPY $s0 1083 %1(s32) = COPY $s1 1084 %2(s32) = G_FDIV %0, %1 1085 $s0 = COPY %2(s32) 1086 BX_RET 14, $noreg, implicit $s0 1087 1088 ... 1089 --- 1090 name: test_fdiv_s64 1091 # CHECK-LABEL: name: test_fdiv_s64 1092 legalized: true 1093 regBankSelected: false 1094 selected: false 1095 # CHECK: registers: 1096 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1097 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1098 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1099 1100 registers: 1101 - { id: 0, class: _ } 1102 - { id: 1, class: _ } 1103 - { id: 2, class: _ } 1104 body: | 1105 bb.0: 1106 liveins: $d0, $d1 1107 1108 %0(s64) = COPY $d0 1109 %1(s64) = COPY $d1 1110 %2(s64) = G_FDIV %0, %1 1111 $d0 = COPY %2(s64) 1112 BX_RET 14, $noreg, implicit $d0 1113 1114 ... 1115 --- 1116 name: test_fneg_s32 1117 # CHECK-LABEL: name: test_fneg_s32 1118 legalized: true 1119 regBankSelected: false 1120 selected: false 1121 # CHECK: registers: 1122 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1123 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1124 registers: 1125 - { id: 0, class: _ } 1126 - { id: 1, class: _ } 1127 body: | 1128 bb.0: 1129 liveins: $s0 1130 1131 %0(s32) = COPY $s0 1132 %1(s32) = G_FNEG %0 1133 $s0 = COPY %1(s32) 1134 BX_RET 14, $noreg, implicit $s0 1135 1136 ... 1137 --- 1138 name: test_fneg_s64 1139 # CHECK-LABEL: name: test_fneg_s64 1140 legalized: true 1141 regBankSelected: false 1142 selected: false 1143 # CHECK: registers: 1144 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1145 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1146 registers: 1147 - { id: 0, class: _ } 1148 - { id: 1, class: _ } 1149 body: | 1150 bb.0: 1151 liveins: $d0 1152 1153 %0(s64) = COPY $d0 1154 %1(s64) = G_FNEG %0 1155 $d0 = COPY %1(s64) 1156 BX_RET 14, $noreg, implicit $d0 1157 1158 ... 1159 --- 1160 name: test_fma_s32 1161 # CHECK-LABEL: name: test_fma_s32 1162 legalized: true 1163 regBankSelected: false 1164 selected: false 1165 # CHECK: registers: 1166 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1167 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1168 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1169 # CHECK: - { id: 3, class: fprb, preferred-register: '' } 1170 registers: 1171 - { id: 0, class: _ } 1172 - { id: 1, class: _ } 1173 - { id: 2, class: _ } 1174 - { id: 3, class: _ } 1175 body: | 1176 bb.0: 1177 liveins: $s0, $s1, $s2 1178 1179 %0(s32) = COPY $s0 1180 %1(s32) = COPY $s1 1181 %2(s32) = COPY $s2 1182 %3(s32) = G_FMA %0, %1, %2 1183 $s0 = COPY %3(s32) 1184 BX_RET 14, $noreg, implicit $s0 1185 ... 1186 --- 1187 name: test_fma_s64 1188 # CHECK-LABEL: name: test_fma_s64 1189 legalized: true 1190 regBankSelected: false 1191 selected: false 1192 # CHECK: registers: 1193 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1194 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1195 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1196 # CHECK: - { id: 3, class: fprb, preferred-register: '' } 1197 registers: 1198 - { id: 0, class: _ } 1199 - { id: 1, class: _ } 1200 - { id: 2, class: _ } 1201 - { id: 3, class: _ } 1202 body: | 1203 bb.0: 1204 liveins: $d0, $d1, $d2 1205 1206 %0(s64) = COPY $d0 1207 %1(s64) = COPY $d1 1208 %2(s64) = COPY $d2 1209 %3(s64) = G_FMA %0, %1, %2 1210 $d0 = COPY %3(s64) 1211 BX_RET 14, $noreg, implicit $d0 1212 ... 1213 --- 1214 name: test_fpext_s32_to_s64 1215 # CHECK-LABEL: name: test_fpext_s32_to_s64 1216 legalized: true 1217 regBankSelected: false 1218 selected: false 1219 # CHECK: registers: 1220 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1221 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1222 registers: 1223 - { id: 0, class: _ } 1224 - { id: 1, class: _ } 1225 body: | 1226 bb.0: 1227 liveins: $s0 1228 1229 %0(s32) = COPY $s0 1230 %1(s64) = G_FPEXT %0 1231 $d0 = COPY %1(s64) 1232 BX_RET 14, $noreg, implicit $d0 1233 ... 1234 --- 1235 name: test_fptrunc_s64_to_s32 1236 # CHECK-LABEL: name: test_fptrunc_s64_to_s32 1237 legalized: true 1238 regBankSelected: false 1239 selected: false 1240 # CHECK: registers: 1241 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1242 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1243 registers: 1244 - { id: 0, class: _ } 1245 - { id: 1, class: _ } 1246 body: | 1247 bb.0: 1248 liveins: $d0 1249 1250 %0(s64) = COPY $d0 1251 %1(s32) = G_FPTRUNC %0 1252 $s0 = COPY %1(s32) 1253 BX_RET 14, $noreg, implicit $s0 1254 ... 1255 --- 1256 name: test_fptosi_s32 1257 # CHECK-LABEL: name: test_fptosi_s32 1258 legalized: true 1259 regBankSelected: false 1260 selected: false 1261 # CHECK: registers: 1262 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1263 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 1264 registers: 1265 - { id: 0, class: _ } 1266 - { id: 1, class: _ } 1267 body: | 1268 bb.0: 1269 liveins: $s0 1270 1271 %0(s32) = COPY $s0 1272 %1(s32) = G_FPTOSI %0 1273 $r0 = COPY %1(s32) 1274 BX_RET 14, $noreg, implicit $r0 1275 1276 ... 1277 --- 1278 name: test_fptosi_s64 1279 # CHECK-LABEL: name: test_fptosi_s64 1280 legalized: true 1281 regBankSelected: false 1282 selected: false 1283 # CHECK: registers: 1284 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1285 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 1286 registers: 1287 - { id: 0, class: _ } 1288 - { id: 1, class: _ } 1289 body: | 1290 bb.0: 1291 liveins: $d0 1292 1293 %0(s64) = COPY $d0 1294 %1(s32) = G_FPTOSI %0 1295 $r0 = COPY %1(s32) 1296 BX_RET 14, $noreg, implicit $r0 1297 ... 1298 --- 1299 name: test_fptoui_s32 1300 # CHECK-LABEL: name: test_fptoui_s32 1301 legalized: true 1302 regBankSelected: false 1303 selected: false 1304 # CHECK: registers: 1305 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1306 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 1307 registers: 1308 - { id: 0, class: _ } 1309 - { id: 1, class: _ } 1310 body: | 1311 bb.0: 1312 liveins: $s0 1313 1314 %0(s32) = COPY $s0 1315 %1(s32) = G_FPTOUI %0 1316 $r0 = COPY %1(s32) 1317 BX_RET 14, $noreg, implicit $r0 1318 1319 ... 1320 --- 1321 name: test_fptoui_s64 1322 # CHECK-LABEL: name: test_fptoui_s64 1323 legalized: true 1324 regBankSelected: false 1325 selected: false 1326 # CHECK: registers: 1327 # CHECK: - { id: 0, class: fprb, preferred-register: '' } 1328 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 1329 registers: 1330 - { id: 0, class: _ } 1331 - { id: 1, class: _ } 1332 body: | 1333 bb.0: 1334 liveins: $d0 1335 1336 %0(s64) = COPY $d0 1337 %1(s32) = G_FPTOUI %0 1338 $r0 = COPY %1(s32) 1339 BX_RET 14, $noreg, implicit $r0 1340 ... 1341 --- 1342 name: test_sitofp_s32 1343 # CHECK-LABEL: name: test_sitofp_s32 1344 legalized: true 1345 regBankSelected: false 1346 selected: false 1347 # CHECK: registers: 1348 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 1349 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1350 registers: 1351 - { id: 0, class: _ } 1352 - { id: 1, class: _ } 1353 body: | 1354 bb.0: 1355 liveins: $r0 1356 1357 %0(s32) = COPY $r0 1358 %1(s32) = G_SITOFP %0 1359 $s0 = COPY %1(s32) 1360 BX_RET 14, $noreg, implicit $s0 1361 1362 ... 1363 --- 1364 name: test_sitofp_s64 1365 # CHECK-LABEL: name: test_sitofp_s64 1366 legalized: true 1367 regBankSelected: false 1368 selected: false 1369 # CHECK: registers: 1370 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 1371 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1372 registers: 1373 - { id: 0, class: _ } 1374 - { id: 1, class: _ } 1375 body: | 1376 bb.0: 1377 liveins: $r0 1378 1379 %0(s32) = COPY $r0 1380 %1(s64) = G_SITOFP %0 1381 $d0 = COPY %1(s64) 1382 BX_RET 14, $noreg, implicit $d0 1383 ... 1384 --- 1385 name: test_uitofp_s32 1386 # CHECK-LABEL: name: test_uitofp_s32 1387 legalized: true 1388 regBankSelected: false 1389 selected: false 1390 # CHECK: registers: 1391 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 1392 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1393 registers: 1394 - { id: 0, class: _ } 1395 - { id: 1, class: _ } 1396 body: | 1397 bb.0: 1398 liveins: $r0 1399 1400 %0(s32) = COPY $r0 1401 %1(s32) = G_UITOFP %0 1402 $s0 = COPY %1(s32) 1403 BX_RET 14, $noreg, implicit $s0 1404 1405 ... 1406 --- 1407 name: test_uitofp_s64 1408 # CHECK-LABEL: name: test_uitofp_s64 1409 legalized: true 1410 regBankSelected: false 1411 selected: false 1412 # CHECK: registers: 1413 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 1414 # CHECK: - { id: 1, class: fprb, preferred-register: '' } 1415 registers: 1416 - { id: 0, class: _ } 1417 - { id: 1, class: _ } 1418 body: | 1419 bb.0: 1420 liveins: $r0 1421 1422 %0(s32) = COPY $r0 1423 %1(s64) = G_UITOFP %0 1424 $d0 = COPY %1(s64) 1425 BX_RET 14, $noreg, implicit $d0 1426 ... 1427 --- 1428 name: test_soft_fp_s64 1429 # CHECK-LABEL: name: test_soft_fp_s64 1430 legalized: true 1431 regBankSelected: false 1432 selected: false 1433 # CHECK: registers: 1434 # CHECK: - { id: 0, class: gprb, preferred-register: '' } 1435 # CHECK: - { id: 1, class: gprb, preferred-register: '' } 1436 # CHECK: - { id: 2, class: fprb, preferred-register: '' } 1437 # CHECK: - { id: 3, class: gprb, preferred-register: '' } 1438 # CHECK: - { id: 4, class: gprb, preferred-register: '' } 1439 1440 registers: 1441 - { id: 0, class: _ } 1442 - { id: 1, class: _ } 1443 - { id: 2, class: _ } 1444 - { id: 3, class: _ } 1445 - { id: 4, class: _ } 1446 body: | 1447 bb.0: 1448 liveins: $r0, $r1 1449 1450 %0(s32) = COPY $r0 1451 %1(s32) = COPY $r1 1452 %2(s64) = G_MERGE_VALUES %0(s32), %1(s32) 1453 %3(s32), %4(s32) = G_UNMERGE_VALUES %2(s64) 1454 $r0 = COPY %3(s32) 1455 $r1 = COPY %4(s32) 1456 BX_RET 14, $noreg, implicit $r0, implicit $r1 1457 1458 ... 1459