aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-10-20 19:50:31 +0000
committerNikita Popov <nikita.ppv@gmail.com>2019-10-20 19:50:31 +0000
commit3ab0cb15c09776e346e9983492952d3aed6c4276 (patch)
treeed1a7497cebf22451e8a6508a37d2e2576c4062f /test
parent32d24a32499cde9bc29007725db22de076d5b0e0 (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.ll44
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) {