X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Ffleet%2Ftwo%2FFleetTwoFleet.java;h=cce5067f920d28be9877acda77cbe9ab79611017;hb=cb7ee9ba0641d14d8cd04a109213d5c231eb027d;hp=c9defc7bbd2f2680bb62b5babe84ea0c96e6a7d7;hpb=aa30d7ced239c556baa04a4bfb4732705c686909;p=fleet.git diff --git a/src/edu/berkeley/fleet/two/FleetTwoFleet.java b/src/edu/berkeley/fleet/two/FleetTwoFleet.java index c9defc7..cce5067 100644 --- a/src/edu/berkeley/fleet/two/FleetTwoFleet.java +++ b/src/edu/berkeley/fleet/two/FleetTwoFleet.java @@ -7,6 +7,7 @@ import static edu.berkeley.fleet.api.Instruction.Set.*; import static edu.berkeley.fleet.api.Instruction.*; import static edu.berkeley.fleet.api.Predicate.*; +/** common subclass for the "FleetTwo" generation of processors, all 37-bit wide, with AM33 encoding */ public abstract class FleetTwoFleet extends Fleet { public static final Mask PACKET_TOKEN = new Mask("v................................................."); @@ -72,19 +73,26 @@ public abstract class FleetTwoFleet extends Fleet { public static final Mask SET_TAPL_FROM_IMMEDIATE = new Mask("................1000001.vvvvvvvvvvvvv"); + // Misc ////////////////////////////////////////////////////////////////////////////// - public static final long DataLatch_WIDTH = SET_IMMEDIATE.valmaskmax-SET_IMMEDIATE.valmaskmin+1; // FIXME: this is an abstraction breakage - private static final long mask = ~(-1L << DataLatch_WIDTH); - public static boolean isSmallEnoughToFit(long immediate) { - if ((immediate & ~mask) == 0) return true; - if ((immediate | mask) == -1L) return true; - return false; - } + public static final long DataLatch_WIDTH = SET_IMMEDIATE.valmaskmax-SET_IMMEDIATE.valmaskmin+1; // FIXME: this is an abstraction breakage + private static final long mask = ~(-1L << DataLatch_WIDTH); + public static boolean isSmallEnoughToFit(long immediate) { + if ((immediate & ~mask) == 0) return true; + if ((immediate | mask) == -1L) return true; + return false; + } + + public int getWordWidth() { return 37; } + + ////////////////////////////////////////////////////////////////////////////// /** get the bits describing this box's location on the DESTINATION HORN */ + // FIXME this should use a BitVector not a long! protected abstract long getDestAddr(Path box); /** decode a path, given the starting point and the bits that comprise it */ + // FIXME this should use a BitVector not a long! protected abstract Path getPathByAddr(Dock source, long dest); /** FIXME: this is a hack for now */ @@ -298,4 +306,5 @@ public abstract class FleetTwoFleet extends Fleet { } return ret; } + }