c++: Mostly concepts related formatting fixes
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr46009.c
blobfe73dbf5db08732cc74115281dcf6a020f893cb6
1 /* PR tree-optimization/46009 */
2 /* { dg-require-effective-target vect_int } */
4 #include "tree-vect.h"
6 int a[1024] __attribute__((aligned));
7 int b[1024] __attribute__((aligned));
8 int c[1024] __attribute__((aligned));
9 int d[1024] __attribute__((aligned));
10 int e[1024] __attribute__((aligned));
12 void __attribute__((noinline))
13 foo (void)
15 int i, g;
16 for (i = 0; i < 1024; i++)
18 g = a[i] + b[i] + c[i] * d[i];;
19 e[i] = g < 10 ? 1 : g;
23 void __attribute__((noinline))
24 bar (void)
26 int i, g;
27 for (i = 0; i < 1024; i++)
29 g = a[i] + b[i] + c[i] * d[i];;
30 if (g < 10)
31 e[i] = 1;
32 else
33 e[i] = g;
37 int
38 main (void)
40 int i;
41 check_vect ();
42 for (i = 0; i < 1024; i++)
44 asm volatile ("" : "+r" (i));
45 a[i] = i % 10;
46 b[i] = i % 10;
47 c[i] = 1;
48 d[i] = -1;
49 e[i] = -1;
51 foo ();
52 #pragma GCC novector
53 for (i = 0; i < 1024; i++)
55 int g;
56 asm volatile ("" : "+r" (i));
57 g = 2 * (i % 10) - 1;
58 if (e[i] != (g < 10 ? 1 : g))
59 abort ();
60 e[i] = -1;
62 bar ();
63 #pragma GCC novector
64 for (i = 0; i < 1024; i++)
66 int g;
67 asm volatile ("" : "+r" (i));
68 g = 2 * (i % 10) - 1;
69 if (e[i] != (g < 10 ? 1 : g))
70 abort ();
72 return 0;
75 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_int_mult } } } */