1 package edu.berkeley.fleet.interpreter.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
9 * @author Dominic Antonelli <dantonel@berkeley.edu>
11 public class MultiplierShip extends InterpreterShip {
15 DataInbox A = new DataInbox(this, "A");
16 DataInbox B = new DataInbox(this, "B");
17 DataOutbox out0 = new DataOutbox(this, "out0");
18 DataOutbox out1 = new DataOutbox(this, "out1");
20 public MultiplierShip(Interpreter fleet, String name) {
24 public void service() {
25 if (!out0.readyForDataFromShip()) return;
26 if (!out1.readyForDataFromShip()) return;
27 if (!A.dataReadyForShip()) return;
28 if (!B.dataReadyForShip()) return;
30 long inA = (long)A.removeDataForShip();
31 long inB = (long)B.removeDataForShip();
32 long result = inA * inB;
33 int result0 = (int)(result >> 32);
34 int result1 = (int)(result & 0xffffffff);
36 out0.addDataFromShip(result0);
37 out1.addDataFromShip(result1);