Make vectorizable_load/store handle IFN_MASK_LOAD/STORE
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 3 Jan 2018 21:47:34 +0000 (21:47 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 3 Jan 2018 21:47:34 +0000 (21:47 +0000)
commitc3a8f964ab330d8e64bb4d33c462c64f4fa35aeb
tree06bd50ff8379abd5eac104fd39994ff29828baa5
parentc48d2d35a122798c047ca7a0f7e0d64293023c44
Make vectorizable_load/store handle IFN_MASK_LOAD/STORE

After the previous patches, it's easier to see that the remaining
inlined transform code in vectorizable_mask_load_store is just a
cut-down version of the VMAT_CONTIGUOUS handling in vectorizable_load
and vectorizable_store.  This patch therefore makes those functions
handle masked loads and stores instead.

This makes it easier to handle more forms of masked load and store
without duplicating logic from the unmasked forms.  It also helps with
support for fully-masked loops.

2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vect-stmts.c (vect_get_store_rhs): New function.
(vectorizable_mask_load_store): Delete.
(vectorizable_call): Return false for masked loads and stores.
(vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
instead of gimple_assign_rhs1.
(vectorizable_load): Handle IFN_MASK_LOAD.
(vect_transform_stmt): Don't set is_store for call_vec_info_type.

From-SVN: r256216
gcc/ChangeLog
gcc/tree-vect-stmts.c