ac: add ac_build_tbuffer_store_byte() helper

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Samuel Pitoiset 2019-03-13 16:08:32 +01:00
parent b12e074b89
commit b235d77e18
2 changed files with 28 additions and 0 deletions

View File

@ -1771,6 +1771,25 @@ ac_build_tbuffer_store_short(struct ac_llvm_context *ctx,
writeonly_memory);
}
void
ac_build_tbuffer_store_byte(struct ac_llvm_context *ctx,
LLVMValueRef rsrc,
LLVMValueRef vdata,
LLVMValueRef voffset,
LLVMValueRef soffset,
bool glc,
bool writeonly_memory)
{
unsigned dfmt = V_008F0C_BUF_DATA_FORMAT_8;
unsigned nfmt = V_008F0C_BUF_NUM_FORMAT_UINT;
vdata = LLVMBuildBitCast(ctx->builder, vdata, ctx->i8, "");
vdata = LLVMBuildZExt(ctx->builder, vdata, ctx->i32, "");
ac_build_raw_tbuffer_store(ctx, rsrc, vdata, voffset, soffset,
ctx->i32_0, 1, dfmt, nfmt, glc, false,
writeonly_memory);
}
/**
* Set range metadata on an instruction. This can only be used on load and
* call instructions. If you know an instruction can only produce the values

View File

@ -362,6 +362,15 @@ ac_build_tbuffer_store_short(struct ac_llvm_context *ctx,
bool glc,
bool writeonly_memory);
void
ac_build_tbuffer_store_byte(struct ac_llvm_context *ctx,
LLVMValueRef rsrc,
LLVMValueRef vdata,
LLVMValueRef voffset,
LLVMValueRef soffset,
bool glc,
bool writeonly_memory);
void
ac_build_struct_tbuffer_store(struct ac_llvm_context *ctx,
LLVMValueRef rsrc,