move verifyClean into CleanupUtils
authormegacz <adam@megacz.com>
Sat, 14 Mar 2009 23:56:13 +0000 (16:56 -0700)
committermegacz <adam@megacz.com>
Sat, 14 Mar 2009 23:56:13 +0000 (16:56 -0700)
src/edu/berkeley/fleet/ir/Process.java
src/edu/berkeley/fleet/loops/CleanupUtils.java [new file with mode: 0644]

index bd5b977..0378fd3 100644 (file)
@@ -12,11 +12,6 @@ import edu.berkeley.fleet.api.Instruction.Set.*;
 import static edu.berkeley.fleet.api.Predicate.*;
 import static edu.berkeley.fleet.util.BitManipulations.*;
 
-
-/*
-  - refactor the cleanup into the subclasses of Port (phase1, phase2, etc)
-*/
-
 // does peer.recvWord() have to honor the currently-set predicate?
 
 // public class ReplaceModule extends Module { }
@@ -551,7 +546,7 @@ public class Process {
             vals = mergeSort(fp, fleet, vals, vals_length, stride, mem1, mem2);
 
             // verify the cleanup
-            //verifyClean(fp);
+            //CleanupUtils.verifyClean(fp);
 
             Ship mem = mem1; mem1=mem2; mem2=mem;
 
@@ -566,81 +561,6 @@ public class Process {
             System.out.println(bvs[i].toLong());
     }
 
-    // FIXME: check for "lingering" torpedoes?
-    public static void verifyClean(FleetProcess fp) {
-        Ship debug   = fp.getFleet().getShip("Debug", 0);
-        Dock debugIn = debug.getDock("in");
-
-        Context ctx;
-        LoopFactory lf;
-
-        ctx = new Context(fp.getFleet());
-        lf = new LoopFactory(ctx, debugIn, 1);
-        lf.literal(12);
-        lf.deliver();
-        lf.literal(5);
-        lf.deliver();
-        ctx.dispatch(fp);
-        fp.flush();
-
-        System.out.println("checking debug.in");
-        if (fp.recvWord().toLong() != 12) throw new RuntimeException("debug dock not properly initialized");
-        if (fp.recvWord().toLong() != 5)  throw new RuntimeException("debug dock not properly initialized");
-
-        long k = 0;
-        for(Ship ship : fp.getFleet())
-            if (!"Debug".equals(ship.getType()))
-                for (Dock dock : ship) {
-                    System.out.print("checking " + dock + "                     ");
-
-                    k = (k + 23) % 65535;
-                    ctx = new Context(fp.getFleet());
-
-                    boolean reverse = (k%2)==0;
-
-                    lf = new LoopFactory(ctx, debugIn, 4);
-                    lf.recvToken();
-                    lf.setFlags(FlagFunction.ZERO.add(FlagC), FlagFunction.ZERO);
-                    lf.setPredicate(Predicate.NotFlagA);
-                    lf.literal(k);
-                    lf.setPredicate(Predicate.FlagA);
-                    lf.literal(k+1);
-                    lf.setPredicate(null);
-                    lf.deliver();
-
-                    lf = new LoopFactory(ctx, dock, 1);
-                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(reverse ? 1 : 0));
-                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(reverse ? 0 : 1));
-                    lf.sendToken(dock.getDataDestination(), new BitVector(1).set(reverse ? 1 : 0));
-                    lf.sendToken(dock.getDataDestination(), new BitVector(1).set(reverse ? 0 : 1));
-                    lf = lf.makeNext(2);
-
-                    // if a torpedo was lying in wait, the problem will be manifest as a "freezup"
-                    lf.abortLoopIfTorpedoPresent();
-
-                    lf.recvToken();
-                    lf.setFlags(FlagFunction.ZERO.add(FlagC), FlagFunction.ZERO);
-                    lf.setPredicate(Predicate.NotFlagA);
-                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(0));
-                    lf.setPredicate(Predicate.FlagA);
-                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(1));
-                    lf.setPredicate(null);
-
-                    ctx.dispatch(fp);
-                    fp.flush();
-
-                    long kk;
-                    for(int i=0; i<4; i++) {
-                        kk = fp.recvWord().toLong();
-                        System.out.print("\rchecking " + dock + " (got "+(i+1)+")");
-                        if (kk != ((reverse ^ (i%2!=0)) ? k+1 : k)) {
-                            System.out.println();
-                            throw new RuntimeException(dock+" not properly initialized ("+(i+1)+")");
-                        }
-                    }
-                    System.out.println();
-                }
-    }
 
     public static long[] mergeSort(FleetProcess fp, Fleet fleet,
                                    long[] vals, int vals_length, int stride_length,
@@ -789,7 +709,7 @@ public class Process {
         fp.flush();
 
         //System.out.println("verifying cleanup:");
-        //verifyClean(fp);
+        //CleanupUtils.verifyClean(fp);
 
         System.out.println("reading back:");
         long[] ret = null;
diff --git a/src/edu/berkeley/fleet/loops/CleanupUtils.java b/src/edu/berkeley/fleet/loops/CleanupUtils.java
new file mode 100644 (file)
index 0000000..dddac8a
--- /dev/null
@@ -0,0 +1,93 @@
+package edu.berkeley.fleet.loops;
+import edu.berkeley.fleet.loops.*;
+import java.util.concurrent.Semaphore;
+import java.util.*;
+import java.net.*;
+import edu.berkeley.fleet.two.*;
+import edu.berkeley.fleet.fpga.*;
+import edu.berkeley.fleet.api.*;
+import edu.berkeley.fleet.api.Instruction.*;
+import edu.berkeley.fleet.api.Instruction.Set;
+import edu.berkeley.fleet.api.Instruction.Set.*;
+import edu.berkeley.fleet.api.Instruction.Set.SetDest;
+import edu.berkeley.fleet.api.Instruction.Set.FlagFunction;
+import static edu.berkeley.fleet.api.Predicate.*;
+
+public class CleanupUtils {
+
+    public static void verifyClean(FleetProcess fp) {
+        Ship debug   = fp.getFleet().getShip("Debug", 0);
+        Dock debugIn = debug.getDock("in");
+
+        Context ctx;
+        LoopFactory lf;
+
+        ctx = new Context(fp.getFleet());
+        lf = new LoopFactory(ctx, debugIn, 1);
+        lf.literal(12);
+        lf.deliver();
+        lf.literal(5);
+        lf.deliver();
+        ctx.dispatch(fp);
+        fp.flush();
+
+        System.out.println("checking debug.in");
+        if (fp.recvWord().toLong() != 12) throw new RuntimeException("debug dock not properly initialized");
+        if (fp.recvWord().toLong() != 5)  throw new RuntimeException("debug dock not properly initialized");
+
+        long k = 0;
+        for(Ship ship : fp.getFleet())
+            if (!"Debug".equals(ship.getType()))
+                for (Dock dock : ship) {
+                    System.out.print("checking " + dock + "                     ");
+
+                    k = (k + 23) % 65535;
+                    ctx = new Context(fp.getFleet());
+
+                    boolean reverse = (k%2)==0;
+
+                    lf = new LoopFactory(ctx, debugIn, 4);
+                    lf.recvToken();
+                    lf.setFlags(FlagFunction.ZERO.add(FlagC), FlagFunction.ZERO);
+                    lf.setPredicate(Predicate.NotFlagA);
+                    lf.literal(k);
+                    lf.setPredicate(Predicate.FlagA);
+                    lf.literal(k+1);
+                    lf.setPredicate(null);
+                    lf.deliver();
+
+                    lf = new LoopFactory(ctx, dock, 1);
+                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(reverse ? 1 : 0));
+                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(reverse ? 0 : 1));
+                    lf.sendToken(dock.getDataDestination(), new BitVector(1).set(reverse ? 1 : 0));
+                    lf.sendToken(dock.getDataDestination(), new BitVector(1).set(reverse ? 0 : 1));
+                    lf = lf.makeNext(2);
+
+                    // if a torpedo was lying in wait, the problem will be manifest as a "freezup"
+                    lf.abortLoopIfTorpedoPresent();
+
+                    lf.recvToken();
+                    lf.setFlags(FlagFunction.ZERO.add(FlagC), FlagFunction.ZERO);
+                    lf.setPredicate(Predicate.NotFlagA);
+                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(0));
+                    lf.setPredicate(Predicate.FlagA);
+                    lf.sendToken(debugIn.getDataDestination(), new BitVector(1).set(1));
+                    lf.setPredicate(null);
+
+                    ctx.dispatch(fp);
+                    fp.flush();
+
+                    long kk;
+                    for(int i=0; i<4; i++) {
+                        kk = fp.recvWord().toLong();
+                        System.out.print("\rchecking " + dock + " (got "+(i+1)+")");
+                        if (kk != ((reverse ^ (i%2!=0)) ? k+1 : k)) {
+                            System.out.println();
+                            throw new RuntimeException(dock+" not properly initialized ("+(i+1)+")");
+                        }
+                    }
+                    System.out.println();
+                }
+    }
+
+}