350 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64 -run-pass=peephole-opt -verify-machineinstrs %s -o - | FileCheck %s3# RUN: llc -mtriple=aarch64 -passes=peephole-opt -verify-machineinstrs %s -o - | FileCheck %s4---5name: remove_subswr_after_csincwr6tracksRegLiveness: true7body: |8 ; CHECK-LABEL: name: remove_subswr_after_csincwr9 ; CHECK: bb.0:10 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)11 ; CHECK: liveins: $x112 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x113 ; CHECK: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF14 ; CHECK: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr killed [[DEF]], [[COPY]], implicit-def $nzcv15 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv16 ; CHECK: Bcc 1, %bb.2, implicit $nzcv17 ; CHECK: B %bb.118 ; CHECK: bb.1:19 ; CHECK: successors: %bb.2(0x80000000)20 ; CHECK: B %bb.221 ; CHECK: bb.2:22 ; CHECK: RET_ReallyLR23 bb.0:24 liveins: $x125 successors: %bb.1(0x40000000), %bb.2(0x40000000)26 %1:gpr64common = COPY $x127 %2:gpr64 = IMPLICIT_DEF28 %3:gpr64 = SUBSXrr killed %2:gpr64, %1:gpr64common, implicit-def $nzcv29 %4:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv30 %5:gpr32 = SUBSWri killed %4:gpr32common, 1, 0, implicit-def $nzcv31 Bcc 1, %bb.2, implicit $nzcv32 B %bb.133 34 bb.1:35 successors: %bb.2(0x80000000)36 B %bb.237 38 bb.2:39 RET_ReallyLR40 41...42---43name: remove_subsxr_after_csincxr_invertcc44tracksRegLiveness: true45body: |46 ; CHECK-LABEL: name: remove_subsxr_after_csincxr_invertcc47 ; CHECK: bb.0:48 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)49 ; CHECK: liveins: $x150 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x151 ; CHECK: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF52 ; CHECK: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr killed [[DEF]], [[COPY]], implicit-def $nzcv53 ; CHECK: [[CSINCXr:%[0-9]+]]:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv54 ; CHECK: Bcc 1, %bb.2, implicit $nzcv55 ; CHECK: B %bb.156 ; CHECK: bb.1:57 ; CHECK: successors: %bb.2(0x80000000)58 ; CHECK: B %bb.259 ; CHECK: bb.2:60 ; CHECK: RET_ReallyLR61 bb.0:62 liveins: $x163 successors: %bb.1(0x40000000), %bb.2(0x40000000)64 %1:gpr64common = COPY $x165 %2:gpr64 = IMPLICIT_DEF66 %3:gpr64 = SUBSXrr killed %2:gpr64, %1:gpr64common, implicit-def $nzcv67 %4:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv68 %5:gpr64 = SUBSXri killed %4:gpr64common, 0, 0, implicit-def $nzcv69 Bcc 0, %bb.2, implicit $nzcv70 B %bb.171 72 bb.1:73 successors: %bb.2(0x80000000)74 B %bb.275 76 bb.2:77 RET_ReallyLR78 79...80---81name: cflags_alive_in_succs82tracksRegLiveness: true83body: |84 ; CHECK-LABEL: name: cflags_alive_in_succs85 ; CHECK: bb.0:86 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)87 ; CHECK: liveins: $nzcv88 ; CHECK: [[CSINCXr:%[0-9]+]]:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv89 ; CHECK: [[ADDSXri:%[0-9]+]]:gpr64 = ADDSXri killed [[CSINCXr]], 0, 0, implicit-def $nzcv90 ; CHECK: Bcc 0, %bb.2, implicit $nzcv91 ; CHECK: B %bb.192 ; CHECK: bb.1:93 ; CHECK: successors: %bb.2(0x80000000)94 ; CHECK: liveins: $nzcv95 ; CHECK: B %bb.296 ; CHECK: bb.2:97 ; CHECK: RET_ReallyLR98 bb.0:99 liveins: $nzcv100 successors: %bb.1(0x40000000), %bb.2(0x40000000)101 %1:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv102 %2:gpr64 = ADDSXri killed %1:gpr64common, 0, 0, implicit-def $nzcv103 Bcc 0, %bb.2, implicit $nzcv104 B %bb.1105 106 bb.1:107 liveins: $nzcv108 successors: %bb.2(0x80000000)109 B %bb.2110 111 bb.2:112 RET_ReallyLR113 114...115---116name: nz_used_after_cmp117tracksRegLiveness: true118body: |119 ; CHECK-LABEL: name: nz_used_after_cmp120 ; CHECK: bb.0:121 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)122 ; CHECK: liveins: $nzcv123 ; CHECK: [[CSINCXr:%[0-9]+]]:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv124 ; CHECK: [[ADDSXri:%[0-9]+]]:gpr64 = ADDSXri killed [[CSINCXr]], 0, 0, implicit-def $nzcv125 ; CHECK: Bcc 4, %bb.2, implicit $nzcv126 ; CHECK: B %bb.1127 ; CHECK: bb.1:128 ; CHECK: successors: %bb.2(0x80000000)129 ; CHECK: B %bb.2130 ; CHECK: bb.2:131 ; CHECK: RET_ReallyLR132 bb.0:133 liveins: $nzcv134 successors: %bb.1(0x40000000), %bb.2(0x40000000)135 %1:gpr64common = CSINCXr $xzr, $xzr, 1, implicit $nzcv136 %2:gpr64 = ADDSXri killed %1:gpr64common, 0, 0, implicit-def $nzcv137 Bcc 4, %bb.2, implicit $nzcv138 B %bb.1139 140 bb.1:141 successors: %bb.2(0x80000000)142 B %bb.2143 144 bb.2:145 RET_ReallyLR146 147...148---149name: remove_addswr_after_csincwr_invertcc150tracksRegLiveness: true151body: |152 ; CHECK-LABEL: name: remove_addswr_after_csincwr_invertcc153 ; CHECK: bb.0:154 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)155 ; CHECK: liveins: $nzcv156 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv157 ; CHECK: Bcc 0, %bb.2, implicit $nzcv158 ; CHECK: B %bb.1159 ; CHECK: bb.1:160 ; CHECK: successors: %bb.2(0x80000000)161 ; CHECK: B %bb.2162 ; CHECK: bb.2:163 ; CHECK: RET_ReallyLR164 bb.0:165 liveins: $nzcv166 successors: %bb.1(0x40000000), %bb.2(0x40000000)167 %1:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv168 %2:gpr32 = ADDSWri killed %1:gpr32common, 0, 0, implicit-def $nzcv169 Bcc 1, %bb.2, implicit $nzcv170 B %bb.1171 172 bb.1:173 successors: %bb.2(0x80000000)174 B %bb.2175 176 bb.2:177 RET_ReallyLR178 179...180---181name: cv_used_after_cmp182tracksRegLiveness: true183body: |184 ; CHECK-LABEL: name: cv_used_after_cmp185 ; CHECK: bb.0:186 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)187 ; CHECK: liveins: $nzcv188 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv189 ; CHECK: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri killed [[CSINCWr]], 0, 0, implicit-def $nzcv190 ; CHECK: Bcc 2, %bb.2, implicit $nzcv191 ; CHECK: B %bb.1192 ; CHECK: bb.1:193 ; CHECK: successors: %bb.2(0x80000000)194 ; CHECK: B %bb.2195 ; CHECK: bb.2:196 ; CHECK: RET_ReallyLR197 bb.0:198 liveins: $nzcv199 successors: %bb.1(0x40000000), %bb.2(0x40000000)200 %1:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv201 %2:gpr32 = SUBSWri killed %1:gpr32common, 0, 0, implicit-def $nzcv202 Bcc 2, %bb.2, implicit $nzcv203 B %bb.1204 205 bb.1:206 successors: %bb.2(0x80000000)207 B %bb.2208 209 bb.2:210 RET_ReallyLR211 212...213---214name: csinc_add0215tracksRegLiveness: true216body: |217 ; CHECK-LABEL: name: csinc_add0218 ; CHECK: bb.0:219 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)220 ; CHECK: liveins: $nzcv221 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 4, implicit $nzcv222 ; CHECK: [[ADDSWri:%[0-9]+]]:gpr32 = ADDSWri killed [[CSINCWr]], 0, 0, implicit-def $nzcv223 ; CHECK: Bcc 1, %bb.2, implicit $nzcv224 ; CHECK: B %bb.1225 ; CHECK: bb.1:226 ; CHECK: successors: %bb.2(0x80000000)227 ; CHECK: B %bb.2228 ; CHECK: bb.2:229 ; CHECK: RET_ReallyLR230 bb.0:231 liveins: $nzcv232 successors: %bb.1(0x40000000), %bb.2(0x40000000)233 %1:gpr32common = CSINCWr $wzr, $wzr, 4, implicit $nzcv234 %2:gpr32 = ADDSWri killed %1:gpr32common, 0, 0, implicit-def $nzcv235 Bcc 1, %bb.2, implicit $nzcv236 B %bb.1237 238 bb.1:239 successors: %bb.2(0x80000000)240 B %bb.2241 242 bb.2:243 RET_ReallyLR244 245...246---247name: remove_subs1_after_csincN_invertcc248tracksRegLiveness: true249body: |250 ; CHECK-LABEL: name: remove_subs1_after_csincN_invertcc251 ; CHECK: bb.0:252 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)253 ; CHECK: liveins: $nzcv254 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 5, implicit $nzcv255 ; CHECK: Bcc 5, %bb.2, implicit $nzcv256 ; CHECK: B %bb.1257 ; CHECK: bb.1:258 ; CHECK: successors: %bb.2(0x80000000)259 ; CHECK: B %bb.2260 ; CHECK: bb.2:261 ; CHECK: RET_ReallyLR262 bb.0:263 liveins: $nzcv264 successors: %bb.1(0x40000000), %bb.2(0x40000000)265 %1:gpr32common = CSINCWr $wzr, $wzr, 5, implicit $nzcv266 %2:gpr32 = SUBSWri killed %1:gpr32common, 1, 0, implicit-def $nzcv267 Bcc 4, %bb.2, implicit $nzcv268 B %bb.1269 270 bb.1:271 successors: %bb.2(0x80000000)272 B %bb.2273 274 bb.2:275 RET_ReallyLR276 277...278---279name: csinc_wrong_cc280tracksRegLiveness: true281body: |282 ; CHECK-LABEL: name: csinc_wrong_cc283 ; CHECK: bb.0:284 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)285 ; CHECK: liveins: $nzcv286 ; CHECK: [[CSINCXr:%[0-9]+]]:gpr64common = CSINCXr $xzr, $xzr, 2, implicit $nzcv287 ; CHECK: [[SUBSXri:%[0-9]+]]:gpr64 = SUBSXri killed [[CSINCXr]], 1, 0, implicit-def $nzcv288 ; CHECK: Bcc 0, %bb.2, implicit $nzcv289 ; CHECK: B %bb.1290 ; CHECK: bb.1:291 ; CHECK: successors: %bb.2(0x80000000)292 ; CHECK: B %bb.2293 ; CHECK: bb.2:294 ; CHECK: RET_ReallyLR295 bb.0:296 liveins: $nzcv297 successors: %bb.1(0x40000000), %bb.2(0x40000000)298 %1:gpr64common = CSINCXr $xzr, $xzr, 2, implicit $nzcv299 %2:gpr64 = SUBSXri killed %1:gpr64common, 1, 0, implicit-def $nzcv300 Bcc 0, %bb.2, implicit $nzcv301 B %bb.1302 303 bb.1:304 successors: %bb.2(0x80000000)305 B %bb.2306 307 bb.2:308 RET_ReallyLR309 310...311---312name: subswr_wrong_cmp_value313tracksRegLiveness: true314body: |315 ; CHECK-LABEL: name: subswr_wrong_cmp_value316 ; CHECK: bb.0:317 ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)318 ; CHECK: liveins: $x1319 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x1320 ; CHECK: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF321 ; CHECK: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr killed [[DEF]], [[COPY]], implicit-def $nzcv322 ; CHECK: [[CSINCWr:%[0-9]+]]:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv323 ; CHECK: [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri killed [[CSINCWr]], 3, 0, implicit-def $nzcv324 ; CHECK: Bcc 1, %bb.2, implicit $nzcv325 ; CHECK: B %bb.1326 ; CHECK: bb.1:327 ; CHECK: successors: %bb.2(0x80000000)328 ; CHECK: B %bb.2329 ; CHECK: bb.2:330 ; CHECK: RET_ReallyLR331 bb.0:332 liveins: $x1333 successors: %bb.1(0x40000000), %bb.2(0x40000000)334 %1:gpr64common = COPY $x1335 %2:gpr64 = IMPLICIT_DEF336 %3:gpr64 = SUBSXrr killed %2:gpr64, %1:gpr64common, implicit-def $nzcv337 %4:gpr32common = CSINCWr $wzr, $wzr, 1, implicit $nzcv338 %5:gpr32 = SUBSWri killed %4:gpr32common, 3, 0, implicit-def $nzcv339 Bcc 1, %bb.2, implicit $nzcv340 B %bb.1341 342 bb.1:343 successors: %bb.2(0x80000000)344 B %bb.2345 346 bb.2:347 RET_ReallyLR348 349...350