Lines Matching refs:branch
114 /* insert parallelcopies for the linear phis at the end of blocks just before the branch */
183 /* keep the branch instruction and remove the rest */
184 aco_ptr<Instruction> branch = std::move(block->instructions.back());
186 block->instructions.emplace_back(std::move(branch));
208 Pseudo_branch_instruction& branch = pred->instructions.back()->branch();
209 assert(branch.isBranch());
210 branch.target[0] = succ_idx;
211 branch.target[1] = succ_idx;
227 Pseudo_branch_instruction& branch = pred.instructions.back()->branch();
228 if (branch.opcode == aco_opcode::p_branch) {
229 branch.target[0] = succ.index;
230 branch.target[1] = succ.index;
231 } else if (branch.target[0] == block->index) {
232 branch.target[0] = succ.index;
233 } else if (branch.target[0] == succ.index) {
234 assert(branch.target[1] == block->index);
235 branch.target[1] = succ.index;
236 branch.opcode = aco_opcode::p_branch;
237 } else if (branch.target[1] == block->index) {
246 branch.target[1] = succ.index;
249 if (block->index >= branch.target[0])
251 for (unsigned j = block->index + 1; j < branch.target[0]; j++) {
256 /* This is a (uniform) break or continue block. The branch condition has to be inverted. */
257 if (branch.opcode == aco_opcode::p_cbranch_z)
258 branch.opcode = aco_opcode::p_cbranch_nz;
259 else if (branch.opcode == aco_opcode::p_cbranch_nz)
260 branch.opcode = aco_opcode::p_cbranch_z;
266 branch.target[1] = branch.target[0];
267 branch.target[0] = succ.index;
273 if (branch.target[0] == branch.target[1])
274 branch.opcode = aco_opcode::p_branch;