glsl: Small optimization for constant conditionals
Once the relevant branch has been identified do not iterate over the instructions in the branch, do a linked list insertion instead to avoid the loop. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:

committed by
Kenneth Graunke

parent
4472ab9e6d
commit
cda5e0c25e
@@ -90,15 +90,9 @@ ir_if_simplification_visitor::visit_leave(ir_if *ir)
|
||||
* that matters out.
|
||||
*/
|
||||
if (condition_constant->value.b[0]) {
|
||||
foreach_list_safe(n, &ir->then_instructions) {
|
||||
ir_instruction *then_ir = (ir_instruction *) n;
|
||||
ir->insert_before(then_ir);
|
||||
}
|
||||
ir->insert_before(&ir->then_instructions);
|
||||
} else {
|
||||
foreach_list_safe(n, &ir->else_instructions) {
|
||||
ir_instruction *else_ir = (ir_instruction *) n;
|
||||
ir->insert_before(else_ir);
|
||||
}
|
||||
ir->insert_before(&ir->else_instructions);
|
||||
}
|
||||
ir->remove();
|
||||
this->made_progress = true;
|
||||
|
Reference in New Issue
Block a user