Commit Graph

42 Commits

Author SHA1 Message Date
Jeroen van Rijn
3e6ec65dd9 Fix murmur64a's tail handling.
Also, split up the murmur64 proc into murmur64a and murmur64b as they're distinct hashes with their own output.
2022-07-15 13:02:07 +02:00
Jeroen van Rijn
5332705e31 [hash] Give crc-64 a 64-bit seed. 2022-07-14 11:07:52 +02:00
gingerBill
8c1499dbc2 Make raw_data return [^]T types 2022-05-23 11:48:05 +01:00
Jeroen van Rijn
b99940f33a [xxhash] For the streaming tests, randomly select the size to use.
Randomize size used with `update`.

It'll print "Using user-selected seed {18109872483301276539,2000259725719371} for update size randomness."

If a streaming test then fails, you can repeat it using:
`odin run . -define:RAND_STATE=18109872483301276539 -define:RAND_INC=2000259725719371`
2022-05-02 19:20:25 +02:00
Jeroen van Rijn
6985181961 [xxhash] Add tests for large inputs
Test XXH32, XXH64, XXH3-64 and XXH3-128 for large inputs, with both all-at-once and streaming APIs.

XXH32_create_state and XXH64_create_state now implicitly call their "reset state" variants to simplify the streaming API to 3 steps:
- create state / defer destroy
- update
- digest (finalize)

These are tested with an array of 1, 2, 4, 8 and 16 megabytes worth of zeroes.
All return the same hashes as do both the one-shot version, as well as that of the official xxhsum tool.

3778/3778 tests successful.
2022-05-02 17:51:39 +02:00
Jeroen van Rijn
335b724209 [xxh3] Fix flaws in streaming implementation 2022-05-01 12:47:05 +02:00
gingerBill
c6dc517004 Correct: murmur32 2022-03-11 08:52:16 +00:00
gingerBill
f0529535e0 ODIN_ENDIAN changed to an enum constant; ODIN_ENUM_STRING is the new string version of the old constant 2022-01-15 17:53:18 +00:00
gingerBill
c987b84292 Move bash.djbx33a to hash.odin 2021-12-29 12:24:47 +00:00
gingerBill
a9b17b5a37 Add hash.djbx33a 2021-12-29 12:01:07 +00:00
gingerBill
12c1291805 Add optional seed parameters to all hashes 2021-11-18 16:14:33 +00:00
Jeroen van Rijn
6e22a6dfa5 hash: Smaller CRC-64 ISO 3306 table. 2021-09-21 16:28:35 +02:00
Jeroen van Rijn
181eabcffc hash: Add CRC-64 (ISO 3306) and inverse. 2021-09-21 16:17:01 +02:00
Jeroen van Rijn
b600ffba3b Correct CRC-64 (ECMA 182) & add CRC-64 (XZ) and tests. 2021-09-21 15:17:23 +02:00
gingerBill
b427bd8105 Correct XXH_DISABLE_PREFETCH usage 2021-09-18 12:59:54 +01:00
gingerBill
6855538729 Merge branch 'master' into llvm-12.0.1-windows 2021-09-18 12:55:13 +01:00
Jeroen van Rijn
b6d0a8fe0c xxhash: Add tests for streaming input. 2021-09-15 23:32:48 +02:00
Jeroen van Rijn
662d27b796 Finish xxHash implementation. 2021-09-15 20:06:07 +02:00
Jeroen van Rijn
a641ef95c0 Add XXH3-64 + tests. 2021-09-13 20:58:26 +02:00
Jeroen van Rijn
00c1d34108 xxhash: Extra (generated) tests. 2021-09-11 23:45:08 +02:00
gingerBill
7260d3cecb Add intrinsics.prefetch_* procedures 2021-09-11 17:30:44 +01:00
Jeroen van Rijn
5f920414d7 xxhash: Disable prefetch on Linux. 2021-09-11 15:45:17 +02:00
Jeroen van Rijn
72782d9035 xxhash: Fix test on Linux. 2021-09-11 15:39:11 +02:00
Jeroen van Rijn
eaefbc43cb xxhash: Add XXH3_128 + test vectors. 2021-09-11 15:28:49 +02:00
Jeroen van Rijn
f04614b1f1 Make -vet happy. 2021-09-09 16:05:59 +02:00
Jeroen van Rijn
637685316d Add xxhash tests to CI. 2021-09-09 16:01:44 +02:00
Jeroen van Rijn
f16e98b074 Add xxhash benchmark. 2021-09-09 15:26:57 +02:00
Jeroen van Rijn
f5d5417af7 xxhash: Initial implementations. 2021-09-09 15:26:57 +02:00
gingerBill
251da264ed Remove unneeded semicolons from the core library 2021-08-31 22:21:13 +01:00
gingerBill
f0437a4242 Enforce core:builtin and core:intrinsics for imports 2021-08-21 13:44:16 +01:00
Jeroen van Rijn
17748f18b9 Adler32 speedup. 2021-06-24 19:06:39 +02:00
gingerBill
1e9cc058a0 Update hash.crc32 to use slicing-by-8 algorithm to improve throughput by ~3.5x 2021-06-24 00:03:59 +01:00
Jeroen van Rijn
1cfe226686 ZLIB: More faster. 2021-06-23 22:18:17 +02:00
Jeroen van Rijn
f4d0f74dbb Allow seeding CRC32, CRC64 & Adler32 with previous partial hash.
Foo  := []u8{'F', 'o','o', '3', 'F', 'o', 'o', '4'};
crc     := hash.crc32(Foo[0:4]);
crc      = hash.crc32(Foo[4:], crc);
crc_all := hash.crc32(Foo);

fmt.printf("%8x %8x\n", crc, crc_all);
d6285ff7 d6285ff7

a32     := hash.adler32(Foo[0:4]);
a32      = hash.adler32(Foo[4:], a32);
a32_all := hash.adler32(Foo);

fmt.printf("%8x %8x\n", a32, a32_all);
0c5102b0 0c5102b0
2021-03-25 13:48:34 +01:00
gingerBill
79432be784 Add the mini ginger* hashes to package hash 2021-01-09 00:33:34 +00:00
gingerBill
de13584be2 Add #no_bounds_check to crc procedures 2020-10-14 16:00:08 +01:00
gingerBill
86448ee044 Add raw_data to replace cases in which &x[0] was used 2020-06-29 15:58:24 +01:00
gingerBill
5edb1e8a28 Add hash.djb2 hash.jenkins; Add container.Bloom_Filter; Add container.Ring 2020-06-16 12:53:57 +01:00
gingerBill
0718f14774 Reduce number of range and slice operators #239
Replace .. and ... with : and ..
2018-08-01 21:34:59 +01:00
gingerBill
ba67e474d3 Make source code compile with 32 bit (but not build 32 bit code) 2018-06-15 21:46:03 +01:00
gingerBill
5c52ffe24e Reorganize runtime package 2018-05-27 21:22:25 +01:00
gingerBill
5b6770f3d2 Parse directories to be packages 2018-05-21 20:47:52 +01:00