public abstract class BinaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Binary<ValueNode>
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
static NodeClass<BinaryOpLogicNode> |
TYPE |
protected ValueNode |
x |
protected ValueNode |
y |
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
BinaryOpLogicNode(NodeClass<? extends BinaryOpLogicNode> c,
ValueNode x,
ValueNode y) |
Modifier and Type | Method and Description |
---|---|
void |
generate(NodeLIRBuilderTool gen) |
abstract Stamp |
getSucceedingStampForX(boolean negated) |
abstract Stamp |
getSucceedingStampForY(boolean negated) |
ValueNode |
getX() |
ValueNode |
getY() |
LogicNode |
maybeCommuteInputs()
Ensure a canonical ordering of inputs for commutative nodes to improve GVN results.
|
abstract jdk.internal.jvmci.meta.TriState |
tryFold(Stamp xStamp,
Stamp yStamp) |
boolean |
verify() |
and, and, isContradiction, isTautology, or, or
asNode
asConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
canonical, canonical
public static final NodeClass<BinaryOpLogicNode> TYPE
public BinaryOpLogicNode(NodeClass<? extends BinaryOpLogicNode> c, ValueNode x, ValueNode y)
public ValueNode getX()
getX
in interface Canonicalizable.Binary<ValueNode>
public ValueNode getY()
getY
in interface Canonicalizable.Binary<ValueNode>
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public LogicNode maybeCommuteInputs()
Node.id
and call Graph.findDuplicate(Node)
on the node
if it's currently in a graph.public abstract Stamp getSucceedingStampForX(boolean negated)
public abstract Stamp getSucceedingStampForY(boolean negated)