xref: /llvm-project/llvm/test/Transforms/ConstraintElimination/ugt-ule.ll (revision 13ffde316a8541d77116bd18f73efada236617f3)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -passes=constraint-elimination -S %s | FileCheck %s
3
4declare void @use(i1)
5
6define void @test(ptr %m, ptr %ptr) {
7; CHECK-LABEL: @test(
8; CHECK-NEXT:  entry:
9; CHECK-NEXT:    [[CMP_1:%.*]] = icmp ult ptr [[M:%.*]], [[PTR:%.*]]
10; CHECK-NEXT:    br i1 [[CMP_1]], label [[BB_1:%.*]], label [[BB_2:%.*]]
11; CHECK:       bb.1:
12; CHECK-NEXT:    call void @use(i1 false)
13; CHECK-NEXT:    ret void
14; CHECK:       bb.2:
15; CHECK-NEXT:    br label [[BB_2_NEXT:%.*]]
16; CHECK:       bb.2.next:
17; CHECK-NEXT:    call void @use(i1 true)
18; CHECK-NEXT:    ret void
19;
20entry:
21  %cmp.1 = icmp ult ptr %m, %ptr
22  br i1 %cmp.1, label %bb.1, label %bb.2
23
24bb.1:
25  %cmp.2 = icmp uge ptr %m, %ptr
26  call void @use(i1 %cmp.2)
27  ret void
28
29bb.2:
30  br label %bb.2.next
31
32bb.2.next:
33  %cmp.3 = icmp uge ptr %m, %ptr
34  call void @use(i1 %cmp.3)
35  ret void
36}
37