[Bug target/92225] ice in gen_smaxv2di3, at config/i386/sse.md:12225

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Oct 25 12:33:00 GMT 2019


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-10-25
     Ever confirmed|0                           |1

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  Eventually ix86_expand_int_vcond fails because the compare needs

4105          /* Only SSE4.1/SSE4.2 supports V2DImode.  */
4106          if (mode == V2DImode)

and code is GT.  Somehow

(define_expand "<code><mode>3"
  [(set (match_operand:VI8_AVX2_AVX512F 0 "register_operand")
        (maxmin:VI8_AVX2_AVX512F
          (match_operand:VI8_AVX2_AVX512F 1 "register_operand")
          (match_operand:VI8_AVX2_AVX512F 2 "register_operand")))]
  "TARGET_SSE4_2"
^^^^

doesn't work?  Ah, because it's directly invoked via

(define_expand "reduc_<code>_scal_<mode>"
  [(smaxmin:REDUC_SSE_SMINMAX_MODE
     (match_operand:<ssescalarmode> 0 "register_operand")
     (match_operand:REDUC_SSE_SMINMAX_MODE 1 "register_operand"))]
  ""
{
  rtx tmp = gen_reg_rtx (<MODE>mode);
  ix86_expand_reduc (gen_<code><mode>3, tmp, operands[1]);
  emit_insn (gen_vec_extract<mode><ssescalarmodelower> (operands[0], tmp,
                                                        const0_rtx));
  DONE;
})


More information about the Gcc-bugs mailing list