public static class AArch64AtomicMove.CompareAndSwapOp extends AArch64LIRInstruction
CAS(newVal, expected, address):
oldVal = *address
if oldVal == expected:
*address = newVal
return oldVal
LIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use| Modifier and Type | Field and Description |
|---|---|
protected AllocatableValue |
addressValue |
protected Value |
expectedValue |
protected AllocatableValue |
newValue |
protected AllocatableValue |
resultValue |
static LIRInstructionClass<AArch64AtomicMove.CompareAndSwapOp> |
TYPE |
ADDRESS_FLAGS, ALLOWED_FLAGS| Constructor and Description |
|---|
CompareAndSwapOp(AArch64Kind accessKind,
MemoryOrderMode memoryOrder,
boolean setConditionFlags,
AllocatableValue result,
Value expectedValue,
AllocatableValue newValue,
AllocatableValue addressValue) |
| Modifier and Type | Method and Description |
|---|---|
void |
emitCode(CompilationResultBuilder crb,
AArch64MacroAssembler masm) |
emitCodeaddStackSlotsToTemporaries, 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, needsClearUpperVectorRegisters, setComment, setId, setPosition, toString, toString, toStringWithIdPrefix, verify, visitEachAlive, visitEachAlive, visitEachInput, visitEachInput, visitEachOutput, visitEachOutput, visitEachState, visitEachState, visitEachTemp, visitEachTemppublic static final LIRInstructionClass<AArch64AtomicMove.CompareAndSwapOp> TYPE
protected AllocatableValue resultValue
protected Value expectedValue
protected AllocatableValue newValue
protected AllocatableValue addressValue
public CompareAndSwapOp(AArch64Kind accessKind,
MemoryOrderMode memoryOrder,
boolean setConditionFlags,
AllocatableValue result,
Value expectedValue,
AllocatableValue newValue,
AllocatableValue addressValue)
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm)
emitCode in class AArch64LIRInstruction