brintos

brintos / llvm-project-archived public Read only

0
0
Text · 43.5 KiB · 2ce5c69 Raw
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