https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111337
Robin Dapp <rdapp at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rdapp at gcc dot gnu.org --- Comment #1 from Robin Dapp <rdapp at gcc dot gnu.org> --- This is gcc.dg/pr70252.c BTW. What happens is that, starting with maskdest = (vec_cond mask1 1 0) >= (vec_cond mask2 1 0) we fold to maskdest = mask1 >= (vec_cond (mask2 1 0)) and then sink the ">=" into the vec_cond so we end up with maskdest = vec_cond (mask2 ? mask1 : 0), i.e. a vec_cond with a mask "data mode". In gimple-isel, when the target does not provide a vcond_mask implementation for that (which none does) we assert that the mask mode be MODE_VECTOR_INT. IMHO this should not happen and we should not sink comparisons (that could be folded to masks) into vec_cond. I'm preparing a patch that prevents the sinking of comparisons for mask types.