summaryrefslogtreecommitdiffstats
path: root/src/glsl/loop_analysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
* glsl: Skip the rest of loop unrolling if no loops were found.Eric Anholt2011-01-181-0/+3
| | | | | Shaves 1.6% (+/- 1.0%) off of ff_fragment_shader glean texCombine time (n=5).
* glsl: Free the loop state context when we free the loop state.Eric Anholt2010-11-111-0/+1
| | | | | | | | Since this was talloced off of NULL instead of the compile state, it was a real leak over the course of the program. Noticed with valgrind --leak-check=full --show-reachable=yes. We should really change these passes to generally get the compile context as an argument so simple mistakes like this stop mattering.
* glsl2: Early return with visit_continue in ↵Ian Romanick2010-09-071-1/+1
| | | | | | | | | | | | loop_analysis::visit(ir_dereference_variable *) Returning early with visit_continue_with_parent prevented the then-statements and else-statements of if-statements such as the following from being processed: if (some_var) { ... } else { ... } Fixes piglit test case glsl-fs-loop-nested-if and bugzilla #30030.
* glsl2: Use as_constant some places instead of constant_expression_valueIan Romanick2010-09-031-1/+1
| | | | | | | | | | | The places where constant_expression_value are still used in loop analysis are places where a new expression tree is created and constant folding won't have happened. This is used, for example, when we try to determine the maximal loop iteration count. Based on review comments by Eric. "...rely on constant folding to have done its job, instead of going all through the subtree again when it wasn't a constant."
* glsl2: Track the number of ir_loop_jump instructions that are in a loopIan Romanick2010-09-031-0/+17
|
* glsl2: Add module to analyze variables used in loopsIan Romanick2010-09-031-0/+479
This is the first step eventually leading to loop unrolling.