import edu.berkeley.sbp.meta.*;
import edu.berkeley.sbp.util.*;
import static edu.berkeley.fleet.util.BitManipulations.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.api.Instruction.Set;
import static edu.berkeley.fleet.api.Instruction.*;
import static edu.berkeley.fleet.api.Instruction.Set.*;
if (c.isCBD.contains(j)) {
Set old = (Set)inst;
long lit = 0;
- lit = InstructionEncoder.CBD_SIZE.setval(lit, codeBags.get((int)old.immediate).size());
- lit = InstructionEncoder.CBD_OFFSET.setval(lit, codeBagMap[(int)old.immediate]);
+ lit = FleetTwoFleet.CBD_SIZE.setval(lit, codeBags.get((int)old.immediate).size());
+ lit = FleetTwoFleet.CBD_OFFSET.setval(lit, codeBagMap[(int)old.immediate]);
inst = new Set(old.dock, false, IgnoreOLC, SetDest.DataLatch, lit);
}
ret.add(inst);
}
- if (InstructionEncoder.isSmallEnoughToFit(literal)) {
+ if (FleetTwoFleet.isSmallEnoughToFit(literal)) {
cb.add(new Set(dock, looping, predicate, SetDest.DataLatch, (literal)));
} else {
// FIXME bitwidth hardwired!
| ((program[i+3] & 0xffL) << 16)
| ((program[i+4] & 0xffL) << 8)
| ((program[i+5] & 0xffL) << 0);
- Instruction inst = fpga.readInstruction(fpga.getUniversalSource(), lit);
+ Instruction inst = fpga.readInstruction(lit, fpga.getUniversalSource());
if (i==0) {
long offset = (lit >> 6) & ~(-1L << 10);
long size = (lit >> 0) & ~(-1L << 6);
offset = 0;
inst = new Instruction.Shift(fpga.getUniversalSource(), false, IgnoreOLC, new BitVector(fpga.getWordWidth()).set(0));
} else {
- if (fpga.writeInstruction(fpga.getUniversalSource(), inst) != lit)
+ if (fpga.writeInstruction(inst, fpga.getUniversalSource()) != lit)
throw new RuntimeException("no match: " + inst + " @"+(i/6)+"\n"+Long.toString(lit,16)+
- "\n"+Long.toString(fpga.writeInstruction(fpga.getUniversalSource(), inst),16));
+ "\n"+Long.toString(fpga.writeInstruction(inst, fpga.getUniversalSource()),16));
}
//fpga.writeInstruction(newpd, fpga.getUniversalSource(), inst);
}
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
public class FifoModule extends Module {
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.fpga.*;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import java.util.*;
import java.io.*;
import edu.berkeley.fleet.two.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
-public class Fpga extends Fleet {
+public class Fpga extends FleetTwoFleet {
public Ship getShip(String type, int ordinal) {
for(Ship s : this)
} catch (Exception e) { throw new RuntimeException(e); }
}
- private FpgaInstructionEncoder iie = new FpgaInstructionEncoder();
- public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException { return iie.readInstruction(dispatchFrom, is); }
- public Instruction readInstruction(Dock dispatchFrom, long instr) { return iie.readInstruction(dispatchFrom, instr); }
- public long writeInstruction(Dock dispatchFrom, Instruction d) { return iie.writeInstruction(dispatchFrom, d); }
- public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException { iie.writeInstruction(os, dispatchFrom, d); }
private Ship debugShip;
- public Dock getUniversalSource() { return debugShip.getDock("in"); }
- private class FpgaInstructionEncoder extends InstructionEncoder {
public Dock getUniversalSource() { return debugShip.getDock("in"); }
public long getDestAddr(Path path) {
return ((FpgaPath)path).toLong();
return bb;
return null;
}
- }
+
}
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
import edu.berkeley.fleet.api.*;
import edu.berkeley.fleet.api.Dock;
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
import edu.berkeley.fleet.api.*;
import edu.berkeley.fleet.api.Dock;
SHIFT.verilogVal("ondeck")+")")),
new ConditionalAction("`predicate_met(ondeck) && "+SET_IMMEDIATE.verilog("ondeck"),
new AssignAction(data_latch,
- "{ {"+(WIDTH_WORD-InstructionEncoder.DataLatch_WIDTH)+
+ "{ {"+(WIDTH_WORD-FleetTwoFleet.DataLatch_WIDTH)+
"{"+SET_IMMEDIATE_EXTEND.verilogVal("ondeck")+"}}, "+
SET_IMMEDIATE.verilogVal("ondeck")+" }")),
new ConditionalAction("`predicate_met(ondeck) && `instruction_is_setflags(ondeck)",
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
import java.util.*;
import java.io.*;
import edu.berkeley.fleet.two.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
/** a ship, which belongs to a fleet and which may have many ports */
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
package edu.berkeley.fleet.fpga;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
import static edu.berkeley.fleet.fpga.verilog.Verilog.*;
package edu.berkeley.fleet.fpga.verilog;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.*;
import java.lang.reflect.*;
import edu.berkeley.sbp.chr.*;
import edu.berkeley.sbp.util.*;
import java.util.*;
import java.io.*;
-import static edu.berkeley.fleet.ies44.InstructionEncoder.*;
+import static edu.berkeley.fleet.two.FleetTwoFleet.*;
public class Verilog {
import edu.berkeley.fleet.*;
import edu.berkeley.sbp.util.ANSI;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.assembler.*;
import edu.berkeley.fleet.two.*;
import edu.berkeley.fleet.util.*;
-public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips {
+public class Interpreter extends FleetTwoFleet implements Parser.FleetWithDynamicShips {
public Ship getShip(String type, int ordinal) {
for(Ship s : this)
// Instruction Encoding /////////////////////////////////////////////////////////////////////////
- public final InterpreterInstructionEncoder iie = new InterpreterInstructionEncoder();
- public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException { return iie.readInstruction(dispatchFrom, is); }
- public Instruction readInstruction(Dock dispatchFrom, long instr) { return iie.readInstruction(dispatchFrom, instr); }
- public long writeInstruction(Dock dispatchFrom, Instruction d) { return writeInstruction(dispatchFrom, d); }
- public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException { iie.writeInstruction(os, dispatchFrom, d); }
- public Dock getUniversalSource() { return null; }
- public class InterpreterInstructionEncoder extends InstructionEncoder {
public Dock getUniversalSource() { return null; }
+
public long getDestAddr(Path path) { throw new RuntimeException(); }
public long getBoxInstAddr(Dock box) { return ((InterpreterDock)box).getDestAddr(); }
public Path getPathByAddr(Dock source, long dest) { throw new RuntimeException(); }
return bb;
return null;
}
- }
+
// ShipDescription //////////////////////////////////////////////////////////////////////////////
package edu.berkeley.fleet.interpreter;
import edu.berkeley.sbp.util.ANSI;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
import edu.berkeley.sbp.util.*;
import edu.berkeley.fleet.util.*;
import static edu.berkeley.fleet.util.BitManipulations.*;
InterpreterDestination dest = (InterpreterDestination)(Object)instruction.path;
if (instruction.latchPath) {
// FIXME: still not supported
- long bits = InstructionEncoder.DISPATCH_PATH.getval(register);
- getInterpreter().dispatch(((Interpreter)getInterpreter()).iie.readInstruction(null, register), bits);
+ long bits = FleetTwoFleet.DISPATCH_PATH.getval(register);
+ getInterpreter().dispatch(((Interpreter)getInterpreter()).readInstruction(register, null), bits);
/*
dest = (InterpreterDestination)(((Interpreter)getInterpreter()).iie.getDestByAddr(bits));
if (dest == null) {
import edu.berkeley.fleet.*;
import edu.berkeley.sbp.util.ANSI;
import edu.berkeley.fleet.api.*;
-import edu.berkeley.fleet.ies44.*;
+import edu.berkeley.fleet.two.*;
class Packet {
-package edu.berkeley.fleet.ies44;
+package edu.berkeley.fleet.two;
import java.io.*;
import edu.berkeley.fleet.api.*;
import edu.berkeley.fleet.util.*;
import static edu.berkeley.fleet.api.Instruction.*;
import static edu.berkeley.fleet.api.Predicate.*;
-
-public abstract class InstructionEncoder {
+public abstract class FleetTwoFleet extends Fleet {
public static final Mask PACKET_TOKEN = new Mask("v.................................................");
public static final Mask PACKET_DATA = new Mask(".vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv............");
protected abstract Dock getUniversalSource();
/** read a machine-formatted instruction from a file (into a Java object) */
- public Instruction readInstruction(Dock dispatchFrom, DataInputStream is) throws IOException {
+ public Instruction readInstruction(DataInputStream is, Dock dispatchFrom) throws IOException {
long inst = 0;
try {
inst = (inst << 8) | (is.readByte() & 0xff);
inst = (inst << 8) | (is.readByte() & 0xff);
inst = (inst << 8) | (is.readByte() & 0xff);
inst = (inst << 8) | (is.readByte() & 0xff);
- return readInstruction(dispatchFrom, inst);
+ return readInstruction(inst, dispatchFrom);
} catch (EOFException eof) {
return null;
}
}
- public Instruction readInstruction(Dock dispatchFrom, long inst) {
+ public Instruction readInstruction(long inst, Dock dispatchFrom) {
Dock dock = getPathByAddr(getUniversalSource(), DISPATCH_PATH.getval(inst)).getDestination().getDock();
if (TAIL.get(inst)) return new Tail(dock);
throw new RuntimeException("unknown instruction: 0x" + Long.toString(inst, 16));
}
- public long writeInstruction(Dock dispatchFrom, Instruction d) {
+ public long writeInstruction(Instruction d, Dock dispatchFrom) {
long instr = 0;
if (d.dock != null)
}
public void writeInstruction(DataOutputStream os, Dock dispatchFrom, Instruction d) throws IOException {
- long instr = writeInstruction(dispatchFrom, d);
+ long instr = writeInstruction(d, dispatchFrom);
for(int i=5; i>=0; i--)
os.write(BitManipulations.getIntField(i*8+7, i*8, instr));
}