Add new optabs for reducing vectors to scalars
authorAlan Lawrence <alan.lawrence@arm.com>
Mon, 27 Oct 2014 14:20:52 +0000 (14:20 +0000)
committerAlan Lawrence <alalaw01@gcc.gnu.org>
Mon, 27 Oct 2014 14:20:52 +0000 (14:20 +0000)
commitd43a252e2fa612b14fa7f6f4dec3320c8b313a1c
treebcaacd0bd9927dbb5bc3f3a2660d16c40919ad1b
parent99f76d9bacfcef28546dda5a51cb3651ba422518
Add new optabs for reducing vectors to scalars

PR tree-optimization/61114
* doc/md.texi (Standard Names): Add reduc_(plus,[us](min|max))|scal
optabs, and note in reduc_[us](plus|min|max) to prefer the former.

* expr.c (expand_expr_real_2): Use reduc_..._scal if available, fall
back to old reduc_... + BIT_FIELD_REF only if not.

* optabs.c (optab_for_tree_code): for REDUC_(MAX,MIN,PLUS)_EXPR,
return the reduce-to-scalar (reduc_..._scal) optab.
(scalar_reduc_to_vector): New.

* optabs.def (reduc_smax_scal_optab, reduc_smin_scal_optab,
reduc_plus_scal_optab, reduc_umax_scal_optab, reduc_umin_scal_optab):
New.

* optabs.h (scalar_reduc_to_vector): Declare.

* tree-vect-loop.c (vectorizable_reduction): Look for optabs reducing
to either scalar or vector.

From-SVN: r216737
gcc/ChangeLog
gcc/doc/md.texi
gcc/expr.c
gcc/optabs.c
gcc/optabs.def
gcc/optabs.h
gcc/tree-vect-loop.c