On Mon, Feb 10, 2020 at 5:33 AM Mihailo Stojanovic
<mihailo.stojano...@rt-rk.com> wrote:
>
> Similar to the mirror case of allocating an FPR for an integer mode
> pseudo, prevent GPRs from being allocated for a floating mode pseudo.

Can you expand on why you want to do this?
Provide benchmarking or a testcase which this improves the code generation?
I can see this producing much worse code for soft-float (which I still
care about).

Thanks,
Andrew Pinski

>
> gcc/ChangeLog:
>
>         * gcc/config/mips/mips.c (mips_ira_change_pseudo_allocno_class):
>         Limit the allocation of floating mode pseudos to FP_REGS.
> ---
>  gcc/config/mips/mips.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
> index 513fc5f..ffcb14d 100644
> --- a/gcc/config/mips/mips.c
> +++ b/gcc/config/mips/mips.c
> @@ -22492,6 +22492,12 @@ mips_ira_change_pseudo_allocno_class (int regno, 
> reg_class_t allocno_class,
>       instructions that say integer mode values must be placed in FPRs.  */
>    if (INTEGRAL_MODE_P (PSEUDO_REGNO_MODE (regno)) && allocno_class == 
> ALL_REGS)
>      return GR_REGS;
> +
> +  /* Likewise for the mirror case of floating mode pseudos being allocated in
> +     a GPR.  */
> +  if (FLOAT_MODE_P (PSEUDO_REGNO_MODE (regno)) && allocno_class == ALL_REGS)
> +    return FP_REGS;
> +
>    return allocno_class;
>  }
>
> --
> 2.7.4
>

Reply via email to