llvm-project/llvm/test/Analysis
Craig Topper f4c67dfa92 [X86] More accurately model the cost of horizontal reductions.
This patch attempts to more accurately model the reduction of
power of 2 vectors of types we natively support. This takes into
account the narrowing of vectors that occur as we go from 512
bits to 256 bits, to 128 bits. It also takes into account the use
of wider elements in the shuffles for the first 2 steps of a
reduction from 128 bits. And uses a v8i16 shift for the final step
of vXi8 reduction.

The default implementation uses the legalized type for the arithmetic
for all levels. And uses the single source permute cost of the
legalized type for all levels. This penalizes things like
lack of v16i8 pshufb on pre-sse3 targets and the splitting and
joining that needs to be done for integer types on AVX1. We never
need v16i8 shuffle for a reduction and we only need split AVX1 ops
when type the type wide and needs to be split. I think we're still
over costing splits and joins for AVX1, but we're closer now.

I've also removed all pairwise special casing because I don't
think we ever want to generate that on X86. I've also adjusted
the add handling to more accurately account for any type splitting
that occurs before we reach a legal type.

Differential Revision: https://reviews.llvm.org/D76478
2020-03-22 14:20:15 -07:00
..
AliasSet
AssumptionCache
BasicAA [BasicAA] Make BasicAA a cfg pass. 2020-02-11 11:30:08 -08:00
BlockFrequencyInfo
BranchProbabilityInfo Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
CFLAliasAnalysis [CFLGraph] Add support for unary fneg instruction. 2019-06-06 19:21:23 +00:00
CallGraph Revert "[CallGraph] Refine call graph for indirect calls with !callees metadata" 2019-08-16 10:59:18 +00:00
ConstantFolding [ConstantFold][SVE] Fix constant folding for scalable vector compare instruction. 2020-03-12 16:15:38 -07:00
CostModel [X86] More accurately model the cost of horizontal reductions. 2020-03-22 14:20:15 -07:00
DDG [DDG] Data Dependence Graph - Graph Simplification 2020-02-19 13:41:51 -05:00
Delinearization Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
DemandedBits
DependenceAnalysis [DA] Delinearization of fixed-size multi-dimensional arrays 2020-02-27 10:29:01 -05:00
DivergenceAnalysis AMDGPU: llvm.amdgcn.writelane is a source of divergence 2020-02-12 09:12:56 +01:00
DominanceFrontier IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
Dominators
GlobalsModRef Revert a107f86 "[GlobalsAA] Add back a check to intrinsic_addresstaken.ll to see if the AVX and AVX512 bots still fail for it." 2020-01-24 13:15:23 -08:00
IVUsers
LazyCallGraph Revert "[CallGraph] Refine call graph for indirect calls with !callees metadata" 2019-08-16 10:59:18 +00:00
LazyValueAnalysis [ValueLattice] Go to overdefined in getRange() for full ranges. 2020-03-14 19:50:15 +00:00
LegacyDivergenceAnalysis Resubmit: [DA][TTI][AMDGPU] Add option to select GPUDA with TTI 2020-01-24 10:39:40 -08:00
Lint [Lint] Permit aliasing noalias readonly arguments 2019-04-23 23:43:47 +00:00
LoopAccessAnalysis Revert "[IRBuilder] Fold consistently for or/and whether constant is LHS or RHS" 2019-07-07 22:12:01 +00:00
LoopCacheAnalysis/PowerPC [LoopCacheAnalysis]: Add support for negative stride 2020-02-10 13:22:35 -05:00
LoopInfo
LoopNestAnalysis [LoopNest]: Analysis to discover properties of a loop nest. 2020-03-03 18:25:19 +00:00
MemoryDependenceAnalysis Lost regression test from commit 5a63813dc7. 2020-03-04 19:52:42 +07:00
MemorySSA [AliasAnalysis] Misc fixes for checking aliasing with scalable types. 2020-03-18 12:28:47 -07:00
MustExecute [MustExecute] Add backward exploration for must-be-executed-context 2020-02-20 14:49:30 +09:00
PhiValues
PostDominators
ProfileSummary
RegionInfo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
ScalarEvolution [SCEV] Add support for GEPs over scalable vectors. 2020-03-13 16:12:45 -07:00
ScopedNoAliasAA
StackSafetyAnalysis [memtag] Plug in stack safety analysis. 2020-03-16 16:35:25 -07:00
TypeBasedAliasAnalysis Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
ValueTracking [ValueTracking] Avoid blind cast from Operator to Instruction 2020-03-22 14:45:31 +01:00
alias-analysis-uses.ll