public abstract class CompareNode extends BinaryOpLogicNode implements Canonicalizable.Binary<ValueNode>
| Modifier and Type | Class and Description |
|---|---|
static class |
CompareNode.CompareOp |
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 |
|---|---|
protected CanonicalCondition |
condition |
static NodeClass<CompareNode> |
TYPE |
protected boolean |
unorderedIsTrue |
x, yEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
CompareNode(NodeClass<? extends CompareNode> c,
CanonicalCondition condition,
boolean unorderedIsTrue,
ValueNode x,
ValueNode y)
Constructs a new Compare instruction.
|
| Modifier and Type | Method and Description |
|---|---|
CanonicalCondition |
condition()
Gets the condition (comparison operation) for this instruction.
|
static LogicNode |
createAnyCompareNode(Condition condition,
ValueNode x,
ValueNode y,
ConstantReflectionProvider constantReflection) |
static LogicNode |
createCompareNode(CanonicalCondition condition,
ValueNode x,
ValueNode y,
ConstantReflectionProvider constantReflection,
NodeView view) |
static LogicNode |
createCompareNode(ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Integer smallestCompareWidth,
CanonicalCondition condition,
ValueNode x,
ValueNode y,
NodeView view) |
static LogicNode |
createCompareNode(StructuredGraph graph,
CanonicalCondition condition,
ValueNode x,
ValueNode y,
ConstantReflectionProvider constantReflection,
NodeView view) |
static LogicNode |
createCompareNode(StructuredGraph graph,
ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Integer smallestCompareWidth,
CanonicalCondition condition,
ValueNode x,
ValueNode y,
NodeView view) |
static LogicNode |
createFloatCompareNode(CanonicalCondition condition,
ValueNode x,
ValueNode y,
boolean unorderedIsTrue,
NodeView view) |
static LogicNode |
createFloatCompareNode(StructuredGraph graph,
CanonicalCondition condition,
ValueNode x,
ValueNode y,
boolean unorderedIsTrue,
NodeView view) |
boolean |
implies(CompareNode otherCompare,
boolean otherNegated,
boolean thisNegated) |
boolean |
implies(LogicNode otherLogicNode,
boolean thisNegated) |
boolean |
isIdentityComparison()
Does this operation represent an identity check such that for x == y, x is exactly the same
thing as y.
|
static LogicNode |
tryConstantFold(CanonicalCondition condition,
ValueNode forX,
ValueNode forY,
ConstantReflectionProvider constantReflection,
boolean unorderedIsTrue) |
static LogicNode |
tryConstantFoldPrimitive(CanonicalCondition condition,
ValueNode forX,
ValueNode forY,
boolean unorderedIsTrue,
NodeView view) |
boolean |
unorderedIsTrue()
Checks whether unordered inputs mean true or false (only applies to float operations).
|
generate, getSucceedingStampForX, getSucceedingStampForY, getX, getY, maybeCommuteInputs, tryFold, verifyand, and, implies, isContradiction, isTautology, or, orasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, 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, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitcanonical, canonical, getX, getYpublic static final NodeClass<CompareNode> TYPE
protected final CanonicalCondition condition
protected final boolean unorderedIsTrue
protected CompareNode(NodeClass<? extends CompareNode> c, CanonicalCondition condition, boolean unorderedIsTrue, ValueNode x, ValueNode y)
x - the instruction producing the first input to the instructiony - the instruction that produces the second input to this instructionpublic final CanonicalCondition condition()
public final boolean unorderedIsTrue()
true if unordered inputs produce truepublic static LogicNode tryConstantFold(CanonicalCondition condition, ValueNode forX, ValueNode forY, ConstantReflectionProvider constantReflection, boolean unorderedIsTrue)
public static LogicNode tryConstantFoldPrimitive(CanonicalCondition condition, ValueNode forX, ValueNode forY, boolean unorderedIsTrue, NodeView view)
public boolean isIdentityComparison()
public static LogicNode createCompareNode(StructuredGraph graph, CanonicalCondition condition, ValueNode x, ValueNode y, ConstantReflectionProvider constantReflection, NodeView view)
public static LogicNode createCompareNode(CanonicalCondition condition, ValueNode x, ValueNode y, ConstantReflectionProvider constantReflection, NodeView view)
public static LogicNode createCompareNode(StructuredGraph graph, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, CanonicalCondition condition, ValueNode x, ValueNode y, NodeView view)
public static LogicNode createAnyCompareNode(Condition condition, ValueNode x, ValueNode y, ConstantReflectionProvider constantReflection)
public boolean implies(LogicNode otherLogicNode, boolean thisNegated)
public boolean implies(CompareNode otherCompare, boolean otherNegated, boolean thisNegated)
public static LogicNode createCompareNode(ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Integer smallestCompareWidth, CanonicalCondition condition, ValueNode x, ValueNode y, NodeView view)
public static LogicNode createFloatCompareNode(StructuredGraph graph, CanonicalCondition condition, ValueNode x, ValueNode y, boolean unorderedIsTrue, NodeView view)
public static LogicNode createFloatCompareNode(CanonicalCondition condition, ValueNode x, ValueNode y, boolean unorderedIsTrue, NodeView view)