llvm-project/llvm/test/Analysis/CostModel/ARM
Simon Pilgrim 7397dcb403 [TTI] Add basic SK_InsertSubvector shuffle mask recognition
This patch adds an initial ShuffleVectorInst::isInsertSubvectorMask helper to recognize 2-op shuffles where the lowest elements of one of the sources are being inserted into the "in-place" other operand, this includes "concat_vectors" patterns as can be seen in the Arm shuffle cost changes. This also helped fix a x86 issue with irregular/length-changing SK_InsertSubvector costs - I'm hoping this will help with D107188

This doesn't currently attempt to work with 1-op shuffles that could either be a "widening" shuffle or a self-insertion.

The self-insertion case is tricky, but we currently always match this with the existing SK_PermuteSingleSrc logic.

The widening case will be addressed in a follow up patch that treats the cost as 0.

Masks with a high number of undef elts will still struggle to match optimal subvector widths - its currently bounded by minimum-width possible insertion, whilst some cases would benefit from wider (pow2?) subvectors.

Differential Revision: https://reviews.llvm.org/D107228
2021-08-02 11:23:44 +01:00
..
add-cast-vect.ll
arith-overflow.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
arith-ssat.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
arith-usat.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
arith.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
cast.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
cast_ldst.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
cmps.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
control-flow.ll
divrem.ll [CostModel] Express cost(urem) as cost(div+mul+sub) when set to Expand. 2021-07-07 14:40:28 +01:00
fparith.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
freeshift.ll
gep.ll [CostModel][ARM] Remove unused check-prefix 2020-11-10 13:10:12 +00:00
immediates.ll [ARM][CostModel] Select instruction costs. 2020-08-21 08:49:56 +01:00
insertelement.ll
intrinsic-cost-kinds.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
lit.local.cfg
load_store.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
logicalop.ll [TTI] Consider select form of and/or i1 as having arithmetic cost 2021-03-02 02:18:19 +09:00
memcpy.ll
mul-cast-vect.ll
mve-abs.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-active_lane_mask.ll [ARM] Add a very basic active_lane_mask cost 2020-10-17 10:09:42 +01:00
mve-cmp.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-gather-scatter-cost.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-minmax.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
mve-vecreduce-add.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
reduce-add.ll [ARM] remove cost-kind predicate for most math op costs 2020-11-03 17:23:46 -05:00
reduce-and.ll [Cost]Canonicalize the cost for logical or/and reductions. 2021-03-19 11:01:58 -07:00
reduce-or.ll [Cost]Canonicalize the cost for logical or/and reductions. 2021-03-19 11:01:58 -07:00
reduce-smax.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
reduce-smin.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
reduce-umax.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
reduce-umin.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
select.ll [ARM] Tone down the MVE scalarization overhead 2021-03-19 18:30:11 +00:00
shl-cast-vect.ll
shuffle.ll [TTI] Add basic SK_InsertSubvector shuffle mask recognition 2021-08-02 11:23:44 +01:00
sub-cast-vect.ll
target-intrinsics.ll [CostModel] Make target intrinsics cheap by default 2020-11-03 09:58:28 +00:00