Skip to content

Commit 09a500b

Browse files
committed
[ValueTracking] more test of trunc to i1 as condition in dominating condition. (NFC)
1 parent 32c4493 commit 09a500b

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

llvm/test/Transforms/InstCombine/known-bits.ll

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2313,6 +2313,58 @@ if.else:
23132313
ret i8 %c
23142314
}
23152315

2316+
define i8 @test_trunc_cond_and(i8 %x, i1 %c) {
2317+
; CHECK-LABEL: @test_trunc_cond_and(
2318+
; CHECK-NEXT: [[CMP:%.*]] = trunc i8 [[X:%.*]] to i1
2319+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[C:%.*]], [[CMP]]
2320+
; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
2321+
; CHECK: if:
2322+
; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -2
2323+
; CHECK-NEXT: ret i8 [[OR1]]
2324+
; CHECK: exit:
2325+
; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -2
2326+
; CHECK-NEXT: ret i8 [[OR2]]
2327+
;
2328+
%cmp = trunc i8 %x to i1
2329+
%cond = and i1 %cmp, %c
2330+
br i1 %cond, label %if, label %exit
2331+
2332+
if:
2333+
%or1 = or i8 %x, -2
2334+
ret i8 %or1
2335+
2336+
exit:
2337+
%or2 = or i8 %x, -2
2338+
ret i8 %or2
2339+
}
2340+
2341+
define i8 @test_not_trunc_cond_and(i8 %x, i1 %c) {
2342+
; CHECK-LABEL: @test_not_trunc_cond_and(
2343+
; CHECK-NEXT: [[CMP:%.*]] = trunc i8 [[X:%.*]] to i1
2344+
; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[CMP]], true
2345+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[C:%.*]], [[NOT]]
2346+
; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
2347+
; CHECK: if:
2348+
; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -2
2349+
; CHECK-NEXT: ret i8 [[OR1]]
2350+
; CHECK: exit:
2351+
; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -2
2352+
; CHECK-NEXT: ret i8 [[OR2]]
2353+
;
2354+
%cmp = trunc i8 %x to i1
2355+
%not = xor i1 %cmp, true
2356+
%cond = and i1 %not, %c
2357+
br i1 %cond, label %if, label %exit
2358+
2359+
if:
2360+
%or1 = or i8 %x, -2
2361+
ret i8 %or1
2362+
2363+
exit:
2364+
%or2 = or i8 %x, -2
2365+
ret i8 %or2
2366+
}
2367+
23162368
declare void @dummy()
23172369
declare void @use(i1)
23182370
declare void @sink(i8)

0 commit comments

Comments
 (0)