@@ -3708,3 +3708,47 @@ define i32 @src_select_xxory_eq0_xorxy_y(i32 %x, i32 %y) {
3708
3708
%cond = select i1 %xor0 , i32 %xor , i32 %y
3709
3709
ret i32 %cond
3710
3710
}
3711
+
3712
+ define i32 @sequence_select_with_same_cond_flase (i1 %c1 , i1 %c2 ){
3713
+ ; CHECK-LABEL: @sequence_select_with_same_cond_flase(
3714
+ ; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 23, i32 45
3715
+ ; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 666, i32 [[S1]]
3716
+ ; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 789, i32 [[S2]]
3717
+ ; CHECK-NEXT: ret i32 [[S3]]
3718
+ ;
3719
+ %s1 = select i1 %c1 , i32 23 , i32 45
3720
+ %s2 = select i1 %c2 , i32 666 , i32 %s1
3721
+ %s3 = select i1 %c1 , i32 789 , i32 %s2
3722
+ ret i32 %s3
3723
+ }
3724
+
3725
+ ; https://alive2.llvm.org/ce/z/HHF-VD
3726
+ define i32 @sequence_select_with_same_cond_true (i1 %c1 , i1 %c2 ){
3727
+ ; CHECK-LABEL: @sequence_select_with_same_cond_true(
3728
+ ; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 45, i32 23
3729
+ ; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 [[S1]], i32 666
3730
+ ; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 [[S2]], i32 789
3731
+ ; CHECK-NEXT: ret i32 [[S3]]
3732
+ ;
3733
+ %s1 = select i1 %c1 , i32 45 , i32 23
3734
+ %s2 = select i1 %c2 , i32 %s1 , i32 666
3735
+ %s3 = select i1 %c1 , i32 %s2 , i32 789
3736
+ ret i32 %s3
3737
+ }
3738
+
3739
+ declare void @use32 (i32 )
3740
+
3741
+ define i32 @sequence_select_with_same_cond_extra_use (i1 %c1 , i1 %c2 ){
3742
+ ; CHECK-LABEL: @sequence_select_with_same_cond_extra_use(
3743
+ ; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 23, i32 45
3744
+ ; CHECK-NEXT: call void @use32(i32 [[S1]])
3745
+ ; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 666, i32 [[S1]]
3746
+ ; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 789, i32 [[S2]]
3747
+ ; CHECK-NEXT: ret i32 [[S3]]
3748
+ ;
3749
+ %s1 = select i1 %c1 , i32 23 , i32 45
3750
+ call void @use32 (i32 %s1 )
3751
+ %s2 = select i1 %c2 , i32 666 , i32 %s1
3752
+ %s3 = select i1 %c1 , i32 789 , i32 %s2
3753
+ ret i32 %s3
3754
+ }
0 commit comments