Tex Riddell 7c9e487afd Implement IsHelperLane() (#3382) %!s(int64=4) %!d(string=hai) anos
..
IPA 4391420da4 Integration from OS repo (#2541) %!s(int64=6) %!d(string=hai) anos
AliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
AliasAnalysisCounter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
AliasAnalysisEvaluator.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
AliasDebugger.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
AliasSetTracker.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
Analysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
AssumptionCache.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
BasicAliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
BlockFrequencyInfo.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
BlockFrequencyInfoImpl.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
BranchProbabilityInfo.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
CFG.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
CFGPrinter.cpp bbe8831fe1 fix dot-cfg so it doesn't act like dot-cfg-only (#556) %!s(int64=8) %!d(string=hai) anos
CFLAliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
CGSCCPassManager.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
CMakeLists.txt 2ac188b4ce Minor refactoring to reduce size of dxilconv.dll (#3240) %!s(int64=4) %!d(string=hai) anos
CaptureTracking.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
CodeMetrics.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ConstantFolding.cpp b9f2c78314 [linux-port] Evade unused in LLVM code (#1327) %!s(int64=7) %!d(string=hai) anos
CostModel.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
Delinearization.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
DependenceAnalysis.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
DivergenceAnalysis.cpp e5c0e5ffaa Merge DivergenceAnalysis from llvm3.8. (#528) %!s(int64=8) %!d(string=hai) anos
DomPrinter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
DominanceFrontier.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
DxilConstantFolding.cpp 7c9e487afd Implement IsHelperLane() (#3382) %!s(int64=4) %!d(string=hai) anos
DxilConstantFoldingExt.cpp 022eb5717f Add hooks for constant folding extensions (#209) %!s(int64=8) %!d(string=hai) anos
DxilSimplify.cpp d8dec0efd7 Fixed some cases where O0 fails compilation (#3205) %!s(int64=5) %!d(string=hai) anos
DxilValueCache.cpp 91df0242a3 Not assuming callee being a function in DVC (#3206) %!s(int64=5) %!d(string=hai) anos
IVUsers.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
InstCount.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
InstructionSimplify.cpp d8dec0efd7 Fixed some cases where O0 fails compilation (#3205) %!s(int64=5) %!d(string=hai) anos
Interval.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
IntervalPartition.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
IteratedDominanceFrontier.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LLVMBuild.txt f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LazyCallGraph.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LazyValueInfo.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LibCallAliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LibCallSemantics.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
Lint.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
Loads.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
LoopAccessAnalysis.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
LoopInfo.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
LoopPass.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
MemDepPrinter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
MemDerefPrinter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
MemoryBuiltins.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
MemoryDependenceAnalysis.cpp 08f3100f25 Increase scan limit for DSE, add option (#2725) %!s(int64=5) %!d(string=hai) anos
MemoryLocation.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ModuleDebugInfoPrinter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
NoAliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
PHITransAddr.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
PostDominators.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
PtrUseVisitor.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
README.txt f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ReducibilityAnalysis.cpp fbe1371aae Fix Validation for RDAT and other issues with Subobjects (#1706) %!s(int64=6) %!d(string=hai) anos
RegionPass.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
ScalarEvolution.cpp 227c8e6f5a Added instructions to preserve intermediate values of computations. (#2721) %!s(int64=5) %!d(string=hai) anos
ScalarEvolutionAliasAnalysis.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ScalarEvolutionExpander.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ScalarEvolutionNormalization.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
ScopedNoAliasAA.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
SparsePropagation.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
StratifiedSets.h f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
TargetLibraryInfo.cpp 4aa0ac6c50 [linux-port] Fix GCC build on alpine Linux (and others) (#1378) %!s(int64=7) %!d(string=hai) anos
TargetTransformInfo.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
Trace.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos
TypeBasedAliasAnalysis.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
ValueTracking.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
VectorUtils.cpp 2ac188b4ce Minor refactoring to reduce size of dxilconv.dll (#3240) %!s(int64=4) %!d(string=hai) anos
VectorUtils2.cpp 2ac188b4ce Minor refactoring to reduce size of dxilconv.dll (#3240) %!s(int64=4) %!d(string=hai) anos
regioninfo.cpp d5bb3089cf Add support for custom allocators (#390) %!s(int64=8) %!d(string=hai) anos
regionprinter.cpp f805233b49 Revert license text in banner comments to original llvm verbage (#33) %!s(int64=8) %!d(string=hai) anos

README.txt

Analysis Opportunities:

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

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

{1,+,3,+,2}

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

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