This patch adds a mode in which the vectoriser tries each available base vector mode and picks the one with the lowest cost. The new behaviour is selected by autovectorize_vector_modes. The patch keeps the current behaviour of preferring a VF of loop->simdlen over any larger or smaller VF, regardless of costs or target preferences. 2019-11-16 Richard Sandiford <richard.sandiford@arm.com> gcc/ * target.h (VECT_COMPARE_COSTS): New constant. * target.def (autovectorize_vector_modes): Return a bitmask of flags. * doc/tm.texi: Regenerate. * targhooks.h (default_autovectorize_vector_modes): Update accordingly. * targhooks.c (default_autovectorize_vector_modes): Likewise. * config/aarch64/aarch64.c (aarch64_autovectorize_vector_modes): Likewise. * config/arc/arc.c (arc_autovectorize_vector_modes): Likewise. * config/arm/arm.c (arm_autovectorize_vector_modes): Likewise. * config/i386/i386.c (ix86_autovectorize_vector_modes): Likewise. * config/mips/mips.c (mips_autovectorize_vector_modes): Likewise. * tree-vectorizer.h (_loop_vec_info::vec_outside_cost) (_loop_vec_info::vec_inside_cost): New member variables. * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize them. (vect_better_loop_vinfo_p, vect_joust_loop_vinfos): New functions. (vect_analyze_loop): When autovectorize_vector_modes returns VECT_COMPARE_COSTS, try vectorizing the loop with each available vector mode and picking the one with the lowest cost. (vect_estimate_min_profitable_iters): Record the computed costs in the loop_vec_info. From-SVN: r278336
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| arc-arch.h | Loading commit data... | |
| arc-arches.def | Loading commit data... | |
| arc-c.c | Loading commit data... | |
| arc-c.def | Loading commit data... | |
| arc-cpus.def | Loading commit data... | |
| arc-modes.def | Loading commit data... | |
| arc-options.def | Loading commit data... | |
| arc-opts.h | Loading commit data... | |
| arc-protos.h | Loading commit data... | |
| arc-simd.h | Loading commit data... | |
| arc-tables.opt | Loading commit data... | |
| arc.c | Loading commit data... | |
| arc.h | Loading commit data... | |
| arc.md | Loading commit data... | |
| arc.opt | Loading commit data... | |
| arc600.md | Loading commit data... | |
| arc700.md | Loading commit data... | |
| arcEM.md | Loading commit data... | |
| arcHS.md | Loading commit data... | |
| arcHS4x.md | Loading commit data... | |
| atomic.md | Loading commit data... | |
| big.h | Loading commit data... | |
| builtins.def | Loading commit data... | |
| constraints.md | Loading commit data... | |
| driver-arc.c | Loading commit data... | |
| elf.h | Loading commit data... | |
| fpu.md | Loading commit data... | |
| fpx.md | Loading commit data... | |
| genmultilib.awk | Loading commit data... | |
| genoptions.awk | Loading commit data... | |
| linux.h | Loading commit data... | |
| predicates.md | Loading commit data... | |
| simdext.md | Loading commit data... | |
| t-arc | Loading commit data... | |
| t-multilib | Loading commit data... | |
| t-multilib-linux | Loading commit data... |