> On Feb 25, 2017, at 15:58, Marek Olšák <mar...@gmail.com> wrote:
> 
> }
> +
> +LLVMValueRef ac_emit_cvt_pkrtz_f16(struct ac_llvm_context *ctx,
> +                                LLVMValueRef args[2])
> +{
> +     if (HAVE_LLVM >= 0x0500) {
> +             LLVMTypeRef v2f16 =
> +                     LLVMVectorType(LLVMHalfTypeInContext(ctx->context), 2);
> +             LLVMValueRef res =
> +                     ac_emit_llvm_intrinsic(ctx, "llvm.amdgcn.cvt.pkrtz",
> +                                            v2f16, args, 2,
> +                                            AC_FUNC_ATTR_READNONE);
> +             return LLVMBuildBitCast(ctx->builder, res, ctx->i32, "");
> +     }
> +
> +     return ac_emit_llvm_intrinsic(ctx, "llvm.SI.packf16", ctx->i32, args, 2,
> +                                   AC_FUNC_ATTR_READNONE |
> +                                   AC_FUNC_ATTR_LEGACY);
> +}
> diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
> index f57acc2..e6bb

I would probably swap where you do the bitcast here, and cast the legacy 
intrinsic to <2 x half>. With the pkrtz -> exp.compr, pattern you’ll be 
emitting a cast to i32 and back. While that will be cleaned up, you’re wasting 
some compile time/memory doing so.

-Matt
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to