>         * config/sparc/sparc.h (GENERAL_OR_I64, REGISTER_MOVE_COST):
> Remove. * config/sparc/sparc.c (TARGET_REGISTER_MOVE_COST): Define.
> (general_or_i64_p, sparc_register_move_cost): New function.

OK modulo:

> @@ -9124,6 +9128,36 @@
>      }
>  }
>
> +static inline bool
> +general_or_i64_p (reg_class_t rclass)
> +{
> +  return (rclass == GENERAL_REGS || rclass == I64_REGS);
> +}

Missing "/* Return true if CLASS is either GENERAL_REGS or I64_REGS.  */"

> +/* Implement TARGET_REGISTER_MOVE_COST.  */
> +
> +static int
> +sparc_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
> +                         reg_class_t from, reg_class_t to)
> +{
> +  if ((FP_REG_CLASS_P (from) && general_or_i64_p (to))
> +      || (general_or_i64_p (from) && FP_REG_CLASS_P (to))
> +      || from == FPCC_REGS
> +      || to == FPCC_REGS)
> +    {
> +      if (sparc_cpu == PROCESSOR_ULTRASPARC
> +         || sparc_cpu == PROCESSOR_ULTRASPARC3
> +         || sparc_cpu == PROCESSOR_NIAGARA
> +         || sparc_cpu == PROCESSOR_NIAGARA2)
> +       return 12;
> +      else
> +       return 6;
> +    }
> +
> +  return 2;
> +}

Superflous "else".  No need to retest.

-- 
Eric Botcazou

Reply via email to