LCOV - code coverage report
Current view: top level - ballet/murmur3 - fd_murmur3.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 43 43 100.0 %
Date: 2024-11-13 11:58:15 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "fd_murmur3.h"
       2             : 
       3             : static uint
       4             : fd_murmur3_32_( void const * _data,
       5             :                 ulong        sz,
       6   308231808 :                 uint         seed ) {
       7             : 
       8   308231808 :   uchar const * data   = _data;
       9   308231808 :   uint          sz_tag = (uint)sz;
      10             : 
      11   308231808 :   uint c1 = 0xcc9e2d51U;
      12   308231808 :   uint c2 = 0x1b873593U;
      13   308231808 :   int  r1 = 15;
      14   308231808 :   int  r2 = 13;
      15   308231808 :   uint m  = 5;
      16   308231808 :   uint n  = 0xe6546b64U;
      17             : 
      18   308231808 :   uint hash = seed;
      19             : 
      20  1695038130 :   while( sz>=4 ) {
      21  1386806322 :     uint k  = FD_LOAD( uint, data );
      22  1386806322 :          k *= c1;
      23  1386806322 :          k  = fd_uint_rotate_left( k, r1 );
      24  1386806322 :          k *= c2;
      25             : 
      26  1386806322 :     hash ^= k;
      27  1386806322 :     hash  = fd_uint_rotate_left( hash, r2 );
      28  1386806322 :     hash  = hash*m + n;
      29             : 
      30  1386806322 :     data+=4UL;
      31  1386806322 :     sz  -=4UL;
      32  1386806322 :   }
      33             : 
      34   308231808 :   uint rem = 0;
      35   308231808 :   switch( sz ) {
      36      170439 :   case 3: rem ^= (uint)data[2]<<16U;  __attribute__((fallthrough));
      37      308853 :   case 2: rem ^= (uint)data[1]<<8U;   __attribute__((fallthrough));
      38      804729 :   case 1: rem ^= (uint)data[0];
      39      804729 :           rem *= c1;
      40      804729 :           rem  = fd_uint_rotate_left( rem, r1 );
      41      804729 :           rem *= c2;
      42      804729 :           hash ^= rem;                __attribute__((fallthrough));
      43   308231808 :   case 0: break;
      44   308231808 :   }
      45             : 
      46   308231808 :   hash ^= sz_tag;
      47   308231808 :   hash ^= hash>>16U;
      48   308231808 :   hash *= 0x85ebca6bU;
      49   308231808 :   hash ^= hash>>13U;
      50   308231808 :   hash *= 0xc2b2ae35U;
      51   308231808 :   hash ^= hash>>16U;
      52             : 
      53   308231808 :   return hash;
      54   308231808 : }
      55             : 
      56             : uint
      57             : fd_murmur3_32( void const * _data,
      58             :                ulong        sz,
      59   308231808 :                uint         seed ) {
      60   308231808 :   return fd_murmur3_32_( _data, sz, seed );
      61   308231808 : }

Generated by: LCOV version 1.14