<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 16, 2019 at 10:34 AM Marek Olšák <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 16, 2019 at 4:35 AM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Except compare&swap which is still buggy.<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/common/ac_nir_to_llvm.c | 11 ++++++++---<br>
 1 file changed, 8 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c<br>
index de2a9ed8f67..26ad30387a9 100644<br>
--- a/src/amd/common/ac_nir_to_llvm.c<br>
+++ b/src/amd/common/ac_nir_to_llvm.c<br>
@@ -1643,8 +1643,9 @@ static void visit_store_ssbo(struct ac_nir_context *ctx,<br>
 static LLVMValueRef visit_atomic_ssbo(struct ac_nir_context *ctx,<br>
                                       const nir_intrinsic_instr *instr)<br>
 {<br>
+       LLVMTypeRef return_type = LLVMTypeOf(get_src(ctx, instr->src[2]));<br>
        const char *op;<br>
-       char name[64];<br>
+       char name[64], type[8];<br>
        LLVMValueRef params[6];<br>
        int arg_count = 0;<br>
<br>
@@ -1697,18 +1698,22 @@ static LLVMValueRef visit_atomic_ssbo(struct ac_nir_context *ctx,<br>
                params[arg_count++] = ctx->ac.i32_0; /* soffset */<br>
                params[arg_count++] = ctx->ac.i32_0; /* slc */<br>
<br>
+</blockquote><div><br></div><div>The extra empty line is unnecessary.</div></div></div></blockquote><div><br></div><div>Other than that, the first 2 patches are:</div><div><br></div><div>Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>></div><div><br></div><div>Marek<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>Marek</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+               ac_build_type_name_for_intr(return_type, type, sizeof(type));<br>
                snprintf(name, sizeof(name),<br>
-                        "llvm.amdgcn.raw.buffer.atomic.%s.i32", op);<br>
+                        "llvm.amdgcn.raw.buffer.atomic.%s.%s", op, type);<br>
        } else {<br>
                params[arg_count++] = ctx->ac.i32_0; /* vindex */<br>
                params[arg_count++] = get_src(ctx, instr->src[1]); /* voffset */<br>
                params[arg_count++] = ctx->ac.i1false; /* slc */<br>
<br>
+               assert(return_type == ctx->ac.i32);<br>
                snprintf(name, sizeof(name),<br>
                         "llvm.amdgcn.buffer.atomic.%s", op);<br>
        }<br>
<br>
-       return ac_build_intrinsic(&ctx->ac, name, ctx->ac.i32, params, arg_count, 0);<br>
+       return ac_build_intrinsic(&ctx->ac, name, return_type, params,<br>
+                                 arg_count, 0);<br>
 }<br>
<br>
 static LLVMValueRef visit_load_buffer(struct ac_nir_context *ctx,<br>
-- <br>
2.21.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div></div>
</blockquote></div></div>