Search in sources :

Example 1 with CompareAndSwapOp

use of org.graalvm.compiler.lir.sparc.SPARCMove.CompareAndSwapOp in project graal by oracle.

the class SPARCHotSpotLIRGenerator method emitLogicCompareAndSwap.

@Override
public Variable emitLogicCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue) {
    ValueKind<?> kind = newValue.getValueKind();
    assert kind.equals(expectedValue.getValueKind());
    SPARCKind memKind = (SPARCKind) kind.getPlatformKind();
    Variable result = newVariable(newValue.getValueKind());
    append(new CompareAndSwapOp(result, asAllocatable(address), asAllocatable(expectedValue), asAllocatable(newValue)));
    return emitConditionalMove(memKind, expectedValue, result, Condition.EQ, true, trueValue, falseValue);
}
Also used : Variable(org.graalvm.compiler.lir.Variable) CompareAndSwapOp(org.graalvm.compiler.lir.sparc.SPARCMove.CompareAndSwapOp) SPARCKind(jdk.vm.ci.sparc.SPARCKind)

Example 2 with CompareAndSwapOp

use of org.graalvm.compiler.lir.sparc.SPARCMove.CompareAndSwapOp in project graal by oracle.

the class SPARCHotSpotLIRGenerator method emitValueCompareAndSwap.

@Override
public Variable emitValueCompareAndSwap(Value address, Value expectedValue, Value newValue) {
    ValueKind<?> kind = newValue.getValueKind();
    assert kind.equals(expectedValue.getValueKind());
    Variable result = newVariable(newValue.getValueKind());
    append(new CompareAndSwapOp(result, asAllocatable(address), asAllocatable(expectedValue), asAllocatable(newValue)));
    return result;
}
Also used : Variable(org.graalvm.compiler.lir.Variable) CompareAndSwapOp(org.graalvm.compiler.lir.sparc.SPARCMove.CompareAndSwapOp)

Aggregations

Variable (org.graalvm.compiler.lir.Variable)2 CompareAndSwapOp (org.graalvm.compiler.lir.sparc.SPARCMove.CompareAndSwapOp)2 SPARCKind (jdk.vm.ci.sparc.SPARCKind)1