mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
c5d014c133
This patch introduces a new KnownBits struct that wraps the two APInt used by computeKnownBits. This allows us to treat them as more of a unit. Initially I've just altered the signatures of computeKnownBits and InstCombine's simplifyDemandedBits to pass a KnownBits reference instead of two separate APInt references. I'll do similar to the SelectionDAG version of computeKnownBits/simplifyDemandedBits as a separate patch. I've added a constructor that allows initializing both APInts to the same bit width with a starting value of 0. This reduces the repeated pattern of initializing both APInts. Once place default constructed the APInts so I added a default constructor for those cases. Going forward I would like to add more methods that will work on the pairs. For example trunc, zext, and sext occur on both APInts together in several places. We should probably add a clear method that can be used to clear both pieces. Maybe a method to check for conflicting information. A method to return (Zero|One) so we don't write it out everywhere. Maybe a method for (Zero|One).isAllOnesValue() to determine if all bits are known. I'm sure there are many other methods we can come up with. Differential Revision: https://reviews.llvm.org/D32376 llvm-svn: 301432 |
||
---|---|---|
.. | ||
AddDiscriminators.cpp | ||
ASanStackFrameLayout.cpp | ||
BasicBlockUtils.cpp | ||
BreakCriticalEdges.cpp | ||
BuildLibCalls.cpp | ||
BypassSlowDivision.cpp | ||
CloneFunction.cpp | ||
CloneModule.cpp | ||
CMakeLists.txt | ||
CmpInstAnalysis.cpp | ||
CodeExtractor.cpp | ||
CtorUtils.cpp | ||
DemoteRegToStack.cpp | ||
EscapeEnumerator.cpp | ||
Evaluator.cpp | ||
FlattenCFG.cpp | ||
FunctionComparator.cpp | ||
FunctionImportUtils.cpp | ||
GlobalStatus.cpp | ||
ImportedFunctionsInliningStatistics.cpp | ||
InlineFunction.cpp | ||
InstructionNamer.cpp | ||
IntegerDivision.cpp | ||
LCSSA.cpp | ||
LibCallsShrinkWrap.cpp | ||
LLVMBuild.txt | ||
Local.cpp | ||
LoopSimplify.cpp | ||
LoopUnroll.cpp | ||
LoopUnrollPeel.cpp | ||
LoopUnrollRuntime.cpp | ||
LoopUtils.cpp | ||
LoopVersioning.cpp | ||
LowerInvoke.cpp | ||
LowerMemIntrinsics.cpp | ||
LowerSwitch.cpp | ||
Mem2Reg.cpp | ||
MetaRenamer.cpp | ||
ModuleUtils.cpp | ||
NameAnonGlobals.cpp | ||
PredicateInfo.cpp | ||
PromoteMemoryToRegister.cpp | ||
SanitizerStats.cpp | ||
SimplifyCFG.cpp | ||
SimplifyIndVar.cpp | ||
SimplifyInstructions.cpp | ||
SimplifyLibCalls.cpp | ||
SplitModule.cpp | ||
SSAUpdater.cpp | ||
StripGCRelocates.cpp | ||
StripNonLineTableDebugInfo.cpp | ||
SymbolRewriter.cpp | ||
UnifyFunctionExitNodes.cpp | ||
Utils.cpp | ||
ValueMapper.cpp | ||
VNCoercion.cpp |