This reverts commit 78c551aca1c785470e3c0480e33a072b0b5f8928. This patch caused a piglit regression with radeonsi NIR on my VEGA64.
tests/spec/arb_shader_storage_buffer_object/execution/ssbo-atomicAdd-int.shader_test --- src/amd/common/ac_nir_to_llvm.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index de2a9ed8f67..aa85029aed0 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1648,6 +1648,17 @@ static LLVMValueRef visit_atomic_ssbo(struct ac_nir_context *ctx, LLVMValueRef params[6]; int arg_count = 0; + if (instr->intrinsic == nir_intrinsic_ssbo_atomic_comp_swap) { + params[arg_count++] = ac_llvm_extract_elem(&ctx->ac, get_src(ctx, instr->src[3]), 0); + } + params[arg_count++] = ac_llvm_extract_elem(&ctx->ac, get_src(ctx, instr->src[2]), 0); + params[arg_count++] = ctx->abi->load_ssbo(ctx->abi, + get_src(ctx, instr->src[0]), + true); + params[arg_count++] = ctx->ac.i32_0; /* vindex */ + params[arg_count++] = get_src(ctx, instr->src[1]); /* voffset */ + params[arg_count++] = ctx->ac.i1false; /* slc */ + switch (instr->intrinsic) { case nir_intrinsic_ssbo_atomic_add: op = "add"; @@ -1683,27 +1694,11 @@ static LLVMValueRef visit_atomic_ssbo(struct ac_nir_context *ctx, abort(); } - if (instr->intrinsic == nir_intrinsic_ssbo_atomic_comp_swap) { - params[arg_count++] = ac_llvm_extract_elem(&ctx->ac, get_src(ctx, instr->src[3]), 0); - } - params[arg_count++] = ac_llvm_extract_elem(&ctx->ac, get_src(ctx, instr->src[2]), 0); - params[arg_count++] = ctx->abi->load_ssbo(ctx->abi, - get_src(ctx, instr->src[0]), - true); - - if (HAVE_LLVM >= 0x800 && + if (HAVE_LLVM >= 0x900 && instr->intrinsic != nir_intrinsic_ssbo_atomic_comp_swap) { - params[arg_count++] = get_src(ctx, instr->src[1]); /* voffset */ - params[arg_count++] = ctx->ac.i32_0; /* soffset */ - params[arg_count++] = ctx->ac.i32_0; /* slc */ - snprintf(name, sizeof(name), - "llvm.amdgcn.raw.buffer.atomic.%s.i32", op); + "llvm.amdgcn.buffer.atomic.%s.i32", op); } else { - params[arg_count++] = ctx->ac.i32_0; /* vindex */ - params[arg_count++] = get_src(ctx, instr->src[1]); /* voffset */ - params[arg_count++] = ctx->ac.i1false; /* slc */ - snprintf(name, sizeof(name), "llvm.amdgcn.buffer.atomic.%s", op); } -- 2.20.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev