/* { dg-do compile */ /* { dg-options "-O2 -ffp-contract=off -ftree-vectorize" } */ /* { dg-final { scan-assembler "fpmpy" } } */ /* fpma and fpms will show in either way because there are no specific vector add/sub instructions. So we just check for fpmpy. */ #define N 16 extern bar(float *, float *, float *, float *); void foo() { int i; float a[N], b[N], c[N], d[N]; bar(a,b,c,d); for (i = 0; i < N; i++) { a[i] = b[i] + c[i] * d[i]; } bar(a,b,c,d); for (i = 0; i < N; i++) { a[i] = b[i] - c[i] * d[i]; } bar(a,b,c,d); for (i = 0; i < N; i++) { a[i] = b[i] * c[i] + d[i]; } bar(a,b,c,d); for (i = 0; i < N; i++) { a[i] = b[i] * c[i] - d[i]; } bar(a,b,c,d); }