23 package org.graalvm.compiler.core.test; |
23 package org.graalvm.compiler.core.test; |
24 |
24 |
25 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED; |
25 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_IGNORED; |
26 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED; |
26 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_IGNORED; |
27 |
27 |
28 import org.graalvm.compiler.nodes.NodeView; |
|
29 import org.junit.Test; |
|
30 |
|
31 import org.graalvm.compiler.api.directives.GraalDirectives; |
28 import org.graalvm.compiler.api.directives.GraalDirectives; |
32 import org.graalvm.compiler.graph.NodeClass; |
29 import org.graalvm.compiler.graph.NodeClass; |
33 import org.graalvm.compiler.loop.InductionVariable; |
30 import org.graalvm.compiler.loop.InductionVariable; |
34 import org.graalvm.compiler.loop.LoopsData; |
31 import org.graalvm.compiler.loop.LoopsData; |
35 import org.graalvm.compiler.nodeinfo.NodeInfo; |
32 import org.graalvm.compiler.nodeinfo.NodeInfo; |
|
33 import org.graalvm.compiler.nodes.NodeView; |
36 import org.graalvm.compiler.nodes.StructuredGraph; |
34 import org.graalvm.compiler.nodes.StructuredGraph; |
37 import org.graalvm.compiler.nodes.ValueNode; |
35 import org.graalvm.compiler.nodes.ValueNode; |
38 import org.graalvm.compiler.nodes.calc.FloatingNode; |
36 import org.graalvm.compiler.nodes.calc.FloatingNode; |
39 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext; |
37 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext; |
40 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin; |
38 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin; |
41 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins; |
39 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins; |
42 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration; |
40 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration; |
43 import org.graalvm.compiler.nodes.spi.LIRLowerable; |
41 import org.graalvm.compiler.nodes.spi.LIRLowerable; |
44 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
42 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
|
43 import org.junit.Test; |
45 |
44 |
46 import jdk.vm.ci.meta.JavaKind; |
45 import jdk.vm.ci.meta.JavaKind; |
47 import jdk.vm.ci.meta.ResolvedJavaMethod; |
46 import jdk.vm.ci.meta.ResolvedJavaMethod; |
48 |
47 |
49 public class CountedLoopTest extends GraalCompilerTest { |
48 public class CountedLoopTest extends GraalCompilerTest { |
115 @Test |
114 @Test |
116 public void increment3() { |
115 public void increment3() { |
117 test("incrementSnippet", 0, 256, 3); |
116 test("incrementSnippet", 0, 256, 3); |
118 } |
117 } |
119 |
118 |
|
119 @Test |
|
120 public void increment4() { |
|
121 test("incrementSnippet", -10, Integer.MAX_VALUE, 1); |
|
122 } |
|
123 |
|
124 @Test |
|
125 public void increment5() { |
|
126 test("incrementSnippet", 256, 256, 1); |
|
127 } |
|
128 |
|
129 @Test |
|
130 public void increment6() { |
|
131 test("incrementSnippet", 257, 256, 1); |
|
132 } |
|
133 |
120 public static Result incrementEqSnippet(int start, int limit, int step) { |
134 public static Result incrementEqSnippet(int start, int limit, int step) { |
121 int i; |
135 int i; |
122 int inc = ((step - 1) & 0xFFFF) + 1; // make sure this value is always strictly positive |
136 int inc = ((step - 1) & 0xFFFF) + 1; // make sure this value is always strictly positive |
123 Result ret = new Result(); |
137 Result ret = new Result(); |
124 for (i = start; i <= limit; i += inc) { |
138 for (i = start; i <= limit; i += inc) { |
142 @Test |
156 @Test |
143 public void incrementEq3() { |
157 public void incrementEq3() { |
144 test("incrementEqSnippet", 0, 256, 3); |
158 test("incrementEqSnippet", 0, 256, 3); |
145 } |
159 } |
146 |
160 |
|
161 @Test |
|
162 public void incrementEq4() { |
|
163 test("incrementEqSnippet", -10, 0, Integer.MAX_VALUE); |
|
164 } |
|
165 |
|
166 @Test |
|
167 public void incrementEq5() { |
|
168 test("incrementEqSnippet", 256, 256, 1); |
|
169 } |
|
170 |
|
171 @Test |
|
172 public void incrementEq6() { |
|
173 test("incrementEqSnippet", 257, 256, 1); |
|
174 } |
|
175 |
147 public static Result decrementSnippet(int start, int limit, int step) { |
176 public static Result decrementSnippet(int start, int limit, int step) { |
148 int i; |
177 int i; |
149 int dec = ((step - 1) & 0xFFFF) + 1; // make sure this value is always strictly positive |
178 int dec = ((step - 1) & 0xFFFF) + 1; // make sure this value is always strictly positive |
150 Result ret = new Result(); |
179 Result ret = new Result(); |
151 for (i = start; i > limit; i -= dec) { |
180 for (i = start; i > limit; i -= dec) { |
194 } |
223 } |
195 |
224 |
196 @Test |
225 @Test |
197 public void decrementEq3() { |
226 public void decrementEq3() { |
198 test("decrementEqSnippet", 256, 0, 3); |
227 test("decrementEqSnippet", 256, 0, 3); |
|
228 } |
|
229 |
|
230 @Test |
|
231 public void decrementEq4() { |
|
232 test("decrementEqSnippet", -10, 0, Integer.MAX_VALUE); |
199 } |
233 } |
200 |
234 |
201 public static Result twoVariablesSnippet() { |
235 public static Result twoVariablesSnippet() { |
202 Result ret = new Result(); |
236 Result ret = new Result(); |
203 int j = 0; |
237 int j = 0; |