| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Skip bounds checking on the inner accumulate loop. | Barinzaya | 2025-07-31 | 1 | -2/+2 |
| | | | | | | This helps performance with SSE (somewhat) and AVX-512 (quite a bit), but not AVX2 for some reason. | ||||
| * | Remove favor_size attributes inhibiting SIMD optimizations. | Barinzaya | 2025-07-31 | 1 | -11/+0 |
| | | | | | | | | | | This makes a tremendous (2x with SSE2, 3x with AVX2) difference on big datasets on my system, but this may be hardware-dependent (e.g. instruction cache sizes). Naturally, this also results in somewhat larger code for the large-data case (~75% larger). | ||||
| * | Various minor changes in XXH3. | Barinzaya | 2025-07-31 | 1 | -19/+17 |
| | | | | | | | | | | | | | | This includes various minor things that didn't seem right or could be improved, including: - XXH3_state is documented to have a strict alignment requirement of 64 bytes, and thus came with a disclaimer not to use `new` because it wouldn't be aligned correctly. It now has an `#align(64)` so that it will. - An _internal proc being marked #force_no_inline (every other one is #force_inline) - Unnecessarily casting the product of two u32s through u128 (and ultimately truncating to u64 anyway) | ||||
| * | Add static SIMD support to XXH3 in core:hash/xxhash. | Barinzaya | 2025-07-31 | 4 | -4/+137 |
| | | | | | | | | | | | This uses compile-time features to decide how large of a SIMD vector to use. It currently has checks for amd64/i386 to size its vectors for SSE2/AVX2/AVX512 as necessary. The generalized SIMD functions could also be useful for multiversioning of the hash procs, to allow for run-time dispatch based on available CPU features. | ||||
| * | Fix #5498 | Jeroen van Rijn | 2025-07-25 | 1 | -1/+1 |
| | | | | | | | Also: - Expands `tests/core/hash` - Fixes bug found in `#hash(s, "murmur64")` | ||||
| * | Remove outdated optimization attributes. | Jeroen van Rijn | 2025-05-27 | 1 | -82/+1 |
| | | |||||
| * | core: improve package doc comments for the documentation generator | Laytan Laats | 2024-09-03 | 5 | -2/+7 |
| | | |||||
| * | Fix `-vet-tabs` issues | gingerBill | 2024-08-24 | 1 | -9/+9 |
| | | |||||
| * | fix `@(optimization_mode)` usage in builtin collections | Laytan Laats | 2024-07-08 | 7 | -79/+79 |
| | | |||||
| * | More style improvements | gingerBill | 2024-06-29 | 1 | -10/+11 |
| | | |||||
| * | Fix free bug not using the correct allocator | gingerBill | 2024-03-27 | 2 | -10/+10 |
| | | |||||
| * | Make hash procedures contextless where possible | gingerBill | 2024-03-27 | 4 | -22/+22 |
| | | |||||
| * | Replace `core:*` to `base:*` where appropriate | gingerBill | 2024-01-28 | 7 | -8/+8 |
| | | |||||
| * | Remove `auto_cast` | gingerBill | 2023-01-16 | 1 | -1/+1 |
| | | |||||
| * | Add aliases for fnv* no_a forms | gingerBill | 2022-11-29 | 1 | -1/+3 |
| | | |||||
| * | Rename `fnv32` and `fnv64` to `fnv32_no_a` and `fnv64_no_a` | gingerBill | 2022-11-03 | 1 | -2/+4 |
| | | |||||
| * | Fix murmur64a's tail handling. | Jeroen van Rijn | 2022-07-15 | 1 | -86/+92 |
| | | | | | Also, split up the murmur64 proc into murmur64a and murmur64b as they're distinct hashes with their own output. | ||||
| * | [hash] Give crc-64 a 64-bit seed. | Jeroen van Rijn | 2022-07-14 | 1 | -2/+2 |
| | | |||||
| * | Make `raw_data` return `[^]T` types | gingerBill | 2022-05-23 | 2 | -8/+8 |
| | | |||||
| * | [xxhash] For the streaming tests, randomly select the size to use. | Jeroen van Rijn | 2022-05-02 | 1 | -1/+3 |
| | | | | | | | | | | 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` | ||||
| * | [xxhash] Add tests for large inputs | Jeroen van Rijn | 2022-05-02 | 2 | -1/+3 |
| | | | | | | | | | | | | | | | 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. | ||||
| * | [xxh3] Fix flaws in streaming implementation | Jeroen van Rijn | 2022-05-01 | 1 | -4/+4 |
| | | |||||
| * | Correct: murmur32 | gingerBill | 2022-03-11 | 1 | -1/+1 |
| | | |||||
| * | `ODIN_ENDIAN` changed to an enum constant; `ODIN_ENUM_STRING` is the new ↵ | gingerBill | 2022-01-15 | 1 | -1/+1 |
| | | | | | string version of the old constant | ||||
| * | Move bash.djbx33a to hash.odin | gingerBill | 2021-12-29 | 2 | -18/+17 |
| | | |||||
| * | Add `hash.djbx33a` | gingerBill | 2021-12-29 | 1 | -0/+18 |
| | | |||||
| * | Add optional seed parameters to all hashes | gingerBill | 2021-11-18 | 1 | -22/+20 |
| | | |||||
| * | hash: Smaller CRC-64 ISO 3306 table. | Jeroen van Rijn | 2021-09-21 | 1 | -66/+66 |
| | | |||||
| * | hash: Add CRC-64 (ISO 3306) and inverse. | Jeroen van Rijn | 2021-09-21 | 1 | -13/+106 |
| | | |||||
| * | Correct CRC-64 (ECMA 182) & add CRC-64 (XZ) and tests. | Jeroen van Rijn | 2021-09-21 | 1 | -6/+576 |
| | | |||||
| * | Correct `XXH_DISABLE_PREFETCH` usage | gingerBill | 2021-09-18 | 1 | -3/+1 |
| | | |||||
| * | Merge branch 'master' into llvm-12.0.1-windows | gingerBill | 2021-09-18 | 5 | -184/+609 |
| |\ | |||||
| | * | xxhash: Add tests for streaming input. | Jeroen van Rijn | 2021-09-15 | 1 | -12/+12 |
| | | | |||||
| | * | Finish xxHash implementation. | Jeroen van Rijn | 2021-09-15 | 5 | -551/+439 |
| | | | |||||
| | * | Add XXH3-64 + tests. | Jeroen van Rijn | 2021-09-13 | 1 | -126/+142 |
| | | | |||||
| | * | xxhash: Extra (generated) tests. | Jeroen van Rijn | 2021-09-11 | 2 | -130/+646 |
| | | | |||||
| * | | Add `intrinsics.prefetch_*` procedures | gingerBill | 2021-09-11 | 1 | -10/+7 |
| |/ | |||||
| * | xxhash: Disable prefetch on Linux. | Jeroen van Rijn | 2021-09-11 | 1 | -1/+4 |
| | | |||||
| * | xxhash: Fix test on Linux. | Jeroen van Rijn | 2021-09-11 | 1 | -1/+3 |
| | | |||||
| * | xxhash: Add XXH3_128 + test vectors. | Jeroen van Rijn | 2021-09-11 | 3 | -4/+937 |
| | | |||||
| * | Make -vet happy. | Jeroen van Rijn | 2021-09-09 | 1 | -4/+0 |
| | | |||||
| * | Add xxhash tests to CI. | Jeroen van Rijn | 2021-09-09 | 1 | -82/+1 |
| | | |||||
| * | Add xxhash benchmark. | Jeroen van Rijn | 2021-09-09 | 1 | -1/+86 |
| | | |||||
| * | xxhash: Initial implementations. | Jeroen van Rijn | 2021-09-09 | 3 | -0/+691 |
| | | |||||
| * | Remove unneeded semicolons from the core library | gingerBill | 2021-08-31 | 4 | -196/+196 |
| | | |||||
| * | Enforce `core:builtin` and `core:intrinsics` for imports | gingerBill | 2021-08-21 | 2 | -2/+2 |
| | | |||||
| * | Adler32 speedup. | Jeroen van Rijn | 2021-06-24 | 1 | -5/+38 |
| | | |||||
| * | Update hash.crc32 to use slicing-by-8 algorithm to improve throughput by ~3.5x | gingerBill | 2021-06-24 | 2 | -74/+401 |
| | | |||||
| * | ZLIB: More faster. | Jeroen van Rijn | 2021-06-23 | 2 | -5/+17 |
| | | |||||
| * | Allow seeding CRC32, CRC64 & Adler32 with previous partial hash. | Jeroen van Rijn | 2021-03-25 | 2 | -6/+6 |
| | | | | | | | | | | | | | | | | | | 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 | ||||