diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 07:10:53 +0000 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-10 07:10:53 +0000 |
commit | 09020ec2a7199fca2835e6dbbac9d89f9222a843 (patch) | |
tree | 4f88088ed07b425ff6b33645a587a5d4efd6efd8 /llvm/test/Transforms/InstCombine/with_overflow.ll | |
parent | 596cbeb7058b98518952612069e2bb0b13863ef8 (diff) | |
download | bcm5719-llvm-09020ec2a7199fca2835e6dbbac9d89f9222a843.tar.gz bcm5719-llvm-09020ec2a7199fca2835e6dbbac9d89f9222a843.zip |
[InstCombine] Handle usubo always overflow
Check AlwaysOverflow condition for usubo. The implementation is the
same as the existing handling for uaddo and umulo. Handling for saddo
and ssubo will follow (smulo doesn't have the necessary ValueTracking
support).
Differential Revision: https://reviews.llvm.org/D60483
llvm-svn: 358052
Diffstat (limited to 'llvm/test/Transforms/InstCombine/with_overflow.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/with_overflow.ll | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/test/Transforms/InstCombine/with_overflow.ll b/llvm/test/Transforms/InstCombine/with_overflow.ll index d5854f4a2f1..d5a727ea194 100644 --- a/llvm/test/Transforms/InstCombine/with_overflow.ll +++ b/llvm/test/Transforms/InstCombine/with_overflow.ll @@ -544,8 +544,9 @@ define { i8, i1 } @uadd_always_overflow(i8 %x) nounwind { define { i8, i1 } @usub_always_overflow(i8 %x) nounwind { ; CHECK-LABEL: @usub_always_overflow( ; CHECK-NEXT: [[Y:%.*]] = or i8 [[X:%.*]], 64 -; CHECK-NEXT: [[A:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 63, i8 [[Y]]) -; CHECK-NEXT: ret { i8, i1 } [[A]] +; CHECK-NEXT: [[A:%.*]] = sub nsw i8 63, [[Y]] +; CHECK-NEXT: [[TMP1:%.*]] = insertvalue { i8, i1 } { i8 undef, i1 true }, i8 [[A]], 0 +; CHECK-NEXT: ret { i8, i1 } [[TMP1]] ; %y = or i8 %x, 64 %a = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 63, i8 %y) |