https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116738
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think the problem is the mixing of four different substitutions in a single pattern, in particular round_saeonly and round_saeonly_scalar and mask and mask_scalar. <round_saeonly_scalar_name> is from the second, <round_saeonly_mode_condition> and <round_saeonly_mask_arg3> from the first and <mask_operand_arg34> and <mask_mode512bit_condition> from the third and <mask_scalar_name> from the fourth. I think it only should use 2 substs, likely mask_scalar and round_saeonly_scalar, like the previous pattern. And if something needs to be added to those two subst attributes (likely to ensure the right extra arguments are passed to the gen* routine), it should be added.