Mill Computing, Inc. Forums The Mill Architecture Control flow divergence and The Belt Reply To: Control flow divergence and The Belt

Ivan Godard
Keymaster
Post count: 627

Simplifying to two items.
Say A produces two items, which are at b2 and b5 when A->B happens and b4/b7 when A->C happens.

A->B does not carry, so B inherits A’s belt. Hence at B those items are still at b2/b5. B adds an item, so the items are now at b3/b6 when B->C happens.

A->C carries, mapping b4 and b7. Let us say b4 maps to b0 and b7 to b1 (it could have been the other way around; source order is not significant).

B-C carries, mapping b3 to b0 and b6 to b1.

C receives items in b0 and b1 regardless of which path was taken. In this case the items themselves are the save regardless of path, although B could have passed different items instead of just relaying what it got from A.

A carrying branch acts like half a call, except there’s no new frame and no return.