Equivalence check.
See Node.opIndex.
Semantic hash.
Provides an iterator over this node's in-edges.
At least two outgoing control flow edges, only one of which will be taken.
Provides an iterator over this node's out-edges.
Frees all resources allocated by this node and sets it to an uninitialized state.
Initializes a conditional node, must be later disposed.
Incoming control flow edge.
Data selector used to choose the taken branch.
Post-move adjusts in-edge slots' owner pointer.
Conditional nodes are technically redundant in the IR, since they could be emulated by a jump into the result of a mux node. In the worst case, however, this would require one extra instantiation node for each branch, so we define this as a dedicated control branch operation.
Directs control flow to exactly one of multiple possible edges.
The choice of which branch to take is controled by a data dependency interpreted as an unsigned integer indexing an array of options. If the selector's value does not match the index of any option, program behavior is undefined. A Gyre compiler may assume that this never happens and either issue warnings / errors or optimize accordingly (e.g. by assuming that the selector's value is one of the valid indexes, if control flow reaches this node).