Lines Matching +full:v +full:- +full:bit

25    input data by 64x64-bit multiplication and mixing hi- and low-parts
28 with the equal probability of their bit values for the
38 strings (at least up to 512-bit) on Haswell and Power7. The MUM bulk
59 /* Macro saying to use 128-bit integers implemented by GCC for some
90 probability of their bit values. They are used to randomize input
107 /* Multiply 64-bit V and P and return sum of high and low parts of the
110 _mum (uint64_t v, uint64_t p) { in _mum() argument
114 /* AARCH64 needs 2 insns to calculate 128-bit result of the in _mum()
116 function doing 128x128->128 bit multiplication. The function is in _mum()
118 lo = v * p, hi; in _mum()
119 asm ("umulh %0, %1, %2" : "=r" (hi) : "r" (v), "r" (p)); in _mum()
121 __uint128_t r = (__uint128_t) v * (__uint128_t) p; in _mum()
126 /* Implementation of 64x64->128-bit multiplication by four 32x32->64 in _mum()
127 bit multiplication. */ in _mum()
128 uint64_t hv = v >> 32, hp = p >> 32; in _mum()
129 uint64_t lv = (uint32_t) v, lp = (uint32_t) p; in _mum()
136 /* We could ignore a carry bit here if we did not care about the in _mum()
137 same hash for 32-bit and 64-bit targets. */ in _mum()
171 _mum_le (uint64_t v) { in _mum_le() argument
173 return v; in _mum_le()
175 return _mum_bswap64 (v); in _mum_le()
182 _mum_le32 (uint32_t v) { in _mum_le32() argument
184 return v; in _mum_le32()
186 return _mum_bswap32 (v); in _mum_le32()
197 The macro value affects the result hash for strings > 128 bit. The
218 static inline uint64_t _MUM_OPTIMIZE("unroll-loops")
229 64x64->128-bit multiplication. AVX2 currently only have a in _mum_hash_aligned()
230 vector insn for 4 32x32->64-bit multiplication. */ in _mum_hash_aligned()
233 len -= _MUM_UNROLL_FACTOR * sizeof (uint64_t); in _mum_hash_aligned()
235 /* We will use the same prime numbers on the next iterations -- in _mum_hash_aligned()
242 len -= n * sizeof (uint64_t); str += n * sizeof (uint64_t); in _mum_hash_aligned()
288 /* We want to use AVX2 insn MULX instead of generic x86-64 MULQ where
290 3-cycles vs. 4 for MULX, MULX permits more freedom in insn
322 _MUM_TARGET("inline-all-stringops")
338 len -= block_len; in _mum_hash_default()
411 avx2_support = __builtin_cpu_supports ("avx2") ? 1 : -1; in mum_hash()