145
|
1 /* { dg-options "-O3 -fdump-tree-lversion-details" } */
|
|
2
|
|
3 /* Test that we do version for a step of 1 when that would lead the
|
|
4 iterations to access consecutive groups. */
|
|
5
|
|
6 void
|
|
7 f1 (unsigned short *x, int stepx, int n)
|
|
8 {
|
|
9 for (int i = 0; i < n; ++i)
|
|
10 {
|
|
11 x[i * stepx * 2] = 100;
|
|
12 x[i * stepx * 2 + 1] = 99;
|
|
13 }
|
|
14 }
|
|
15
|
|
16 void
|
|
17 f2 (unsigned short *x, int stepx, int n)
|
|
18 {
|
|
19 for (int i = 0; i < n; i += stepx * 2)
|
|
20 {
|
|
21 x[i] = 100;
|
|
22 x[i + 1] = 99;
|
|
23 }
|
|
24 }
|
|
25
|
|
26 void
|
|
27 f3 (unsigned short *x, int stepx, int n)
|
|
28 {
|
|
29 for (int i = 0; i < n; ++i)
|
|
30 {
|
|
31 x[i * stepx * 2 - 16] = 100;
|
|
32 x[i * stepx * 2 - 15] = 99;
|
|
33 }
|
|
34 }
|
|
35
|
|
36 void
|
|
37 f4 (unsigned short *x, int stepx, int n)
|
|
38 {
|
|
39 for (int i = 0; i < n; i += stepx * 2)
|
|
40 {
|
|
41 x[i - 16] = 100;
|
|
42 x[i - 15] = 99;
|
|
43 }
|
|
44 }
|
|
45
|
|
46 void
|
|
47 f5 (unsigned short *x, int stepx, int n)
|
|
48 {
|
|
49 for (unsigned short *y = x; y < x + n; y += stepx * 2)
|
|
50 {
|
|
51 y[0] = 100;
|
|
52 y[1] = 99;
|
|
53 }
|
|
54 }
|
|
55
|
|
56 unsigned short x[1000];
|
|
57
|
|
58 void
|
|
59 g1 (int stepx, int n)
|
|
60 {
|
|
61 for (int i = 0; i < n; ++i)
|
|
62 {
|
|
63 x[i * stepx * 2] = 100;
|
|
64 x[i * stepx * 2 + 1] = 99;
|
|
65 }
|
|
66 }
|
|
67
|
|
68 void
|
|
69 g2 (int stepx, int n)
|
|
70 {
|
|
71 for (int i = 0; i < n; i += stepx * 2)
|
|
72 {
|
|
73 x[i] = 100;
|
|
74 x[i + 1] = 99;
|
|
75 }
|
|
76 }
|
|
77
|
|
78 void
|
|
79 g3 (int stepx, int n)
|
|
80 {
|
|
81 for (int i = 0; i < n; ++i)
|
|
82 {
|
|
83 x[i * stepx * 2 - 16] = 100;
|
|
84 x[i * stepx * 2 - 15] = 99;
|
|
85 }
|
|
86 }
|
|
87
|
|
88 void
|
|
89 g4 (int stepx, int n)
|
|
90 {
|
|
91 for (int i = 0; i < n; i += stepx * 2)
|
|
92 {
|
|
93 x[i - 16] = 100;
|
|
94 x[i - 15] = 99;
|
|
95 }
|
|
96 }
|
|
97
|
|
98 void
|
|
99 g5 (int stepx, int n)
|
|
100 {
|
|
101 for (unsigned short *y = x; y < x + n; y += stepx * 2)
|
|
102 {
|
|
103 y[0] = 100;
|
|
104 y[1] = 99;
|
|
105 }
|
|
106 }
|
|
107
|
|
108 /* { dg-final { scan-tree-dump-times {want to version containing loop} 10 "lversion" } } */
|
|
109 /* { dg-final { scan-tree-dump-times {versioned this loop} 10 "lversion" } } */
|