inline void checkStackDepth(r700_AssemblerBase *pAsm, GLuint uReason)
{
- switch (uReason)
- {
- case FC_PUSH_VPM:
- break;
- case FC_PUSH_WQM:
- break;
- case FC_LOOP:
- break;
- case FC_REP:
- break;
- };
+ switch (uReason)\r
+ {\r
+ case FC_PUSH_VPM:\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs++;\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.current++;\r
+ break;\r
+ case FC_PUSH_WQM:\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs++;\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.current += 4;\r
+ break;\r
+ case FC_LOOP:\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs += 4;\r
+ break;\r
+ case FC_REP:\r
+ /* TODO : for 16 vp asic, should += 2; */\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs += 1;\r
+ break;\r
+ };\r
+\r
+ if(pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs\r
+ > pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.max)\r
+ {\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.max =\r
+ pAsm->CALLSTACK[pAsm->CALLSP].stackUsage.su.pushs;\r
+ }
}
GLboolean jumpToOffest(r700_AssemblerBase *pAsm, GLuint pops, GLint offset)
GLboolean assemble_ELSE(r700_AssemblerBase *pAsm)
{
-#ifdef USE_CF_FOR_POP_AFTER
- pops(pAsm, 1);
-#endif /* USE_CF_FOR_POP_AFTER */
-
if(GL_FALSE == add_cf_instruction(pAsm) )
{
return GL_FALSE;
{
return GL_FALSE;
}
-#endif
+#endif\r
+\r
+ checkStackDepth(pAsm, FC_PUSH_VPM);
return GL_TRUE;
}