From: Marek Olšák <marek.ol...@amd.com>

---
 src/amd/common/ac_llvm_build.c           | 10 +++++-----
 src/amd/common/ac_llvm_build.h           | 10 ++++++----
 src/amd/common/ac_nir_to_llvm.c          |  2 +-
 src/amd/vulkan/radv_nir_to_llvm.c        |  2 +-
 src/gallium/drivers/radeonsi/si_shader.c |  6 +++---
 5 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index dcc6beb631f..4cbf599d946 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -177,21 +177,21 @@ ac_get_type_size(LLVMTypeRef type)
        switch (kind) {
        case LLVMIntegerTypeKind:
                return LLVMGetIntTypeWidth(type) / 8;
        case LLVMHalfTypeKind:
                return 2;
        case LLVMFloatTypeKind:
                return 4;
        case LLVMDoubleTypeKind:
                return 8;
        case LLVMPointerTypeKind:
-               if (LLVMGetPointerAddressSpace(type) == 
AC_CONST_32BIT_ADDR_SPACE)
+               if (LLVMGetPointerAddressSpace(type) == 
AC_ADDR_SPACE_CONST_32BIT)
                        return 4;
                return 8;
        case LLVMVectorTypeKind:
                return LLVMGetVectorSize(type) *
                       ac_get_type_size(LLVMGetElementType(type));
        case LLVMArrayTypeKind:
                return LLVMGetArrayLength(type) *
                       ac_get_type_size(LLVMGetElementType(type));
        default:
                assert(0);
@@ -945,21 +945,21 @@ ac_build_indexed_store(struct ac_llvm_context *ctx,
  */
 static LLVMValueRef
 ac_build_load_custom(struct ac_llvm_context *ctx, LLVMValueRef base_ptr,
                     LLVMValueRef index, bool uniform, bool invariant,
                     bool no_unsigned_wraparound)
 {
        LLVMValueRef pointer, result;
        LLVMValueRef indices[2] = {ctx->i32_0, index};
 
        if (no_unsigned_wraparound &&
-           LLVMGetPointerAddressSpace(LLVMTypeOf(base_ptr)) == 
AC_CONST_32BIT_ADDR_SPACE)
+           LLVMGetPointerAddressSpace(LLVMTypeOf(base_ptr)) == 
AC_ADDR_SPACE_CONST_32BIT)
                pointer = LLVMBuildInBoundsGEP(ctx->builder, base_ptr, indices, 
2, "");
        else
                pointer = LLVMBuildGEP(ctx->builder, base_ptr, indices, 2, "");
 
        if (uniform)
                LLVMSetMetadata(pointer, ctx->uniform_md_kind, ctx->empty_md);
        result = LLVMBuildLoad(ctx->builder, pointer, "");
        if (invariant)
                LLVMSetMetadata(result, ctx->invariant_load_md_kind, 
ctx->empty_md);
        return result;
@@ -2536,21 +2536,21 @@ void ac_init_exec_full_mask(struct ac_llvm_context *ctx)
        LLVMValueRef full_mask = LLVMConstInt(ctx->i64, ~0ull, 0);
        ac_build_intrinsic(ctx,
                           "llvm.amdgcn.init.exec", ctx->voidt,
                           &full_mask, 1, AC_FUNC_ATTR_CONVERGENT);
 }
 
 void ac_declare_lds_as_pointer(struct ac_llvm_context *ctx)
 {
        unsigned lds_size = ctx->chip_class >= CIK ? 65536 : 32768;
        ctx->lds = LLVMBuildIntToPtr(ctx->builder, ctx->i32_0,
-                                    LLVMPointerType(LLVMArrayType(ctx->i32, 
lds_size / 4), AC_LOCAL_ADDR_SPACE),
+                                    LLVMPointerType(LLVMArrayType(ctx->i32, 
lds_size / 4), AC_ADDR_SPACE_LDS),
                                     "lds");
 }
 
 LLVMValueRef ac_lds_load(struct ac_llvm_context *ctx,
                         LLVMValueRef dw_addr)
 {
        return ac_build_load(ctx, ctx->lds, dw_addr);
 }
 
 void ac_lds_store(struct ac_llvm_context *ctx,
@@ -2618,30 +2618,30 @@ LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx,
        /* Check for zero: */
        return LLVMBuildSelect(ctx->builder, LLVMBuildICmp(ctx->builder,
                                                           LLVMIntEQ, src0,
                                                           zero, ""),
                               LLVMConstInt(ctx->i32, -1, 0), lsb, "");
 }
 
 LLVMTypeRef ac_array_in_const_addr_space(LLVMTypeRef elem_type)
 {
        return LLVMPointerType(LLVMArrayType(elem_type, 0),
-                              AC_CONST_ADDR_SPACE);
+                              AC_ADDR_SPACE_CONST);
 }
 
 LLVMTypeRef ac_array_in_const32_addr_space(LLVMTypeRef elem_type)
 {
        if (!HAVE_32BIT_POINTERS)
                return ac_array_in_const_addr_space(elem_type);
 
        return LLVMPointerType(LLVMArrayType(elem_type, 0),
-                              AC_CONST_32BIT_ADDR_SPACE);
+                              AC_ADDR_SPACE_CONST_32BIT);
 }
 
 static struct ac_llvm_flow *
 get_current_flow(struct ac_llvm_context *ctx)
 {
        if (ctx->flow_depth > 0)
                return &ctx->flow[ctx->flow_depth - 1];
        return NULL;
 }
 
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index 08f18435ddd..83aad02183e 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -30,24 +30,26 @@
 #include "compiler/nir/nir.h"
 #include "amd_family.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #define HAVE_32BIT_POINTERS (HAVE_LLVM >= 0x0700)
 
 enum {
-       /* CONST is the only address space that selects SMEM loads */
-       AC_CONST_ADDR_SPACE = HAVE_LLVM >= 0x700 ? 4 : 2,
-       AC_LOCAL_ADDR_SPACE = 3,
-       AC_CONST_32BIT_ADDR_SPACE = 6, /* same as CONST, but the pointer type 
has 32 bits */
+       AC_ADDR_SPACE_FLAT = HAVE_LLVM >= 0x0700 ? 0 : 4, /* Slower than 
global. */
+       AC_ADDR_SPACE_GLOBAL = 1,
+       AC_ADDR_SPACE_GDS = HAVE_LLVM >= 0x0700 ? 2 : 5,
+       AC_ADDR_SPACE_LDS = 3,
+       AC_ADDR_SPACE_CONST = HAVE_LLVM >= 0x0700 ? 4 : 2, /* Global allowing 
SMEM. */
+       AC_ADDR_SPACE_CONST_32BIT = 6, /* same as CONST, but the pointer type 
has 32 bits */
 };
 
 /* Combine these with & instead of |. */
 #define NOOP_WAITCNT   0xcf7f
 #define LGKM_CNT       0xc07f
 #define EXP_CNT                0xcf0f
 #define VM_CNT         0x0f70 /* On GFX9, vmcnt has 6 bits in [0:3] and 
[14:15] */
 
 struct ac_llvm_flow;
 
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index b01309cc2a9..312383db36c 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -3921,21 +3921,21 @@ setup_locals(struct ac_nir_context *ctx,
 
 static void
 setup_shared(struct ac_nir_context *ctx,
             struct nir_shader *nir)
 {
        nir_foreach_variable(variable, &nir->shared) {
                LLVMValueRef shared =
                        LLVMAddGlobalInAddressSpace(
                           ctx->ac.module, glsl_to_llvm_type(&ctx->ac, 
variable->type),
                           variable->name ? variable->name : "",
-                          AC_LOCAL_ADDR_SPACE);
+                          AC_ADDR_SPACE_LDS);
                _mesa_hash_table_insert(ctx->vars, variable, shared);
        }
 }
 
 void ac_nir_translate(struct ac_llvm_context *ac, struct ac_shader_abi *abi,
                      struct nir_shader *nir)
 {
        struct ac_nir_context ctx = {};
        struct nir_function *func;
 
diff --git a/src/amd/vulkan/radv_nir_to_llvm.c 
b/src/amd/vulkan/radv_nir_to_llvm.c
index 32d347ebd0f..b2f04d029b7 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -1129,21 +1129,21 @@ static void create_function(struct radv_shader_context 
*ctx,
 
        assign_arguments(ctx->main_function, &args);
 
        user_sgpr_idx = 0;
 
        if (ctx->options->supports_spill || user_sgpr_info.need_ring_offsets) {
                set_loc_shader_ptr(ctx, AC_UD_SCRATCH_RING_OFFSETS,
                                   &user_sgpr_idx);
                if (ctx->options->supports_spill) {
                        ctx->ring_offsets = ac_build_intrinsic(&ctx->ac, 
"llvm.amdgcn.implicit.buffer.ptr",
-                                                              
LLVMPointerType(ctx->ac.i8, AC_CONST_ADDR_SPACE),
+                                                              
LLVMPointerType(ctx->ac.i8, AC_ADDR_SPACE_CONST),
                                                               NULL, 0, 
AC_FUNC_ATTR_READNONE);
                        ctx->ring_offsets = LLVMBuildBitCast(ctx->ac.builder, 
ctx->ring_offsets,
                                                             
ac_array_in_const_addr_space(ctx->ac.v4i32), "");
                }
        }
 
        /* For merged shaders the user SGPRs start at 8, with 8 system SGPRs in 
front (including
         * the rw_buffers at s0/s1. With user SGPR0 = s8, lets restart the 
count from 0 */
        if (has_previous_stage)
                user_sgpr_idx = 0;
diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index 22461012379..19522cc97b1 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2266,29 +2266,29 @@ void si_load_system_value(struct si_shader_context *ctx,
        }
 
        ctx->system_values[index] = value;
 }
 
 void si_declare_compute_memory(struct si_shader_context *ctx)
 {
        struct si_shader_selector *sel = ctx->shader->selector;
        unsigned lds_size = sel->info.properties[TGSI_PROPERTY_CS_LOCAL_SIZE];
 
-       LLVMTypeRef i8p = LLVMPointerType(ctx->i8, AC_LOCAL_ADDR_SPACE);
+       LLVMTypeRef i8p = LLVMPointerType(ctx->i8, AC_ADDR_SPACE_LDS);
        LLVMValueRef var;
 
        assert(!ctx->ac.lds);
 
        var = LLVMAddGlobalInAddressSpace(ctx->ac.module,
                                          LLVMArrayType(ctx->i8, lds_size),
                                          "compute_lds",
-                                         AC_LOCAL_ADDR_SPACE);
+                                         AC_ADDR_SPACE_LDS);
        LLVMSetAlignment(var, 4);
 
        ctx->ac.lds = LLVMBuildBitCast(ctx->ac.builder, var, i8p, "");
 }
 
 void si_tgsi_declare_compute_memory(struct si_shader_context *ctx,
                                    const struct tgsi_full_declaration *decl)
 {
        assert(decl->Declaration.MemType == TGSI_MEMORY_TYPE_SHARED);
        assert(decl->Range.First == decl->Range.Last);
@@ -6648,21 +6648,21 @@ static void si_build_wrapper_function(struct 
si_shader_context *ctx,
                        assert(out_idx + param_size <= (is_sgpr ? num_out_sgpr 
: num_out));
 
                        if (param_size == 1)
                                arg = out[out_idx];
                        else
                                arg = ac_build_gather_values(&ctx->ac, 
&out[out_idx], param_size);
 
                        if (LLVMTypeOf(arg) != param_type) {
                                if (LLVMGetTypeKind(param_type) == 
LLVMPointerTypeKind) {
                                        if 
(LLVMGetPointerAddressSpace(param_type) ==
-                                           AC_CONST_32BIT_ADDR_SPACE) {
+                                           AC_ADDR_SPACE_CONST_32BIT) {
                                                arg = LLVMBuildBitCast(builder, 
arg, ctx->i32, "");
                                                arg = 
LLVMBuildIntToPtr(builder, arg, param_type, "");
                                        } else {
                                                arg = LLVMBuildBitCast(builder, 
arg, ctx->i64, "");
                                                arg = 
LLVMBuildIntToPtr(builder, arg, param_type, "");
                                        }
                                } else {
                                        arg = LLVMBuildBitCast(builder, arg, 
param_type, "");
                                }
                        }
-- 
2.17.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to