111
|
1 /* { dg-require-effective-target vect_float } */
|
|
2
|
|
3 #include <stdarg.h>
|
|
4 #include "tree-vect.h"
|
|
5
|
|
6 void __attribute__((noinline))
|
|
7 sumit (float * __restrict dest,
|
|
8 float * __restrict src, float * __restrict src2,
|
|
9 int stride, int n)
|
|
10 {
|
|
11 int i;
|
|
12 for (i = 0; i < n; i++)
|
|
13 dest[i*stride] = src[i] + src2[i];
|
|
14 }
|
|
15
|
|
16 int main()
|
|
17 {
|
|
18 int i, stride;
|
|
19 float src[] = {1, 2, 3, 4, 5, 6, 7, 8};
|
|
20 float dest[64];
|
|
21 check_vect ();
|
|
22 for (stride = 0; stride < 8; stride++)
|
|
23 {
|
|
24 sumit (dest, src, src, stride, 8);
|
|
25 if (!stride && dest[0] != 16)
|
|
26 abort();
|
|
27 else if (stride)
|
|
28 for (i = 0; i < 8; i++)
|
|
29 if (2*src[i] != dest[i*stride])
|
|
30 abort ();
|
|
31 }
|
|
32 return 0;
|
|
33 }
|
|
34
|
|
35 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
|