From: Matthew Nicholls Date: Wed, 25 Oct 2017 13:20:43 +0000 (+0100) Subject: ac/nir: generate correct instruction for atomic min/max on unsigned images X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=27a0b24bf238342031e0709584e4d71ab228f1ec;p=mesa.git ac/nir: generate correct instruction for atomic min/max on unsigned images v2: fix silly typo Cc: "17.2 17.3" Reviewed-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 3d635d42064..06937d684be 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -3667,15 +3667,17 @@ static LLVMValueRef visit_image_atomic(struct ac_nir_context *ctx, LLVMValueRef i1true = LLVMConstInt(ctx->ac.i1, 1, false); MAYBE_UNUSED int length; + bool is_unsigned = glsl_get_sampler_result_type(type) == GLSL_TYPE_UINT; + switch (instr->intrinsic) { case nir_intrinsic_image_atomic_add: atomic_name = "add"; break; case nir_intrinsic_image_atomic_min: - atomic_name = "smin"; + atomic_name = is_unsigned ? "umin" : "smin"; break; case nir_intrinsic_image_atomic_max: - atomic_name = "smax"; + atomic_name = is_unsigned ? "umax" : "smax"; break; case nir_intrinsic_image_atomic_and: atomic_name = "and";