1 package edu.berkeley.fleet.dataflow;
3 import edu.berkeley.fleet.loops.*;
4 import edu.berkeley.fleet.api.*;
5 import edu.berkeley.fleet.api.Instruction.Set.FlagFunction;
8 * Takes an item from "count", passes that many items from "val" to
9 * "out", and then supplies one instance of "punc" at "out".
11 public class PunctuatorNode extends Node {
12 private final long punc;
13 public final InPort count;
14 private final Ship ship = dfg.pool.allocateShip("Counter");
15 private final InPort op = new DockInPort("inOp", ship.getDock("inOp"), "PASS_C2_V1");
16 public final InPort val = new DockInPort("val", ship.getDock("in1"));
17 public final OutPort out = new DockOutPort("out", ship.getDock("out")) {
18 protected void build(CodeBag ctx, LoopFactory lf) {
20 lf.abortLoopIfTorpedoPresent();
26 lf.setFlags(FlagFunction.ZERO.add(Predicate.FlagC), FlagFunction.ZERO);
27 lf.setPredicate(Predicate.FlagA);
30 lf.setPredicate(null);
34 public PunctuatorNode(DataFlowGraph dfg, long punc) {
37 this.count = new DockInPort("in2", ship.getDock("in2"));