glsl/nir: Use nir_builder's new control-flow helpers
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
@@ -520,31 +520,19 @@ nir_visitor::visit(ir_function_signature *ir)
|
|||||||
void
|
void
|
||||||
nir_visitor::visit(ir_loop *ir)
|
nir_visitor::visit(ir_loop *ir)
|
||||||
{
|
{
|
||||||
nir_loop *loop = nir_loop_create(this->shader);
|
nir_push_loop(&b);
|
||||||
nir_builder_cf_insert(&b, &loop->cf_node);
|
|
||||||
|
|
||||||
b.cursor = nir_after_cf_list(&loop->body);
|
|
||||||
visit_exec_list(&ir->body_instructions, this);
|
visit_exec_list(&ir->body_instructions, this);
|
||||||
b.cursor = nir_after_cf_node(&loop->cf_node);
|
nir_pop_loop(&b, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
nir_visitor::visit(ir_if *ir)
|
nir_visitor::visit(ir_if *ir)
|
||||||
{
|
{
|
||||||
nir_src condition =
|
nir_push_if(&b, evaluate_rvalue(ir->condition));
|
||||||
nir_src_for_ssa(evaluate_rvalue(ir->condition));
|
|
||||||
|
|
||||||
nir_if *if_stmt = nir_if_create(this->shader);
|
|
||||||
if_stmt->condition = condition;
|
|
||||||
nir_builder_cf_insert(&b, &if_stmt->cf_node);
|
|
||||||
|
|
||||||
b.cursor = nir_after_cf_list(&if_stmt->then_list);
|
|
||||||
visit_exec_list(&ir->then_instructions, this);
|
visit_exec_list(&ir->then_instructions, this);
|
||||||
|
nir_push_else(&b, NULL);
|
||||||
b.cursor = nir_after_cf_list(&if_stmt->else_list);
|
|
||||||
visit_exec_list(&ir->else_instructions, this);
|
visit_exec_list(&ir->else_instructions, this);
|
||||||
|
nir_pop_if(&b, NULL);
|
||||||
b.cursor = nir_after_cf_node(&if_stmt->cf_node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1193,11 +1181,9 @@ nir_visitor::visit(ir_assignment *ir)
|
|||||||
copy->variables[1] = evaluate_deref(©->instr, ir->rhs);
|
copy->variables[1] = evaluate_deref(©->instr, ir->rhs);
|
||||||
|
|
||||||
if (ir->condition) {
|
if (ir->condition) {
|
||||||
nir_if *if_stmt = nir_if_create(this->shader);
|
nir_push_if(&b, evaluate_rvalue(ir->condition));
|
||||||
if_stmt->condition = nir_src_for_ssa(evaluate_rvalue(ir->condition));
|
nir_builder_instr_insert(&b, ©->instr);
|
||||||
nir_builder_cf_insert(&b, &if_stmt->cf_node);
|
nir_pop_if(&b, NULL);
|
||||||
nir_instr_insert_after_cf_list(&if_stmt->then_list, ©->instr);
|
|
||||||
b.cursor = nir_after_cf_node(&if_stmt->cf_node);
|
|
||||||
} else {
|
} else {
|
||||||
nir_builder_instr_insert(&b, ©->instr);
|
nir_builder_instr_insert(&b, ©->instr);
|
||||||
}
|
}
|
||||||
@@ -1232,11 +1218,9 @@ nir_visitor::visit(ir_assignment *ir)
|
|||||||
store->src[0] = nir_src_for_ssa(src);
|
store->src[0] = nir_src_for_ssa(src);
|
||||||
|
|
||||||
if (ir->condition) {
|
if (ir->condition) {
|
||||||
nir_if *if_stmt = nir_if_create(this->shader);
|
nir_push_if(&b, evaluate_rvalue(ir->condition));
|
||||||
if_stmt->condition = nir_src_for_ssa(evaluate_rvalue(ir->condition));
|
nir_builder_instr_insert(&b, &store->instr);
|
||||||
nir_builder_cf_insert(&b, &if_stmt->cf_node);
|
nir_pop_if(&b, NULL);
|
||||||
nir_instr_insert_after_cf_list(&if_stmt->then_list, &store->instr);
|
|
||||||
b.cursor = nir_after_cf_node(&if_stmt->cf_node);
|
|
||||||
} else {
|
} else {
|
||||||
nir_builder_instr_insert(&b, &store->instr);
|
nir_builder_instr_insert(&b, &store->instr);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user