[InstCombine] Signed saturation patterns
authorDavid Green <david.green@arm.com>
Tue, 22 Oct 2019 15:39:47 +0000 (15:39 +0000)
committerDavid Green <david.green@arm.com>
Tue, 22 Oct 2019 15:39:47 +0000 (15:39 +0000)
commit186155b89c2d2a2f62337081e3ca15f676c9434b
tree2aeeec5ccb68ac73dd8c31b8bfaebd88adab3a1d
parent40c47680eb2a1cb9bb7f8598c319335731bd5204
[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
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/sadd_sat.ll