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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Tried -Ofast -mavx512f
#include <math.h>

void
foo (double *a, double *b)
{
  for (int i = 0; i < 1024; i++)
    a[i] = pow (a[i], b[i]);
}

void
bar (double *a)
{
  for (int i = 0; i < 1024; i++)
    a[i] = cbrt (sqrt (a[i]));
}

void
baz (double *a)
{
  for (int i = 0; i < 1024; i++)
    a[i] = cbrt (cbrt (a[i]));
}
but that doesn't trigger, it uses simd clones rather than internal functions.
Strangely, bar isn't vectorized while foo and baz are.

Reply via email to