| # RUN: llc -mtriple=aarch64-unknown-fuchsia -run-pass=greedy -verify-machineinstrs -o - %s | FileCheck %s |
| |
| # Check that we spill %31 and do not rematerialize it since the use operand |
| # of ADDXri is killed by the STRXui in this block. |
| |
| # CHECK-LABEL: name: test |
| # CHECK: bb.17: |
| # CHECK: STRXui |
| # CHECK: LDRXui |
| # CHECK: bb.18: |
| |
| --- |
| name: test |
| tracksRegLiveness: true |
| stack: |
| - { id: 0, type: variable-sized, offset: 0, alignment: 32, |
| stack-id: default } |
| body: | |
| bb.0.entry: |
| successors: %bb.2(0x40000000), %bb.1(0x40000000) |
| liveins: $x0 |
| |
| %22:gpr64common = COPY $x0 |
| CBZW $wzr, %bb.2 |
| |
| bb.1: |
| successors: %bb.3(0x80000000) |
| |
| %1:gpr64 = COPY $xzr |
| B %bb.3 |
| |
| bb.2: |
| successors: %bb.3(0x80000000) |
| |
| $x0 = IMPLICIT_DEF |
| %1:gpr64 = COPY $x0 |
| |
| bb.3: |
| successors: %bb.4(0x30000000), %bb.5(0x50000000) |
| |
| %2:gpr64common = COPY %1 |
| CBNZX %1, %bb.5 |
| B %bb.4 |
| |
| bb.4: |
| successors: %bb.5(0x80000000) |
| |
| %31:gpr64common = SUBXri $sp, 288, 0 |
| $sp = ANDXri %31, 7930 |
| %2:gpr64common = COPY $xzr |
| |
| bb.5: |
| successors: %bb.6(0x80000000) |
| |
| %9:gpr64common = COPY $xzr |
| %35:gpr64sp = ADDXri %2, 32, 0 |
| %4:gpr64common = UBFMXri %2, 3, 63 |
| %37:gpr64 = MOVi64imm -506381209866536712 |
| %38:gpr32 = MOVi32imm -202116109 |
| %39:gpr64common = nuw ADDXri %22, 836, 0 |
| %41:gpr64common = nuw ADDXri %22, 648, 0 |
| STRXui %37, %4, 1 |
| STRWui %38, %4, 8 |
| %8:gpr64common = UBFMXri %39, 3, 63 |
| %7:gpr64common = UBFMXri %41, 3, 63 |
| %47:gpr64 = MOVi64imm 0 |
| |
| bb.6: |
| successors: %bb.8(0x30000000), %bb.7(0x50000000) |
| |
| %44:gpr64common = ADDXrr %22, %9 |
| %10:gpr64common = ADDXri %44, 648, 0 |
| %11:gpr64common = ANDSXri %10, 4098, implicit-def $nzcv |
| Bcc 0, %bb.8, implicit killed $nzcv |
| B %bb.7 |
| |
| bb.7: |
| successors: %bb.8(0x80000000) |
| |
| BL 0, csr_aarch64_aapcs, implicit-def dead $lr |
| |
| bb.8: |
| successors: %bb.9(0x04000000), %bb.24(0x7c000000) |
| |
| CBNZW $wzr, %bb.24 |
| B %bb.9 |
| |
| bb.9: |
| successors: %bb.10(0x7ffff800), %bb.11(0x00000800) |
| |
| %55:gpr64common = ADDXrr %22, %9 |
| %56:gpr64sp = ADDXri %55, 648, 0 |
| CBZX %11, %bb.10 |
| B %bb.11 |
| |
| bb.10: |
| successors: %bb.11(0x80000000) |
| |
| $x0 = ADDXri %55, 648, 0 |
| $x2 = IMPLICIT_DEF |
| $w1 = COPY $wzr |
| $x1 = nuw ADDXri %35, 32, 0 |
| BL 0, csr_aarch64_aapcs, implicit-def dead $lr |
| %66:gpr64sp = nuw ADDXri %35, 48, 0 |
| $x0 = ADDXri %55, 696, 0 |
| $x2 = IMPLICIT_DEF |
| $x1 = COPY %66 |
| |
| bb.11: |
| successors: %bb.15(0x7ffff800), %bb.12(0x00000800) |
| |
| CBZX %11, %bb.15 |
| B %bb.12 |
| |
| bb.12: |
| successors: %bb.13(0x00000000), %bb.14(0x80000000) |
| |
| CBNZW $wzr, %bb.14 |
| B %bb.13 |
| |
| bb.13: |
| successors: |
| |
| bb.14: |
| successors: %bb.18(0x80000000) |
| |
| $x1 = COPY %56 |
| B %bb.18 |
| |
| bb.15: |
| successors: %bb.16(0x00000000), %bb.17(0x80000000) |
| |
| %76:gpr32 = LDRBBui %7, 0 |
| CBZW %76, %bb.17 |
| B %bb.16 |
| |
| bb.16: |
| successors: |
| |
| %74:gpr64common = ADDXrr %22, %9 |
| %15:gpr64sp = ADDXri %74, 648, 0 |
| $x0 = COPY %15 |
| |
| bb.17: |
| successors: %bb.18(0x80000000) |
| |
| STRXui %22, %55, 81 |
| |
| bb.18: |
| successors: %bb.19(0x80000000), %bb.20(0x00000000) |
| |
| %79:gpr32 = LDRBBui %8, 0 |
| CBNZW %79, %bb.20 |
| B %bb.19 |
| |
| bb.19: |
| successors: %bb.21(0x80000000), %bb.20(0x00000000) |
| |
| %80:gpr32 = MOVi32imm 1 |
| CBNZW %80, %bb.21 |
| B %bb.20 |
| |
| bb.20: |
| successors: |
| |
| %16:gpr64sp = ADDXri %22, 836, 0 |
| $x0 = COPY %16 |
| |
| bb.21: |
| successors: %bb.24(0x00000000), %bb.22(0x80000000) |
| |
| CBZW $wzr, %bb.24 |
| |
| bb.22: |
| successors: %bb.26(0x80000000) |
| |
| B %bb.26 |
| |
| bb.24: |
| successors: %bb.25(0x04000000), %bb.6(0x7c000000) |
| |
| %8:gpr64common = ADDXri %8, 24, 0 |
| %7:gpr64common = ADDXri %7, 24, 0 |
| CBNZW $wzr, %bb.6 |
| |
| bb.25: |
| successors: %bb.26(0x80000000) |
| |
| %56:gpr64sp = COPY $xzr |
| |
| bb.26: |
| successors: %bb.28(0x50000000), %bb.27(0x30000000) |
| |
| undef %83.sub_32:gpr64 = MOVi32imm 1172321806 |
| STRXui %83, %2, 0 |
| CBNZX %1, %bb.28 |
| B %bb.27 |
| |
| bb.27: |
| successors: %bb.28(0x80000000) |
| |
| STRXui $xzr, %4, 0 |
| |
| bb.28: |
| $x0 = COPY %56 |
| RET_ReallyLR implicit $x0 |
| |
| ... |