Lines Matching refs:live
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;
216 ctx->live->definitions_count * sizeof(*tmp_next_use));
252 ctx->live->definitions_count * sizeof(*tmp_next_use));
260 * variables that are live-through the loop but not used inside it are
267 for (unsigned j = 0; j < ctx->live->definitions_count; j++) {
299 for (unsigned i = 0; i < ctx->live->block_count; i++) {
301 ralloc_array(ctx, unsigned, ctx->live->definitions_count);
303 ralloc_array(ctx, unsigned, ctx->live->definitions_count);
305 for (unsigned j = 0; j < ctx->live->definitions_count; j++) {
323 ralloc_array(ctx, unsigned, ctx->live->definitions_count);
505 struct ir3_liveness *live)
507 ctx->live = live;
509 ctx->live->definitions_count);
512 ctx->live->definitions_count);
513 for (unsigned i = 0; i < ctx->live->definitions_count; i++)
516 ctx->intervals_count = ctx->live->definitions_count;
824 /* There's a corner case where we reload a value which has overlapping live
915 * register throughout the whole program, so effectively extending its live
1049 * source and that source is live-through, then we need to allocate a new
1050 * register for the destination which is live-through itself and cannot
1117 unsigned offset = ctx->live->interval_offset;
1134 ctx->live->interval_offset += reg_size(def);
1159 * around the sources until each source either (a) is live or (b) has the same
1188 * entries for live-outs that are spilled and reloaded, which can happen here
1189 * and then possibly be undone or done again when processing live-ins of the
1419 /* Note: in the paper they explicitly spill live-through values first, but we
1424 * live-through values as described in the paper to avoid spilling them
1600 * successors so we can't choose what's live in and we can't spill/restore
1602 * it wasn't live in the predecessor then it must've already been spilled. Also,
1603 * there are no phi nodes and no live-ins.
1610 BITSET_FOREACH_SET (name, ctx->live->live_in[block->index],
1611 ctx->live->definitions_count) {
1612 struct ir3_register *reg = ctx->live->definitions[name];
1689 BITSET_FOREACH_SET (name, state->live_out, ctx->live->definitions_count) {
1690 struct ir3_register *reg = ctx->live->definitions[name];
1749 BITSET_WORDS(ctx->live->definitions_count));
1797 BITSET_FOREACH_SET (name, ctx->live->live_in[block->index],
1798 ctx->live->definitions_count) {
1799 struct ir3_register *reg = ctx->live->definitions[name];
1822 BITSET_FOREACH_SET (name, ctx->live->live_in[block->index],
1823 ctx->live->definitions_count) {
1824 struct ir3_register *reg = ctx->live->definitions[name];
1912 /* We insert phi nodes for all live-ins of loops in case we need to split the
1913 * live range. This pass cleans that up for the case where the live range didn't
2029 fixup_merge_sets(struct ir3_liveness *live, struct ir3 *ir)
2058 ir3_merge_regs(live, ir);
2062 ir3_calc_pressure(struct ir3_shader_variant *v, struct ir3_liveness *live,
2066 spill_ctx_init(ctx, v, live);
2082 struct ir3_liveness **live,
2085 void *mem_ctx = ralloc_parent(*live);
2087 spill_ctx_init(ctx, v, *live);
2092 ctx->live->block_count);
2117 ralloc_free(ctx->live);
2118 *live = ir3_calc_liveness(mem_ctx, ir);
2120 fixup_merge_sets(*live, ir);