[PATCH] [AVX512F] Add scatter support for vectorizer

Petr Murzin petrmurzin1@gmail.com
Fri Jul 31 11:06:00 GMT 2015


Hello,
This patch adds scatter support for vectorizer (for AVX512F
instructions). Please have a look. Is it OK for trunk?

Thanks,
Petr


2015-07-31  Andrey Turetskiy  <andrey.turetskiy@intel.com>
                  Petr Murzin  <petr.murzin@intel.com>

gcc/

* config/i386/i386-builtin-types.def
(VOID_PFLOAT_HI_V8DI_V16SF_INT): New.
(VOID_PDOUBLE_QI_V16SI_V8DF_INT): Ditto.
(VOID_PINT_HI_V8DI_V16SI_INT): Ditto.
(VOID_PLONGLONG_QI_V16SI_V8DI_INT): Ditto.
* config/i386/i386.c
(ix86_builtins): Add IX86_BUILTIN_SCATTERALTSIV8DF,
IX86_BUILTIN_SCATTERALTDIV16SF, IX86_BUILTIN_SCATTERALTSIV8DI,
IX86_BUILTIN_SCATTERALTDIV16SI.
(ix86_init_mmx_sse_builtins): Define __builtin_ia32_scatteraltsiv8df,
__builtin_ia32_scatteraltdiv8sf, __builtin_ia32_scatteraltsiv8di,
__builtin_ia32_scatteraltdiv8si.
(ix86_expand_builtin): Handle IX86_BUILTIN_SCATTERALTSIV8DF,
IX86_BUILTIN_SCATTERALTDIV16SF, IX86_BUILTIN_SCATTERALTSIV8DI,
IX86_BUILTIN_SCATTERALTDIV16SI.
(ix86_vectorize_builtin_scatter): New.
(TARGET_VECTORIZE_BUILTIN_SCATTER): Define as
ix86_vectorize_builtin_scatter.
* doc/tm.texi.in (TARGET_VECTORIZE_BUILTIN_SCATTER): New.
* doc/tm.texi: Regenerate.
* target.def: Add scatter builtin.
* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Add new
checkings for STMT_VINFO_SCATTER_P.
(vect_check_gather): Rename to ...
(vect_check_gather_scatter): this and enhance number of arguments.
(vect_analyze_data_refs): Add scatter and maybe_scatter variables and
new checkings for it accordingly.
* tree-vectorizer.h (STMT_VINFO_SCATTER_P(S)): Define.
(STMT_VINFO_STRIDE_LOAD_P(S)): Ditto.
(vect_check_gather): Rename to ...
(vect_check_gather_scatter): this.
* triee-vect-stmts.c (vectorizable_mask_load_store): Ditto.
(vectorizable_store): Add checkings for STMT_VINFO_SCATTER_P.
(vect_mark_stmts_to_be_vectorized): Ditto.

gcc/testsuite/

* gcc.target/i386/avx512f-scatter-1.c: New.
* gcc.target/i386/avx512f-scatter-2.c: Ditto.
* gcc.target/i386/avx512f-scatter-3.c: Ditto.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scatter.patch
Type: application/octet-stream
Size: 37440 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150731/771d6878/attachment.obj>


More information about the Gcc-patches mailing list