[Mesa-dev] [PATCH 2/2] ac: use new LLVM 8 intrinsic when loading 16-bit values

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Feb 18 10:35:00 UTC 2019


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

for both.

On Thu, Feb 14, 2019 at 2:39 PM Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/common/ac_llvm_build.c | 41 ++++++++++++++++++++++------------
>  1 file changed, 27 insertions(+), 14 deletions(-)
>
> diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
> index 3acf41728ac..867a13622f9 100644
> --- a/src/amd/common/ac_llvm_build.c
> +++ b/src/amd/common/ac_llvm_build.c
> @@ -1347,20 +1347,33 @@ ac_build_tbuffer_load_short(struct ac_llvm_context *ctx,
>                                 LLVMValueRef immoffset,
>                                 LLVMValueRef glc)
>  {
> -       const char *name = "llvm.amdgcn.tbuffer.load.i32";
> -       LLVMTypeRef type = ctx->i32;
> -       LLVMValueRef params[] = {
> -                               rsrc,
> -                               vindex,
> -                               voffset,
> -                               soffset,
> -                               immoffset,
> -                               LLVMConstInt(ctx->i32, V_008F0C_BUF_DATA_FORMAT_16, false),
> -                               LLVMConstInt(ctx->i32, V_008F0C_BUF_NUM_FORMAT_UINT, false),
> -                               glc,
> -                               ctx->i1false,
> -       };
> -       LLVMValueRef res = ac_build_intrinsic(ctx, name, type, params, 9, 0);
> +       unsigned dfmt = V_008F0C_BUF_DATA_FORMAT_16;
> +       unsigned nfmt = V_008F0C_BUF_NUM_FORMAT_UINT;
> +       LLVMValueRef res;
> +
> +       if (HAVE_LLVM >= 0x0800) {
> +               voffset = LLVMBuildAdd(ctx->builder, voffset, immoffset, "");
> +
> +               res = ac_build_llvm8_tbuffer_load(ctx, rsrc, vindex, voffset,
> +                                                 soffset, 1, dfmt, nfmt, glc,
> +                                                 false, true, true);
> +       } else {
> +               const char *name = "llvm.amdgcn.tbuffer.load.i32";
> +               LLVMTypeRef type = ctx->i32;
> +               LLVMValueRef params[] = {
> +                                       rsrc,
> +                                       vindex,
> +                                       voffset,
> +                                       soffset,
> +                                       immoffset,
> +                                       LLVMConstInt(ctx->i32, dfmt, false),
> +                                       LLVMConstInt(ctx->i32, nfmt, false),
> +                                       glc,
> +                                       ctx->i1false,
> +               };
> +               res = ac_build_intrinsic(ctx, name, type, params, 9, 0);
> +       }
> +
>         return LLVMBuildTrunc(ctx->builder, res, ctx->i16, "");
>  }
>
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list