ac: add 8-bit and 16-bit supports to ac_build_shuffle()
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -4320,12 +4320,17 @@ ac_build_quad_swizzle(struct ac_llvm_context *ctx, LLVMValueRef src,
|
|||||||
LLVMValueRef
|
LLVMValueRef
|
||||||
ac_build_shuffle(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef index)
|
ac_build_shuffle(struct ac_llvm_context *ctx, LLVMValueRef src, LLVMValueRef index)
|
||||||
{
|
{
|
||||||
|
LLVMTypeRef type = LLVMTypeOf(src);
|
||||||
|
LLVMValueRef result;
|
||||||
|
|
||||||
index = LLVMBuildMul(ctx->builder, index, LLVMConstInt(ctx->i32, 4, 0), "");
|
index = LLVMBuildMul(ctx->builder, index, LLVMConstInt(ctx->i32, 4, 0), "");
|
||||||
return ac_build_intrinsic(ctx,
|
src = LLVMBuildZExt(ctx->builder, src, ctx->i32, "");
|
||||||
"llvm.amdgcn.ds.bpermute", ctx->i32,
|
|
||||||
|
result = ac_build_intrinsic(ctx, "llvm.amdgcn.ds.bpermute", ctx->i32,
|
||||||
(LLVMValueRef []) {index, src}, 2,
|
(LLVMValueRef []) {index, src}, 2,
|
||||||
AC_FUNC_ATTR_READNONE |
|
AC_FUNC_ATTR_READNONE |
|
||||||
AC_FUNC_ATTR_CONVERGENT);
|
AC_FUNC_ATTR_CONVERGENT);
|
||||||
|
return LLVMBuildTrunc(ctx->builder, result, type, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVMValueRef
|
LLVMValueRef
|
||||||
|
Reference in New Issue
Block a user