Skip to content

Commit ff00fae

Browse files
committed
add more tests for PR30273
llvm-svn: 281270
1 parent a506d50 commit ff00fae

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

llvm/test/Transforms/InstCombine/zext-bool-add-sub.ll

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ define i32 @a(i1 zeroext %x, i1 zeroext %y) {
1818
ret i32 %add
1919
}
2020

21-
define i32 @PR30273(i1 %a, i1 %b) {
22-
; CHECK-LABEL: @PR30273(
21+
define i32 @PR30273_select(i1 %a, i1 %b) {
22+
; CHECK-LABEL: @PR30273_select(
2323
; CHECK-NEXT: [[ZEXT:%.*]] = zext i1 %a to i32
2424
; CHECK-NEXT: [[SEL1:%.*]] = select i1 %a, i32 2, i32 1
2525
; CHECK-NEXT: [[SEL2:%.*]] = select i1 %b, i32 [[SEL1]], i32 [[ZEXT]]
@@ -31,3 +31,33 @@ define i32 @PR30273(i1 %a, i1 %b) {
3131
ret i32 %sel2
3232
}
3333

34+
define i32 @PR30273_zext_add(i1 %a, i1 %b) {
35+
; CHECK-LABEL: @PR30273_zext_add(
36+
; CHECK-NEXT: [[CONV:%.*]] = zext i1 %a to i32
37+
; CHECK-NEXT: [[CONV3:%.*]] = zext i1 %b to i32
38+
; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[CONV3]], [[CONV]]
39+
; CHECK-NEXT: ret i32 [[ADD]]
40+
;
41+
%conv = zext i1 %a to i32
42+
%conv3 = zext i1 %b to i32
43+
%add = add nuw nsw i32 %conv3, %conv
44+
ret i32 %add
45+
}
46+
47+
define i32 @PR30273_three_bools(i1 %x, i1 %y, i1 %z) {
48+
; CHECK-LABEL: @PR30273_three_bools(
49+
; CHECK-NEXT: [[FROMBOOL:%.*]] = zext i1 %x to i32
50+
; CHECK-NEXT: [[ADD1:%.*]] = select i1 %x, i32 2, i32 1
51+
; CHECK-NEXT: [[SEL1:%.*]] = select i1 %y, i32 [[ADD1]], i32 [[FROMBOOL]]
52+
; CHECK-NEXT: [[ADD2:%.*]] = zext i1 %z to i32
53+
; CHECK-NEXT: [[SEL2:%.*]] = add nuw nsw i32 [[SEL1]], [[ADD2]]
54+
; CHECK-NEXT: ret i32 [[SEL2]]
55+
;
56+
%frombool = zext i1 %x to i32
57+
%add1 = add nsw i32 %frombool, 1
58+
%sel1 = select i1 %y, i32 %add1, i32 %frombool
59+
%add2 = add nsw i32 %sel1, 1
60+
%sel2 = select i1 %z, i32 %add2, i32 %sel1
61+
ret i32 %sel2
62+
}
63+

0 commit comments

Comments
 (0)