From 729ff76e2b7931d1106667e7f27001c5c0f624b8 Mon Sep 17 00:00:00 2001 From: Alan Lawrence Date: Fri, 14 Nov 2014 10:48:34 +0000 Subject: [PATCH] [Vectorizer]Make reductions-via-shifts and vec_shr_optab endianness-neutral * optabs.c (shift_amt_for_vec_perm_mask): Remove code conditional on BYTES_BIG_ENDIAN. * tree-vect-loop.c (calc_vec_perm_mask_for_shift, vect_create_epilog_for_reduction): Likewise. * doc/md.texi (vec_shr_m): Clarify direction of shifting. From-SVN: r217550 --- gcc/ChangeLog | 8 ++++++++ gcc/doc/md.texi | 2 +- gcc/optabs.c | 2 -- gcc/tree-vect-loop.c | 14 ++++---------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a200018fc7..0a272ba92bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-11-13 Alan Lawrence + + * optabs.c (shift_amt_for_vec_perm_mask): Remove code conditional on + BYTES_BIG_ENDIAN. + * tree-vect-loop.c (calc_vec_perm_mask_for_shift, + vect_create_epilog_for_reduction): Likewise. + * doc/md.texi (vec_shr_m): Clarify direction of shifting. + 2014-11-14 Ramana Radhakrishnan PR target/63724 diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 6404147579e..b8e5ac522b7 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -4798,7 +4798,7 @@ of a wider mode.) @cindex @code{vec_shr_@var{m}} instruction pattern @item @samp{vec_shr_@var{m}} -Whole vector right shift in bits. +Whole vector right shift in bits, i.e. towards element 0. Operand 1 is a vector to be shifted. Operand 2 is an integer shift amount in bits. Operand 0 is where the resulting shifted vector is stored. diff --git a/gcc/optabs.c b/gcc/optabs.c index f6548c33b26..0acedb9350e 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -6618,8 +6618,6 @@ shift_amt_for_vec_perm_mask (rtx sel) return NULL_RTX; } - if (BYTES_BIG_ENDIAN) - first = (2 * nelt) - first; return GEN_INT (first * bitsize); } diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 7aa58623207..5e66dcf5354 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -3092,7 +3092,7 @@ calc_vec_perm_mask_for_shift (enum machine_mode mode, unsigned int offset, unsigned int i, nelt = GET_MODE_NUNITS (mode); for (i = 0; i < nelt; i++) - sel[i] = (BYTES_BIG_ENDIAN ? i - offset : i + offset) & (2*nelt - 1); + sel[i] = (i + offset) & (2*nelt - 1); } /* Checks whether the target supports whole-vector shifts for vectors of mode @@ -3907,7 +3907,7 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, gimple epilog_stmt = NULL; enum tree_code code = gimple_assign_rhs_code (stmt); gimple exit_phi; - tree bitsize, bitpos; + tree bitsize; tree adjustment_def = NULL; tree vec_initial_def = NULL; tree reduction_op, expr, def; @@ -4417,14 +4417,8 @@ vect_create_epilog_for_reduction (vec vect_defs, gimple stmt, dump_printf_loc (MSG_NOTE, vect_location, "extract scalar result\n"); - if (BYTES_BIG_ENDIAN) - bitpos = size_binop (MULT_EXPR, - bitsize_int (TYPE_VECTOR_SUBPARTS (vectype) - 1), - TYPE_SIZE (scalar_type)); - else - bitpos = bitsize_zero_node; - - rhs = build3 (BIT_FIELD_REF, scalar_type, new_temp, bitsize, bitpos); + rhs = build3 (BIT_FIELD_REF, scalar_type, + new_temp, bitsize, bitsize_zero_node); epilog_stmt = gimple_build_assign (new_scalar_dest, rhs); new_temp = make_ssa_name (new_scalar_dest, epilog_stmt); gimple_assign_set_lhs (epilog_stmt, new_temp); -- 2.30.2