diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp index 4a92c1d734d..c1c4cb64c22 100644 --- a/src/amd/compiler/aco_ir.cpp +++ b/src/amd/compiler/aco_ir.cpp @@ -444,6 +444,8 @@ can_use_opsel(amd_gfx_level gfx_level, aco_opcode op, int idx) case aco_opcode::v_max3_f16: case aco_opcode::v_max3_i16: case aco_opcode::v_max3_u16: + case aco_opcode::v_minmax_f16: + case aco_opcode::v_maxmin_f16: case aco_opcode::v_max_u16_e64: case aco_opcode::v_max_i16_e64: case aco_opcode::v_min_u16_e64: @@ -455,6 +457,9 @@ can_use_opsel(amd_gfx_level gfx_level, aco_opcode op, int idx) case aco_opcode::v_lshlrev_b16_e64: case aco_opcode::v_lshrrev_b16_e64: case aco_opcode::v_ashrrev_i16_e64: + case aco_opcode::v_and_b16: + case aco_opcode::v_or_b16: + case aco_opcode::v_xor_b16: case aco_opcode::v_mul_lo_u16_e64: return true; case aco_opcode::v_pack_b32_f16: case aco_opcode::v_cvt_pknorm_i16_f16: @@ -463,6 +468,7 @@ can_use_opsel(amd_gfx_level gfx_level, aco_opcode op, int idx) case aco_opcode::v_mad_i32_i16: return idx >= 0 && idx < 2; case aco_opcode::v_dot2_f16_f16: case aco_opcode::v_dot2_bf16_bf16: return idx == -1 || idx == 2; + case aco_opcode::v_cndmask_b16: return idx != 2; case aco_opcode::v_interp_p10_f16_f32_inreg: case aco_opcode::v_interp_p10_rtz_f16_f32_inreg: return idx == 0 || idx == 2; case aco_opcode::v_interp_p2_f16_f32_inreg: