# 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 ...