https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92225

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu.org,
                   |                            |uros at gcc dot gnu.org

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, but we are asking

          if (reduc_fn != IFN_LAST
              && !direct_internal_fn_supported_p (reduc_fn, vectype_out,
                                                  OPTIMIZE_FOR_SPEED))
            {
              if (dump_enabled_p ())
                dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
                                 "reduc op not supported by target.\n");

              reduc_fn = IFN_LAST;

with reduc_fn == IFN_REDUC_MAX and a V2DImode type which eventually ends up
in direct_optab_supported_p (optab=reduc_smax_scal_optab calling
ix86_optab_supported_p with CODE_FOR_reduc_smax_scal_v2di and V2DImode
which doesn't handle that specially.

Richard - do all IFNs we query direct support for have to manually repeat
constraints we set up?  Or is

(define_expand "reduc_plus_scal_<mode>"
 [(plus:REDUC_PLUS_MODE
   (match_operand:<ssescalarmode> 0 "register_operand")
   (match_operand:REDUC_PLUS_MODE 1 "register_operand"))]
 ""
{

simply in need of constraining for this mode?

CCing Uros since this likely requires a target fix.

Reply via email to