diff options
author | David Green <david.green@arm.com> | 2019-10-22 15:39:47 +0000 |
---|---|---|
committer | David Green <david.green@arm.com> | 2019-10-22 15:39:47 +0000 |
commit | 186155b89c2d2a2f62337081e3ca15f676c9434b (patch) | |
tree | 2aeeec5ccb68ac73dd8c31b8bfaebd88adab3a1d /llvm/lib/Transforms/InstCombine/InstCombineInternal.h | |
parent | 40c47680eb2a1cb9bb7f8598c319335731bd5204 (diff) | |
download | bcm5719-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.h | 1 |
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. /// |