[Bug tree-optimization/101097] Vectorizer is too eager to use vec_unpack
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Jul 1 02:53:18 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101097
--- Comment #13 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Hongtao.liu from comment #12)
> (In reply to rsandifo@gcc.gnu.org from comment #11)
> > FWIW, you could try something similar to how aarch64 handles this
> > for Advanced SIMD, with a combination of:
> >
> > - TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES
> > - TARGET_VECTORIZE_RELATED_MODE.
> I added a target_hook to return vector mode with same element number for
> i386 backend.
> It works for this case, but regresses many testcases which are related to
> gather/scatter instructions, because gather/scatter instructions accept same
> vector size but not same element number.
>
> /* AVX2 */
> def_builtin_pure (OPTION_MASK_ISA_AVX2, 0, "__builtin_ia32_gathersiv2df",
> V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
> IX86_BUILTIN_GATHERSIV2DF);
It hits the gcc_assert in tree-vect-stmts.c:vect_build_gather_load_calls
if (!useless_type_conversion_p (idxtype, TREE_TYPE (op)))
{
gcc_assert (known_eq (TYPE_VECTOR_SUBPARTS (TREE_TYPE (op)),
TYPE_VECTOR_SUBPARTS (idxtype)));
More information about the Gcc-bugs
mailing list