         if (flag && nodes[offset + 6] == 0) nodes[offset + 6] = child + 6;
         if (flag && nodes[offset + 7] == 0) nodes[offset + 7] = child + 7;
         __syncthreads();
-#endif
 
         n_offset += n_total;    //Increase the offset in the array by the number of newly added nodes
 


}

#else

#define WARP_SIZE2 5
#define WARP_SIZE  (1 << WARP_SIZE2)

#if 1

__device__ __forceinline__ uint shfl_scan_add_step(uint partial, uint up_offset)
{

          n_bodies     -= nb;                                   //subtract from n_bodies number of bodies that have been extracted
          nl_pre       += nl;                                   //increase the number of leaves that where processed
          direct [tid] -= nb;                                   //subtract the number of extracted bodies in this pass
          prefix0[tid] = max(prefix0[tid] - nb, 0);             //same here, but do not let the number be negative (GT200 bug!?)
          n_direct     += nb;                                  //increase the number of bodies to be procssed

          while(n_direct >= DIM) 
