Re: [Mesa-dev] [PATCH 5/8] ac/nir: implement 8-bit ssbo stores
On 3/20/19 1:07 AM, Bas Nieuwenhuizen wrote: On Tue, Mar 19, 2019 at 9:28 AM Samuel Pitoiset wrote: From: Rhys Perry Signed-off-by: Rhys Perry --- src/amd/common/ac_nir_to_llvm.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 34c4e2a69fa..f3e8f89ba9b 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1553,7 +1553,7 @@ static void visit_store_ssbo(struct ac_nir_context *ctx, LLVMValueRef rsrc = ctx->abi->load_ssbo(ctx->abi, get_src(ctx, instr->src[1]), true); - LLVMValueRef base_data = ac_to_float(>ac, src_data); + LLVMValueRef base_data = src_data; Does this work with LLVM 7? (I have vague recollection that the earlier intrinsics only did floats). I will double check before pushing. Thanks for the reviews. base_data = ac_trim_vector(>ac, base_data, instr->num_components); LLVMValueRef base_offset = get_src(ctx, instr->src[2]); @@ -1591,7 +1591,12 @@ static void visit_store_ssbo(struct ac_nir_context *ctx, offset = LLVMBuildAdd(ctx->ac.builder, base_offset, LLVMConstInt(ctx->ac.i32, start * elem_size_bytes, false), ""); - if (num_bytes == 2) { + if (num_bytes == 1) { + ac_build_tbuffer_store_byte(>ac, rsrc, data, + offset, ctx->ac.i32_0, + cache_policy & ac_glc, + writeonly_memory); + } else if (num_bytes == 2) { ac_build_tbuffer_store_short(>ac, rsrc, data, offset, ctx->ac.i32_0, cache_policy & ac_glc, -- 2.21.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 5/8] ac/nir: implement 8-bit ssbo stores
On Tue, Mar 19, 2019 at 9:28 AM Samuel Pitoiset wrote: > > From: Rhys Perry > > Signed-off-by: Rhys Perry > --- > src/amd/common/ac_nir_to_llvm.c | 9 +++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c > index 34c4e2a69fa..f3e8f89ba9b 100644 > --- a/src/amd/common/ac_nir_to_llvm.c > +++ b/src/amd/common/ac_nir_to_llvm.c > @@ -1553,7 +1553,7 @@ static void visit_store_ssbo(struct ac_nir_context *ctx, > > LLVMValueRef rsrc = ctx->abi->load_ssbo(ctx->abi, > get_src(ctx, instr->src[1]), true); > - LLVMValueRef base_data = ac_to_float(>ac, src_data); > + LLVMValueRef base_data = src_data; Does this work with LLVM 7? (I have vague recollection that the earlier intrinsics only did floats). > base_data = ac_trim_vector(>ac, base_data, > instr->num_components); > LLVMValueRef base_offset = get_src(ctx, instr->src[2]); > > @@ -1591,7 +1591,12 @@ static void visit_store_ssbo(struct ac_nir_context > *ctx, > offset = LLVMBuildAdd(ctx->ac.builder, base_offset, > LLVMConstInt(ctx->ac.i32, start * > elem_size_bytes, false), ""); > > - if (num_bytes == 2) { > + if (num_bytes == 1) { > + ac_build_tbuffer_store_byte(>ac, rsrc, data, > + offset, ctx->ac.i32_0, > + cache_policy & ac_glc, > + writeonly_memory); > + } else if (num_bytes == 2) { > ac_build_tbuffer_store_short(>ac, rsrc, data, > offset, ctx->ac.i32_0, > cache_policy & ac_glc, > -- > 2.21.0 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 5/8] ac/nir: implement 8-bit ssbo stores
From: Rhys Perry Signed-off-by: Rhys Perry --- src/amd/common/ac_nir_to_llvm.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 34c4e2a69fa..f3e8f89ba9b 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1553,7 +1553,7 @@ static void visit_store_ssbo(struct ac_nir_context *ctx, LLVMValueRef rsrc = ctx->abi->load_ssbo(ctx->abi, get_src(ctx, instr->src[1]), true); - LLVMValueRef base_data = ac_to_float(>ac, src_data); + LLVMValueRef base_data = src_data; base_data = ac_trim_vector(>ac, base_data, instr->num_components); LLVMValueRef base_offset = get_src(ctx, instr->src[2]); @@ -1591,7 +1591,12 @@ static void visit_store_ssbo(struct ac_nir_context *ctx, offset = LLVMBuildAdd(ctx->ac.builder, base_offset, LLVMConstInt(ctx->ac.i32, start * elem_size_bytes, false), ""); - if (num_bytes == 2) { + if (num_bytes == 1) { + ac_build_tbuffer_store_byte(>ac, rsrc, data, + offset, ctx->ac.i32_0, + cache_policy & ac_glc, + writeonly_memory); + } else if (num_bytes == 2) { ac_build_tbuffer_store_short(>ac, rsrc, data, offset, ctx->ac.i32_0, cache_policy & ac_glc, -- 2.21.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev