   dist_block = __clz(__brev(flags));
 
   const int distance = __clz(flags & lanemask_le()) + laneId - 31;
-  shmem[laneId] = inclusive_segscan_warp<WARP_SIZE2>(value, distance);
+  shmem[laneId] = inclusive_segscan_warp_step<WARP_SIZE2>(value, distance);
   const int val = shmem[WARP_SIZE - 1];
   return val;
 }

__device__ __forceinline__ int inclusive_segscan_array(int *shmem_in, const int N)
{
  int dist, nseg = 0;
  int y  = inclusive_segscan_block64(shmem_in, shmem_in[laneId], dist, nseg);
  if (N <= WARP_SIZE) return nseg;

  for (int p = WARP_SIZE; p < N; p += WARP_SIZE)
  {
    int *shmem = shmem_in + p;
    int y1  = inclusive_segscan_block64(shmem, shmem[laneId], dist, nseg);
    shmem[laneId] += y & BTEST(laneId < dist);
    y = y1;
  }

  return partial;
}
  template<const int SIZE2>
__device__ __forceinline__ int inclusive_segscan_warp_step(int value, const int distance)
{

#if 0
