aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-stmts.c
diff options
context:
space:
mode:
authorAlan Lawrence <alan.lawrence@arm.com>2014-11-13 16:27:37 +0000
committerAlan Lawrence <alalaw01@gcc.gnu.org>2014-11-13 16:27:37 +0000
commitcf7aa6a3b79ac25df266aa4fcfe6c059243602aa (patch)
tree6780c5d8c1b45da220db82c4a0f897afcd467d9a /gcc/tree-vect-stmts.c
parent557be5a8767902f204e8afa04551a387eac33a26 (diff)
downloadgcc-cf7aa6a3b79ac25df266aa4fcfe6c059243602aa.zip
gcc-cf7aa6a3b79ac25df266aa4fcfe6c059243602aa.tar.gz
gcc-cf7aa6a3b79ac25df266aa4fcfe6c059243602aa.tar.bz2
[Vectorizer] Use a VEC_PERM_EXPR instead of VEC_RSHIFT_EXPR; expand appropriate VEC_PERM_EXPRs using vec_shr_optab
* optabs.c (can_vec_perm_p): Update comment, does not consider vec_shr. (shift_amt_for_vec_perm_mask): New. (expand_vec_perm_1): Use vec_shr_optab if second vector is const0_rtx and mask appropriate. * tree-vect-loop.c (calc_vec_perm_mask_for_shift): New. (have_whole_vector_shift): New. (vect_model_reduction_cost): Call have_whole_vector_shift instead of looking for vec_shr_optab. (vect_create_epilog_for_reduction): Likewise; also rename local variable have_whole_vector_shift to reduce_with_shift; output VEC_PERM_EXPRs instead of VEC_RSHIFT_EXPRs. * tree-vect-stmts.c (vect_gen_perm_mask_checked): Extend comment. From-SVN: r217509
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r--gcc/tree-vect-stmts.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 3d40f0f..f877fea 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -5495,7 +5495,8 @@ vect_gen_perm_mask_any (tree vectype, const unsigned char *sel)
return mask_vec;
}
-/* Checked version of vect_gen_perm_mask_any. Asserts can_vec_perm_p. */
+/* Checked version of vect_gen_perm_mask_any. Asserts can_vec_perm_p,
+ i.e. that the target supports the pattern _for arbitrary input vectors_. */
tree
vect_gen_perm_mask_checked (tree vectype, const unsigned char *sel)