For consistency with ac_build_llvm8_buffer_{load,store}_common
helpers and that will help a bit for removing the vec3 restriction.

Signed-off-by: Samuel Pitoiset <[email protected]>
---
 src/amd/common/ac_llvm_build.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 4fdf73c99ba..22b771db774 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -1512,18 +1512,17 @@ ac_build_llvm8_tbuffer_load(struct ac_llvm_context *ctx,
        args[idx++] = soffset ? soffset : ctx->i32_0;
        args[idx++] = LLVMConstInt(ctx->i32, dfmt | (nfmt << 4), 0);
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;
-
-       LLVMTypeRef types[] = {ctx->i32, ctx->v2i32, ctx->v4i32};
-       const char *type_names[] = {"i32", "v2i32", "v4i32"};
+       unsigned func = num_channels == 3 ? 4 : num_channels;
        const char *indexing_kind = structurized ? "struct" : "raw";
-       char name[256];
+       char name[256], type_name[8];
+
+       LLVMTypeRef type = func > 1 ? LLVMVectorType(ctx->i32, func) : ctx->i32;
+       ac_build_type_name_for_intr(type, type_name, sizeof(type_name));
 
        snprintf(name, sizeof(name), "llvm.amdgcn.%s.tbuffer.load.%s",
-                indexing_kind, type_names[func]);
+                indexing_kind, type_name);
 
-       return ac_build_intrinsic(ctx, name, types[func], args,
-                                 idx,
+       return ac_build_intrinsic(ctx, name, type, args, idx,
                                  ac_get_load_intr_attribs(can_speculate));
 }
 
@@ -1699,14 +1698,15 @@ ac_build_llvm8_tbuffer_store(struct ac_llvm_context 
*ctx,
        args[idx++] = soffset ? soffset : ctx->i32_0;
        args[idx++] = LLVMConstInt(ctx->i32, dfmt | (nfmt << 4), 0);
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;
-
-       const char *type_names[] = {"i32", "v2i32", "v4i32"};
+       unsigned func = num_channels == 3 ? 4 : num_channels;
        const char *indexing_kind = structurized ? "struct" : "raw";
-       char name[256];
+       char name[256], type_name[8];
+
+       LLVMTypeRef type = func > 1 ? LLVMVectorType(ctx->i32, func) : ctx->i32;
+       ac_build_type_name_for_intr(type, type_name, sizeof(type_name));
 
        snprintf(name, sizeof(name), "llvm.amdgcn.%s.tbuffer.store.%s",
-                indexing_kind, type_names[func]);
+                indexing_kind, type_name);
 
        ac_build_intrinsic(ctx, name, ctx->voidt, args, idx,
                           ac_get_store_intr_attribs(writeonly_memory));
-- 
2.21.0

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to