Skip to content

Commit 8e1b5ac

Browse files
committed
[ValueTracking] Add test for assume with trunc as argument (NFC)
1 parent a8a494f commit 8e1b5ac

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

llvm/test/Transforms/InstSimplify/assume-non-zero.ll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,17 @@ define i1 @nonnull17_unknown(i8 %x) {
231231
%q = icmp ne i8 %x, 0
232232
ret i1 %q
233233
}
234+
235+
define i1 @nonnull_trunc_true(i8 %x) {
236+
; CHECK-LABEL: @nonnull_trunc_true(
237+
; CHECK-NEXT: [[A:%.*]] = trunc i8 [[X:%.*]] to i1
238+
; CHECK-NEXT: call void @llvm.assume(i1 [[A]])
239+
; CHECK-NEXT: [[Q:%.*]] = icmp ne i8 [[X]], 0
240+
; CHECK-NEXT: ret i1 [[Q]]
241+
;
242+
%a = trunc i8 %x to i1
243+
call void @llvm.assume(i1 %a)
244+
%q = icmp ne i8 %x, 0
245+
ret i1 %q
246+
}
247+

llvm/test/Transforms/InstSimplify/compare.ll

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3424,6 +3424,21 @@ define i1 @icmp_ult_vscale_false(i8 %x, i8 %y) {
34243424
ret i1 %cmp
34253425
}
34263426

3427+
define i1 @icmp_eq_false_by_trunc(i8 %x) {
3428+
; CHECK-LABEL: @icmp_eq_false_by_trunc(
3429+
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[X:%.*]] to i1
3430+
; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[TRUNC]], true
3431+
; CHECK-NEXT: call void @llvm.assume(i1 [[NOT]])
3432+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], 1
3433+
; CHECK-NEXT: ret i1 [[CMP]]
3434+
;
3435+
%trunc = trunc i8 %x to i1
3436+
%not = xor i1 %trunc, true
3437+
call void @llvm.assume(i1 %not)
3438+
%cmp = icmp eq i8 %x, 1
3439+
ret i1 %cmp
3440+
}
3441+
34273442
declare i64 @llvm.vscale.i64()
34283443

34293444
; TODO: Add coverage for global aliases, link once, etc..

llvm/test/Transforms/InstSimplify/shr-nop.ll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,19 @@ define i32 @exact_lshr_lowbit(i32 %shiftval) {
381381
ret i32 %shr
382382
}
383383

384+
define i8 @exact_lshr_lowbit_set_assume_trunc(i8 %x) {
385+
; CHECK-LABEL: @exact_lshr_lowbit_set_assume_trunc(
386+
; CHECK-NEXT: [[COND:%.*]] = trunc i8 [[X:%.*]] to i1
387+
; CHECK-NEXT: call void @llvm.assume(i1 [[COND]])
388+
; CHECK-NEXT: [[SHR:%.*]] = lshr exact i8 [[X]], 1
389+
; CHECK-NEXT: ret i8 [[SHR]]
390+
;
391+
%cond = trunc i8 %x to i1
392+
call void @llvm.assume(i1 %cond)
393+
%shr = lshr exact i8 %x, 1
394+
ret i8 %shr
395+
}
396+
384397
define i32 @exact_ashr_lowbit(i32 %shiftval) {
385398
; CHECK-LABEL: @exact_ashr_lowbit(
386399
; CHECK-NEXT: ret i32 7

0 commit comments

Comments
 (0)