[KnownBits] Add bit counting methods to KnownBits struct and use them where possible
authorCraig Topper <craig.topper@gmail.com>
Fri, 12 May 2017 17:20:30 +0000 (17:20 +0000)
committerCraig Topper <craig.topper@gmail.com>
Fri, 12 May 2017 17:20:30 +0000 (17:20 +0000)
commit8df66c602a3186d4c4dd680693930c1b8d5ff4fe
tree55059f7ad4fc6052ebd901af6bf7e4346308b217
parent999f74ad59d4f393014a051035b33383eb71c57a
[KnownBits] Add bit counting methods to KnownBits struct and use them where possible

This patch adds min/max population count, leading/trailing zero/one bit counting methods.

The min methods return answers based on bits that are known without considering unknown bits. The max methods give answers taking into account the largest count that unknown bits could give.

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

llvm-svn: 302925
17 files changed:
llvm/include/llvm/Support/KnownBits.h
llvm/lib/Analysis/DemandedBits.cpp
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/lib/Analysis/ScalarEvolution.cpp
llvm/lib/Analysis/ValueTracking.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/XCore/XCoreISelLowering.cpp
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/lib/Transforms/Utils/BypassSlowDivision.cpp
llvm/lib/Transforms/Utils/Local.cpp
llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp