MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / Hash64V3

Function Hash64V3

tensorflow/core/lib/hash/hash.cc:553–595  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

551#endif
552
553uint64 Hash64V3(const char* data, size_t n, uint64 seed) {
554#if defined(__AVX512F__)
555 const uint64 m = 0xc6a4a7935bd1e995;
556 const int r = 47;
557 uint64 h = seed ^ (n * m);
558 // n is number of byte in the char* array
559 // unrolling y 64 (_mm512i)
560 Hash64AVX_512_Impl(data, n, h, m, r);
561 Hash64AVX_256_Impl(data, n, h, m, r);
562 Hash64AVX_128_Impl(data, n, h, m, r);
563 Hash64AVX_64_Impl(data, n, h, m, r);
564
565 switch (n) {
566 case 7:
567 h ^= ByteAs64(data[6]) << 48;
568 TF_FALLTHROUGH_INTENDED;
569 case 6:
570 h ^= ByteAs64(data[5]) << 40;
571 TF_FALLTHROUGH_INTENDED;
572 case 5:
573 h ^= ByteAs64(data[4]) << 32;
574 TF_FALLTHROUGH_INTENDED;
575 case 4:
576 h ^= ByteAs64(data[3]) << 24;
577 TF_FALLTHROUGH_INTENDED;
578 case 3:
579 h ^= ByteAs64(data[2]) << 16;
580 TF_FALLTHROUGH_INTENDED;
581 case 2:
582 h ^= ByteAs64(data[1]) << 8;
583 TF_FALLTHROUGH_INTENDED;
584 case 1:
585 h ^= ByteAs64(data[0]);
586 h *= m;
587 }
588 h ^= h >> r;
589 h *= m;
590 h ^= h >> r;
591 return h;
592#else
593 return Hash64(data, n, seed);
594#endif
595}
596
597#if defined(__AVX512F__)
598void Hash64V3_Batch512(const char** data, uint64* h_out,

Callers 2

TESTFunction · 0.85
BM_Hash64V3Function · 0.85

Calls 6

Hash64AVX_512_ImplFunction · 0.85
Hash64AVX_256_ImplFunction · 0.85
Hash64AVX_128_ImplFunction · 0.85
Hash64AVX_64_ImplFunction · 0.85
ByteAs64Function · 0.85
Hash64Function · 0.70

Tested by 2

TESTFunction · 0.68
BM_Hash64V3Function · 0.68