Lines Matching defs:state

153 get_merge_node(nir_ssa_def *def, struct from_ssa_state *state)
156 _mesa_hash_table_search(state->merge_node_table, def);
160 merge_set *set = ralloc(state->dead_ctx, merge_set);
166 merge_node *node = ralloc(state->dead_ctx, merge_node);
171 _mesa_hash_table_insert(state->merge_node_table, def, node);
452 coalesce_phi_nodes_block(nir_block *block, struct from_ssa_state *state)
462 merge_node *dest_node = get_merge_node(&phi->dest.ssa, state);
469 merge_node *src_node = get_merge_node(src->src.ssa, state);
480 struct from_ssa_state *state)
496 merge_node *src_node = get_merge_node(entry->src.ssa, state);
497 merge_node *dest_node = get_merge_node(&entry->dest.ssa, state);
514 aggressive_coalesce_block(nir_block *block, struct from_ssa_state *state)
525 aggressive_coalesce_parallel_copy(start_pcopy, state);
535 aggressive_coalesce_parallel_copy(end_pcopy, state);
555 struct from_ssa_state *state = void_state;
559 _mesa_hash_table_search(state->merge_node_table, def);
569 node->set->reg = create_reg_for_ssa_def(def, state->builder.impl);
575 if (state->phi_webs_only)
584 reg = create_reg_for_ssa_def(def, state->builder.impl);
596 exec_list_push_tail(&state->dead_instrs, &parent_instr->node);
597 state->progress = true;
608 nir_instr_rewrite_dest(state->instr, dest, nir_dest_for_reg(reg));
609 state->progress = true;
617 resolve_registers_block(nir_block *block, struct from_ssa_state *state)
620 state->instr = instr;
621 nir_foreach_ssa_def(instr, rewrite_ssa_def, state);
625 exec_list_push_tail(&state->dead_instrs, &instr->node);
626 state->progress = true;
629 state->instr = NULL;
678 struct from_ssa_state *state)
692 exec_list_push_tail(&state->dead_instrs, &pcopy->instr.node);
709 state->builder.cursor = nir_before_instr(&pcopy->instr);
774 emit_copy(&state->builder, values[loc[a]], values[b]);
815 nir_register *reg = nir_local_reg_create(state->builder.impl);
828 emit_copy(&state->builder, values[b], values[num_vals]);
835 exec_list_push_tail(&state->dead_instrs, &pcopy->instr.node);
843 resolve_parallel_copies_block(nir_block *block, struct from_ssa_state *state)
856 resolve_parallel_copy(pcopy, state);
867 resolve_parallel_copy(end_pcopy, state);
877 struct from_ssa_state state;
879 nir_builder_init(&state.builder, impl);
880 state.dead_ctx = ralloc_context(NULL);
881 state.phi_webs_only = phi_webs_only;
882 state.merge_node_table = _mesa_pointer_hash_table_create(NULL);
883 state.progress = false;
884 exec_list_make_empty(&state.dead_instrs);
887 add_parallel_copy_to_end_of_block(shader, block, state.dead_ctx);
891 isolate_phi_nodes_block(shader, block, state.dead_ctx);
903 coalesce_phi_nodes_block(block, &state);
907 aggressive_coalesce_block(block, &state);
911 resolve_registers_block(block, &state);
915 resolve_parallel_copies_block(block, &state);
922 nir_instr_free_list(&state.dead_instrs);
923 _mesa_hash_table_destroy(state.merge_node_table, NULL);
924 ralloc_free(state.dead_ctx);
925 return state.progress;
1060 struct ssa_def_to_reg_state *state = void_state;
1065 nir_register *reg = create_reg_for_ssa_def(&dest->ssa, state->impl);
1074 state->progress = true;
1080 ssa_def_is_local_to_block(nir_ssa_def *def, UNUSED void *state)
1109 struct ssa_def_to_reg_state state = {
1118 nir_register *reg = create_reg_for_ssa_def(&undef->def, state.impl);
1123 nir_register *reg = create_reg_for_ssa_def(&load->def, state.impl);
1137 nir_foreach_dest(instr, dest_replace_ssa_with_reg, &state);
1141 return state.progress;