https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89570
--- Comment #9 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #8) > For VEC_COND_EXPR, yes, it is pretty usual on many of the targets that you > can only do: > _1 = VEC_COND_EXPR <_2 == _3, {-1, -1, ...}, {0, 0, ...}>; > (that is vcond/vcondu/vcondeq optab), and not: > _4 = _2 == _3; > (that is vec_cmp/vec_cmpu/vec_cmpeq optab). > Quick grep for '"vcond' config/*/*.md shows that the former is likely in > aarch64, arm, gcn, i386, ia64, mips, rs6000, s390, sparc, spu > and the latter only in > aarch64, gcn, i386, s390 > (haven't checked exact modes). Could we get tree-vect-generic.c to "lower" stand-alone comparisons into VEC_COND_EXPRs if they're not supported otherwise? I guess this is all bound up with that discussion about having 4-op comparisons vs. always having separate comparisons though.