+ if (branch->num_src == 2) {
+ b->branch.arg0_source = get_scl_reg_index(&branch->src[0], 0);
+ b->branch.arg1_source = get_scl_reg_index(&branch->src[1], 0);
+ b->branch.cond_gt = branch->cond_gt;
+ b->branch.cond_eq = branch->cond_eq;
+ b->branch.cond_lt = branch->cond_lt;
+ } else if (branch->num_src == 0) {
+ /* Unconditional branch */
+ b->branch.arg0_source = 0;
+ b->branch.arg1_source = 0;
+ b->branch.cond_gt = true;
+ b->branch.cond_eq = true;
+ b->branch.cond_lt = true;
+ } else {
+ assert(false);
+ }
+
+ target = branch->target;
+ while (list_is_empty(&target->instr_list)) {
+ if (!target->list.next)
+ break;
+ target = LIST_ENTRY(ppir_block, target->list.next, list);
+ }
+
+ assert(!list_is_empty(&target->instr_list));
+
+ target_instr = list_first_entry(&target->instr_list, ppir_instr, list);