comparison gcc/testsuite/gcc.dg/loop-versioning-14.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* { dg-options "-O3 -fdump-tree-lversion-details" } */
2
3 /* Test that we don't try to version for a step of 1 when that would
4 cause the iterations to leave a gap between accesses. */
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 * 4] = 100;
12 x[i * stepx * 4 + 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 * 4)
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 * 4 - 16] = 100;
32 x[i * stepx * 4 - 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 * 4)
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 (int i = 0; i < n; ++i)
50 {
51 x[i * stepx * 64 - 16] = 100;
52 x[i * stepx * 64 + 15] = 99;
53 }
54 }
55
56 void
57 f6 (unsigned short *x, int stepx, int n)
58 {
59 for (int i = 0; i < n; i += stepx * 64)
60 {
61 x[i - 16] = 100;
62 x[i + 15] = 99;
63 }
64 }
65
66 void
67 f7 (unsigned short *x, int stepx, int n)
68 {
69 for (unsigned short *y = x; y < x + n; y += stepx * 4)
70 {
71 y[0] = 100;
72 y[1] = 99;
73 }
74 }
75
76 unsigned short x[1000];
77
78 void
79 g1 (int stepx, int n)
80 {
81 for (int i = 0; i < n; ++i)
82 {
83 x[i * stepx * 4] = 100;
84 x[i * stepx * 4 + 1] = 99;
85 }
86 }
87
88 void
89 g2 (int stepx, int n)
90 {
91 for (int i = 0; i < n; i += stepx * 4)
92 {
93 x[i] = 100;
94 x[i + 1] = 99;
95 }
96 }
97
98 void
99 g3 (int stepx, int n)
100 {
101 for (int i = 0; i < n; ++i)
102 {
103 x[i * stepx * 4 - 16] = 100;
104 x[i * stepx * 4 - 15] = 99;
105 }
106 }
107
108 void
109 g4 (int stepx, int n)
110 {
111 for (int i = 0; i < n; i += stepx * 4)
112 {
113 x[i - 16] = 100;
114 x[i - 15] = 99;
115 }
116 }
117
118 void
119 g5 (int stepx, int n)
120 {
121 for (int i = 0; i < n; ++i)
122 {
123 x[i * stepx * 64 - 16] = 100;
124 x[i * stepx * 64 + 15] = 99;
125 }
126 }
127
128 void
129 g6 (int stepx, int n)
130 {
131 for (int i = 0; i < n; i += stepx * 64)
132 {
133 x[i - 16] = 100;
134 x[i + 15] = 99;
135 }
136 }
137
138 void
139 g7 (int stepx, int n)
140 {
141 for (unsigned short *y = x; y < x + n; y += stepx * 4)
142 {
143 y[0] = 100;
144 y[1] = 99;
145 }
146 }
147
148 /* { dg-final { scan-tree-dump-not {want to version} "lversion" } } */
149 /* { dg-final { scan-tree-dump-not {versioned} "lversion" } } */