Searched refs:live (Results 1 - 25 of 108) sorted by relevance

12345

/xsrc/external/mit/MesaLib/dist/src/freedreno/ir3/
H A Dir3_liveness.c34 * is mainly because phi destinations and live-through values have to be
39 compute_block_liveness(struct ir3_liveness *live, struct ir3_block *block, argument
42 memcpy(tmp_live, live->live_out[block->index],
74 memcpy(live->live_in[block->index], tmp_live,
81 if (tmp_live[j] & ~live->live_out[pred->index][j])
83 live->live_out[pred->index][j] |= tmp_live[j];
93 if (!BITSET_TEST(live->live_out[pred->index], name)) {
95 BITSET_SET(live->live_out[pred->index], name);
103 BITSET_FOREACH_SET (name, tmp_live, live->definitions_count) {
104 struct ir3_register *reg = live
120 struct ir3_liveness *live = rzalloc(mem_ctx, struct ir3_liveness); local in function:ir3_calc_liveness
170 ir3_def_live_after(struct ir3_liveness * live,struct ir3_register * def,struct ir3_instruction * instr) argument
[all...]
H A Dir3_merge_regs.c40 * 2. When two values are live at the same time, part of the same merge
55 * register allocation we may have to split the live interval.
164 * it means that at any given point in the program, the live values in a
165 * given merge set will form a tree. If they didn't, then one live value
166 * would partially overlap another, and they would have overlapping live
167 * ranges because they're live at the same point. This simplifies register
249 merge_sets_interfere(struct ir3_liveness *live, struct ir3_merge_set *a, argument
253 return merge_sets_interfere(live, b, a, -b_offset);
310 * whether dom[i] is live after current.
312 if (ir3_def_live_after(live, do
323 try_merge_defs(struct ir3_liveness * live,struct ir3_register * a,struct ir3_register * b,unsigned b_offset) argument
357 coalesce_phi(struct ir3_liveness * live,struct ir3_instruction * phi) argument
366 aggressive_coalesce_parallel_copy(struct ir3_liveness * live,struct ir3_instruction * pcopy) argument
377 aggressive_coalesce_split(struct ir3_liveness * live,struct ir3_instruction * split) argument
385 aggressive_coalesce_collect(struct ir3_liveness * live,struct ir3_instruction * collect) argument
479 index_merge_sets(struct ir3_liveness * live,struct ir3 * ir) argument
545 ir3_merge_regs(struct ir3_liveness * live,struct ir3 * ir) argument
[all...]
/xsrc/external/mit/MesaLib.old/dist/src/compiler/nir/
H A Dnir_remove_dead_variables.c65 add_var_use_deref(nir_deref_instr *deref, struct set *live) argument
76 _mesa_set_add(live, deref->var);
80 add_var_use_shader(nir_shader *shader, struct set *live, nir_variable_mode modes) argument
87 add_var_use_deref(nir_instr_as_deref(instr), live);
95 remove_dead_var_writes(nir_shader *shader, struct set *live) argument
146 remove_dead_vars(struct exec_list *var_list, struct set *live) argument
151 struct set_entry *entry = _mesa_set_search(live, var);
167 struct set *live = _mesa_pointer_set_create(NULL); local in function:nir_remove_dead_variables
169 add_var_use_shader(shader, live, modes);
172 progress = remove_dead_vars(&shader->uniforms, live) || progres
[all...]
H A Dnir_liveness.c39 * live range. This is true because the only way that the definition of an
41 * uses in phi no are in the live-out of the corresponding predecessor
42 * block but not in the live-in of the block containing the phi node.
88 BITSET_WORD *live = void_live; local in function:set_src_live
94 return true; /* undefined variables are never live */
96 BITSET_SET(live, src->ssa->live_index);
104 BITSET_WORD *live = void_live; local in function:set_ssa_def_dead
106 BITSET_CLEAR(live, def->live_index);
111 /** Propagates the live in of succ across the edge to the live ou
[all...]
/xsrc/external/mit/MesaLib/dist/src/panfrost/bifrost/
H A Dbi_opt_dce.c39 uint8_t *live = rzalloc_array(block, uint8_t, temp_count); local in function:bi_opt_dead_code_eliminate
43 live[i] |= succ->live_in[i];
52 if (index < temp_count && !(live[index] & bi_writemask(ins, d)))
61 bi_liveness_ins_update(live, ins, temp_count);
65 block->live_in = live;
72 bi_postra_liveness_ins(uint64_t live, bi_instr *ins) argument
78 live &= ~(BITFIELD64_MASK(nr) << reg);
86 live |= (BITFIELD64_MASK(nr) << reg);
90 return live;
99 uint64_t live local in function:bi_postra_liveness_block
160 uint64_t live = block->reg_live_out; local in function:bi_opt_dce_post_ra
[all...]
H A Dbi_liveness.c35 bi_liveness_ins_update(uint8_t *live, bi_instr *ins, unsigned max) argument
43 live[node] &= ~bi_writemask(ins, d);
53 live[node] |= mask;
68 uint8_t *live = ralloc_array(blk, uint8_t, temp_count); local in function:liveness_block_update
69 memcpy(live, blk->live_out, temp_count);
72 bi_liveness_ins_update(live, (bi_instr *) ins, temp_count);
77 progress |= (blk->live_in[i] != live[i]);
80 blk->live_in = live;
H A DREADME.md16 Anything live during BLEND must respect blend shader registers.
/xsrc/external/mit/MesaLib/dist/src/panfrost/util/
H A Dpan_liveness.c33 pan_liveness_gen(uint16_t *live, unsigned node, unsigned max, uint16_t mask) argument
38 live[node] |= mask;
42 pan_liveness_kill(uint16_t *live, unsigned node, unsigned max, uint16_t mask) argument
47 live[node] &= ~mask;
51 pan_liveness_get(uint16_t *live, unsigned node, uint16_t max) argument
56 return live[node];
83 uint16_t *live = ralloc_array(blk, uint16_t, temp_count); local in function:liveness_block_update
84 memcpy(live, blk->live_out, temp_count * sizeof(uint16_t));
87 callback(live, (void *) ins, temp_count);
92 progress |= (blk->live_in[i] != live[
[all...]
/xsrc/external/mit/MesaLib/dist/src/asahi/compiler/
H A Dagx_liveness.c37 agx_liveness_ins_update(BITSET_WORD *live, agx_instr *I) argument
41 BITSET_CLEAR(live, I->dest[d].value);
46 /* If the source is not live after this instruction, but becomes live
48 I->src[s].kill = !BITSET_TEST(live, I->src[s].value);
49 BITSET_SET(live, I->src[s].value);
66 BITSET_WORD *live = ralloc_array(blk, BITSET_WORD, words); local in function:liveness_block_update
67 memcpy(live, blk->live_out, words * sizeof(BITSET_WORD));
70 agx_liveness_ins_update(live, I);
74 progress |= (blk->live_in[i] != live[
[all...]
/xsrc/external/mit/MesaLib/dist/src/panfrost/midgard/
H A Dmidgard_liveness.c28 mir_liveness_ins_update(uint16_t *live, midgard_instruction *ins, unsigned max) argument
32 pan_liveness_kill(live, ins->dest, max, mir_bytemask(ins));
38 pan_liveness_gen(live, node, max, bytemask);
43 mir_liveness_ins_update_wrap(uint16_t *live, void *ins, unsigned max) argument
45 mir_liveness_ins_update(live, (midgard_instruction *) ins, max);
82 /* Check whether we're live in the successors */
H A Dmidgard_opt_dce.c74 uint16_t *live = mem_dup(block->base.live_out, ctx->temp_count * sizeof(uint16_t)); local in function:midgard_opt_dead_code_eliminate_block
86 unsigned rounded = mir_round_bytemask_up(live[ins->dest], round_size);
93 mir_liveness_ins_update(live, ins, ctx->temp_count);
103 free(live);
112 * live than they actually are, that just reduces the effectiveness of
H A Dmir_promote_uniforms.c170 mir_count_live(uint16_t *live, unsigned temp_count) argument
175 count += util_bitcount(live[i]);
190 uint16_t *live = mem_dup(block->base.live_out, ctx->temp_count * sizeof(uint16_t)); local in function:mir_estimate_pressure
193 unsigned count = mir_count_live(live, ctx->temp_count);
195 mir_liveness_ins_update(live, ins, ctx->temp_count);
198 free(live);
/xsrc/external/mit/MesaLib.old/dist/src/gallium/drivers/r600/sb/
H A Dsb_liveness.cpp42 n.live_after = live;
46 n.live_before = live;
53 n.live_after = live;
55 n.live_before = live;
73 n.live_after = live;
77 n.live_before = live;
112 val_set s = live;
119 n.live_after = live;
121 live.clear();
133 n.live_before = live;
[all...]
/xsrc/external/mit/MesaLib/dist/src/gallium/drivers/r600/sb/
H A Dsb_liveness.cpp42 n.live_after = live;
46 n.live_before = live;
53 n.live_after = live;
55 n.live_before = live;
73 n.live_after = live;
77 n.live_before = live;
112 val_set s = live;
119 n.live_after = live;
121 live.clear();
133 n.live_before = live;
[all...]
/xsrc/external/mit/MesaLib/dist/src/amd/compiler/
H A Daco_dead_code_analysis.cpp41 std::vector<std::vector<bool>> live; member in struct:aco::__anon9a74ab950110::dce_ctx
46 live.reserve(program->blocks.size());
48 live.emplace_back(block.instructions.size());
55 std::vector<bool>& live = ctx.live[block.index]; local in function:aco::__anon9a74ab950110::process_block
56 assert(live.size() == block.instructions.size());
59 if (live[idx])
71 live[idx] = true;
/xsrc/external/mit/MesaLib/dist/src/compiler/nir/
H A Dnir_remove_dead_variables.c65 add_var_use_deref(nir_deref_instr *deref, struct set *live) argument
71 * make them live. Only keep them if they are used by some intrinsic.
89 _mesa_set_add(live, var);
96 add_var_use_shader(nir_shader *shader, struct set *live, nir_variable_mode modes) argument
103 add_var_use_deref(nir_instr_as_deref(instr), live);
163 struct set *live, const nir_remove_dead_variables_options *opts)
175 struct set_entry *entry = _mesa_set_search(live, var);
192 struct set *live = _mesa_pointer_set_create(NULL); local in function:nir_remove_dead_variables
194 add_var_use_shader(shader, live, modes);
198 live, opt
162 remove_dead_vars(struct exec_list * var_list,nir_variable_mode modes,struct set * live,const nir_remove_dead_variables_options * opts) argument
[all...]
H A Dnir_liveness.c39 * live range. This is true because the only way that the definition of an
41 * uses in phi no are in the live-out of the corresponding predecessor
42 * block but not in the live-in of the block containing the phi node.
75 BITSET_WORD *live = void_live; local in function:set_src_live
81 return true; /* undefined variables are never live */
83 BITSET_SET(live, src->ssa->index);
91 BITSET_WORD *live = void_live; local in function:set_ssa_def_dead
93 BITSET_CLEAR(live, def->index);
98 /** Propagates the live in of succ across the edge to the live ou
111 BITSET_WORD *live = state->tmp_live; local in function:propagate_across_edge
248 BITSET_WORD *live = ralloc_array(mem_ctx, BITSET_WORD, bitset_words); local in function:nir_get_live_ssa_defs
[all...]
/xsrc/external/mit/MesaLib.old/dist/src/intel/compiler/
H A Dbrw_fs_dead_code_eliminate.cpp80 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); local in function:fs_visitor::dead_code_eliminate
84 memcpy(live, live_intervals->block_data[block->num].liveout,
95 result_live |= BITSET_TEST(live, var + i);
113 BITSET_CLEAR(live, var + i);
131 BITSET_SET(live, var + j);
140 ralloc_free(live);
H A Dbrw_vec4_dead_code_eliminate.cpp47 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); local in function:vec4_visitor::dead_code_eliminate
51 memcpy(live, live_intervals->block_data[block->num].liveout,
64 result_live[c] |= BITSET_TEST(live, v);
147 BITSET_CLEAR(live, v);
168 BITSET_SET(live, v);
182 ralloc_free(live);
/xsrc/external/mit/MesaLib/dist/src/intel/compiler/
H A Dbrw_fs_dead_code_eliminate.cpp82 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); local in function:fs_visitor::dead_code_eliminate
86 memcpy(live, live_vars.block_data[block->num].liveout,
97 result_live |= BITSET_TEST(live, var + i);
116 BITSET_CLEAR(live, var + i);
134 BITSET_SET(live, var + j);
145 ralloc_free(live);
H A Dbrw_fs_register_coalesce.cpp100 can_coalesce_vars(const fs_live_variables &live, const cfg_t *cfg, argument
104 if (!live.vars_interfere(src_var, dst_var))
107 int dst_start = live.start[dst_var];
108 int dst_end = live.end[dst_var];
109 int src_start = live.start[src_var];
110 int src_end = live.end[src_var];
117 /* Check for a write to either register in the intersection of their live
134 /* Ignore anything before the intersection of the live ranges */
150 * during the intersection of their live ranges. One way to do
154 * where the destination live rang
194 fs_live_variables &live = live_analysis.require(); local in function:fs_visitor::register_coalesce
[all...]
H A Dbrw_vec4_dead_code_eliminate.cpp46 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); local in function:vec4_visitor::dead_code_eliminate
50 memcpy(live, live_vars.block_data[block->num].liveout,
63 result_live[c] |= BITSET_TEST(live, v);
146 BITSET_CLEAR(live, v);
167 BITSET_SET(live, v);
181 ralloc_free(live);
H A Dbrw_fs_saturate_propagation.cpp48 opt_saturate_propagation_local(const fs_live_variables &live, bblock_t *block) argument
64 int src_var = live.var_from_reg(inst->src[0]);
65 int src_end_ip = live.end[src_var];
154 const fs_live_variables &live = live_analysis.require(); local in function:fs_visitor::opt_saturate_propagation
158 progress = opt_saturate_propagation_local(live, block) || progress;
/xsrc/external/mit/MesaLib/dist/src/gallium/drivers/lima/ir/gp/
H A Dregalloc.c46 BITSET_WORD *live; member in struct:regalloc_ctx
60 static void propagate_liveness_node(gpir_node *node, BITSET_WORD *live, argument
67 BITSET_CLEAR(live, store->reg->index);
75 BITSET_SET(live, load->reg->index);
89 memcpy(ctx->live, block->live_out, ctx->bitset_words * sizeof(BITSET_WORD));
92 propagate_liveness_node(node, ctx->live, block->comp);
97 changed |= (block->live_in[i] != ctx->live[i]);
98 block->live_in[i] = ctx->live[i];
168 /* Make the register or node "i" interfere with all the other live registers
176 BITSET_FOREACH_SET(live_reg, ctx->live, ct
389 gpir_node *live[GPIR_VALUE_REG_NUM + GPIR_PHYSICAL_REG_NUM]; member in struct:value_regalloc_ctx
[all...]
/xsrc/external/mit/MesaLib/dist/src/gallium/drivers/lima/ir/pp/
H A Dliveness.c59 * as live registers to the live_in set. */
95 bool live = BITSET_TEST(instr->live_set, index); local in function:ppir_liveness_instr_srcs
97 /* reg is read, needs to be live before instr */
98 if (live)
109 if (live && (live_mask == (live_mask | mask)))
147 bool live = BITSET_TEST(instr->live_set, index); local in function:ppir_liveness_instr_dest
151 * ensure it doesn't get assigned a live register and overwrites it. */
152 if (!live) {
158 /* reg is written and ssa, is not live before instr */
165 * the remaining mask to remove it from the live se
[all...]

Completed in 14 milliseconds

12345