| # RUN: llc -mtriple arm-- -run-pass=legalizer %s -o - | FileCheck %s |
| --- | |
| define void @test_constants_s64() { ret void } |
| |
| define void @test_phi_s64() #0 { ret void } |
| |
| attributes #0 = { "target-features"="+vfp2" } |
| ... |
| --- |
| name: test_constants_s64 |
| # CHECK-LABEL: name: test_constants_s64 |
| legalized: false |
| # CHECK: legalized: true |
| regBankSelected: false |
| selected: false |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: _ } |
| - { id: 1, class: _ } |
| - { id: 2, class: _ } |
| - { id: 3, class: _ } |
| body: | |
| bb.0: |
| liveins: $r0 |
| |
| %0(p0) = COPY $r0 |
| |
| %1(s64) = G_CONSTANT i64 17179869200 ; = 4 * 2 ^ 32 + 16 |
| %2(s32), %3(s32) = G_UNMERGE_VALUES %1(s64) |
| G_STORE %2(s32), %0(p0) :: (store 4) |
| G_STORE %3(s32), %0(p0) :: (store 4) |
| ; CHECK-DAG: {{%[0-9]+}}:_(s32) = G_CONSTANT i32 4 |
| ; CHECK-DAG: {{%[0-9]+}}:_(s32) = G_CONSTANT i32 16 |
| ; CHECK-NOT: G_CONSTANT i64 |
| |
| BX_RET 14, $noreg |
| ... |
| --- |
| name: test_phi_s64 |
| # CHECK-LABEL: name: test_phi_s64 |
| legalized: false |
| # CHECK: legalized: true |
| regBankSelected: false |
| selected: false |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: _ } |
| - { id: 1, class: _ } |
| - { id: 2, class: _ } |
| - { id: 3, class: _ } |
| - { id: 4, class: _ } |
| body: | |
| bb.0: |
| liveins: $r0, $d0, $d1 |
| |
| %0(s32) = COPY $r0 |
| %1(s1) = G_TRUNC %0(s32) |
| |
| %2(s64) = COPY $d0 |
| %3(s64) = COPY $d1 |
| |
| G_BRCOND %1(s1), %bb.1 |
| G_BR %bb.2 |
| |
| bb.1: |
| G_BR %bb.2 |
| |
| bb.2: |
| %4(s64) = G_PHI %2(s64), %bb.0, %3(s64), %bb.1 |
| ; G_PHI with s64 is legal when we have floating point support, so we should |
| ; find it unchanged in the output |
| ; CHECK: G_PHI {{%[0-9]+}}(s64), %bb.0, {{%[0-9]+}}(s64), %bb.1 |
| $d0 = COPY %4(s64) |
| BX_RET 14, $noreg, implicit $d0 |
| ... |