| <?xml version='1.0' encoding='UTF-8' standalone='no'?> |
| <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.8" xml:lang="en-US"> |
| <compounddef id="murmurhash3__internal_8cc" kind="file" language="C++"> |
| <compoundname>murmurhash3_internal.cc</compoundname> |
| <includes refid="murmurhash3__internal_8h" local="yes">iceberg/util/murmurhash3_internal.h</includes> |
| <incdepgraph> |
| <node id="1"> |
| <label>iceberg/util/murmurhash3_internal.cc</label> |
| <link refid="murmurhash3__internal_8cc"/> |
| <childnode refid="2" relation="include"> |
| </childnode> |
| </node> |
| <node id="2"> |
| <label>iceberg/util/murmurhash3_internal.h</label> |
| <link refid="murmurhash3__internal_8h_source"/> |
| <childnode refid="3" relation="include"> |
| </childnode> |
| </node> |
| <node id="3"> |
| <label>cstdint</label> |
| </node> |
| </incdepgraph> |
| <innernamespace refid="namespaceiceberg">iceberg</innernamespace> |
| <sectiondef kind="define"> |
| <memberdef kind="define" id="murmurhash3__internal_8cc_1ac032d233a8ebfcd82fd49d0824eefb18" prot="public" static="no"> |
| <name>FORCE_INLINE</name> |
| <initializer>inline __attribute__((always_inline))</initializer> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="32" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="32" bodyend="-1"/> |
| </memberdef> |
| <memberdef kind="define" id="murmurhash3__internal_8cc_1ab32bb365c62dcb0da675e248b7e814a9" prot="public" static="no"> |
| <name>ROTL32</name> |
| <param><defname>x</defname></param> |
| <param><defname>y</defname></param> |
| <initializer>rotl32(x, y)</initializer> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="38" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="38" bodyend="-1"/> |
| </memberdef> |
| <memberdef kind="define" id="murmurhash3__internal_8cc_1a612c70207b96b27f06eff614e3b9ffd9" prot="public" static="no"> |
| <name>ROTL64</name> |
| <param><defname>x</defname></param> |
| <param><defname>y</defname></param> |
| <initializer>rotl64(x, y)</initializer> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="39" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="39" bodyend="-1"/> |
| </memberdef> |
| <memberdef kind="define" id="murmurhash3__internal_8cc_1a8e0f90a6ea3d3db65033b8ace70cb65a" prot="public" static="no"> |
| <name>BIG_CONSTANT</name> |
| <param><defname>x</defname></param> |
| <initializer>(x##LLU)</initializer> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="41" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="41" bodyend="-1"/> |
| </memberdef> |
| </sectiondef> |
| <sectiondef kind="func"> |
| <memberdef kind="function" id="murmurhash3__internal_8cc_1a1bb665f421e67f5adc7b8acd3cda136e" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> |
| <type>uint32_t</type> |
| <definition>uint32_t rotl32</definition> |
| <argsstring>(uint32_t x, int8_t r)</argsstring> |
| <name>rotl32</name> |
| <param> |
| <type>uint32_t</type> |
| <declname>x</declname> |
| </param> |
| <param> |
| <type>int8_t</type> |
| <declname>r</declname> |
| </param> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="34" column="17" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="34" bodyend="34"/> |
| </memberdef> |
| <memberdef kind="function" id="murmurhash3__internal_8cc_1a1a727ab783adafe06deef8bfd6bf314d" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual"> |
| <type>uint64_t</type> |
| <definition>uint64_t rotl64</definition> |
| <argsstring>(uint64_t x, int8_t r)</argsstring> |
| <name>rotl64</name> |
| <param> |
| <type>uint64_t</type> |
| <declname>x</declname> |
| </param> |
| <param> |
| <type>int8_t</type> |
| <declname>r</declname> |
| </param> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <inbodydescription> |
| </inbodydescription> |
| <location file="iceberg/util/murmurhash3_internal.cc" line="36" column="17" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="36" bodyend="36"/> |
| </memberdef> |
| </sectiondef> |
| <briefdescription> |
| </briefdescription> |
| <detaileddescription> |
| </detaileddescription> |
| <programlisting> |
| <codeline lineno="1"><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="2"><highlight class="normal"></highlight><highlight class="comment">//<sp/>MurmurHash3<sp/>was<sp/>written<sp/>by<sp/>Austin<sp/>Appleby,<sp/>and<sp/>is<sp/>placed<sp/>in<sp/>the<sp/>public</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="3"><highlight class="normal"></highlight><highlight class="comment">//<sp/>domain.<sp/>The<sp/>author<sp/>hereby<sp/>disclaims<sp/>copyright<sp/>to<sp/>this<sp/>source<sp/>code.</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="4"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="5"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Note<sp/>-<sp/>The<sp/>x86<sp/>and<sp/>x64<sp/>versions<sp/>do<sp/>_not_<sp/>produce<sp/>the<sp/>same<sp/>results,<sp/>as<sp/>the</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="6"><highlight class="normal"></highlight><highlight class="comment">//<sp/>algorithms<sp/>are<sp/>optimized<sp/>for<sp/>their<sp/>respective<sp/>platforms.<sp/>You<sp/>can<sp/>still</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="7"><highlight class="normal"></highlight><highlight class="comment">//<sp/>compile<sp/>and<sp/>run<sp/>any<sp/>of<sp/>them<sp/>on<sp/>any<sp/>platform,<sp/>but<sp/>your<sp/>performance<sp/>with<sp/>the</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="8"><highlight class="normal"></highlight><highlight class="comment">//<sp/>non-native<sp/>version<sp/>will<sp/>be<sp/>less<sp/>than<sp/>optimal.</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="9"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"iceberg/util/murmurhash3_internal.h"</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="11"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="12"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="13"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Platform-specific<sp/>functions<sp/>and<sp/>macros</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="14"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="15"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Microsoft<sp/>Visual<sp/>Studio</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="16"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="17"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="18"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="19"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>FORCE_INLINE<sp/>__forceinline</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="20"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="21"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>include<sp/><cstdlib></highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="22"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="23"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL32(x,<sp/>y)<sp/>_rotl(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="24"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL64(x,<sp/>y)<sp/>_rotl64(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="25"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>BIG_CONSTANT(x)<sp/>(x)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="27"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="28"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Other<sp/>compilers</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="29"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/><sp/></highlight><highlight class="comment">//<sp/>defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="31"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="32"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>FORCE_INLINE<sp/>inline<sp/>__attribute__((always_inline))</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="33"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="34"><highlight class="normal"></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>uint32_t<sp/>rotl32(uint32_t<sp/>x,<sp/>int8_t<sp/>r)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(x<sp/><<<sp/>r)<sp/>|<sp/>(x<sp/>>><sp/>(32<sp/>-<sp/>r));<sp/>}</highlight></codeline> |
| <codeline lineno="35"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="36"><highlight class="normal"></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>uint64_t<sp/>rotl64(uint64_t<sp/>x,<sp/>int8_t<sp/>r)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(x<sp/><<<sp/>r)<sp/>|<sp/>(x<sp/>>><sp/>(64<sp/>-<sp/>r));<sp/>}</highlight></codeline> |
| <codeline lineno="37"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL32(x,<sp/>y)<sp/>rotl32(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL64(x,<sp/>y)<sp/>rotl64(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="40"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="41"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>BIG_CONSTANT(x)<sp/>(x##LLU)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="42"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="43"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/><sp/></highlight><highlight class="comment">//<sp/>!defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="44"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="45"><highlight class="normal"></highlight><highlight class="comment">//<sp/>NOLINTBEGIN</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="46"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="47"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">iceberg<sp/>{</highlight></codeline> |
| <codeline lineno="48"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="49"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">{</highlight></codeline> |
| <codeline lineno="50"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="51"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Block<sp/>read<sp/>-<sp/>if<sp/>your<sp/>platform<sp/>needs<sp/>to<sp/>do<sp/>endian-swapping<sp/>or<sp/>can<sp/>only</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="52"><highlight class="normal"></highlight><highlight class="comment">//<sp/>handle<sp/>aligned<sp/>reads,<sp/>do<sp/>the<sp/>conversion<sp/>here</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="53"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="54"><highlight class="normal">FORCE_INLINE<sp/>uint32_t<sp/>getblock32(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>p,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>p[i];<sp/>}</highlight></codeline> |
| <codeline lineno="55"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="56"><highlight class="normal">FORCE_INLINE<sp/>uint64_t<sp/>getblock64(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*<sp/>p,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>p[i];<sp/>}</highlight></codeline> |
| <codeline lineno="57"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="58"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="59"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Finalization<sp/>mix<sp/>-<sp/>force<sp/>all<sp/>bits<sp/>of<sp/>a<sp/>hash<sp/>block<sp/>to<sp/>avalanche</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="60"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="61"><highlight class="normal">FORCE_INLINE<sp/>uint32_t<sp/>fmix32(uint32_t<sp/>h)<sp/>{</highlight></codeline> |
| <codeline lineno="62"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>>><sp/>16;</highlight></codeline> |
| <codeline lineno="63"><highlight class="normal"><sp/><sp/>h<sp/>*=<sp/>0x85ebca6b;</highlight></codeline> |
| <codeline lineno="64"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>>><sp/>13;</highlight></codeline> |
| <codeline lineno="65"><highlight class="normal"><sp/><sp/>h<sp/>*=<sp/>0xc2b2ae35;</highlight></codeline> |
| <codeline lineno="66"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>>><sp/>16;</highlight></codeline> |
| <codeline lineno="67"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="68"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>h;</highlight></codeline> |
| <codeline lineno="69"><highlight class="normal">}</highlight></codeline> |
| <codeline lineno="70"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="71"><highlight class="normal"></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="72"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="73"><highlight class="normal">FORCE_INLINE<sp/>uint64_t<sp/>fmix64(uint64_t<sp/>k)<sp/>{</highlight></codeline> |
| <codeline lineno="74"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>>><sp/>33;</highlight></codeline> |
| <codeline lineno="75"><highlight class="normal"><sp/><sp/>k<sp/>*=<sp/>BIG_CONSTANT(0xff51afd7ed558ccd);</highlight></codeline> |
| <codeline lineno="76"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>>><sp/>33;</highlight></codeline> |
| <codeline lineno="77"><highlight class="normal"><sp/><sp/>k<sp/>*=<sp/>BIG_CONSTANT(0xc4ceb9fe1a85ec53);</highlight></codeline> |
| <codeline lineno="78"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>>><sp/>33;</highlight></codeline> |
| <codeline lineno="79"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="80"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>k;</highlight></codeline> |
| <codeline lineno="81"><highlight class="normal">}</highlight></codeline> |
| <codeline lineno="82"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="83"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="84"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="85"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="86"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="87"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x86_32(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline> |
| <codeline lineno="88"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline> |
| <codeline lineno="89"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>4;</highlight></codeline> |
| <codeline lineno="90"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="91"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="92"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="93"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c1<sp/>=<sp/>0xcc9e2d51;</highlight></codeline> |
| <codeline lineno="94"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c2<sp/>=<sp/>0x1b873593;</highlight></codeline> |
| <codeline lineno="95"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="96"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="97"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="98"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="99"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>4);</highlight></codeline> |
| <codeline lineno="100"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="101"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>-nblocks;<sp/>i;<sp/>i++)<sp/>{</highlight></codeline> |
| <codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>getblock32(blocks,<sp/>i);</highlight></codeline> |
| <codeline lineno="103"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline> |
| <codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="107"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL32(h1,<sp/>13);</highlight></codeline> |
| <codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0xe6546b64;</highlight></codeline> |
| <codeline lineno="111"><highlight class="normal"><sp/><sp/>}</highlight></codeline> |
| <codeline lineno="112"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="113"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="114"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="115"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="116"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>4);</highlight></codeline> |
| <codeline lineno="117"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="118"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="119"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="120"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&<sp/>3)<sp/>{</highlight></codeline> |
| <codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline> |
| <codeline lineno="122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[2]<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="124"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline> |
| <codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[1]<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline> |
| <codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[0];</highlight></codeline> |
| <codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline> |
| <codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="133"><highlight class="normal"><sp/><sp/>};</highlight></codeline> |
| <codeline lineno="134"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="135"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="136"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="137"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="138"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="139"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="140"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix32(h1);</highlight></codeline> |
| <codeline lineno="141"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="142"><highlight class="normal"><sp/><sp/>*(uint32_t*)out<sp/>=<sp/>h1;</highlight></codeline> |
| <codeline lineno="143"><highlight class="normal">}</highlight></codeline> |
| <codeline lineno="144"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="145"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="146"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="147"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x86_128(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline> |
| <codeline lineno="148"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline> |
| <codeline lineno="149"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>16;</highlight></codeline> |
| <codeline lineno="150"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="151"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="152"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h2<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="153"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h3<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="154"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h4<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="155"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="156"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c1<sp/>=<sp/>0x239b961b;</highlight></codeline> |
| <codeline lineno="157"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c2<sp/>=<sp/>0xab0e9789;</highlight></codeline> |
| <codeline lineno="158"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c3<sp/>=<sp/>0x38b34ae5;</highlight></codeline> |
| <codeline lineno="159"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c4<sp/>=<sp/>0xa1e38b93;</highlight></codeline> |
| <codeline lineno="160"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="161"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="162"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="163"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="164"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline> |
| <codeline lineno="165"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="166"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>-nblocks;<sp/>i;<sp/>i++)<sp/>{</highlight></codeline> |
| <codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>0);</highlight></codeline> |
| <codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k2<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>1);</highlight></codeline> |
| <codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k3<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>2);</highlight></codeline> |
| <codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k4<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>3);</highlight></codeline> |
| <codeline lineno="171"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline> |
| <codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="176"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL32(h1,<sp/>19);</highlight></codeline> |
| <codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0x561ccd1b;</highlight></codeline> |
| <codeline lineno="180"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL32(k2,<sp/>16);</highlight></codeline> |
| <codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c3;</highlight></codeline> |
| <codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline> |
| <codeline lineno="185"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>ROTL32(h2,<sp/>17);</highlight></codeline> |
| <codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>+=<sp/>h3;</highlight></codeline> |
| <codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>h2<sp/>*<sp/>5<sp/>+<sp/>0x0bcaa747;</highlight></codeline> |
| <codeline lineno="189"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c3;</highlight></codeline> |
| <codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>=<sp/>ROTL32(k3,<sp/>17);</highlight></codeline> |
| <codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c4;</highlight></codeline> |
| <codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>^=<sp/>k3;</highlight></codeline> |
| <codeline lineno="194"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>=<sp/>ROTL32(h3,<sp/>15);</highlight></codeline> |
| <codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>+=<sp/>h4;</highlight></codeline> |
| <codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>=<sp/>h3<sp/>*<sp/>5<sp/>+<sp/>0x96cd1c35;</highlight></codeline> |
| <codeline lineno="198"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c4;</highlight></codeline> |
| <codeline lineno="200"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>=<sp/>ROTL32(k4,<sp/>18);</highlight></codeline> |
| <codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="202"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>^=<sp/>k4;</highlight></codeline> |
| <codeline lineno="203"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>=<sp/>ROTL32(h4,<sp/>13);</highlight></codeline> |
| <codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>=<sp/>h4<sp/>*<sp/>5<sp/>+<sp/>0x32ac3b17;</highlight></codeline> |
| <codeline lineno="207"><highlight class="normal"><sp/><sp/>}</highlight></codeline> |
| <codeline lineno="208"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="209"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="210"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="211"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="212"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline> |
| <codeline lineno="213"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="214"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="215"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k2<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="216"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k3<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="217"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k4<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="218"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="219"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&<sp/>15)<sp/>{</highlight></codeline> |
| <codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>15:</highlight></codeline> |
| <codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[14]<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>14:</highlight></codeline> |
| <codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[13]<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>13:</highlight></codeline> |
| <codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[12]<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c4;</highlight></codeline> |
| <codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>=<sp/>ROTL32(k4,<sp/>18);</highlight></codeline> |
| <codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h4<sp/>^=<sp/>k4;</highlight></codeline> |
| <codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="233"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>12:</highlight></codeline> |
| <codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[11]<sp/><<<sp/>24;</highlight></codeline> |
| <codeline lineno="236"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>11:</highlight></codeline> |
| <codeline lineno="238"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[10]<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>10:</highlight></codeline> |
| <codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[9]<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>9:</highlight></codeline> |
| <codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[8]<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c3;</highlight></codeline> |
| <codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>=<sp/>ROTL32(k3,<sp/>17);</highlight></codeline> |
| <codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c4;</highlight></codeline> |
| <codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h3<sp/>^=<sp/>k3;</highlight></codeline> |
| <codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="250"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>8:</highlight></codeline> |
| <codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[7]<sp/><<<sp/>24;</highlight></codeline> |
| <codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>7:</highlight></codeline> |
| <codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[6]<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>6:</highlight></codeline> |
| <codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[5]<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>5:</highlight></codeline> |
| <codeline lineno="261"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[4]<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="263"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL32(k2,<sp/>16);</highlight></codeline> |
| <codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c3;</highlight></codeline> |
| <codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline> |
| <codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="267"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>4:</highlight></codeline> |
| <codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[3]<sp/><<<sp/>24;</highlight></codeline> |
| <codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline> |
| <codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[2]<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline> |
| <codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[1]<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline> |
| <codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[0]<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline> |
| <codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="283"><highlight class="normal"><sp/><sp/>};</highlight></codeline> |
| <codeline lineno="284"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="285"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="286"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="287"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="288"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="289"><highlight class="normal"><sp/><sp/>h2<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="290"><highlight class="normal"><sp/><sp/>h3<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="291"><highlight class="normal"><sp/><sp/>h4<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="292"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="293"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="294"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h3;</highlight></codeline> |
| <codeline lineno="295"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h4;</highlight></codeline> |
| <codeline lineno="296"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="297"><highlight class="normal"><sp/><sp/>h3<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="298"><highlight class="normal"><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="299"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="300"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix32(h1);</highlight></codeline> |
| <codeline lineno="301"><highlight class="normal"><sp/><sp/>h2<sp/>=<sp/>fmix32(h2);</highlight></codeline> |
| <codeline lineno="302"><highlight class="normal"><sp/><sp/>h3<sp/>=<sp/>fmix32(h3);</highlight></codeline> |
| <codeline lineno="303"><highlight class="normal"><sp/><sp/>h4<sp/>=<sp/>fmix32(h4);</highlight></codeline> |
| <codeline lineno="304"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="305"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="306"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h3;</highlight></codeline> |
| <codeline lineno="307"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h4;</highlight></codeline> |
| <codeline lineno="308"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="309"><highlight class="normal"><sp/><sp/>h3<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="310"><highlight class="normal"><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="311"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="312"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[0]<sp/>=<sp/>h1;</highlight></codeline> |
| <codeline lineno="313"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[1]<sp/>=<sp/>h2;</highlight></codeline> |
| <codeline lineno="314"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[2]<sp/>=<sp/>h3;</highlight></codeline> |
| <codeline lineno="315"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[3]<sp/>=<sp/>h4;</highlight></codeline> |
| <codeline lineno="316"><highlight class="normal">}</highlight></codeline> |
| <codeline lineno="317"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="318"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="319"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="320"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x64_128(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline> |
| <codeline lineno="321"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline> |
| <codeline lineno="322"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>16;</highlight></codeline> |
| <codeline lineno="323"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="324"><highlight class="normal"><sp/><sp/>uint64_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="325"><highlight class="normal"><sp/><sp/>uint64_t<sp/>h2<sp/>=<sp/>seed;</highlight></codeline> |
| <codeline lineno="326"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="327"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t<sp/>c1<sp/>=<sp/>BIG_CONSTANT(0x87c37b91114253d5);</highlight></codeline> |
| <codeline lineno="328"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t<sp/>c2<sp/>=<sp/>BIG_CONSTANT(0x4cf5ad432745937f);</highlight></codeline> |
| <codeline lineno="329"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="330"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="331"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="332"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="333"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*)(data);</highlight></codeline> |
| <codeline lineno="334"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="335"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;<sp/>i<sp/><<sp/>nblocks;<sp/>i++)<sp/>{</highlight></codeline> |
| <codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/>uint64_t<sp/>k1<sp/>=<sp/>getblock64(blocks,<sp/>i<sp/>*<sp/>2<sp/>+<sp/>0);</highlight></codeline> |
| <codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/>uint64_t<sp/>k2<sp/>=<sp/>getblock64(blocks,<sp/>i<sp/>*<sp/>2<sp/>+<sp/>1);</highlight></codeline> |
| <codeline lineno="338"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL64(k1,<sp/>31);</highlight></codeline> |
| <codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="343"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL64(h1,<sp/>27);</highlight></codeline> |
| <codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0x52dce729;</highlight></codeline> |
| <codeline lineno="347"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL64(k2,<sp/>33);</highlight></codeline> |
| <codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline> |
| <codeline lineno="352"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>ROTL64(h2,<sp/>31);</highlight></codeline> |
| <codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>h2<sp/>*<sp/>5<sp/>+<sp/>0x38495ab5;</highlight></codeline> |
| <codeline lineno="356"><highlight class="normal"><sp/><sp/>}</highlight></codeline> |
| <codeline lineno="357"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="358"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="359"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="360"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="361"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline> |
| <codeline lineno="362"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="363"><highlight class="normal"><sp/><sp/>uint64_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="364"><highlight class="normal"><sp/><sp/>uint64_t<sp/>k2<sp/>=<sp/>0;</highlight></codeline> |
| <codeline lineno="365"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="366"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&<sp/>15)<sp/>{</highlight></codeline> |
| <codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>15:</highlight></codeline> |
| <codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[14])<sp/><<<sp/>48;</highlight></codeline> |
| <codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>14:</highlight></codeline> |
| <codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[13])<sp/><<<sp/>40;</highlight></codeline> |
| <codeline lineno="372"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>13:</highlight></codeline> |
| <codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[12])<sp/><<<sp/>32;</highlight></codeline> |
| <codeline lineno="375"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="376"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>12:</highlight></codeline> |
| <codeline lineno="377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[11])<sp/><<<sp/>24;</highlight></codeline> |
| <codeline lineno="378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>11:</highlight></codeline> |
| <codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[10])<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>10:</highlight></codeline> |
| <codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[9])<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="384"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="385"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>9:</highlight></codeline> |
| <codeline lineno="386"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[8])<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="387"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL64(k2,<sp/>33);</highlight></codeline> |
| <codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="390"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline> |
| <codeline lineno="391"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="392"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="393"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>8:</highlight></codeline> |
| <codeline lineno="394"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[7])<sp/><<<sp/>56;</highlight></codeline> |
| <codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>7:</highlight></codeline> |
| <codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[6])<sp/><<<sp/>48;</highlight></codeline> |
| <codeline lineno="398"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>6:</highlight></codeline> |
| <codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[5])<sp/><<<sp/>40;</highlight></codeline> |
| <codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>5:</highlight></codeline> |
| <codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[4])<sp/><<<sp/>32;</highlight></codeline> |
| <codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>4:</highlight></codeline> |
| <codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[3])<sp/><<<sp/>24;</highlight></codeline> |
| <codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline> |
| <codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[2])<sp/><<<sp/>16;</highlight></codeline> |
| <codeline lineno="410"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline> |
| <codeline lineno="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[1])<sp/><<<sp/>8;</highlight></codeline> |
| <codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline> |
| <codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline> |
| <codeline lineno="415"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[0])<sp/><<<sp/>0;</highlight></codeline> |
| <codeline lineno="416"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline> |
| <codeline lineno="417"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL64(k1,<sp/>31);</highlight></codeline> |
| <codeline lineno="418"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline> |
| <codeline lineno="419"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline> |
| <codeline lineno="420"><highlight class="normal"><sp/><sp/>};</highlight></codeline> |
| <codeline lineno="421"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="422"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="423"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="424"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="425"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="426"><highlight class="normal"><sp/><sp/>h2<sp/>^=<sp/>len;</highlight></codeline> |
| <codeline lineno="427"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="428"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="429"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="430"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="431"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix64(h1);</highlight></codeline> |
| <codeline lineno="432"><highlight class="normal"><sp/><sp/>h2<sp/>=<sp/>fmix64(h2);</highlight></codeline> |
| <codeline lineno="433"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="434"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline> |
| <codeline lineno="435"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline> |
| <codeline lineno="436"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="437"><highlight class="normal"><sp/><sp/>((uint64_t*)out)[0]<sp/>=<sp/>h1;</highlight></codeline> |
| <codeline lineno="438"><highlight class="normal"><sp/><sp/>((uint64_t*)out)[1]<sp/>=<sp/>h2;</highlight></codeline> |
| <codeline lineno="439"><highlight class="normal">}</highlight></codeline> |
| <codeline lineno="440"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="441"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="442"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>iceberg</highlight><highlight class="normal"></highlight></codeline> |
| <codeline lineno="443"><highlight class="normal"></highlight></codeline> |
| <codeline lineno="444"><highlight class="normal"></highlight><highlight class="comment">//<sp/>NOLINTEND</highlight><highlight class="normal"></highlight></codeline> |
| </programlisting> |
| <location file="iceberg/util/murmurhash3_internal.cc"/> |
| </compounddef> |
| </doxygen> |