sync up with gallium-0.1 changes

New _mesa_num_inst_dst_regs(), _mesa_is_tex_instruction() functions
This commit is contained in:
Brian Paul
2008-05-14 13:00:27 -06:00
parent 6ca948a303
commit bff695b926
2 changed files with 115 additions and 85 deletions
+109 -85
View File
@@ -143,6 +143,7 @@ struct instruction_info
gl_inst_opcode Opcode;
const char *Name;
GLuint NumSrcRegs;
GLuint NumDstRegs;
};
/**
@@ -150,91 +151,91 @@ struct instruction_info
* \note Opcode should equal array index!
*/
static const struct instruction_info InstInfo[MAX_OPCODE] = {
{ OPCODE_NOP, "NOP", 0 },
{ OPCODE_ABS, "ABS", 1 },
{ OPCODE_ADD, "ADD", 2 },
{ OPCODE_ARA, "ARA", 1 },
{ OPCODE_ARL, "ARL", 1 },
{ OPCODE_ARL_NV, "ARL", 1 },
{ OPCODE_ARR, "ARL", 1 },
{ OPCODE_BGNLOOP,"BGNLOOP", 0 },
{ OPCODE_BGNSUB, "BGNSUB", 0 },
{ OPCODE_BRA, "BRA", 0 },
{ OPCODE_BRK, "BRK", 0 },
{ OPCODE_CAL, "CAL", 0 },
{ OPCODE_CMP, "CMP", 3 },
{ OPCODE_CONT, "CONT", 0 },
{ OPCODE_COS, "COS", 1 },
{ OPCODE_DDX, "DDX", 1 },
{ OPCODE_DDY, "DDY", 1 },
{ OPCODE_DP3, "DP3", 2 },
{ OPCODE_DP4, "DP4", 2 },
{ OPCODE_DPH, "DPH", 2 },
{ OPCODE_DST, "DST", 2 },
{ OPCODE_ELSE, "ELSE", 0 },
{ OPCODE_END, "END", 0 },
{ OPCODE_ENDIF, "ENDIF", 0 },
{ OPCODE_ENDLOOP,"ENDLOOP", 0 },
{ OPCODE_ENDSUB, "ENDSUB", 0 },
{ OPCODE_EX2, "EX2", 1 },
{ OPCODE_EXP, "EXP", 1 },
{ OPCODE_FLR, "FLR", 1 },
{ OPCODE_FRC, "FRC", 1 },
{ OPCODE_IF, "IF", 0 },
{ OPCODE_INT, "INT", 1 },
{ OPCODE_KIL, "KIL", 1 },
{ OPCODE_KIL_NV, "KIL", 0 },
{ OPCODE_LG2, "LG2", 1 },
{ OPCODE_LIT, "LIT", 1 },
{ OPCODE_LOG, "LOG", 1 },
{ OPCODE_LRP, "LRP", 3 },
{ OPCODE_MAD, "MAD", 3 },
{ OPCODE_MAX, "MAX", 2 },
{ OPCODE_MIN, "MIN", 2 },
{ OPCODE_MOV, "MOV", 1 },
{ OPCODE_MUL, "MUL", 2 },
{ OPCODE_NOISE1, "NOISE1", 1 },
{ OPCODE_NOISE2, "NOISE2", 1 },
{ OPCODE_NOISE3, "NOISE3", 1 },
{ OPCODE_NOISE4, "NOISE4", 1 },
{ OPCODE_PK2H, "PK2H", 1 },
{ OPCODE_PK2US, "PK2US", 1 },
{ OPCODE_PK4B, "PK4B", 1 },
{ OPCODE_PK4UB, "PK4UB", 1 },
{ OPCODE_POW, "POW", 2 },
{ OPCODE_POPA, "POPA", 0 },
{ OPCODE_PRINT, "PRINT", 1 },
{ OPCODE_PUSHA, "PUSHA", 0 },
{ OPCODE_RCC, "RCC", 1 },
{ OPCODE_RCP, "RCP", 1 },
{ OPCODE_RET, "RET", 0 },
{ OPCODE_RFL, "RFL", 1 },
{ OPCODE_RSQ, "RSQ", 1 },
{ OPCODE_SCS, "SCS", 1 },
{ OPCODE_SEQ, "SEQ", 2 },
{ OPCODE_SFL, "SFL", 0 },
{ OPCODE_SGE, "SGE", 2 },
{ OPCODE_SGT, "SGT", 2 },
{ OPCODE_SIN, "SIN", 1 },
{ OPCODE_SLE, "SLE", 2 },
{ OPCODE_SLT, "SLT", 2 },
{ OPCODE_SNE, "SNE", 2 },
{ OPCODE_SSG, "SSG", 1 },
{ OPCODE_STR, "STR", 0 },
{ OPCODE_SUB, "SUB", 2 },
{ OPCODE_SWZ, "SWZ", 1 },
{ OPCODE_TEX, "TEX", 1 },
{ OPCODE_TXB, "TXB", 1 },
{ OPCODE_TXD, "TXD", 3 },
{ OPCODE_TXL, "TXL", 1 },
{ OPCODE_TXP, "TXP", 1 },
{ OPCODE_TXP_NV, "TXP", 1 },
{ OPCODE_UP2H, "UP2H", 1 },
{ OPCODE_UP2US, "UP2US", 1 },
{ OPCODE_UP4B, "UP4B", 1 },
{ OPCODE_UP4UB, "UP4UB", 1 },
{ OPCODE_X2D, "X2D", 3 },
{ OPCODE_XPD, "XPD", 2 }
{ OPCODE_NOP, "NOP", 0, 0 },
{ OPCODE_ABS, "ABS", 1, 1 },
{ OPCODE_ADD, "ADD", 2, 1 },
{ OPCODE_ARA, "ARA", 1, 1 },
{ OPCODE_ARL, "ARL", 1, 1 },
{ OPCODE_ARL_NV, "ARL", 1, 1 },
{ OPCODE_ARR, "ARL", 1, 1 },
{ OPCODE_BGNLOOP,"BGNLOOP", 0, 0 },
{ OPCODE_BGNSUB, "BGNSUB", 0, 0 },
{ OPCODE_BRA, "BRA", 0, 0 },
{ OPCODE_BRK, "BRK", 0, 0 },
{ OPCODE_CAL, "CAL", 0, 0 },
{ OPCODE_CMP, "CMP", 3, 1 },
{ OPCODE_CONT, "CONT", 0, 0 },
{ OPCODE_COS, "COS", 1, 1 },
{ OPCODE_DDX, "DDX", 1, 1 },
{ OPCODE_DDY, "DDY", 1, 1 },
{ OPCODE_DP3, "DP3", 2, 1 },
{ OPCODE_DP4, "DP4", 2, 1 },
{ OPCODE_DPH, "DPH", 2, 1 },
{ OPCODE_DST, "DST", 2, 1 },
{ OPCODE_ELSE, "ELSE", 0, 0 },
{ OPCODE_END, "END", 0, 0 },
{ OPCODE_ENDIF, "ENDIF", 0, 0 },
{ OPCODE_ENDLOOP,"ENDLOOP", 0, 0 },
{ OPCODE_ENDSUB, "ENDSUB", 0, 0 },
{ OPCODE_EX2, "EX2", 1, 1 },
{ OPCODE_EXP, "EXP", 1, 1 },
{ OPCODE_FLR, "FLR", 1, 1 },
{ OPCODE_FRC, "FRC", 1, 1 },
{ OPCODE_IF, "IF", 1, 0 },
{ OPCODE_INT, "INT", 1, 1 },
{ OPCODE_KIL, "KIL", 1, 0 },
{ OPCODE_KIL_NV, "KIL", 0, 0 },
{ OPCODE_LG2, "LG2", 1, 1 },
{ OPCODE_LIT, "LIT", 1, 1 },
{ OPCODE_LOG, "LOG", 1, 1 },
{ OPCODE_LRP, "LRP", 3, 1 },
{ OPCODE_MAD, "MAD", 3, 1 },
{ OPCODE_MAX, "MAX", 2, 1 },
{ OPCODE_MIN, "MIN", 2, 1 },
{ OPCODE_MOV, "MOV", 1, 1 },
{ OPCODE_MUL, "MUL", 2, 1 },
{ OPCODE_NOISE1, "NOISE1", 1, 1 },
{ OPCODE_NOISE2, "NOISE2", 1, 1 },
{ OPCODE_NOISE3, "NOISE3", 1, 1 },
{ OPCODE_NOISE4, "NOISE4", 1, 1 },
{ OPCODE_PK2H, "PK2H", 1, 1 },
{ OPCODE_PK2US, "PK2US", 1, 1 },
{ OPCODE_PK4B, "PK4B", 1, 1 },
{ OPCODE_PK4UB, "PK4UB", 1, 1 },
{ OPCODE_POW, "POW", 2, 1 },
{ OPCODE_POPA, "POPA", 0, 0 },
{ OPCODE_PRINT, "PRINT", 1, 0 },
{ OPCODE_PUSHA, "PUSHA", 0, 0 },
{ OPCODE_RCC, "RCC", 1, 1 },
{ OPCODE_RCP, "RCP", 1, 1 },
{ OPCODE_RET, "RET", 0, 0 },
{ OPCODE_RFL, "RFL", 1, 1 },
{ OPCODE_RSQ, "RSQ", 1, 1 },
{ OPCODE_SCS, "SCS", 1, 1 },
{ OPCODE_SEQ, "SEQ", 2, 1 },
{ OPCODE_SFL, "SFL", 0, 1 },
{ OPCODE_SGE, "SGE", 2, 1 },
{ OPCODE_SGT, "SGT", 2, 1 },
{ OPCODE_SIN, "SIN", 1, 1 },
{ OPCODE_SLE, "SLE", 2, 1 },
{ OPCODE_SLT, "SLT", 2, 1 },
{ OPCODE_SNE, "SNE", 2, 1 },
{ OPCODE_SSG, "SSG", 1, 1 },
{ OPCODE_STR, "STR", 0, 1 },
{ OPCODE_SUB, "SUB", 2, 1 },
{ OPCODE_SWZ, "SWZ", 1, 1 },
{ OPCODE_TEX, "TEX", 1, 1 },
{ OPCODE_TXB, "TXB", 1, 1 },
{ OPCODE_TXD, "TXD", 3, 1 },
{ OPCODE_TXL, "TXL", 1, 1 },
{ OPCODE_TXP, "TXP", 1, 1 },
{ OPCODE_TXP_NV, "TXP", 1, 1 },
{ OPCODE_UP2H, "UP2H", 1, 1 },
{ OPCODE_UP2US, "UP2US", 1, 1 },
{ OPCODE_UP4B, "UP4B", 1, 1 },
{ OPCODE_UP4UB, "UP4UB", 1, 1 },
{ OPCODE_X2D, "X2D", 3, 1 },
{ OPCODE_XPD, "XPD", 2, 1 }
};
@@ -250,6 +251,29 @@ _mesa_num_inst_src_regs(gl_inst_opcode opcode)
}
/**
* Return the number of dst registers for the given instruction/opcode.
*/
GLuint
_mesa_num_inst_dst_regs(gl_inst_opcode opcode)
{
ASSERT(opcode == InstInfo[opcode].Opcode);
ASSERT(OPCODE_XPD == InstInfo[OPCODE_XPD].Opcode);
return InstInfo[opcode].NumDstRegs;
}
GLboolean
_mesa_is_tex_instruction(gl_inst_opcode opcode)
{
return (opcode == OPCODE_TEX ||
opcode == OPCODE_TXB ||
opcode == OPCODE_TXD ||
opcode == OPCODE_TXL ||
opcode == OPCODE_TXP);
}
/**
* Return string name for given program opcode.
*/
+6
View File
@@ -443,6 +443,12 @@ _mesa_free_instructions(struct prog_instruction *inst, GLuint count);
extern GLuint
_mesa_num_inst_src_regs(gl_inst_opcode opcode);
extern GLuint
_mesa_num_inst_dst_regs(gl_inst_opcode opcode);
extern GLboolean
_mesa_is_tex_instruction(gl_inst_opcode opcode);
extern const char *
_mesa_opcode_string(gl_inst_opcode opcode);