public abstract class AbstractNormalizeCompareNode extends BinaryNode implements IterableNodeType
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
static NodeClass<AbstractNormalizeCompareNode> |
TYPE |
x, yEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
AbstractNormalizeCompareNode(NodeClass<? extends BinaryNode> c,
JavaKind kind,
ValueNode x,
ValueNode y) |
| Modifier and Type | Method and Description |
|---|---|
abstract LogicNode |
createEqualComparison() |
abstract LogicNode |
createEqualComparison(ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Integer smallestCompareWidth,
NodeView view) |
LogicNode |
createLowerComparison() |
abstract LogicNode |
createLowerComparison(boolean swapInputs) |
abstract LogicNode |
createLowerComparison(boolean swapInputs,
ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Integer smallestCompareWidth,
NodeView view) |
LogicNode |
createLowerComparison(ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Integer smallestCompareWidth,
NodeView view) |
Stamp |
foldStamp(Stamp stampX,
Stamp stampY)
Compute an improved for this node using the passed in stamps.
|
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
protected static ValueNode |
tryConstantFold(ValueNode x,
ValueNode y,
boolean isUnorderedLess,
boolean unsigned,
JavaKind kind,
ConstantReflectionProvider constantReflection) |
getX, getY, setX, setYasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitcanonical, canonicalpublic static final NodeClass<AbstractNormalizeCompareNode> TYPE
public AbstractNormalizeCompareNode(NodeClass<? extends BinaryNode> c, JavaKind kind, ValueNode x, ValueNode y)
public boolean inferStamp()
ValueNodeValueNode if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp), whose return value can be used as the result of this
method.inferStamp in class BinaryNodepublic Stamp foldStamp(Stamp stampX, Stamp stampY)
BinaryNodeBinaryNode.x and BinaryNode.y. This code is used to provide the
default implementation of BinaryNode.inferStamp() and may be used by external optimizations.foldStamp in class BinaryNodeprotected static ValueNode tryConstantFold(ValueNode x, ValueNode y, boolean isUnorderedLess, boolean unsigned, JavaKind kind, ConstantReflectionProvider constantReflection)
public abstract LogicNode createEqualComparison()
public abstract LogicNode createEqualComparison(ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, NodeView view)
public LogicNode createLowerComparison()
public LogicNode createLowerComparison(ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, NodeView view)
public abstract LogicNode createLowerComparison(boolean swapInputs)
public abstract LogicNode createLowerComparison(boolean swapInputs, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, NodeView view)