cleanup: Change LEN_MASK into MASK_LEN
Hi. Since start from LEN_MASK_GATHER_LOAD/LEN_MASK_SCATTER_STORE, COND_LEN_* patterns, the order of len and mask is {mask,len,bias}. The reason we make "mask" argument comes before "len" is because we want to keep the "mask" location same as mask_* or cond_* patterns to make use of current codes flow of mask_* and cond_*. Otherwise, we will need to change codes much more and make codes hard to maintain. Now, we already have COND_LEN_*, it's naturally that we should rename "LEN_MASK" into "MASK_LEN" to keep name scheme consistent. This patch only changes the name "LEN_MASK" into "MASK_LEN". No codes functionality change. gcc/ChangeLog: * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN. (mask_len_load<mode><vm>): Ditto. (len_maskstore<mode><vm>): Ditto. (mask_len_store<mode><vm>): Ditto. (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto. (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto. (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto. (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto. (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto. (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto. (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto. (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto. (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto. (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto. (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto. (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto. (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto. (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto. (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto. (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto. (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto. (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto. (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto. (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto. (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto. (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto. (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto. (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto. (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto. (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto. (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto. (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto. * doc/md.texi: Ditto. * genopinit.cc (main): Ditto. (CMP_NAME): Ditto. Ditto. * gimple-fold.cc (arith_overflowed_p): Ditto. (gimple_fold_partial_load_store_mem_ref): Ditto. (gimple_fold_call): Ditto. * internal-fn.cc (len_maskload_direct): Ditto. (mask_len_load_direct): Ditto. (len_maskstore_direct): Ditto. (mask_len_store_direct): Ditto. (expand_call_mem_ref): Ditto. (expand_len_maskload_optab_fn): Ditto. (expand_mask_len_load_optab_fn): Ditto. (expand_len_maskstore_optab_fn): Ditto. (expand_mask_len_store_optab_fn): Ditto. (direct_len_maskload_optab_supported_p): Ditto. (direct_mask_len_load_optab_supported_p): Ditto. (direct_len_maskstore_optab_supported_p): Ditto. (direct_mask_len_store_optab_supported_p): Ditto. (internal_load_fn_p): Ditto. (internal_store_fn_p): Ditto. (internal_gather_scatter_fn_p): Ditto. (internal_fn_len_index): Ditto. (internal_fn_mask_index): Ditto. (internal_fn_stored_value_index): Ditto. (internal_len_load_store_bias): Ditto. * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto. (MASK_LEN_GATHER_LOAD): Ditto. (LEN_MASK_LOAD): Ditto. (MASK_LEN_LOAD): Ditto. (LEN_MASK_SCATTER_STORE): Ditto. (MASK_LEN_SCATTER_STORE): Ditto. (LEN_MASK_STORE): Ditto. (MASK_LEN_STORE): Ditto. * optabs-query.cc (supports_vec_gather_load_p): Ditto. (supports_vec_scatter_store_p): Ditto. * optabs-tree.cc (target_supports_mask_load_store_p): Ditto. (target_supports_len_load_store_p): Ditto. * optabs.def (OPTAB_CD): Ditto. * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto. (call_may_clobber_ref_p_1): Ditto. * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto. (dse_optimize_stmt): Ditto. * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto. (get_alias_ptr_type_for_ptr_address): Ditto. * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto. * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto. * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto. (vect_get_strided_load_store_ops): Ditto. (vectorizable_store): Ditto. (vectorizable_load): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-10.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-11.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-12.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-2.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-3.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-4.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-5.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-6.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-7.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-8.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-9.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-10.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-11.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-2.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-3.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-4.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-5.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-6.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-7.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-8.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-9.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-10.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-2.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-3.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-4.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-5.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-6.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-7.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-8.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-9.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-10.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-2.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-3.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-4.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-5.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-6.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-7.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-8.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-9.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/strided_load-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/strided_load-2.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-1.c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c: Ditto. * gcc.target/riscv/rvv/autovec/partial/gimple_fold-1.c: Ditto.
This commit is contained in:
parent
1ec65c2bc0
commit
bd68b33f80
63 changed files with 170 additions and 170 deletions
|
@ -22,7 +22,7 @@
|
|||
;; == Loads/Stores
|
||||
;; =========================================================================
|
||||
|
||||
(define_expand "len_maskload<mode><vm>"
|
||||
(define_expand "mask_len_load<mode><vm>"
|
||||
[(match_operand:V 0 "register_operand")
|
||||
(match_operand:V 1 "memory_operand")
|
||||
(match_operand 2 "autovec_length_operand")
|
||||
|
@ -34,7 +34,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_maskstore<mode><vm>"
|
||||
(define_expand "mask_len_store<mode><vm>"
|
||||
[(match_operand:V 0 "memory_operand")
|
||||
(match_operand:V 1 "register_operand")
|
||||
(match_operand 2 "autovec_length_operand")
|
||||
|
@ -61,7 +61,7 @@
|
|||
;; == Gather Load
|
||||
;; =========================================================================
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO64:mode><RATIO64I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO64:mode><RATIO64I:mode>"
|
||||
[(match_operand:RATIO64 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO64I 2 "register_operand")
|
||||
|
@ -76,7 +76,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO32:mode><RATIO32I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO32:mode><RATIO32I:mode>"
|
||||
[(match_operand:RATIO32 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO32I 2 "register_operand")
|
||||
|
@ -91,7 +91,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO16:mode><RATIO16I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO16:mode><RATIO16I:mode>"
|
||||
[(match_operand:RATIO16 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO16I 2 "register_operand")
|
||||
|
@ -106,7 +106,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO8:mode><RATIO8I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO8:mode><RATIO8I:mode>"
|
||||
[(match_operand:RATIO8 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO8I 2 "register_operand")
|
||||
|
@ -121,7 +121,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO4:mode><RATIO4I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO4:mode><RATIO4I:mode>"
|
||||
[(match_operand:RATIO4 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO4I 2 "register_operand")
|
||||
|
@ -136,7 +136,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_gather_load<RATIO2:mode><RATIO2I:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO2:mode><RATIO2I:mode>"
|
||||
[(match_operand:RATIO2 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO2I 2 "register_operand")
|
||||
|
@ -155,7 +155,7 @@
|
|||
;; larger SEW. Since RVV indexed load/store support zero extend
|
||||
;; implicitly and not support scaling, we should only allow
|
||||
;; operands[3] and operands[4] to be const_1_operand.
|
||||
(define_expand "len_mask_gather_load<RATIO1:mode><RATIO1:mode>"
|
||||
(define_expand "mask_len_gather_load<RATIO1:mode><RATIO1:mode>"
|
||||
[(match_operand:RATIO1 0 "register_operand")
|
||||
(match_operand 1 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO1 2 "register_operand")
|
||||
|
@ -174,7 +174,7 @@
|
|||
;; == Scatter Store
|
||||
;; =========================================================================
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO64I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO64:gs_extension>")
|
||||
|
@ -189,7 +189,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO32I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO32:gs_extension>")
|
||||
|
@ -204,7 +204,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO16I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO16:gs_extension>")
|
||||
|
@ -219,7 +219,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO8I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO8:gs_extension>")
|
||||
|
@ -234,7 +234,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO4I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO4:gs_extension>")
|
||||
|
@ -249,7 +249,7 @@
|
|||
DONE;
|
||||
})
|
||||
|
||||
(define_expand "len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO2I 1 "register_operand")
|
||||
(match_operand 2 "<RATIO2:gs_extension>")
|
||||
|
@ -268,7 +268,7 @@
|
|||
;; larger SEW. Since RVV indexed load/store support zero extend
|
||||
;; implicitly and not support scaling, we should only allow
|
||||
;; operands[3] and operands[4] to be const_1_operand.
|
||||
(define_expand "len_mask_scatter_store<RATIO1:mode><RATIO1:mode>"
|
||||
(define_expand "mask_len_scatter_store<RATIO1:mode><RATIO1:mode>"
|
||||
[(match_operand 0 "pmode_reg_or_0_operand")
|
||||
(match_operand:RATIO1 1 "register_operand")
|
||||
(match_operand 2 "<RATIO1:gs_extension>")
|
||||
|
|
|
@ -5040,10 +5040,10 @@ operand 5. Bit @var{i} of the mask is set if element @var{i}
|
|||
of the result should be loaded from memory and clear if element @var{i}
|
||||
of the result should be set to zero.
|
||||
|
||||
@cindex @code{len_mask_gather_load@var{m}@var{n}} instruction pattern
|
||||
@item @samp{len_mask_gather_load@var{m}@var{n}}
|
||||
@cindex @code{mask_len_gather_load@var{m}@var{n}} instruction pattern
|
||||
@item @samp{mask_len_gather_load@var{m}@var{n}}
|
||||
Like @samp{gather_load@var{m}@var{n}}, but takes an extra length operand (operand 5),
|
||||
a bias operand (operand 6) as well as a mask operand (operand 7). Similar to len_maskload,
|
||||
a bias operand (operand 6) as well as a mask operand (operand 7). Similar to mask_len_load,
|
||||
the instruction loads at most (operand 5 + operand 6) elements from memory.
|
||||
Bit @var{i} of the mask is set if element @var{i} of the result should
|
||||
be loaded from memory and clear if element @var{i} of the result should be undefined.
|
||||
|
@ -5078,8 +5078,8 @@ Like @samp{scatter_store@var{m}@var{n}}, but takes an extra mask operand as
|
|||
operand 5. Bit @var{i} of the mask is set if element @var{i}
|
||||
of the result should be stored to memory.
|
||||
|
||||
@cindex @code{len_mask_scatter_store@var{m}@var{n}} instruction pattern
|
||||
@item @samp{len_mask_scatter_store@var{m}@var{n}}
|
||||
@cindex @code{mask_len_scatter_store@var{m}@var{n}} instruction pattern
|
||||
@item @samp{mask_len_scatter_store@var{m}@var{n}}
|
||||
Like @samp{scatter_store@var{m}@var{n}}, but takes an extra length operand (operand 5),
|
||||
a bias operand (operand 6) as well as a mask operand (operand 7). The instruction stores
|
||||
at most (operand 5 + operand 6) elements of (operand 4) to memory.
|
||||
|
@ -5321,8 +5321,8 @@ of @code{QI} elements.
|
|||
|
||||
This pattern is not allowed to @code{FAIL}.
|
||||
|
||||
@cindex @code{len_maskload@var{m}@var{n}} instruction pattern
|
||||
@item @samp{len_maskload@var{m}@var{n}}
|
||||
@cindex @code{mask_len_load@var{m}@var{n}} instruction pattern
|
||||
@item @samp{mask_len_load@var{m}@var{n}}
|
||||
Perform a masked load from the memory location pointed to by operand 1
|
||||
into register operand 0. (operand 2 + operand 3) elements are loaded from
|
||||
memory and other elements in operand 0 are set to undefined values.
|
||||
|
@ -5348,8 +5348,8 @@ of @code{QI} elements.
|
|||
|
||||
This pattern is not allowed to @code{FAIL}.
|
||||
|
||||
@cindex @code{len_maskstore@var{m}@var{n}} instruction pattern
|
||||
@item @samp{len_maskstore@var{m}@var{n}}
|
||||
@cindex @code{mask_len_store@var{m}@var{n}} instruction pattern
|
||||
@item @samp{mask_len_store@var{m}@var{n}}
|
||||
Perform a masked store from vector register operand 1 into memory operand 0.
|
||||
(operand 2 + operand 3) elements are stored to memory
|
||||
and leave the other elements of operand 0 unchanged.
|
||||
|
|
|
@ -376,7 +376,7 @@ main (int argc, const char **argv)
|
|||
fprintf (s_file,
|
||||
"/* Returns TRUE if the target supports any of the partial vector\n"
|
||||
" optabs: while_ult_optab, len_load_optab, len_store_optab,\n"
|
||||
" len_maskload_optab or len_maskstore_optab,\n"
|
||||
" mask_len_load_optab or mask_len_store_optab,\n"
|
||||
" for any mode. */\n"
|
||||
"bool\npartial_vectors_supported_p (void)\n{\n");
|
||||
bool any_match = false;
|
||||
|
@ -386,8 +386,8 @@ main (int argc, const char **argv)
|
|||
{
|
||||
#define CMP_NAME(N) !strncmp (p->name, (N), strlen ((N)))
|
||||
if (CMP_NAME("while_ult") || CMP_NAME ("len_load")
|
||||
|| CMP_NAME ("len_store")|| CMP_NAME ("len_maskload")
|
||||
|| CMP_NAME ("len_maskstore"))
|
||||
|| CMP_NAME ("len_store")|| CMP_NAME ("mask_len_load")
|
||||
|| CMP_NAME ("mask_len_store"))
|
||||
{
|
||||
if (first)
|
||||
fprintf (s_file, " HAVE_%s", p->name);
|
||||
|
|
|
@ -5370,7 +5370,7 @@ arith_overflowed_p (enum tree_code code, const_tree type,
|
|||
return wi::min_precision (wres, sign) > TYPE_PRECISION (type);
|
||||
}
|
||||
|
||||
/* If IFN_{MASK,LEN,LEN_MASK}_LOAD/STORE call CALL is unconditional,
|
||||
/* If IFN_{MASK,LEN,MASK_LEN}_LOAD/STORE call CALL is unconditional,
|
||||
return a MEM_REF for the memory it references, otherwise return null.
|
||||
VECTYPE is the type of the memory vector. MASK_P indicates it's for
|
||||
MASK if true, otherwise it's for LEN. */
|
||||
|
@ -5398,15 +5398,15 @@ gimple_fold_partial_load_store_mem_ref (gcall *call, tree vectype, bool mask_p)
|
|||
return NULL_TREE;
|
||||
tree bias = gimple_call_arg (call, len_index + 1);
|
||||
gcc_assert (TREE_CODE (bias) == INTEGER_CST);
|
||||
/* For LEN_LOAD/LEN_STORE/LEN_MASK_LOAD/LEN_MASK_STORE,
|
||||
/* For LEN_LOAD/LEN_STORE/MASK_LEN_LOAD/MASK_LEN_STORE,
|
||||
we don't fold when (bias + len) != VF. */
|
||||
if (maybe_ne (wi::to_poly_widest (basic_len) + wi::to_widest (bias),
|
||||
GET_MODE_NUNITS (TYPE_MODE (vectype))))
|
||||
return NULL_TREE;
|
||||
|
||||
/* For LEN_MASK_{LOAD,STORE}, we should also check whether
|
||||
/* For MASK_LEN_{LOAD,STORE}, we should also check whether
|
||||
the mask is all ones mask. */
|
||||
if (ifn == IFN_LEN_MASK_LOAD || ifn == IFN_LEN_MASK_STORE)
|
||||
if (ifn == IFN_MASK_LEN_LOAD || ifn == IFN_MASK_LEN_STORE)
|
||||
{
|
||||
tree mask = gimple_call_arg (call, internal_fn_mask_index (ifn));
|
||||
if (!integer_all_onesp (mask))
|
||||
|
@ -5689,11 +5689,11 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace)
|
|||
changed |= gimple_fold_partial_store (gsi, stmt, true);
|
||||
break;
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
changed |= gimple_fold_partial_load (gsi, stmt, false);
|
||||
break;
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
changed |= gimple_fold_partial_store (gsi, stmt, false);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -165,7 +165,7 @@ init_internal_fns ()
|
|||
#define mask_load_lanes_direct { -1, -1, false }
|
||||
#define gather_load_direct { 3, 1, false }
|
||||
#define len_load_direct { -1, -1, false }
|
||||
#define len_maskload_direct { -1, 4, false }
|
||||
#define mask_len_load_direct { -1, 4, false }
|
||||
#define mask_store_direct { 3, 2, false }
|
||||
#define store_lanes_direct { 0, 0, false }
|
||||
#define mask_store_lanes_direct { 0, 0, false }
|
||||
|
@ -173,7 +173,7 @@ init_internal_fns ()
|
|||
#define vec_cond_direct { 2, 0, false }
|
||||
#define scatter_store_direct { 3, 1, false }
|
||||
#define len_store_direct { 3, 3, false }
|
||||
#define len_maskstore_direct { 4, 5, false }
|
||||
#define mask_len_store_direct { 4, 5, false }
|
||||
#define vec_set_direct { 3, 3, false }
|
||||
#define vec_extract_direct { 3, 3, false }
|
||||
#define unary_direct { 0, 0, true }
|
||||
|
@ -2912,7 +2912,7 @@ expand_call_mem_ref (tree type, gcall *stmt, int index)
|
|||
return fold_build2 (MEM_REF, type, addr, build_int_cst (alias_ptr_type, 0));
|
||||
}
|
||||
|
||||
/* Expand MASK_LOAD{,_LANES}, LEN_MASK_LOAD or LEN_LOAD call STMT using optab
|
||||
/* Expand MASK_LOAD{,_LANES}, MASK_LEN_LOAD or LEN_LOAD call STMT using optab
|
||||
* OPTAB. */
|
||||
|
||||
static void
|
||||
|
@ -2954,9 +2954,9 @@ expand_partial_load_optab_fn (internal_fn ifn, gcall *stmt, convert_optab optab)
|
|||
#define expand_mask_load_optab_fn expand_partial_load_optab_fn
|
||||
#define expand_mask_load_lanes_optab_fn expand_mask_load_optab_fn
|
||||
#define expand_len_load_optab_fn expand_partial_load_optab_fn
|
||||
#define expand_len_maskload_optab_fn expand_partial_load_optab_fn
|
||||
#define expand_mask_len_load_optab_fn expand_partial_load_optab_fn
|
||||
|
||||
/* Expand MASK_STORE{,_LANES}, LEN_MASK_STORE or LEN_STORE call STMT using optab
|
||||
/* Expand MASK_STORE{,_LANES}, MASK_LEN_STORE or LEN_STORE call STMT using optab
|
||||
* OPTAB. */
|
||||
|
||||
static void
|
||||
|
@ -2993,7 +2993,7 @@ expand_partial_store_optab_fn (internal_fn ifn, gcall *stmt, convert_optab optab
|
|||
#define expand_mask_store_optab_fn expand_partial_store_optab_fn
|
||||
#define expand_mask_store_lanes_optab_fn expand_mask_store_optab_fn
|
||||
#define expand_len_store_optab_fn expand_partial_store_optab_fn
|
||||
#define expand_len_maskstore_optab_fn expand_partial_store_optab_fn
|
||||
#define expand_mask_len_store_optab_fn expand_partial_store_optab_fn
|
||||
|
||||
/* Expand VCOND, VCONDU and VCONDEQ optab internal functions.
|
||||
The expansion of STMT happens based on OPTAB table associated. */
|
||||
|
@ -4001,7 +4001,7 @@ multi_vector_optab_supported_p (convert_optab optab, tree_pair types,
|
|||
#define direct_mask_load_lanes_optab_supported_p multi_vector_optab_supported_p
|
||||
#define direct_gather_load_optab_supported_p convert_optab_supported_p
|
||||
#define direct_len_load_optab_supported_p direct_optab_supported_p
|
||||
#define direct_len_maskload_optab_supported_p convert_optab_supported_p
|
||||
#define direct_mask_len_load_optab_supported_p convert_optab_supported_p
|
||||
#define direct_mask_store_optab_supported_p convert_optab_supported_p
|
||||
#define direct_store_lanes_optab_supported_p multi_vector_optab_supported_p
|
||||
#define direct_mask_store_lanes_optab_supported_p multi_vector_optab_supported_p
|
||||
|
@ -4009,7 +4009,7 @@ multi_vector_optab_supported_p (convert_optab optab, tree_pair types,
|
|||
#define direct_vec_cond_optab_supported_p convert_optab_supported_p
|
||||
#define direct_scatter_store_optab_supported_p convert_optab_supported_p
|
||||
#define direct_len_store_optab_supported_p direct_optab_supported_p
|
||||
#define direct_len_maskstore_optab_supported_p convert_optab_supported_p
|
||||
#define direct_mask_len_store_optab_supported_p convert_optab_supported_p
|
||||
#define direct_while_optab_supported_p convert_optab_supported_p
|
||||
#define direct_fold_extract_optab_supported_p direct_optab_supported_p
|
||||
#define direct_fold_left_optab_supported_p direct_optab_supported_p
|
||||
|
@ -4554,9 +4554,9 @@ internal_load_fn_p (internal_fn fn)
|
|||
case IFN_MASK_LOAD_LANES:
|
||||
case IFN_GATHER_LOAD:
|
||||
case IFN_MASK_GATHER_LOAD:
|
||||
case IFN_LEN_MASK_GATHER_LOAD:
|
||||
case IFN_MASK_LEN_GATHER_LOAD:
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
@ -4576,9 +4576,9 @@ internal_store_fn_p (internal_fn fn)
|
|||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_SCATTER_STORE:
|
||||
case IFN_MASK_SCATTER_STORE:
|
||||
case IFN_LEN_MASK_SCATTER_STORE:
|
||||
case IFN_MASK_LEN_SCATTER_STORE:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
@ -4595,10 +4595,10 @@ internal_gather_scatter_fn_p (internal_fn fn)
|
|||
{
|
||||
case IFN_GATHER_LOAD:
|
||||
case IFN_MASK_GATHER_LOAD:
|
||||
case IFN_LEN_MASK_GATHER_LOAD:
|
||||
case IFN_MASK_LEN_GATHER_LOAD:
|
||||
case IFN_SCATTER_STORE:
|
||||
case IFN_MASK_SCATTER_STORE:
|
||||
case IFN_LEN_MASK_SCATTER_STORE:
|
||||
case IFN_MASK_LEN_SCATTER_STORE:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
@ -4616,12 +4616,12 @@ internal_fn_len_index (internal_fn fn)
|
|||
{
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
return 2;
|
||||
|
||||
case IFN_LEN_MASK_GATHER_LOAD:
|
||||
case IFN_LEN_MASK_SCATTER_STORE:
|
||||
case IFN_MASK_LEN_GATHER_LOAD:
|
||||
case IFN_MASK_LEN_SCATTER_STORE:
|
||||
case IFN_COND_LEN_FMA:
|
||||
case IFN_COND_LEN_FMS:
|
||||
case IFN_COND_LEN_FNMA:
|
||||
|
@ -4669,10 +4669,10 @@ internal_fn_mask_index (internal_fn fn)
|
|||
|
||||
case IFN_MASK_GATHER_LOAD:
|
||||
case IFN_MASK_SCATTER_STORE:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_LEN_MASK_GATHER_LOAD:
|
||||
case IFN_LEN_MASK_SCATTER_STORE:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
case IFN_MASK_LEN_GATHER_LOAD:
|
||||
case IFN_MASK_LEN_SCATTER_STORE:
|
||||
return 4;
|
||||
|
||||
default:
|
||||
|
@ -4693,13 +4693,13 @@ internal_fn_stored_value_index (internal_fn fn)
|
|||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_SCATTER_STORE:
|
||||
case IFN_MASK_SCATTER_STORE:
|
||||
case IFN_LEN_MASK_SCATTER_STORE:
|
||||
case IFN_MASK_LEN_SCATTER_STORE:
|
||||
return 3;
|
||||
|
||||
case IFN_LEN_STORE:
|
||||
return 4;
|
||||
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
return 5;
|
||||
|
||||
default:
|
||||
|
@ -4774,13 +4774,13 @@ internal_len_load_store_bias (internal_fn ifn, machine_mode mode)
|
|||
return VECT_PARTIAL_BIAS_UNSUPPORTED;
|
||||
if (ifn == IFN_LEN_LOAD)
|
||||
{
|
||||
/* Try LEN_MASK_LOAD. */
|
||||
optab = direct_internal_fn_optab (IFN_LEN_MASK_LOAD);
|
||||
/* Try MASK_LEN_LOAD. */
|
||||
optab = direct_internal_fn_optab (IFN_MASK_LEN_LOAD);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try LEN_MASK_STORE. */
|
||||
optab = direct_internal_fn_optab (IFN_LEN_MASK_STORE);
|
||||
/* Try MASK_LEN_STORE. */
|
||||
optab = direct_internal_fn_optab (IFN_MASK_LEN_STORE);
|
||||
}
|
||||
icode = convert_optab_handler (optab, mode, mask_mode);
|
||||
}
|
||||
|
|
|
@ -48,16 +48,16 @@ along with GCC; see the file COPYING3. If not see
|
|||
- mask_load: currently just maskload
|
||||
- load_lanes: currently just vec_load_lanes
|
||||
- mask_load_lanes: currently just vec_mask_load_lanes
|
||||
- gather_load: used for {mask_,len_mask,}gather_load
|
||||
- gather_load: used for {mask_,mask_len_,}gather_load
|
||||
- len_load: currently just len_load
|
||||
- len_maskload: currently just len_maskload
|
||||
- mask_len_load: currently just mask_len_load
|
||||
|
||||
- mask_store: currently just maskstore
|
||||
- store_lanes: currently just vec_store_lanes
|
||||
- mask_store_lanes: currently just vec_mask_store_lanes
|
||||
- scatter_store: used for {mask_,len_mask,}scatter_store
|
||||
- scatter_store: used for {mask_,mask_len_,}scatter_store
|
||||
- len_store: currently just len_store
|
||||
- len_maskstore: currently just len_maskstore
|
||||
- mask_len_store: currently just mask_len_store
|
||||
|
||||
- unary: a normal unary optab, such as vec_reverse_<mode>
|
||||
- binary: a normal binary optab, such as vec_interleave_lo_<mode>
|
||||
|
@ -161,17 +161,17 @@ DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE,
|
|||
DEF_INTERNAL_OPTAB_FN (GATHER_LOAD, ECF_PURE, gather_load, gather_load)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_GATHER_LOAD, ECF_PURE,
|
||||
mask_gather_load, gather_load)
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_MASK_GATHER_LOAD, ECF_PURE,
|
||||
len_mask_gather_load, gather_load)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_LEN_GATHER_LOAD, ECF_PURE,
|
||||
mask_len_gather_load, gather_load)
|
||||
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_LOAD, ECF_PURE, len_load, len_load)
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_MASK_LOAD, ECF_PURE, len_maskload, len_maskload)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD, ECF_PURE, mask_len_load, mask_len_load)
|
||||
|
||||
DEF_INTERNAL_OPTAB_FN (SCATTER_STORE, 0, scatter_store, scatter_store)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_SCATTER_STORE, 0,
|
||||
mask_scatter_store, scatter_store)
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_MASK_SCATTER_STORE, 0,
|
||||
len_mask_scatter_store, scatter_store)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_LEN_SCATTER_STORE, 0,
|
||||
mask_len_scatter_store, scatter_store)
|
||||
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_STORE, 0, maskstore, mask_store)
|
||||
DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
|
||||
|
@ -187,7 +187,7 @@ DEF_INTERNAL_OPTAB_FN (VEC_SET, 0, vec_set, vec_set)
|
|||
DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, 0, vec_extract, vec_extract)
|
||||
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_STORE, 0, len_store, len_store)
|
||||
DEF_INTERNAL_OPTAB_FN (LEN_MASK_STORE, 0, len_maskstore, len_maskstore)
|
||||
DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE, 0, mask_len_store, mask_len_store)
|
||||
|
||||
DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while)
|
||||
DEF_INTERNAL_OPTAB_FN (SELECT_VL, ECF_CONST | ECF_NOTHROW, select_vl, binary)
|
||||
|
|
|
@ -676,7 +676,7 @@ supports_vec_gather_load_p (machine_mode mode)
|
|||
this_fn_optabs->supports_vec_gather_load[mode]
|
||||
= (supports_vec_convert_optab_p (gather_load_optab, mode)
|
||||
|| supports_vec_convert_optab_p (mask_gather_load_optab, mode)
|
||||
|| supports_vec_convert_optab_p (len_mask_gather_load_optab, mode)
|
||||
|| supports_vec_convert_optab_p (mask_len_gather_load_optab, mode)
|
||||
? 1 : -1);
|
||||
|
||||
return this_fn_optabs->supports_vec_gather_load[mode] > 0;
|
||||
|
@ -693,7 +693,7 @@ supports_vec_scatter_store_p (machine_mode mode)
|
|||
this_fn_optabs->supports_vec_scatter_store[mode]
|
||||
= (supports_vec_convert_optab_p (scatter_store_optab, mode)
|
||||
|| supports_vec_convert_optab_p (mask_scatter_store_optab, mode)
|
||||
|| supports_vec_convert_optab_p (len_mask_scatter_store_optab, mode)
|
||||
|| supports_vec_convert_optab_p (mask_len_scatter_store_optab, mode)
|
||||
? 1 : -1);
|
||||
|
||||
return this_fn_optabs->supports_vec_scatter_store[mode] > 0;
|
||||
|
|
|
@ -545,17 +545,17 @@ target_supports_op_p (tree type, enum tree_code code,
|
|||
|
||||
/* Return true if the target has support for masked load/store.
|
||||
We can support masked load/store by either mask{load,store}
|
||||
or len_mask{load,store}.
|
||||
or mask_len_{load,store}.
|
||||
This helper function checks whether target supports masked
|
||||
load/store and return corresponding IFN in the last argument
|
||||
(IFN_MASK_{LOAD,STORE} or IFN_LEN_MASK_{LOAD,STORE}). */
|
||||
(IFN_MASK_{LOAD,STORE} or IFN_MASK_LEN_{LOAD,STORE}). */
|
||||
|
||||
static bool
|
||||
target_supports_mask_load_store_p (machine_mode mode, machine_mode mask_mode,
|
||||
bool is_load, internal_fn *ifn)
|
||||
{
|
||||
optab op = is_load ? maskload_optab : maskstore_optab;
|
||||
optab len_op = is_load ? len_maskload_optab : len_maskstore_optab;
|
||||
optab len_op = is_load ? mask_len_load_optab : mask_len_store_optab;
|
||||
if (convert_optab_handler (op, mode, mask_mode) != CODE_FOR_nothing)
|
||||
{
|
||||
if (ifn)
|
||||
|
@ -565,7 +565,7 @@ target_supports_mask_load_store_p (machine_mode mode, machine_mode mask_mode,
|
|||
else if (convert_optab_handler (len_op, mode, mask_mode) != CODE_FOR_nothing)
|
||||
{
|
||||
if (ifn)
|
||||
*ifn = is_load ? IFN_LEN_MASK_LOAD : IFN_LEN_MASK_STORE;
|
||||
*ifn = is_load ? IFN_MASK_LEN_LOAD : IFN_MASK_LEN_STORE;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -573,7 +573,7 @@ target_supports_mask_load_store_p (machine_mode mode, machine_mode mask_mode,
|
|||
|
||||
/* Return true if target supports vector masked load/store for mode.
|
||||
An additional output in the last argument which is the IFN pointer.
|
||||
We set IFN as MASK_{LOAD,STORE} or LEN_MASK_{LOAD,STORE} according
|
||||
We set IFN as MASK_{LOAD,STORE} or MASK_LEN_{LOAD,STORE} according
|
||||
which optab is supported in the target. */
|
||||
|
||||
bool
|
||||
|
@ -615,17 +615,17 @@ can_vec_mask_load_store_p (machine_mode mode,
|
|||
|
||||
/* Return true if the target has support for len load/store.
|
||||
We can support len load/store by either len_{load,store}
|
||||
or len_mask{load,store}.
|
||||
or mask_len_{load,store}.
|
||||
This helper function checks whether target supports len
|
||||
load/store and return corresponding IFN in the last argument
|
||||
(IFN_LEN_{LOAD,STORE} or IFN_LEN_MASK_{LOAD,STORE}). */
|
||||
(IFN_LEN_{LOAD,STORE} or IFN_MASK_LEN_{LOAD,STORE}). */
|
||||
|
||||
static bool
|
||||
target_supports_len_load_store_p (machine_mode mode, bool is_load,
|
||||
internal_fn *ifn)
|
||||
{
|
||||
optab op = is_load ? len_load_optab : len_store_optab;
|
||||
optab masked_op = is_load ? len_maskload_optab : len_maskstore_optab;
|
||||
optab masked_op = is_load ? mask_len_load_optab : mask_len_store_optab;
|
||||
|
||||
if (direct_optab_handler (op, mode))
|
||||
{
|
||||
|
@ -638,7 +638,7 @@ target_supports_len_load_store_p (machine_mode mode, bool is_load,
|
|||
&& convert_optab_handler (masked_op, mode, mask_mode) != CODE_FOR_nothing)
|
||||
{
|
||||
if (ifn)
|
||||
*ifn = is_load ? IFN_LEN_MASK_LOAD : IFN_LEN_MASK_STORE;
|
||||
*ifn = is_load ? IFN_MASK_LEN_LOAD : IFN_MASK_LEN_STORE;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -651,7 +651,7 @@ target_supports_len_load_store_p (machine_mode mode, bool is_load,
|
|||
As len_{load,store} optabs point out, for the flavor with bytes, we use
|
||||
VnQI to wrap the other supportable same size vector modes.
|
||||
An additional output in the last argument which is the IFN pointer.
|
||||
We set IFN as LEN_{LOAD,STORE} or LEN_MASK_{LOAD,STORE} according
|
||||
We set IFN as LEN_{LOAD,STORE} or MASK_LEN_{LOAD,STORE} according
|
||||
which optab is supported in the target. */
|
||||
|
||||
opt_machine_mode
|
||||
|
|
|
@ -91,14 +91,14 @@ OPTAB_CD(vec_cmpu_optab, "vec_cmpu$a$b")
|
|||
OPTAB_CD(vec_cmpeq_optab, "vec_cmpeq$a$b")
|
||||
OPTAB_CD(maskload_optab, "maskload$a$b")
|
||||
OPTAB_CD(maskstore_optab, "maskstore$a$b")
|
||||
OPTAB_CD(len_maskload_optab, "len_maskload$a$b")
|
||||
OPTAB_CD(len_maskstore_optab, "len_maskstore$a$b")
|
||||
OPTAB_CD(mask_len_load_optab, "mask_len_load$a$b")
|
||||
OPTAB_CD(mask_len_store_optab, "mask_len_store$a$b")
|
||||
OPTAB_CD(gather_load_optab, "gather_load$a$b")
|
||||
OPTAB_CD(mask_gather_load_optab, "mask_gather_load$a$b")
|
||||
OPTAB_CD(len_mask_gather_load_optab, "len_mask_gather_load$a$b")
|
||||
OPTAB_CD(mask_len_gather_load_optab, "mask_len_gather_load$a$b")
|
||||
OPTAB_CD(scatter_store_optab, "scatter_store$a$b")
|
||||
OPTAB_CD(mask_scatter_store_optab, "mask_scatter_store$a$b")
|
||||
OPTAB_CD(len_mask_scatter_store_optab, "len_mask_scatter_store$a$b")
|
||||
OPTAB_CD(mask_len_scatter_store_optab, "mask_len_scatter_store$a$b")
|
||||
OPTAB_CD(vec_extract_optab, "vec_extract$a$b")
|
||||
OPTAB_CD(vec_init_optab, "vec_init$a$b")
|
||||
|
||||
|
|
|
@ -33,6 +33,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -27,6 +27,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -105,7 +105,7 @@ TEST_LOOP (float, uint64_t)
|
|||
TEST_LOOP (double, uint64_t)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 88 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-assembler-not "vluxei64\.v" } } */
|
||||
|
|
|
@ -33,6 +33,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -108,7 +108,7 @@ TEST_LOOP (float, uint64_t)
|
|||
TEST_LOOP (double, uint64_t)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 88 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-assembler-not "vluxei64\.v" } } */
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -34,6 +34,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -31,6 +31,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -36,6 +36,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -33,6 +33,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -33,6 +33,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -30,6 +30,6 @@
|
|||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11 "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.LEN_MASK_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */
|
||||
|
|
|
@ -40,6 +40,6 @@
|
|||
|
||||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times " \.LEN_MASK_GATHER_LOAD" 66 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-times " \.MASK_LEN_GATHER_LOAD" 66 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "optimized" } } */
|
||||
|
|
|
@ -40,6 +40,6 @@
|
|||
|
||||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times " \.LEN_MASK_GATHER_LOAD" 46 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-times " \.MASK_LEN_GATHER_LOAD" 46 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "optimized" } } */
|
||||
|
|
|
@ -40,6 +40,6 @@
|
|||
|
||||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times " \.LEN_MASK_SCATTER_STORE" 66 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-times " \.MASK_LEN_SCATTER_STORE" 66 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "optimized" } } */
|
||||
|
|
|
@ -40,6 +40,6 @@
|
|||
|
||||
TEST_ALL (TEST_LOOP)
|
||||
|
||||
/* { dg-final { scan-tree-dump-times " \.LEN_MASK_SCATTER_STORE" 44 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-times " \.MASK_LEN_SCATTER_STORE" 44 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "optimized" } } */
|
||||
|
|
|
@ -40,4 +40,4 @@ main ()
|
|||
RUN_ALL ()
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "\.LEN_MASK_STORE" 6 "optimized" } } */
|
||||
/* { dg-final { scan-tree-dump-times "\.MASK_LEN_STORE" 6 "optimized" } } */
|
||||
|
|
|
@ -2815,13 +2815,13 @@ ref_maybe_used_by_call_p_1 (gcall *call, ao_ref *ref, bool tbaa_p)
|
|||
case IFN_SCATTER_STORE:
|
||||
case IFN_MASK_SCATTER_STORE:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
return false;
|
||||
case IFN_MASK_STORE_LANES:
|
||||
goto process_args;
|
||||
case IFN_MASK_LOAD:
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
case IFN_MASK_LOAD_LANES:
|
||||
{
|
||||
ao_ref rhs_ref;
|
||||
|
@ -3070,7 +3070,7 @@ call_may_clobber_ref_p_1 (gcall *call, ao_ref *ref, bool tbaa_p)
|
|||
return false;
|
||||
case IFN_MASK_STORE:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
case IFN_MASK_STORE_LANES:
|
||||
{
|
||||
tree rhs = gimple_call_arg (call,
|
||||
|
|
|
@ -159,7 +159,7 @@ initialize_ao_ref_for_dse (gimple *stmt, ao_ref *write, bool may_def_ok = false)
|
|||
{
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_MASK_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
{
|
||||
internal_fn ifn = gimple_call_internal_fn (stmt);
|
||||
int stored_value_index = internal_fn_stored_value_index (ifn);
|
||||
|
@ -1517,7 +1517,7 @@ dse_optimize_stmt (function *fun, gimple_stmt_iterator *gsi, sbitmap live_bytes)
|
|||
{
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_MASK_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
{
|
||||
enum dse_store_status store_status;
|
||||
store_status = dse_classify_store (&ref, stmt, false, live_bytes);
|
||||
|
|
|
@ -2442,7 +2442,7 @@ get_mem_type_for_internal_fn (gcall *call, tree *op_p)
|
|||
case IFN_MASK_LOAD:
|
||||
case IFN_MASK_LOAD_LANES:
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
if (op_p == gimple_call_arg_ptr (call, 0))
|
||||
return TREE_TYPE (gimple_call_lhs (call));
|
||||
return NULL_TREE;
|
||||
|
@ -2450,7 +2450,7 @@ get_mem_type_for_internal_fn (gcall *call, tree *op_p)
|
|||
case IFN_MASK_STORE:
|
||||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
{
|
||||
if (op_p == gimple_call_arg_ptr (call, 0))
|
||||
{
|
||||
|
@ -7567,8 +7567,8 @@ get_alias_ptr_type_for_ptr_address (iv_use *use)
|
|||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_LEN_STORE:
|
||||
case IFN_LEN_MASK_LOAD:
|
||||
case IFN_LEN_MASK_STORE:
|
||||
case IFN_MASK_LEN_LOAD:
|
||||
case IFN_MASK_LEN_STORE:
|
||||
/* The second argument contains the correct alias type. */
|
||||
gcc_assert (use->op_p = gimple_call_arg_ptr (call, 0));
|
||||
return TREE_TYPE (gimple_call_arg (call, 1));
|
||||
|
|
|
@ -3878,19 +3878,19 @@ vect_gather_scatter_fn_p (vec_info *vinfo, bool read_p, bool masked_p,
|
|||
{
|
||||
ifn = masked_p ? IFN_MASK_GATHER_LOAD : IFN_GATHER_LOAD;
|
||||
alt_ifn = IFN_MASK_GATHER_LOAD;
|
||||
/* When target supports LEN_MASK_GATHER_LOAD, we always
|
||||
use LEN_MASK_GATHER_LOAD regardless whether len and
|
||||
/* When target supports MASK_LEN_GATHER_LOAD, we always
|
||||
use MASK_LEN_GATHER_LOAD regardless whether len and
|
||||
mask are valid or not. */
|
||||
alt_ifn2 = IFN_LEN_MASK_GATHER_LOAD;
|
||||
alt_ifn2 = IFN_MASK_LEN_GATHER_LOAD;
|
||||
}
|
||||
else
|
||||
{
|
||||
ifn = masked_p ? IFN_MASK_SCATTER_STORE : IFN_SCATTER_STORE;
|
||||
alt_ifn = IFN_MASK_SCATTER_STORE;
|
||||
/* When target supports LEN_MASK_SCATTER_STORE, we always
|
||||
use LEN_MASK_SCATTER_STORE regardless whether len and
|
||||
/* When target supports MASK_LEN_SCATTER_STORE, we always
|
||||
use MASK_LEN_SCATTER_STORE regardless whether len and
|
||||
mask are valid or not. */
|
||||
alt_ifn2 = IFN_LEN_MASK_SCATTER_STORE;
|
||||
alt_ifn2 = IFN_MASK_LEN_SCATTER_STORE;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
|
|
|
@ -6106,8 +6106,8 @@ vect_recog_gather_scatter_pattern (vec_info *vinfo,
|
|||
loop_vinfo);
|
||||
else if (gs_info.ifn == IFN_MASK_SCATTER_STORE
|
||||
|| gs_info.ifn == IFN_MASK_GATHER_LOAD
|
||||
|| gs_info.ifn == IFN_LEN_MASK_SCATTER_STORE
|
||||
|| gs_info.ifn == IFN_LEN_MASK_GATHER_LOAD)
|
||||
|| gs_info.ifn == IFN_MASK_LEN_SCATTER_STORE
|
||||
|| gs_info.ifn == IFN_MASK_LEN_GATHER_LOAD)
|
||||
mask = build_int_cst (TREE_TYPE (truth_type_for (gs_vectype)), -1);
|
||||
|
||||
/* Get the invariant base and non-invariant offset, converting the
|
||||
|
|
|
@ -1633,8 +1633,8 @@ check_load_store_for_partial_vectors (loop_vec_info loop_vinfo, tree vectype,
|
|||
? IFN_MASK_GATHER_LOAD
|
||||
: IFN_MASK_SCATTER_STORE);
|
||||
internal_fn len_ifn = (is_load
|
||||
? IFN_LEN_MASK_GATHER_LOAD
|
||||
: IFN_LEN_MASK_SCATTER_STORE);
|
||||
? IFN_MASK_LEN_GATHER_LOAD
|
||||
: IFN_MASK_LEN_SCATTER_STORE);
|
||||
if (internal_gather_scatter_fn_supported_p (ifn, vectype,
|
||||
gs_info->memory_type,
|
||||
gs_info->offset_vectype,
|
||||
|
@ -3034,7 +3034,7 @@ vect_get_strided_load_store_ops (stmt_vec_info stmt_info,
|
|||
{
|
||||
/* _31 = .SELECT_VL (ivtmp_29, POLY_INT_CST [4, 4]);
|
||||
ivtmp_8 = _31 * 16 (step in bytes);
|
||||
.LEN_MASK_SCATTER_STORE (vectp_a.9_7, ... );
|
||||
.MASK_LEN_SCATTER_STORE (vectp_a.9_7, ... );
|
||||
vectp_a.9_26 = vectp_a.9_7 + ivtmp_8; */
|
||||
tree loop_len
|
||||
= vect_get_loop_len (loop_vinfo, gsi, loop_lens, 1, vectype, 0, 0);
|
||||
|
@ -8872,7 +8872,7 @@ vectorizable_store (vec_info *vinfo,
|
|||
vec_offset = vec_offsets[vec_num * j + i];
|
||||
tree scale = size_int (gs_info.scale);
|
||||
|
||||
if (gs_info.ifn == IFN_LEN_MASK_SCATTER_STORE)
|
||||
if (gs_info.ifn == IFN_MASK_LEN_SCATTER_STORE)
|
||||
{
|
||||
if (loop_lens)
|
||||
final_len
|
||||
|
@ -8896,7 +8896,7 @@ vectorizable_store (vec_info *vinfo,
|
|||
gcall *call;
|
||||
if (final_len && final_mask)
|
||||
call
|
||||
= gimple_build_call_internal (IFN_LEN_MASK_SCATTER_STORE,
|
||||
= gimple_build_call_internal (IFN_MASK_LEN_SCATTER_STORE,
|
||||
7, dataref_ptr, vec_offset,
|
||||
scale, vec_oprnd, final_mask,
|
||||
final_len, bias);
|
||||
|
@ -9036,12 +9036,12 @@ vectorizable_store (vec_info *vinfo,
|
|||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
if (partial_ifn == IFN_LEN_MASK_STORE)
|
||||
if (partial_ifn == IFN_MASK_LEN_STORE)
|
||||
{
|
||||
if (!final_len)
|
||||
{
|
||||
/* Pass VF value to 'len' argument of
|
||||
LEN_MASK_STORE if LOOP_LENS is invalid. */
|
||||
MASK_LEN_STORE if LOOP_LENS is invalid. */
|
||||
tree iv_type = LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo);
|
||||
final_len
|
||||
= build_int_cst (iv_type,
|
||||
|
@ -9050,7 +9050,7 @@ vectorizable_store (vec_info *vinfo,
|
|||
if (!final_mask)
|
||||
{
|
||||
/* Pass all ones value to 'mask' argument of
|
||||
LEN_MASK_STORE if final_mask is invalid. */
|
||||
MASK_LEN_STORE if final_mask is invalid. */
|
||||
mask_vectype = truth_type_for (vectype);
|
||||
final_mask = build_minus_one_cst (mask_vectype);
|
||||
}
|
||||
|
@ -9086,8 +9086,8 @@ vectorizable_store (vec_info *vinfo,
|
|||
vec_oprnd = var;
|
||||
}
|
||||
|
||||
if (partial_ifn == IFN_LEN_MASK_STORE)
|
||||
call = gimple_build_call_internal (IFN_LEN_MASK_STORE, 6,
|
||||
if (partial_ifn == IFN_MASK_LEN_STORE)
|
||||
call = gimple_build_call_internal (IFN_MASK_LEN_STORE, 6,
|
||||
dataref_ptr, ptr,
|
||||
final_len, bias,
|
||||
final_mask, vec_oprnd);
|
||||
|
@ -10456,7 +10456,7 @@ vectorizable_load (vec_info *vinfo,
|
|||
tree zero = build_zero_cst (vectype);
|
||||
tree scale = size_int (gs_info.scale);
|
||||
|
||||
if (gs_info.ifn == IFN_LEN_MASK_GATHER_LOAD)
|
||||
if (gs_info.ifn == IFN_MASK_LEN_GATHER_LOAD)
|
||||
{
|
||||
if (loop_lens)
|
||||
final_len
|
||||
|
@ -10480,7 +10480,7 @@ vectorizable_load (vec_info *vinfo,
|
|||
gcall *call;
|
||||
if (final_len && final_mask)
|
||||
call = gimple_build_call_internal (
|
||||
IFN_LEN_MASK_GATHER_LOAD, 7, dataref_ptr,
|
||||
IFN_MASK_LEN_GATHER_LOAD, 7, dataref_ptr,
|
||||
vec_offset, scale, zero, final_mask, final_len,
|
||||
bias);
|
||||
else if (final_mask)
|
||||
|
@ -10620,12 +10620,12 @@ vectorizable_load (vec_info *vinfo,
|
|||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
if (partial_ifn == IFN_LEN_MASK_LOAD)
|
||||
if (partial_ifn == IFN_MASK_LEN_LOAD)
|
||||
{
|
||||
if (!final_len)
|
||||
{
|
||||
/* Pass VF value to 'len' argument of
|
||||
LEN_MASK_LOAD if LOOP_LENS is invalid. */
|
||||
MASK_LEN_LOAD if LOOP_LENS is invalid. */
|
||||
tree iv_type
|
||||
= LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo);
|
||||
final_len
|
||||
|
@ -10635,7 +10635,7 @@ vectorizable_load (vec_info *vinfo,
|
|||
if (!final_mask)
|
||||
{
|
||||
/* Pass all ones value to 'mask' argument of
|
||||
LEN_MASK_LOAD if final_mask is invalid. */
|
||||
MASK_LEN_LOAD if final_mask is invalid. */
|
||||
mask_vectype = truth_type_for (vectype);
|
||||
final_mask = build_minus_one_cst (mask_vectype);
|
||||
}
|
||||
|
@ -10653,8 +10653,8 @@ vectorizable_load (vec_info *vinfo,
|
|||
tree ptr
|
||||
= build_int_cst (ref_type, align * BITS_PER_UNIT);
|
||||
gcall *call;
|
||||
if (partial_ifn == IFN_LEN_MASK_LOAD)
|
||||
call = gimple_build_call_internal (IFN_LEN_MASK_LOAD,
|
||||
if (partial_ifn == IFN_MASK_LEN_LOAD)
|
||||
call = gimple_build_call_internal (IFN_MASK_LEN_LOAD,
|
||||
5, dataref_ptr,
|
||||
ptr, final_len,
|
||||
bias, final_mask);
|
||||
|
|
Loading…
Add table
Reference in a new issue