public final class AMD64ArrayEqualsOp extends AMD64ComplexVectorOp
byte[] and
char[]) with on-the-fly sign- or zero-extension.LIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use| Modifier and Type | Field and Description |
|---|---|
static LIRInstructionClass<AMD64ArrayEqualsOp> |
TYPE |
targetDescription, vectorSizeADDRESS_FLAGS, ALLOWED_FLAGS| Modifier and Type | Method and Description |
|---|---|
static boolean |
canGenerateConstantLengthCompare(TargetDescription target,
JavaKind kindA,
JavaKind kindB,
int constantLength,
AVXKind.AVXSize vectorSize) |
void |
emitCode(CompilationResultBuilder crb,
AMD64MacroAssembler masm) |
static AMD64Address.Scale |
max(AMD64Address.Scale a,
AMD64Address.Scale b) |
static AMD64ArrayEqualsOp |
movParamsAndCreate(LIRGeneratorTool tool,
int baseOffsetA,
int baseOffsetB,
int baseOffsetMask,
Value result,
Value arrayA,
Value offsetA,
Value arrayB,
Value offsetB,
Value mask,
Value length,
Value dynamicStrides,
AMD64MacroAssembler.ExtendMode extendMode) |
static AMD64ArrayEqualsOp |
movParamsAndCreate(LIRGeneratorTool tool,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
int baseOffsetA,
int baseOffsetB,
int baseOffsetMask,
Value result,
Value arrayA,
Value offsetA,
Value arrayB,
Value offsetB,
Value mask,
Value length,
AMD64MacroAssembler.ExtendMode extendMode) |
static AMD64ArrayEqualsOp |
movParamsAndCreate(LIRGeneratorTool tool,
JavaKind strideA,
JavaKind strideB,
JavaKind strideMask,
int baseOffsetA,
int baseOffsetB,
int baseOffsetMask,
Value result,
Value arrayA,
Value offsetA,
Value arrayB,
Value offsetB,
Value arrayMask,
Value length,
Value dynamicStrides,
AMD64MacroAssembler.ExtendMode extendMode)
Compares array regions of length
length in arrayA and arrayB,
starting at byte offset offsetA and offsetB, respectively. |
getVectorKind, needsClearUpperVectorRegisters, supports, supportsAVX2AndYMM, supportsAVX512VLBW, supportsAVX512VLBWAndZMM, supportsBMI2emitCodeaddStackSlotsToTemporaries, destroysCallerSavedRegisters, forEachAlive, forEachAlive, forEachInput, forEachInput, forEachOutput, forEachOutput, forEachRegisterHint, forEachRegisterHint, forEachState, forEachState, forEachState, forEachState, forEachTemp, forEachTemp, getComment, getLIRInstructionClass, getPosition, hashCode, hasOperands, hasState, id, isLoadConstantOp, isMoveOp, isValueMoveOp, name, setComment, setId, setPosition, toString, toString, toStringWithIdPrefix, verify, visitEachAlive, visitEachAlive, visitEachInput, visitEachInput, visitEachOutput, visitEachOutput, visitEachState, visitEachState, visitEachTemp, visitEachTemppublic static final LIRInstructionClass<AMD64ArrayEqualsOp> TYPE
public static AMD64ArrayEqualsOp movParamsAndCreate(LIRGeneratorTool tool, int baseOffsetA, int baseOffsetB, int baseOffsetMask, Value result, Value arrayA, Value offsetA, Value arrayB, Value offsetB, Value mask, Value length, Value dynamicStrides, AMD64MacroAssembler.ExtendMode extendMode)
public static AMD64ArrayEqualsOp movParamsAndCreate(LIRGeneratorTool tool, JavaKind strideA, JavaKind strideB, JavaKind strideMask, int baseOffsetA, int baseOffsetB, int baseOffsetMask, Value result, Value arrayA, Value offsetA, Value arrayB, Value offsetB, Value mask, Value length, AMD64MacroAssembler.ExtendMode extendMode)
public static AMD64ArrayEqualsOp movParamsAndCreate(LIRGeneratorTool tool, JavaKind strideA, JavaKind strideB, JavaKind strideMask, int baseOffsetA, int baseOffsetB, int baseOffsetMask, Value result, Value arrayA, Value offsetA, Value arrayB, Value offsetB, Value arrayMask, Value length, Value dynamicStrides, AMD64MacroAssembler.ExtendMode extendMode)
length in arrayA and arrayB,
starting at byte offset offsetA and offsetB, respectively. If
arrayMask is not null, it is OR-ed with arrayA before comparison with
arrayB.strideA - element size of arrayA. May be null if dynamicStrides
is used.strideB - element size of arrayB. May be null if dynamicStrides
is used.strideMask - element size of mask. May be null if dynamicStrides
is used.offsetA - byte offset to be added to arrayA.offsetB - byte offset to be added to arrayB.length - length (number of array slots in respective array's stride) of the region to
compare.dynamicStrides - dynamic stride dispatch as described in StrideUtil.extendMode - integer extension mode for the array with the smaller element size.public static boolean canGenerateConstantLengthCompare(TargetDescription target,
JavaKind kindA,
JavaKind kindB,
int constantLength,
AVXKind.AVXSize vectorSize)
public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm)
emitCode in class AMD64LIRInstructionpublic static AMD64Address.Scale max(AMD64Address.Scale a, AMD64Address.Scale b)