xref: /llvm-project/llvm/test/Transforms/ConstraintElimination/debug.ll (revision 26fbdff458ed8a829f732074c06f289b92867a82)
1c1bfa414SFlorian Hahn; RUN: opt -passes=constraint-elimination -S -debug %s 2>&1 | FileCheck %s
2c1bfa414SFlorian Hahn
3c1bfa414SFlorian Hahn; REQUIRES: asserts
4c1bfa414SFlorian Hahn
5c1bfa414SFlorian Hahndefine i1 @test_and_ule(i4 %x, i4 %y, i4 %z) {
6*26fbdff4SYingwei Zheng; CHECK:      Processing fact to add to the system: icmp ule i4 %x, %y
7*26fbdff4SYingwei Zheng; CHECK-NEXT: Adding 'icmp ule i4 %x, %y'
8c1bfa414SFlorian Hahn; CHECK-NEXT:  constraint: %x + -1 * %y <= 0
9c1bfa414SFlorian Hahn
10*26fbdff4SYingwei Zheng; CHECK:      Processing fact to add to the system: icmp ule i4 %y, %z
11*26fbdff4SYingwei Zheng; CHECK-NEXT: Adding 'icmp ule i4 %y, %z'
12c1bfa414SFlorian Hahn; CHECK-NEXT:  constraint: %y + -1 * %z <= 0
13c1bfa414SFlorian Hahn
14c1bfa414SFlorian Hahn; CHECK: Checking   %t.1 = icmp ule i4 %x, %z
15*26fbdff4SYingwei Zheng; CHECK: Condition icmp ule i4 %x, %z implied by dominating constraints
16c1bfa414SFlorian Hahn
1794976800SFlorian Hahn; CHECK: Removing %y + -1 * %z <= 0
1857606bb3SFlorian Hahn; CHECK: Removing %x + -1 * %y <= 0
1957606bb3SFlorian Hahn
20c1bfa414SFlorian Hahnentry:
21c1bfa414SFlorian Hahn  %c.1 = icmp ule i4 %x, %y
22c1bfa414SFlorian Hahn  %c.2 = icmp ule i4 %y, %z
23c1bfa414SFlorian Hahn  %and = and i1 %c.1, %c.2
24c1bfa414SFlorian Hahn  br i1 %and, label %bb1, label %exit
25c1bfa414SFlorian Hahn
26c1bfa414SFlorian Hahnbb1:
27c1bfa414SFlorian Hahn  %t.1 = icmp ule i4 %x, %z
28c1bfa414SFlorian Hahn  ret i1 %t.1
29c1bfa414SFlorian Hahn
30c1bfa414SFlorian Hahnexit:
31c1bfa414SFlorian Hahn  %c.3 = icmp ule i4 %x, %z
32c1bfa414SFlorian Hahn  ret i1 %c.3
33c1bfa414SFlorian Hahn}
34420cf63eSAntonio Frighetto
35420cf63eSAntonio Frighettodefine i1 @test_and_ugt(i4 %x, i4 %y, i4 %z) {
36*26fbdff4SYingwei Zheng; CHECK:      Processing fact to add to the system: icmp ugt i4 %x, %y
37*26fbdff4SYingwei Zheng; CHECK-NEXT: Adding 'icmp ugt i4 %x, %y'
38420cf63eSAntonio Frighetto; CHECK-NEXT:  constraint: -1 * %x + %y <= -1
39420cf63eSAntonio Frighetto
40*26fbdff4SYingwei Zheng; CHECK:      Processing fact to add to the system: icmp ugt i4 %y, %z
41*26fbdff4SYingwei Zheng; CHECK-NEXT: Adding 'icmp ugt i4 %y, %z'
42420cf63eSAntonio Frighetto; CHECK-NEXT:  constraint: -1 * %y + %z <= -1
43420cf63eSAntonio Frighetto
44420cf63eSAntonio Frighetto; CHECK: Checking   %f.1 = icmp ule i4 %x, %z
45*26fbdff4SYingwei Zheng; CHECK: Condition icmp ugt i4 %x, %z implied by dominating constraints
46420cf63eSAntonio Frighetto
47420cf63eSAntonio Frighetto; CHECK: Removing -1 * %y + %z <= -1
48420cf63eSAntonio Frighetto; CHECK: Removing -1 * %x + %y <= -1
49420cf63eSAntonio Frighetto
50420cf63eSAntonio Frighettoentry:
51420cf63eSAntonio Frighetto  %c.1 = icmp ugt i4 %x, %y
52420cf63eSAntonio Frighetto  %c.2 = icmp ugt i4 %y, %z
53420cf63eSAntonio Frighetto  %and = and i1 %c.1, %c.2
54420cf63eSAntonio Frighetto  br i1 %and, label %bb1, label %exit
55420cf63eSAntonio Frighetto
56420cf63eSAntonio Frighettobb1:
57420cf63eSAntonio Frighetto  %f.1 = icmp ule i4 %x, %z
58420cf63eSAntonio Frighetto  ret i1 %f.1
59420cf63eSAntonio Frighetto
60420cf63eSAntonio Frighettoexit:
61420cf63eSAntonio Frighetto  %c.3 = icmp ule i4 %x, %z
62420cf63eSAntonio Frighetto  ret i1 %c.3
63420cf63eSAntonio Frighetto}
64