diff --git a/src/amd/common/nir/ac_nir.c b/src/amd/common/nir/ac_nir.c index 642f73b339e..2a58272f7ef 100644 --- a/src/amd/common/nir/ac_nir.c +++ b/src/amd/common/nir/ac_nir.c @@ -45,6 +45,8 @@ void ac_nir_set_options(struct radeon_info *info, bool use_llvm, options->lower_ineg = true; options->lower_bitfield_insert = true; options->lower_bitfield_extract = true; + options->lower_bitfield_extract16 = use_llvm; + options->lower_bitfield_extract8 = use_llvm; options->lower_pack_snorm_4x8 = true; options->lower_pack_unorm_4x8 = true; options->lower_pack_half_2x16 = true; diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index 451b8bd5fd2..70a4f4f6d1f 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -2197,18 +2197,15 @@ LLVMValueRef ac_build_bitfield_reverse(struct ac_llvm_context *ctx, LLVMValueRef switch (bitsize) { case 64: result = ac_build_intrinsic(ctx, "llvm.bitreverse.i64", ctx->i64, (LLVMValueRef[]){src0}, 1, 0); - result = LLVMBuildTrunc(ctx->builder, result, ctx->i32, ""); break; case 32: result = ac_build_intrinsic(ctx, "llvm.bitreverse.i32", ctx->i32, (LLVMValueRef[]){src0}, 1, 0); break; case 16: result = ac_build_intrinsic(ctx, "llvm.bitreverse.i16", ctx->i16, (LLVMValueRef[]){src0}, 1, 0); - result = LLVMBuildZExt(ctx->builder, result, ctx->i32, ""); break; case 8: result = ac_build_intrinsic(ctx, "llvm.bitreverse.i8", ctx->i8, (LLVMValueRef[]){src0}, 1, 0); - result = LLVMBuildZExt(ctx->builder, result, ctx->i32, ""); break; default: unreachable("invalid bitsize");