MergeSort.java: reformatting
[fleet.git] / src / edu / berkeley / fleet / dataflow / MergeSort.java
index 4faf03e..459bab5 100644 (file)
@@ -49,8 +49,6 @@ public class MergeSort {
         MemoryNode mem_read  = new MemoryNode(dfg, mem1);
         MemoryNode mem_write = (mem1==mem2) ? mem_read : new MemoryNode(dfg, mem2);
 
-        AluNode sm = new AluNode(dfg, "MAXMERGE");
-
         pn0 = new ParameterNode[arity];
         pn1 = new ParameterNode[arity];
         pn2 = new ParameterNode[arity];
@@ -62,14 +60,15 @@ public class MergeSort {
         pn5 = new ParameterNode(dfg);
         pn6 = new ParameterNode(dfg, true);
 
+        AluNode sm = new AluNode(dfg, "MAXMERGE");
         // So far: we have four spare Counter ships; one can be used for resetting
         for(int i=0; i<arity; i++) {
 
             DownCounterNode c0 = new DownCounterNode(dfg);
-            DownCounterNode c1 = new DownCounterNode(dfg);
-
             c0.start.connect((pn0[i] = new ParameterNode(dfg, true)).out);
             c0.incr.connect(new ForeverNode(dfg, 1).out);
+
+            DownCounterNode c1 = new DownCounterNode(dfg);
             c1.start.connect((pn1[i] = new ParameterNode(dfg)).out);
             c1.incr.connect((pn2[i] = new ParameterNode(dfg)).out);
 
@@ -78,11 +77,12 @@ public class MergeSort {
             r1.count.connect((pn3[i] = new ParameterNode(dfg, true)).out);
 
             AluNode alu1 = new AluNode(dfg, "ADD");
-            AluNode alu2 = new AluNode(dfg, "ADD");
             alu1.in1.connect(r1.out);
             alu1.in2.connect(c0.out);
-            alu1.out.connect(alu2.in2);
+
+            AluNode alu2 = new AluNode(dfg, "ADD");
             alu2.in1.connect((pn_base1[i] = new ParameterNode(dfg, true)).out);
+            alu2.in2.connect(alu1.out);
             alu2.out.connect(i==0 ? mem_read.inAddrRead1 : mem_read.inAddrRead2);
 
             PunctuatorNode punc = new PunctuatorNode(dfg, -1);
@@ -102,6 +102,7 @@ public class MergeSort {
         AluNode alu = new AluNode(dfg, "ADD");
         alu.in1.connect(pn_base2.out);
         cw.out.connect(alu.in2);
+
         mem_write.inAddrWrite.connect(alu.out);
         mem_write.inDataWrite.connect(unpunc.out);
 
@@ -140,10 +141,10 @@ public class MergeSort {
                 if (pn4[i]!=null) pn4[i].set(cb, stride);
                 if (pn_base1[i]!=null) pn_base1[i].set(cb, base_read);
             }
-            pn5.set(cb, length);
-            pn6.set(cb, 2*stride+1);
-            pn_base2.set(cb, base_write);
-            pn_end.set(cb, length);
+            if (pn5!=null) pn5.set(cb, length);
+            if (pn6!=null) pn6.set(cb, 2*stride+1);
+            if (pn_base2!=null) pn_base2.set(cb, base_write);
+            if (pn_end!=null) pn_end.set(cb, length);
             cb.sendWord(cb2.getDescriptor(), program.getCBDDestination());
             cb.sendWord(next.getDescriptor(), next_dest);
 
@@ -193,7 +194,8 @@ public class MergeSort {
         Program program = new Program(codemem);
         CodeBag cb = new MergeSort(fleet, program, pool2, 2, memory, memory).makeInstance(base, length);
         pool2.releaseAll();
-        long ret = program.run(fp, cb, pool2);
+        long ret = 0;
+        ret = program.run(fp, cb, pool2);
         pool2.releaseAll();
 
         MemoryUtils.readMem(fp, pool2, memory, base, vals);