r600g: FLT_TO_INT* are vector instructions on Evergreen.
authorHenri Verbeet <hverbeet@gmail.com>
Mon, 24 Jan 2011 23:27:50 +0000 (00:27 +0100)
committerHenri Verbeet <hverbeet@gmail.com>
Mon, 24 Jan 2011 23:35:34 +0000 (00:35 +0100)
FLT_TO_INT is a vector instruction, despite what the (current) documentation
says. FLT_TO_INT_FLOOR and FLT_TO_INT_RPI aren't explicitly mentioned in the
documentation, but those are vector instructions too.

src/gallium/drivers/r600/r600_asm.c

index f46059b9e90a485b205bb351d093db2314d9877a..9cdd10f9876a67a8e452792015ddbcbb0e38b43e 100644 (file)
@@ -417,9 +417,9 @@ static int is_alu_trans_unit_inst(struct r600_bc *bc, struct r600_bc_alu *alu)
        case CHIPREV_EVERGREEN:
        default:
                if (!alu->is_op3)
+                       /* Note that FLT_TO_INT* instructions are vector instructions
+                        * on Evergreen, despite what the documentation says. */
                        return alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_ASHR_INT ||
-                               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_INST_INT_TO_FLT ||
                                alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHL_INT ||
                                alu->inst == EG_V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHR_INT ||