diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2018-07-31 14:25:30 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2018-07-31 14:25:30 +0000 |
commit | 32e8e429c685629fc4363138f564f41de47aa7a2 (patch) | |
tree | b7c03a32cfb597accb320bfb44bed8c476b1faaa /gcc/tree-vectorizer.h | |
parent | 825702749aee7017548db2075cf225a6ed2e3ca8 (diff) | |
download | gcc-32e8e429c685629fc4363138f564f41de47aa7a2.zip gcc-32e8e429c685629fc4363138f564f41de47aa7a2.tar.gz gcc-32e8e429c685629fc4363138f564f41de47aa7a2.tar.bz2 |
[32/46] Use stmt_vec_info in function interfaces (part 2)
This second part handles the mechanical change from a gimple stmt
argument to a stmt_vec_info argument. It updates the function
comments if they referred to the argument by name, but it doesn't
try to retrofit mentions to other functions.
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vectorizer.h (nested_in_vect_loop_p): Move further down
file and take a stmt_vec_info instead of a gimple stmt.
(supportable_widening_operation, vect_finish_replace_stmt)
(vect_finish_stmt_generation, vect_get_store_rhs)
(vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand)
(vect_get_vec_defs, vect_init_vector, vect_transform_stmt)
(vect_remove_stores, vect_analyze_stmt, vectorizable_condition)
(vect_get_smallest_scalar_type, vect_check_gather_scatter)
(vect_create_data_ref_ptr, bump_vector_ptr)
(vect_permute_store_chain, vect_setup_realignment)
(vect_transform_grouped_load, vect_record_grouped_load_vectors)
(vect_create_addr_base_for_vector_ref, vectorizable_live_operation)
(vectorizable_reduction, vectorizable_induction)
(get_initial_def_for_reduction, is_simple_and_all_uses_invariant)
(vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather
than gimple stmts as arguments.
* tree-vect-data-refs.c (vect_get_smallest_scalar_type)
(vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences)
(can_group_stmts_p, vect_check_gather_scatter)
(vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
(bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment)
(vect_permute_load_chain, vect_shift_permute_load_chain)
(vect_transform_grouped_load)
(vect_record_grouped_load_vectors): Likewise.
* tree-vect-loop.c (vect_fixup_reduc_chain)
(get_initial_def_for_reduction, vect_create_epilog_for_reduction)
(vectorize_fold_left_reduction, is_nonwrapping_integer_induction)
(vectorizable_reduction, vectorizable_induction)
(vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise.
* tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts)
(vect_get_load_store_mask): Likewise.
* tree-vect-slp.c (vect_get_place_in_interleaving_chain)
(vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise.
* tree-vect-stmts.c (vect_mark_relevant)
(is_simple_and_all_uses_invariant)
(exist_non_indexing_operands_for_use_p, process_use)
(vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1)
(vect_get_vec_def_for_operand, vect_get_vec_defs)
(vect_finish_stmt_generation_1, vect_finish_replace_stmt)
(vect_finish_stmt_generation, vect_truncate_gather_scatter_offset)
(compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type)
(get_negative_load_store_type, get_load_store_type)
(vect_check_load_store_mask, vect_check_store_rhs)
(vect_build_gather_load_calls, vect_get_strided_load_store_ops)
(vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
(vect_create_vectorized_demotion_stmts, vectorizable_conversion)
(vectorizable_assignment, vectorizable_shift, vectorizable_operation)
(get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses)
(vectorizable_load, vectorizable_condition, vectorizable_comparison)
(vect_analyze_stmt, vect_transform_stmt, vect_remove_stores)
(supportable_widening_operation): Likewise.
From-SVN: r263147
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 69c7f68..8a0ca0a 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -627,13 +627,6 @@ loop_vec_info_for_loop (struct loop *loop) return (loop_vec_info) loop->aux; } -static inline bool -nested_in_vect_loop_p (struct loop *loop, gimple *stmt) -{ - return (loop->inner - && (loop->inner == (gimple_bb (stmt))->loop_father)); -} - typedef struct _bb_vec_info : public vec_info { _bb_vec_info (gimple_stmt_iterator, gimple_stmt_iterator, vec_info_shared *); @@ -1119,6 +1112,13 @@ set_vinfo_for_stmt (gimple *stmt, stmt_vec_info info) } } +static inline bool +nested_in_vect_loop_p (struct loop *loop, stmt_vec_info stmt_info) +{ + return (loop->inner + && (loop->inner == (gimple_bb (stmt_info->stmt))->loop_father)); +} + /* Return the earlier statement between STMT1_INFO and STMT2_INFO. */ static inline stmt_vec_info @@ -1493,8 +1493,8 @@ extern bool vect_is_simple_use (tree, vec_info *, enum vect_def_type *, extern bool vect_is_simple_use (tree, vec_info *, enum vect_def_type *, tree *, stmt_vec_info * = NULL, gimple ** = NULL); -extern bool supportable_widening_operation (enum tree_code, gimple *, tree, - tree, enum tree_code *, +extern bool supportable_widening_operation (enum tree_code, stmt_vec_info, + tree, tree, enum tree_code *, enum tree_code *, int *, vec<tree> *); extern bool supportable_narrowing_operation (enum tree_code, tree, tree, @@ -1505,26 +1505,26 @@ extern void free_stmt_vec_info (gimple *stmt); extern unsigned record_stmt_cost (stmt_vector_for_cost *, int, enum vect_cost_for_stmt, stmt_vec_info, int, enum vect_cost_model_location); -extern stmt_vec_info vect_finish_replace_stmt (gimple *, gimple *); -extern stmt_vec_info vect_finish_stmt_generation (gimple *, gimple *, +extern stmt_vec_info vect_finish_replace_stmt (stmt_vec_info, gimple *); +extern stmt_vec_info vect_finish_stmt_generation (stmt_vec_info, gimple *, gimple_stmt_iterator *); extern bool vect_mark_stmts_to_be_vectorized (loop_vec_info); -extern tree vect_get_store_rhs (gimple *); -extern tree vect_get_vec_def_for_operand_1 (gimple *, enum vect_def_type); -extern tree vect_get_vec_def_for_operand (tree, gimple *, tree = NULL); -extern void vect_get_vec_defs (tree, tree, gimple *, vec<tree> *, +extern tree vect_get_store_rhs (stmt_vec_info); +extern tree vect_get_vec_def_for_operand_1 (stmt_vec_info, enum vect_def_type); +extern tree vect_get_vec_def_for_operand (tree, stmt_vec_info, tree = NULL); +extern void vect_get_vec_defs (tree, tree, stmt_vec_info, vec<tree> *, vec<tree> *, slp_tree); extern void vect_get_vec_defs_for_stmt_copy (enum vect_def_type *, vec<tree> *, vec<tree> *); -extern tree vect_init_vector (gimple *, tree, tree, +extern tree vect_init_vector (stmt_vec_info, tree, tree, gimple_stmt_iterator *); extern tree vect_get_vec_def_for_stmt_copy (enum vect_def_type, tree); -extern bool vect_transform_stmt (gimple *, gimple_stmt_iterator *, +extern bool vect_transform_stmt (stmt_vec_info, gimple_stmt_iterator *, bool *, slp_tree, slp_instance); -extern void vect_remove_stores (gimple *); -extern bool vect_analyze_stmt (gimple *, bool *, slp_tree, slp_instance, +extern void vect_remove_stores (stmt_vec_info); +extern bool vect_analyze_stmt (stmt_vec_info, bool *, slp_tree, slp_instance, stmt_vector_for_cost *); -extern bool vectorizable_condition (gimple *, gimple_stmt_iterator *, +extern bool vectorizable_condition (stmt_vec_info, gimple_stmt_iterator *, stmt_vec_info *, tree, int, slp_tree, stmt_vector_for_cost *); extern void vect_get_load_cost (stmt_vec_info, int, bool, @@ -1546,7 +1546,7 @@ extern tree vect_get_mask_type_for_stmt (stmt_vec_info); extern bool vect_can_force_dr_alignment_p (const_tree, unsigned int); extern enum dr_alignment_support vect_supportable_dr_alignment (struct data_reference *, bool); -extern tree vect_get_smallest_scalar_type (gimple *, HOST_WIDE_INT *, +extern tree vect_get_smallest_scalar_type (stmt_vec_info, HOST_WIDE_INT *, HOST_WIDE_INT *); extern bool vect_analyze_data_ref_dependences (loop_vec_info, unsigned int *); extern bool vect_slp_analyze_instance_dependence (slp_instance); @@ -1558,36 +1558,36 @@ extern bool vect_analyze_data_ref_accesses (vec_info *); extern bool vect_prune_runtime_alias_test_list (loop_vec_info); extern bool vect_gather_scatter_fn_p (bool, bool, tree, tree, unsigned int, signop, int, internal_fn *, tree *); -extern bool vect_check_gather_scatter (gimple *, loop_vec_info, +extern bool vect_check_gather_scatter (stmt_vec_info, loop_vec_info, gather_scatter_info *); extern bool vect_find_stmt_data_reference (loop_p, gimple *, vec<data_reference_p> *); extern bool vect_analyze_data_refs (vec_info *, poly_uint64 *); extern void vect_record_base_alignments (vec_info *); -extern tree vect_create_data_ref_ptr (gimple *, tree, struct loop *, tree, +extern tree vect_create_data_ref_ptr (stmt_vec_info, tree, struct loop *, tree, tree *, gimple_stmt_iterator *, gimple **, bool, bool *, tree = NULL_TREE, tree = NULL_TREE); -extern tree bump_vector_ptr (tree, gimple *, gimple_stmt_iterator *, gimple *, - tree); +extern tree bump_vector_ptr (tree, gimple *, gimple_stmt_iterator *, + stmt_vec_info, tree); extern void vect_copy_ref_info (tree, tree); extern tree vect_create_destination_var (tree, tree); extern bool vect_grouped_store_supported (tree, unsigned HOST_WIDE_INT); extern bool vect_store_lanes_supported (tree, unsigned HOST_WIDE_INT, bool); extern bool vect_grouped_load_supported (tree, bool, unsigned HOST_WIDE_INT); extern bool vect_load_lanes_supported (tree, unsigned HOST_WIDE_INT, bool); -extern void vect_permute_store_chain (vec<tree> ,unsigned int, gimple *, +extern void vect_permute_store_chain (vec<tree> ,unsigned int, stmt_vec_info, gimple_stmt_iterator *, vec<tree> *); -extern tree vect_setup_realignment (gimple *, gimple_stmt_iterator *, tree *, - enum dr_alignment_support, tree, +extern tree vect_setup_realignment (stmt_vec_info, gimple_stmt_iterator *, + tree *, enum dr_alignment_support, tree, struct loop **); -extern void vect_transform_grouped_load (gimple *, vec<tree> , int, +extern void vect_transform_grouped_load (stmt_vec_info, vec<tree> , int, gimple_stmt_iterator *); -extern void vect_record_grouped_load_vectors (gimple *, vec<tree> ); +extern void vect_record_grouped_load_vectors (stmt_vec_info, vec<tree>); extern tree vect_get_new_vect_var (tree, enum vect_var_kind, const char *); extern tree vect_get_new_ssa_name (tree, enum vect_var_kind, const char * = NULL); -extern tree vect_create_addr_base_for_vector_ref (gimple *, gimple_seq *, +extern tree vect_create_addr_base_for_vector_ref (stmt_vec_info, gimple_seq *, tree, tree = NULL_TREE); /* In tree-vect-loop.c. */ @@ -1613,16 +1613,16 @@ extern tree vect_get_loop_mask (gimple_stmt_iterator *, vec_loop_masks *, /* Drive for loop transformation stage. */ extern struct loop *vect_transform_loop (loop_vec_info); extern loop_vec_info vect_analyze_loop_form (struct loop *, vec_info_shared *); -extern bool vectorizable_live_operation (gimple *, gimple_stmt_iterator *, +extern bool vectorizable_live_operation (stmt_vec_info, gimple_stmt_iterator *, slp_tree, int, stmt_vec_info *, stmt_vector_for_cost *); -extern bool vectorizable_reduction (gimple *, gimple_stmt_iterator *, +extern bool vectorizable_reduction (stmt_vec_info, gimple_stmt_iterator *, stmt_vec_info *, slp_tree, slp_instance, stmt_vector_for_cost *); -extern bool vectorizable_induction (gimple *, gimple_stmt_iterator *, +extern bool vectorizable_induction (stmt_vec_info, gimple_stmt_iterator *, stmt_vec_info *, slp_tree, stmt_vector_for_cost *); -extern tree get_initial_def_for_reduction (gimple *, tree, tree *); +extern tree get_initial_def_for_reduction (stmt_vec_info, tree, tree *); extern bool vect_worthwhile_without_simd_p (vec_info *, tree_code); extern int vect_get_known_peeling_cost (loop_vec_info, int, int *, stmt_vector_for_cost *, @@ -1643,13 +1643,13 @@ extern void vect_detect_hybrid_slp (loop_vec_info); extern void vect_get_slp_defs (vec<tree> , slp_tree, vec<vec<tree> > *); extern bool vect_slp_bb (basic_block); extern stmt_vec_info vect_find_last_scalar_stmt_in_slp (slp_tree); -extern bool is_simple_and_all_uses_invariant (gimple *, loop_vec_info); +extern bool is_simple_and_all_uses_invariant (stmt_vec_info, loop_vec_info); extern bool can_duplicate_and_interleave_p (unsigned int, machine_mode, unsigned int * = NULL, tree * = NULL, tree * = NULL); extern void duplicate_and_interleave (gimple_seq *, tree, vec<tree>, unsigned int, vec<tree> &); -extern int vect_get_place_in_interleaving_chain (gimple *, gimple *); +extern int vect_get_place_in_interleaving_chain (stmt_vec_info, stmt_vec_info); /* In tree-vect-patterns.c. */ /* Pattern recognition functions. |