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;
7 public class DiscardNode extends Node {
9 private final Ship ship = dfg.pool.allocateShip("Counter");
10 private final InPort op = new DockInPort("op", ship.getDock("inOp"), "PASS_C2_V1");
11 public final InPort in = new DockInPort("val", ship.getDock("in1"));
12 public final InPort count = new DockInPort("count", ship.getDock("in2"));
14 public final OutPort out = new DockOutPort("out", ship.getDock("out")) {
15 protected void build(CodeBag ctx, LoopFactory lf) {
19 lf.abortLoopIfTorpedoPresent();
21 lf.setFlags(FlagFunction.ZERO.add(Predicate.FlagC), FlagFunction.ZERO);
23 lf.setPredicate(Predicate.FlagA);
24 lf.abortLoopIfTorpedoPresent();
27 lf.setPredicate(null);
32 public DiscardNode(DataFlowGraph dfg) {