Commit 65876d24 by Richard Guenther Committed by Richard Biener

tree-vect-data-refs.c (vect_get_new_vect_var): Add referenced vars here, use…

tree-vect-data-refs.c (vect_get_new_vect_var): Add referenced vars here, use create_tmp_reg where appropriate.

2012-07-17  Richard Guenther  <rguenther@suse.de>

	* tree-vect-data-refs.c (vect_get_new_vect_var): Add referenced
	vars here, use create_tmp_reg where appropriate.
	(vect_create_addr_base_for_vector_ref): Do not add referenced
	vars here, use create_tmp_reg where appropriate.
	(vect_create_data_ref_ptr): Likewise.
	(vect_create_destination_var): Likewise.
	(vect_permute_store_chain): Likewise.
	(vect_permute_load_chain): Likewise.
	* tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
	Likewise.
	* tree-vect-loop.c (get_initial_def_for_induction): Likewise.
	* tree-vect-patterns.c (vect_recog_temp_ssa_var): Likewise.
	(vect_handle_widen_op_by_const): Likewise.
	* tree-vect-stmts.c (vect_init_vector): Likewise.
	(vectorizable_load): Likewise.

From-SVN: r189581
parent 7cb151c0
2012-07-17 Richard Guenther <rguenther@suse.de>
* tree-vect-data-refs.c (vect_get_new_vect_var): Add referenced
vars here, use create_tmp_reg where appropriate.
(vect_create_addr_base_for_vector_ref): Do not add referenced
vars here, use create_tmp_reg where appropriate.
(vect_create_data_ref_ptr): Likewise.
(vect_create_destination_var): Likewise.
(vect_permute_store_chain): Likewise.
(vect_permute_load_chain): Likewise.
* tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
Likewise.
* tree-vect-loop.c (get_initial_def_for_induction): Likewise.
* tree-vect-patterns.c (vect_recog_temp_ssa_var): Likewise.
(vect_handle_widen_op_by_const): Likewise.
* tree-vect-stmts.c (vect_init_vector): Likewise.
(vectorizable_load): Likewise.
2012-07-17 Tom de Vries <tom@codesourcery.com> 2012-07-17 Tom de Vries <tom@codesourcery.com>
* hwint.c: Fix loop range. * hwint.c: Fix loop range.
......
...@@ -3397,15 +3397,12 @@ vect_get_new_vect_var (tree type, enum vect_var_kind var_kind, const char *name) ...@@ -3397,15 +3397,12 @@ vect_get_new_vect_var (tree type, enum vect_var_kind var_kind, const char *name)
if (name) if (name)
{ {
char* tmp = concat (prefix, name, NULL); char* tmp = concat (prefix, name, NULL);
new_vect_var = create_tmp_var (type, tmp); new_vect_var = create_tmp_reg (type, tmp);
free (tmp); free (tmp);
} }
else else
new_vect_var = create_tmp_var (type, prefix); new_vect_var = create_tmp_reg (type, prefix);
add_referenced_var (new_vect_var);
/* Mark vector typed variable as a gimple register variable. */
if (TREE_CODE (type) == VECTOR_TYPE)
DECL_GIMPLE_REG_P (new_vect_var) = true;
return new_vect_var; return new_vect_var;
} }
...@@ -3533,7 +3530,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt, ...@@ -3533,7 +3530,6 @@ vect_create_addr_base_for_vector_ref (gimple stmt,
vec_stmt = fold_convert (vect_ptr_type, addr_base); vec_stmt = fold_convert (vect_ptr_type, addr_base);
addr_expr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var, addr_expr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
get_name (base_name)); get_name (base_name));
add_referenced_var (addr_expr);
vec_stmt = force_gimple_operand (vec_stmt, &seq, false, addr_expr); vec_stmt = force_gimple_operand (vec_stmt, &seq, false, addr_expr);
gimple_seq_add_seq (new_stmt_list, seq); gimple_seq_add_seq (new_stmt_list, seq);
...@@ -3732,8 +3728,6 @@ vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop, ...@@ -3732,8 +3728,6 @@ vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop,
while (orig_stmt); while (orig_stmt);
} }
add_referenced_var (aggr_ptr);
/* Note: If the dataref is in an inner-loop nested in LOOP, and we are /* Note: If the dataref is in an inner-loop nested in LOOP, and we are
vectorizing LOOP (i.e., outer-loop vectorization), we need to create two vectorizing LOOP (i.e., outer-loop vectorization), we need to create two
def-use update cycles for the pointer: one relative to the outer-loop def-use update cycles for the pointer: one relative to the outer-loop
...@@ -3983,7 +3977,6 @@ vect_create_destination_var (tree scalar_dest, tree vectype) ...@@ -3983,7 +3977,6 @@ vect_create_destination_var (tree scalar_dest, tree vectype)
if (!new_name) if (!new_name)
new_name = "var_"; new_name = "var_";
vec_dest = vect_get_new_vect_var (type, kind, new_name); vec_dest = vect_get_new_vect_var (type, kind, new_name);
add_referenced_var (vec_dest);
return vec_dest; return vec_dest;
} }
...@@ -4144,8 +4137,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain, ...@@ -4144,8 +4137,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
/* Create interleaving stmt: /* Create interleaving stmt:
high = VEC_PERM_EXPR <vect1, vect2, {0, nelt, 1, nelt+1, ...}> */ high = VEC_PERM_EXPR <vect1, vect2, {0, nelt, 1, nelt+1, ...}> */
perm_dest = create_tmp_var (vectype, "vect_inter_high"); perm_dest = create_tmp_reg (vectype, "vect_inter_high");
DECL_GIMPLE_REG_P (perm_dest) = 1;
add_referenced_var (perm_dest); add_referenced_var (perm_dest);
high = make_ssa_name (perm_dest, NULL); high = make_ssa_name (perm_dest, NULL);
perm_stmt perm_stmt
...@@ -4157,8 +4149,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain, ...@@ -4157,8 +4149,7 @@ vect_permute_store_chain (VEC(tree,heap) *dr_chain,
/* Create interleaving stmt: /* Create interleaving stmt:
low = VEC_PERM_EXPR <vect1, vect2, {nelt/2, nelt*3/2, nelt/2+1, low = VEC_PERM_EXPR <vect1, vect2, {nelt/2, nelt*3/2, nelt/2+1,
nelt*3/2+1, ...}> */ nelt*3/2+1, ...}> */
perm_dest = create_tmp_var (vectype, "vect_inter_low"); perm_dest = create_tmp_reg (vectype, "vect_inter_low");
DECL_GIMPLE_REG_P (perm_dest) = 1;
add_referenced_var (perm_dest); add_referenced_var (perm_dest);
low = make_ssa_name (perm_dest, NULL); low = make_ssa_name (perm_dest, NULL);
perm_stmt perm_stmt
...@@ -4601,8 +4592,7 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain, ...@@ -4601,8 +4592,7 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain,
second_vect = VEC_index (tree, dr_chain, j+1); second_vect = VEC_index (tree, dr_chain, j+1);
/* data_ref = permute_even (first_data_ref, second_data_ref); */ /* data_ref = permute_even (first_data_ref, second_data_ref); */
perm_dest = create_tmp_var (vectype, "vect_perm_even"); perm_dest = create_tmp_reg (vectype, "vect_perm_even");
DECL_GIMPLE_REG_P (perm_dest) = 1;
add_referenced_var (perm_dest); add_referenced_var (perm_dest);
perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest, perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest,
...@@ -4616,8 +4606,7 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain, ...@@ -4616,8 +4606,7 @@ vect_permute_load_chain (VEC(tree,heap) *dr_chain,
VEC_replace (tree, *result_chain, j/2, data_ref); VEC_replace (tree, *result_chain, j/2, data_ref);
/* data_ref = permute_odd (first_data_ref, second_data_ref); */ /* data_ref = permute_odd (first_data_ref, second_data_ref); */
perm_dest = create_tmp_var (vectype, "vect_perm_odd"); perm_dest = create_tmp_reg (vectype, "vect_perm_odd");
DECL_GIMPLE_REG_P (perm_dest) = 1;
add_referenced_var (perm_dest); add_referenced_var (perm_dest);
perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest, perm_stmt = gimple_build_assign_with_ops3 (VEC_PERM_EXPR, perm_dest,
......
...@@ -2249,7 +2249,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo, ...@@ -2249,7 +2249,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
gimple_seq_add_seq (cond_expr_stmt_list, new_stmt_list); gimple_seq_add_seq (cond_expr_stmt_list, new_stmt_list);
sprintf (tmp_name, "%s%d", "addr2int", i); sprintf (tmp_name, "%s%d", "addr2int", i);
addr_tmp = create_tmp_var (int_ptrsize_type, tmp_name); addr_tmp = create_tmp_reg (int_ptrsize_type, tmp_name);
add_referenced_var (addr_tmp); add_referenced_var (addr_tmp);
addr_tmp_name = make_ssa_name (addr_tmp, NULL); addr_tmp_name = make_ssa_name (addr_tmp, NULL);
addr_stmt = gimple_build_assign_with_ops (NOP_EXPR, addr_tmp_name, addr_stmt = gimple_build_assign_with_ops (NOP_EXPR, addr_tmp_name,
...@@ -2263,7 +2263,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo, ...@@ -2263,7 +2263,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
{ {
/* create: or_tmp = or_tmp | addr_tmp */ /* create: or_tmp = or_tmp | addr_tmp */
sprintf (tmp_name, "%s%d", "orptrs", i); sprintf (tmp_name, "%s%d", "orptrs", i);
or_tmp = create_tmp_var (int_ptrsize_type, tmp_name); or_tmp = create_tmp_reg (int_ptrsize_type, tmp_name);
add_referenced_var (or_tmp); add_referenced_var (or_tmp);
new_or_tmp_name = make_ssa_name (or_tmp, NULL); new_or_tmp_name = make_ssa_name (or_tmp, NULL);
or_stmt = gimple_build_assign_with_ops (BIT_IOR_EXPR, or_stmt = gimple_build_assign_with_ops (BIT_IOR_EXPR,
...@@ -2281,7 +2281,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo, ...@@ -2281,7 +2281,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
mask_cst = build_int_cst (int_ptrsize_type, mask); mask_cst = build_int_cst (int_ptrsize_type, mask);
/* create: and_tmp = or_tmp & mask */ /* create: and_tmp = or_tmp & mask */
and_tmp = create_tmp_var (int_ptrsize_type, "andmask" ); and_tmp = create_tmp_reg (int_ptrsize_type, "andmask" );
add_referenced_var (and_tmp); add_referenced_var (and_tmp);
and_tmp_name = make_ssa_name (and_tmp, NULL); and_tmp_name = make_ssa_name (and_tmp, NULL);
......
...@@ -3034,8 +3034,6 @@ get_initial_def_for_induction (gimple iv_phi) ...@@ -3034,8 +3034,6 @@ get_initial_def_for_induction (gimple iv_phi)
/* iv_loop is the loop to be vectorized. Create: /* iv_loop is the loop to be vectorized. Create:
vec_init = [X, X+S, X+2*S, X+3*S] (S = step_expr, X = init_expr) */ vec_init = [X, X+S, X+2*S, X+3*S] (S = step_expr, X = init_expr) */
new_var = vect_get_new_vect_var (scalar_type, vect_scalar_var, "var_"); new_var = vect_get_new_vect_var (scalar_type, vect_scalar_var, "var_");
add_referenced_var (new_var);
new_name = force_gimple_operand (init_expr, &stmts, false, new_var); new_name = force_gimple_operand (init_expr, &stmts, false, new_var);
if (stmts) if (stmts)
{ {
...@@ -3106,7 +3104,6 @@ get_initial_def_for_induction (gimple iv_phi) ...@@ -3106,7 +3104,6 @@ get_initial_def_for_induction (gimple iv_phi)
/* Create the induction-phi that defines the induction-operand. */ /* Create the induction-phi that defines the induction-operand. */
vec_dest = vect_get_new_vect_var (vectype, vect_simple_var, "vec_iv_"); vec_dest = vect_get_new_vect_var (vectype, vect_simple_var, "vec_iv_");
add_referenced_var (vec_dest);
induction_phi = create_phi_node (vec_dest, iv_loop->header); induction_phi = create_phi_node (vec_dest, iv_loop->header);
set_vinfo_for_stmt (induction_phi, set_vinfo_for_stmt (induction_phi,
new_stmt_vec_info (induction_phi, loop_vinfo, NULL)); new_stmt_vec_info (induction_phi, loop_vinfo, NULL));
......
...@@ -206,7 +206,7 @@ type_conversion_p (tree name, gimple use_stmt, bool check_sign, ...@@ -206,7 +206,7 @@ type_conversion_p (tree name, gimple use_stmt, bool check_sign,
static tree static tree
vect_recog_temp_ssa_var (tree type, gimple stmt) vect_recog_temp_ssa_var (tree type, gimple stmt)
{ {
tree var = create_tmp_var (type, "patt"); tree var = create_tmp_reg (type, "patt");
add_referenced_var (var); add_referenced_var (var);
var = make_ssa_name (var, stmt); var = make_ssa_name (var, stmt);
...@@ -501,7 +501,7 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code, ...@@ -501,7 +501,7 @@ vect_handle_widen_op_by_const (gimple stmt, enum tree_code code,
{ {
/* Create a_T = (NEW_TYPE) a_t; */ /* Create a_T = (NEW_TYPE) a_t; */
*oprnd = gimple_assign_rhs1 (def_stmt); *oprnd = gimple_assign_rhs1 (def_stmt);
tmp = create_tmp_var (new_type, NULL); tmp = create_tmp_reg (new_type, NULL);
add_referenced_var (tmp); add_referenced_var (tmp);
new_oprnd = make_ssa_name (tmp, NULL); new_oprnd = make_ssa_name (tmp, NULL);
new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd, *oprnd, new_stmt = gimple_build_assign_with_ops (NOP_EXPR, new_oprnd, *oprnd,
......
...@@ -1283,7 +1283,6 @@ vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi) ...@@ -1283,7 +1283,6 @@ vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi)
} }
new_var = vect_get_new_vect_var (type, vect_simple_var, "cst_"); new_var = vect_get_new_vect_var (type, vect_simple_var, "cst_");
add_referenced_var (new_var);
init_stmt = gimple_build_assign (new_var, val); init_stmt = gimple_build_assign (new_var, val);
new_temp = make_ssa_name (new_var, init_stmt); new_temp = make_ssa_name (new_var, init_stmt);
gimple_assign_set_lhs (init_stmt, new_temp); gimple_assign_set_lhs (init_stmt, new_temp);
...@@ -4542,7 +4541,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, ...@@ -4542,7 +4541,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (op)) gcc_assert (TYPE_VECTOR_SUBPARTS (TREE_TYPE (op))
== TYPE_VECTOR_SUBPARTS (idxtype)); == TYPE_VECTOR_SUBPARTS (idxtype));
var = vect_get_new_vect_var (idxtype, vect_simple_var, NULL); var = vect_get_new_vect_var (idxtype, vect_simple_var, NULL);
add_referenced_var (var);
var = make_ssa_name (var, NULL); var = make_ssa_name (var, NULL);
op = build1 (VIEW_CONVERT_EXPR, idxtype, op); op = build1 (VIEW_CONVERT_EXPR, idxtype, op);
new_stmt new_stmt
...@@ -4560,7 +4558,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, ...@@ -4560,7 +4558,6 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
gcc_assert (TYPE_VECTOR_SUBPARTS (vectype) gcc_assert (TYPE_VECTOR_SUBPARTS (vectype)
== TYPE_VECTOR_SUBPARTS (rettype)); == TYPE_VECTOR_SUBPARTS (rettype));
var = vect_get_new_vect_var (rettype, vect_simple_var, NULL); var = vect_get_new_vect_var (rettype, vect_simple_var, NULL);
add_referenced_var (var);
op = make_ssa_name (var, new_stmt); op = make_ssa_name (var, new_stmt);
gimple_call_set_lhs (new_stmt, op); gimple_call_set_lhs (new_stmt, op);
vect_finish_stmt_generation (stmt, new_stmt, gsi); vect_finish_stmt_generation (stmt, new_stmt, gsi);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment