Hi Mike,

Okay for trunk.  Comment below...

On Fri, Aug 19, 2016 at 07:59:39PM -0400, Michael Meissner wrote:
>       * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
>       for using VSPLTH/VSPLTB to initialize vector short and vector char
>       vectors with all of the same element.
> 
>       * config/rs6000/vsx.md (VSX_SPLAT_I): New mode iterators and
>       attributes to initialize V8HImode and V16QImode vectors with the
>       same element.
>       (VSX_SPLAT_COUNT): Likewise.
>       (VSX_SPLAT_SUFFIX): Likewise.
>       (vsx_vsplt<VSX_SPLAT_SUFFIX>_di): New insns to support
>       initializing V8HImode and V16QImode vectors with the same
>       element.

> +  /* Special case initializing vector short/char that are splats if we are on
> +     64-bit systems with direct move.  */
> +  if (all_same && TARGET_DIRECT_MOVE_64BIT
> +      && (mode == V16QImode || mode == V8HImode))
> +    {
> +      rtx op0 = XVECEXP (vals, 0, 0);
> +      rtx di_tmp = gen_reg_rtx (DImode);
> +
> +      if (!REG_P (op0))
> +     op0 = force_reg (GET_MODE_INNER (mode), op0);

Always using force_reg is easier to read imo.

Thanks,


Segher

Reply via email to