llvm-6502/include/llvm/Analysis
Adam Nemet cd13a3808a [LoopAccesses] Allow analysis to complete in the presence of uniform stores
(Re-apply r234361 with a fix and a testcase for PR23157)

Both run-time pointer checking and the dependence analysis are capable
of dealing with uniform addresses. I.e. it's really just an orthogonal
property of the loop that the analysis computes.

Run-time pointer checking will only try to reason about SCEVAddRec
pointers or else gives up. If the uniform pointer turns out the be a
SCEVAddRec in an outer loop, the run-time checks generated will be
correct (start and end bounds would be equal).

In case of the dependence analysis, we work again with SCEVs. When
compared against a loop-dependent address of the same underlying object,
the difference of the two SCEVs won't be constant. This will result in
returning an Unknown dependence for the pair.

When compared against another uniform access, the difference would be
constant and we should return the right type of dependence
(forward/backward/etc).

The changes also adds support to query this property of the loop and
modify the vectorizer to use this.

Patch by Ashutosh Nema!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234424 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-08 17:48:40 +00:00
..
AliasAnalysis.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
AliasSetTracker.h Remove explicit copy assignment operator in favor of the implicit/default to avoid disabling/deprecating the implicit copy ctor. 2015-03-03 19:29:13 +00:00
AssumptionCache.h [PM] Actually add the new pass manager support for the assumption cache. 2015-01-22 21:53:09 +00:00
BlockFrequencyInfo.h blockfreq: Remove unnecessary template parameters 2014-04-11 23:21:02 +00:00
BlockFrequencyInfoImpl.h Remove 4,096 loop scale limitation. 2015-04-01 17:42:27 +00:00
BranchProbabilityInfo.h [stack protector] Set edge weights for newly created basic blocks. 2014-12-01 04:27:03 +00:00
CallGraph.h Revert "Remove the explicit SDNodeIterator::operator= in favor of the implicit default" 2015-03-03 21:18:16 +00:00
CallGraphSCCPass.h [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-05 07:30:04 +00:00
CallPrinter.h Added -view-callgraph module pass. 2013-01-11 17:28:14 +00:00
CaptureTracking.h Match semantics of PointerMayBeCapturedBefore to its name by default 2014-07-21 21:30:22 +00:00
CFG.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 04:59:12 +00:00
CFGPrinter.h Tweak CFGPrinter to wrap very long names. 2014-08-20 17:38:12 +00:00
CGSCCPassManager.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
CodeMetrics.h [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
ConstantFolding.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
DependenceAnalysis.h Reformat. 2015-03-05 01:25:19 +00:00
DominanceFrontier.h These functions are not actually defined for NDEBUG or !LLVM_DUMP_ENABLED, so guarding the declarations as well. NFC, silences MSVC warnings in release builds. 2014-10-24 15:16:39 +00:00
DominanceFrontierImpl.h Fix ODR violations caused by putting anonymous namespaces in header files (and 2015-03-17 02:36:51 +00:00
DomPrinter.h
DOTGraphTraitsPass.h Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
InlineCost.h Removing LLVM_EXPLICIT, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:00:20 +00:00
InstructionSimplify.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
Interval.h Remove copy ctors that did the same thing as the default one. 2014-03-11 11:32:49 +00:00
IntervalIterator.h Remove use of reserved identifier 2015-03-15 01:37:01 +00:00
IntervalPartition.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 04:59:12 +00:00
IVUsers.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
JumpInstrTableInfo.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
LazyCallGraph.h Revert r225854: [PM] Move the LazyCallGraph printing functionality to 2015-01-14 00:27:45 +00:00
LazyValueInfo.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LibCallAliasAnalysis.h Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
LibCallSemantics.h Stop calling DwarfEHPrepare from WinEHPrepare 2015-03-12 00:36:20 +00:00
Lint.h
Loads.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
LoopAccessAnalysis.h [LoopAccesses] Allow analysis to complete in the presence of uniform stores 2015-04-08 17:48:40 +00:00
LoopInfo.h Transforms: Use the new DebugLoc API, NFC 2015-03-30 19:49:49 +00:00
LoopInfoImpl.h Fix ODR violations caused by putting anonymous namespaces in header files (and 2015-03-17 02:36:51 +00:00
LoopIterator.h Remove unneeded #includes. 2013-02-09 13:29:10 +00:00
LoopPass.h Fix assertion in LICM doFinalization() 2014-09-24 16:48:31 +00:00
MemoryBuiltins.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
MemoryDependenceAnalysis.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
Passes.h Remove the Forward Control Flow Integrity pass and its dependencies. 2015-02-27 19:03:38 +00:00
PHITransAddr.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
PostDominators.h Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
PtrUseVisitor.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 04:59:12 +00:00
RegionInfo.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
RegionInfoImpl.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
RegionIterator.h Remove explicit RNSuccIterator copy assignment in favor of implicit default 2015-03-04 07:51:50 +00:00
RegionPass.h [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-05 07:30:04 +00:00
RegionPrinter.h
ScalarEvolution.h [SCEV] Look at backedge dominating conditions (re-land r233447). 2015-04-01 18:24:06 +00:00
ScalarEvolutionExpander.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
ScalarEvolutionExpressions.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
ScalarEvolutionNormalization.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
SparsePropagation.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
TargetFolder.h [opaque pointer types] Push explicit type parameter for geps through the constant folders 2015-04-03 01:15:16 +00:00
TargetLibraryInfo.def Move TargetLibraryInfo data from two files into one common .def file. 2015-03-03 23:41:58 +00:00
TargetLibraryInfo.h TLI: Add addVectorizableFunctionsFromVecLib. 2015-03-17 19:50:55 +00:00
TargetTransformInfo.h TTI: Add getCallInstrCost. 2015-03-17 19:26:23 +00:00
TargetTransformInfoImpl.h TTI: Add getCallInstrCost. 2015-03-17 19:26:23 +00:00
Trace.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
ValueTracking.h DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00