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

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Thu Oct 26 12:31:43 2023 +0200

ac/nir: remove dead code in nir_intrinsic_xfb_counter_{add,sub}_amd

This code path is only used by GFX11 now.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25903>

---

 src/amd/llvm/ac_nir_to_llvm.c | 38 +++++++++-----------------------------
 1 file changed, 9 insertions(+), 29 deletions(-)

diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index c2fdb9f88ce..b0a0ad8b001 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -3654,9 +3654,7 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
    }
    case nir_intrinsic_ordered_xfb_counter_add_amd: {
       /* must be called in a single lane of a workgroup. */
-      const bool use_gds_registers = ctx->ac.gfx_level >= GFX11;
       LLVMTypeRef gdsptr = LLVMPointerType(ctx->ac.i32, AC_ADDR_SPACE_GDS);
-      LLVMValueRef gdsbase = LLVMBuildIntToPtr(ctx->ac.builder, ctx->ac.i32_0, 
gdsptr, "");
 
       /* Gfx11 GDS instructions only operate on the first active lane. All 
other lanes are
        * ignored. So are their EXEC bits. This uses the mutex feature of 
ds_ordered_count
@@ -3705,19 +3703,11 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
             LLVMBuildExtractElement(ctx->ac.builder, count_vec,
                                     LLVMConstInt(ctx->ac.i32, i, false), "");
          if (write_mask & (1 << i)) {
-            if (use_gds_registers) {
-               /* The offset is a relative offset from 
GDS_STRMOUT_DWORDS_WRITTEN_0. */
-               global_count[i] =
-                  ac_build_intrinsic(&ctx->ac, 
"llvm.amdgcn.ds.add.gs.reg.rtn.i32", ctx->ac.i32,
-                                     (LLVMValueRef[]){value, 
LLVMConstInt(ctx->ac.i32, i * 4, 0)},
-                                     2, 0);
-            } else {
-               LLVMValueRef gds_ptr =
-                  ac_build_gep_ptr(&ctx->ac, ctx->ac.i32, gdsbase, 
LLVMConstInt(ctx->ac.i32, i, 0));
-               global_count[i] =
-                  LLVMBuildAtomicRMW(ctx->ac.builder, LLVMAtomicRMWBinOpAdd, 
gds_ptr, value,
-                                     LLVMAtomicOrderingMonotonic, false);
-            }
+            /* The offset is a relative offset from 
GDS_STRMOUT_DWORDS_WRITTEN_0. */
+            global_count[i] =
+               ac_build_intrinsic(&ctx->ac, 
"llvm.amdgcn.ds.add.gs.reg.rtn.i32", ctx->ac.i32,
+                                  (LLVMValueRef[]){value, 
LLVMConstInt(ctx->ac.i32, i * 4, 0)},
+                                  2, 0);
          } else {
             global_count[i] = LLVMGetUndef(ctx->ac.i32);
          }
@@ -3734,9 +3724,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
    }
    case nir_intrinsic_xfb_counter_sub_amd: {
       /* must be called in a single lane of a workgroup. */
-      const bool use_gds_registers = ctx->ac.gfx_level >= GFX11;
-      LLVMTypeRef gdsptr = LLVMPointerType(ctx->ac.i32, AC_ADDR_SPACE_GDS);
-      LLVMValueRef gdsbase = LLVMBuildIntToPtr(ctx->ac.builder, ctx->ac.i32_0, 
gdsptr, "");
       LLVMValueRef sub_vec = get_src(ctx, instr->src[0]);
       unsigned write_mask = nir_intrinsic_write_mask(instr);
 
@@ -3745,17 +3732,10 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
             LLVMValueRef value =
                LLVMBuildExtractElement(ctx->ac.builder, sub_vec,
                                        LLVMConstInt(ctx->ac.i32, i, false), 
"");
-            if (use_gds_registers) {
-               /* The offset is a relative offset from 
GDS_STRMOUT_DWORDS_WRITTEN_0. */
-               ac_build_intrinsic(&ctx->ac, 
"llvm.amdgcn.ds.sub.gs.reg.rtn.i32", ctx->ac.i32,
-                                  (LLVMValueRef[]){value, 
LLVMConstInt(ctx->ac.i32, i * 4, 0)},
-                                  2, 0);
-            } else {
-               LLVMValueRef gds_ptr =
-                  ac_build_gep_ptr(&ctx->ac, ctx->ac.i32, gdsbase, 
LLVMConstInt(ctx->ac.i32, i, 0));
-               LLVMBuildAtomicRMW(ctx->ac.builder, LLVMAtomicRMWBinOpSub, 
gds_ptr, value,
-                                  LLVMAtomicOrderingMonotonic, false);
-            }
+            /* The offset is a relative offset from 
GDS_STRMOUT_DWORDS_WRITTEN_0. */
+            ac_build_intrinsic(&ctx->ac, "llvm.amdgcn.ds.sub.gs.reg.rtn.i32", 
ctx->ac.i32,
+                               (LLVMValueRef[]){value, 
LLVMConstInt(ctx->ac.i32, i * 4, 0)},
+                               2, 0);
          }
       }
       break;

Reply via email to