From: Marek Olšák <marek.ol...@amd.com> --- src/amd/common/ac_llvm_build.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index 8fac89c..6364657 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -729,20 +729,40 @@ 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 >= 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_emit_llvm_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 ? + AC_FUNC_ATTR_READNONE : + AC_FUNC_ATTR_READONLY); + } + LLVMValueRef args[] = { rsrc, voffset, vindex, }; return ac_emit_llvm_intrinsic(ctx, "llvm.SI.vs.load.input", ctx->v4f32, args, 3, AC_FUNC_ATTR_READNONE | AC_FUNC_ATTR_LEGACY); } -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev