/* { 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]; } }