forked from OSchip/llvm-project
![]() 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 |
||
---|---|---|
.. | ||
add-cast-vect.ll | ||
arith-overflow.ll | ||
arith-ssat.ll | ||
arith-usat.ll | ||
arith.ll | ||
cast.ll | ||
cast_ldst.ll | ||
cmps.ll | ||
control-flow.ll | ||
divrem.ll | ||
fparith.ll | ||
freeshift.ll | ||
gep.ll | ||
immediates.ll | ||
insertelement.ll | ||
intrinsic-cost-kinds.ll | ||
lit.local.cfg | ||
load_store.ll | ||
logicalop.ll | ||
memcpy.ll | ||
mul-cast-vect.ll | ||
mve-abs.ll | ||
mve-active_lane_mask.ll | ||
mve-cmp.ll | ||
mve-gather-scatter-cost.ll | ||
mve-minmax.ll | ||
mve-vecreduce-add.ll | ||
reduce-add.ll | ||
reduce-and.ll | ||
reduce-or.ll | ||
reduce-smax.ll | ||
reduce-smin.ll | ||
reduce-umax.ll | ||
reduce-umin.ll | ||
select.ll | ||
shl-cast-vect.ll | ||
shuffle.ll | ||
sub-cast-vect.ll | ||
target-intrinsics.ll |