Skip to content

Commit 692db74

Browse files
committed
[ValueTracking] Precommit test for #118406
1 parent 1e7624c commit 692db74

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
@@ -3450,6 +3450,21 @@ define i1 @icmp_ult_vscale_false(i8 %x, i8 %y) {
34503450
ret i1 %cmp
34513451
}
34523452

3453+
define i1 @icmp_eq_false_by_trunc(i8 %x) {
3454+
; CHECK-LABEL: @icmp_eq_false_by_trunc(
3455+
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[X:%.*]] to i1
3456+
; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[TRUNC]], true
3457+
; CHECK-NEXT: call void @llvm.assume(i1 [[NOT]])
3458+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], 1
3459+
; CHECK-NEXT: ret i1 [[CMP]]
3460+
;
3461+
%trunc = trunc i8 %x to i1
3462+
%not = xor i1 %trunc, true
3463+
call void @llvm.assume(i1 %not)
3464+
%cmp = icmp eq i8 %x, 1
3465+
ret i1 %cmp
3466+
}
3467+
34533468
declare i64 @llvm.vscale.i64()
34543469

34553470
; 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)