diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp index 9eb62b2b097..3e9936c23e9 100644 --- a/src/amd/compiler/aco_ir.cpp +++ b/src/amd/compiler/aco_ir.cpp @@ -1358,7 +1358,8 @@ get_op_fixed_to_def(Instruction* instr) instr->opcode == aco_opcode::v_fmac_legacy_f32 || instr->opcode == aco_opcode::v_pk_fmac_f16 || instr->opcode == aco_opcode::v_writelane_b32 || instr->opcode == aco_opcode::v_writelane_b32_e64 || - instr->opcode == aco_opcode::v_dot4c_i32_i8) { + instr->opcode == aco_opcode::v_dot4c_i32_i8 || instr->opcode == aco_opcode::s_fmac_f32 || + instr->opcode == aco_opcode::s_fmac_f16) { return 2; } else if (instr->opcode == aco_opcode::s_addk_i32 || instr->opcode == aco_opcode::s_mulk_i32 || instr->opcode == aco_opcode::s_cmovk_i32) { diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 6df08f33943..947e0b5aaa2 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -617,6 +617,8 @@ alu_can_accept_constant(const aco_ptr& instr, unsigned operand) return false; switch (instr->opcode) { + case aco_opcode::s_fmac_f16: + case aco_opcode::s_fmac_f32: case aco_opcode::v_mac_f32: case aco_opcode::v_writelane_b32: case aco_opcode::v_writelane_b32_e64: