@@ -541,3 +541,68 @@ body: |
541541 %zext:_(s32) = G_ZEXT %2(s8)
542542 $w0 = COPY %zext(s32)
543543 RET_ReallyLR
544+ ...
545+ ---
546+ name : test_4xs64_ne
547+ tracksRegLiveness : true
548+ body : |
549+ bb.1:
550+ liveins:
551+ ; CHECK-LABEL: name: test_4xs64_ne
552+ ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF
553+ ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x s64>), [[DEF]]
554+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
555+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
556+ ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP]], [[BUILD_VECTOR]]
557+ ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x s64>), [[DEF]]
558+ ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
559+ ; CHECK-NEXT: [[XOR1:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP1]], [[BUILD_VECTOR1]]
560+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
561+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR]](<2 x s64>)
562+ ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR1]](<2 x s64>)
563+ ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s32>), [[TRUNC1]](<2 x s32>)
564+ ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<4 x s32>), [[C1]](s64)
565+ ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
566+ ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C2]]
567+ ; CHECK-NEXT: $w0 = COPY %zext(s32)
568+ ; CHECK-NEXT: RET_ReallyLR
569+ %vec:_(<4 x s64>) = G_IMPLICIT_DEF
570+ %cmp:_(<4 x s1>) = G_ICMP intpred(ne), %vec(<4 x s64>), %vec
571+ %1:_(s64) = G_CONSTANT i64 1
572+ %elt:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<4 x s1>), %1
573+ %zext:_(s32) = G_ZEXT %elt(s1)
574+ $w0 = COPY %zext(s32)
575+ RET_ReallyLR
576+ ...
577+ ---
578+ name : test_4xp0_ne
579+ tracksRegLiveness : true
580+ body : |
581+ bb.1:
582+ liveins:
583+ ; CHECK-LABEL: name: test_4xp0_ne
584+ ; CHECK: [[DEF:%[0-9]+]]:_(<2 x p0>) = G_IMPLICIT_DEF
585+ ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x p0>), [[DEF]]
586+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
587+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
588+ ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP]], [[BUILD_VECTOR]]
589+ ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[DEF]](<2 x p0>), [[DEF]]
590+ ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
591+ ; CHECK-NEXT: [[XOR1:%[0-9]+]]:_(<2 x s64>) = G_XOR [[ICMP1]], [[BUILD_VECTOR1]]
592+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
593+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR]](<2 x s64>)
594+ ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s32>) = G_TRUNC [[XOR1]](<2 x s64>)
595+ ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s32>), [[TRUNC1]](<2 x s32>)
596+ ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<4 x s32>), [[C1]](s64)
597+ ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
598+ ; CHECK-NEXT: %zext:_(s32) = G_AND [[EVEC]], [[C2]]
599+ ; CHECK-NEXT: $w0 = COPY %zext(s32)
600+ ; CHECK-NEXT: RET_ReallyLR
601+ %vec:_(<4 x p0>) = G_IMPLICIT_DEF
602+ %cmp:_(<4 x s1>) = G_ICMP intpred(ne), %vec(<4 x p0>), %vec
603+ %1:_(s64) = G_CONSTANT i64 1
604+ %elt:_(s1) = G_EXTRACT_VECTOR_ELT %cmp(<4 x s1>), %1
605+ %zext:_(s32) = G_ZEXT %elt(s1)
606+ $w0 = COPY %zext(s32)
607+ RET_ReallyLR
608+ ...
0 commit comments