diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 07db0c64c24..325baf5e2ec 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -1034,6 +1034,13 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr) case nir_op_pack_half_2x16: result = emit_pack_2x16(&ctx->ac, src[0], ac_build_cvt_pkrtz_f16); break; + case nir_op_pack_half_2x16_split: + src[0] = ac_to_float(&ctx->ac, src[0]); + src[1] = ac_to_float(&ctx->ac, src[1]); + result = LLVMBuildBitCast(ctx->ac.builder, + ac_build_cvt_pkrtz_f16(&ctx->ac, src), + ctx->ac.i32, ""); + break; case nir_op_pack_snorm_2x16: result = emit_pack_2x16(&ctx->ac, src[0], ac_build_cvt_pknorm_i16); break;