246 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=arm64-apple-ios -mcpu=apple-m1 -run-pass=early-ifcvt -o - %s | FileCheck %s3# RUN: llc -mtriple=arm64-apple-ios -mcpu=apple-m1 -passes=early-ifcvt -o - %s | FileCheck %s4 5--- |6 define void @test_cond_is_load_with_invariant_ops() {7 entry:8 ret void9 }10 11 define void @test_cond_is_load_with_invariant_ops2() {12 entry:13 ret void14 }15 16 define void @test_cond_is_load_with_varying_ops() {17 entry:18 ret void19 }20...21---22name: test_cond_is_load_with_invariant_ops23alignment: 424tracksRegLiveness: true25body: |26 ; CHECK-LABEL: name: test_cond_is_load_with_invariant_ops27 ; CHECK: bb.0:28 ; CHECK-NEXT: successors: %bb.1(0x80000000)29 ; CHECK-NEXT: liveins: $x0, $x1, $w2, $x330 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x332 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32common = COPY $w233 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x134 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x035 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: bb.1:37 ; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.2(0x50000000)38 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY3]], 0 :: (load (s8))40 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32all = COPY $wzr41 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32all = COPY [[COPY4]]42 ; CHECK-NEXT: CBZW killed [[LDRBBui]], %bb.343 ; CHECK-NEXT: B %bb.244 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: bb.2:46 ; CHECK-NEXT: successors: %bb.3(0x80000000)47 ; CHECK-NEXT: {{ $}}48 ; CHECK-NEXT: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 4080, 12, implicit-def $nzcv49 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 1671168050 ; CHECK-NEXT: [[CSELWr:%[0-9]+]]:gpr32common = CSELWr [[COPY1]], killed [[MOVi32imm]], 11, implicit $nzcv51 ; CHECK-NEXT: [[SUBSWri1:%[0-9]+]]:gpr32 = SUBSWri [[CSELWr]], 0, 0, implicit-def $nzcv52 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr32 = COPY $wzr53 ; CHECK-NEXT: [[CSELWr1:%[0-9]+]]:gpr32 = CSELWr [[CSELWr]], [[COPY6]], 12, implicit $nzcv54 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr32all = COPY [[CSELWr1]]55 ; CHECK-NEXT: [[SUBSWri2:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 0, 0, implicit-def $nzcv56 ; CHECK-NEXT: [[CSELWr2:%[0-9]+]]:gpr32 = CSELWr [[COPY1]], [[COPY6]], 12, implicit $nzcv57 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr32all = COPY [[CSELWr2]]58 ; CHECK-NEXT: {{ $}}59 ; CHECK-NEXT: bb.3:60 ; CHECK-NEXT: successors: %bb.1(0x80000000)61 ; CHECK-NEXT: {{ $}}62 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI [[COPY5]], %bb.1, [[COPY7]], %bb.263 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:gpr32 = PHI [[COPY5]], %bb.1, [[COPY8]], %bb.264 ; CHECK-NEXT: STRBBui [[PHI1]], [[COPY2]], 0 :: (store (s8))65 ; CHECK-NEXT: STRBBui [[PHI]], [[COPY]], 0 :: (store (s8))66 ; CHECK-NEXT: B %bb.167 bb.0:68 liveins: $x0, $x1, $w2, $x369 70 %20:gpr64common = COPY $x371 %6:gpr32common = COPY $w272 %5:gpr64common = COPY $x173 %4:gpr64common = COPY $x074 75 bb.1:76 successors: %bb.3(0x30000000), %bb.2(0x50000000)77 78 %9:gpr32 = LDRBBui %4, 0 :: (load (s8))79 %10:gpr32all = COPY $wzr80 %8:gpr32all = COPY %1081 CBZW killed %9, %bb.382 B %bb.283 84 bb.2:85 %11:gpr32 = SUBSWri %6, 4080, 12, implicit-def $nzcv86 %12:gpr32 = MOVi32imm 1671168087 %13:gpr32common = CSELWr %6, killed %12, 11, implicit $nzcv88 %14:gpr32 = SUBSWri %13, 0, 0, implicit-def $nzcv89 %15:gpr32 = COPY $wzr90 %16:gpr32 = CSELWr %13, %15, 12, implicit $nzcv91 %0:gpr32all = COPY %1692 %17:gpr32 = SUBSWri %6, 0, 0, implicit-def $nzcv93 %18:gpr32 = CSELWr %6, %15, 12, implicit $nzcv94 %1:gpr32all = COPY %1895 96 bb.3:97 %2:gpr32 = PHI %8, %bb.1, %0, %bb.298 %3:gpr32 = PHI %8, %bb.1, %1, %bb.299 STRBBui %3, %5, 0 :: (store (s8))100 STRBBui %2, %20, 0 :: (store (s8))101 B %bb.1102 103...104---105name: test_cond_is_load_with_invariant_ops2106alignment: 4107tracksRegLiveness: true108body: |109 ; CHECK-LABEL: name: test_cond_is_load_with_invariant_ops2110 ; CHECK: bb.0:111 ; CHECK-NEXT: successors: %bb.1(0x80000000)112 ; CHECK-NEXT: liveins: $x0, $x1, $w2, $x3113 ; CHECK-NEXT: {{ $}}114 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x3115 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32common = COPY $w2116 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x1117 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x0118 ; CHECK-NEXT: {{ $}}119 ; CHECK-NEXT: bb.1:120 ; CHECK-NEXT: successors: %bb.3(0x30000000), %bb.2(0x50000000)121 ; CHECK-NEXT: {{ $}}122 ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY3]], 0 :: (load (s8))123 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32all = COPY $wzr124 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32all = COPY [[COPY4]]125 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr32all = COPY [[LDRBBui]]126 ; CHECK-NEXT: CBZW killed [[LDRBBui]], %bb.3127 ; CHECK-NEXT: B %bb.2128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: bb.2:130 ; CHECK-NEXT: successors: %bb.3(0x80000000)131 ; CHECK-NEXT: {{ $}}132 ; CHECK-NEXT: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 4080, 12, implicit-def $nzcv133 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr32all = COPY [[SUBSWri]]134 ; CHECK-NEXT: {{ $}}135 ; CHECK-NEXT: bb.3:136 ; CHECK-NEXT: successors: %bb.1(0x80000000)137 ; CHECK-NEXT: {{ $}}138 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI [[COPY6]], %bb.1, [[COPY7]], %bb.2139 ; CHECK-NEXT: STRBBui [[PHI]], [[COPY]], 0 :: (store (s8))140 ; CHECK-NEXT: B %bb.1141 bb.0:142 liveins: $x0, $x1, $w2, $x3143 144 %20:gpr64common = COPY $x3145 %6:gpr32common = COPY $w2146 %5:gpr64common = COPY $x1147 %4:gpr64common = COPY $x0148 149 bb.1:150 successors: %bb.3(0x30000000), %bb.2(0x50000000)151 152 %9:gpr32 = LDRBBui %4, 0 :: (load (s8))153 %10:gpr32all = COPY $wzr154 %8:gpr32all = COPY %10155 %21:gpr32all = COPY %9156 CBZW killed %9, %bb.3157 B %bb.2158 159 bb.2:160 %11:gpr32 = SUBSWri %6, 4080, 12, implicit-def $nzcv161 %0:gpr32all = COPY %11162 163 bb.3:164 %2:gpr32 = PHI %21, %bb.1, %0, %bb.2165 STRBBui %2, %20, 0 :: (store (s8))166 B %bb.1167 168...169---170name: test_cond_is_load_with_varying_ops171alignment: 4172tracksRegLiveness: true173body: |174 ; CHECK-LABEL: name: test_cond_is_load_with_varying_ops175 ; CHECK: bb.0:176 ; CHECK-NEXT: successors: %bb.1(0x80000000)177 ; CHECK-NEXT: liveins: $x0, $x1, $w2178 ; CHECK-NEXT: {{ $}}179 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32common = COPY $w2180 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1181 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0182 ; CHECK-NEXT: {{ $}}183 ; CHECK-NEXT: bb.1:184 ; CHECK-NEXT: successors: %bb.1(0x80000000)185 ; CHECK-NEXT: {{ $}}186 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr64sp = PHI [[COPY2]], %bb.0, %4, %bb.1187 ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32common = LDRBBui [[PHI]], 0 :: (load (s8))188 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32all = COPY $wzr189 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr32 = COPY [[COPY3]]190 ; CHECK-NEXT: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY]], 4080, 12, implicit-def $nzcv191 ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 16711680192 ; CHECK-NEXT: [[CSELWr:%[0-9]+]]:gpr32common = CSELWr [[COPY]], killed [[MOVi32imm]], 11, implicit $nzcv193 ; CHECK-NEXT: [[SUBSWri1:%[0-9]+]]:gpr32 = SUBSWri [[CSELWr]], 0, 0, implicit-def $nzcv194 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32 = COPY $wzr195 ; CHECK-NEXT: [[CSELWr1:%[0-9]+]]:gpr32 = CSELWr [[CSELWr]], [[COPY5]], 12, implicit $nzcv196 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr32 = COPY [[CSELWr1]]197 ; CHECK-NEXT: [[SUBSWri2:%[0-9]+]]:gpr32 = SUBSWri [[COPY]], 0, 0, implicit-def $nzcv198 ; CHECK-NEXT: [[CSELWr2:%[0-9]+]]:gpr32 = CSELWr [[COPY]], [[COPY5]], 12, implicit $nzcv199 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr32 = COPY [[CSELWr2]]200 ; CHECK-NEXT: $wzr = SUBSWri [[LDRBBui]], 0, 0, implicit-def $nzcv201 ; CHECK-NEXT: [[CSELWr3:%[0-9]+]]:gpr32 = CSELWr [[COPY4]], [[COPY6]], 0, implicit $nzcv202 ; CHECK-NEXT: $wzr = SUBSWri [[LDRBBui]], 0, 0, implicit-def $nzcv203 ; CHECK-NEXT: [[CSELWr4:%[0-9]+]]:gpr32 = CSELWr [[COPY4]], [[COPY7]], 0, implicit $nzcv204 ; CHECK-NEXT: STRBBui [[CSELWr4]], [[COPY1]], 0 :: (store (s8))205 ; CHECK-NEXT: early-clobber %20:gpr64sp = STRBBpost [[CSELWr3]], [[PHI]], 1 :: (store (s8))206 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64all = COPY %20207 ; CHECK-NEXT: B %bb.1208 bb.0:209 liveins: $x0, $x1, $w2210 211 %8:gpr32common = COPY $w2212 %7:gpr64common = COPY $x1213 %6:gpr64 = COPY $x0214 215 bb.1:216 successors: %bb.3(0x30000000), %bb.2(0x50000000)217 218 %0:gpr64sp = PHI %6, %bb.0, %5, %bb.3219 %11:gpr32 = LDRBBui %0, 0 :: (load (s8))220 %12:gpr32all = COPY $wzr221 %10:gpr32all = COPY %12222 CBZW killed %11, %bb.3223 B %bb.2224 225 bb.2:226 %13:gpr32 = SUBSWri %8, 4080, 12, implicit-def $nzcv227 %14:gpr32 = MOVi32imm 16711680228 %15:gpr32common = CSELWr %8, killed %14, 11, implicit $nzcv229 %16:gpr32 = SUBSWri %15, 0, 0, implicit-def $nzcv230 %17:gpr32 = COPY $wzr231 %18:gpr32 = CSELWr %15, %17, 12, implicit $nzcv232 %1:gpr32all = COPY %18233 %19:gpr32 = SUBSWri %8, 0, 0, implicit-def $nzcv234 %20:gpr32 = CSELWr %8, %17, 12, implicit $nzcv235 %2:gpr32all = COPY %20236 237 bb.3:238 %3:gpr32 = PHI %10, %bb.1, %1, %bb.2239 %4:gpr32 = PHI %10, %bb.1, %2, %bb.2240 STRBBui %4, %7, 0 :: (store (s8))241 early-clobber %21:gpr64sp = STRBBpost %3, %0, 1 :: (store (s8))242 %5:gpr64all = COPY %21243 B %bb.1244 245...246