anchor.diff:     Vector#(TMul#(J,K), PipeOut#(Vector#(1,Float))) a1Pipes <- mapM(mkFunnel, flattenMatrix(aPipes));
      Vector#(TMul#(J,K), PipeOut#(Vector#(1,Float))) b1Pipes <- mapM(mkFunnel, flattenMatrix(bPipes));
      Vector#(TMul#(J,K), PipeOut#(Tuple2#(Vector#(1,Float),Vector#(1,Float)))) ab1Pipes = map(uncurry(zipPipeOut), zip(a1Pipes, b1Pipes));
  -
   
      Vector#(M, PipeOut#(Tuple2#(Vector#(1,Float),Vector#(1,Float)))) abFunnels <- mkFunnelPipes(ab1Pipes);
      Vector#(M, FloatAlu#(FP_MUL_DEPTH)) muls <- replicateM(mkFloatMultiplier(defaultValue));
  
positive.code: 	 adders[i].request.put(tuple2(resp, accum));
        end
     endrule
     FIFOF#(Vector#(M, Float))   accumOutFunnel     <- mkFIFOF();
     PipeOut#(Vector#(M, Float)) accumOutFunnelPipe =  toPipeOut(accumOutFunnel);
     rule accumresp;
        function ActionValue#(Float) getAccumResponse(FloatAlu#(depth) adder); actionvalue match {.resp, .*} <- adder.response.get(); return resp; endactionvalue endfunction
        Vector#(M,Float) accum <- mapM(getAccumResponse, adders);
        accumOutFunnel.enq(accum);
     endrule
     PipeOut#(Vector#(TMul#(J,K), (Float))) accumOutPipe <- mkUnfunnel(accumOutFunnelPipe);
     Vector#(TMul#(J,K), FIFOF#(Float)) resultFifos <- replicateM(mkFIFOF());
     rule feedback;
        let accumOut <- toGet(accumOutPipe).get();
        match { .first, .last } <- toGet(firstLastPipes[1]).get();
        for (Integer i = 0; i < valueOf(TMul#(J,K)); i = i + 1)
  	 if (last)
  	    resultFifos[i].enq(accumOut[i]);
  	 else
  	    accumFifos[i].enq(accumOut[i]);
     endrule
     Vector#(TMul#(J,K), PipeOut#(Float)) fxpipes = map(toPipeOut, resultFifos);
  
  `endif
  
negative.code:    end
  `else
     FirstLastPipe#(UInt#(addrwidth)) firstLastPipe <- mkFirstLastPipe();
     Vector#(TAdd#(TMul#(J,K),1), PipeOut#(Tuple2#(Bool,Bool))) firstLastPipes      <- mkForkVector(firstLastPipe.pipe);
  
     Vector#(TMul#(J,K), FIFOF#(Float))   accumFifos  <- replicateM(mkFIFOF);
     Vector#(TMul#(J,K), PipeOut#(Float)) accumPipes  =  map(toPipeOut, accumFifos);
     Vector#(M, PipeOut#(Float))          accumFunnels <- mkFunnelPipes(accumPipes);
  
     rule primeTheAccum;
        match { .first, .last } <- toGet(firstLastPipes[valueOf(TMul#(J,K))]).get();
        if (first)
  	 for (Integer i = 0; i < valueOf(TMul#(J,K)); i = i + 1)
  	    accumFifos[i].enq(unpack(0));
  