allwinner_a64/android/external/llvm/lib/Analysis
2018-08-08 16:14:42 +08:00
..
AliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
AliasAnalysisEvaluator.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
AliasAnalysisSummary.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
AliasAnalysisSummary.h upload android base code part2 2018-08-08 16:14:42 +08:00
AliasSetTracker.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Analysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Android.bp upload android base code part2 2018-08-08 16:14:42 +08:00
AssumptionCache.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
BasicAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
BlockFrequencyInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
BlockFrequencyInfoImpl.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
BranchProbabilityInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CallGraph.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CallGraphSCCPass.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CallPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CaptureTracking.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CFG.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CFGPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CFLAndersAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CFLGraph.h upload android base code part2 2018-08-08 16:14:42 +08:00
CFLSteensAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CGSCCPassManager.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CMakeLists.txt upload android base code part2 2018-08-08 16:14:42 +08:00
CodeMetrics.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ConstantFolding.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
CostModel.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Delinearization.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
DemandedBits.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
DependenceAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
DivergenceAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
DominanceFrontier.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
DomPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
EHPersonalities.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
GlobalsModRef.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
IndirectCallPromotionAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
InlineCost.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
InstCount.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
InstructionSimplify.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Interval.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
IntervalPartition.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
IteratedDominanceFrontier.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
IVUsers.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LazyBlockFrequencyInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LazyCallGraph.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LazyValueInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Lint.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LLVMBuild.txt upload android base code part2 2018-08-08 16:14:42 +08:00
Loads.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LoopAccessAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LoopInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LoopPass.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LoopPassManager.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
LoopUnrollAnalyzer.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
MemDepPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
MemDerefPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
MemoryBuiltins.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
MemoryDependenceAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
MemoryLocation.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ModuleDebugInfoPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ModuleSummaryAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ObjCARCAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ObjCARCAnalysisUtils.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ObjCARCInstKind.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
OrderedBasicBlock.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
PHITransAddr.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
PostDominators.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ProfileSummaryInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
PtrUseVisitor.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
README.txt upload android base code part2 2018-08-08 16:14:42 +08:00
RegionInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
RegionPass.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
RegionPrinter.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ScalarEvolution.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ScalarEvolutionAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ScalarEvolutionExpander.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ScalarEvolutionNormalization.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ScopedNoAliasAA.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
SparsePropagation.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
StratifiedSets.h upload android base code part2 2018-08-08 16:14:42 +08:00
TargetLibraryInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
TargetTransformInfo.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
Trace.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
TypeBasedAliasAnalysis.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
TypeMetadataUtils.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
ValueTracking.cpp upload android base code part2 2018-08-08 16:14:42 +08:00
VectorUtils.cpp upload android base code part2 2018-08-08 16:14:42 +08:00

Analysis Opportunities:

//===---------------------------------------------------------------------===//

In test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll, the
ScalarEvolution expression for %r is this:

  {1,+,3,+,2}<loop>

Outside the loop, this could be evaluated simply as (%n * %n), however
ScalarEvolution currently evaluates it as

  (-2 + (2 * (trunc i65 (((zext i64 (-2 + %n) to i65) * (zext i64 (-1 + %n) to i65)) /u 2) to i64)) + (3 * %n))

In addition to being much more complicated, it involves i65 arithmetic,
which is very inefficient when expanded into code.

//===---------------------------------------------------------------------===//

In formatValue in test/CodeGen/X86/lsr-delayed-fold.ll,

ScalarEvolution is forming this expression:

((trunc i64 (-1 * %arg5) to i32) + (trunc i64 %arg5 to i32) + (-1 * (trunc i64 undef to i32)))

This could be folded to

(-1 * (trunc i64 undef to i32))

//===---------------------------------------------------------------------===//