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.