> +template<int UNSPEC> You don't need a template class here since it can only be UNSPEC_VFREC7.
> +class vfrec7_frm : public function_base > +{ > +public: > + bool has_rounding_mode_operand_p () const override { return true; } > + > + rtx expand (function_expander &e) const override > + { > + return e.use_exact_insn (code_for_pred (UNSPEC, e.vector_mode ())); > + } > +}; > + > /* Implements vrsub. */ > class vrsub : public function_base > { > @@ -2433,6 +2448,7 @@ static CONSTEXPR const unop<SQRT> vfsqrt_obj; > static CONSTEXPR const unop_frm<SQRT> vfsqrt_frm_obj; > static CONSTEXPR const float_misc<UNSPEC_VFRSQRT7> vfrsqrt7_obj; > static CONSTEXPR const float_misc<UNSPEC_VFREC7> vfrec7_obj; > +static CONSTEXPR const vfrec7_frm<UNSPEC_VFREC7> vfrec7_frm_obj; Then `static CONSTEXPR const vfrec7_frm vfrec7_frm_obj;` here > static CONSTEXPR const binop<SMIN> vfmin_obj; > static CONSTEXPR const binop<SMAX> vfmax_obj; > static CONSTEXPR const float_misc<UNSPEC_VCOPYSIGN> vfsgnj_obj;