ac/nir: fix atomic compare-and-swap
The LLVM instruction returns { i32, i1 }, where the i1 indicates success. We're only interested in the first part, which is the loaded value. Fixes dEQP-GLES31.functional.compute.shared_var.atomic.compswap.* Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
@@ -2631,6 +2631,7 @@ static LLVMValueRef visit_var_atomic(struct ac_nir_context *ctx,
|
|||||||
LLVMAtomicOrderingSequentiallyConsistent,
|
LLVMAtomicOrderingSequentiallyConsistent,
|
||||||
LLVMAtomicOrderingSequentiallyConsistent,
|
LLVMAtomicOrderingSequentiallyConsistent,
|
||||||
false);
|
false);
|
||||||
|
result = LLVMBuildExtractValue(ctx->ac.builder, result, 0, "");
|
||||||
} else {
|
} else {
|
||||||
LLVMAtomicRMWBinOp op;
|
LLVMAtomicRMWBinOp op;
|
||||||
switch (instr->intrinsic) {
|
switch (instr->intrinsic) {
|
||||||
|
Reference in New Issue
Block a user