llvm-project/llvm/test/Transforms/SLPVectorizer/X86
Alexey Bataev 3ff07fcd54 [SLP] Allow reordering of vectorization trees with reused instructions.
If some leaves have the same instructions to be vectorized, we may
incorrectly evaluate the best order for the root node (it is built for the
vector of instructions without repeated instructions and, thus, has less
elements than the root node). In this case we just can not try to reorder
the tree + we may calculate the wrong number of nodes that requre the
same reordering.
For example, if the root node is \<a+b, a+c, a+d, f+e\>, then the leaves
are \<a, a, a, f\> and \<b, c, d, e\>. When we try to vectorize the first
leaf, it will be shrink to \<a, b\>. If instructions in this leaf should
be reordered, the best order will be \<1, 0\>. We need to extend this
order for the root node. For the root node this order should look like
\<3, 0, 1, 2\>. This patch allows extension of the orders of the nodes
with the reused instructions.

Reviewed By: RKSimon

Differential Revision: https://reviews.llvm.org/D45263
2020-09-21 10:51:03 -04:00
..
PR31847.ll
PR32086.ll
PR34635.ll
PR35628_1.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
PR35628_2.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
PR35777.ll
PR35865.ll
PR36280.ll
PR39774.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
PR40310.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
addsub.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
aggregate.ll
align.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
alternate-calls.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
alternate-cast.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
alternate-fp.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
alternate-int.ll [SLP][X86] Regenerate sdiv test noticed in D83779. NFC. 2020-08-06 18:00:21 +01:00
arith-abs.ll [SLP][X86] Add abs/smax/smin/umax/umin intrinsic vectorization tests 2020-08-07 11:23:43 +01:00
arith-add-saddo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-add-ssat.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-add-uaddo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-add-usat.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-add.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-div.ll [CostModel][X86] Add vXi32 division by uniform constant costs (PR47476) 2020-09-10 12:17:54 +01:00
arith-fix.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-fp.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-mul-smulo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-mul-umulo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-mul.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-smax.ll [SLP][X86] Add abs/smax/smin/umax/umin intrinsic vectorization tests 2020-08-07 11:23:43 +01:00
arith-smin.ll [SLP][X86] Add abs/smax/smin/umax/umin intrinsic vectorization tests 2020-08-07 11:23:43 +01:00
arith-sub-ssat.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-sub-ssubo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-sub-usat.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-sub-usubo.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-sub.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
arith-umax.ll [SLP][X86] Add abs/smax/smin/umax/umin intrinsic vectorization tests 2020-08-07 11:23:43 +01:00
arith-umin.ll [SLP][X86] Add abs/smax/smin/umax/umin intrinsic vectorization tests 2020-08-07 11:23:43 +01:00
atomics.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
bad-reduction.ll [SLP] further limit bailout for load combine candidate (PR47450) 2020-09-11 11:56:11 -04:00
bad_types.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
barriercall.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
bitreverse.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
blending-shuffle.ll
broadcast.ll
bswap.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
call.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cast.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cmp_commute.ll
cmp_sel.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
commutativity.ll
compare-reduce.ll [SLP] sort candidates to increase chance of optimal compare reduction 2020-09-17 08:49:27 -04:00
consecutive-access.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
continue_vectorizing.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_7zip.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_binaryop.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_bullet.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_bullet3.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_cmpop.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_dequeue.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_flop7.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_gep.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_lencod.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_mandeltext.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_netbsd_decompress.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_reordering_undefs.ll
crash_scheduling.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_sim4b1.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_smallpt.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
crash_vectorizeTree.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cross_block_slp.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cse.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
ctlz.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
ctpop.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cttz.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
cycle_dup.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
debug_info.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
diamond.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
different-vec-widths.ll
external_user.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
external_user_jumbled_load.ll
extract-shuffle.ll
extract.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
extract_in_tree_user.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
extractcost.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
extractelement.ll
fabs-cost-softfp.ll
fabs.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fcopysign.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
flag.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fma.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fmaxnum.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fminnum.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fptosi.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fptoui.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
fround.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
funclet.ll
gep.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
gep_mismatch.ll
geps-non-pow-2.ll [SLP]Add an extra test for vectorization of non-pow-2 trees, NFC. 2020-07-22 09:13:30 -04:00
hadd.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
hoist.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
horizontal-list.ll [SLPVectorizer][X86][AMDGPU] Remove fcmp+select to fmin/fmax reduction support. 2020-09-10 11:49:19 -07:00
horizontal-minmax.ll [SLPVectorizer][X86][AMDGPU] Remove fcmp+select to fmin/fmax reduction support. 2020-09-10 11:49:19 -07:00
horizontal-smax.ll [SLP][X86] Add smax intrinsic reduction tests 2020-08-07 11:48:08 +01:00
horizontal.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
hsub.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
implicitfloat.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
in-tree-user.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
insert-after-bundle.ll
insert-element-build-vector.ll [SLP] Fix order of `insertelement`/`insertvalue` seed operands 2020-08-06 22:09:24 +03:00
insertvalue.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
intrinsic.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
jumbled-load-multiuse.ll
jumbled-load-shuffle-placement.ll
jumbled-load-used-in-phi.ll
jumbled-load.ll
jumbled_store_crash.ll [SLP] Allow reordering of vectorization trees with reused instructions. 2020-09-21 10:51:03 -04:00
limit.ll [opt][NewPM] Add basic-aa in legacy PM compatibility mode 2020-08-21 14:05:07 -07:00
lit.local.cfg
load-bitcast-vec.ll
load-merge.ll [SLP] Regenerate load-merge.ll tests 2020-08-10 16:09:26 +01:00
long_chains.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
lookahead.ll
loopinvariant.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
metadata.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
minimum-sizes.ll [TTI] Add DemandedElts to getScalarizationOverhead 2020-04-29 12:00:38 +01:00
multi_block.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
multi_user.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
no_alternate_divrem.ll
odd_store.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
operandorder.ll [InstCombine] improve demanded element analysis for vector insert-of-extract (2nd try) 2020-08-25 11:19:36 -04:00
opt.ll Allow disabling of vectorization using internal options 2020-04-14 18:09:10 -07:00
ordering.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
partail.ll
phi.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
phi3.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
phi_landingpad.ll
phi_overalignedtype.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
powof2div.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
pr16571.ll
pr16628.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
pr16899.ll
pr18060.ll
pr19657.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
pr23510.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
pr27163.ll
pr31599.ll
pr35497.ll
pr42022.ll [SLP] Fix order of `insertelement`/`insertvalue` seed operands 2020-08-06 22:09:24 +03:00
pr44067.ll [SLP] Fix order of `insertelement`/`insertvalue` seed operands 2020-08-06 22:09:24 +03:00
propagate_ir_flags.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
reassociated-loads.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
reduction.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
reduction2.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
reduction_loads.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
reduction_unrolled.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
remark_horcost.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
remark_listcost.ll
remark_not_all_parts.ll
remark_unsupported.ll SLP: honor requested max vector size merging PHIs 2020-07-08 08:06:15 -07:00
reorder_phi.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
reorder_repeated_ops.ll [SLP] Allow reordering of vectorization trees with reused instructions. 2020-09-21 10:51:03 -04:00
resched.ll [TTI] Add DemandedElts to getScalarizationOverhead 2020-04-29 12:00:38 +01:00
return.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
reuse-extracts-in-wider-vect.ll
reverse_extract_elements.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
rgb_phi.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
saxpy.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
schedule-bundle.ll
schedule_budget.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
scheduling.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
sext.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
shift-ashr.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
shift-lshr.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
shift-shl.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
sign-extend.ll
simple-loop.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
simplebb.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
sitofp.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
slp-throttle.ll
sqrt.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
store-jumbled.ll
stores_vectorize.ll
supernode.ll
tiny-tree.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
uitofp.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
undef_vect.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
unreachable.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00
used-reduced-op.ll [x86] form reduction intrinsics from vectorizers instead of raw IR 2020-06-05 12:38:49 -04:00
value-bug.ll
vec_list_bias.ll [SLP] Apply external to vectorizable tree users cost adjustment for 2020-05-29 15:37:41 -07:00
vect_copyable_in_binops.ll
vector.ll
vector_gep.ll
vectorize-reorder-reuse.ll [SLP] Allow reordering of vectorization trees with reused instructions. 2020-09-21 10:51:03 -04:00
zext.ll [NewPM][BasicAA] basicaa -> basic-aa in Transforms/SLPVectorizer 2020-06-26 14:58:41 -07:00