Module: Mesa
Branch: main
Commit: 7cec2e7520c44414fbaa81f733bb85517637d3f2
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7cec2e7520c44414fbaa81f733bb85517637d3f2

Author: Qiang Yu <[email protected]>
Date:   Wed Aug 10 23:34:25 2022 +0800

ac/llvm,radeonsi: lower nir_load_streamout_buffer_amd

Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Signed-off-by: Qiang Yu <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18010>

---

 src/amd/llvm/ac_nir_to_llvm.c                   |  3 ---
 src/amd/llvm/ac_shader_abi.h                    |  2 --
 src/gallium/drivers/radeonsi/si_nir_lower_abi.c |  5 +++++
 src/gallium/drivers/radeonsi/si_shader_llvm.c   | 10 ----------
 4 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index 5bda4fff405..1b2a42783e3 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -3625,9 +3625,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
    case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd:
       result = ctx->abi->intrinsic_load(ctx->abi, instr->intrinsic);
       break;
-   case nir_intrinsic_load_streamout_buffer_amd:
-      result = ctx->abi->load_streamout_buffer(ctx->abi, 
nir_intrinsic_base(instr));
-      break;
    case nir_intrinsic_load_merged_wave_info_amd:
       result = ac_get_arg(&ctx->ac, ctx->args->merged_wave_info);
       break;
diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h
index d20a6982329..36519b995f0 100644
--- a/src/amd/llvm/ac_shader_abi.h
+++ b/src/amd/llvm/ac_shader_abi.h
@@ -116,8 +116,6 @@ struct ac_shader_abi {
 
    LLVMValueRef (*load_sample_position)(struct ac_shader_abi *abi, 
LLVMValueRef sample_id);
 
-   LLVMValueRef (*load_streamout_buffer)(struct ac_shader_abi *abi, unsigned 
buffer);
-
    LLVMValueRef (*emit_fbfetch)(struct ac_shader_abi *abi);
 
    LLVMValueRef (*intrinsic_load)(struct ac_shader_abi *abi, nir_intrinsic_op 
op);
diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c 
b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
index 5de88dd151b..4725c3a015e 100644
--- a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
+++ b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
@@ -228,6 +228,11 @@ static bool lower_abi_instr(nir_builder *b, nir_instr 
*instr, struct lower_abi_s
       replacement = nir_load_smem_buffer_amd(b, 4, buf, nir_imm_int(b, 
offset));
       break;
    }
+   case nir_intrinsic_load_streamout_buffer_amd: {
+      unsigned slot = SI_VS_STREAMOUT_BUF0 + nir_intrinsic_base(intrin);
+      replacement = load_internal_binding(b, args, slot);
+      break;
+   }
    default:
       return false;
    }
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c 
b/src/gallium/drivers/radeonsi/si_shader_llvm.c
index 971ffd516d3..c1d91d4198a 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c
@@ -761,15 +761,6 @@ static LLVMValueRef si_llvm_load_intrinsic(struct 
ac_shader_abi *abi, nir_intrin
    }
 }
 
-static LLVMValueRef si_llvm_load_streamout_buffer(struct ac_shader_abi *abi, 
unsigned buffer)
-{
-   struct si_shader_context *ctx = si_shader_context_from_abi(abi);
-   struct ac_llvm_pointer buf_ptr = ac_get_ptr_arg(&ctx->ac, &ctx->args->ac, 
ctx->args->internal_bindings);
-
-   return ac_build_load_to_sgpr(
-      &ctx->ac, buf_ptr, LLVMConstInt(ctx->ac.i32, SI_VS_STREAMOUT_BUF0 + 
buffer, false));
-}
-
 bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shader 
*shader,
                            struct nir_shader *nir, bool free_nir)
 {
@@ -786,7 +777,6 @@ bool si_llvm_translate_nir(struct si_shader_context *ctx, 
struct si_shader *shad
    ctx->num_images = info->base.num_images;
 
    ctx->abi.intrinsic_load = si_llvm_load_intrinsic;
-   ctx->abi.load_streamout_buffer = si_llvm_load_streamout_buffer;
    ctx->abi.export_vertex = gfx10_ngg_export_vertex;
    ctx->abi.atomic_add_prim_count = gfx10_ngg_atomic_add_prim_count;
 

Reply via email to