https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114164
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > I'm not sure who's responsible to reject this, whether the vectorizer can > expect there's a way to create the mask arguments when the simdclone is > marked usable by the target or whether it has to verify that itself. > > This becomes an ICE if we move vector lowering before vectorization. Wasn't this valid when VEC_COND_EXPR allowed the comparison directly in the operand? Or maybe I misremember. Certainly I believe -mavx -mno-avx2 should be able to do 256-bit conditional moves of float/double elements. When it is in a separate statement, there is always a risk something CSEs it or moves it away from the single user etc. such that expansion couldn't consider it together. I don't see any VEC_COND_EXPRs anywhere in GCC 7 pr68762-*.cc.* dumps though.