diff options
Diffstat (limited to 'test/Transforms/InstCombine')
-rw-r--r-- | test/Transforms/InstCombine/icmp.ll | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/icmp.ll b/test/Transforms/InstCombine/icmp.ll index 446c0e01dc..28fa33ba41 100644 --- a/test/Transforms/InstCombine/icmp.ll +++ b/test/Transforms/InstCombine/icmp.ll @@ -886,3 +886,55 @@ define i1 @icmp_mul0_ne0(i32 %x) { %cmp = icmp ne i32 %mul, 0 ret i1 %cmp } + +; CHECK: @icmp_sub1_sge +; CHECK-NEXT: icmp sgt i32 %x, %y +define i1 @icmp_sub1_sge(i32 %x, i32 %y) { + %sub = add nsw i32 %x, -1 + %cmp = icmp sge i32 %sub, %y + ret i1 %cmp +} + +; CHECK: @icmp_add1_sgt +; CHECK-NEXT: icmp sge i32 %x, %y +define i1 @icmp_add1_sgt(i32 %x, i32 %y) { + %add = add nsw i32 %x, 1 + %cmp = icmp sgt i32 %add, %y + ret i1 %cmp +} + +; CHECK: @icmp_sub1_slt +; CHECK-NEXT: icmp sle i32 %x, %y +define i1 @icmp_sub1_slt(i32 %x, i32 %y) { + %sub = add nsw i32 %x, -1 + %cmp = icmp slt i32 %sub, %y + ret i1 %cmp +} + +; CHECK: @icmp_add1_sle +; CHECK-NEXT: icmp slt i32 %x, %y +define i1 @icmp_add1_sle(i32 %x, i32 %y) { + %add = add nsw i32 %x, 1 + %cmp = icmp sle i32 %add, %y + ret i1 %cmp +} + +; CHECK: @icmp_add20_sge_add57 +; CHECK-NEXT: [[ADD:%[a-z0-9]+]] = add nsw i32 %y, 37 +; CHECK-NEXT: icmp sle i32 [[ADD]], %x +define i1 @icmp_add20_sge_add57(i32 %x, i32 %y) { + %1 = add nsw i32 %x, 20 + %2 = add nsw i32 %y, 57 + %cmp = icmp sge i32 %1, %2 + ret i1 %cmp +} + +; CHECK: @icmp_sub57_sge_sub20 +; CHECK-NEXT: [[SUB:%[a-z0-9]+]] = add nsw i32 %x, -37 +; CHECK-NEXT: icmp sge i32 [[SUB]], %y +define i1 @icmp_sub57_sge_sub20(i32 %x, i32 %y) { + %1 = add nsw i32 %x, -57 + %2 = add nsw i32 %y, -20 + %cmp = icmp sge i32 %1, %2 + ret i1 %cmp +} |