On Wed, Oct 26, 2016 at 06:51:54PM -0400, Michael Meissner wrote:
>       (zero_extendsi<mode>2): Reorder pattern, so RLDICL comes before
>       the FPR and VSX loads, but before MTVSRWZ.  Remove ??, ! from the
>       constraints.  Add MFVSRWZ and XXEXTRACTUW instructions to support
>       small integers in vector registers.

"but those before MTVSRWZ"?  Or don't mention rldicl at all?

>       (extendsi<mode>2): Reorder pattern, so EXTSW comes before the FPR
>       and VSX loads, but before MTVSRWA.  Remove ??, ! from the
>       constraints.  Add VEXTSW2D support for small integers in vector
>       registers.

Similar here.

> @@ -3112,7 +3133,10 @@ rs6000_init_hard_regno_mode_ok (bool glo
>       ww - Register class to do SF conversions in with VSX operations.
>       wx - Float register if we can do 32-bit int stores.
>       wy - Register class to do ISA 2.07 SF operations.
> -     wz - Float register if we can do 32-bit unsigned int loads.  */
> +     wz - Float register if we can do 32-bit unsigned int loads.
> +     wI - VSX register if SImode is allowed in VSX registers.
> +     wJ - VSX register if QImode/HImode are allowed in VSX registers.
> +     wK - Altivec register if QImode/HImode are allowed in VSX registers.  */

You don't mention wH here, is that an oversight?

>    /* Add support for various direct moves available.  In this function, we 
> only
>       look at cases where we don't need any extra registers, and one or more
> -     simple move insns are issued.  At present, 32-bit integers are not 
> allowed
> +     simple move insns are issued. Originally small integers are not allowed

dot space space.

> @@ -5019,7 +5023,10 @@ (define_insn_and_split "floatsi<mode>2_l
>    operands[1] = rs6000_address_for_fpconvert (operands[1]);
>    if (GET_CODE (operands[2]) == SCRATCH)
>      operands[2] = gen_reg_rtx (DImode);
> -  emit_insn (gen_lfiwax (operands[2], operands[1]));
> +  if (TARGET_VSX_SMALL_INTEGER)
> +    emit_insn (gen_extendsidi2 (operands[2], operands[1]));
> +  else    

Trailing spaces here.

> +     (match_operand:SI 1 "input_operand"
> +             "r,          U,           m,           Z,           Z,
> +              r,          wI,          wH,          I,           L,
> +                 n,          wIwH,        O,           wM,          wB,

Indent with tabs instead of spaces, like the other lines.


Everything looks fine except for those nits, and I'm really happy there
is no benchmark degradation :-)

Please install to trunk (if the -m32 and power7 runs work out fine).

Thanks,


Segher

Reply via email to