1# RUN: llc -mtriple=aarch64-unknown-fuchsia -run-pass=greedy -verify-machineinstrs -o - %s | FileCheck %s 2 3# Check that we spill %31 and do not rematerialize it since the use operand 4# of ADDXri is killed by the STRXui in this block. 5 6# CHECK-LABEL: name: test 7# CHECK: bb.17: 8# CHECK: STRXui 9# CHECK: LDRXui 10# CHECK: bb.18: 11 12--- 13name: test 14tracksRegLiveness: true 15stack: 16 - { id: 0, type: variable-sized, offset: 0, alignment: 32, 17 stack-id: default } 18body: | 19 bb.0.entry: 20 successors: %bb.2(0x40000000), %bb.1(0x40000000) 21 liveins: $x0 22 23 %22:gpr64common = COPY $x0 24 CBZW $wzr, %bb.2 25 26 bb.1: 27 successors: %bb.3(0x80000000) 28 29 %1:gpr64 = COPY $xzr 30 B %bb.3 31 32 bb.2: 33 successors: %bb.3(0x80000000) 34 35 $x0 = IMPLICIT_DEF 36 %1:gpr64 = COPY $x0 37 38 bb.3: 39 successors: %bb.4(0x30000000), %bb.5(0x50000000) 40 41 %2:gpr64common = COPY %1 42 CBNZX %1, %bb.5 43 B %bb.4 44 45 bb.4: 46 successors: %bb.5(0x80000000) 47 48 %31:gpr64common = SUBXri $sp, 288, 0 49 $sp = ANDXri %31, 7930 50 %2:gpr64common = COPY $xzr 51 52 bb.5: 53 successors: %bb.6(0x80000000) 54 55 %9:gpr64common = COPY $xzr 56 %35:gpr64sp = ADDXri %2, 32, 0 57 %4:gpr64common = UBFMXri %2, 3, 63 58 %37:gpr64 = MOVi64imm -506381209866536712 59 %38:gpr32 = MOVi32imm -202116109 60 %39:gpr64common = nuw ADDXri %22, 836, 0 61 %41:gpr64common = nuw ADDXri %22, 648, 0 62 STRXui %37, %4, 1 63 STRWui %38, %4, 8 64 %8:gpr64common = UBFMXri %39, 3, 63 65 %7:gpr64common = UBFMXri %41, 3, 63 66 %47:gpr64 = MOVi64imm 0 67 68 bb.6: 69 successors: %bb.8(0x30000000), %bb.7(0x50000000) 70 71 %44:gpr64common = ADDXrr %22, %9 72 %10:gpr64common = ADDXri %44, 648, 0 73 %11:gpr64common = ANDSXri %10, 4098, implicit-def $nzcv 74 Bcc 0, %bb.8, implicit killed $nzcv 75 B %bb.7 76 77 bb.7: 78 successors: %bb.8(0x80000000) 79 80 BL 0, csr_aarch64_aapcs, implicit-def dead $lr 81 82 bb.8: 83 successors: %bb.9(0x04000000), %bb.24(0x7c000000) 84 85 CBNZW $wzr, %bb.24 86 B %bb.9 87 88 bb.9: 89 successors: %bb.10(0x7ffff800), %bb.11(0x00000800) 90 91 %55:gpr64common = ADDXrr %22, %9 92 %56:gpr64sp = ADDXri %55, 648, 0 93 CBZX %11, %bb.10 94 B %bb.11 95 96 bb.10: 97 successors: %bb.11(0x80000000) 98 99 $x0 = ADDXri %55, 648, 0 100 $x2 = IMPLICIT_DEF 101 $w1 = COPY $wzr 102 $x1 = nuw ADDXri %35, 32, 0 103 BL 0, csr_aarch64_aapcs, implicit-def dead $lr 104 %66:gpr64sp = nuw ADDXri %35, 48, 0 105 $x0 = ADDXri %55, 696, 0 106 $x2 = IMPLICIT_DEF 107 $x1 = COPY %66 108 109 bb.11: 110 successors: %bb.15(0x7ffff800), %bb.12(0x00000800) 111 112 CBZX %11, %bb.15 113 B %bb.12 114 115 bb.12: 116 successors: %bb.13(0x00000000), %bb.14(0x80000000) 117 118 CBNZW $wzr, %bb.14 119 B %bb.13 120 121 bb.13: 122 successors: 123 124 bb.14: 125 successors: %bb.18(0x80000000) 126 127 $x1 = COPY %56 128 B %bb.18 129 130 bb.15: 131 successors: %bb.16(0x00000000), %bb.17(0x80000000) 132 133 %76:gpr32 = LDRBBui %7, 0 134 CBZW %76, %bb.17 135 B %bb.16 136 137 bb.16: 138 successors: 139 140 %74:gpr64common = ADDXrr %22, %9 141 %15:gpr64sp = ADDXri %74, 648, 0 142 $x0 = COPY %15 143 144 bb.17: 145 successors: %bb.18(0x80000000) 146 147 STRXui %22, %55, 81 148 149 bb.18: 150 successors: %bb.19(0x80000000), %bb.20(0x00000000) 151 152 %79:gpr32 = LDRBBui %8, 0 153 CBNZW %79, %bb.20 154 B %bb.19 155 156 bb.19: 157 successors: %bb.21(0x80000000), %bb.20(0x00000000) 158 159 %80:gpr32 = MOVi32imm 1 160 CBNZW %80, %bb.21 161 B %bb.20 162 163 bb.20: 164 successors: 165 166 %16:gpr64sp = ADDXri %22, 836, 0 167 $x0 = COPY %16 168 169 bb.21: 170 successors: %bb.24(0x00000000), %bb.22(0x80000000) 171 172 CBZW $wzr, %bb.24 173 174 bb.22: 175 successors: %bb.26(0x80000000) 176 177 B %bb.26 178 179 bb.24: 180 successors: %bb.25(0x04000000), %bb.6(0x7c000000) 181 182 %8:gpr64common = ADDXri %8, 24, 0 183 %7:gpr64common = ADDXri %7, 24, 0 184 CBNZW $wzr, %bb.6 185 186 bb.25: 187 successors: %bb.26(0x80000000) 188 189 %56:gpr64sp = COPY $xzr 190 191 bb.26: 192 successors: %bb.28(0x50000000), %bb.27(0x30000000) 193 194 undef %83.sub_32:gpr64 = MOVi32imm 1172321806 195 STRXui %83, %2, 0 196 CBNZX %1, %bb.28 197 B %bb.27 198 199 bb.27: 200 successors: %bb.28(0x80000000) 201 202 STRXui $xzr, %4, 0 203 204 bb.28: 205 $x0 = COPY %56 206 RET_ReallyLR implicit $x0 207 208... 209