On 6 March 2017 at 08:22, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > Call site attributes are used since LLVM 4.0.
For all 5, Reviewed-by: Dave Airlie <airl...@redhat.com> > > This also reverts commit b19caecbd6f310c1663b0cfe483d113ae3bd5fe2 > "radeon/ac: fix intrinsic version check", because this is the correct fix. > --- > src/amd/common/ac_llvm_build.c | 6 +++--- > src/gallium/drivers/radeonsi/si_shader.c | 6 ++++-- > 2 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c > index acda5e2..20c6eb8 100644 > --- a/src/amd/common/ac_llvm_build.c > +++ b/src/amd/common/ac_llvm_build.c > @@ -686,21 +686,21 @@ ac_build_buffer_load(struct ac_llvm_context *ctx, > } > > snprintf(name, sizeof(name), "llvm.amdgcn.buffer.load.%s", > type_names[func]); > > return ac_build_intrinsic(ctx, name, types[func], args, > ARRAY_SIZE(args), > /* READNONE means writes can't > * affect it, while READONLY means > * that writes can affect it. */ > - readonly_memory ? > + readonly_memory && HAVE_LLVM >= > 0x0400 ? > AC_FUNC_ATTR_READNONE : > AC_FUNC_ATTR_READONLY); > } else { > LLVMValueRef args[] = { > LLVMBuildBitCast(ctx->builder, rsrc, ctx->v16i8, ""), > voffset ? voffset : vindex, > soffset, > LLVMConstInt(ctx->i32, inst_offset, 0), > LLVMConstInt(ctx->i32, voffset ? 1 : 0, 0), // offen > LLVMConstInt(ctx->i32, vindex ? 1 : 0, 0), //idxen > @@ -729,36 +729,36 @@ ac_build_buffer_load(struct ac_llvm_context *ctx, > ARRAY_SIZE(args), > AC_FUNC_ATTR_READONLY); > } > } > > LLVMValueRef ac_build_buffer_load_format(struct ac_llvm_context *ctx, > LLVMValueRef rsrc, > LLVMValueRef vindex, > LLVMValueRef voffset, > bool readonly_memory) > { > - if (HAVE_LLVM >= 0x0400) { > + if (HAVE_LLVM >= 0x0309) { > LLVMValueRef args [] = { > LLVMBuildBitCast(ctx->builder, rsrc, ctx->v4i32, ""), > vindex, > voffset, > LLVMConstInt(ctx->i1, 0, 0), /* glc */ > LLVMConstInt(ctx->i1, 0, 0), /* slc */ > }; > > return ac_build_intrinsic(ctx, > > "llvm.amdgcn.buffer.load.format.v4f32", > ctx->v4f32, args, ARRAY_SIZE(args), > /* READNONE means writes can't > * affect it, while READONLY means > * that writes can affect it. */ > - readonly_memory ? > + readonly_memory && HAVE_LLVM >= > 0x0400 ? > AC_FUNC_ATTR_READNONE : > AC_FUNC_ATTR_READONLY); > } > > LLVMValueRef args[] = { > rsrc, > voffset, > vindex, > }; > return ac_build_intrinsic(ctx, "llvm.SI.vs.load.input", > diff --git a/src/gallium/drivers/radeonsi/si_shader.c > b/src/gallium/drivers/radeonsi/si_shader.c > index 319c0c8..4e133ec 100644 > --- a/src/gallium/drivers/radeonsi/si_shader.c > +++ b/src/gallium/drivers/radeonsi/si_shader.c > @@ -3435,27 +3435,29 @@ static void load_fetch_args( > > image_append_args(ctx, emit_data, target, false, > false); > } > } > } > > static unsigned get_load_intr_attribs(bool readonly_memory) > { > /* READNONE means writes can't affect it, while READONLY means that > * writes can affect it. */ > - return readonly_memory ? LP_FUNC_ATTR_READNONE : > + return readonly_memory && HAVE_LLVM >= 0x0400 ? > + LP_FUNC_ATTR_READNONE : > LP_FUNC_ATTR_READONLY; > } > > static unsigned get_store_intr_attribs(bool writeonly_memory) > { > - return writeonly_memory ? LP_FUNC_ATTR_INACCESSIBLE_MEM_ONLY : > + 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; > -- > 2.7.4 > > _______________________________________________ > 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