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

--- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
And if you want to see it in vectorization action, perhaps
#pragma omp declare simd simdlen(64) inbranch
char foo (char x);
#pragma omp declare simd simdlen(64) inbranch
short qux (short x);
#pragma omp declare simd simdlen(64) inbranch
int bar (int x);
#pragma omp declare simd simdlen(32) inbranch
long long baz (long long x);

char a[1024], b[1024];

void
xyzzy ()
{
  for (int i = 0; i < 1024; ++i)
    if (a[i])
      b[i] = foo (b[i]);
}

short c[1024], d[1024];

void
fred ()
{
  for (int i = 0; i < 1024; ++i)
    if (c[i])
      d[i] = qux (d[i]);
}

int e[1024], f[1024];

void
garply ()
{
  for (int i = 0; i < 1024; ++i)
    if (e[i])
      f[i] = bar (f[i]);
}

long long g[1024], h[1024];

void
corge ()
{
  for (int i = 0; i < 1024; ++i)
    if (g[i])
      h[i] = baz (h[i]);
}
-O3 -mavx512f I'd say.

Reply via email to