From b819ba949b4f5aeef6f6b200247f9ec801774a54 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 4 May 2020 10:55:08 -0400 Subject: [PATCH] ac/nir: remove type and num_channels args from ac_build_buffer_store_common They were only used for type overloading where we can just use the type of data. Part-of: --- src/amd/llvm/ac_llvm_build.c | 20 +++++-------------- src/amd/llvm/ac_llvm_build.h | 1 - src/amd/llvm/ac_nir_to_llvm.c | 3 +-- .../radeonsi/si_compute_prim_discard.c | 2 +- 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index 6b8e2a98b58..5483b3146c0 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -1183,8 +1183,6 @@ ac_build_buffer_store_common(struct ac_llvm_context *ctx, LLVMValueRef vindex, LLVMValueRef voffset, LLVMValueRef soffset, - unsigned num_channels, - LLVMTypeRef return_channel_type, unsigned cache_policy, bool use_format, bool structurized) @@ -1198,12 +1196,10 @@ ac_build_buffer_store_common(struct ac_llvm_context *ctx, args[idx++] = voffset ? voffset : ctx->i32_0; args[idx++] = soffset ? soffset : ctx->i32_0; args[idx++] = LLVMConstInt(ctx->i32, cache_policy, 0); - unsigned func = !ac_has_vec3_support(ctx->chip_class, use_format) && num_channels == 3 ? 4 : num_channels; const char *indexing_kind = structurized ? "struct" : "raw"; char name[256], type_name[8]; - LLVMTypeRef type = func > 1 ? LLVMVectorType(return_channel_type, func) : return_channel_type; - ac_build_type_name_for_intr(type, type_name, sizeof(type_name)); + ac_build_type_name_for_intr(LLVMTypeOf(data), type_name, sizeof(type_name)); if (use_format) { snprintf(name, sizeof(name), "llvm.amdgcn.%s.buffer.store.format.%s", @@ -1223,13 +1219,10 @@ ac_build_buffer_store_format(struct ac_llvm_context *ctx, LLVMValueRef data, LLVMValueRef vindex, LLVMValueRef voffset, - unsigned num_channels, unsigned cache_policy) { - ac_build_buffer_store_common(ctx, rsrc, data, vindex, - voffset, NULL, num_channels, - ctx->f32, cache_policy, - true, true); + ac_build_buffer_store_common(ctx, rsrc, data, vindex, voffset, NULL, + cache_policy, true, true); } /* TBUFFER_STORE_FORMAT_{X,XY,XYZ,XYZW} <- the suffix is selected by num_channels=1..4. @@ -1278,7 +1271,6 @@ ac_build_buffer_store_dword(struct ac_llvm_context *ctx, ac_build_buffer_store_common(ctx, rsrc, ac_to_float(ctx, vdata), ctx->i32_0, voffset, offset, - num_channels, ctx->f32, cache_policy, false, false); return; } @@ -1936,8 +1928,7 @@ ac_build_tbuffer_store_short(struct ac_llvm_context *ctx, if (LLVM_VERSION_MAJOR >= 9) { /* LLVM 9+ supports i8/i16 with struct/raw intrinsics. */ ac_build_buffer_store_common(ctx, rsrc, vdata, NULL, - voffset, soffset, 1, - ctx->i16, cache_policy, + voffset, soffset, cache_policy, false, false); } else { unsigned dfmt = V_008F0C_BUF_DATA_FORMAT_16; @@ -1963,8 +1954,7 @@ ac_build_tbuffer_store_byte(struct ac_llvm_context *ctx, if (LLVM_VERSION_MAJOR >= 9) { /* LLVM 9+ supports i8/i16 with struct/raw intrinsics. */ ac_build_buffer_store_common(ctx, rsrc, vdata, NULL, - voffset, soffset, 1, - ctx->i8, cache_policy, + voffset, soffset, cache_policy, false, false); } else { unsigned dfmt = V_008F0C_BUF_DATA_FORMAT_8; diff --git a/src/amd/llvm/ac_llvm_build.h b/src/amd/llvm/ac_llvm_build.h index edaedab4d97..ceebd3bb2ce 100644 --- a/src/amd/llvm/ac_llvm_build.h +++ b/src/amd/llvm/ac_llvm_build.h @@ -318,7 +318,6 @@ ac_build_buffer_store_format(struct ac_llvm_context *ctx, LLVMValueRef data, LLVMValueRef vindex, LLVMValueRef voffset, - unsigned num_channels, unsigned cache_policy); LLVMValueRef diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index e0728822800..01040dc3506 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -2857,8 +2857,7 @@ static void visit_image_store(struct ac_nir_context *ctx, ctx->ac.i32_0, ""); ac_build_buffer_store_format(&ctx->ac, rsrc, src, vindex, - ctx->ac.i32_0, src_channels, - args.cache_policy); + ctx->ac.i32_0, args.cache_policy); } else { bool level_zero = nir_src_is_const(instr->src[4]) && nir_src_as_uint(instr->src[4]) == 0; diff --git a/src/gallium/drivers/radeonsi/si_compute_prim_discard.c b/src/gallium/drivers/radeonsi/si_compute_prim_discard.c index 389233835eb..09a2d904a2b 100644 --- a/src/gallium/drivers/radeonsi/si_compute_prim_discard.c +++ b/src/gallium/drivers/radeonsi/si_compute_prim_discard.c @@ -825,7 +825,7 @@ void si_build_prim_discard_compute_shader(struct si_shader_context *ctx) if (!ac_has_vec3_support(ctx->ac.chip_class, true)) vdata = ac_build_expand_to_vec4(&ctx->ac, vdata, 3); - ac_build_buffer_store_format(&ctx->ac, output_indexbuf, vdata, vindex, ctx->ac.i32_0, 3, + ac_build_buffer_store_format(&ctx->ac, output_indexbuf, vdata, vindex, ctx->ac.i32_0, ac_glc | (INDEX_STORES_USE_SLC ? ac_slc : 0)); } ac_build_endif(&ctx->ac, 16607); -- 2.30.2