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.