| /xsrc/external/mit/MesaLib/dist/src/freedreno/ir3/ |
| H A D | ir3_liveness.c | 34 * 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 D | ir3_merge_regs.c | 40 * 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 D | nir_remove_dead_variables.c | 65 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 D | nir_liveness.c | 39 * 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 D | bi_opt_dce.c | 39 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 D | bi_liveness.c | 35 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 D | README.md | 16 Anything live during BLEND must respect blend shader registers.
|
| /xsrc/external/mit/MesaLib/dist/src/panfrost/util/ |
| H A D | pan_liveness.c | 33 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 D | agx_liveness.c | 37 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 D | midgard_liveness.c | 28 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 D | midgard_opt_dce.c | 74 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 D | mir_promote_uniforms.c | 170 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 D | sb_liveness.cpp | 42 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 D | sb_liveness.cpp | 42 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 D | aco_dead_code_analysis.cpp | 41 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 D | nir_remove_dead_variables.c | 65 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 D | nir_liveness.c | 39 * 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 D | brw_fs_dead_code_eliminate.cpp | 80 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 D | brw_vec4_dead_code_eliminate.cpp | 47 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 D | brw_fs_dead_code_eliminate.cpp | 82 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 D | brw_fs_register_coalesce.cpp | 100 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 D | brw_vec4_dead_code_eliminate.cpp | 46 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 D | brw_fs_saturate_propagation.cpp | 48 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 D | regalloc.c | 46 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 D | liveness.c | 59 * 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...] |