public final class AMD64ArrayRegionEqualsWithMaskNode extends FixedWithNextNode implements Canonicalizable, LIRLowerable, MemoryAccess, ConstantReflectionUtil.ArrayBaseOffsetProvider
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 ValueNode |
arrayA |
protected ValueNode |
arrayB |
protected ValueNode |
arrayMask |
protected ValueNode |
dynamicStrides
Optional argument for dispatching to any combination of strides at runtime, as described in
StrideUtil. |
protected ValueNode |
length |
protected ValueNode |
offsetA |
protected ValueNode |
offsetB |
static NodeClass<AMD64ArrayRegionEqualsWithMaskNode> |
TYPE |
nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
AMD64ArrayRegionEqualsWithMaskNode(JavaKind arrayKind,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
org.graalvm.word.LocationIdentity locationIdentity,
ValueNode arrayA,
ValueNode offsetA,
ValueNode arrayB,
ValueNode offsetB,
ValueNode arrayMask,
ValueNode length,
ValueNode dynamicStrides) |
AMD64ArrayRegionEqualsWithMaskNode(JavaKind arrayKind,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
ValueNode arrayA,
ValueNode offsetA,
ValueNode arrayB,
ValueNode offsetB,
ValueNode arrayMask,
ValueNode length) |
AMD64ArrayRegionEqualsWithMaskNode(ValueNode arrayA,
ValueNode offsetA,
ValueNode arrayB,
ValueNode offsetB,
ValueNode arrayMask,
ValueNode length,
ValueNode dynamicStrides) |
| Modifier and Type | Method and Description |
|---|---|
ValueNode |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
void |
generate(NodeLIRBuilderTool gen) |
int |
getArrayBaseOffset(MetaAccessProvider metaAccess,
ValueNode array,
JavaKind elementKind) |
JavaKind |
getArrayKind() |
int |
getDirectStubCallIndex() |
ValueNode |
getDynamicStrides() |
MemoryKill |
getLastLocationAccess() |
ValueNode |
getLength() |
org.graalvm.word.LocationIdentity |
getLocationIdentity() |
JavaKind |
getStrideA() |
JavaKind |
getStrideB() |
JavaKind |
getStrideMask() |
static boolean |
regionEquals(JavaKind arrayKind,
JavaKind kind1,
JavaKind kind2,
JavaKind kindMask,
Object array1,
long offset1,
Object array2,
long offset2,
Object mask,
int length) |
static boolean |
regionEquals(Object array1,
long offset1,
Object array2,
long offset2,
Object mask,
int length,
int stride) |
void |
setLastLocationAccess(MemoryKill lla) |
asFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, 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, waitasNodeasFixedNodepublic static final NodeClass<AMD64ArrayRegionEqualsWithMaskNode> TYPE
protected ValueNode arrayA
protected ValueNode offsetA
protected ValueNode arrayB
protected ValueNode offsetB
protected ValueNode arrayMask
protected ValueNode length
protected ValueNode dynamicStrides
StrideUtil. When this parameter is used,
AMD64ArrayRegionEqualsWithMaskNode.strideMask is assumed to be equal to AMD64ArrayRegionEqualsWithMaskNode.strideB.public AMD64ArrayRegionEqualsWithMaskNode(JavaKind arrayKind,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
ValueNode arrayA,
ValueNode offsetA,
ValueNode arrayB,
ValueNode offsetB,
ValueNode arrayMask,
ValueNode length)
public AMD64ArrayRegionEqualsWithMaskNode(ValueNode arrayA, ValueNode offsetA, ValueNode arrayB, ValueNode offsetB, ValueNode arrayMask, ValueNode length, ValueNode dynamicStrides)
public AMD64ArrayRegionEqualsWithMaskNode(JavaKind arrayKind,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
org.graalvm.word.LocationIdentity locationIdentity,
ValueNode arrayA,
ValueNode offsetA,
ValueNode arrayB,
ValueNode offsetB,
ValueNode arrayMask,
ValueNode length,
ValueNode dynamicStrides)
public JavaKind getArrayKind()
public JavaKind getStrideA()
public JavaKind getStrideB()
public JavaKind getStrideMask()
public ValueNode getDynamicStrides()
public ValueNode getLength()
public int getDirectStubCallIndex()
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic int getArrayBaseOffset(MetaAccessProvider metaAccess,
ValueNode array,
JavaKind elementKind)
getArrayBaseOffset in interface ConstantReflectionUtil.ArrayBaseOffsetProviderpublic org.graalvm.word.LocationIdentity getLocationIdentity()
getLocationIdentity in interface MemoryAccesspublic MemoryKill getLastLocationAccess()
getLastLocationAccess in interface MemoryAccesspublic void setLastLocationAccess(MemoryKill lla)
setLastLocationAccess in interface MemoryAccesslla - the MemoryKill that represents the last kill of the
LocationIdentity returned by MemoryAccess.getLocationIdentity()public static boolean regionEquals(JavaKind arrayKind,
JavaKind kind1,
JavaKind kind2,
JavaKind kindMask,
Object array1,
long offset1,
Object array2,
long offset2,
Object mask,
int length)
public static boolean regionEquals(Object array1, long offset1, Object array2, long offset2, Object mask, int length, int stride)
public ValueNode canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProvider