From: Marek Olšák <marek.ol...@amd.com> --- src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c | 30 ++++++----------------- 1 file changed, 7 insertions(+), 23 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c index bd8ecb7..c5b94b9 100644 --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c @@ -407,46 +407,30 @@ static unsigned get_store_intr_attribs(bool writeonly_memory) return writeonly_memory && HAVE_LLVM >= 0x0400 ? LP_FUNC_ATTR_INACCESSIBLE_MEM_ONLY : LP_FUNC_ATTR_WRITEONLY; } static void load_emit_buffer(struct si_shader_context *ctx, struct lp_build_emit_data *emit_data, bool readonly_memory) { const struct tgsi_full_instruction *inst = emit_data->inst; - struct gallivm_state *gallivm = &ctx->gallivm; - LLVMBuilderRef builder = gallivm->builder; uint writemask = inst->Dst[0].Register.WriteMask; uint count = util_last_bit(writemask); - const char *intrinsic_name; - LLVMTypeRef dst_type; - - switch (count) { - case 1: - intrinsic_name = "llvm.amdgcn.buffer.load.f32"; - dst_type = ctx->f32; - break; - case 2: - intrinsic_name = "llvm.amdgcn.buffer.load.v2f32"; - dst_type = LLVMVectorType(ctx->f32, 2); - break; - default: // 3 & 4 - intrinsic_name = "llvm.amdgcn.buffer.load.v4f32"; - dst_type = ctx->v4f32; - count = 4; - } + LLVMValueRef *args = emit_data->args; - emit_data->output[emit_data->chan] = lp_build_intrinsic( - builder, intrinsic_name, dst_type, - emit_data->args, emit_data->arg_count, - get_load_intr_attribs(readonly_memory)); + emit_data->output[emit_data->chan] = + ac_build_buffer_load(&ctx->ac, args[0], count, args[1], + args[2], NULL, 0, + LLVMConstIntGetZExtValue(args[3]), + LLVMConstIntGetZExtValue(args[4]), + readonly_memory, true); } static LLVMValueRef get_memory_ptr(struct si_shader_context *ctx, const struct tgsi_full_instruction *inst, LLVMTypeRef type, int arg) { struct gallivm_state *gallivm = &ctx->gallivm; LLVMBuilderRef builder = gallivm->builder; LLVMValueRef offset, ptr; int addr_space; -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev