1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3 2# RUN: llc -mtriple=arm64-apple-ios -run-pass=greedy -o - %s | FileCheck %s 3 4--- 5name: widget 6tracksRegLiveness: true 7frameInfo: 8 adjustsStack: true 9jumpTable: 10 kind: label-difference32 11 entries: 12 - id: 0 13 blocks: [ '%bb.9', '%bb.5', '%bb.2', '%bb.2', '%bb.2' ] 14body: | 15 ; CHECK-LABEL: name: widget 16 ; CHECK: bb.0: 17 ; CHECK-NEXT: successors: %bb.1(0x80000000) 18 ; CHECK-NEXT: liveins: $w0, $w1, $x2, $x3, $x4, $w5, $w6 19 ; CHECK-NEXT: {{ $}} 20 ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64common = IMPLICIT_DEF 21 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF 22 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr32common = IMPLICIT_DEF 23 ; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr32 = IMPLICIT_DEF 24 ; CHECK-NEXT: [[DEF4:%[0-9]+]]:gpr32 = IMPLICIT_DEF 25 ; CHECK-NEXT: [[DEF5:%[0-9]+]]:gpr64common = IMPLICIT_DEF 26 ; CHECK-NEXT: [[DEF6:%[0-9]+]]:gpr32 = IMPLICIT_DEF 27 ; CHECK-NEXT: undef [[DEF7:%[0-9]+]].sub_32:gpr64 = IMPLICIT_DEF 28 ; CHECK-NEXT: [[DEF8:%[0-9]+]]:gpr64common = IMPLICIT_DEF 29 ; CHECK-NEXT: [[DEF9:%[0-9]+]]:gpr32 = IMPLICIT_DEF 30 ; CHECK-NEXT: dead [[DEF10:%[0-9]+]]:gpr64 = IMPLICIT_DEF 31 ; CHECK-NEXT: undef [[DEF11:%[0-9]+]].sub_32:gpr64 = IMPLICIT_DEF implicit-def dead %11 32 ; CHECK-NEXT: STRXui [[DEF11]], %stack.0, 0 :: (store (s64) into %stack.0) 33 ; CHECK-NEXT: {{ $}} 34 ; CHECK-NEXT: bb.1: 35 ; CHECK-NEXT: successors: %bb.2(0x80000000) 36 ; CHECK-NEXT: {{ $}} 37 ; CHECK-NEXT: bb.2: 38 ; CHECK-NEXT: successors: %bb.3(0x0fbefbf0), %bb.4(0x70410410) 39 ; CHECK-NEXT: {{ $}} 40 ; CHECK-NEXT: Bcc 8, %bb.3, implicit killed undef $nzcv 41 ; CHECK-NEXT: B %bb.4 42 ; CHECK-NEXT: {{ $}} 43 ; CHECK-NEXT: bb.3: 44 ; CHECK-NEXT: successors: %bb.11(0x00000000), %bb.2(0x80000000) 45 ; CHECK-NEXT: {{ $}} 46 ; CHECK-NEXT: dead $wzr = SUBSWri [[DEF2]], 64, 0, implicit-def $nzcv 47 ; CHECK-NEXT: Bcc 0, %bb.11, implicit killed undef $nzcv 48 ; CHECK-NEXT: B %bb.2 49 ; CHECK-NEXT: {{ $}} 50 ; CHECK-NEXT: bb.4: 51 ; CHECK-NEXT: successors: %bb.9(0x01288b01), %bb.5(0x01288b01), %bb.2(0x11f46a91), %bb.6(0x23e8d524), %bb.7(0x47d1aa49) 52 ; CHECK-NEXT: {{ $}} 53 ; CHECK-NEXT: dead early-clobber %12:gpr64, dead early-clobber %13:gpr64sp = JumpTableDest32 [[DEF8]], [[DEF7]], %jump-table.0 54 ; CHECK-NEXT: BR undef %18:gpr64 55 ; CHECK-NEXT: {{ $}} 56 ; CHECK-NEXT: bb.5: 57 ; CHECK-NEXT: successors: %bb.8(0x80000000) 58 ; CHECK-NEXT: {{ $}} 59 ; CHECK-NEXT: B %bb.8 60 ; CHECK-NEXT: {{ $}} 61 ; CHECK-NEXT: bb.6: 62 ; CHECK-NEXT: successors: %bb.2(0x80000000) 63 ; CHECK-NEXT: {{ $}} 64 ; CHECK-NEXT: STRWui [[DEF9]], [[DEF5]], 0 :: (store (s32)) 65 ; CHECK-NEXT: B %bb.2 66 ; CHECK-NEXT: {{ $}} 67 ; CHECK-NEXT: bb.7: 68 ; CHECK-NEXT: successors: %bb.2(0x80000000) 69 ; CHECK-NEXT: {{ $}} 70 ; CHECK-NEXT: STRWui $wzr, [[DEF]], 0 :: (store (s32)) 71 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp 72 ; CHECK-NEXT: $w0 = COPY [[DEF4]] 73 ; CHECK-NEXT: $x1 = COPY [[DEF1]] 74 ; CHECK-NEXT: BL 0, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0 75 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp 76 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp 77 ; CHECK-NEXT: $w0 = COPY [[DEF6]] 78 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp 79 ; CHECK-NEXT: B %bb.2 80 ; CHECK-NEXT: {{ $}} 81 ; CHECK-NEXT: bb.8: 82 ; CHECK-NEXT: successors: %bb.8(0x80000000) 83 ; CHECK-NEXT: {{ $}} 84 ; CHECK-NEXT: B %bb.8 85 ; CHECK-NEXT: {{ $}} 86 ; CHECK-NEXT: bb.9: 87 ; CHECK-NEXT: successors: %bb.10(0x40000000), %bb.1(0x40000000) 88 ; CHECK-NEXT: {{ $}} 89 ; CHECK-NEXT: undef [[DEF12:%[0-9]+]].sub_32:gpr64 = IMPLICIT_DEF 90 ; CHECK-NEXT: STRXui [[DEF12]], %stack.0, 0 :: (store (s64) into %stack.0) 91 ; CHECK-NEXT: TBZW [[DEF3]], 0, %bb.1 92 ; CHECK-NEXT: B %bb.10 93 ; CHECK-NEXT: {{ $}} 94 ; CHECK-NEXT: bb.10: 95 ; CHECK-NEXT: successors: %bb.1(0x80000000) 96 ; CHECK-NEXT: {{ $}} 97 ; CHECK-NEXT: ADJCALLSTACKDOWN 32, 0, implicit-def dead $sp, implicit $sp 98 ; CHECK-NEXT: ADJCALLSTACKUP 32, 0, implicit-def dead $sp, implicit $sp 99 ; CHECK-NEXT: B %bb.1 100 ; CHECK-NEXT: {{ $}} 101 ; CHECK-NEXT: bb.11: 102 ; CHECK-NEXT: [[LDRXui:%[0-9]+]]:gpr64 = LDRXui %stack.0, 0 :: (load (s64) from %stack.0) 103 ; CHECK-NEXT: dead undef [[COPY:%[0-9]+]].sub_32:gpr64 = COPY [[LDRXui]].sub_32 104 ; CHECK-NEXT: ADJCALLSTACKDOWN 8, 0, implicit-def dead $sp, implicit $sp 105 ; CHECK-NEXT: ADJCALLSTACKUP 8, 0, implicit-def dead $sp, implicit $sp 106 bb.0: 107 liveins: $w0, $w1, $x2, $x3, $x4, $w5, $w6 108 109 %0:gpr64common = IMPLICIT_DEF 110 %1:gpr64 = IMPLICIT_DEF 111 %2:gpr32common = IMPLICIT_DEF 112 %3:gpr32 = IMPLICIT_DEF 113 %4:gpr32 = IMPLICIT_DEF 114 %5:gpr64common = IMPLICIT_DEF 115 %6:gpr32 = IMPLICIT_DEF 116 undef %7.sub_32:gpr64 = IMPLICIT_DEF 117 %8:gpr64common = IMPLICIT_DEF 118 %9:gpr32 = IMPLICIT_DEF 119 %10:gpr64 = IMPLICIT_DEF 120 undef %10.sub_32:gpr64 = IMPLICIT_DEF implicit-def %11:gpr64 121 122 bb.1: 123 124 bb.2: 125 successors: %bb.3(0x0fbefbf0), %bb.4(0x70410410) 126 127 Bcc 8, %bb.3, implicit killed undef $nzcv 128 B %bb.4 129 130 bb.3: 131 successors: %bb.11(0x00000000), %bb.2(0x80000000) 132 133 dead $wzr = SUBSWri %2, 64, 0, implicit-def $nzcv 134 Bcc 0, %bb.11, implicit killed undef $nzcv 135 B %bb.2 136 137 bb.4: 138 successors: %bb.9(0x01288b01), %bb.5(0x01288b01), %bb.2(0x11f46a91), %bb.6(0x23e8d524), %bb.7(0x47d1aa49) 139 140 early-clobber %12:gpr64, dead early-clobber %13:gpr64sp = JumpTableDest32 %8, %7, %jump-table.0 141 BR undef %10 142 143 bb.5: 144 B %bb.8 145 146 bb.6: 147 STRWui %9, %5, 0 :: (store (s32)) 148 B %bb.2 149 150 bb.7: 151 STRWui $wzr, %0, 0 :: (store (s32)) 152 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp 153 $w0 = COPY %4 154 $x1 = COPY %1 155 BL 0, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $w0 156 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp 157 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp 158 $w0 = COPY %6 159 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp 160 B %bb.2 161 162 bb.8: 163 B %bb.8 164 165 bb.9: 166 successors: %bb.10, %bb.1 167 168 undef %10.sub_32:gpr64 = IMPLICIT_DEF 169 TBZW %3, 0, %bb.1 170 B %bb.10 171 172 bb.10: 173 ADJCALLSTACKDOWN 32, 0, implicit-def dead $sp, implicit $sp 174 ADJCALLSTACKUP 32, 0, implicit-def dead $sp, implicit $sp 175 B %bb.1 176 177 bb.11: 178 undef %14.sub_32:gpr64 = COPY %10.sub_32 179 ADJCALLSTACKDOWN 8, 0, implicit-def dead $sp, implicit $sp 180 ADJCALLSTACKUP 8, 0, implicit-def dead $sp, implicit $sp 181 182... 183