On Mon, Jul 13, 2026 at 03:03:53PM +0530, jeevitha wrote:
> Hi All,
> 
> The following patch has been bootstrapped and regtested on powerpc64le-linux.
> 
> Add a new %W print modifier to print_operand that prints the VSX
> register number plus two.
> 
> Some future Power instruction patterns require printing two VSX
> registers corresponding to a __vector_pair operand. The existing
> %x print modifier emits the first VSX register using VSX register
> numbering. Add a new %W print modifier to emit the second VSX
> register in the pair.
> 
> 2025-07-13  Jeevitha Palanisamy  <[email protected]>
>           Kishan Parmar  <[email protected]> 
> 
> gcc/
>       * config/rs6000/rs6000.cc (print_operand): Add the `%W`
>       print modifier to print the VSX register number plus two.

Note, this patch looks ill-formed.  Please re-do the patch from the
current sources.  In particular, the patch does not have a 'W': case
(which should be between 'w' and 'x').  The lines in the #ifDEF are
part of the %x case.

> diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
> index d8669d9ffce..6bbae4ad2f6 100644
> --- a/gcc/config/rs6000/rs6000.cc
> +++ b/gcc/config/rs6000/rs6000.cc
> @@ -14514,6 +14514,27 @@ print_operand (FILE *file, rtx x, int code)
>                        ? reg - 32
>                        : reg - FIRST_ALTIVEC_REGNO + 32);
>  
> +#ifdef TARGET_REGNAMES
> +       if (TARGET_REGNAMES)
> +         fprintf (file, "%%vs%d", vsx_reg);
> +       else
> +#endif
> +         fprintf (file, "%d", vsx_reg);
> +     }
> +      return;
> +
> +      /* Like '%x', but prints the VSX register number +2.  */
> +      if (!REG_P (x) || !VSX_REGNO_P (REGNO (x)))
> +     output_operand_lossage ("invalid %%W value");
> +      else
> +     {
> +       int reg = REGNO (x);
> +       int vsx_reg = (FP_REGNO_P (reg)
> +                      ? reg - 32
> +                      : reg - FIRST_ALTIVEC_REGNO + 32);
> +       vsx_reg += 2;
> +
>  #ifdef TARGET_REGNAMES
>         if (TARGET_REGNAMES)
>           fprintf (file, "%%vs%d", vsx_reg);
> 

-- 
Michael Meissner, IBM
PO Box 98, Ayer, Massachusetts, USA, 01432
email: [email protected]

Reply via email to