diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index cc3cd859de0..75728e4eed5 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -3557,6 +3557,7 @@ visit_alu_instr(isel_context* ctx, nir_alu_instr* instr) break; } case nir_op_pack_32_4x8: bld.copy(Definition(dst), get_alu_src(ctx, instr->src[0], 4)); break; + case nir_op_pack_half_2x16_rtz_split: case nir_op_pack_half_2x16_split: { if (dst.regClass() == v1) { if (ctx->program->gfx_level == GFX8 || ctx->program->gfx_level == GFX9) diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp b/src/amd/compiler/aco_instruction_selection_setup.cpp index a6c98dd51c0..2d16f39ba6f 100644 --- a/src/amd/compiler/aco_instruction_selection_setup.cpp +++ b/src/amd/compiler/aco_instruction_selection_setup.cpp @@ -495,6 +495,7 @@ init_context(isel_context* ctx, nir_shader* shader) case nir_op_i2f16: case nir_op_i2f32: case nir_op_i2f64: + case nir_op_pack_half_2x16_rtz_split: case nir_op_pack_half_2x16_split: case nir_op_pack_unorm_2x16: case nir_op_pack_snorm_2x16: diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index cfcdb8b74bb..154c6e9de46 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -1126,6 +1126,7 @@ static bool 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_rtz_split: 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]); diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index b2bcc853f0d..5e12e04194b 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -101,6 +101,7 @@ get_nir_options_for_stage(struct radv_physical_device *device, gl_shader_stage s .has_dot_2x16 = device->rad_info.has_accelerated_dot_product && device->rad_info.gfx_level < GFX11, .has_find_msb_rev = true, + .has_pack_half_2x16_rtz = true, .use_scoped_barrier = true, #ifdef LLVM_AVAILABLE .has_fmulz = !device->use_llvm || LLVM_VERSION_MAJOR >= 12,