https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119626
--- Comment #3 from mcccs at gmx dot com --- Sorry for so many pings, the final code is: void convert1(int * __restrict a, __bf16 * __restrict x) { x[0] = (__bf16)a[0]; x[1] = (__bf16)a[1]; x[2] = (__bf16)a[2]; x[3] = (__bf16)a[3]; } void convert2(float * __restrict a, __bf16 * __restrict x) { x[0] = (__bf16)a[0]; x[1] = (__bf16)a[1]; x[2] = (__bf16)a[2]; x[3] = (__bf16)a[3]; }