llvm-project/llvm/test/Transforms/SLPVectorizer/AArch64
Florian Hahn eb46137daa [SLP] Make sure instructions are ordered when computing spill cost.
The entries in VectorizableTree are not necessarily ordered by their
position in basic blocks. Collect them and order them by dominance so
later instructions are guaranteed to be visited first. For instructions
in different basic blocks, we only scan to the beginning of the block,
so their order does not matter, as long as all instructions in a basic
block are grouped together. Using dominance ensures a deterministic order.

The modified test case contains an example where we compute a wrong
spill cost (2) without this patch, even though there is no call between
any instruction in the bundle.

This seems to have limited practical impact, .e.g on X86 with a recent
Intel Xeon CPU with -O3 -march=native -flto on MultiSource,SPEC2000,SPEC2006
there are no binary changes.

Reviewers: craig.topper, RKSimon, xbolva00, ABataev, spatel

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D82444
2020-07-03 17:30:17 +01:00
..
64-bit-vector.ll
PR38339.ll
accelerate-vector-functions.ll [SLP] Support vectorizing functions provided by vector libs. 2020-03-10 13:10:50 +00:00
commute.ll
ext-trunc.ll [SLP] respect target register width for GEP vectorization (PR43578) 2019-10-09 16:32:49 +00:00
gather-cost.ll
gather-reduce.ll
gather-root.ll [SLP] Fix for PR31847: Assertion failed: (isLoopInvariant(Operands[i], L) && "SCEVAddRecExpr operand is not loop-invariant!") 2019-09-29 14:18:06 +00:00
getelementptr.ll [SLP] Limit GEP lists based on width of index computation. 2020-06-24 19:56:53 +01:00
horizontal.ll [AArch64][CostModel] getCastInstrCost 2020-05-12 10:02:29 +01:00
invalid_type.ll [SLPVectorizer][SVE] Bail out early for scalable vector. 2020-03-13 11:23:31 -07:00
lit.local.cfg
load-store-q.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
matmul.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
minimum-sizes.ll
mismatched-intrinsics.ll
nontemporal.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
remarks.ll
scalable-vector.ll [SLPVectorizer][SVE] Bail out early for scalable vector. 2020-03-13 11:23:31 -07:00
sdiv-pow2.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
spillcost-di.ll [Instruction] Set metadata uses to undef on deletion 2020-05-21 15:58:12 -07:00
spillcost-order.ll [SLP] Make sure instructions are ordered when computing spill cost. 2020-07-03 17:30:17 +01:00
transpose.ll [SLP] Apply external to vectorizable tree users cost adjustment for 2020-05-29 15:37:41 -07:00
tsc-s352.ll