From de7c3fe31a7b88a5392dceee3b13b45ed78cdeae Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 27 Aug 2010 13:59:49 -0700 Subject: glsl2: Add module to perform simple loop unrolling --- src/glsl/loop_analysis.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/glsl/loop_analysis.h') diff --git a/src/glsl/loop_analysis.h b/src/glsl/loop_analysis.h index f5c5a04be8..893dd46db0 100644 --- a/src/glsl/loop_analysis.h +++ b/src/glsl/loop_analysis.h @@ -56,6 +56,10 @@ extern bool set_loop_controls(exec_list *instructions, loop_state *ls); +extern bool +unroll_loops(exec_list *instructions, loop_state *ls); + + /** * Tracking for all variables used in a loop */ @@ -104,6 +108,15 @@ public: */ hash_table *var_hash; + /** + * Maximum number of loop iterations. + * + * If this value is negative, then the loop may be infinite. This actually + * means that analysis was unable to determine an upper bound on the number + * of loop iterations. + */ + int max_iterations; + /** * Number of ir_loop_jump instructions that operate on this loop */ @@ -111,6 +124,7 @@ public: loop_variable_state() { + this->max_iterations = -1; this->num_loop_jumps = 0; this->var_hash = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); -- cgit v1.2.3