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