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];
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);
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);
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);
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);
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);