llvm-project/llvm/test/Transforms/LoopVectorize/ARM
David Green 41cedb1c9a [LV][ARM] Tighten up MLA reduction costing
This makes a couple of changes to the costing of MLA reduction patterns,
to more accurately cost various patterns that can come up from
vectorization.

 - The Arm implementation of getExtendedAddReductionCost is altered to
   only provide costs for legal or smaller types. Larger than legal types
   need to be split, which currently does not work very well, especially
   for predicated reductions where the predicate may be legal but needs to
   be split. Currently we limit it to legal or smaller input types.
 - The getReductionPatternCost has learnt that reduce(ext(mul(ext, ext))
   is a pattern that can come up, and can be treated the same as
   reduce(mul(ext, ext)) providing the extension types match.
 - And it has been adjusted to not count the ext in reduce(mul(ext, ext))
   as part of a reduce(mul) pattern.

Together these changes help to more accurately cost the mla reductions
in cases such as where the extend types don't match or the extend
opcodes are different, picking better vector factors that don't result
in expanded reductions.

Differential Revision: https://reviews.llvm.org/D106166
2021-07-28 12:50:58 +01:00
..
arm-ieee-vectorize.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
arm-unroll.ll
gather-cost.ll
gcc-examples.ll
interleaved_cost.ll
lit.local.cfg
mve-gather-scatter-tailpred.ll [LV] Unconditionally branch from middle to scalar preheader if the scalar loop must execute (try 4) 2021-07-07 07:44:35 -07:00
mve-icmpcost.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-interleaved-cost.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-known-trip-count.ll [LV] Account for tripcount when calculation vectorization profitability 2021-05-06 12:36:46 +01:00
mve-maskedldst.ll
mve-predstorecost.ll [ARM] Test for predicated scalar memops. NFC 2021-03-09 21:57:18 +00:00
mve-qabs.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
mve-reduction-predselect.ll [SVE] Add support for folding for select + masked loads 2021-07-26 11:58:41 +01:00
mve-reduction-types.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
mve-reductions.ll [LV][ARM] Tighten up MLA reduction costing 2021-07-28 12:50:58 +01:00
mve-saddsatcost.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-selectandorcost.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
mve-shiftcost.ll
mve-vldn.ll
pointer_iv.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
prefer-tail-loop-folding.ll
scalar-block-cost.ll
sphinx.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
tail-fold-multiple-icmps.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
tail-folding-allowed.ll
tail-folding-counting-down.ll
tail-folding-loop-hint.ll
tail-folding-not-allowed.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
tail-folding-prefer-flag.ll
tail-folding-reduces-vf.ll
tail-folding-reductions-allowed.ll
tail-folding-scalar-epilogue-fallback.ll [LV] Mark increment of main vector loop induction variable as NUW. 2021-06-07 10:47:52 +01:00
vector_cast.ll
width-detect.ll