re PR target/80846 (auto-vectorized AVX2 horizontal sum should narrow to 128b right away, to be more efficient for Ryzen and Intel) PR target/80846 * optabs.def (vec_extract_optab, vec_init_optab): Change from a direct optab to conversion optab. * optabs.c (expand_vector_broadcast): Use convert_optab_handler with GET_MODE_INNER as last argument instead of optab_handler. * expmed.c (extract_bit_field_1): Likewise. Use vector from vector extraction if possible and optab is available. * expr.c (store_constructor): Use convert_optab_handler instead of optab_handler. Use vector initialization from smaller vectors if possible and optab is available. * tree-vect-stmts.c (vectorizable_load): Likewise. * doc/md.texi (vec_extract, vec_init): Document that the optabs now have two modes. * config/i386/i386.c (ix86_expand_vector_init): Handle expansion of vec_init from half-sized vectors with the same element mode. * config/i386/sse.md (ssehalfvecmode): Add V4TI case. (ssehalfvecmodelower, ssescalarmodelower): New mode attributes. (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf, reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode after mode in gen_vec_extract* calls. (vec_extract<mode>): Renamed to ... (vec_extract<mode><ssescalarmodelower>): ... this. (vec_extract<mode><ssehalfvecmodelower>): New expander. (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add element mode after mode in gen_vec_init* calls. (VEC_INIT_HALF_MODE): New mode iterator. (vec_init<mode>): Renamed to ... (vec_init<mode><ssescalarmodelower>): ... this. (vec_init<mode><ssehalfvecmodelower>): New expander. * config/i386/mmx.md (vec_extractv2sf): Renamed to ... (vec_extractv2sfsf): ... this. (vec_initv2sf): Renamed to ... (vec_initv2sfsf): ... this. (vec_extractv2si): Renamed to ... (vec_extractv2sisi): ... this. (vec_initv2si): Renamed to ... (vec_initv2sisi): ... this. (vec_extractv4hi): Renamed to ... (vec_extractv4hihi): ... this. (vec_initv4hi): Renamed to ... (vec_initv4hihi): ... this. (vec_extractv8qi): Renamed to ... (vec_extractv8qiqi): ... this. (vec_initv8qi): Renamed to ... (vec_initv8qiqi): ... this. * config/rs6000/vector.md (VEC_base_l): New mode attribute. (vec_init<mode>): Renamed to ... (vec_init<mode><VEC_base_l>): ... this. (vec_extract<mode>): Renamed to ... (vec_extract<mode><VEC_base_l>): ... this. * config/rs6000/paired.md (vec_initv2sf): Renamed to ... (vec_initv2sfsf): ... this. * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3, vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add element mode after mode in gen_vec_init* calls. * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ... (vec_init<mode><Vel>): ... this. (vec_extract<mode>): Renamed to ... (vec_extract<mode><Vel>): ... this. * config/aarch64/iterators.md (Vel): New mode attribute. * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr): Add element mode after mode in gen_vec_extract* calls. * config/s390/vector.md (non_vec_l): New mode attribute. (vec_extract<mode>): Renamed to ... (vec_extract<mode><non_vec_l>): ... this. (vec_init<mode>): Renamed to ... (vec_init<mode><non_vec_l>): ... this. * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf, s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after vec_extract mode. * config/arm/iterators.md (V_elem_l): New mode attribute. * config/arm/neon.md (vec_extract<mode>): Renamed to ... (vec_extract<mode><V_elem_l>): ... this. (vec_extractv2di): Renamed to ... (vec_extractv2didi): ... this. (vec_init<mode>): Renamed to ... (vec_init<mode><V_elem_l>): ... this. (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>, reduc_smax_scal_<mode>, reduc_umin_scal_<mode>, reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>): Add element mode after gen_vec_extract* calls. * config/mips/mips-msa.md (vec_init<mode>): Renamed to ... (vec_init<mode><unitmode>): ... this. (vec_extract<mode>): Renamed to ... (vec_extract<mode><unitmode>): ... this. * config/mips/loongson.md (vec_init<mode>): Renamed to ... (vec_init<mode><unitmode>): ... this. * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ... (vec_initv2sfsf): ... this. (vec_extractv2sf): Renamed to ... (vec_extractv2sfsf): ... this. (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf): Add element mode after gen_vec_extract* calls. * config/mips/mips.md (unitmode): New mode iterator. * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack, spu_builtin_extract): Add element mode after gen_vec_extract* calls. * config/spu/spu.md (inner_l): New mode attribute. (vec_init<mode>): Renamed to ... (vec_init<mode><inner_l>): ... this. (vec_extract<mode>): Renamed to ... (vec_extract<mode><inner_l>): ... this. * config/sparc/sparc.md (veltmode): New mode iterator. (vec_init<VMALL:mode>): Renamed to ... (vec_init<VMALL:mode><VMALL:veltmode>): ... this. * config/ia64/vect.md (vec_initv2si): Renamed to ... (vec_initv2sisi): ... this. (vec_initv2sf): Renamed to ... (vec_initv2sfsf): ... this. (vec_extractv2sf): Renamed to ... (vec_extractv2sfsf): ... this. * config/powerpcspe/vector.md (VEC_base_l): New mode attribute. (vec_init<mode>): Renamed to ... (vec_init<mode><VEC_base_l>): ... this. (vec_extract<mode>): Renamed to ... (vec_extract<mode><VEC_base_l>): ... this. * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ... (vec_initv2sfsf): ... this. * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3, vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi, vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in gen_vec_init* calls. From-SVN: r250759
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| 40x.md | Loading commit data... | |
| 440.md | Loading commit data... | |
| 476.h | Loading commit data... | |
| 476.md | Loading commit data... | |
| 476.opt | Loading commit data... | |
| 601.md | Loading commit data... | |
| 603.md | Loading commit data... | |
| 6xx.md | Loading commit data... | |
| 7450.md | Loading commit data... | |
| 750cl.h | Loading commit data... | |
| 7xx.md | Loading commit data... | |
| 8540.md | Loading commit data... | |
| a2.md | Loading commit data... | |
| aix-stdint.h | Loading commit data... | |
| aix.h | Loading commit data... | |
| aix43.h | Loading commit data... | |
| aix51.h | Loading commit data... | |
| aix52.h | Loading commit data... | |
| aix53.h | Loading commit data... | |
| aix61.h | Loading commit data... | |
| aix64.opt | Loading commit data... | |
| aix71.h | Loading commit data... | |
| altivec.h | Loading commit data... | |
| altivec.md | Loading commit data... | |
| biarch64.h | Loading commit data... | |
| bmi2intrin.h | Loading commit data... | |
| bmiintrin.h | Loading commit data... | |
| cell.md | Loading commit data... | |
| constraints.md | Loading commit data... | |
| crypto.md | Loading commit data... | |
| darwin.h | Loading commit data... | |
| darwin.md | Loading commit data... | |
| darwin.opt | Loading commit data... | |
| darwin64.h | Loading commit data... | |
| darwin7.h | Loading commit data... | |
| darwin8.h | Loading commit data... | |
| default64.h | Loading commit data... | |
| dfp.md | Loading commit data... | |
| driver-powerpcspe.c | Loading commit data... | |
| e300c2c3.md | Loading commit data... | |
| e500.h | Loading commit data... | |
| e500mc.md | Loading commit data... | |
| e500mc64.md | Loading commit data... | |
| e5500.md | Loading commit data... | |
| e6500.md | Loading commit data... | |
| eabi.h | Loading commit data... | |
| eabialtivec.h | Loading commit data... | |
| eabisim.h | Loading commit data... | |
| eabispe.h | Loading commit data... | |
| freebsd.h | Loading commit data... | |
| freebsd64.h | Loading commit data... | |
| genopt.sh | Loading commit data... | |
| host-darwin.c | Loading commit data... | |
| host-ppc64-darwin.c | Loading commit data... | |
| htm.md | Loading commit data... | |
| htmintrin.h | Loading commit data... | |
| htmxlintrin.h | Loading commit data... | |
| linux.h | Loading commit data... | |
| linux64.h | Loading commit data... | |
| linux64.opt | Loading commit data... | |
| linuxaltivec.h | Loading commit data... | |
| linuxspe.h | Loading commit data... | |
| lynx.h | Loading commit data... | |
| milli.exp | Loading commit data... | |
| mpc.md | Loading commit data... | |
| netbsd.h | Loading commit data... | |
| option-defaults.h | Loading commit data... | |
| paired.h | Loading commit data... | |
| paired.md | Loading commit data... | |
| power4.md | Loading commit data... | |
| power5.md | Loading commit data... | |
| power6.md | Loading commit data... | |
| power7.md | Loading commit data... | |
| power8.md | Loading commit data... | |
| power9.md | Loading commit data... | |
| powerpcspe-builtin.def | Loading commit data... | |
| powerpcspe-c.c | Loading commit data... | |
| powerpcspe-cpus.def | Loading commit data... | |
| powerpcspe-linux.c | Loading commit data... | |
| powerpcspe-modes.def | Loading commit data... | |
| powerpcspe-opts.h | Loading commit data... | |
| powerpcspe-passes.def | Loading commit data... | |
| powerpcspe-protos.h | Loading commit data... | |
| powerpcspe-tables.opt | Loading commit data... | |
| powerpcspe.c | Loading commit data... | |
| powerpcspe.h | Loading commit data... | |
| powerpcspe.md | Loading commit data... | |
| powerpcspe.opt | Loading commit data... | |
| ppc-asm.h | Loading commit data... | |
| ppc-auxv.h | Loading commit data... | |
| ppu_intrinsics.h | Loading commit data... | |
| predicates.md | Loading commit data... | |
| rs64.md | Loading commit data... | |
| rtems.h | Loading commit data... | |
| secureplt.h | Loading commit data... | |
| si2vmx.h | Loading commit data... | |
| singlefp.h | Loading commit data... | |
| spe.h | Loading commit data... | |
| spe.md | Loading commit data... | |
| spu2vmx.h | Loading commit data... | |
| sync.md | Loading commit data... | |
| sysv4.h | Loading commit data... | |
| sysv4.opt | Loading commit data... | |
| sysv4le.h | Loading commit data... | |
| t-aix43 | Loading commit data... | |
| t-aix52 | Loading commit data... | |
| t-darwin64 | Loading commit data... | |
| t-darwin8 | Loading commit data... | |
| t-fprules | Loading commit data... | |
| t-freebsd64 | Loading commit data... | |
| t-linux | Loading commit data... | |
| t-linux64 | Loading commit data... | |
| t-linux64bele | Loading commit data... | |
| t-linux64le | Loading commit data... | |
| t-linux64lebe | Loading commit data... | |
| t-lynx | Loading commit data... | |
| t-netbsd | Loading commit data... | |
| t-powerpcspe | Loading commit data... | |
| t-ppccomm | Loading commit data... | |
| t-ppcendian | Loading commit data... | |
| t-ppcgas | Loading commit data... | |
| t-ppcos | Loading commit data... | |
| t-rtems | Loading commit data... | |
| t-spe | Loading commit data... | |
| t-vxworks | Loading commit data... | |
| t-vxworksae | Loading commit data... | |
| t-vxworksmils | Loading commit data... | |
| t-xilinx | Loading commit data... | |
| titan.md | Loading commit data... | |
| vec_types.h | Loading commit data... | |
| vector.md | Loading commit data... | |
| vsx.md | Loading commit data... | |
| vxworks.h | Loading commit data... | |
| vxworksae.h | Loading commit data... | |
| vxworksmils.h | Loading commit data... | |
| x-aix | Loading commit data... | |
| x-darwin | Loading commit data... | |
| x-darwin64 | Loading commit data... | |
| x-linux-relax | Loading commit data... | |
| x-powerpcspe | Loading commit data... | |
| x86intrin.h | Loading commit data... | |
| xcoff.h | Loading commit data... | |
| xfpu.h | Loading commit data... | |
| xfpu.md | Loading commit data... | |
| xilinx.h | Loading commit data... | |
| xilinx.opt | Loading commit data... |