Skip to content

Commit 7e3f9dd

Browse files
committed
[InstCombine] Add more tests for foldLogOpOfMaskedICmps transform (NFC)
Tests for cases that would have been regressed by #104941.
1 parent db94852 commit 7e3f9dd

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

llvm/test/Transforms/InstCombine/bit-checks.ll

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,3 +1322,31 @@ define i32 @main15_logical(i32 %argc) {
13221322
%retval.0 = select i1 %or.cond, i32 2, i32 1
13231323
ret i32 %retval.0
13241324
}
1325+
1326+
define i1 @no_masks_with_logical_or(i32 %a, i32 %b, i32 noundef %c) {
1327+
; CHECK-LABEL: @no_masks_with_logical_or(
1328+
; CHECK-NEXT: [[CMP2:%.*]] = icmp ne i32 [[B:%.*]], 63
1329+
; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[A:%.*]], [[C:%.*]]
1330+
; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i32 [[TMP1]], 0
1331+
; CHECK-NEXT: [[OR2:%.*]] = select i1 [[TMP2]], i1 true, i1 [[CMP2]]
1332+
; CHECK-NEXT: ret i1 [[OR2]]
1333+
;
1334+
%cmp1 = icmp ne i32 %a, 0
1335+
%cmp2 = icmp ne i32 %b, 63
1336+
%or1 = select i1 %cmp1, i1 true, i1 %cmp2
1337+
%cmp3 = icmp ne i32 %c, 0
1338+
%or2 = or i1 %or1, %cmp3
1339+
ret i1 %or2
1340+
}
1341+
1342+
define i1 @only_one_masked(i64 %a) {
1343+
; CHECK-LABEL: @only_one_masked(
1344+
; CHECK-NEXT: [[AND:%.*]] = icmp eq i64 [[A:%.*]], -9223372036854775808
1345+
; CHECK-NEXT: ret i1 [[AND]]
1346+
;
1347+
%cmp1 = icmp ne i64 %a, 0
1348+
%a.mask = and i64 %a, 9223372036854775807
1349+
%cmp2 = icmp eq i64 %a.mask, 0
1350+
%and = and i1 %cmp1, %cmp2
1351+
ret i1 %and
1352+
}

0 commit comments

Comments
 (0)