Lines Matching defs:nif

159    nir_if *nif = nir_cf_node_as_if(if_node);
160 if (!nif->condition.is_ssa)
163 nir_ssa_def *cond = nif->condition.ssa;
186 continue_list = &nif->then_list;
187 entry_list = &nif->else_list;
189 continue_list = &nif->else_list;
190 entry_list = &nif->then_list;
218 nir_cf_node_as_block(nir_cf_node_next(&nif->cf_node));
227 nir_foreach_block_in_cf_node(block, &nif->cf_node)
267 nir_cf_node_remove(&nif->cf_node);
775 nir_if *nif = NULL;
786 nif = nir_cf_node_as_if(if_node);
787 nir_block *then_block = nir_if_last_then_block(nif);
788 nir_block *else_block = nir_if_last_else_block(nif);
811 if (!nif || (!then_ends_in_continue && !else_ends_in_continue))
815 if (&nif->cf_node == nir_cf_node_prev(&last_block->cf_node) &&
829 nir_cf_reinsert(&tmp, nir_after_cf_list(&nif->else_list));
831 nir_cf_reinsert(&tmp, nir_after_cf_list(&nif->then_list));
845 rewrite_phi_predecessor_blocks(nir_if *nif,
852 nir_cf_node_as_block(nir_cf_node_next(&nif->cf_node));
886 opt_if_simplification(nir_builder *b, nir_if *nif)
889 if (!is_block_empty(nir_if_first_then_block(nif)) ||
890 is_block_empty(nir_if_first_else_block(nif)))
894 nir_instr *src_instr = nif->condition.ssa->parent_instr;
908 nir_if_rewrite_condition(nif, nir_src_for_ssa(new_condition));
911 nir_block *then_block = nir_if_last_then_block(nif);
912 nir_block *else_block = nir_if_last_else_block(nif);
921 nir_cf_node_as_block(nir_cf_node_next(&nif->cf_node));
925 rewrite_phi_predecessor_blocks(nif, then_block, else_block, else_block,
930 nir_cf_extract(&tmp, nir_before_cf_list(&nif->else_list),
931 nir_after_cf_list(&nif->else_list));
932 nir_cf_reinsert(&tmp, nir_before_cf_list(&nif->then_list));
941 opt_if_phi_is_condition(nir_builder *b, nir_if *nif)
944 nir_block *then_block = nir_if_last_then_block(nif);
945 nir_block *else_block = nir_if_last_else_block(nif);
946 nir_ssa_def *cond = nif->condition.ssa;
949 nir_block *after_if_block = nir_cf_node_as_block(nir_cf_node_next(&nif->cf_node));
982 b->cursor = nir_before_cf_node(&nif->cf_node);
1058 opt_merge_breaks(nir_if *nif)
1060 nir_block *last_then = nir_if_last_then_block(nif);
1061 nir_block *last_else = nir_if_last_else_block(nif);
1067 nir_block *after_if = nir_cf_node_cf_tree_next(&nif->cf_node);
1093 nir_cf_node *first = nir_cf_node_next(&nif->cf_node);
1147 opt_if_loop_terminator(nir_if *nif)
1153 nir_block *last_then = nir_if_last_then_block(nif);
1154 nir_block *last_else = nir_if_last_else_block(nif);
1173 nir_if_first_then_block(nif) :
1174 nir_if_first_else_block(nif);
1186 nir_opt_remove_phis_block(nir_cf_node_as_block(nir_cf_node_next(&nif->cf_node)));
1192 nir_cf_reinsert(&tmp, nir_after_cf_node(&nif->cf_node));
1198 evaluate_if_condition(nir_if *nif, nir_cursor cursor, bool *value)
1201 if (nir_block_dominates(nir_if_first_then_block(nif), use_block)) {
1204 } else if (nir_block_dominates(nir_if_first_else_block(nif), use_block)) {
1288 propagate_condition_eval(nir_builder *b, nir_if *nif, nir_src *use_src,
1294 if (!evaluate_if_condition(nif, b->cursor, &bool_value))
1340 evaluate_condition_use(nir_builder *b, nir_if *nif, nir_src *use_src,
1348 if (evaluate_if_condition(nif, b->cursor, &bool_value)) {
1363 progress |= propagate_condition_eval(b, nif, use_src, alu_use, alu,
1368 progress |= propagate_condition_eval(b, nif, use_src, alu_use, alu,
1377 opt_if_evaluate_condition_use(nir_builder *b, nir_if *nif)
1382 assert(nif->condition.is_ssa);
1383 nir_foreach_use_safe(use_src, nif->condition.ssa) {
1384 progress |= evaluate_condition_use(b, nif, use_src, false);
1387 nir_foreach_if_use_safe(use_src, nif->condition.ssa) {
1388 if (use_src->parent_if != nif)
1389 progress |= evaluate_condition_use(b, nif, use_src, true);
1396 rewrite_comp_uses_within_if(nir_builder *b, nir_if *nif, bool invert,
1401 nir_block *first = invert ? nir_if_first_else_block(nif) : nir_if_first_then_block(nif);
1402 nir_block *last = invert ? nir_if_last_else_block(nif) : nir_if_last_then_block(nif);
1422 b->cursor = nir_before_cf_node(&nif->cf_node);
1453 opt_if_rewrite_uniform_uses(nir_builder *b, nir_if *nif, nir_ssa_scalar cond, bool accept_ine)
1462 progress |= opt_if_rewrite_uniform_uses(b, nif, nir_ssa_scalar_chase_alu_src(cond, 0), false);
1463 progress |= opt_if_rewrite_uniform_uses(b, nif, nir_ssa_scalar_chase_alu_src(cond, 1), false);
1475 return rewrite_comp_uses_within_if(b, nif, op == nir_op_ine, src_div, src_uni);
1490 progress |= rewrite_comp_uses_within_if(b, nif, op == nir_op_ine, resolved_intrin_src, src_uni);
1492 progress |= rewrite_comp_uses_within_if(b, nif, op == nir_op_ine, intrin_src, src_uni);
1518 opt_if_merge(nir_if *nif)
1522 nir_block *next_blk = nir_cf_node_cf_tree_next(&nif->cf_node);
1523 if (!next_blk || !nif->condition.is_ssa)
1548 if (nif->condition.ssa == next_if->condition.ssa &&
1554 if (nir_block_ends_in_jump(nir_if_last_then_block(nif)) ||
1555 nir_block_ends_in_jump(nir_if_last_else_block(nif)))
1558 simple_merge_if(nif, next_if, true, true);
1559 simple_merge_if(nif, next_if, false, false);
1561 nir_block *new_then_block = nir_if_last_then_block(nif);
1562 nir_block *new_else_block = nir_if_last_else_block(nif);
1609 nir_if *nif = nir_cf_node_as_if(cf_node);
1610 progress |= opt_if_cf_list(b, &nif->then_list,
1612 progress |= opt_if_cf_list(b, &nif->else_list,
1614 progress |= opt_if_loop_terminator(nif);
1615 progress |= opt_if_merge(nif);
1616 progress |= opt_if_simplification(b, nif);
1618 progress |= opt_if_phi_is_condition(b, nif);
1654 nir_if *nif = nir_cf_node_as_if(cf_node);
1655 progress |= opt_if_regs_cf_list(&nif->then_list);
1656 progress |= opt_if_regs_cf_list(&nif->else_list);
1657 if (opt_merge_breaks(nif)) {
1661 opt_if_regs_cf_list(&nif->then_list);
1662 opt_if_regs_cf_list(&nif->else_list);
1696 nir_if *nif = nir_cf_node_as_if(cf_node);
1697 progress |= opt_if_safe_cf_list(b, &nif->then_list);
1698 progress |= opt_if_safe_cf_list(b, &nif->else_list);
1699 progress |= opt_if_evaluate_condition_use(b, nif);
1700 nir_ssa_scalar cond = nir_ssa_scalar_resolved(nif->condition.ssa, 0);
1701 progress |= opt_if_rewrite_uniform_uses(b, nif, cond, true);