import FIFOF::*; //import FIFO::*; import Vector::*; typedef 1 NTHREADS; typedef Bit#(TLog#(NTHREADS)) TypeThreadNum; typedef Maybe#(TypeThreadNum) TypeMaybeThreadNum; typedef Vector#(NTHREADS, Bool) TypeBoolVec; function TypeThreadNum advanceThreadNum(TypeThreadNum k); return ((k == (fromInteger(valueof(NTHREADS) - 1))) ? 0 : (k+1)); endfunction (*noinline*) function Maybe#(TypeThreadNum) selectThread(TypeBoolVec legits, TypeThreadNum startAt); Bool going = True; TypeThreadNum j = startAt; Maybe#(TypeThreadNum) r = tagged Invalid; for (Integer i=0; i