You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jianglk.darker 7ee447c011
v811_spc009_project
4 months ago
..
AliasAnalysis.cpp v811_spc009_project 4 months ago
AliasAnalysisEvaluator.cpp v811_spc009_project 4 months ago
AliasAnalysisSummary.cpp v811_spc009_project 4 months ago
AliasAnalysisSummary.h v811_spc009_project 4 months ago
AliasSetTracker.cpp v811_spc009_project 4 months ago
Analysis.cpp v811_spc009_project 4 months ago
AssumptionCache.cpp v811_spc009_project 4 months ago
BasicAliasAnalysis.cpp v811_spc009_project 4 months ago
BlockFrequencyInfo.cpp v811_spc009_project 4 months ago
BlockFrequencyInfoImpl.cpp v811_spc009_project 4 months ago
BranchProbabilityInfo.cpp v811_spc009_project 4 months ago
CFG.cpp v811_spc009_project 4 months ago
CFGPrinter.cpp v811_spc009_project 4 months ago
CFLAndersAliasAnalysis.cpp v811_spc009_project 4 months ago
CFLGraph.h v811_spc009_project 4 months ago
CFLSteensAliasAnalysis.cpp v811_spc009_project 4 months ago
CGSCCPassManager.cpp v811_spc009_project 4 months ago
CMakeLists.txt v811_spc009_project 4 months ago
CallGraph.cpp v811_spc009_project 4 months ago
CallGraphSCCPass.cpp v811_spc009_project 4 months ago
CallPrinter.cpp v811_spc009_project 4 months ago
CaptureTracking.cpp v811_spc009_project 4 months ago
CmpInstAnalysis.cpp v811_spc009_project 4 months ago
CodeMetrics.cpp v811_spc009_project 4 months ago
ConstantFolding.cpp v811_spc009_project 4 months ago
CostModel.cpp v811_spc009_project 4 months ago
DDG.cpp v811_spc009_project 4 months ago
Delinearization.cpp v811_spc009_project 4 months ago
DemandedBits.cpp v811_spc009_project 4 months ago
DependenceAnalysis.cpp v811_spc009_project 4 months ago
DependenceGraphBuilder.cpp v811_spc009_project 4 months ago
DivergenceAnalysis.cpp v811_spc009_project 4 months ago
DomPrinter.cpp v811_spc009_project 4 months ago
DomTreeUpdater.cpp v811_spc009_project 4 months ago
DominanceFrontier.cpp v811_spc009_project 4 months ago
EHPersonalities.cpp v811_spc009_project 4 months ago
GlobalsModRef.cpp v811_spc009_project 4 months ago
GuardUtils.cpp v811_spc009_project 4 months ago
IVDescriptors.cpp v811_spc009_project 4 months ago
IVUsers.cpp v811_spc009_project 4 months ago
IndirectCallPromotionAnalysis.cpp v811_spc009_project 4 months ago
InlineCost.cpp v811_spc009_project 4 months ago
InstCount.cpp v811_spc009_project 4 months ago
InstructionPrecedenceTracking.cpp v811_spc009_project 4 months ago
InstructionSimplify.cpp v811_spc009_project 4 months ago
Interval.cpp v811_spc009_project 4 months ago
IntervalPartition.cpp v811_spc009_project 4 months ago
LLVMBuild.txt v811_spc009_project 4 months ago
LazyBlockFrequencyInfo.cpp v811_spc009_project 4 months ago
LazyBranchProbabilityInfo.cpp v811_spc009_project 4 months ago
LazyCallGraph.cpp v811_spc009_project 4 months ago
LazyValueInfo.cpp v811_spc009_project 4 months ago
LegacyDivergenceAnalysis.cpp v811_spc009_project 4 months ago
Lint.cpp v811_spc009_project 4 months ago
Loads.cpp v811_spc009_project 4 months ago
LoopAccessAnalysis.cpp v811_spc009_project 4 months ago
LoopAnalysisManager.cpp v811_spc009_project 4 months ago
LoopCacheAnalysis.cpp v811_spc009_project 4 months ago
LoopInfo.cpp v811_spc009_project 4 months ago
LoopPass.cpp v811_spc009_project 4 months ago
LoopUnrollAnalyzer.cpp v811_spc009_project 4 months ago
MemDepPrinter.cpp v811_spc009_project 4 months ago
MemDerefPrinter.cpp v811_spc009_project 4 months ago
MemoryBuiltins.cpp v811_spc009_project 4 months ago
MemoryDependenceAnalysis.cpp v811_spc009_project 4 months ago
MemoryLocation.cpp v811_spc009_project 4 months ago
MemorySSA.cpp v811_spc009_project 4 months ago
MemorySSAUpdater.cpp v811_spc009_project 4 months ago
ModuleDebugInfoPrinter.cpp v811_spc009_project 4 months ago
ModuleSummaryAnalysis.cpp v811_spc009_project 4 months ago
MustExecute.cpp v811_spc009_project 4 months ago
ObjCARCAliasAnalysis.cpp v811_spc009_project 4 months ago
ObjCARCAnalysisUtils.cpp v811_spc009_project 4 months ago
ObjCARCInstKind.cpp v811_spc009_project 4 months ago
OptimizationRemarkEmitter.cpp v811_spc009_project 4 months ago
OrderedBasicBlock.cpp v811_spc009_project 4 months ago
OrderedInstructions.cpp v811_spc009_project 4 months ago
PHITransAddr.cpp v811_spc009_project 4 months ago
PhiValues.cpp v811_spc009_project 4 months ago
PostDominators.cpp v811_spc009_project 4 months ago
ProfileSummaryInfo.cpp v811_spc009_project 4 months ago
PtrUseVisitor.cpp v811_spc009_project 4 months ago
README.txt v811_spc009_project 4 months ago
RegionInfo.cpp v811_spc009_project 4 months ago
RegionPass.cpp v811_spc009_project 4 months ago
RegionPrinter.cpp v811_spc009_project 4 months ago
ScalarEvolution.cpp v811_spc009_project 4 months ago
ScalarEvolutionAliasAnalysis.cpp v811_spc009_project 4 months ago
ScalarEvolutionExpander.cpp v811_spc009_project 4 months ago
ScalarEvolutionNormalization.cpp v811_spc009_project 4 months ago
ScopedNoAliasAA.cpp v811_spc009_project 4 months ago
StackSafetyAnalysis.cpp v811_spc009_project 4 months ago
StratifiedSets.h v811_spc009_project 4 months ago
SyncDependenceAnalysis.cpp v811_spc009_project 4 months ago
SyntheticCountsUtils.cpp v811_spc009_project 4 months ago
TargetLibraryInfo.cpp v811_spc009_project 4 months ago
TargetTransformInfo.cpp v811_spc009_project 4 months ago
Trace.cpp v811_spc009_project 4 months ago
TypeBasedAliasAnalysis.cpp v811_spc009_project 4 months ago
TypeMetadataUtils.cpp v811_spc009_project 4 months ago
VFABIDemangling.cpp v811_spc009_project 4 months ago
ValueLattice.cpp v811_spc009_project 4 months ago
ValueLatticeUtils.cpp v811_spc009_project 4 months ago
ValueTracking.cpp v811_spc009_project 4 months ago
VectorUtils.cpp v811_spc009_project 4 months ago

README.txt

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))

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