summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2019-10-22 15:39:47 +0000
committerDavid Green <david.green@arm.com>2019-10-22 15:39:47 +0000
commit186155b89c2d2a2f62337081e3ca15f676c9434b (patch)
tree2aeeec5ccb68ac73dd8c31b8bfaebd88adab3a1d /llvm/lib/Transforms/InstCombine/InstCombineInternal.h
parent40c47680eb2a1cb9bb7f8598c319335731bd5204 (diff)
downloadbcm5719-llvm-186155b89c2d2a2f62337081e3ca15f676c9434b.tar.gz
bcm5719-llvm-186155b89c2d2a2f62337081e3ca15f676c9434b.zip
[InstCombine] Signed saturation patterns
This adds an instcombine matcher for code that attempts to perform signed saturating arithmetic by casting to a higher type. Unsigned cases are already matched, this adds extra matches for the more complex signed cases, which involves matching the min(max(add a b)) nodes with proper extends to ensure legality. Differential Revision: https://reviews.llvm.org/D68651 llvm-svn: 375505
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineInternal.h')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineInternal.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
index 4917a355cad..1dbc06d92e7 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -601,6 +601,7 @@ private:
Instruction *narrowMathIfNoOverflow(BinaryOperator &I);
Instruction *narrowRotate(TruncInst &Trunc);
Instruction *optimizeBitCastFromPhi(CastInst &CI, PHINode *PN);
+ Instruction *matchSAddSubSat(SelectInst &MinMax1);
/// Determine if a pair of casts can be replaced by a single cast.
///
OpenPOWER on IntegriCloud