/third_party/mesa3d/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, in compute_block_liveness() argument 42 memcpy(tmp_live, live->live_out[block->index], in compute_block_liveness() 74 memcpy(live->live_in[block->index], tmp_live, in compute_block_liveness() 81 if (tmp_live[j] & ~live->live_out[pred->index][j]) in compute_block_liveness() 83 live->live_out[pred->index][j] |= tmp_live[j]; in compute_block_liveness() 93 if (!BITSET_TEST(live->live_out[pred->index], name)) { in compute_block_liveness() 95 BITSET_SET(live->live_out[pred->index], name); in compute_block_liveness() 103 BITSET_FOREACH_SET (name, tmp_live, live->definitions_count) { in compute_block_liveness() 104 struct ir3_register *reg = live in compute_block_liveness() 120 struct ir3_liveness *live = rzalloc(mem_ctx, struct ir3_liveness); ir3_calc_liveness() local 170 ir3_def_live_after(struct ir3_liveness *live, struct ir3_register *def, struct ir3_instruction *instr) ir3_def_live_after() 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 in can_skip_interference() 165 * given merge set will form a tree. If they didn't, then one live value in can_skip_interference() 166 * would partially overlap another, and they would have overlapping live in can_skip_interference() 167 * ranges because they're live at the same point. This simplifies register in can_skip_interference() 249 merge_sets_interfere(struct ir3_liveness *live, struct ir3_merge_set *a, in merge_sets_interfere() argument 253 return merge_sets_interfere(live, b, a, -b_offset); in merge_sets_interfere() 310 * whether dom[i] is live after current. in merge_sets_interfere() 312 if (ir3_def_live_after(live, do in merge_sets_interfere() 323 try_merge_defs(struct ir3_liveness *live, struct ir3_register *a, struct ir3_register *b, unsigned b_offset) try_merge_defs() argument 357 coalesce_phi(struct ir3_liveness *live, struct ir3_instruction *phi) coalesce_phi() argument 366 aggressive_coalesce_parallel_copy(struct ir3_liveness *live, struct ir3_instruction *pcopy) aggressive_coalesce_parallel_copy() argument 377 aggressive_coalesce_split(struct ir3_liveness *live, struct ir3_instruction *split) aggressive_coalesce_split() argument 385 aggressive_coalesce_collect(struct ir3_liveness *live, struct ir3_instruction *collect) aggressive_coalesce_collect() argument 479 index_merge_sets(struct ir3_liveness *live, struct ir3 *ir) index_merge_sets() argument 545 ir3_merge_regs(struct ir3_liveness *live, struct ir3 *ir) ir3_merge_regs() argument [all...] |
H A D | ir3_spill.c | 95 * a record of the new live-out set for this block. 100 * values should be live at the end. 113 /* rb tree of live intervals that we can spill, ordered by next-use distance. 133 struct ir3_liveness *live; member 216 ctx->live->definitions_count * sizeof(*tmp_next_use)); in compute_block_next_distance() 252 ctx->live->definitions_count * sizeof(*tmp_next_use)); in compute_block_next_distance() 260 * variables that are live-through the loop but not used inside it are in compute_block_next_distance() 267 for (unsigned j = 0; j < ctx->live->definitions_count; j++) { in compute_block_next_distance() 299 for (unsigned i = 0; i < ctx->live->block_count; i++) { in compute_next_distance() 301 ralloc_array(ctx, unsigned, ctx->live in compute_next_distance() 504 spill_ctx_init(struct ra_spill_ctx *ctx, struct ir3_shader_variant *v, struct ir3_liveness *live) spill_ctx_init() argument 2029 fixup_merge_sets(struct ir3_liveness *live, struct ir3 *ir) fixup_merge_sets() argument 2062 ir3_calc_pressure(struct ir3_shader_variant *v, struct ir3_liveness *live, struct ir3_pressure *max_pressure) ir3_calc_pressure() argument 2081 ir3_spill(struct ir3 *ir, struct ir3_shader_variant *v, struct ir3_liveness **live, const struct ir3_pressure *limit_pressure) ir3_spill() argument [all...] |
/third_party/mesa3d/src/panfrost/bifrost/ |
H A D | bi_opt_dce.c | 38 uint8_t *live = rzalloc_array(block, uint8_t, temp_count); in bi_opt_dead_code_eliminate() local 42 live[i] |= succ->live_in[i]; in bi_opt_dead_code_eliminate() 61 if (index < temp_count && !(live[index] & bi_writemask(ins, d))) in bi_opt_dead_code_eliminate() 70 bi_liveness_ins_update(live, ins, temp_count); in bi_opt_dead_code_eliminate() 74 block->live_in = live; in bi_opt_dead_code_eliminate() 81 bi_postra_liveness_ins(uint64_t live, bi_instr *ins) in bi_postra_liveness_ins() argument 87 live &= ~(BITFIELD64_MASK(nr) << reg); in bi_postra_liveness_ins() 95 live |= (BITFIELD64_MASK(nr) << reg); in bi_postra_liveness_ins() 99 return live; in bi_postra_liveness_ins() 108 uint64_t live in bi_postra_liveness_block() local 158 uint64_t live = block->reg_live_out; bi_opt_dce_post_ra() local [all...] |
H A D | bi_liveness.c | 35 bi_liveness_ins_update(uint8_t *live, bi_instr *ins, unsigned max) in bi_liveness_ins_update() argument 43 live[node] &= ~bi_writemask(ins, d); in bi_liveness_ins_update() 53 live[node] |= mask; in bi_liveness_ins_update() 68 uint8_t *live = ralloc_array(blk, uint8_t, temp_count); in liveness_block_update() local 69 memcpy(live, blk->live_out, temp_count); in liveness_block_update() 72 bi_liveness_ins_update(live, ins, temp_count); in liveness_block_update() 77 progress |= (blk->live_in[i] != live[i]); in liveness_block_update() 80 blk->live_in = live; in liveness_block_update()
|
H A D | bi_pressure_schedule.c | 37 uint8_t *live; member 39 /* Size of the live set */ 221 * instruction. Equivalently, calculate the difference in the number of live 222 * registers before and after the instruction, given the live set after the 229 calculate_pressure_delta(bi_instr *I, uint8_t *live, unsigned max) in calculate_pressure_delta() argument 237 if (node < max && live[node]) in calculate_pressure_delta() 256 if (!dupe && !live[node]) in calculate_pressure_delta() 274 int32_t delta = calculate_pressure_delta(n->instr, s->live, s->max); in choose_instr() 293 memcpy(s->live, block->live_out, s->max); in pressure_schedule_block() 296 pressure += calculate_pressure_delta(I, s->live, in pressure_schedule_block() 342 uint8_t *live = ralloc_array(memctx, uint8_t, temp_count); bi_pressure_schedule() local [all...] |
/third_party/mesa3d/src/gallium/drivers/r600/sb/ |
H A D | sb_liveness.cpp | 42 n.live_after = live; in visit() 46 n.live_before = live; in visit() 53 n.live_after = live; in visit() 55 n.live_before = live; in visit() 73 n.live_after = live; in visit() 77 n.live_before = live; in visit() 112 val_set s = live; in visit() 119 n.live_after = live; in visit() 121 live.clear(); in visit() 133 n.live_before = live; in visit() [all...] |
/third_party/mesa3d/src/compiler/nir/ |
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; in set_src_live() local 81 return true; /* undefined variables are never live */ in set_src_live() 83 BITSET_SET(live, src->ssa->index); in set_src_live() 91 BITSET_WORD *live = void_live; in set_ssa_def_dead() local 93 BITSET_CLEAR(live, def->index); in set_ssa_def_dead() 98 /** Propagates the live in of succ across the edge to the live ou 111 BITSET_WORD *live = state->tmp_live; propagate_across_edge() local 248 BITSET_WORD *live = ralloc_array(mem_ctx, BITSET_WORD, bitset_words); nir_get_live_ssa_defs() local [all...] |
H A D | nir_remove_dead_variables.c | 65 add_var_use_deref(nir_deref_instr *deref, struct set *live) in add_var_use_deref() argument 71 * make them live. Only keep them if they are used by some intrinsic. in add_var_use_deref() 89 _mesa_set_add(live, var); in add_var_use_deref() 96 add_var_use_shader(nir_shader *shader, struct set *live, nir_variable_mode modes) in add_var_use_shader() argument 103 add_var_use_deref(nir_instr_as_deref(instr), live); in add_var_use_shader() local 163 struct set *live, const nir_remove_dead_variables_options *opts) in remove_dead_vars() 175 struct set_entry *entry = _mesa_set_search(live, var); in remove_dead_vars() 192 struct set *live = _mesa_pointer_set_create(NULL); in nir_remove_dead_variables() local 194 add_var_use_shader(shader, live, modes); in nir_remove_dead_variables() 198 live, opt in nir_remove_dead_variables() 162 remove_dead_vars(struct exec_list *var_list, nir_variable_mode modes, struct set *live, const nir_remove_dead_variables_options *opts) remove_dead_vars() argument [all...] |
/third_party/mesa3d/src/panfrost/util/ |
H A D | pan_liveness.c | 33 pan_liveness_gen(uint16_t *live, unsigned node, unsigned max, uint16_t mask) in pan_liveness_gen() argument 38 live[node] |= mask; in pan_liveness_gen() 42 pan_liveness_kill(uint16_t *live, unsigned node, unsigned max, uint16_t mask) in pan_liveness_kill() argument 47 live[node] &= ~mask; in pan_liveness_kill() 51 pan_liveness_get(uint16_t *live, unsigned node, uint16_t max) in pan_liveness_get() argument 56 return live[node]; in pan_liveness_get() 83 uint16_t *live = ralloc_array(blk, uint16_t, temp_count); in liveness_block_update() local 84 memcpy(live, blk->live_out, temp_count * sizeof(uint16_t)); in liveness_block_update() 87 callback(live, (void *) ins, temp_count); in liveness_block_update() 92 progress |= (blk->live_in[i] != live[ in liveness_block_update() [all...] |
/third_party/ffmpeg/tests/fate/ |
H A D | webm-dash-manifest.mak | 13 FATE_WEBM_DASH_MANIFEST += fate-webm-dash-manifest-live 14 fate-webm-dash-manifest-live: CMD = run $(FFMPEG) -nostdin -f webm_dash_manifest -live 1 -i $(TARGET_SAMPLES)/vp8/dash_live_video_360.hdr -f webm_dash_manifest -live 1 -i $(TARGET_SAMPLES)/vp8/dash_live_audio_171.hdr -c copy -map 0 -map 1 -fflags +bitexact -f webm_dash_manifest -live 1 -adaptation_sets "id=0,streams=0 id=1,streams=1" -chunk_start_index 1 -chunk_duration_ms 5000 -time_shift_buffer_depth 7200 -minimum_update_period 60 - 16 FATE_WEBM_DASH_MANIFEST += fate-webm-dash-manifest-live-bandwidth 17 fate-webm-dash-manifest-live-bandwidth: CMD = run $(FFMPEG) -nostdin -f webm_dash_manifest -live 1 -bandwidth 100 -i $(TARGET_SAMPLES)/vp8/dash_live_video_360.hdr -f webm_dash_manifest -live 1 -bandwidth 200 -i $(TARGET_SAMPLES)/vp8/dash_live_audio_171.hdr -c copy -map 0 -map 1 -fflags +bitexact -f webm_dash_manifest -live [all...] |
H A D | hlsenc.mak | 8 FATE_HLSENC-$(call ALLYES, HLS_DEMUXER MPEGTS_MUXER MPEGTS_DEMUXER AEVALSRC_FILTER LAVFI_INDEV MP2FIXED_ENCODER) += fate-hls-live-no-endlist 9 fate-hls-live-no-endlist: tests/data/live_no_endlist.m3u8 10 fate-hls-live-no-endlist: SRC = $(TARGET_PATH)/tests/data/live_no_endlist.m3u8 11 fate-hls-live-no-endlist: CMD = md5 -i $(SRC) -af hdcd=process_stereo=false -t 6 -f s24le 12 fate-hls-live-no-endlist: CMP = oneline 13 fate-hls-live-no-endlist: REF = e038bb8e65d4c1745b9b3ed643e607a3 22 FATE_HLSENC-$(call ALLYES, HLS_DEMUXER MPEGTS_MUXER MPEGTS_DEMUXER AEVALSRC_FILTER LAVFI_INDEV MP2FIXED_ENCODER) += fate-hls-live-last-endlist 23 fate-hls-live-last-endlist: tests/data/live_last_endlist.m3u8 24 fate-hls-live-last-endlist: SRC = $(TARGET_PATH)/tests/data/live_last_endlist.m3u8 25 fate-hls-live [all...] |
/third_party/mesa3d/src/asahi/compiler/ |
H A D | agx_liveness.c | 37 agx_liveness_ins_update(BITSET_WORD *live, agx_instr *I) in agx_liveness_ins_update() argument 41 BITSET_CLEAR(live, I->dest[d].value); in agx_liveness_ins_update() 46 /* If the source is not live after this instruction, but becomes live in agx_liveness_ins_update() 48 I->src[s].kill = !BITSET_TEST(live, I->src[s].value); in agx_liveness_ins_update() 49 BITSET_SET(live, I->src[s].value); in agx_liveness_ins_update() 101 /* Propagate the live in of the successor (blk) to the live out of in agx_compute_liveness() 105 * handle when propagating, we kill writes from phis and make live the in agx_compute_liveness() 109 BITSET_WORD *live in agx_compute_liveness() local [all...] |
/third_party/mesa3d/src/intel/compiler/ |
H A D | brw_fs_register_coalesce.cpp | 100 can_coalesce_vars(const fs_live_variables &live, const cfg_t *cfg, in can_coalesce_vars() argument 104 if (!live.vars_interfere(src_var, dst_var)) in can_coalesce_vars() 107 int dst_start = live.start[dst_var]; in can_coalesce_vars() 108 int dst_end = live.end[dst_var]; in can_coalesce_vars() 109 int src_start = live.start[src_var]; in can_coalesce_vars() 110 int src_end = live.end[src_var]; in can_coalesce_vars() 117 /* Check for a write to either register in the intersection of their live in can_coalesce_vars() 134 /* Ignore anything before the intersection of the live ranges */ in can_coalesce_vars() 150 * during the intersection of their live ranges. One way to do in can_coalesce_vars() 154 * where the destination live rang in can_coalesce_vars() 194 fs_live_variables &live = live_analysis.require(); register_coalesce() local [all...] |
H A D | brw_fs_dead_code_eliminate.cpp | 82 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); in dead_code_eliminate() local 86 memcpy(live, live_vars.block_data[block->num].liveout, in dead_code_eliminate() 97 result_live |= BITSET_TEST(live, var + i); in dead_code_eliminate() 116 BITSET_CLEAR(live, var + i); in dead_code_eliminate() 134 BITSET_SET(live, var + j); in dead_code_eliminate() 145 ralloc_free(live); in dead_code_eliminate()
|
H A D | brw_vec4_dead_code_eliminate.cpp | 46 BITSET_WORD *live = rzalloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars)); in dead_code_eliminate() local 50 memcpy(live, live_vars.block_data[block->num].liveout, in dead_code_eliminate() 63 result_live[c] |= BITSET_TEST(live, v); in dead_code_eliminate() 146 BITSET_CLEAR(live, v); in dead_code_eliminate() 167 BITSET_SET(live, v); in dead_code_eliminate() 181 ralloc_free(live); in dead_code_eliminate()
|
H A D | brw_fs_saturate_propagation.cpp | 48 opt_saturate_propagation_local(const fs_live_variables &live, bblock_t *block) in opt_saturate_propagation_local() argument 64 int src_var = live.var_from_reg(inst->src[0]); in opt_saturate_propagation_local() 65 int src_end_ip = live.end[src_var]; in opt_saturate_propagation_local() 154 const fs_live_variables &live = live_analysis.require(); in opt_saturate_propagation() local 158 progress = opt_saturate_propagation_local(live, block) || progress; in opt_saturate_propagation()
|
/third_party/mesa3d/src/gallium/drivers/lima/ir/gp/ |
H A D | regalloc.c | 46 BITSET_WORD *live; member 60 static void propagate_liveness_node(gpir_node *node, BITSET_WORD *live, in propagate_liveness_node() argument 67 BITSET_CLEAR(live, store->reg->index); in propagate_liveness_node() 75 BITSET_SET(live, load->reg->index); in propagate_liveness_node() 89 memcpy(ctx->live, block->live_out, ctx->bitset_words * sizeof(BITSET_WORD)); in propagate_liveness_block() 92 propagate_liveness_node(node, ctx->live, block->comp); in propagate_liveness_block() 97 changed |= (block->live_in[i] != ctx->live[i]); in propagate_liveness_block() 98 block->live_in[i] = ctx->live[i]; in propagate_liveness_block() 168 /* Make the register or node "i" interfere with all the other live registers 176 BITSET_FOREACH_SET(live_reg, ctx->live, ct in add_all_interferences() 389 gpir_node *live[GPIR_VALUE_REG_NUM + GPIR_PHYSICAL_REG_NUM]; global() member [all...] |
/third_party/node/deps/v8/src/compiler/ |
H A D | graph-trimmer.cc | 23 // Mark end node as live. in TrimGraph() 25 // Compute transitive closure of live nodes. in TrimGraph() 27 Node* const live = live_[i]; in TrimGraph() local 28 for (Node* const input : live->inputs()) MarkAsLive(input); in TrimGraph() 30 // Remove dead->live edges. in TrimGraph() 31 for (Node* const live : live_) { in TrimGraph() 32 DCHECK(IsLive(live)); in TrimGraph() 33 for (Edge edge : live->use_edges()) { in TrimGraph() 38 << ") -> " << *live << std::endl; in TrimGraph()
|
/third_party/mesa3d/src/amd/compiler/ |
H A D | aco_dead_code_analysis.cpp | 41 std::vector<std::vector<bool>> live; member 46 live.reserve(program->blocks.size()); in dce_ctx() 48 live.emplace_back(block.instructions.size()); in dce_ctx() 55 std::vector<bool>& live = ctx.live[block.index]; in process_block() local 56 assert(live.size() == block.instructions.size()); in process_block() 59 if (live[idx]) in process_block() 71 live[idx] = true; in process_block()
|
H A D | aco_live_var_analysis.cpp | 107 process_live_temps_per_block(Program* program, live& lives, Block* block, unsigned& worklist, in process_live_temps_per_block() 115 IDSet live = lives.live_out[block->index]; in process_live_temps_per_block() local 118 for (unsigned t : live) in process_live_temps_per_block() 141 const size_t n = live.erase(temp.id()); in process_live_temps_per_block() 169 const bool inserted = live.insert(temp.id()).second; in process_live_temps_per_block() 211 const size_t n = live.erase(temp.id()); in process_live_temps_per_block() 229 /* now, we need to merge the live-ins into the live-out sets */ in process_live_temps_per_block() 230 for (unsigned t : live) { in process_live_temps_per_block() 252 /* directly insert into the predecessors live in process_live_temps_per_block() [all...] |
/third_party/mesa3d/src/panfrost/midgard/ |
H A D | midgard_liveness.c | 28 mir_liveness_ins_update(uint16_t *live, midgard_instruction *ins, unsigned max) in mir_liveness_ins_update() argument 32 pan_liveness_kill(live, ins->dest, max, mir_bytemask(ins)); in mir_liveness_ins_update() 38 pan_liveness_gen(live, node, max, bytemask); in mir_liveness_ins_update() 43 mir_liveness_ins_update_wrap(uint16_t *live, void *ins, unsigned max) in mir_liveness_ins_update_wrap() argument 45 mir_liveness_ins_update(live, (midgard_instruction *) ins, max); in mir_liveness_ins_update_wrap() 82 /* Check whether we're live in the successors */ in mir_is_live_after()
|
H A D | midgard_opt_dce.c | 74 uint16_t *live = mem_dup(block->base.live_out, ctx->temp_count * sizeof(uint16_t)); in midgard_opt_dead_code_eliminate_block() local 86 unsigned rounded = mir_round_bytemask_up(live[ins->dest], round_size); in midgard_opt_dead_code_eliminate_block() 93 mir_liveness_ins_update(live, ins, ctx->temp_count); in midgard_opt_dead_code_eliminate_block() 103 free(live); in midgard_opt_dead_code_eliminate_block() 112 * live than they actually are, that just reduces the effectiveness of in midgard_opt_dead_code_eliminate()
|
H A D | mir_promote_uniforms.c | 170 mir_count_live(uint16_t *live, unsigned temp_count) in mir_count_live() argument 175 count += util_bitcount(live[i]); in mir_count_live() 190 uint16_t *live = mem_dup(block->base.live_out, ctx->temp_count * sizeof(uint16_t)); in mir_estimate_pressure() local 193 unsigned count = mir_count_live(live, ctx->temp_count); in mir_estimate_pressure() 195 mir_liveness_ins_update(live, ins, ctx->temp_count); in mir_estimate_pressure() 198 free(live); in mir_estimate_pressure()
|
/third_party/mesa3d/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); in ppir_liveness_instr_srcs() local 97 /* reg is read, needs to be live before instr */ in ppir_liveness_instr_srcs() 98 if (live) in ppir_liveness_instr_srcs() 109 if (live && (live_mask == (live_mask | mask))) in ppir_liveness_instr_srcs() 147 bool live = BITSET_TEST(instr->live_set, index); in ppir_liveness_instr_dest() local 151 if (!live && reg->out_reg && (instr != last)) { in ppir_liveness_instr_dest() 160 * a live register and overwrites it. */ in ppir_liveness_instr_dest() 161 if (!live) { in ppir_liveness_instr_dest() 167 /* reg is written and ssa, is not live befor in ppir_liveness_instr_dest() [all...] |