ivopts: Handle vector with length IFNs
This patch is to handle vector with length internal functions IFN_LEN_LOAD and IFN_LEN_STORE in IVOPTS. gcc/ChangeLog: * tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle IFN_LEN_LOAD and IFN_LEN_STORE. (get_alias_ptr_type_for_ptr_address): Likewise.
This commit is contained in:
parent
3eb72737a2
commit
ead2be56f0
@ -2436,12 +2436,14 @@ get_mem_type_for_internal_fn (gcall *call, tree *op_p)
|
||||
{
|
||||
case IFN_MASK_LOAD:
|
||||
case IFN_MASK_LOAD_LANES:
|
||||
case IFN_LEN_LOAD:
|
||||
if (op_p == gimple_call_arg_ptr (call, 0))
|
||||
return TREE_TYPE (gimple_call_lhs (call));
|
||||
return NULL_TREE;
|
||||
|
||||
case IFN_MASK_STORE:
|
||||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_LEN_STORE:
|
||||
if (op_p == gimple_call_arg_ptr (call, 0))
|
||||
return TREE_TYPE (gimple_call_arg (call, 3));
|
||||
return NULL_TREE;
|
||||
@ -7415,6 +7417,8 @@ get_alias_ptr_type_for_ptr_address (iv_use *use)
|
||||
case IFN_MASK_STORE:
|
||||
case IFN_MASK_LOAD_LANES:
|
||||
case IFN_MASK_STORE_LANES:
|
||||
case IFN_LEN_LOAD:
|
||||
case IFN_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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user