> * 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