diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-20 19:50:31 +0000 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-20 19:50:31 +0000 |
commit | 3ab0cb15c09776e346e9983492952d3aed6c4276 (patch) | |
tree | ed1a7497cebf22451e8a6508a37d2e2576c4062f /test | |
parent | 32d24a32499cde9bc29007725db22de076d5b0e0 (diff) |
[InstCombine] Add tests for uadd/sub.sat(a, b) == 0; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375372 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Transforms/InstCombine/saturating-add-sub.ll | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/saturating-add-sub.ll b/test/Transforms/InstCombine/saturating-add-sub.ll index 364c80d205f..fa40baadec9 100644 --- a/test/Transforms/InstCombine/saturating-add-sub.ll +++ b/test/Transforms/InstCombine/saturating-add-sub.ll @@ -1156,6 +1156,50 @@ define i8 @test_scalar_uadd_sub_const(i8 %a) { ret i8 %res } +define i1 @scalar_uadd_eq_zero(i8 %a, i8 %b) { +; CHECK-LABEL: @scalar_uadd_eq_zero( +; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.uadd.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]]) +; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[SAT]], 0 +; CHECK-NEXT: ret i1 [[CMP]] +; + %sat = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %b) + %cmp = icmp eq i8 %sat, 0 + ret i1 %cmp +} + +define i1 @scalar_uadd_ne_zero(i8 %a, i8 %b) { +; CHECK-LABEL: @scalar_uadd_ne_zero( +; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.uadd.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]]) +; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[SAT]], 0 +; CHECK-NEXT: ret i1 [[CMP]] +; + %sat = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %b) + %cmp = icmp ne i8 %sat, 0 + ret i1 %cmp +} + +define i1 @scalar_usub_eq_zero(i8 %a, i8 %b) { +; CHECK-LABEL: @scalar_usub_eq_zero( +; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]]) +; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[SAT]], 0 +; CHECK-NEXT: ret i1 [[CMP]] +; + %sat = call i8 @llvm.usub.sat.i8(i8 %a, i8 %b) + %cmp = icmp eq i8 %sat, 0 + ret i1 %cmp +} + +define i1 @scalar_usub_ne_zero(i8 %a, i8 %b) { +; CHECK-LABEL: @scalar_usub_ne_zero( +; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]]) +; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[SAT]], 0 +; CHECK-NEXT: ret i1 [[CMP]] +; + %sat = call i8 @llvm.usub.sat.i8(i8 %a, i8 %b) + %cmp = icmp ne i8 %sat, 0 + ret i1 %cmp +} + ; Raw IR tests define i32 @uadd_sat(i32 %x, i32 %y) { |