[InstCombine] Signed saturation patternsmaster
commit2c4ca6832fa6b306ee6a7010bfb80a3f2596f824
authorDavid Green <david.green@arm.com>
Tue, 22 Oct 2019 15:39:47 +0000 (22 15:39 +0000)
committerDavid Green <david.green@arm.com>
Tue, 22 Oct 2019 15:39:47 +0000 (22 15:39 +0000)
treeb978d8fba715be02c4f33013cc94e12267e2c86c
parent6e8533b05630a1e06d39a61270dcbf6d0662b3b5
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375505 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineInternal.h
lib/Transforms/InstCombine/InstCombineSelect.cpp
test/Transforms/InstCombine/sadd_sat.ll