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.
|
* that matters out.
|
||||||
*/
|
*/
|
||||||
if (condition_constant->value.b[0]) {
|
if (condition_constant->value.b[0]) {
|
||||||
foreach_list_safe(n, &ir->then_instructions) {
|
ir->insert_before(&ir->then_instructions);
|
||||||
ir_instruction *then_ir = (ir_instruction *) n;
|
|
||||||
ir->insert_before(then_ir);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
foreach_list_safe(n, &ir->else_instructions) {
|
ir->insert_before(&ir->else_instructions);
|
||||||
ir_instruction *else_ir = (ir_instruction *) n;
|
|
||||||
ir->insert_before(else_ir);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ir->remove();
|
ir->remove();
|
||||||
this->made_progress = true;
|
this->made_progress = true;
|
||||||
|
Reference in New Issue
Block a user