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 | 
|---|---|---|
| .. | ||
| 10000.md | Loading commit data... | |
| 20kc.md | Loading commit data... | |
| 24k.md | Loading commit data... | |
| 3000.md | Loading commit data... | |
| 4000.md | Loading commit data... | |
| 4100.md | Loading commit data... | |
| 4130.md | Loading commit data... | |
| 4300.md | Loading commit data... | |
| 4600.md | Loading commit data... | |
| 4k.md | Loading commit data... | |
| 5000.md | Loading commit data... | |
| 5400.md | Loading commit data... | |
| 5500.md | Loading commit data... | |
| 5k.md | Loading commit data... | |
| 6000.md | Loading commit data... | |
| 7000.md | Loading commit data... | |
| 74k.md | Loading commit data... | |
| 9000.md | Loading commit data... | |
| constraints.md | Loading commit data... | |
| driver-native.c | Loading commit data... | |
| elf.h | Loading commit data... | |
| elfoabi.h | Loading commit data... | |
| elforion.h | Loading commit data... | |
| frame-header-opt.c | Loading commit data... | |
| generic.md | Loading commit data... | |
| genopt.sh | Loading commit data... | |
| gnu-user.h | Loading commit data... | |
| gs264e.md | Loading commit data... | |
| gs464.md | Loading commit data... | |
| gs464e.md | Loading commit data... | |
| i6400.md | Loading commit data... | |
| linux-common.h | Loading commit data... | |
| linux.h | Loading commit data... | |
| loongson-mmi.md | Loading commit data... | |
| loongson-mmiintrin.h | Loading commit data... | |
| loongson.h | Loading commit data... | |
| loongson2ef.md | Loading commit data... | |
| m5100.md | Loading commit data... | |
| micromips.md | Loading commit data... | |
| mips-cpus.def | Loading commit data... | |
| mips-d.c | Loading commit data... | |
| mips-dsp.md | Loading commit data... | |
| mips-dspr2.md | Loading commit data... | |
| mips-fixed.md | Loading commit data... | |
| mips-ftypes.def | Loading commit data... | |
| mips-modes.def | Loading commit data... | |
| mips-msa.md | Loading commit data... | |
| mips-opts.h | Loading commit data... | |
| mips-protos.h | Loading commit data... | |
| mips-ps-3d.md | Loading commit data... | |
| mips-tables.opt | Loading commit data... | |
| mips.c | Loading commit data... | |
| mips.h | Loading commit data... | |
| mips.md | Loading commit data... | |
| mips.opt | Loading commit data... | |
| msa.h | Loading commit data... | |
| mti-elf.h | Loading commit data... | |
| mti-linux.h | Loading commit data... | |
| n32-elf.h | Loading commit data... | |
| netbsd.h | Loading commit data... | |
| octeon.md | Loading commit data... | |
| p5600.md | Loading commit data... | |
| p6600.md | Loading commit data... | |
| predicates.md | Loading commit data... | |
| r3900.h | Loading commit data... | |
| rtems.h | Loading commit data... | |
| sb1.md | Loading commit data... | |
| sde.h | Loading commit data... | |
| sde.opt | Loading commit data... | |
| sdemtk.h | Loading commit data... | |
| sr71k.md | Loading commit data... | |
| st.h | Loading commit data... | |
| sync.md | Loading commit data... | |
| t-elf | Loading commit data... | |
| t-img-elf | Loading commit data... | |
| t-img-linux | Loading commit data... | |
| t-irix6 | Loading commit data... | |
| t-isa3264 | Loading commit data... | |
| t-linux64 | Loading commit data... | |
| t-mips | Loading commit data... | |
| t-mti-elf | Loading commit data... | |
| t-mti-linux | Loading commit data... | |
| t-r3900 | Loading commit data... | |
| t-rtems | Loading commit data... | |
| t-sb1 | Loading commit data... | |
| t-sde | Loading commit data... | |
| t-sdemtk | Loading commit data... | |
| t-sr71k | Loading commit data... | |
| t-st | Loading commit data... | |
| t-vr | Loading commit data... | |
| t-vxworks | Loading commit data... | |
| vr.h | Loading commit data... | |
| vxworks.h | Loading commit data... | |
| x-native | Loading commit data... | |
| xlp.md | Loading commit data... | |
| xlr.md | Loading commit data... |