/* { dg-do compile { target aarch64*-*-* } } */ | |
/* { dg-options "-O2 -ftree-loop-vectorize -funsafe-math-optimizations -march=armv8.2-a+sve -msve-vector-bits=256" } */ | |
float | |
foo(long n, float *x, int inc_x, | |
float *y, int inc_y) | |
{ | |
float dot = 0.0; | |
int ix = 0, iy = 0; | |
if (n < 0) { | |
return dot; | |
} | |
int i = 0; | |
while (i < n) { | |
dot += y[iy] * x[ix]; | |
ix += inc_x; | |
iy += inc_y; | |
i++; | |
} | |
return dot; | |
} | |
/* { dg-final { scan-assembler-not "smaddl" { target aarch64*-*-* } } } */ |