*
*/
public class LoopFactory {
+
+ // FIXME: vet this to see if it is sensible
+ private boolean instructionFifoSizeCheckDisabled = false;
+ public void disableInstructionFifoOverflowCheck() { instructionFifoSizeCheckDisabled = true; }
+
public final Dock dock;
public final String friendlyName;
public final int count;
}
if (count==1) {
- if (numInstructionsNotIncludingNonblockingPrefix > dock.getInstructionFifoSize())
- throw new RuntimeException("instruction sequence is too long for instruction fifo");
+ if (!instructionFifoSizeCheckDisabled &&
+ numInstructionsNotIncludingNonblockingPrefix > dock.getInstructionFifoSize())
+ throw new RuntimeException("instruction sequence is too long for instruction fifo at " + dock);
} else {
if (count != 0) {
ic.add(new Instruction.Set(dock, true, Predicate.Default, SetDest.OuterLoopCounter, SetSource.Decrement));
loopSize++;
}
ic.add(new Instruction.Tail(dock));
- if (loopSize > dock.getInstructionFifoSize())
+ if (!instructionFifoSizeCheckDisabled &&
+ loopSize > dock.getInstructionFifoSize())
throw new RuntimeException("instruction loop is too long for instruction fifo");
}