On 01/12/2018 09:28 AM, Richard Sandiford wrote:
> 
> Here's the patch with the updated docs.  Does this version look OK?
> 
> Thanks,
> Richard
> 
> 
> 2018-01-12  Richard Sandiford  <richard.sandif...@linaro.org>
>           Alan Hayward  <alan.hayw...@arm.com>
>           David Sherwood  <david.sherw...@arm.com>
> 
> gcc/
>       * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
>       (vec_mask_store_lanes@var{m}@var{n}): Likewise.
>       * optabs.def (vec_mask_load_lanes_optab): New optab.
>       (vec_mask_store_lanes_optab): Likewise.
>       * internal-fn.def (MASK_LOAD_LANES): New internal function.
>       (MASK_STORE_LANES): Likewise.
>       * internal-fn.c (mask_load_lanes_direct): New macro.
>       (mask_store_lanes_direct): Likewise.
>       (expand_mask_load_optab_fn): Handle masked operations.
>       (expand_mask_load_lanes_optab_fn): New macro.
>       (expand_mask_store_optab_fn): Handle masked operations.
>       (expand_mask_store_lanes_optab_fn): New macro.
>       (direct_mask_load_lanes_optab_supported_p): Likewise.
>       (direct_mask_store_lanes_optab_supported_p): Likewise.
>       * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
>       parameter.
>       (vect_load_lanes_supported): Likewise.
>       * tree-vect-data-refs.c (strip_conversion): New function.
>       (can_group_stmts_p): Likewise.
>       (vect_analyze_data_ref_accesses): Use it instead of checking
>       for a pair of assignments.
>       (vect_store_lanes_supported): Take a masked_p parameter.
>       (vect_load_lanes_supported): Likewise.
>       * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
>       vect_store_lanes_supported and vect_load_lanes_supported.
>       * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
>       * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
>       parameter.  Don't allow gaps for masked accesses.
>       Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
>       and vect_load_lanes_supported.
>       (get_load_store_type): Take a masked_p parameter and update
>       call to get_group_load_store_type.
>       (vectorizable_store): Update call to get_load_store_type.
>       Handle IFN_MASK_STORE_LANES.
>       (vectorizable_load): Update call to get_load_store_type.
>       Handle IFN_MASK_LOAD_LANES.
> 
> gcc/testsuite/
>       * gcc.dg/vect/vect-ooo-group-1.c: New test.
>       * gcc.target/aarch64/sve/mask_struct_load_1.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_1_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_2.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_2_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_3.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_3_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_4.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_5.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_6.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_7.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_load_8.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_1_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_2_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_3.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_3_run.c: Likewise.
>       * gcc.target/aarch64/sve/mask_struct_store_4.c: Likewise.
OK.  I guess in retrospect I should have made the assumption that the
docs were slightly off and reviewed the rest in that light.

Sorry for making this wait.


Jeff


Reply via email to