1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/Analysis
David Sherwood 2d2e4a1b17 [Analysis] Add simple cost model for strict (in-order) reductions
I have added a new FastMathFlags parameter to getArithmeticReductionCost
to indicate what type of reduction we are performing:

  1. Tree-wise. This is the typical fast-math reduction that involves
  continually splitting a vector up into halves and adding each
  half together until we get a scalar result. This is the default
  behaviour for integers, whereas for floating point we only do this
  if reassociation is allowed.
  2. Ordered. This now allows us to estimate the cost of performing
  a strict vector reduction by treating it as a series of scalar
  operations in lane order. This is the case when FP reassociation
  is not permitted. For scalable vectors this is more difficult
  because at compile time we do not know how many lanes there are,
  and so we use the worst case maximum vscale value.

I have also fixed getTypeBasedIntrinsicInstrCost to pass in the
FastMathFlags, which meant fixing up some X86 tests where we always
assumed the vector.reduce.fadd/mul intrinsics were 'fast'.

New tests have been added here:

  Analysis/CostModel/AArch64/reduce-fadd.ll
  Analysis/CostModel/AArch64/sve-intrinsics.ll
  Transforms/LoopVectorize/AArch64/strict-fadd-cost.ll
  Transforms/LoopVectorize/AArch64/sve-strict-fadd-cost.ll

Differential Revision: https://reviews.llvm.org/D105432
2021-07-26 10:26:06 +01:00
..
AliasSet
AssumptionCache
BasicAA [tests] Stablize tests for possible change in deref semantics 2021-07-14 13:37:50 -07:00
BlockFrequencyInfo
BranchProbabilityInfo Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
CallGraph Set IgnoreLLVMUsed to false in CallGraph::addToCallGraph() 2021-04-08 11:14:09 -07:00
CFLAliasAnalysis
CostModel [Analysis] Add simple cost model for strict (in-order) reductions 2021-07-26 10:26:06 +01:00
DDG
Delinearization [SCEV] Support signed predicates in applyLoopGuards. 2021-06-23 10:21:05 +01:00
DemandedBits Add getDemandedBits for uses. 2021-06-02 10:07:40 -04:00
DependenceAnalysis [DependenceAnalysis] Guard analysis using getPointerBase(). 2021-07-15 14:57:32 -07:00
DivergenceAnalysis
DominanceFrontier
Dominators
FunctionPropertiesAnalysis
GlobalsModRef
IRSimilarityIdentifier
IVUsers
LazyCallGraph
LazyValueAnalysis
LegacyDivergenceAnalysis
Lint
LoopAccessAnalysis [SCEV] Retain AddExpr flags when subtracting a foldable constant. 2021-06-22 11:27:51 +01:00
LoopCacheAnalysis/PowerPC
LoopInfo
LoopNestAnalysis [LoopNest] Consider loop nest with inner loop guard using outer loop 2021-05-07 16:04:18 +00:00
MemoryDependenceAnalysis Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
MemorySSA [NewPM] Rename 'unswitch' to 'simple-loop-unswitch' in PassRegistry 2021-07-09 09:47:33 +02:00
MustExecute
PhiValues
PostDominators
ProfileSummary
RegionInfo
ScalarEvolution [tests] SCEV trip count w/ neg step and varying rhs 2021-07-23 17:19:46 -07:00
ScopedNoAliasAA
StackSafetyAnalysis Recommit [ScalarEvolution] Make getMinusSCEV() fail for unrelated pointers. 2021-07-06 12:16:05 -07:00
TypeBasedAliasAnalysis Reapply [IR] Don't mark mustprogress as type attribute 2021-07-09 20:57:44 +02:00
ValueTracking [tests] Stablize tests for possible change in deref semantics 2021-07-14 13:05:43 -07:00
alias-analysis-uses.ll