Lines Matching refs:ctx

56 collect_phi_info(ssa_elimination_ctx& ctx)
58 for (Block& block : ctx.program->blocks) {
74 auto& info_vec = phi->opcode == aco_opcode::p_phi ? ctx.logical_phi_info[pred_idx]
75 : ctx.linear_phi_info[pred_idx];
77 ctx.empty_blocks[pred_idx] = false;
84 insert_parallelcopies(ssa_elimination_ctx& ctx)
87 for (unsigned block_idx = 0; block_idx < ctx.program->blocks.size(); ++block_idx) {
88 auto& logical_phi_info = ctx.logical_phi_info[block_idx];
92 Block& block = ctx.program->blocks[block_idx];
115 for (unsigned block_idx = 0; block_idx < ctx.program->blocks.size(); ++block_idx) {
116 auto& linear_phi_info = ctx.linear_phi_info[block_idx];
120 Block& block = ctx.program->blocks[block_idx];
171 try_remove_merge_block(ssa_elimination_ctx& ctx, Block* block)
176 !(ctx.program->blocks[block->linear_succs[0]].kind & block_kind_merge))
190 try_remove_invert_block(ssa_elimination_ctx& ctx, Block* block)
204 Block* pred = &ctx.program->blocks[block->linear_preds[i]];
206 ctx.program->blocks[succ_idx].linear_preds[i] = pred->index;
220 try_remove_simple_block(ssa_elimination_ctx& ctx, Block* block)
225 Block& pred = ctx.program->blocks[block->linear_preds[0]];
226 Block& succ = ctx.program->blocks[block->linear_succs[0]];
241 assert(ctx.program->blocks[j].index == j);
242 if (!ctx.program->blocks[j].instructions.empty())
252 if (!ctx.program->blocks[j].instructions.empty())
300 eliminate_useless_exec_writes_in_block(ssa_elimination_ctx& ctx, Block& block)
306 if (!ctx.logical_phi_info[block.index].empty()) {
312 for (const auto& successor_phi_info : ctx.linear_phi_info[block.index]) {
325 [&ctx](int succ_idx) { return ctx.blocks_incoming_exec_used[succ_idx]; });
357 ctx.blocks_incoming_exec_used[block.index] = exec_write_used;
365 jump_threading(ssa_elimination_ctx& ctx)
367 for (int i = ctx.program->blocks.size() - 1; i >= 0; i--) {
368 Block* block = &ctx.program->blocks[i];
369 eliminate_useless_exec_writes_in_block(ctx, *block);
371 if (!ctx.empty_blocks[i])
375 try_remove_invert_block(ctx, block);
383 try_remove_merge_block(ctx, block);
386 try_remove_simple_block(ctx, block);
395 ssa_elimination_ctx ctx(program);
398 collect_phi_info(ctx);
401 jump_threading(ctx);
404 insert_parallelcopies(ctx);