< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/calc/IntegerBelowNode.java

Print this page
rev 52509 : [mq]: graal


  68     }
  69 
  70     @Override
  71     public Node canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) {
  72         NodeView view = NodeView.from(tool);
  73         ValueNode value = OP.canonical(tool.getConstantReflection(), tool.getMetaAccess(), tool.getOptions(), tool.smallestCompareWidth(), OP.getCondition(), false, forX, forY, view);
  74         if (value != null) {
  75             return value;
  76         }
  77         return this;
  78     }
  79 
  80     public static class BelowOp extends LowerOp {
  81         @Override
  82         protected CompareNode duplicateModified(ValueNode newX, ValueNode newY, boolean unorderedIsTrue, NodeView view) {
  83             assert newX.stamp(NodeView.DEFAULT) instanceof IntegerStamp && newY.stamp(NodeView.DEFAULT) instanceof IntegerStamp;
  84             return new IntegerBelowNode(newX, newY);
  85         }
  86 
  87         @Override


















  88         protected long upperBound(IntegerStamp stamp) {
  89             return stamp.unsignedUpperBound();
  90         }
  91 
  92         @Override
  93         protected long lowerBound(IntegerStamp stamp) {
  94             return stamp.unsignedLowerBound();
  95         }
  96 
  97         @Override
  98         protected int compare(long a, long b) {
  99             return Long.compareUnsigned(a, b);
 100         }
 101 
 102         @Override
 103         protected long min(long a, long b) {
 104             return NumUtil.minUnsigned(a, b);
 105         }
 106 
 107         @Override




  68     }
  69 
  70     @Override
  71     public Node canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) {
  72         NodeView view = NodeView.from(tool);
  73         ValueNode value = OP.canonical(tool.getConstantReflection(), tool.getMetaAccess(), tool.getOptions(), tool.smallestCompareWidth(), OP.getCondition(), false, forX, forY, view);
  74         if (value != null) {
  75             return value;
  76         }
  77         return this;
  78     }
  79 
  80     public static class BelowOp extends LowerOp {
  81         @Override
  82         protected CompareNode duplicateModified(ValueNode newX, ValueNode newY, boolean unorderedIsTrue, NodeView view) {
  83             assert newX.stamp(NodeView.DEFAULT) instanceof IntegerStamp && newY.stamp(NodeView.DEFAULT) instanceof IntegerStamp;
  84             return new IntegerBelowNode(newX, newY);
  85         }
  86 
  87         @Override
  88         protected LogicNode findSynonym(ValueNode forX, ValueNode forY, NodeView view) {
  89             LogicNode result = super.findSynonym(forX, forY, view);
  90             if (result != null) {
  91                 return result;
  92             }
  93             if (forX.stamp(view) instanceof IntegerStamp) {
  94                 assert forY.stamp(view) instanceof IntegerStamp;
  95                 int bits = ((IntegerStamp) forX.stamp(view)).getBits();
  96                 assert ((IntegerStamp) forY.stamp(view)).getBits() == bits;
  97                 LogicNode logic = canonicalizeRangeFlip(forX, forY, bits, false, view);
  98                 if (logic != null) {
  99                     return logic;
 100                 }
 101             }
 102             return null;
 103         }
 104 
 105         @Override
 106         protected long upperBound(IntegerStamp stamp) {
 107             return stamp.unsignedUpperBound();
 108         }
 109 
 110         @Override
 111         protected long lowerBound(IntegerStamp stamp) {
 112             return stamp.unsignedLowerBound();
 113         }
 114 
 115         @Override
 116         protected int compare(long a, long b) {
 117             return Long.compareUnsigned(a, b);
 118         }
 119 
 120         @Override
 121         protected long min(long a, long b) {
 122             return NumUtil.minUnsigned(a, b);
 123         }
 124 
 125         @Override


< prev index next >