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