ac: add 8-bit and 64-bit support to ac_build_bitfield_reverse()

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Samuel Pitoiset 2019-04-01 16:18:10 +02:00
parent 2cecf6c5cc
commit d099bc5829

View file

@ -2585,6 +2585,13 @@ LLVMValueRef ac_build_bitfield_reverse(struct ac_llvm_context *ctx,
bitsize = ac_get_elem_bits(ctx, LLVMTypeOf(src0));
switch (bitsize) {
case 64:
result = ac_build_intrinsic(ctx, "llvm.bitreverse.i64", ctx->i64,
(LLVMValueRef []) { src0 }, 1,
AC_FUNC_ATTR_READNONE);
result = LLVMBuildTrunc(ctx->builder, result, ctx->i32, "");
break;
case 32:
result = ac_build_intrinsic(ctx, "llvm.bitreverse.i32", ctx->i32,
(LLVMValueRef []) { src0 }, 1,
@ -2595,6 +2602,13 @@ LLVMValueRef ac_build_bitfield_reverse(struct ac_llvm_context *ctx,
(LLVMValueRef []) { src0 }, 1,
AC_FUNC_ATTR_READNONE);
result = LLVMBuildZExt(ctx->builder, result, ctx->i32, "");
break;
case 8:
result = ac_build_intrinsic(ctx, "llvm.bitreverse.i8", ctx->i8,
(LLVMValueRef []) { src0 }, 1,
AC_FUNC_ATTR_READNONE);
result = LLVMBuildZExt(ctx->builder, result, ctx->i32, "");
break;
default: