From: Alex Deucher Date: Sun, 13 Nov 2011 22:46:01 +0000 (-0500) Subject: r600g: properly handle cayman in is_alu_vec_unit_inst() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=579c04e42ef1bb449fe86d7224ccfe0c2d569595;p=mesa.git r600g: properly handle cayman in is_alu_vec_unit_inst() Signed-off-by: Alex Deucher --- diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 0a1717c6168..f923c622f0b 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -440,13 +440,21 @@ static int is_alu_mova_inst(struct r600_bytecode *bc, struct r600_bytecode_alu * /* alu instructions that can only execute on the vector unit */ static int is_alu_vec_unit_inst(struct r600_bytecode *bc, struct r600_bytecode_alu *alu) { - return is_alu_reduction_inst(bc, alu) || - is_alu_mova_inst(bc, alu) || - (bc->chip_class == EVERGREEN && - (alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT || - alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR || - alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_XY || - alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_ZW)); + switch (bc->chip_class) { + case R600: + case R700: + return is_alu_reduction_inst(bc, alu) || + is_alu_mova_inst(bc, alu); + case EVERGREEN: + case CAYMAN: + default: + return is_alu_reduction_inst(bc, alu) || + is_alu_mova_inst(bc, alu) || + (alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT || + alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT_FLOOR || + alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_XY || + alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INTERP_ZW); + } } /* alu instructions that can only execute on the trans unit */