diff options
author | Matthew Nicholls <[email protected]> | 2017-10-25 14:20:43 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2017-10-25 20:52:58 +0200 |
commit | 27a0b24bf238342031e0709584e4d71ab228f1ec (patch) | |
tree | a05fc4df0a44f89feaea2599c50c6dc41ad59d97 /src/amd | |
parent | 20c77ae6390451a74e2463f02c49bd7fec3dd29c (diff) |
ac/nir: generate correct instruction for atomic min/max on unsigned images
v2: fix silly typo
Cc: "17.2 17.3" <[email protected]>
Reviewed-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/common/ac_nir_to_llvm.c | 6 |
1 files changed, 4 insertions, 2 deletions
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"; |