<div dir="ltr"><div>Yes, I'll remove this patch.</div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Jan 13, 2019 at 10:17 AM Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl">bas@basnieuwenhuizen.nl</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">I think this is done with<br>
<br>
<a href="https://patchwork.freedesktop.org/series/55025/" rel="noreferrer" target="_blank">https://patchwork.freedesktop.org/series/55025/</a><br>
<br>
?<br>
<br>
On Sat, Jan 12, 2019 at 12:53 AM Marek Olšák <<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>> wrote:<br>
><br>
> From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
><br>
> ---<br>
>  src/amd/common/ac_llvm_build.c                 | 18 +++++++++++++-----<br>
>  .../drivers/radeonsi/si_shader_tgsi_mem.c      |  4 ++--<br>
>  2 files changed, 15 insertions(+), 7 deletions(-)<br>
><br>
> diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c<br>
> index 76047148a6a..c0d90ada2be 100644<br>
> --- a/src/amd/common/ac_llvm_build.c<br>
> +++ b/src/amd/common/ac_llvm_build.c<br>
> @@ -1234,25 +1234,33 @@ ac_build_buffer_load(struct ac_llvm_context *ctx,<br>
>         if (allow_smem && !glc && !slc) {<br>
>                 assert(vindex == NULL);<br>
><br>
>                 LLVMValueRef result[8];<br>
><br>
>                 for (int i = 0; i < num_channels; i++) {<br>
>                         if (i) {<br>
>                                 offset = LLVMBuildAdd(ctx->builder, offset,<br>
>                                                       LLVMConstInt(ctx->i32, 4, 0), "");<br>
>                         }<br>
> -                       LLVMValueRef args[2] = {rsrc, offset};<br>
> -                       result[i] = ac_build_intrinsic(ctx, "llvm.SI.load.const.v4i32",<br>
> -                                                      ctx->f32, args, 2,<br>
> -                                                      AC_FUNC_ATTR_READNONE |<br>
> -                                                      AC_FUNC_ATTR_LEGACY);<br>
> +<br>
> +                       if (HAVE_LLVM >= 0x0800) {<br>
> +                               LLVMValueRef args[3] = {rsrc, offset, ctx->i32_0};<br>
> +                               result[i] = ac_build_intrinsic(ctx, "llvm.amdgcn.s.buffer.load.i32",<br>
> +                                                              ctx->f32, args, 3,<br>
> +                                                              AC_FUNC_ATTR_READNONE);<br>
> +                       } else {<br>
> +                               LLVMValueRef args[2] = {rsrc, offset};<br>
> +                               result[i] = ac_build_intrinsic(ctx, "llvm.SI.load.const.v4i32",<br>
> +                                                              ctx->f32, args, 2,<br>
> +                                                              AC_FUNC_ATTR_READNONE |<br>
> +                                                              AC_FUNC_ATTR_LEGACY);<br>
> +                       }<br>
>                 }<br>
>                 if (num_channels == 1)<br>
>                         return result[0];<br>
><br>
>                 if (num_channels == 3)<br>
>                         result[num_channels++] = LLVMGetUndef(ctx->f32);<br>
>                 return ac_build_gather_values(ctx, result, num_channels);<br>
>         }<br>
><br>
>         return ac_build_buffer_load_common(ctx, rsrc, vindex, offset,<br>
> diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
> index 727def56f65..2f49685c642 100644<br>
> --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
> +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c<br>
> @@ -533,24 +533,24 @@ static void load_emit(<br>
>                                                 info->images_store |<br>
>                                                 info->images_atomic,<br>
>                                                 info->uses_bindless_buffer_store |<br>
>                                                 info->uses_bindless_buffer_atomic,<br>
>                                                 info->uses_bindless_image_store |<br>
>                                                 info->uses_bindless_image_atomic);<br>
>         args.cache_policy = get_cache_policy(ctx, inst, false, false, false);<br>
><br>
>         if (inst->Src[0].Register.File == TGSI_FILE_BUFFER) {<br>
>                 /* Don't use SMEM for shader buffer loads, because LLVM doesn't<br>
> -                * select SMEM for SI.load.const with a non-constant offset, and<br>
> +                * select SMEM for amdgcn.s.buffer.load with a non-constant offset, and<br>
>                  * constant offsets practically don't exist with shader buffers.<br>
>                  *<br>
> -                * Also, SI.load.const doesn't use inst_offset when it's lowered<br>
> +                * Also, amdgcn.s.buffer.load doesn't use inst_offset when it's lowered<br>
>                  * to VMEM, so we just end up with more VALU instructions in the end<br>
>                  * and no benefit.<br>
>                  *<br>
>                  * TODO: Remove this line once LLVM can select SMEM with a non-constant<br>
>                  *       offset, and can derive inst_offset when VMEM is selected.<br>
>                  *       After that, si_memory_barrier should invalidate sL1 for shader<br>
>                  *       buffers.<br>
>                  */<br>
>                 emit_data->output[emit_data->chan] =<br>
>                         ac_build_buffer_load(&ctx->ac, args.resource,<br>
> --<br>
> 2.17.1<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><br>
</blockquote></div>