src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerLowerThanNode.java
changeset 48861 47f19ff9903c
parent 48190 25cfedf27edc
child 49451 e06f9607f370
equal deleted inserted replaced
48860:5bce1b7e7800 48861:47f19ff9903c
    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;
    25 import org.graalvm.compiler.core.common.calc.CanonicalCondition;
    26 import jdk.vm.ci.meta.MetaAccessProvider;
       
    27 import org.graalvm.compiler.core.common.calc.Condition;
       
    28 import org.graalvm.compiler.core.common.type.IntegerStamp;
    26 import org.graalvm.compiler.core.common.type.IntegerStamp;
    29 import org.graalvm.compiler.core.common.type.Stamp;
    27 import org.graalvm.compiler.core.common.type.Stamp;
    30 import org.graalvm.compiler.graph.NodeClass;
    28 import org.graalvm.compiler.graph.NodeClass;
    31 import org.graalvm.compiler.nodeinfo.NodeInfo;
    29 import org.graalvm.compiler.nodeinfo.NodeInfo;
    32 import org.graalvm.compiler.nodes.ConstantNode;
    30 import org.graalvm.compiler.nodes.ConstantNode;
    34 import org.graalvm.compiler.nodes.LogicNegationNode;
    32 import org.graalvm.compiler.nodes.LogicNegationNode;
    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;
    38 import org.graalvm.compiler.nodes.util.GraphUtil;
    36 import org.graalvm.compiler.nodes.util.GraphUtil;
    39 
    37 import org.graalvm.compiler.options.OptionValues;
       
    38 
       
    39 import jdk.vm.ci.meta.ConstantReflectionProvider;
       
    40 import jdk.vm.ci.meta.MetaAccessProvider;
    40 import jdk.vm.ci.meta.TriState;
    41 import jdk.vm.ci.meta.TriState;
    41 import org.graalvm.compiler.options.OptionValues;
       
    42 
    42 
    43 /**
    43 /**
    44  * Common super-class for "a < b" comparisons both {@linkplain IntegerLowerThanNode signed} and
    44  * Common super-class for "a < b" comparisons both {@linkplain IntegerLowerThanNode signed} and
    45  * {@linkplain IntegerBelowNode unsigned}.
    45  * {@linkplain IntegerBelowNode unsigned}.
    46  */
    46  */
   115         return getOp().tryFold(xStampGeneric, yStampGeneric);
   115         return getOp().tryFold(xStampGeneric, yStampGeneric);
   116     }
   116     }
   117 
   117 
   118     public abstract static class LowerOp extends CompareOp {
   118     public abstract static class LowerOp extends CompareOp {
   119         @Override
   119         @Override
   120         public LogicNode canonical(ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, Condition condition,
   120         public LogicNode canonical(ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, CanonicalCondition condition,
   121                         boolean unorderedIsTrue, ValueNode forX, ValueNode forY, NodeView view) {
   121                         boolean unorderedIsTrue, ValueNode forX, ValueNode forY, NodeView view) {
   122             LogicNode result = super.canonical(constantReflection, metaAccess, options, smallestCompareWidth, condition, unorderedIsTrue, forX, forY, view);
   122             LogicNode result = super.canonical(constantReflection, metaAccess, options, smallestCompareWidth, condition, unorderedIsTrue, forX, forY, view);
   123             if (result != null) {
   123             if (result != null) {
   124                 return result;
   124                 return result;
   125             }
   125             }
   154 
   154 
   155         protected abstract long maxValue(int bits);
   155         protected abstract long maxValue(int bits);
   156 
   156 
   157         protected abstract IntegerStamp forInteger(int bits, long min, long max);
   157         protected abstract IntegerStamp forInteger(int bits, long min, long max);
   158 
   158 
   159         protected abstract Condition getCondition();
   159         protected abstract CanonicalCondition getCondition();
   160 
   160 
   161         protected abstract IntegerLowerThanNode createNode(ValueNode x, ValueNode y);
   161         protected abstract IntegerLowerThanNode createNode(ValueNode x, ValueNode y);
   162 
   162 
   163         public LogicNode create(ValueNode x, ValueNode y, NodeView view) {
   163         public LogicNode create(ValueNode x, ValueNode y, NodeView view) {
   164             LogicNode result = CompareNode.tryConstantFoldPrimitive(getCondition(), x, y, false, view);
   164             LogicNode result = CompareNode.tryConstantFoldPrimitive(getCondition(), x, y, false, view);