https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121392
--- Comment #2 from Andrew Stubbs <ams at gcc dot gnu.org> ---
This is actually a bug in Newlib libm that is exposed because the testcase is
now vectorizing, where previously the i386 setting of
param_vect_partial_vector_usage was blocking it.
>From newlib/libm/machine/amdgcn/v64sf_fmod.c:
VECTOR_IF (hy < 0x00800000, cond) // subnormal y
iy = VECTOR_INIT (-126);
for (v64si i = (hy << 8); !ALL_ZEROES_P (cond & (i >= 0)); i <<= 1)
VECTOR_COND_MOVE (iy, iy - 1, cond & (i >= 0));
Here the bug is that "i <<= 1" continues to run until the last lane is
finished, which results in some lanes getting shifted too far, which causes
those lanes to become zero, resulting in an infinite loop.