1245 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3# REQUIRES: asserts4 5 6---7name: valid_and_eq_0_eq_0_s328tracksRegLiveness: true9legalized: true10body: |11 bb.0:12 liveins: $w0, $w113 14 ; CHECK-LABEL: name: valid_and_eq_0_eq_0_s3215 ; CHECK: liveins: $w0, $w116 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: %x:_(s32) = COPY $w018 ; CHECK-NEXT: %y:_(s32) = COPY $w119 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 020 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR %x, %y21 ; CHECK-NEXT: %and:_(s1) = G_ICMP intpred(eq), [[OR]](s32), %zero22 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)23 ; CHECK-NEXT: $w0 = COPY %zext(s32)24 ; CHECK-NEXT: RET_ReallyLR implicit $w025 %x:_(s32) = COPY $w026 %y:_(s32) = COPY $w127 %zero:_(s32) = G_CONSTANT i32 028 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %zero:_29 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s32), %zero:_30 %and:_(s1) = G_AND %cmp1, %cmp231 %zext:_(s32) = G_ZEXT %and:_(s1)32 $w0 = COPY %zext33 RET_ReallyLR implicit $w034 35...36---37name: invalid_and_eq_1_eq_0_s3238tracksRegLiveness: true39legalized: true40body: |41 bb.0:42 liveins: $w0, $w143 44 ; CHECK-LABEL: name: invalid_and_eq_1_eq_0_s3245 ; CHECK: liveins: $w0, $w146 ; CHECK-NEXT: {{ $}}47 ; CHECK-NEXT: %x:_(s32) = COPY $w048 ; CHECK-NEXT: %y:_(s32) = COPY $w149 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 050 ; CHECK-NEXT: %one:_(s32) = G_CONSTANT i32 151 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s32), %one52 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s32), %zero53 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp254 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)55 ; CHECK-NEXT: $w0 = COPY %zext(s32)56 ; CHECK-NEXT: RET_ReallyLR implicit $w057 %x:_(s32) = COPY $w058 %y:_(s32) = COPY $w159 %zero:_(s32) = G_CONSTANT i32 060 %one:_(s32) = G_CONSTANT i32 161 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %one:_62 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s32), %zero:_63 %and:_(s1) = G_AND %cmp1, %cmp264 %zext:_(s32) = G_ZEXT %and:_(s1)65 $w0 = COPY %zext66 RET_ReallyLR implicit $w067 68...69---70name: invalid_and_eq_0_eq_1_s3271tracksRegLiveness: true72legalized: true73body: |74 bb.0:75 liveins: $w0, $w176 77 ; CHECK-LABEL: name: invalid_and_eq_0_eq_1_s3278 ; CHECK: liveins: $w0, $w179 ; CHECK-NEXT: {{ $}}80 ; CHECK-NEXT: %x:_(s32) = COPY $w081 ; CHECK-NEXT: %y:_(s32) = COPY $w182 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 083 ; CHECK-NEXT: %one:_(s32) = G_CONSTANT i32 184 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s32), %zero85 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s32), %one86 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp287 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)88 ; CHECK-NEXT: $w0 = COPY %zext(s32)89 ; CHECK-NEXT: RET_ReallyLR implicit $w090 %x:_(s32) = COPY $w091 %y:_(s32) = COPY $w192 %zero:_(s32) = G_CONSTANT i32 093 %one:_(s32) = G_CONSTANT i32 194 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %zero:_95 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s32), %one:_96 %and:_(s1) = G_AND %cmp1, %cmp297 %zext:_(s32) = G_ZEXT %and:_(s1)98 $w0 = COPY %zext99 RET_ReallyLR implicit $w0100 101...102---103name: invalid_and_ne_0_eq_0_s32104tracksRegLiveness: true105legalized: true106body: |107 bb.0:108 liveins: $w0, $w1109 110 ; CHECK-LABEL: name: invalid_and_ne_0_eq_0_s32111 ; CHECK: liveins: $w0, $w1112 ; CHECK-NEXT: {{ $}}113 ; CHECK-NEXT: %x:_(s32) = COPY $w0114 ; CHECK-NEXT: %y:_(s32) = COPY $w1115 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0116 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s32), %zero117 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s32), %zero118 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2119 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)120 ; CHECK-NEXT: $w0 = COPY %zext(s32)121 ; CHECK-NEXT: RET_ReallyLR implicit $w0122 %x:_(s32) = COPY $w0123 %y:_(s32) = COPY $w1124 %zero:_(s32) = G_CONSTANT i32 0125 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %zero:_126 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s32), %zero:_127 %and:_(s1) = G_AND %cmp1, %cmp2128 %zext:_(s32) = G_ZEXT %and:_(s1)129 $w0 = COPY %zext130 RET_ReallyLR implicit $w0131 132...133---134name: invalid_and_eq_0_ne_0_s32135tracksRegLiveness: true136legalized: true137body: |138 bb.0:139 liveins: $w0, $w1140 141 ; CHECK-LABEL: name: invalid_and_eq_0_ne_0_s32142 ; CHECK: liveins: $w0, $w1143 ; CHECK-NEXT: {{ $}}144 ; CHECK-NEXT: %x:_(s32) = COPY $w0145 ; CHECK-NEXT: %y:_(s32) = COPY $w1146 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0147 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s32), %zero148 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s32), %zero149 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2150 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)151 ; CHECK-NEXT: $w0 = COPY %zext(s32)152 ; CHECK-NEXT: RET_ReallyLR implicit $w0153 %x:_(s32) = COPY $w0154 %y:_(s32) = COPY $w1155 %zero:_(s32) = G_CONSTANT i32 0156 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %zero:_157 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %zero:_158 %and:_(s1) = G_AND %cmp1, %cmp2159 %zext:_(s32) = G_ZEXT %and:_(s1)160 $w0 = COPY %zext161 RET_ReallyLR implicit $w0162 163...164---165name: invalid_and_ne_0_ne_0_s32166tracksRegLiveness: true167legalized: true168body: |169 bb.0:170 liveins: $w0, $w1171 172 ; CHECK-LABEL: name: invalid_and_ne_0_ne_0_s32173 ; CHECK: liveins: $w0, $w1174 ; CHECK-NEXT: {{ $}}175 ; CHECK-NEXT: %x:_(s32) = COPY $w0176 ; CHECK-NEXT: %y:_(s32) = COPY $w1177 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0178 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s32), %zero179 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s32), %zero180 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2181 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %and(s1)182 ; CHECK-NEXT: $w0 = COPY %zext(s32)183 ; CHECK-NEXT: RET_ReallyLR implicit $w0184 %x:_(s32) = COPY $w0185 %y:_(s32) = COPY $w1186 %zero:_(s32) = G_CONSTANT i32 0187 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %zero:_188 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %zero:_189 %and:_(s1) = G_AND %cmp1, %cmp2190 %zext:_(s32) = G_ZEXT %and:_(s1)191 $w0 = COPY %zext192 RET_ReallyLR implicit $w0193 194...195---196name: valid_or_ne_0_ne_0_s32197tracksRegLiveness: true198legalized: true199body: |200 bb.0:201 liveins: $w0, $w1202 203 ; CHECK-LABEL: name: valid_or_ne_0_ne_0_s32204 ; CHECK: liveins: $w0, $w1205 ; CHECK-NEXT: {{ $}}206 ; CHECK-NEXT: %x:_(s32) = COPY $w0207 ; CHECK-NEXT: %y:_(s32) = COPY $w1208 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0209 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR %x, %y210 ; CHECK-NEXT: %or:_(s1) = G_ICMP intpred(ne), [[OR]](s32), %zero211 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %or(s1)212 ; CHECK-NEXT: $w0 = COPY %zext(s32)213 ; CHECK-NEXT: RET_ReallyLR implicit $w0214 %x:_(s32) = COPY $w0215 %y:_(s32) = COPY $w1216 %zero:_(s32) = G_CONSTANT i32 0217 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %zero:_218 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %zero:_219 %or:_(s1) = G_OR %cmp1, %cmp2220 %zext:_(s32) = G_ZEXT %or:_(s1)221 $w0 = COPY %zext222 RET_ReallyLR implicit $w0223 224...225---226name: invalid_or_ne_1_ne_0_s32227tracksRegLiveness: true228legalized: true229body: |230 bb.0:231 liveins: $w0, $w1232 233 ; CHECK-LABEL: name: invalid_or_ne_1_ne_0_s32234 ; CHECK: liveins: $w0, $w1235 ; CHECK-NEXT: {{ $}}236 ; CHECK-NEXT: %x:_(s32) = COPY $w0237 ; CHECK-NEXT: %y:_(s32) = COPY $w1238 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0239 ; CHECK-NEXT: %one:_(s32) = G_CONSTANT i32 1240 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s32), %one241 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s32), %zero242 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2243 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %or(s1)244 ; CHECK-NEXT: $w0 = COPY %zext(s32)245 ; CHECK-NEXT: RET_ReallyLR implicit $w0246 %x:_(s32) = COPY $w0247 %y:_(s32) = COPY $w1248 %zero:_(s32) = G_CONSTANT i32 0249 %one:_(s32) = G_CONSTANT i32 1250 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %one:_251 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %zero:_252 %or:_(s1) = G_OR %cmp1, %cmp2253 %zext:_(s32) = G_ZEXT %or:_(s1)254 $w0 = COPY %zext255 RET_ReallyLR implicit $w0256 257...258---259name: invalid_or_ne_0_ne_1_s32260tracksRegLiveness: true261legalized: true262body: |263 bb.0:264 liveins: $w0, $w1265 266 ; CHECK-LABEL: name: invalid_or_ne_0_ne_1_s32267 ; CHECK: liveins: $w0, $w1268 ; CHECK-NEXT: {{ $}}269 ; CHECK-NEXT: %x:_(s32) = COPY $w0270 ; CHECK-NEXT: %y:_(s32) = COPY $w1271 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0272 ; CHECK-NEXT: %one:_(s32) = G_CONSTANT i32 1273 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s32), %zero274 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s32), %one275 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2276 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %or(s1)277 ; CHECK-NEXT: $w0 = COPY %zext(s32)278 ; CHECK-NEXT: RET_ReallyLR implicit $w0279 %x:_(s32) = COPY $w0280 %y:_(s32) = COPY $w1281 %zero:_(s32) = G_CONSTANT i32 0282 %one:_(s32) = G_CONSTANT i32 1283 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %zero:_284 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %one:_285 %or:_(s1) = G_OR %cmp1, %cmp2286 %zext:_(s32) = G_ZEXT %or:_(s1)287 $w0 = COPY %zext288 RET_ReallyLR implicit $w0289 290...291---292name: invalid_or_eq_0_ne_0_s32293tracksRegLiveness: true294legalized: true295body: |296 bb.0:297 liveins: $w0, $w1298 299 ; CHECK-LABEL: name: invalid_or_eq_0_ne_0_s32300 ; CHECK: liveins: $w0, $w1301 ; CHECK-NEXT: {{ $}}302 ; CHECK-NEXT: %x:_(s32) = COPY $w0303 ; CHECK-NEXT: %y:_(s32) = COPY $w1304 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0305 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s32), %zero306 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s32), %zero307 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2308 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %or(s1)309 ; CHECK-NEXT: $w0 = COPY %zext(s32)310 ; CHECK-NEXT: RET_ReallyLR implicit $w0311 %x:_(s32) = COPY $w0312 %y:_(s32) = COPY $w1313 %zero:_(s32) = G_CONSTANT i32 0314 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %zero:_315 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s32), %zero:_316 %or:_(s1) = G_OR %cmp1, %cmp2317 %zext:_(s32) = G_ZEXT %or:_(s1)318 $w0 = COPY %zext319 RET_ReallyLR implicit $w0320 321...322---323name: invalid_or_ne_0_eq_0_s32324tracksRegLiveness: true325legalized: true326body: |327 bb.0:328 liveins: $w0, $w1329 330 ; CHECK-LABEL: name: invalid_or_ne_0_eq_0_s32331 ; CHECK: liveins: $w0, $w1332 ; CHECK-NEXT: {{ $}}333 ; CHECK-NEXT: %x:_(s32) = COPY $w0334 ; CHECK-NEXT: %y:_(s32) = COPY $w1335 ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 0336 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s32), %zero337 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s32), %zero338 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2339 ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %or(s1)340 ; CHECK-NEXT: $w0 = COPY %zext(s32)341 ; CHECK-NEXT: RET_ReallyLR implicit $w0342 %x:_(s32) = COPY $w0343 %y:_(s32) = COPY $w1344 %zero:_(s32) = G_CONSTANT i32 0345 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s32), %zero:_346 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s32), %zero:_347 %or:_(s1) = G_OR %cmp1, %cmp2348 %zext:_(s32) = G_ZEXT %or:_(s1)349 $w0 = COPY %zext350 RET_ReallyLR implicit $w0351 352...353 354---355name: valid_and_eq_0_eq_0_s64356tracksRegLiveness: true357legalized: true358body: |359 bb.0:360 liveins: $x0, $x1361 362 ; CHECK-LABEL: name: valid_and_eq_0_eq_0_s64363 ; CHECK: liveins: $x0, $x1364 ; CHECK-NEXT: {{ $}}365 ; CHECK-NEXT: %x:_(s64) = COPY $x0366 ; CHECK-NEXT: %y:_(s64) = COPY $x1367 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0368 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR %x, %y369 ; CHECK-NEXT: %and:_(s1) = G_ICMP intpred(eq), [[OR]](s64), %zero370 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)371 ; CHECK-NEXT: $x0 = COPY %zext(s64)372 ; CHECK-NEXT: RET_ReallyLR implicit $x0373 %x:_(s64) = COPY $x0374 %y:_(s64) = COPY $x1375 %zero:_(s64) = G_CONSTANT i64 0376 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s64), %zero:_377 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %zero:_378 %and:_(s1) = G_AND %cmp1, %cmp2379 %zext:_(s64) = G_ZEXT %and:_(s1)380 $x0 = COPY %zext381 RET_ReallyLR implicit $x0382 383...384---385name: invalid_and_eq_1_eq_0_s64386tracksRegLiveness: true387legalized: true388body: |389 bb.0:390 liveins: $x0, $x1391 392 ; CHECK-LABEL: name: invalid_and_eq_1_eq_0_s64393 ; CHECK: liveins: $x0, $x1394 ; CHECK-NEXT: {{ $}}395 ; CHECK-NEXT: %x:_(s64) = COPY $x0396 ; CHECK-NEXT: %y:_(s64) = COPY $x1397 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0398 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 1399 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s64), %one400 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s64), %zero401 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2402 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)403 ; CHECK-NEXT: $x0 = COPY %zext(s64)404 ; CHECK-NEXT: RET_ReallyLR implicit $x0405 %x:_(s64) = COPY $x0406 %y:_(s64) = COPY $x1407 %zero:_(s64) = G_CONSTANT i64 0408 %one:_(s64) = G_CONSTANT i64 1409 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s64), %one:_410 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %zero:_411 %and:_(s1) = G_AND %cmp1, %cmp2412 %zext:_(s64) = G_ZEXT %and:_(s1)413 $x0 = COPY %zext414 RET_ReallyLR implicit $x0415 416...417---418name: invalid_and_eq_0_eq_1_s64419tracksRegLiveness: true420legalized: true421body: |422 bb.0:423 liveins: $x0, $x1424 425 ; CHECK-LABEL: name: invalid_and_eq_0_eq_1_s64426 ; CHECK: liveins: $x0, $x1427 ; CHECK-NEXT: {{ $}}428 ; CHECK-NEXT: %x:_(s64) = COPY $x0429 ; CHECK-NEXT: %y:_(s64) = COPY $x1430 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0431 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 1432 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s64), %zero433 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s64), %one434 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2435 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)436 ; CHECK-NEXT: $x0 = COPY %zext(s64)437 ; CHECK-NEXT: RET_ReallyLR implicit $x0438 %x:_(s64) = COPY $x0439 %y:_(s64) = COPY $x1440 %zero:_(s64) = G_CONSTANT i64 0441 %one:_(s64) = G_CONSTANT i64 1442 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s64), %zero:_443 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %one:_444 %and:_(s1) = G_AND %cmp1, %cmp2445 %zext:_(s64) = G_ZEXT %and:_(s1)446 $x0 = COPY %zext447 RET_ReallyLR implicit $x0448 449...450---451name: invalid_and_ne_0_eq_0_s64452tracksRegLiveness: true453legalized: true454body: |455 bb.0:456 liveins: $x0, $x1457 458 ; CHECK-LABEL: name: invalid_and_ne_0_eq_0_s64459 ; CHECK: liveins: $x0, $x1460 ; CHECK-NEXT: {{ $}}461 ; CHECK-NEXT: %x:_(s64) = COPY $x0462 ; CHECK-NEXT: %y:_(s64) = COPY $x1463 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0464 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s64), %zero465 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s64), %zero466 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2467 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)468 ; CHECK-NEXT: $x0 = COPY %zext(s64)469 ; CHECK-NEXT: RET_ReallyLR implicit $x0470 %x:_(s64) = COPY $x0471 %y:_(s64) = COPY $x1472 %zero:_(s64) = G_CONSTANT i64 0473 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %zero:_474 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %zero:_475 %and:_(s1) = G_AND %cmp1, %cmp2476 %zext:_(s64) = G_ZEXT %and:_(s1)477 $x0 = COPY %zext478 RET_ReallyLR implicit $x0479 480...481---482name: invalid_and_eq_0_ne_0_s64483tracksRegLiveness: true484legalized: true485body: |486 bb.0:487 liveins: $x0, $x1488 489 ; CHECK-LABEL: name: invalid_and_eq_0_ne_0_s64490 ; CHECK: liveins: $x0, $x1491 ; CHECK-NEXT: {{ $}}492 ; CHECK-NEXT: %x:_(s64) = COPY $x0493 ; CHECK-NEXT: %y:_(s64) = COPY $x1494 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0495 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s64), %zero496 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s64), %zero497 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2498 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)499 ; CHECK-NEXT: $x0 = COPY %zext(s64)500 ; CHECK-NEXT: RET_ReallyLR implicit $x0501 %x:_(s64) = COPY $x0502 %y:_(s64) = COPY $x1503 %zero:_(s64) = G_CONSTANT i64 0504 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s64), %zero:_505 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %zero:_506 %and:_(s1) = G_AND %cmp1, %cmp2507 %zext:_(s64) = G_ZEXT %and:_(s1)508 $x0 = COPY %zext509 RET_ReallyLR implicit $x0510 511...512---513name: invalid_and_ne_0_ne_0_s64514tracksRegLiveness: true515legalized: true516body: |517 bb.0:518 liveins: $x0, $x1519 520 ; CHECK-LABEL: name: invalid_and_ne_0_ne_0_s64521 ; CHECK: liveins: $x0, $x1522 ; CHECK-NEXT: {{ $}}523 ; CHECK-NEXT: %x:_(s64) = COPY $x0524 ; CHECK-NEXT: %y:_(s64) = COPY $x1525 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0526 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s64), %zero527 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s64), %zero528 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp2529 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)530 ; CHECK-NEXT: $x0 = COPY %zext(s64)531 ; CHECK-NEXT: RET_ReallyLR implicit $x0532 %x:_(s64) = COPY $x0533 %y:_(s64) = COPY $x1534 %zero:_(s64) = G_CONSTANT i64 0535 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %zero:_536 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %zero:_537 %and:_(s1) = G_AND %cmp1, %cmp2538 %zext:_(s64) = G_ZEXT %and:_(s1)539 $x0 = COPY %zext540 RET_ReallyLR implicit $x0541 542...543---544name: valid_or_ne_0_ne_0_s64545tracksRegLiveness: true546legalized: true547body: |548 bb.0:549 liveins: $x0, $x1550 551 ; CHECK-LABEL: name: valid_or_ne_0_ne_0_s64552 ; CHECK: liveins: $x0, $x1553 ; CHECK-NEXT: {{ $}}554 ; CHECK-NEXT: %x:_(s64) = COPY $x0555 ; CHECK-NEXT: %y:_(s64) = COPY $x1556 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0557 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR %x, %y558 ; CHECK-NEXT: %or:_(s1) = G_ICMP intpred(ne), [[OR]](s64), %zero559 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %or(s1)560 ; CHECK-NEXT: $x0 = COPY %zext(s64)561 ; CHECK-NEXT: RET_ReallyLR implicit $x0562 %x:_(s64) = COPY $x0563 %y:_(s64) = COPY $x1564 %zero:_(s64) = G_CONSTANT i64 0565 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %zero:_566 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %zero:_567 %or:_(s1) = G_OR %cmp1, %cmp2568 %zext:_(s64) = G_ZEXT %or:_(s1)569 $x0 = COPY %zext570 RET_ReallyLR implicit $x0571 572...573---574name: invalid_or_ne_1_ne_0_s64575tracksRegLiveness: true576legalized: true577body: |578 bb.0:579 liveins: $x0, $x1580 581 ; CHECK-LABEL: name: invalid_or_ne_1_ne_0_s64582 ; CHECK: liveins: $x0, $x1583 ; CHECK-NEXT: {{ $}}584 ; CHECK-NEXT: %x:_(s64) = COPY $x0585 ; CHECK-NEXT: %y:_(s64) = COPY $x1586 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0587 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 1588 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s64), %one589 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s64), %zero590 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2591 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %or(s1)592 ; CHECK-NEXT: $x0 = COPY %zext(s64)593 ; CHECK-NEXT: RET_ReallyLR implicit $x0594 %x:_(s64) = COPY $x0595 %y:_(s64) = COPY $x1596 %zero:_(s64) = G_CONSTANT i64 0597 %one:_(s64) = G_CONSTANT i64 1598 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %one:_599 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %zero:_600 %or:_(s1) = G_OR %cmp1, %cmp2601 %zext:_(s64) = G_ZEXT %or:_(s1)602 $x0 = COPY %zext603 RET_ReallyLR implicit $x0604 605...606---607name: invalid_or_ne_0_ne_1_s64608tracksRegLiveness: true609legalized: true610body: |611 bb.0:612 liveins: $x0, $x1613 614 ; CHECK-LABEL: name: invalid_or_ne_0_ne_1_s64615 ; CHECK: liveins: $x0, $x1616 ; CHECK-NEXT: {{ $}}617 ; CHECK-NEXT: %x:_(s64) = COPY $x0618 ; CHECK-NEXT: %y:_(s64) = COPY $x1619 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0620 ; CHECK-NEXT: %one:_(s64) = G_CONSTANT i64 1621 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s64), %zero622 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s64), %one623 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2624 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %or(s1)625 ; CHECK-NEXT: $x0 = COPY %zext(s64)626 ; CHECK-NEXT: RET_ReallyLR implicit $x0627 %x:_(s64) = COPY $x0628 %y:_(s64) = COPY $x1629 %zero:_(s64) = G_CONSTANT i64 0630 %one:_(s64) = G_CONSTANT i64 1631 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %zero:_632 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %one:_633 %or:_(s1) = G_OR %cmp1, %cmp2634 %zext:_(s64) = G_ZEXT %or:_(s1)635 $x0 = COPY %zext636 RET_ReallyLR implicit $x0637 638...639---640name: invalid_or_eq_0_ne_0_s64641tracksRegLiveness: true642legalized: true643body: |644 bb.0:645 liveins: $x0, $x1646 647 ; CHECK-LABEL: name: invalid_or_eq_0_ne_0_s64648 ; CHECK: liveins: $x0, $x1649 ; CHECK-NEXT: {{ $}}650 ; CHECK-NEXT: %x:_(s64) = COPY $x0651 ; CHECK-NEXT: %y:_(s64) = COPY $x1652 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0653 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s64), %zero654 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(ne), %y(s64), %zero655 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2656 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %or(s1)657 ; CHECK-NEXT: $x0 = COPY %zext(s64)658 ; CHECK-NEXT: RET_ReallyLR implicit $x0659 %x:_(s64) = COPY $x0660 %y:_(s64) = COPY $x1661 %zero:_(s64) = G_CONSTANT i64 0662 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s64), %zero:_663 %cmp2:_(s1) = G_ICMP intpred(ne), %y:_(s64), %zero:_664 %or:_(s1) = G_OR %cmp1, %cmp2665 %zext:_(s64) = G_ZEXT %or:_(s1)666 $x0 = COPY %zext667 RET_ReallyLR implicit $x0668 669...670---671name: invalid_or_ne_0_eq_0_s64672tracksRegLiveness: true673legalized: true674body: |675 bb.0:676 liveins: $x0, $x1677 678 ; CHECK-LABEL: name: invalid_or_ne_0_eq_0_s64679 ; CHECK: liveins: $x0, $x1680 ; CHECK-NEXT: {{ $}}681 ; CHECK-NEXT: %x:_(s64) = COPY $x0682 ; CHECK-NEXT: %y:_(s64) = COPY $x1683 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0684 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(ne), %x(s64), %zero685 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s64), %zero686 ; CHECK-NEXT: %or:_(s1) = G_OR %cmp1, %cmp2687 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %or(s1)688 ; CHECK-NEXT: $x0 = COPY %zext(s64)689 ; CHECK-NEXT: RET_ReallyLR implicit $x0690 %x:_(s64) = COPY $x0691 %y:_(s64) = COPY $x1692 %zero:_(s64) = G_CONSTANT i64 0693 %cmp1:_(s1) = G_ICMP intpred(ne), %x:_(s64), %zero:_694 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %zero:_695 %or:_(s1) = G_OR %cmp1, %cmp2696 %zext:_(s64) = G_ZEXT %or:_(s1)697 $x0 = COPY %zext698 RET_ReallyLR implicit $x0699 700...701---702name: valid_and_eq_0_eq_0_vec703tracksRegLiveness: true704legalized: true705body: |706 bb.0:707 liveins: $x0, $x1708 709 ; CHECK-LABEL: name: valid_and_eq_0_eq_0_vec710 ; CHECK: liveins: $x0, $x1711 ; CHECK-NEXT: {{ $}}712 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0713 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1714 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 0715 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)716 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR %x, %y717 ; CHECK-NEXT: %and:_(<2 x s1>) = G_ICMP intpred(eq), [[OR]](<2 x s32>), %zero718 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)719 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)720 ; CHECK-NEXT: RET_ReallyLR implicit $x0721 %x:_(<2 x s32>) = COPY $x0722 %y:_(<2 x s32>) = COPY $x1723 %zero_scalar:_(s32) = G_CONSTANT i32 0724 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)725 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero:_726 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %zero:_727 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2728 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)729 $x0 = COPY %zext730 RET_ReallyLR implicit $x0731 732...733---734name: invalid_and_eq_non_0_eq_0_vec735tracksRegLiveness: true736legalized: true737body: |738 bb.0:739 liveins: $x0, $x1740 741 ; CHECK-LABEL: name: invalid_and_eq_non_0_eq_0_vec742 ; CHECK: liveins: $x0, $x1743 ; CHECK-NEXT: {{ $}}744 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0745 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1746 ; CHECK-NEXT: %scalar0:_(s32) = G_CONSTANT i32 0747 ; CHECK-NEXT: %scalar1:_(s32) = G_CONSTANT i32 1748 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)749 ; CHECK-NEXT: %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)750 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %non_zero751 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s32>), %zero752 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2753 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)754 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)755 ; CHECK-NEXT: RET_ReallyLR implicit $x0756 %x:_(<2 x s32>) = COPY $x0757 %y:_(<2 x s32>) = COPY $x1758 %scalar0:_(s32) = G_CONSTANT i32 0759 %scalar1:_(s32) = G_CONSTANT i32 1760 %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)761 %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)762 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %non_zero:_763 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %zero:_764 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2765 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)766 $x0 = COPY %zext767 RET_ReallyLR implicit $x0768 769...770---771name: invalid_and_eq_0_eq_non_0_vec772tracksRegLiveness: true773legalized: true774body: |775 bb.0:776 liveins: $x0, $x1777 778 ; CHECK-LABEL: name: invalid_and_eq_0_eq_non_0_vec779 ; CHECK: liveins: $x0, $x1780 ; CHECK-NEXT: {{ $}}781 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0782 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1783 ; CHECK-NEXT: %scalar0:_(s32) = G_CONSTANT i32 0784 ; CHECK-NEXT: %scalar1:_(s32) = G_CONSTANT i32 1785 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)786 ; CHECK-NEXT: %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)787 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %zero788 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s32>), %non_zero789 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2790 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)791 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)792 ; CHECK-NEXT: RET_ReallyLR implicit $x0793 %x:_(<2 x s32>) = COPY $x0794 %y:_(<2 x s32>) = COPY $x1795 %scalar0:_(s32) = G_CONSTANT i32 0796 %scalar1:_(s32) = G_CONSTANT i32 1797 %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)798 %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)799 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero:_800 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %non_zero:_801 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2802 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)803 $x0 = COPY %zext804 RET_ReallyLR implicit $x0805 806...807---808name: invalid_and_ne_0_eq_0_vec809tracksRegLiveness: true810legalized: true811body: |812 bb.0:813 liveins: $x0, $x1814 815 ; CHECK-LABEL: name: invalid_and_ne_0_eq_0_vec816 ; CHECK: liveins: $x0, $x1817 ; CHECK-NEXT: {{ $}}818 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0819 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1820 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 0821 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)822 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x(<2 x s32>), %zero823 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s32>), %zero824 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2825 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)826 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)827 ; CHECK-NEXT: RET_ReallyLR implicit $x0828 %x:_(<2 x s32>) = COPY $x0829 %y:_(<2 x s32>) = COPY $x1830 %zero_scalar:_(s32) = G_CONSTANT i32 0831 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)832 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %zero:_833 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %zero:_834 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2835 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)836 $x0 = COPY %zext837 RET_ReallyLR implicit $x0838 839...840---841name: invalid_and_eq_0_ne_0_vec842tracksRegLiveness: true843legalized: true844body: |845 bb.0:846 liveins: $x0, $x1847 848 ; CHECK-LABEL: name: invalid_and_eq_0_ne_0_vec849 ; CHECK: liveins: $x0, $x1850 ; CHECK-NEXT: {{ $}}851 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0852 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1853 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 0854 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)855 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %zero856 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y(<2 x s32>), %zero857 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2858 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)859 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)860 ; CHECK-NEXT: RET_ReallyLR implicit $x0861 %x:_(<2 x s32>) = COPY $x0862 %y:_(<2 x s32>) = COPY $x1863 %zero_scalar:_(s32) = G_CONSTANT i32 0864 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)865 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero:_866 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %zero:_867 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2868 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)869 $x0 = COPY %zext870 RET_ReallyLR implicit $x0871 872...873---874name: invalid_and_ne_0_ne_0_vec875tracksRegLiveness: true876legalized: true877body: |878 bb.0:879 liveins: $x0, $x1880 881 ; CHECK-LABEL: name: invalid_and_ne_0_ne_0_vec882 ; CHECK: liveins: $x0, $x1883 ; CHECK-NEXT: {{ $}}884 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0885 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1886 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 0887 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)888 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x(<2 x s32>), %zero889 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y(<2 x s32>), %zero890 ; CHECK-NEXT: %and:_(<2 x s1>) = G_AND %cmp1, %cmp2891 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)892 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)893 ; CHECK-NEXT: RET_ReallyLR implicit $x0894 %x:_(<2 x s32>) = COPY $x0895 %y:_(<2 x s32>) = COPY $x1896 %zero_scalar:_(s32) = G_CONSTANT i32 0897 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)898 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %zero:_899 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %zero:_900 %and:_(<2 x s1>) = G_AND %cmp1, %cmp2901 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)902 $x0 = COPY %zext903 RET_ReallyLR implicit $x0904 905...906---907name: valid_or_ne_0_ne_0_vec908tracksRegLiveness: true909legalized: true910body: |911 bb.0:912 liveins: $x0, $x1913 914 ; CHECK-LABEL: name: valid_or_ne_0_ne_0_vec915 ; CHECK: liveins: $x0, $x1916 ; CHECK-NEXT: {{ $}}917 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0918 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1919 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 0920 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)921 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR %x, %y922 ; CHECK-NEXT: %and:_(<2 x s1>) = G_ICMP intpred(ne), [[OR]](<2 x s32>), %zero923 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)924 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)925 ; CHECK-NEXT: RET_ReallyLR implicit $x0926 %x:_(<2 x s32>) = COPY $x0927 %y:_(<2 x s32>) = COPY $x1928 %zero_scalar:_(s32) = G_CONSTANT i32 0929 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)930 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %zero:_931 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %zero:_932 %and:_(<2 x s1>) = G_OR %cmp1, %cmp2933 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)934 $x0 = COPY %zext935 RET_ReallyLR implicit $x0936 937...938---939name: invalid_or_ne_non_0_ne_0_vec940tracksRegLiveness: true941legalized: true942body: |943 bb.0:944 liveins: $x0, $x1945 946 ; CHECK-LABEL: name: invalid_or_ne_non_0_ne_0_vec947 ; CHECK: liveins: $x0, $x1948 ; CHECK-NEXT: {{ $}}949 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0950 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1951 ; CHECK-NEXT: %scalar0:_(s32) = G_CONSTANT i32 0952 ; CHECK-NEXT: %scalar1:_(s32) = G_CONSTANT i32 1953 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)954 ; CHECK-NEXT: %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)955 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x(<2 x s32>), %non_zero956 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y(<2 x s32>), %zero957 ; CHECK-NEXT: %and:_(<2 x s1>) = G_OR %cmp1, %cmp2958 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)959 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)960 ; CHECK-NEXT: RET_ReallyLR implicit $x0961 %x:_(<2 x s32>) = COPY $x0962 %y:_(<2 x s32>) = COPY $x1963 %scalar0:_(s32) = G_CONSTANT i32 0964 %scalar1:_(s32) = G_CONSTANT i32 1965 %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)966 %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)967 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %non_zero:_968 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %zero:_969 %and:_(<2 x s1>) = G_OR %cmp1, %cmp2970 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)971 $x0 = COPY %zext972 RET_ReallyLR implicit $x0973 974...975---976name: invalid_or_ne_0_ne_non_0_vec977tracksRegLiveness: true978legalized: true979body: |980 bb.0:981 liveins: $x0, $x1982 983 ; CHECK-LABEL: name: invalid_or_ne_0_ne_non_0_vec984 ; CHECK: liveins: $x0, $x1985 ; CHECK-NEXT: {{ $}}986 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x0987 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x1988 ; CHECK-NEXT: %scalar0:_(s32) = G_CONSTANT i32 0989 ; CHECK-NEXT: %scalar1:_(s32) = G_CONSTANT i32 1990 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)991 ; CHECK-NEXT: %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)992 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x(<2 x s32>), %zero993 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y(<2 x s32>), %non_zero994 ; CHECK-NEXT: %and:_(<2 x s1>) = G_OR %cmp1, %cmp2995 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)996 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)997 ; CHECK-NEXT: RET_ReallyLR implicit $x0998 %x:_(<2 x s32>) = COPY $x0999 %y:_(<2 x s32>) = COPY $x11000 %scalar0:_(s32) = G_CONSTANT i32 01001 %scalar1:_(s32) = G_CONSTANT i32 11002 %zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar0(s32)1003 %non_zero:_(<2 x s32>) = G_BUILD_VECTOR %scalar0(s32), %scalar1(s32)1004 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %zero:_1005 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %non_zero:_1006 %and:_(<2 x s1>) = G_OR %cmp1, %cmp21007 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)1008 $x0 = COPY %zext1009 RET_ReallyLR implicit $x01010 1011...1012---1013name: invalid_or_eq_0_ne_0_vec1014tracksRegLiveness: true1015legalized: true1016body: |1017 bb.0:1018 liveins: $x0, $x11019 1020 ; CHECK-LABEL: name: invalid_or_eq_0_ne_0_vec1021 ; CHECK: liveins: $x0, $x11022 ; CHECK-NEXT: {{ $}}1023 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x01024 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x11025 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 01026 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1027 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %zero1028 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y(<2 x s32>), %zero1029 ; CHECK-NEXT: %and:_(<2 x s1>) = G_OR %cmp1, %cmp21030 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)1031 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)1032 ; CHECK-NEXT: RET_ReallyLR implicit $x01033 %x:_(<2 x s32>) = COPY $x01034 %y:_(<2 x s32>) = COPY $x11035 %zero_scalar:_(s32) = G_CONSTANT i32 01036 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1037 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero:_1038 %cmp2:_(<2 x s1>) = G_ICMP intpred(ne), %y:_(<2 x s32>), %zero:_1039 %and:_(<2 x s1>) = G_OR %cmp1, %cmp21040 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)1041 $x0 = COPY %zext1042 RET_ReallyLR implicit $x01043 1044...1045---1046name: invalid_or_ne_0_eq_0_vec1047tracksRegLiveness: true1048legalized: true1049body: |1050 bb.0:1051 liveins: $x0, $x11052 1053 ; CHECK-LABEL: name: invalid_or_ne_0_eq_0_vec1054 ; CHECK: liveins: $x0, $x11055 ; CHECK-NEXT: {{ $}}1056 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x01057 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x11058 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 01059 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1060 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x(<2 x s32>), %zero1061 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s32>), %zero1062 ; CHECK-NEXT: %and:_(<2 x s1>) = G_OR %cmp1, %cmp21063 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)1064 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)1065 ; CHECK-NEXT: RET_ReallyLR implicit $x01066 %x:_(<2 x s32>) = COPY $x01067 %y:_(<2 x s32>) = COPY $x11068 %zero_scalar:_(s32) = G_CONSTANT i32 01069 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1070 %cmp1:_(<2 x s1>) = G_ICMP intpred(ne), %x:_(<2 x s32>), %zero:_1071 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %zero:_1072 %and:_(<2 x s1>) = G_OR %cmp1, %cmp21073 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)1074 $x0 = COPY %zext1075 RET_ReallyLR implicit $x01076 1077...1078---1079name: invalid_or_eq_0_eq_0_vec1080tracksRegLiveness: true1081legalized: true1082body: |1083 bb.0:1084 liveins: $x0, $x11085 1086 ; CHECK-LABEL: name: invalid_or_eq_0_eq_0_vec1087 ; CHECK: liveins: $x0, $x11088 ; CHECK-NEXT: {{ $}}1089 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x01090 ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $x11091 ; CHECK-NEXT: %zero_scalar:_(s32) = G_CONSTANT i32 01092 ; CHECK-NEXT: %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1093 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %zero1094 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s32>), %zero1095 ; CHECK-NEXT: %and:_(<2 x s1>) = G_OR %cmp1, %cmp21096 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %and(<2 x s1>)1097 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)1098 ; CHECK-NEXT: RET_ReallyLR implicit $x01099 %x:_(<2 x s32>) = COPY $x01100 %y:_(<2 x s32>) = COPY $x11101 %zero_scalar:_(s32) = G_CONSTANT i32 01102 %zero:_(<2 x s32>) = G_BUILD_VECTOR %zero_scalar(s32), %zero_scalar(s32)1103 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero:_1104 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s32>), %zero:_1105 %and:_(<2 x s1>) = G_OR %cmp1, %cmp21106 %zext:_(<2 x s32>) = G_ZEXT %and:_(<2 x s1>)1107 $x0 = COPY %zext1108 RET_ReallyLR implicit $x01109 1110...1111---1112name: invalid_p0_src1113tracksRegLiveness: true1114legalized: true1115body: |1116 bb.0:1117 liveins: $x0, $x11118 1119 ; CHECK-LABEL: name: invalid_p0_src1120 ; CHECK: liveins: $x0, $x11121 ; CHECK-NEXT: {{ $}}1122 ; CHECK-NEXT: %x:_(p0) = COPY $x01123 ; CHECK-NEXT: %y:_(p0) = COPY $x11124 ; CHECK-NEXT: %zero:_(p0) = G_CONSTANT i64 01125 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(p0), %zero1126 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(p0), %zero1127 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp21128 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)1129 ; CHECK-NEXT: $x0 = COPY %zext(s64)1130 ; CHECK-NEXT: RET_ReallyLR implicit $x01131 %x:_(p0) = COPY $x01132 %y:_(p0) = COPY $x11133 %zero:_(p0) = G_CONSTANT i64 01134 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(p0), %zero:_1135 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(p0), %zero:_1136 %and:_(s1) = G_AND %cmp1, %cmp21137 %zext:_(s64) = G_ZEXT %and:_(s1)1138 $x0 = COPY %zext1139 RET_ReallyLR implicit $x01140 1141...1142---1143name: invalid_p0_src_vec1144tracksRegLiveness: true1145legalized: true1146body: |1147 bb.0:1148 liveins: $q0, $q11149 1150 ; CHECK-LABEL: name: invalid_p0_src_vec1151 ; CHECK: liveins: $q0, $q11152 ; CHECK-NEXT: {{ $}}1153 ; CHECK-NEXT: %x:_(<2 x p0>) = COPY $q01154 ; CHECK-NEXT: %y:_(<2 x p0>) = COPY $q11155 ; CHECK-NEXT: %scalar0:_(p0) = G_CONSTANT i64 01156 ; CHECK-NEXT: %zero:_(<2 x p0>) = G_BUILD_VECTOR %scalar0(p0), %scalar0(p0)1157 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x p0>), %zero1158 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x p0>), %zero1159 ; CHECK-NEXT: %or:_(<2 x s1>) = G_AND %cmp1, %cmp21160 ; CHECK-NEXT: %zext:_(<2 x s64>) = G_ZEXT %or(<2 x s1>)1161 ; CHECK-NEXT: $q0 = COPY %zext(<2 x s64>)1162 ; CHECK-NEXT: RET_ReallyLR implicit $q01163 %x:_(<2 x p0>) = COPY $q01164 %y:_(<2 x p0>) = COPY $q11165 %scalar0:_(p0) = G_CONSTANT i64 01166 %zero:_(<2 x p0>) = G_BUILD_VECTOR %scalar0(p0), %scalar0(p0)1167 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x p0>), %zero:_1168 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x p0>), %zero:_1169 %or:_(<2 x s1>) = G_AND %cmp1, %cmp21170 %zext:_(<2 x s64>) = G_ZEXT %or:_(<2 x s1>)1171 $q0 = COPY %zext1172 RET_ReallyLR implicit $q01173 1174...1175---1176name: invalid_diff_src_ty1177tracksRegLiveness: true1178legalized: true1179body: |1180 bb.0:1181 liveins: $w0, $x11182 1183 ; CHECK-LABEL: name: invalid_diff_src_ty1184 ; CHECK: liveins: $w0, $x11185 ; CHECK-NEXT: {{ $}}1186 ; CHECK-NEXT: %x:_(s32) = COPY $w01187 ; CHECK-NEXT: %y:_(s64) = COPY $x11188 ; CHECK-NEXT: %zero_s32:_(s32) = G_CONSTANT i32 01189 ; CHECK-NEXT: %zero_s64:_(s64) = G_CONSTANT i64 01190 ; CHECK-NEXT: %cmp1:_(s1) = G_ICMP intpred(eq), %x(s32), %zero_s321191 ; CHECK-NEXT: %cmp2:_(s1) = G_ICMP intpred(eq), %y(s64), %zero_s641192 ; CHECK-NEXT: %and:_(s1) = G_AND %cmp1, %cmp21193 ; CHECK-NEXT: %zext:_(s64) = G_ZEXT %and(s1)1194 ; CHECK-NEXT: $x0 = COPY %zext(s64)1195 ; CHECK-NEXT: RET_ReallyLR implicit $x01196 %x:_(s32) = COPY $w01197 %y:_(s64) = COPY $x11198 %zero_s32:_(s32) = G_CONSTANT i32 01199 %zero_s64:_(s64) = G_CONSTANT i64 01200 %cmp1:_(s1) = G_ICMP intpred(eq), %x:_(s32), %zero_s32:_1201 %cmp2:_(s1) = G_ICMP intpred(eq), %y:_(s64), %zero_s64:_1202 %and:_(s1) = G_AND %cmp1, %cmp21203 %zext:_(s64) = G_ZEXT %and:_(s1)1204 $x0 = COPY %zext1205 RET_ReallyLR implicit $x01206 1207...1208---1209name: invalid_diff_src_ty_vec1210tracksRegLiveness: true1211legalized: true1212body: |1213 bb.0:1214 liveins: $x0, $q11215 1216 ; CHECK-LABEL: name: invalid_diff_src_ty_vec1217 ; CHECK: liveins: $x0, $q11218 ; CHECK-NEXT: {{ $}}1219 ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $x01220 ; CHECK-NEXT: %y:_(<2 x s64>) = COPY $q11221 ; CHECK-NEXT: %scalar0s32:_(s32) = G_CONSTANT i32 01222 ; CHECK-NEXT: %scalar0s64:_(s64) = G_CONSTANT i64 01223 ; CHECK-NEXT: %zero_s32:_(<2 x s32>) = G_BUILD_VECTOR %scalar0s32(s32), %scalar0s32(s32)1224 ; CHECK-NEXT: %zero_s64:_(<2 x s64>) = G_BUILD_VECTOR %scalar0s64(s64), %scalar0s64(s64)1225 ; CHECK-NEXT: %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x(<2 x s32>), %zero_s321226 ; CHECK-NEXT: %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y(<2 x s64>), %zero_s641227 ; CHECK-NEXT: %or:_(<2 x s1>) = G_AND %cmp1, %cmp21228 ; CHECK-NEXT: %zext:_(<2 x s32>) = G_ZEXT %or(<2 x s1>)1229 ; CHECK-NEXT: $x0 = COPY %zext(<2 x s32>)1230 ; CHECK-NEXT: RET_ReallyLR implicit $x01231 %x:_(<2 x s32>) = COPY $x01232 %y:_(<2 x s64>) = COPY $q11233 %scalar0s32:_(s32) = G_CONSTANT i32 01234 %scalar0s64:_(s64) = G_CONSTANT i64 01235 %zero_s32:_(<2 x s32>) = G_BUILD_VECTOR %scalar0s32(s32), %scalar0s32(s32)1236 %zero_s64:_(<2 x s64>) = G_BUILD_VECTOR %scalar0s64(s64), %scalar0s64(s64)1237 %cmp1:_(<2 x s1>) = G_ICMP intpred(eq), %x:_(<2 x s32>), %zero_s32:_1238 %cmp2:_(<2 x s1>) = G_ICMP intpred(eq), %y:_(<2 x s64>), %zero_s64:_1239 %or:_(<2 x s1>) = G_AND %cmp1, %cmp21240 %zext:_(<2 x s32>) = G_ZEXT %or:_(<2 x s1>)1241 $x0 = COPY %zext1242 RET_ReallyLR implicit $x01243 1244...1245