summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/with_overflow.ll
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-04-10 07:10:53 +0000
committerNikita Popov <nikita.ppv@gmail.com>2019-04-10 07:10:53 +0000
commit09020ec2a7199fca2835e6dbbac9d89f9222a843 (patch)
tree4f88088ed07b425ff6b33645a587a5d4efd6efd8 /llvm/test/Transforms/InstCombine/with_overflow.ll
parent596cbeb7058b98518952612069e2bb0b13863ef8 (diff)
downloadbcm5719-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.ll5
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)
OpenPOWER on IntegriCloud