20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 package org.graalvm.compiler.nodes.calc; |
23 package org.graalvm.compiler.nodes.calc; |
24 |
24 |
25 import jdk.vm.ci.meta.ConstantReflectionProvider; |
|
26 import jdk.vm.ci.meta.MetaAccessProvider; |
|
27 import org.graalvm.compiler.core.common.NumUtil; |
25 import org.graalvm.compiler.core.common.NumUtil; |
28 import org.graalvm.compiler.core.common.calc.Condition; |
26 import org.graalvm.compiler.core.common.calc.CanonicalCondition; |
29 import org.graalvm.compiler.core.common.type.IntegerStamp; |
27 import org.graalvm.compiler.core.common.type.IntegerStamp; |
30 import org.graalvm.compiler.core.common.type.StampFactory; |
28 import org.graalvm.compiler.core.common.type.StampFactory; |
31 import org.graalvm.compiler.graph.Node; |
29 import org.graalvm.compiler.graph.Node; |
32 import org.graalvm.compiler.graph.NodeClass; |
30 import org.graalvm.compiler.graph.NodeClass; |
33 import org.graalvm.compiler.graph.spi.CanonicalizerTool; |
31 import org.graalvm.compiler.graph.spi.CanonicalizerTool; |
34 import org.graalvm.compiler.nodeinfo.NodeInfo; |
32 import org.graalvm.compiler.nodeinfo.NodeInfo; |
35 import org.graalvm.compiler.nodes.LogicNode; |
33 import org.graalvm.compiler.nodes.LogicNode; |
36 import org.graalvm.compiler.nodes.NodeView; |
34 import org.graalvm.compiler.nodes.NodeView; |
37 import org.graalvm.compiler.nodes.ValueNode; |
35 import org.graalvm.compiler.nodes.ValueNode; |
|
36 import org.graalvm.compiler.options.OptionValues; |
38 |
37 |
39 import jdk.vm.ci.code.CodeUtil; |
38 import jdk.vm.ci.code.CodeUtil; |
40 import org.graalvm.compiler.options.OptionValues; |
39 import jdk.vm.ci.meta.ConstantReflectionProvider; |
|
40 import jdk.vm.ci.meta.MetaAccessProvider; |
41 |
41 |
42 @NodeInfo(shortName = "|<|") |
42 @NodeInfo(shortName = "|<|") |
43 public final class IntegerBelowNode extends IntegerLowerThanNode { |
43 public final class IntegerBelowNode extends IntegerLowerThanNode { |
44 public static final NodeClass<IntegerBelowNode> TYPE = NodeClass.create(IntegerBelowNode.class); |
44 public static final NodeClass<IntegerBelowNode> TYPE = NodeClass.create(IntegerBelowNode.class); |
45 private static final BelowOp OP = new BelowOp(); |
45 private static final BelowOp OP = new BelowOp(); |
124 protected IntegerStamp forInteger(int bits, long min, long max) { |
124 protected IntegerStamp forInteger(int bits, long min, long max) { |
125 return StampFactory.forUnsignedInteger(bits, min, max); |
125 return StampFactory.forUnsignedInteger(bits, min, max); |
126 } |
126 } |
127 |
127 |
128 @Override |
128 @Override |
129 protected Condition getCondition() { |
129 protected CanonicalCondition getCondition() { |
130 return Condition.BT; |
130 return CanonicalCondition.BT; |
131 } |
131 } |
132 |
132 |
133 @Override |
133 @Override |
134 protected IntegerLowerThanNode createNode(ValueNode x, ValueNode y) { |
134 protected IntegerLowerThanNode createNode(ValueNode x, ValueNode y) { |
135 return new IntegerBelowNode(x, y); |
135 return new IntegerBelowNode(x, y); |