[InstCombine] Support ssub.sat canonicalization for non-splats
authorNikita Popov <nikita.ppv@gmail.com>
Sat, 1 Dec 2018 10:58:34 +0000 (10:58 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Sat, 1 Dec 2018 10:58:34 +0000 (10:58 +0000)
commit0c5d6ccbfc089b3335a78d910febff44c3dd622c
tree3e286d283381129ed31af749e6144b4d36b8ca92
parent958b94d6791a345e2221ee4291cb209a7ec579ba
[InstCombine] Support ssub.sat canonicalization for non-splats

Extend ssub.sat(X, C) -> sadd.sat(X, -C) canonicalization to also
support non-splat vector constants. This is done by generalizing
the implementation of the isNotMinSignedValue() helper to return
true for constants that are non-splat, but don't contain any
signed min elements.

Differential Revision: https://reviews.llvm.org/D55011

llvm-svn: 348072
llvm/lib/IR/Constants.cpp
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/test/Transforms/InstCombine/saturating-add-sub.ll