[DAG] fold negation of sign-bit
authorSanjay Patel <spatel@rotateright.com>
Fri, 21 Oct 2016 17:24:26 +0000 (17:24 +0000)
committerSanjay Patel <spatel@rotateright.com>
Fri, 21 Oct 2016 17:24:26 +0000 (17:24 +0000)
commit81029f6a762527c7f31840b5a48e828e46358b43
tree8a55d7388151805de84f3009d1d84fe0dd0c2df4
parent9fb40e3bbdf4d01f3c527725608b83adc3579d90
[DAG] fold negation of sign-bit

0 - X --> 0, if the sub is NUW
0 - X --> 0, if X is 0 or the minimum signed value and the sub is NSW
0 - X --> X, if X is 0 or the minimum signed value

This is the DAG equivalent of:
https://reviews.llvm.org/rL284649

plus the fold for the NUW case which already existed in InstSimplify.

Note that we miss a vector fold because of a deficiency in the DAG version of
computeKnownBits().

llvm-svn: 284844
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/X86/negate.ll