[SelectionDAG] ComputeNumSignBits - support constant pool values from target
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 4 Jun 2019 10:49:06 +0000 (10:49 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 4 Jun 2019 10:49:06 +0000 (10:49 +0000)
commitad298f86b7ad2ab09a05e75663a8d0f621e478e6
tree9f375a8dc02b4611ae611f76daccdc417adad5fb
parent3178546a2725e95a1a4a9ca4e99d4af7e4a27da9
[SelectionDAG] ComputeNumSignBits - support constant pool values from target

As I mentioned on D61887 we don't get many hits on ComputeNumSignBits as we did on computeKnownBits.

The case we do get is interesting though - it allows us to use the 'ConditionalNegate' combine in combineLogicBlendIntoPBLENDV to remove a select.

It comes too late for SSE41 (BLENDV) cases, but SSE2 tests can hit it now. We should probably try to make use of this for SSE41+ targets as well - avoiding variable blends is usually a good idea. I'll investigate as a followup.

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

llvm-svn: 362486
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/test/CodeGen/X86/combine-sdiv.ll