On 16/09/15 15:28, Bill Schmidt wrote:
2015-09-16 Bill Schmidt <wschm...@linux.vnet.ibm.com>
* config/rs6000/altivec.md (UNSPEC_REDUC_SMAX, UNSPEC_REDUC_SMIN,
UNSPEC_REDUC_UMAX, UNSPEC_REDUC_UMIN, UNSPEC_REDUC_SMAX_SCAL,
UNSPEC_REDUC_SMIN_SCAL, UNSPEC_REDUC_UMAX_SCAL,
UNSPEC_REDUC_UMIN_SCAL): New enumerated constants.
(reduc_smax_v2di): New define_expand.
(reduc_smax_scal_v2di): Likewise.
(reduc_smin_v2di): Likewise.
(reduc_smin_scal_v2di): Likewise.
(reduc_umax_v2di): Likewise.
(reduc_umax_scal_v2di): Likewise.
(reduc_umin_v2di): Likewise.
(reduc_umin_scal_v2di): Likewise.
(reduc_smax_v4si): Likewise.
(reduc_smin_v4si): Likewise.
(reduc_umax_v4si): Likewise.
(reduc_umin_v4si): Likewise.
(reduc_smax_v8hi): Likewise.
(reduc_smin_v8hi): Likewise.
(reduc_umax_v8hi): Likewise.
(reduc_umin_v8hi): Likewise.
(reduc_smax_v16qi): Likewise.
(reduc_smin_v16qi): Likewise.
(reduc_umax_v16qi): Likewise.
(reduc_umin_v16qi): Likewise.
(reduc_smax_scal_<mode>): Likewise.
(reduc_smin_scal_<mode>): Likewise.
(reduc_umax_scal_<mode>): Likewise.
(reduc_umin_scal_<mode>): Likewise.
You shouldn't need the non-_scal reductions. Indeed, they shouldn't be used if
the _scal are present. The non-_scal's were previously defined as producing a
vector with one element holding the result and the other elements all zero, and
this was only ever used with a vec_extract immediately after; the _scal pattern
now includes the vec_extract as well. Hence the non-_scal patterns are
deprecated / considered legacy, as per md.texi.
I proposed a patch to migrate PPC off the old patterns, but have forgotten to
ping it recently - last at
https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01024.html ... (ping?!)
--Alan