a way to use pipelines to do further work is needed. using the "ctx.op" field is probably the best place to hold the context. it's a variation on "operand forwarding" combined with "early-in/out" issue #106
Investigating for several days, the combinatorial MultiIn/Out code was being used, and is not working.
The reason it turns out is because when used for ReservationStations, the multi in/out code only needs to send a single value.
Unfortunately, for pipelines, the "valid" signal travels with the data, but the "ready" signal is sent on the PREVIOUS cycle.
Therefore if the ready is sent to one multi-in sender but on the next cycle the "in" is flipped to a higher priority input, the data from the sender to which the "ready" was sent is irretrievably lost.
The solution therefore is to have latches on every input, and to have the multiplexer read first from those then go back to combinatorial routing.
It *might* be possible to buffer just the one data set, because only one input will have been told that it was ok to send data.