Skip to content

Commit 5d39baf

Browse files
committed
[ValueTracking] Add basic tests tracking or disjoint conditions as add; NFC
1 parent 1918d4b commit 5d39baf

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
@@ -483,5 +483,57 @@ if.else:
483483
ret i64 13
484484
}
485485

486+
define i1 @test_icmp_or_distjoint(i8 %n, i1 %other) {
487+
; CHECK-LABEL: @test_icmp_or_distjoint(
488+
; CHECK-NEXT: entry:
489+
; CHECK-NEXT: [[N_OR:%.*]] = or disjoint i8 [[N:%.*]], 16
490+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[N_OR]], -111
491+
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
492+
; CHECK: if.then:
493+
; CHECK-NEXT: [[R:%.*]] = icmp slt i8 [[N]], 0
494+
; CHECK-NEXT: ret i1 [[R]]
495+
; CHECK: if.else:
496+
; CHECK-NEXT: ret i1 [[OTHER:%.*]]
497+
;
498+
entry:
499+
%n_or = or disjoint i8 %n, 16
500+
%cmp = icmp ugt i8 %n_or, 145
501+
br i1 %cmp, label %if.then, label %if.else
502+
503+
if.then:
504+
%r = icmp slt i8 %n, 0
505+
ret i1 %r
506+
507+
if.else:
508+
ret i1 %other
509+
}
510+
511+
define i1 @test_icmp_or_fail_missing_disjoint(i8 %n, i1 %other) {
512+
; CHECK-LABEL: @test_icmp_or_fail_missing_disjoint(
513+
; CHECK-NEXT: entry:
514+
; CHECK-NEXT: [[N_OR:%.*]] = or i8 [[N:%.*]], 16
515+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[N_OR]], -111
516+
; CHECK-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
517+
; CHECK: if.then:
518+
; CHECK-NEXT: [[R:%.*]] = icmp slt i8 [[N]], 0
519+
; CHECK-NEXT: ret i1 [[R]]
520+
; CHECK: if.else:
521+
; CHECK-NEXT: ret i1 [[OTHER:%.*]]
522+
;
523+
entry:
524+
%n_or = or i8 %n, 16
525+
%cmp = icmp ugt i8 %n_or, 145
526+
br i1 %cmp, label %if.then, label %if.else
527+
528+
if.then:
529+
%r = icmp slt i8 %n, 0
530+
ret i1 %r
531+
532+
if.else:
533+
ret i1 %other
534+
}
535+
536+
537+
486538
declare void @use(i1)
487539
declare void @sink(i8)

0 commit comments

Comments
 (0)