xref: /llvm-project/llvm/test/Transforms/ConstraintElimination/debug.ll (revision 57606bb356199dbb51c20f28bd57f6c34c521abf)
1c1bfa414SFlorian Hahn; RUN: opt -passes=constraint-elimination -S -debug %s 2>&1 | FileCheck %s
2c1bfa414SFlorian Hahn
3c1bfa414SFlorian Hahn; REQUIRES: asserts
4c1bfa414SFlorian Hahn
5c1bfa414SFlorian Hahndeclare void @use(i1)
6c1bfa414SFlorian Hahn
7c1bfa414SFlorian Hahndefine i1 @test_and_ule(i4 %x, i4 %y, i4 %z) {
86887cfb9SFlorian Hahn; CHECK:      Processing fact to add to the system:  %c.1 = icmp ule i4 %x, %y
9c1bfa414SFlorian Hahn; CHECK-NEXT: Adding 'ule %x, %y'
10c1bfa414SFlorian Hahn; CHECK-NEXT:  constraint: %x + -1 * %y <= 0
11c1bfa414SFlorian Hahn
126887cfb9SFlorian Hahn; CHECK:      Processing fact to add to the system:  %c.2 = icmp ule i4 %y, %z
13c1bfa414SFlorian Hahn; CHECK-NEXT: Adding 'ule %y, %z'
14c1bfa414SFlorian Hahn; CHECK-NEXT:  constraint: %y + -1 * %z <= 0
15c1bfa414SFlorian Hahn
16c1bfa414SFlorian Hahn; CHECK: Checking   %t.1 = icmp ule i4 %x, %z
17c1bfa414SFlorian Hahn; CHECK: Condition   %t.1 = icmp ule i4 %x, %z implied by dominating constraints
18c1bfa414SFlorian Hahn
19*57606bb3SFlorian Hahn; CHECK: Removing %x + -1 * %y <= 0
20*57606bb3SFlorian Hahn; CHECK: Removing %x + -1 * %y <= 0
21*57606bb3SFlorian Hahn
22c1bfa414SFlorian Hahnentry:
23c1bfa414SFlorian Hahn  %c.1 = icmp ule i4 %x, %y
24c1bfa414SFlorian Hahn  %c.2 = icmp ule i4 %y, %z
25c1bfa414SFlorian Hahn  %and = and i1 %c.1, %c.2
26c1bfa414SFlorian Hahn  br i1 %and, label %bb1, label %exit
27c1bfa414SFlorian Hahn
28c1bfa414SFlorian Hahnbb1:
29c1bfa414SFlorian Hahn  %t.1 = icmp ule i4 %x, %z
30c1bfa414SFlorian Hahn  ret i1 %t.1
31c1bfa414SFlorian Hahn
32c1bfa414SFlorian Hahnexit:
33c1bfa414SFlorian Hahn  %c.3 = icmp ule i4 %x, %z
34c1bfa414SFlorian Hahn  ret i1 %c.3
35c1bfa414SFlorian Hahn}
36