diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 35366fd5d4a..f0176106de2 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -2045,8 +2045,11 @@ label_instruction(opt_ctx& ctx, aco_ptr& instr) break; } case aco_opcode::v_cvt_f16_f32: { - if (instr->operands[0].isTemp()) - ctx.info[instr->operands[0].tempId()].set_f2f16(instr.get()); + if (instr->operands[0].isTemp()) { + ssa_info& info = ctx.info[instr->operands[0].tempId()]; + if (!info.is_dpp() || info.instr->pass_flags != instr->pass_flags) + info.set_f2f16(instr.get()); + } break; } case aco_opcode::v_cvt_f32_f16: {