Skip to content

Commit bd9a2af

Browse files
vfdffnikic
authored andcommitted
[InstCombine] Add tests for selects with same conditions (NFC)
1 parent 8d14204 commit bd9a2af

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

llvm/test/Transforms/InstCombine/select.ll

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3706,3 +3706,59 @@ define i32 @src_select_xxory_eq0_xorxy_y(i32 %x, i32 %y) {
37063706
%cond = select i1 %xor0, i32 %xor, i32 %y
37073707
ret i32 %cond
37083708
}
3709+
3710+
define i32 @sequence_select_with_same_cond_false(i1 %c1, i1 %c2){
3711+
; CHECK-LABEL: @sequence_select_with_same_cond_false(
3712+
; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 23, i32 45
3713+
; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 666, i32 [[S1]]
3714+
; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 789, i32 [[S2]]
3715+
; CHECK-NEXT: ret i32 [[S3]]
3716+
;
3717+
%s1 = select i1 %c1, i32 23, i32 45
3718+
%s2 = select i1 %c2, i32 666, i32 %s1
3719+
%s3 = select i1 %c1, i32 789, i32 %s2
3720+
ret i32 %s3
3721+
}
3722+
3723+
define i32 @sequence_select_with_same_cond_true(i1 %c1, i1 %c2){
3724+
; CHECK-LABEL: @sequence_select_with_same_cond_true(
3725+
; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 45, i32 23
3726+
; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 [[S1]], i32 666
3727+
; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 [[S2]], i32 789
3728+
; CHECK-NEXT: ret i32 [[S3]]
3729+
;
3730+
%s1 = select i1 %c1, i32 45, i32 23
3731+
%s2 = select i1 %c2, i32 %s1, i32 666
3732+
%s3 = select i1 %c1, i32 %s2, i32 789
3733+
ret i32 %s3
3734+
}
3735+
3736+
define double @sequence_select_with_same_cond_double(double %a, i1 %c1, i1 %c2, double %r1, double %r2){
3737+
; CHECK-LABEL: @sequence_select_with_same_cond_double(
3738+
; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], double 1.000000e+00, double 0.000000e+00
3739+
; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], double [[S1]], double 2.000000e+00
3740+
; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], double [[S2]], double 3.000000e+00
3741+
; CHECK-NEXT: ret double [[S3]]
3742+
;
3743+
%s1 = select i1 %c1, double 1.0, double 0.0
3744+
%s2 = select i1 %c2, double %s1, double 2.0
3745+
%s3 = select i1 %c1, double %s2, double 3.0
3746+
ret double %s3
3747+
}
3748+
3749+
declare void @use32(i32)
3750+
3751+
define i32 @sequence_select_with_same_cond_extra_use(i1 %c1, i1 %c2){
3752+
; CHECK-LABEL: @sequence_select_with_same_cond_extra_use(
3753+
; CHECK-NEXT: [[S1:%.*]] = select i1 [[C1:%.*]], i32 23, i32 45
3754+
; CHECK-NEXT: call void @use32(i32 [[S1]])
3755+
; CHECK-NEXT: [[S2:%.*]] = select i1 [[C2:%.*]], i32 666, i32 [[S1]]
3756+
; CHECK-NEXT: [[S3:%.*]] = select i1 [[C1]], i32 789, i32 [[S2]]
3757+
; CHECK-NEXT: ret i32 [[S3]]
3758+
;
3759+
%s1 = select i1 %c1, i32 23, i32 45
3760+
call void @use32(i32 %s1)
3761+
%s2 = select i1 %c2, i32 666, i32 %s1
3762+
%s3 = select i1 %c1, i32 789, i32 %s2
3763+
ret i32 %s3
3764+
}

0 commit comments

Comments
 (0)