@@ -541,3 +541,68 @@ body: |
541
541
%zext:_(s32) = G_ZEXT %2(s8)
542
542
$w0 = COPY %zext(s32)
543
543
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