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

2019-02-18 Thread Bas Nieuwenhuizen
Reviewed-by: Bas Nieuwenhuizen 

for both.

On Thu, Feb 14, 2019 at 2:39 PM Samuel Pitoiset
 wrote:
>
> Signed-off-by: Samuel Pitoiset 
> ---
>  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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

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

2019-02-14 Thread Samuel Pitoiset
Signed-off-by: Samuel Pitoiset 
---
 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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev