From: adam Date: Wed, 25 Jun 2008 11:04:10 +0000 (+0100) Subject: relocate InstructionEncoder to FleetTwoFleet and make it a subclass of Fleet X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=ca1a64970cc2c85b56fb08392f0a554465c87d88;p=fleet.git relocate InstructionEncoder to FleetTwoFleet and make it a subclass of Fleet --- diff --git a/src/edu/berkeley/fleet/assembler/Parser.java b/src/edu/berkeley/fleet/assembler/Parser.java index 9359422..be45472 100644 --- a/src/edu/berkeley/fleet/assembler/Parser.java +++ b/src/edu/berkeley/fleet/assembler/Parser.java @@ -6,7 +6,7 @@ import edu.berkeley.sbp.misc.*; 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.*; @@ -110,8 +110,8 @@ public class Parser { 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); @@ -379,7 +379,7 @@ public class Parser { } - if (InstructionEncoder.isSmallEnoughToFit(literal)) { + if (FleetTwoFleet.isSmallEnoughToFit(literal)) { cb.add(new Set(dock, looping, predicate, SetDest.DataLatch, (literal))); } else { // FIXME bitwidth hardwired! diff --git a/src/edu/berkeley/fleet/fpga/Client.java b/src/edu/berkeley/fleet/fpga/Client.java index e3cc39f..c07442a 100644 --- a/src/edu/berkeley/fleet/fpga/Client.java +++ b/src/edu/berkeley/fleet/fpga/Client.java @@ -84,7 +84,7 @@ public class Client extends FleetProcess { | ((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); @@ -93,9 +93,9 @@ public class Client extends FleetProcess { 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); } diff --git a/src/edu/berkeley/fleet/fpga/FabricElement.java b/src/edu/berkeley/fleet/fpga/FabricElement.java index 5e0d7a3..59de514 100644 --- a/src/edu/berkeley/fleet/fpga/FabricElement.java +++ b/src/edu/berkeley/fleet/fpga/FabricElement.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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.*; diff --git a/src/edu/berkeley/fleet/fpga/FifoModule.java b/src/edu/berkeley/fleet/fpga/FifoModule.java index bb05228..3cb6bc5 100644 --- a/src/edu/berkeley/fleet/fpga/FifoModule.java +++ b/src/edu/berkeley/fleet/fpga/FifoModule.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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 { diff --git a/src/edu/berkeley/fleet/fpga/Fpga.java b/src/edu/berkeley/fleet/fpga/Fpga.java index 36f20b8..e2f679e 100644 --- a/src/edu/berkeley/fleet/fpga/Fpga.java +++ b/src/edu/berkeley/fleet/fpga/Fpga.java @@ -1,7 +1,7 @@ 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.*; @@ -11,11 +11,11 @@ import edu.berkeley.sbp.util.*; 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) @@ -247,17 +247,10 @@ public class Fpga extends Fleet { } 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(); @@ -281,5 +274,5 @@ public class Fpga extends Fleet { return bb; return null; } - } + } diff --git a/src/edu/berkeley/fleet/fpga/FpgaDestination.java b/src/edu/berkeley/fleet/fpga/FpgaDestination.java index 976f0d7..9a61077 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaDestination.java +++ b/src/edu/berkeley/fleet/fpga/FpgaDestination.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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; diff --git a/src/edu/berkeley/fleet/fpga/FpgaDock.java b/src/edu/berkeley/fleet/fpga/FpgaDock.java index 33bfc9e..820d2b7 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaDock.java +++ b/src/edu/berkeley/fleet/fpga/FpgaDock.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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; @@ -225,7 +225,7 @@ public class FpgaDock extends FleetTwoDock implements FabricElement { 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)", diff --git a/src/edu/berkeley/fleet/fpga/FpgaPath.java b/src/edu/berkeley/fleet/fpga/FpgaPath.java index 1007296..ff00574 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaPath.java +++ b/src/edu/berkeley/fleet/fpga/FpgaPath.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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.*; diff --git a/src/edu/berkeley/fleet/fpga/FpgaShip.java b/src/edu/berkeley/fleet/fpga/FpgaShip.java index 53443f1..ac193cd 100644 --- a/src/edu/berkeley/fleet/fpga/FpgaShip.java +++ b/src/edu/berkeley/fleet/fpga/FpgaShip.java @@ -3,7 +3,7 @@ import edu.berkeley.fleet.api.*; 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 */ diff --git a/src/edu/berkeley/fleet/fpga/FunnelModule.java b/src/edu/berkeley/fleet/fpga/FunnelModule.java index 3cc9256..bda75e8 100644 --- a/src/edu/berkeley/fleet/fpga/FunnelModule.java +++ b/src/edu/berkeley/fleet/fpga/FunnelModule.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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.*; diff --git a/src/edu/berkeley/fleet/fpga/HornModule.java b/src/edu/berkeley/fleet/fpga/HornModule.java index c650a96..ee7d4a6 100644 --- a/src/edu/berkeley/fleet/fpga/HornModule.java +++ b/src/edu/berkeley/fleet/fpga/HornModule.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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.*; diff --git a/src/edu/berkeley/fleet/fpga/verilog/Verilog.java b/src/edu/berkeley/fleet/fpga/verilog/Verilog.java index 604b68d..8da080f 100644 --- a/src/edu/berkeley/fleet/fpga/verilog/Verilog.java +++ b/src/edu/berkeley/fleet/fpga/verilog/Verilog.java @@ -1,6 +1,6 @@ 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.*; @@ -9,7 +9,7 @@ import edu.berkeley.sbp.meta.*; 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 { diff --git a/src/edu/berkeley/fleet/interpreter/Interpreter.java b/src/edu/berkeley/fleet/interpreter/Interpreter.java index 5db6ae1..c3ec582 100644 --- a/src/edu/berkeley/fleet/interpreter/Interpreter.java +++ b/src/edu/berkeley/fleet/interpreter/Interpreter.java @@ -6,12 +6,12 @@ import java.lang.reflect.*; 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) @@ -142,14 +142,8 @@ public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips { // 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(); } @@ -169,7 +163,7 @@ public class Interpreter extends Fleet implements Parser.FleetWithDynamicShips { return bb; return null; } - } + // ShipDescription ////////////////////////////////////////////////////////////////////////////// diff --git a/src/edu/berkeley/fleet/interpreter/Outbox.java b/src/edu/berkeley/fleet/interpreter/Outbox.java index f3efd49..8b06cbc 100644 --- a/src/edu/berkeley/fleet/interpreter/Outbox.java +++ b/src/edu/berkeley/fleet/interpreter/Outbox.java @@ -1,7 +1,7 @@ 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.*; @@ -70,8 +70,8 @@ public class Outbox extends InstructionDock { 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) { diff --git a/src/edu/berkeley/fleet/interpreter/Packet.java b/src/edu/berkeley/fleet/interpreter/Packet.java index 8b5c940..cdaf31f 100644 --- a/src/edu/berkeley/fleet/interpreter/Packet.java +++ b/src/edu/berkeley/fleet/interpreter/Packet.java @@ -6,7 +6,7 @@ import java.lang.reflect.*; 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 { diff --git a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java b/src/edu/berkeley/fleet/two/FleetTwoFleet.java similarity index 97% rename from src/edu/berkeley/fleet/ies44/InstructionEncoder.java rename to src/edu/berkeley/fleet/two/FleetTwoFleet.java index 9173e8c..c9defc7 100644 --- a/src/edu/berkeley/fleet/ies44/InstructionEncoder.java +++ b/src/edu/berkeley/fleet/two/FleetTwoFleet.java @@ -1,4 +1,4 @@ -package edu.berkeley.fleet.ies44; +package edu.berkeley.fleet.two; import java.io.*; import edu.berkeley.fleet.api.*; import edu.berkeley.fleet.util.*; @@ -7,8 +7,7 @@ import static edu.berkeley.fleet.api.Instruction.Set.*; 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............"); @@ -92,7 +91,7 @@ public abstract class InstructionEncoder { 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); @@ -101,13 +100,13 @@ public abstract class InstructionEncoder { 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); @@ -180,7 +179,7 @@ public abstract class InstructionEncoder { 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) @@ -280,7 +279,7 @@ public abstract class InstructionEncoder { } 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)); }