Lines Matching defs:program

54 get_ssa(Program* program, unsigned block_idx, ssa_state* state, bool input)
61 Operand output = get_ssa(program, block_idx, state, true);
69 return Operand(program->lane_mask);
71 Block& block = program->blocks[block_idx];
76 op = Operand::zero(program->lane_mask.bytes());
79 op = get_ssa(program, block.linear_preds[0], state, false);
88 state->outputs[block_idx] = Operand(Temp(program->allocateTmp(program->lane_mask)));
94 ops[i] = get_ssa(program, block.linear_preds[i], state, false);
107 op = Operand(Temp(program->allocateTmp(program->lane_mask)));
118 assert(op.size() == program->lane_mask.size());
138 build_merge_code(Program* program, ssa_state* state, Block* block, Operand cur)
142 Operand prev = get_ssa(program, block_idx, state, true);
144 cur = Operand::zero(program->lane_mask.bytes());
146 Builder bld(program);
196 init_any_pred_defined(Program* program, ssa_state* state, Block* block, aco_ptr<Instruction>& phi)
205 for (unsigned succ : program->blocks[block->logical_preds[i]].linear_succs)
214 while (program->blocks[start - 1].loop_nest_depth >= state->loop_nest_depth)
218 if (program->blocks[start].linear_preds.size() > 1)
223 while (program->blocks[end].loop_nest_depth >= state->loop_nest_depth)
234 if (program->blocks[start].linear_preds.size() > 1) {
244 for (unsigned succ : program->blocks[j].linear_succs)
252 lower_divergent_bool_phi(Program* program, ssa_state* state, Block* block,
255 Builder bld(program);
262 state->all_preds_uniform && (program->blocks[pred].kind & block_kind_uniform);
272 state->visited.resize(program->blocks.size());
273 state->outputs.resize(program->blocks.size());
274 state->any_pred_defined.resize(program->blocks.size());
279 init_any_pred_defined(program, state, block, phi);
292 build_merge_code(program, state, &program->blocks[block->logical_preds[i]], phi->operands[i]);
306 phi->operands[i] = get_ssa(program, block->linear_preds[i], state, false);
312 lower_subdword_phis(Program* program, Block* block, aco_ptr<Instruction>& phi)
314 Builder bld(program);
322 Block* pred = &program->blocks[block->logical_preds[i]];
339 lower_phis(Program* program)
343 for (Block& block : program->blocks) {
347 assert(program->wave_size == 64 ? phi->definitions[0].regClass() != s1
349 if (phi->definitions[0].regClass() == program->lane_mask)
350 lower_divergent_bool_phi(program, &state, &block, phi);
352 lower_subdword_phis(program, &block, phi);