1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 05:23:45 +02:00
llvm-mirror/test/Analysis
Michael Zolotukhin 20e33533a3 [SCEV] Compute affine range in another way to avoid bitwidth extending.
Summary:
This approach has two major advantages over the existing one:
1. We don't need to extend bitwidth in our computations. Extending
bitwidth is a big issue for compile time as we often end up working with
APInts wider than 64bit, which is a slow case for APInt.
2. When we zero extend a wrapped range, we lose some information (we
replace the range with [0, 1 << src bit width)). Thus, avoiding such
extensions better preserves information.

Correctness testing:
I ran 'ninja check' with assertions that the new implementation of
getRangeForAffineAR gives the same results as the old one (this
functionality is not present in this patch). There were several failures
- I inspected them manually and found out that they all are caused by
the fact that we're returning more accurate results now (see bullet (2)
above).
Without such assertions 'ninja check' works just fine, as well as
SPEC2006.

Compile time testing:
CTMark/Os:
 - mafft/pairlocalalign	-16.98%
 - tramp3d-v4/tramp3d-v4	-12.72%
 - lencod/lencod	-11.51%
 - Bullet/bullet	-4.36%
 - ClamAV/clamscan	-3.66%
 - 7zip/7zip-benchmark	-3.19%
 - sqlite3/sqlite3	-2.95%
 - SPASS/SPASS	-2.74%
 - Average	-5.81%

Performance testing:
The changes are expected to be neutral for runtime performance.

Reviewers: sanjoy, atrick, pete

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D30477

llvm-svn: 297992
2017-03-16 21:07:38 +00:00
..
AliasSet [AliasSetTracker] Make AST smarter about assume intrinsics that don't actually affect memory. 2016-11-07 14:11:45 +00:00
AssumptionCache Add files I seem to have dropped in my revert (r290086). 2016-12-19 08:32:13 +00:00
BasicAA [BasicAA] Take attributes into account when requesting modref info for a call site 2017-03-01 13:19:51 +00:00
BlockFrequencyInfo
BranchProbabilityInfo Enhance calcColdCallHeuristics for InvokeInst 2016-09-23 17:26:14 +00:00
CallGraph
CFLAliasAnalysis [Verifier] Add verification for TBAA metadata 2016-12-11 20:07:15 +00:00
ConstantFolding [ConstantFold] Fix defect in constant folding computation for GEP 2017-03-08 23:01:50 +00:00
CostModel [BasicTTIImpl] Bugfix in getIntrinsicInstrCost() 2017-03-16 14:05:34 +00:00
Delinearization [ValueTracking] Make poison propagation more aggressive 2017-02-22 06:52:32 +00:00
DemandedBits
DependenceAnalysis
DivergenceAnalysis AMDGPU: Remove SI_fs_constant and SI_fs_interp intrinsics 2017-02-16 02:01:13 +00:00
DominanceFrontier
Dominators
GlobalsModRef Fix regression from my recent GlobalsAA fix. 2016-10-24 21:47:44 +00:00
IVUsers [PM] Teach the LoopPassManager to automatically canonicalize loops by 2017-01-17 19:18:12 +00:00
LazyCallGraph
LazyValueAnalysis [PM] Teach LVI to correctly invalidate itself when its dependencies 2017-01-23 06:35:12 +00:00
Lint
LoopAccessAnalysis [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +00:00
LoopInfo
MemoryDependenceAnalysis [PM] The assumption cache is fundamentally designed to be self-updating, 2017-01-15 00:26:18 +00:00
PostDominators Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
ProfileSummary
RegionInfo Fix minor typo introduce in r297014 2017-03-06 16:03:26 +00:00
ScalarEvolution [SCEV] Compute affine range in another way to avoid bitwidth extending. 2017-03-16 21:07:38 +00:00
ScopedNoAliasAA
TypeBasedAliasAnalysis [TBAAVerifier] Be stricter around verifying scalar nodes 2016-12-29 15:47:05 +00:00
ValueTracking [ValueTracking] use nonnull argument attribute to eliminate null checks 2017-02-12 15:35:34 +00:00
alias-analysis-uses.ll