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--- 88name: test_add_s32 89# CHECK-LABEL: name: test_add_s32 90legalized: true 91regBankSelected: false 92selected: 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 98registers: 99 - { id: 0, class: _ } 100 - { id: 1, class: _ } 101 - { id: 2, class: _ } 102body: | 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--- 114name: test_sub_s32 115# CHECK-LABEL: name: test_sub_s32 116legalized: true 117regBankSelected: false 118selected: 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 124registers: 125 - { id: 0, class: _ } 126 - { id: 1, class: _ } 127 - { id: 2, class: _ } 128body: | 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--- 140name: test_mul_s32 141# CHECK-LABEL: name: test_mul_s32 142legalized: true 143regBankSelected: false 144selected: 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 150registers: 151 - { id: 0, class: _ } 152 - { id: 1, class: _ } 153 - { id: 2, class: _ } 154body: | 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--- 166name: test_sdiv_s32 167# CHECK-LABEL: name: test_sdiv_s32 168legalized: true 169regBankSelected: false 170selected: 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 176registers: 177 - { id: 0, class: _ } 178 - { id: 1, class: _ } 179 - { id: 2, class: _ } 180body: | 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--- 192name: test_udiv_s32 193# CHECK-LABEL: name: test_udiv_s32 194legalized: true 195regBankSelected: false 196selected: 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 202registers: 203 - { id: 0, class: _ } 204 - { id: 1, class: _ } 205 - { id: 2, class: _ } 206body: | 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--- 218name: test_and_s32 219# CHECK-LABEL: name: test_and_s32 220legalized: true 221regBankSelected: false 222selected: 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 228registers: 229 - { id: 0, class: _ } 230 - { id: 1, class: _ } 231 - { id: 2, class: _ } 232body: | 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--- 244name: test_or_s32 245# CHECK-LABEL: name: test_or_s32 246legalized: true 247regBankSelected: false 248selected: 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 254registers: 255 - { id: 0, class: _ } 256 - { id: 1, class: _ } 257 - { id: 2, class: _ } 258body: | 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--- 270name: test_xor_s32 271# CHECK-LABEL: name: test_xor_s32 272legalized: true 273regBankSelected: false 274selected: 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 280registers: 281 - { id: 0, class: _ } 282 - { id: 1, class: _ } 283 - { id: 2, class: _ } 284body: | 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--- 296name: test_lshr_s32 297# CHECK-LABEL: name: test_lshr_s32 298legalized: true 299regBankSelected: false 300selected: 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 306registers: 307 - { id: 0, class: _ } 308 - { id: 1, class: _ } 309 - { id: 2, class: _ } 310body: | 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--- 322name: test_ashr_s32 323# CHECK-LABEL: name: test_ashr_s32 324legalized: true 325regBankSelected: false 326selected: 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 332registers: 333 - { id: 0, class: _ } 334 - { id: 1, class: _ } 335 - { id: 2, class: _ } 336body: | 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--- 348name: test_shl_s32 349# CHECK-LABEL: name: test_shl_s32 350legalized: true 351regBankSelected: false 352selected: 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 358registers: 359 - { id: 0, class: _ } 360 - { id: 1, class: _ } 361 - { id: 2, class: _ } 362body: | 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--- 374name: test_loads 375# CHECK-LABEL: name: test_loads 376legalized: true 377regBankSelected: false 378selected: 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 388registers: 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: _ } 396body: | 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--- 410name: test_stores 411# CHECK-LABEL: name: test_stores 412legalized: true 413regBankSelected: false 414selected: 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 424registers: 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: _ } 432body: | 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--- 452name: test_stack 453# CHECK-LABEL: name: test_stack 454legalized: true 455regBankSelected: false 456selected: 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: '' } 463registers: 464 - { id: 0, class: _ } 465 - { id: 1, class: _ } 466 - { id: 2, class: _ } 467 - { id: 3, class: _ } 468 - { id: 4, class: _ } 469fixedStack: 470 - { id: 0, offset: 0, size: 4, alignment: 4, isImmutable: true, isAliased: false } 471body: | 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--- 485name: test_gep 486# CHECK-LABEL: name: test_gep 487legalized: true 488regBankSelected: false 489selected: 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 495registers: 496 - { id: 0, class: _ } 497 - { id: 1, class: _ } 498 - { id: 2, class: _ } 499body: | 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--- 510name: test_constants 511# CHECK-LABEL: name: test_constants 512legalized: true 513regBankSelected: false 514selected: false 515# CHECK: registers: 516# CHECK: - { id: 0, class: gprb, preferred-register: '' } 517registers: 518 - { id: 0, class: _ } 519body: | 520 bb.0: 521 %0(s32) = G_CONSTANT 42 522 $r0 = COPY %0(s32) 523 BX_RET 14, $noreg, implicit $r0 524... 525--- 526name: test_inttoptr_s32 527# CHECK-LABEL: name: test_inttoptr_s32 528legalized: true 529regBankSelected: false 530selected: false 531# CHECK: registers: 532# CHECK: - { id: 0, class: gprb, preferred-register: '' } 533# CHECK: - { id: 1, class: gprb, preferred-register: '' } 534registers: 535 - { id: 0, class: _ } 536 - { id: 1, class: _ } 537body: | 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--- 545name: test_ptrtoint_s32 546# CHECK-LABEL: name: test_ptrtoint_s32 547legalized: true 548regBankSelected: false 549selected: false 550# CHECK: registers: 551# CHECK: - { id: 0, class: gprb, preferred-register: '' } 552# CHECK: - { id: 1, class: gprb, preferred-register: '' } 553registers: 554 - { id: 0, class: _ } 555 - { id: 1, class: _ } 556body: | 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--- 564name: test_globals 565# CHECK-LABEL: name: test_globals 566legalized: true 567regBankSelected: false 568selected: false 569# CHECK: registers: 570# CHECK: - { id: 0, class: gprb, preferred-register: '' } 571registers: 572 - { id: 0, class: _ } 573body: | 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--- 580name: test_anyext_s8_32 581# CHECK-LABEL: name: test_anyext_s8_32 582legalized: true 583regBankSelected: false 584selected: 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: '' } 589registers: 590 - { id: 0, class: _ } 591 - { id: 1, class: _ } 592 - { id: 2, class: _ } 593body: | 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--- 604name: test_anyext_s16_32 605# CHECK-LABEL: name: test_anyext_s16_32 606legalized: true 607regBankSelected: false 608selected: 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: '' } 613registers: 614 - { id: 0, class: _ } 615 - { id: 1, class: _ } 616 - { id: 2, class: _ } 617body: | 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--- 628name: test_trunc_s32_16 629# CHECK-LABEL: name: test_trunc_s32_16 630legalized: true 631regBankSelected: false 632selected: 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: '' } 637registers: 638 - { id: 0, class: _ } 639 - { id: 1, class: _ } 640 - { id: 2, class: _ } 641body: | 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--- 652name: test_trunc_s64_32 653# CHECK-LABEL: name: test_trunc_s64_32 654legalized: true 655regBankSelected: false 656selected: 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: '' } 661registers: 662 - { id: 0, class: _ } 663 - { id: 1, class: _ } 664 - { id: 2, class: _ } 665body: | 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--- 676name: test_icmp_eq_s32 677# CHECK-LABEL: name: test_icmp_eq_s32 678legalized: true 679regBankSelected: false 680selected: 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 687registers: 688 - { id: 0, class: _ } 689 - { id: 1, class: _ } 690 - { id: 2, class: _ } 691 - { id: 3, class: _ } 692body: | 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--- 705name: test_fcmp_one_s32 706# CHECK-LABEL: name: test_fcmp_one_s32 707legalized: true 708regBankSelected: false 709selected: 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 716registers: 717 - { id: 0, class: _ } 718 - { id: 1, class: _ } 719 - { id: 2, class: _ } 720 - { id: 3, class: _ } 721body: | 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--- 734name: test_fcmp_ugt_s64 735# CHECK-LABEL: name: test_fcmp_ugt_s64 736legalized: true 737regBankSelected: false 738selected: 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 745registers: 746 - { id: 0, class: _ } 747 - { id: 1, class: _ } 748 - { id: 2, class: _ } 749 - { id: 3, class: _ } 750body: | 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--- 763name: test_select_s32 764# CHECK-LABEL: name: test_select_s32 765legalized: true 766regBankSelected: false 767selected: 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 775registers: 776 - { id: 0, class: _ } 777 - { id: 1, class: _ } 778 - { id: 2, class: _ } 779 - { id: 3, class: _ } 780 - { id: 4, class: _ } 781body: | 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--- 795name: test_br 796# CHECK-LABEL: name: test_br 797legalized: true 798regBankSelected: false 799# CHECK: regBankSelected: true 800selected: false 801registers: 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. 808body: | 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--- 826name: test_phi_s32 827# CHECK-LABEL: name: test_phi_s32 828legalized: true 829regBankSelected: false 830# CHECK: regBankSelected: true 831selected: false 832tracksRegLiveness: true 833registers: 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: '' } 844body: | 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--- 867name: test_phi_s64 868# CHECK-LABEL: name: test_phi_s64 869legalized: true 870regBankSelected: false 871# CHECK: regBankSelected: true 872selected: false 873tracksRegLiveness: true 874registers: 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: '' } 885body: | 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--- 908name: test_fadd_s32 909# CHECK-LABEL: name: test_fadd_s32 910legalized: true 911regBankSelected: false 912selected: 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 918registers: 919 - { id: 0, class: _ } 920 - { id: 1, class: _ } 921 - { id: 2, class: _ } 922body: | 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--- 934name: test_fadd_s64 935# CHECK-LABEL: name: test_fadd_s64 936legalized: true 937regBankSelected: false 938selected: 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 944registers: 945 - { id: 0, class: _ } 946 - { id: 1, class: _ } 947 - { id: 2, class: _ } 948body: | 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--- 960name: test_fsub_s32 961# CHECK-LABEL: name: test_fsub_s32 962legalized: true 963regBankSelected: false 964selected: 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 970registers: 971 - { id: 0, class: _ } 972 - { id: 1, class: _ } 973 - { id: 2, class: _ } 974body: | 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--- 986name: test_fsub_s64 987# CHECK-LABEL: name: test_fsub_s64 988legalized: true 989regBankSelected: false 990selected: 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 996registers: 997 - { id: 0, class: _ } 998 - { id: 1, class: _ } 999 - { id: 2, class: _ } 1000body: | 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--- 1012name: test_fmul_s32 1013# CHECK-LABEL: name: test_fmul_s32 1014legalized: true 1015regBankSelected: false 1016selected: 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 1022registers: 1023 - { id: 0, class: _ } 1024 - { id: 1, class: _ } 1025 - { id: 2, class: _ } 1026body: | 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--- 1038name: test_fmul_s64 1039# CHECK-LABEL: name: test_fmul_s64 1040legalized: true 1041regBankSelected: false 1042selected: 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 1048registers: 1049 - { id: 0, class: _ } 1050 - { id: 1, class: _ } 1051 - { id: 2, class: _ } 1052body: | 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--- 1064name: test_fdiv_s32 1065# CHECK-LABEL: name: test_fdiv_s32 1066legalized: true 1067regBankSelected: false 1068selected: 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 1074registers: 1075 - { id: 0, class: _ } 1076 - { id: 1, class: _ } 1077 - { id: 2, class: _ } 1078body: | 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--- 1090name: test_fdiv_s64 1091# CHECK-LABEL: name: test_fdiv_s64 1092legalized: true 1093regBankSelected: false 1094selected: 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 1100registers: 1101 - { id: 0, class: _ } 1102 - { id: 1, class: _ } 1103 - { id: 2, class: _ } 1104body: | 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--- 1116name: test_fneg_s32 1117# CHECK-LABEL: name: test_fneg_s32 1118legalized: true 1119regBankSelected: false 1120selected: false 1121# CHECK: registers: 1122# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1123# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1124registers: 1125 - { id: 0, class: _ } 1126 - { id: 1, class: _ } 1127body: | 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--- 1138name: test_fneg_s64 1139# CHECK-LABEL: name: test_fneg_s64 1140legalized: true 1141regBankSelected: false 1142selected: false 1143# CHECK: registers: 1144# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1145# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1146registers: 1147 - { id: 0, class: _ } 1148 - { id: 1, class: _ } 1149body: | 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--- 1160name: test_fma_s32 1161# CHECK-LABEL: name: test_fma_s32 1162legalized: true 1163regBankSelected: false 1164selected: 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: '' } 1170registers: 1171 - { id: 0, class: _ } 1172 - { id: 1, class: _ } 1173 - { id: 2, class: _ } 1174 - { id: 3, class: _ } 1175body: | 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--- 1187name: test_fma_s64 1188# CHECK-LABEL: name: test_fma_s64 1189legalized: true 1190regBankSelected: false 1191selected: 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: '' } 1197registers: 1198 - { id: 0, class: _ } 1199 - { id: 1, class: _ } 1200 - { id: 2, class: _ } 1201 - { id: 3, class: _ } 1202body: | 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--- 1214name: test_fpext_s32_to_s64 1215# CHECK-LABEL: name: test_fpext_s32_to_s64 1216legalized: true 1217regBankSelected: false 1218selected: false 1219# CHECK: registers: 1220# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1221# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1222registers: 1223 - { id: 0, class: _ } 1224 - { id: 1, class: _ } 1225body: | 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--- 1235name: test_fptrunc_s64_to_s32 1236# CHECK-LABEL: name: test_fptrunc_s64_to_s32 1237legalized: true 1238regBankSelected: false 1239selected: false 1240# CHECK: registers: 1241# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1242# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1243registers: 1244 - { id: 0, class: _ } 1245 - { id: 1, class: _ } 1246body: | 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--- 1256name: test_fptosi_s32 1257# CHECK-LABEL: name: test_fptosi_s32 1258legalized: true 1259regBankSelected: false 1260selected: false 1261# CHECK: registers: 1262# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1263# CHECK: - { id: 1, class: gprb, preferred-register: '' } 1264registers: 1265 - { id: 0, class: _ } 1266 - { id: 1, class: _ } 1267body: | 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--- 1278name: test_fptosi_s64 1279# CHECK-LABEL: name: test_fptosi_s64 1280legalized: true 1281regBankSelected: false 1282selected: false 1283# CHECK: registers: 1284# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1285# CHECK: - { id: 1, class: gprb, preferred-register: '' } 1286registers: 1287 - { id: 0, class: _ } 1288 - { id: 1, class: _ } 1289body: | 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--- 1299name: test_fptoui_s32 1300# CHECK-LABEL: name: test_fptoui_s32 1301legalized: true 1302regBankSelected: false 1303selected: false 1304# CHECK: registers: 1305# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1306# CHECK: - { id: 1, class: gprb, preferred-register: '' } 1307registers: 1308 - { id: 0, class: _ } 1309 - { id: 1, class: _ } 1310body: | 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--- 1321name: test_fptoui_s64 1322# CHECK-LABEL: name: test_fptoui_s64 1323legalized: true 1324regBankSelected: false 1325selected: false 1326# CHECK: registers: 1327# CHECK: - { id: 0, class: fprb, preferred-register: '' } 1328# CHECK: - { id: 1, class: gprb, preferred-register: '' } 1329registers: 1330 - { id: 0, class: _ } 1331 - { id: 1, class: _ } 1332body: | 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--- 1342name: test_sitofp_s32 1343# CHECK-LABEL: name: test_sitofp_s32 1344legalized: true 1345regBankSelected: false 1346selected: false 1347# CHECK: registers: 1348# CHECK: - { id: 0, class: gprb, preferred-register: '' } 1349# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1350registers: 1351 - { id: 0, class: _ } 1352 - { id: 1, class: _ } 1353body: | 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--- 1364name: test_sitofp_s64 1365# CHECK-LABEL: name: test_sitofp_s64 1366legalized: true 1367regBankSelected: false 1368selected: false 1369# CHECK: registers: 1370# CHECK: - { id: 0, class: gprb, preferred-register: '' } 1371# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1372registers: 1373 - { id: 0, class: _ } 1374 - { id: 1, class: _ } 1375body: | 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--- 1385name: test_uitofp_s32 1386# CHECK-LABEL: name: test_uitofp_s32 1387legalized: true 1388regBankSelected: false 1389selected: false 1390# CHECK: registers: 1391# CHECK: - { id: 0, class: gprb, preferred-register: '' } 1392# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1393registers: 1394 - { id: 0, class: _ } 1395 - { id: 1, class: _ } 1396body: | 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--- 1407name: test_uitofp_s64 1408# CHECK-LABEL: name: test_uitofp_s64 1409legalized: true 1410regBankSelected: false 1411selected: false 1412# CHECK: registers: 1413# CHECK: - { id: 0, class: gprb, preferred-register: '' } 1414# CHECK: - { id: 1, class: fprb, preferred-register: '' } 1415registers: 1416 - { id: 0, class: _ } 1417 - { id: 1, class: _ } 1418body: | 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--- 1428name: test_soft_fp_s64 1429# CHECK-LABEL: name: test_soft_fp_s64 1430legalized: true 1431regBankSelected: false 1432selected: 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 1440registers: 1441 - { id: 0, class: _ } 1442 - { id: 1, class: _ } 1443 - { id: 2, class: _ } 1444 - { id: 3, class: _ } 1445 - { id: 4, class: _ } 1446body: | 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