blob: 9f5ad0bd9520868ad89cfa1beafcee05f70efbcc [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-mavx512fp16 -mavx512vl -O2 -mprefer-vector-width=512" } */
/* { dg-final { scan-assembler-times "vfmaddsub...ph\[ \t\]+\[^\n\]*%zmm\[0-9\]" 1 } } */
/* { dg-final { scan-assembler-times "vfmsubadd...ph\[ \t\]+\[^\n\]*%zmm\[0-9\]" 1 } } */
void vec_fmaddsub_fp16(int n, _Float16 da_r, _Float16 *x, _Float16* y, _Float16* __restrict z)
{
for (int i = 0; i < 32; i += 2)
{
z[i] = da_r * x[i] - y[i];
z[i+1] = da_r * x[i+1] + y[i+1];
}
}
void vec_fmasubadd_fp16(int n, _Float16 da_r, _Float16 *x, _Float16* y, _Float16* __restrict z)
{
for (int i = 0; i < 32; i += 2)
{
z[i] = da_r * x[i] + y[i];
z[i+1] = da_r * x[i+1] - y[i+1];
}
}