457 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3---4name: add5tracksRegLiveness: true6body: |7 bb.1:8 liveins: $s09 10 ; CHECK-LABEL: name: add11 ; CHECK: liveins: $s012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s014 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 115 ; CHECK-NEXT: %add:_(s32) = G_ADD [[COPY]], %cst16 ; CHECK-NEXT: $s0 = COPY %add(s32)17 ; CHECK-NEXT: RET_ReallyLR18 %0:_(s32) = COPY $s019 %cst:_(s32) = G_CONSTANT i32 120 %add:_(s32) = G_ADD %cst, %021 $s0 = COPY %add22 RET_ReallyLR23 24...25---26name: mul27tracksRegLiveness: true28body: |29 bb.1:30 liveins: $s031 32 ; CHECK-LABEL: name: mul33 ; CHECK: liveins: $s034 ; CHECK-NEXT: {{ $}}35 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s036 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 337 ; CHECK-NEXT: %mul:_(s32) = G_MUL [[COPY]], %cst38 ; CHECK-NEXT: $s0 = COPY %mul(s32)39 ; CHECK-NEXT: RET_ReallyLR40 %0:_(s32) = COPY $s041 %cst:_(s32) = G_CONSTANT i32 342 %mul:_(s32) = G_MUL %cst, %043 $s0 = COPY %mul44 RET_ReallyLR45...46---47name: and48tracksRegLiveness: true49body: |50 bb.1:51 liveins: $s052 53 ; CHECK-LABEL: name: and54 ; CHECK: liveins: $s055 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s057 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 558 ; CHECK-NEXT: %and:_(s32) = G_AND [[COPY]], %cst59 ; CHECK-NEXT: $s0 = COPY %and(s32)60 ; CHECK-NEXT: RET_ReallyLR61 %0:_(s32) = COPY $s062 %cst:_(s32) = G_CONSTANT i32 563 %and:_(s32) = G_AND %cst, %064 $s0 = COPY %and65 RET_ReallyLR66...67---68name: or69tracksRegLiveness: true70body: |71 bb.1:72 liveins: $s073 74 ; CHECK-LABEL: name: or75 ; CHECK: liveins: $s076 ; CHECK-NEXT: {{ $}}77 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s078 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 579 ; CHECK-NEXT: %or:_(s32) = G_OR [[COPY]], %cst80 ; CHECK-NEXT: $s0 = COPY %or(s32)81 ; CHECK-NEXT: RET_ReallyLR82 %0:_(s32) = COPY $s083 %cst:_(s32) = G_CONSTANT i32 584 %or:_(s32) = G_OR %cst, %085 $s0 = COPY %or86 RET_ReallyLR87...88---89name: xor90tracksRegLiveness: true91body: |92 bb.1:93 liveins: $s094 95 ; CHECK-LABEL: name: xor96 ; CHECK: liveins: $s097 ; CHECK-NEXT: {{ $}}98 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s099 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 5100 ; CHECK-NEXT: %xor:_(s32) = G_XOR [[COPY]], %cst101 ; CHECK-NEXT: $s0 = COPY %xor(s32)102 ; CHECK-NEXT: RET_ReallyLR103 %0:_(s32) = COPY $s0104 %cst:_(s32) = G_CONSTANT i32 5105 %xor:_(s32) = G_XOR %cst, %0106 $s0 = COPY %xor107 RET_ReallyLR108...109---110name: smin111tracksRegLiveness: true112body: |113 bb.1:114 liveins: $s0115 116 ; CHECK-LABEL: name: smin117 ; CHECK: liveins: $s0118 ; CHECK-NEXT: {{ $}}119 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0120 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 10121 ; CHECK-NEXT: %min:_(s32) = G_SMIN [[COPY]], %cst122 ; CHECK-NEXT: $s0 = COPY %min(s32)123 ; CHECK-NEXT: RET_ReallyLR124 %0:_(s32) = COPY $s0125 %cst:_(s32) = G_CONSTANT i32 10126 %min:_(s32) = G_SMIN %cst, %0127 $s0 = COPY %min128 RET_ReallyLR129...130---131name: smax132tracksRegLiveness: true133body: |134 bb.1:135 liveins: $s0136 137 ; CHECK-LABEL: name: smax138 ; CHECK: liveins: $s0139 ; CHECK-NEXT: {{ $}}140 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0141 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 10142 ; CHECK-NEXT: %max:_(s32) = G_SMAX [[COPY]], %cst143 ; CHECK-NEXT: $s0 = COPY %max(s32)144 ; CHECK-NEXT: RET_ReallyLR145 %0:_(s32) = COPY $s0146 %cst:_(s32) = G_CONSTANT i32 10147 %max:_(s32) = G_SMAX %cst, %0148 $s0 = COPY %max149 RET_ReallyLR150...151---152name: umin153tracksRegLiveness: true154body: |155 bb.1:156 liveins: $s0157 158 ; CHECK-LABEL: name: umin159 ; CHECK: liveins: $s0160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0162 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 10163 ; CHECK-NEXT: %min:_(s32) = G_UMIN [[COPY]], %cst164 ; CHECK-NEXT: $s0 = COPY %min(s32)165 ; CHECK-NEXT: RET_ReallyLR166 %0:_(s32) = COPY $s0167 %cst:_(s32) = G_CONSTANT i32 10168 %min:_(s32) = G_UMIN %cst, %0169 $s0 = COPY %min170 RET_ReallyLR171...172---173name: umax174tracksRegLiveness: true175body: |176 bb.1:177 liveins: $s0178 179 ; CHECK-LABEL: name: umax180 ; CHECK: liveins: $s0181 ; CHECK-NEXT: {{ $}}182 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0183 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 10184 ; CHECK-NEXT: %max:_(s32) = G_UMAX [[COPY]], %cst185 ; CHECK-NEXT: $s0 = COPY %max(s32)186 ; CHECK-NEXT: RET_ReallyLR187 %0:_(s32) = COPY $s0188 %cst:_(s32) = G_CONSTANT i32 10189 %max:_(s32) = G_UMAX %cst, %0190 $s0 = COPY %max191 RET_ReallyLR192...193---194name: uaddo195tracksRegLiveness: true196body: |197 bb.1:198 liveins: $s0199 200 ; CHECK-LABEL: name: uaddo201 ; CHECK: liveins: $s0202 ; CHECK-NEXT: {{ $}}203 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0204 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1205 ; CHECK-NEXT: %add:_(s32), %overflow:_(s1) = G_UADDO [[COPY]], %cst206 ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)207 ; CHECK-NEXT: $s0 = COPY %ret(s32)208 ; CHECK-NEXT: RET_ReallyLR209 %0:_(s32) = COPY $s0210 %cst:_(s32) = G_CONSTANT i32 1211 %add:_(s32), %overflow:_(s1) = G_UADDO %cst, %0212 %ret:_(s32) = G_ANYEXT %overflow213 $s0 = COPY %ret214 RET_ReallyLR215 216...217---218name: saddo219tracksRegLiveness: true220body: |221 bb.1:222 liveins: $s0223 224 ; CHECK-LABEL: name: saddo225 ; CHECK: liveins: $s0226 ; CHECK-NEXT: {{ $}}227 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0228 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1229 ; CHECK-NEXT: %add:_(s32), %overflow:_(s1) = G_SADDO [[COPY]], %cst230 ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)231 ; CHECK-NEXT: $s0 = COPY %ret(s32)232 ; CHECK-NEXT: RET_ReallyLR233 %0:_(s32) = COPY $s0234 %cst:_(s32) = G_CONSTANT i32 1235 %add:_(s32), %overflow:_(s1) = G_SADDO %cst, %0236 %ret:_(s32) = G_ANYEXT %overflow237 $s0 = COPY %ret238 RET_ReallyLR239 240...241---242name: umulo243tracksRegLiveness: true244body: |245 bb.1:246 liveins: $s0247 248 ; CHECK-LABEL: name: umulo249 ; CHECK: liveins: $s0250 ; CHECK-NEXT: {{ $}}251 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0252 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3253 ; CHECK-NEXT: %mul:_(s32), %overflow:_(s1) = G_UMULO [[COPY]], %cst254 ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)255 ; CHECK-NEXT: $s0 = COPY %ret(s32)256 ; CHECK-NEXT: RET_ReallyLR257 %0:_(s32) = COPY $s0258 %cst:_(s32) = G_CONSTANT i32 3259 %mul:_(s32), %overflow:_(s1) = G_UMULO %cst, %0260 %ret:_(s32) = G_ANYEXT %overflow261 $s0 = COPY %ret262 RET_ReallyLR263...264---265name: smulo266tracksRegLiveness: true267body: |268 bb.1:269 liveins: $s0270 271 ; CHECK-LABEL: name: smulo272 ; CHECK: liveins: $s0273 ; CHECK-NEXT: {{ $}}274 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0275 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3276 ; CHECK-NEXT: %mul:_(s32), %overflow:_(s1) = G_SMULO [[COPY]], %cst277 ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)278 ; CHECK-NEXT: $s0 = COPY %ret(s32)279 ; CHECK-NEXT: RET_ReallyLR280 %0:_(s32) = COPY $s0281 %cst:_(s32) = G_CONSTANT i32 3282 %mul:_(s32), %overflow:_(s1) = G_SMULO %cst, %0283 %ret:_(s32) = G_ANYEXT %overflow284 $s0 = COPY %ret285 RET_ReallyLR286...287---288name: umulh289tracksRegLiveness: true290body: |291 bb.1:292 liveins: $s0293 294 ; CHECK-LABEL: name: umulh295 ; CHECK: liveins: $s0296 ; CHECK-NEXT: {{ $}}297 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0298 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3299 ; CHECK-NEXT: %mul:_(s32) = G_UMULH [[COPY]], %cst300 ; CHECK-NEXT: $s0 = COPY %mul(s32)301 ; CHECK-NEXT: RET_ReallyLR302 %0:_(s32) = COPY $s0303 %cst:_(s32) = G_CONSTANT i32 3304 %mul:_(s32) = G_UMULH %cst, %0305 $s0 = COPY %mul306 RET_ReallyLR307...308---309name: smulh310tracksRegLiveness: true311body: |312 bb.1:313 liveins: $s0314 315 ; CHECK-LABEL: name: smulh316 ; CHECK: liveins: $s0317 ; CHECK-NEXT: {{ $}}318 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0319 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3320 ; CHECK-NEXT: %mul:_(s32) = G_UMULH [[COPY]], %cst321 ; CHECK-NEXT: $s0 = COPY %mul(s32)322 ; CHECK-NEXT: RET_ReallyLR323 %0:_(s32) = COPY $s0324 %cst:_(s32) = G_CONSTANT i32 3325 %mul:_(s32) = G_UMULH %cst, %0326 $s0 = COPY %mul327 RET_ReallyLR328...329---330name: uaddsat331tracksRegLiveness: true332body: |333 bb.1:334 liveins: $s0335 336 ; CHECK-LABEL: name: uaddsat337 ; CHECK: liveins: $s0338 ; CHECK-NEXT: {{ $}}339 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0340 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1341 ; CHECK-NEXT: %add:_(s32) = G_UADDSAT [[COPY]], %cst342 ; CHECK-NEXT: $s0 = COPY %add(s32)343 ; CHECK-NEXT: RET_ReallyLR344 %0:_(s32) = COPY $s0345 %cst:_(s32) = G_CONSTANT i32 1346 %add:_(s32) = G_UADDSAT %cst, %0347 $s0 = COPY %add348 RET_ReallyLR349 350...351---352name: saddsat353tracksRegLiveness: true354body: |355 bb.1:356 liveins: $s0357 358 ; CHECK-LABEL: name: saddsat359 ; CHECK: liveins: $s0360 ; CHECK-NEXT: {{ $}}361 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0362 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1363 ; CHECK-NEXT: %add:_(s32) = G_SADDSAT [[COPY]], %cst364 ; CHECK-NEXT: $s0 = COPY %add(s32)365 ; CHECK-NEXT: RET_ReallyLR366 %0:_(s32) = COPY $s0367 %cst:_(s32) = G_CONSTANT i32 1368 %add:_(s32) = G_SADDSAT %cst, %0369 $s0 = COPY %add370 RET_ReallyLR371 372...373---374name: smulfix375tracksRegLiveness: true376body: |377 bb.1:378 liveins: $s0379 380 ; CHECK-LABEL: name: smulfix381 ; CHECK: liveins: $s0382 ; CHECK-NEXT: {{ $}}383 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0384 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3385 ; CHECK-NEXT: %mul:_(s32) = G_SMULFIX [[COPY]], %cst, 7386 ; CHECK-NEXT: $s0 = COPY %mul(s32)387 ; CHECK-NEXT: RET_ReallyLR388 %0:_(s32) = COPY $s0389 %cst:_(s32) = G_CONSTANT i32 3390 %mul:_(s32) = G_SMULFIX %cst, %0, 7391 $s0 = COPY %mul392 RET_ReallyLR393...394---395name: umulfix396tracksRegLiveness: true397body: |398 bb.1:399 liveins: $s0400 401 ; CHECK-LABEL: name: umulfix402 ; CHECK: liveins: $s0403 ; CHECK-NEXT: {{ $}}404 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0405 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3406 ; CHECK-NEXT: %mul:_(s32) = G_UMULFIX [[COPY]], %cst, 7407 ; CHECK-NEXT: $s0 = COPY %mul(s32)408 ; CHECK-NEXT: RET_ReallyLR409 %0:_(s32) = COPY $s0410 %cst:_(s32) = G_CONSTANT i32 3411 %mul:_(s32) = G_UMULFIX %cst, %0, 7412 $s0 = COPY %mul413 RET_ReallyLR414...415---416name: smulfixsat417tracksRegLiveness: true418body: |419 bb.1:420 liveins: $s0421 422 ; CHECK-LABEL: name: smulfixsat423 ; CHECK: liveins: $s0424 ; CHECK-NEXT: {{ $}}425 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0426 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3427 ; CHECK-NEXT: %mul:_(s32) = G_SMULFIXSAT [[COPY]], %cst, 7428 ; CHECK-NEXT: $s0 = COPY %mul(s32)429 ; CHECK-NEXT: RET_ReallyLR430 %0:_(s32) = COPY $s0431 %cst:_(s32) = G_CONSTANT i32 3432 %mul:_(s32) = G_SMULFIXSAT %cst, %0, 7433 $s0 = COPY %mul434 RET_ReallyLR435...436---437name: umulfixsat438tracksRegLiveness: true439body: |440 bb.1:441 liveins: $s0442 443 ; CHECK-LABEL: name: umulfixsat444 ; CHECK: liveins: $s0445 ; CHECK-NEXT: {{ $}}446 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0447 ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 3448 ; CHECK-NEXT: %mul:_(s32) = G_UMULFIXSAT [[COPY]], %cst, 7449 ; CHECK-NEXT: $s0 = COPY %mul(s32)450 ; CHECK-NEXT: RET_ReallyLR451 %0:_(s32) = COPY $s0452 %cst:_(s32) = G_CONSTANT i32 3453 %mul:_(s32) = G_UMULFIXSAT %cst, %0, 7454 $s0 = COPY %mul455 RET_ReallyLR456...457