1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/include/llvm/Analysis
Craig Topper c5d014c133 [ValueTracking] Introduce a KnownBits struct to wrap the two APInts for computeKnownBits
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
2017-04-26 16:39:58 +00:00
..
AliasAnalysis.h AliasAnalysis: Be less conservative about volatile than atomic. 2017-04-07 01:28:36 +00:00
AliasAnalysisEvaluator.h
AliasSetTracker.h Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts 2017-04-26 16:21:02 +00:00
AssumptionCache.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
BasicAliasAnalysis.h De-duplicate some code for creating an AARGetter suitable for the legacy PM. 2017-02-09 23:11:52 +00:00
BlockFrequencyInfo.h
BlockFrequencyInfoImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
BranchProbabilityInfo.h [BPI] Refactor post domination calculation and simple fix for ColdCall 2017-04-12 05:42:14 +00:00
CallGraph.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h
CFG.h
CFGPrinter.h [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
CFLAndersAliasAnalysis.h
CFLSteensAliasAnalysis.h
CGSCCPassManager.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
CodeMetrics.h
ConstantFolding.h InstSimplify: Add a hook for shufflevector 2017-04-03 22:05:30 +00:00
DemandedBits.h [ValueTracking] Introduce a KnownBits struct to wrap the two APInts for computeKnownBits 2017-04-26 16:39:58 +00:00
DependenceAnalysis.h
DivergenceAnalysis.h
DominanceFrontier.h
DominanceFrontierImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
EHPersonalities.h
GlobalsModRef.h
IndirectCallPromotionAnalysis.h
IndirectCallSiteVisitor.h Fix the samplepgo indirect call promotion bug: we should not promote a direct call. 2017-02-06 23:33:15 +00:00
InlineCost.h
InstructionSimplify.h Convert CVP to use SimplifyQuery version of SimplifyInstruction. Add AssumptionCache, DominatorTree, TLI if available. 2017-04-26 13:52:13 +00:00
Interval.h
IntervalIterator.h
IntervalPartition.h
IteratedDominanceFrontier.h
IVUsers.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
LazyBlockFrequencyInfo.h [LazyBFI] Fix typos 2017-02-14 17:21:12 +00:00
LazyBranchProbabilityInfo.h Add new pass LazyMachineBlockFrequencyInfo 2017-02-14 17:21:09 +00:00
LazyCallGraph.h [PM/LCG] Teach the LazyCallGraph how to replace a function without 2017-02-09 23:24:13 +00:00
LazyValueInfo.h [LVI] Add an LVI printer pass to capture test LVI cache after transformations 2017-03-22 19:27:12 +00:00
Lint.h
Loads.h Extract FindAvailablePtrLoadStore out of FindAvailableLoadedValue. NFCI 2017-03-19 15:27:52 +00:00
LoopAccessAnalysis.h [SLP] Revert everything that has to do with memory access sorting. 2017-03-10 18:59:07 +00:00
LoopAnalysisManager.h Revert r293017 and fix the actual underlying issue. 2017-02-07 01:50:48 +00:00
LoopInfo.h Avoid unnecessary copies in some for loops 2017-04-24 20:01:03 +00:00
LoopInfoImpl.h Avoid unnecessary copies in some for loops 2017-04-24 20:01:03 +00:00
LoopIterator.h
LoopPass.h
LoopUnrollAnalyzer.h
MemoryBuiltins.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
MemoryDependenceAnalysis.h
MemoryLocation.h
MemorySSA.h MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
MemorySSAUpdater.h MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
ModuleSummaryAnalysis.h
ObjCARCAliasAnalysis.h
ObjCARCAnalysisUtils.h
ObjCARCInstKind.h
ObjectUtils.h Move llvm::canBeOmittedFromSymbolTable() to Analysis. 2017-03-31 04:46:31 +00:00
OptimizationDiagnosticInfo.h [ORE] Remove ORE.emit{{.+}} functions 2017-02-23 21:32:53 +00:00
OrderedBasicBlock.h
Passes.h
PHITransAddr.h
PostDominators.h
ProfileSummaryInfo.h Use isFunctionHotInCallGraph to set the function section prefix. 2017-03-23 23:14:11 +00:00
PtrUseVisitor.h [IR/Analysis] Defend against getting slightly wrong template arguments 2017-02-07 03:17:30 +00:00
RegionInfo.h [RegionInfo] Fix dangling references created by moving RegionInfo objects 2017-04-24 11:54:37 +00:00
RegionInfoImpl.h
RegionIterator.h
RegionPass.h
RegionPrinter.h
ScalarEvolution.h [SCEV] Fix exponential time complexity by caching 2017-04-24 00:09:46 +00:00
ScalarEvolutionAliasAnalysis.h
ScalarEvolutionExpander.h Reverts commit r301424, r301425 and r301426 2017-04-26 16:37:05 +00:00
ScalarEvolutionExpressions.h Use range-for in a few places 2017-04-14 17:42:12 +00:00
ScalarEvolutionNormalization.h Add missing #include 2017-04-14 17:25:23 +00:00
ScopedNoAliasAA.h
SparsePropagation.h
TargetFolder.h
TargetLibraryInfo.def
TargetLibraryInfo.h
TargetTransformInfo.h [LoopVectorizer, TTI] New method supportsEfficientVectorElementLoadStore() 2017-04-12 12:41:37 +00:00
TargetTransformInfoImpl.h [LoopVectorizer, TTI] New method supportsEfficientVectorElementLoadStore() 2017-04-12 12:41:37 +00:00
Trace.h
TypeBasedAliasAnalysis.h
TypeMetadataUtils.h
ValueTracking.h [ValueTracking] Introduce a KnownBits struct to wrap the two APInts for computeKnownBits 2017-04-26 16:39:58 +00:00
VectorUtils.h