1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/include/llvm/Analysis
Kerry McLaughlin c247a39737 [SVE] Add support for scalable vectorization of loops with int/fast FP reductions
This patch enables scalable vectorization of loops with integer/fast reductions, e.g:

```
unsigned sum = 0;
for (int i = 0; i < n; ++i) {
  sum += a[i];
}
```

A new TTI interface, isLegalToVectorizeReduction, has been added to prevent
reductions which are not supported for scalable types from vectorizing.
If the reduction is not supported for a given scalable VF,
computeFeasibleMaxVF will fall back to using fixed-width vectorization.

Reviewed By: david-arm, fhahn, dmgreen

Differential Revision: https://reviews.llvm.org/D95245
2021-02-16 13:50:06 +00:00
..
Utils [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
AliasAnalysis.h [AA] Move Depth member from AAResults to AAQI (NFC) 2021-02-12 21:42:36 +01:00
AliasAnalysisEvaluator.h
AliasSetTracker.h [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
AssumeBundleQueries.h reland [InstCombine] convert assumes to operand bundles 2021-02-13 13:03:11 +01:00
AssumptionCache.h Revert "[AssumptionCache] Avoid dangling llvm.assume calls in the cache" 2021-02-11 12:17:38 -06:00
BasicAliasAnalysis.h [BasicAA] Use index difference to detect GEPs with identical indexes 2021-02-14 17:11:03 +01:00
BlockFrequencyInfo.h
BlockFrequencyInfoImpl.h BlockFrequencyInfoImpl.h - use const references to avoid FrequencyData copies. NFCI. 2020-10-02 13:56:30 +01:00
BranchProbabilityInfo.h [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
CallGraph.h [Analysis] Remove spliceFunction (NFC) 2020-12-23 21:57:25 -08:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h [NFC][CaptureTracking] Move static function isNonEscapingLocalObject to llvm namespace 2020-10-15 18:37:29 +00:00
CFG.h
CFGPrinter.h [DDG] Data Dependence Graph - DOT printer - recommit 2020-12-16 12:37:36 -05:00
CFLAliasAnalysisUtils.h
CFLAndersAliasAnalysis.h
CFLSteensAliasAnalysis.h
CGSCCPassManager.h [NFC] Inline maxDevirtIterationsReached() 2020-12-10 22:12:29 -08:00
CmpInstAnalysis.h
CodeMetrics.h [LoopRotate] Add PrepareForLTO stage, avoid rotating with inline cands. 2021-01-19 10:15:29 +00:00
ConstantFolding.h [llvm][IR] Add dso_local_equivalent Constant 2020-11-19 10:26:17 -08:00
ConstraintSystem.h [ConstraintElimination] Add nicer way to dump constraints (NFC). 2021-02-02 16:36:45 +00:00
DDG.h [Analysis] Drop unnecessary const from return types (NFC) 2021-02-13 20:41:38 -08:00
DDGPrinter.h [DDG] Data Dependence Graph - DOT printer - recommit 2020-12-16 12:37:36 -05:00
Delinearization.h [Delinearization][NewPM] Port delinearization to NPM 2020-09-21 17:59:08 -07:00
DemandedBits.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
DependenceAnalysis.h
DependenceGraphBuilder.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
DivergenceAnalysis.h [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
DominanceFrontier.h DominanceFrontier - remove unused <vector> includes 2020-11-21 17:11:26 +00:00
DominanceFrontierImpl.h
DomPrinter.h
DomTreeUpdater.h
DOTGraphTraitsPass.h
EHPersonalities.h [XCOFF][AIX] Generate LSDA data and compact unwind section on AIX 2020-12-02 18:42:44 +00:00
FunctionPropertiesAnalysis.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
GlobalsModRef.h
GuardUtils.h
HeatUtils.h
IndirectCallPromotionAnalysis.h
IndirectCallVisitor.h
InlineAdvisor.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
InlineCost.h
InlineModelFeatureMaps.h
InlineSizeEstimatorAnalysis.h [llvm] Ensure newlines at the end of files (NFC) 2021-01-10 09:24:57 -08:00
InstCount.h [NFC] Port InstCount pass to new pass manager 2020-08-21 12:39:42 +03:00
InstructionPrecedenceTracking.h
InstructionSimplify.h [Analysis] Remove unused code recursivelySimplifyInstruction (NFC) 2020-12-30 17:45:40 -08:00
Interval.h [Analysis/Interval] Remove isLoop (NFC) 2020-12-12 10:09:35 -08:00
IntervalIterator.h [Analysis] Use llvm::append_range (NFC) 2020-12-29 19:23:21 -08:00
IntervalPartition.h
IRSimilarityIdentifier.h [IRSim] Letting call instructions be legal for similarity identification. 2020-12-31 20:52:45 -06:00
IteratedDominanceFrontier.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
IVDescriptors.h [LoopVectorizer] Require no-signed-zeros-fp-math=true for fmin/fmax 2021-02-15 13:47:05 +00:00
IVUsers.h
LazyBlockFrequencyInfo.h
LazyBranchProbabilityInfo.h [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
LazyCallGraph.h [LazyCallGraph] Remove forward declarations of nonexistent classes (NFC) 2021-02-15 14:46:07 -08:00
LazyValueInfo.h [LVI][CVP] Use block value when simplifying icmps 2020-09-27 20:25:16 +02:00
LegacyDivergenceAnalysis.h [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
Lint.h [NewPM][Lint] Port -lint to NewPM 2020-09-03 13:03:44 -07:00
Loads.h [Loads] Plumb through TLI argument [NFC] 2021-02-01 11:45:30 -08:00
LoopAccessAnalysis.h [LV] Legalize scalable VF hints 2021-01-08 10:49:44 +00:00
LoopAnalysisManager.h [BFI] Make BFI information available through loop passes inside LoopStandardAnalysisResults 2020-09-15 16:16:24 -07:00
LoopCacheAnalysis.h [llvm] Drop unnecessary const from return types (NFC) 2021-01-31 10:23:43 -08:00
LoopInfo.h [LoopDeletion] Remove dead loops with no exit blocks 2020-11-06 17:08:34 -05:00
LoopInfoImpl.h [LoopInfo] Fix a typo in compareLoops 2021-01-18 14:53:22 -08:00
LoopIterator.h
LoopNestAnalysis.h [LoopNest] Allow empty basic blocks without loops 2021-01-05 18:44:43 +00:00
LoopPass.h
LoopUnrollAnalyzer.h
MemDerefPrinter.h Port -print-memderefs to NPM 2020-11-23 11:56:22 -08:00
MemoryBuiltins.h
MemoryDependenceAnalysis.h [AA] Split up LocationSize::unknown() 2020-11-26 18:39:55 +01:00
MemoryLocation.h [AA] Split up LocationSize::unknown() 2020-11-26 18:39:55 +01:00
MemorySSA.h [MemorySSA] Remove unused dominatesUse (NFC) 2021-01-10 09:24:55 -08:00
MemorySSAUpdater.h [DominatorTree] Add support for mixed pre/post CFG views. 2021-01-06 14:53:09 -08:00
MLInlineAdvisor.h Reland "[NPM][Inliner] Factor ImportedFunctionStats in the InlineAdvisor" 2021-01-20 13:33:43 -08:00
MLModelRunner.h
ModuleDebugInfoPrinter.h [NPM] Port module-debuginfo pass to the new pass manager 2020-10-19 14:31:17 -07:00
ModuleSummaryAnalysis.h
MustExecute.h Port print-must-be-executed-contexts and print-mustexecute to NPM 2020-11-03 21:06:46 -08:00
ObjCARCAliasAnalysis.h
ObjCARCAnalysisUtils.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
ObjCARCInstKind.h
ObjCARCUtil.h [llvm] Fix header guards (NFC) 2021-02-14 08:36:18 -08:00
OptimizationRemarkEmitter.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
Passes.h
PHITransAddr.h
PhiValues.h [PhiValues] Use SetVector to avoid non-determinism 2020-10-23 20:14:02 +02:00
PostDominators.h
ProfileSummaryInfo.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
PtrUseVisitor.h
RegionInfo.h RegionInfo.cpp - remove duplicate includes that already exist in RegionInfo.h. NFC. 2020-07-23 17:50:22 +01:00
RegionInfoImpl.h [llvm] Use pop_back_val (NFC) 2021-01-24 12:18:57 -08:00
RegionIterator.h
RegionPass.h [NFC] Clean up always false variables 2020-10-21 10:54:55 -07:00
RegionPrinter.h
ReplayInlineAdvisor.h [InlineAdvisor] Allow replay of inline decisions for the CGSCC inliner from optimization remarks 2021-01-25 15:38:57 -08:00
ScalarEvolution.h [SCEV] Apply loop guards to divisibility tests 2021-02-02 08:09:39 +02:00
ScalarEvolutionAliasAnalysis.h
ScalarEvolutionDivision.h [SCEV] Introduce SCEVPtrToIntExpr (PR46786) 2020-10-30 11:13:35 +03:00
ScalarEvolutionExpressions.h [SCEV] Introduce SCEVPtrToIntExpr (PR46786) 2020-10-30 11:13:35 +03:00
ScalarEvolutionNormalization.h
ScopedNoAliasAA.h [Metadata] Fix layer violation in D91576 2020-12-03 10:58:46 -08:00
SparsePropagation.h [llvm] Use pop_back_val (NFC) 2021-02-01 20:55:05 -08:00
StackLifetime.h [StackSafety] Use ListSeparator (NFC) 2021-01-25 19:23:59 -08:00
StackSafetyAnalysis.h [StackSafety] Use ValueInfo in ParamAccess::Call 2020-08-14 12:42:44 -07:00
SyncDependenceAnalysis.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
SyntheticCountsUtils.h [llvm] Fix header guards (NFC) 2021-02-05 21:02:06 -08:00
TargetFolder.h
TargetLibraryInfo.def [Analysis] Support AIX vec_malloc routines 2021-01-22 16:03:01 -05:00
TargetLibraryInfo.h [NFC][Analysis] Change struct VecDesc to use ElementCount 2021-02-12 11:07:58 +00:00
TargetTransformInfo.h [SVE] Add support for scalable vectorization of loops with int/fast FP reductions 2021-02-16 13:50:06 +00:00
TargetTransformInfoImpl.h [SVE] Add support for scalable vectorization of loops with int/fast FP reductions 2021-02-16 13:50:06 +00:00
Trace.h
TypeBasedAliasAnalysis.h
TypeMetadataUtils.h
ValueLattice.h [SCCP] Propagate inequalities 2020-08-04 20:20:52 +02:00
ValueLatticeUtils.h
ValueTracking.h [ValueTracking] Dereferenced pointers are noundef 2021-02-14 22:50:48 +09:00
VecFuncs.def [NFC][Analysis] Change struct VecDesc to use ElementCount 2021-02-12 11:07:58 +00:00
VectorUtils.h [Analysis] Change VFABI::mangleTLIVectorName to use ElementCount 2021-02-12 09:38:12 +00:00