Merge marina project in subdirectory marina/
[fleet.git] / src / edu / berkeley / fleet / dataflow / DiscardNode.java
1 package edu.berkeley.fleet.dataflow;
2 import java.util.*;
3 import edu.berkeley.fleet.loops.*;
4 import edu.berkeley.fleet.api.*;
5 import edu.berkeley.fleet.api.Instruction.Set.FlagFunction;
6
7 public class DiscardNode extends Node {
8
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"));
13
14     public  final OutPort out   = new DockOutPort("out", ship.getDock("out")) {
15             protected void build(CodeBag ctx, LoopFactory lf) {
16
17                 lf = lf.makeNext(0);
18
19                 lf.abortLoopIfTorpedoPresent();
20                 lf.collectWord();
21                 lf.setFlags(FlagFunction.ZERO.add(Predicate.FlagC), FlagFunction.ZERO);
22
23                 lf.setPredicate(Predicate.FlagA);
24                 lf.abortLoopIfTorpedoPresent();
25                 peer.recvToken(lf);
26                 peer.sendWord(lf);
27                 lf.setPredicate(null);
28
29             }
30         };
31
32     public DiscardNode(DataFlowGraph dfg) {
33         super(dfg);
34     }
35
36 }
37