https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55001

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Testcase:

typedef int v32si __attribute__((vector_size(128)));

void foo (v32si *a, v32si *b, v32si *c)
{
  *c = *a < *b
      ? (v32si){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}
  : (v32si){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
}

that also shows that we initially create a signed-boolean:32 mask temporary
even with AVX512VL which we'd need to change to signed-boolean:1 when
we want to lower to two V16SImode vectors.

Reply via email to