deps/cuckoo/cuckarood/cuckarood.hpp
// fills buffer with EDGE_BLOCK_SIZE siphash outputs for block containing edge in cuckaroo graph
// return siphash output for given edge
fills buffer with EDGE_BLOCK_SIZE siphash outputs for block containing edge in cuckaroo graph
return siphash output for given edge
fills buffer with EDGE_BLOCK_SIZE siphash outputs for block containing edge in cuckaroo graph return siphash output for given edge
static u64 sipblock(siphash_keys &keys, const word_t edge, u64 *buf) {
  siphash_state<25> shs(keys);
  word_t edge0 = edge & ~EDGE_BLOCK_MASK;
  for (u32 i=0; i < EDGE_BLOCK_SIZE; i++) {
    shs.hash24(edge0 + i);
    buf[i] = shs.xor_lanes();
  }
  const u64 last = buf[EDGE_BLOCK_MASK];
  for (u32 i=0; i < EDGE_BLOCK_MASK; i++)
    buf[i] ^= last;
  return buf[edge & EDGE_BLOCK_MASK];
}
static u64 sipblock ( siphash_keys & keys , const word_t edge , u64 * buf ) { siphash_state < 25 > shs ( keys ) ; word_t edge0 = edge & ~ EDGE_BLOCK_MASK ; for ( u32 i = 0 ; i < EDGE_BLOCK_SIZE ; i ++ ) { shs . hash24 ( edge0 + i ) ; buf [ i ] = shs . xor_lanes ( ) ; } const u64 last = buf [ EDGE_BLOCK_MASK ] ; for ( u32 i = 0 ; i < EDGE_BLOCK_MASK ; i ++ ) buf [ i ] ^= last ; return buf [ edge & EDGE_BLOCK_MASK ] ; }
fills buffer with EDGE_BLOCK_SIZE siphash outputs for block containing edge in cuckaroo graph
return siphash output for given edge
fills buffer with EDGE_BLOCK_SIZE siphash outputs for block containing edge in cuckaroo graph return siphash output for given edge