Home | History | Annotate | Download | only in GlobalISel
      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