From: Marek Olšák Date: Sat, 30 Sep 2017 13:36:18 +0000 (+0200) Subject: ac: properly document a buffer.store LLVM workaround X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bcd3e761a3ddf42eee5b3c57b510fc2f2ee54198;p=mesa.git ac: properly document a buffer.store LLVM workaround Reviewed-by: Nicolai Hähnle --- diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index 46153a0c39c..1d97b09cd4f 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -760,10 +760,13 @@ ac_build_buffer_store_dword(struct ac_llvm_context *ctx, bool glc, bool slc, bool writeonly_memory, - bool has_add_tid) + bool swizzle_enable_hint) { - /* TODO: Fix stores with ADD_TID and remove the "has_add_tid" flag. */ - if (!has_add_tid) { + /* SWIZZLE_ENABLE requires that soffset isn't folded into voffset + * (voffset is swizzled, but soffset isn't swizzled). + * llvm.amdgcn.buffer.store doesn't have a separate soffset parameter. + */ + if (!swizzle_enable_hint) { /* Split 3 channel stores, becase LLVM doesn't support 3-channel * intrinsics. */ if (num_channels == 3) { @@ -777,11 +780,11 @@ ac_build_buffer_store_dword(struct ac_llvm_context *ctx, ac_build_buffer_store_dword(ctx, rsrc, v01, 2, voffset, soffset, inst_offset, glc, slc, - writeonly_memory, has_add_tid); + writeonly_memory, swizzle_enable_hint); ac_build_buffer_store_dword(ctx, rsrc, v[2], 1, voffset, soffset, inst_offset + 8, glc, slc, - writeonly_memory, has_add_tid); + writeonly_memory, swizzle_enable_hint); return; } diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h index 1d6dc0ab2f5..ac8ea9c4152 100644 --- a/src/amd/common/ac_llvm_build.h +++ b/src/amd/common/ac_llvm_build.h @@ -170,7 +170,7 @@ ac_build_buffer_store_dword(struct ac_llvm_context *ctx, bool glc, bool slc, bool writeonly_memory, - bool has_add_tid); + bool swizzle_enable_hint); LLVMValueRef ac_build_buffer_load(struct ac_llvm_context *ctx, LLVMValueRef rsrc,