From 736d0f28783f12fa042892bc186866dd5101088f Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 2 Jan 2018 18:26:56 +0000 Subject: Add a vec_perm_indices_to_tree helper function This patch adds a function for creating a VECTOR_CST from a vec_perm_indices, operating directly on the encoding. 2018-01-02 Richard Sandiford gcc/ * vec-perm-indices.h (vec_perm_indices_to_tree): Declare. * vec-perm-indices.c (vec_perm_indices_to_tree): New function. * tree-ssa-forwprop.c (simplify_vector_constructor): Use it. * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise. * tree-vect-stmts.c (vectorizable_bswap): Likewise. (vect_gen_perm_mask_any): Likewise. From-SVN: r256096 --- gcc/tree-vect-stmts.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'gcc/tree-vect-stmts.c') diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index fed870e..8f26320 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -2529,10 +2529,7 @@ vectorizable_bswap (gimple *stmt, gimple_stmt_iterator *gsi, return true; } - tree_vector_builder telts (char_vectype, num_bytes, 1); - for (unsigned i = 0; i < num_bytes; ++i) - telts.quick_push (build_int_cst (char_type_node, elts[i])); - tree bswap_vconst = telts.build (); + tree bswap_vconst = vec_perm_indices_to_tree (char_vectype, indices); /* Transform. */ vec vec_oprnds = vNULL; @@ -6538,17 +6535,10 @@ vect_gen_perm_mask_any (tree vectype, const vec_perm_indices &sel) { tree mask_elt_type, mask_type; - unsigned int nunits = sel.length (); - gcc_checking_assert (nunits == TYPE_VECTOR_SUBPARTS (vectype)); - mask_elt_type = lang_hooks.types.type_for_mode (int_mode_for_mode (TYPE_MODE (TREE_TYPE (vectype))).require (), 1); mask_type = get_vectype_for_scalar_type (mask_elt_type); - - tree_vector_builder mask_elts (mask_type, nunits, 1); - for (unsigned int i = 0; i < nunits; ++i) - mask_elts.quick_push (build_int_cst (mask_elt_type, sel[i])); - return mask_elts.build (); + return vec_perm_indices_to_tree (mask_type, sel); } /* Checked version of vect_gen_perm_mask_any. Asserts can_vec_perm_const_p, -- cgit v1.1