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; })