Lines Matching defs:node

36  *    control flow node.
100 link_non_block_to_block(nir_cf_node *node, nir_block *block)
102 if (node->type == nir_cf_node_if) {
108 nir_if *if_stmt = nir_cf_node_as_if(node);
123 assert(node->type == nir_cf_node_loop);
128 link_block_to_non_block(nir_block *block, nir_cf_node *node)
130 if (node->type == nir_cf_node_if) {
136 nir_if *if_stmt = nir_cf_node_as_if(node);
143 } else if (node->type == nir_cf_node_loop) {
150 nir_loop *loop = nir_cf_node_as_loop(node);
180 * an empty header and a body so that another non-block CF node can be inserted
190 exec_node_insert_node_before(&block->cf_node.node, &new_block->cf_node.node);
204 exec_node_remove(&instr->node);
206 exec_list_push_tail(&new_block->instr_list, &instr->node);
281 if (exec_node_is_tail_sentinel(block->cf_node.node.next)) {
324 exec_node_insert_after(&block->cf_node.node, &new_block->cf_node.node);
348 exec_node_remove(&cur_instr->node);
350 exec_list_push_tail(&new_block->instr_list, &cur_instr->node);
412 insert_non_block(nir_block *before, nir_cf_node *node, nir_block *after)
414 node->parent = before->cf_node.parent;
415 exec_node_insert_after(&before->cf_node.node, &node->node);
417 link_block_to_non_block(before, node);
418 link_non_block_to_block(node, after);
423 nearest_loop(nir_cf_node *node)
425 while (node->type != nir_cf_node_loop) {
426 node = node->parent;
429 return nir_cf_node_as_loop(node);
443 exec_node_remove(&src->node);
530 update_if_uses(nir_cf_node *node)
532 if (node->type != nir_cf_node_if)
535 nir_if *if_stmt = nir_cf_node_as_if(node);
572 exec_node_remove(&after->cf_node.node);
580 foreach_list_typed(nir_instr, instr, node, &after->instr_list) {
585 exec_node_remove(&after->cf_node.node);
593 nir_cf_node_insert(nir_cursor cursor, nir_cf_node *node)
599 if (node->type == nir_cf_node_block) {
600 nir_block *block = nir_cf_node_as_block(node);
601 exec_node_insert_after(&before->cf_node.node, &block->cf_node.node);
613 update_if_uses(node);
614 insert_non_block(before, node, after);
633 cleanup_cf_node(nir_cf_node *node, nir_function_impl *impl)
635 switch (node->type) {
637 nir_block *block = nir_cf_node_as_block(node);
654 nir_if *if_stmt = nir_cf_node_as_if(node);
655 foreach_list_typed(nir_cf_node, child, node, &if_stmt->then_list)
657 foreach_list_typed(nir_cf_node, child, node, &if_stmt->else_list)
665 nir_loop *loop = nir_cf_node_as_loop(node);
666 foreach_list_typed(nir_cf_node, child, node, &loop->body)
671 nir_function_impl *impl = nir_cf_node_as_function(node);
672 foreach_list_typed(nir_cf_node, child, node, &impl->body)
677 unreachable("Invalid CF node type");
734 exec_node_remove(&cf_node->node);
736 exec_list_push_tail(&extracted->list, &cf_node->node);
748 relink_jump_halt_cf_node(nir_cf_node *node, nir_block *end_block)
750 switch (node->type) {
752 nir_block *block = nir_cf_node_as_block(node);
771 nir_if *if_stmt = nir_cf_node_as_if(node);
772 foreach_list_typed(nir_cf_node, child, node, &if_stmt->then_list)
774 foreach_list_typed(nir_cf_node, child, node, &if_stmt->else_list)
780 nir_loop *loop = nir_cf_node_as_loop(node);
781 foreach_list_typed(nir_cf_node, child, node, &loop->body)
790 unreachable("Invalid CF node type");
809 foreach_list_typed(nir_cf_node, node, node, &cf_list->list)
810 relink_jump_halt_cf_node(node, cursor_impl->end_block);
815 foreach_list_typed_safe(nir_cf_node, node, node, &cf_list->list) {
816 exec_node_remove(&node->node);
817 node->parent = before->cf_node.parent;
818 exec_node_insert_node_before(&after->cf_node.node, &node->node);
830 foreach_list_typed(nir_cf_node, node, node, &cf_list->list) {
831 cleanup_cf_node(node, cf_list->impl);