Commit Graph

679 Commits

Author SHA1 Message Date
Yann Collet
ea5c659701 update man page 2019-09-28 17:55:41 -07:00
Yann Collet
eab46160a9 update examples and comment 2019-09-28 17:39:00 -07:00
Yann Collet
384776e4ac
Merge pull request #260 from Cyan4973/xxh128sum
XXH128
2019-09-28 17:23:55 -07:00
Yann Collet
549fca1204 added capability to control XXH128 hashes
added xxh128sum link
2019-09-28 16:49:11 -07:00
Yann Collet
d5336efe31 fixed extraneous ' ' character
failing `-c` verification test
2019-09-28 14:58:07 -07:00
Yann Collet
ce7dbf03e0 improved programming pattern for hashStream 2019-09-28 14:27:32 -07:00
Yann Collet
f2be00e938 update valgrind test 2019-09-27 19:50:40 -07:00
Yann Collet
e098fffe0a fix #259
fix collisions for xxh128 in 9-16 bytes range
2019-09-27 17:55:33 -07:00
Yann Collet
3649220147 added tests for xxh128sum 2019-09-27 17:50:02 -07:00
Yann Collet
af010ba987 added xxh128sum
== xxhsum -H2
2019-09-27 17:40:36 -07:00
Yann Collet
9538a9d80b
Merge pull request #256 from Cyan4973/Loading
xxhsum -q does no longer display "Loading" notification
2019-09-17 20:51:29 -07:00
Yann Collet
ed35bc47a8
Merge pull request #255 from Cyan4973/license2
updated LICENSE
2019-09-17 18:09:30 -07:00
Yann Collet
d8551d294d xxhsum -q does not display "Loading" notification
fix #251
2019-09-17 18:08:32 -07:00
Yann Collet
330444389b updated LICENSE
to reflect the different terms
for the library (BSD-2)
and the command line interface (GPLv2),

answering #253
2019-09-17 17:14:15 -07:00
Yann Collet
1ce04e37a1
Merge pull request #254 from easyaspi314/multalign
Better 128-bit multiply, multiple bugfixes.
2019-09-16 21:48:56 -07:00
easyaspi314 (Devin)
e923cc63e0 Disable DIRECT_MEMORY_ACCESS check for Clang.
Clang prefers to emit aligned-only instructions with the second variant.

Clang works fine with memcpy.
2019-09-16 23:16:00 -04:00
easyaspi314 (Devin)
a1da6e28b0 Revert XXH_FORCE_DIRECT_MEMORY_ACCESS but exclude clang. 2019-09-16 19:07:20 -04:00
easyaspi314 (Devin)
6a768abdba Remove extra blank line 2019-09-16 10:12:04 -04:00
easyaspi314 (Devin)
1a5663552b Fix typo 2019-09-16 10:10:46 -04:00
easyaspi314 (Devin)
c94e68d705 Better 128-bit multiply, multiple bugfixes.
Sorry about the disorganized commit. :(

Yet again, I had to fix ARMv6. Clang went from ldm to ldrd which
also bus errors.

Therefore, I decided to fix the root problem and remove the
XXH_FORCE_DIRECT_MEMORY_ACCESS hack, using only memcpy.

This will kill alignment memes for good, and besides, it didn't
seem to make much of a difference.

Additionally, I added my better 128-bit long multiply
and applied DRY to XXH3_mul128_fold64. This also removes
the cryptic inline assembly hack.

Each method was documented, too (we need more comments).

Also, I added a warning for users who are compiling Thumb-1
code for a target supporting ARM instructions.

While all versions of ARM and Thumb-2 meet XXH3's base requirements,
Thumb-1 does not.

First of all, UMULL is inaccessible in the 16-bit subset. This means
that every XXH_mult32to64 means a call to __aeabi_lmul.

Since everything operation in XXH3 needs to happen in the Lo registers
plus having to setup r0-r3 many times for __aeabi_lmul, the output
resembles a game of Rush Hour:

 $ clang -O3 -S --target=arm-none-eabi -march=armv4t -mthumb xxhash.c
 $ grep -c mov xxhash.s
 5472
 $ clang -O3 -S --target=arm-none-eabi -march=armv4t xxhash.c
 $ grep -c mov xxhash.s
 2071

It is much more practical to compile xxHash with the wider instruction
sets, as these restrictions do not apply.

This doesn't warn if ARMv6-M is targeted; Thumb-1 is unavoidable.

Lastly, I removed the pragma clang loop hack which didn't work anymore
since the number of iterations can't be constant evaluated. Now, we
don't have 20 warnings when compiling for x86.
2019-09-16 10:09:00 -04:00
Yann Collet
69c9558be5
Merge pull request #252 from nigeltao/dev
Add comment about CRC32 speed comparison
2019-09-14 23:12:13 -07:00
Nigel Tao
879d0af51a Add comment about CRC32 speed comparison 2019-09-15 10:40:17 +10:00
Yann Collet
77fd98f6b5
Merge pull request #250 from Cyan4973/visualWarnings
Visual Studio tests on Appveyor
2019-09-10 13:41:23 -07:00
Yann Collet
a87e5908c7 hopefully fixed the Visual test on Appveyor
by using a custom variable XXHASH_C_FLAGS
as suggested by @wesm.
2019-09-10 10:53:58 -07:00
Yann Collet
e18a23a582 Visual Studio tests on Appveyor
now generate errors when there is a compiler warning
fix #249

Also fix a few corresponding minor warnings on Visual.
2019-09-06 16:05:44 -07:00
Yann Collet
726c14000c
Merge pull request #247 from easyaspi314/armv6fix
Prevent Clang from emitting unaligned ldm/ldrd on ARMv6, better arm macros
2019-08-28 15:58:12 -07:00
easyaspi314 (Devin)
8bcf561e21 Silence -Wundef warning
IT IS DEFINED BY THE STANDARD
2019-08-28 17:33:52 -04:00
easyaspi314 (Devin)
662e199ceb Prevent Clang from emitting unaligned ldm/ldrd on ARMv6, better arm macros
Clang was using ldmia and ldrd on unaligned pointers. These
instructions don't support unaligned access.

I also check the numerical value of __ARM_ARCH.
2019-08-28 17:18:16 -04:00
Yann Collet
17969c422d
Merge pull request #246 from bram-ivs/fixXXH32types
fix XXH32 and XXH32_digest return types
2019-08-27 06:17:20 -07:00
Bram Vandoren
a928488e09 fix XXH32 and XXH32_digest return types 2019-08-27 14:52:14 +02:00
Yann Collet
e22268617b
Merge pull request #245 from easyaspi314/power8-travis
[PPC64][TRAVIS] Fix VSX + add POWER8 support, fix VSX and ARM NEON Travis testing
2019-08-21 03:02:22 -07:00
easyaspi314 (Devin)
c62fd1b300 Enable PPC VSX and ARMv7 NEON tests. 2019-08-20 21:10:23 -04:00
easyaspi314 (Devin)
512b883665 [PPC64] Fix VSX, POWER8 support, and disable POWER7.
The VSX codepath is now working on POWER8 and is fully enabled.

The little endian code has been verified on POWER8E, although
a big endian machine was not available.

This uses vpermxor from POWER8 to shuffle on big endian.

There are a few other fixes as well to unify endian memes.
2019-08-20 21:06:11 -04:00
Yann Collet
dfd1bf117c added comments on VSX code path
which is still disabled for now.
2019-08-15 15:35:53 +02:00
Yann Collet
eccd0827b7 ignore generated .s assembly files 2019-08-15 14:39:41 +02:00
Yann Collet
10904c1277 added XXH_REROLL consistency test
to catch issues such as #240.
Also added XXH64 test for len==4
2019-08-10 11:44:30 +02:00
Yann Collet
67a50241c4
Merge pull request #241 from easyaspi314/clang-rotl
Use __builtin_rotate on Clang
2019-08-10 11:15:52 +02:00
easyaspi314 (Devin)
829386063b Use __builtin_rotate on Clang 2019-08-09 21:09:40 -04:00
Yann Collet
1c9f6ef789 introduced XXH_ASSERT()
avoid impacting prior `assert()` settings (with or without NDEBUG)
2019-08-05 16:44:18 +02:00
Yann Collet
f22cf8876d
Merge pull request #239 from Mezozoysky/cmake_cfg_types
Add CMake build types for single-configuration generators and set def…
2019-08-01 02:00:04 +02:00
Stanislav Demyanovich
a6c986b00c Add CMake build types for single-configuration generators and set default build type to Release. 2019-07-30 19:36:48 +07:00
Yann Collet
b760990065
Merge pull request #238 from Mezozoysky/cmake_opts
Cmake opts
2019-07-30 13:54:11 +02:00
Stanislav Demyanovich
d493a8ad7f Update cmake_unofficial/README.md 2019-07-30 15:57:07 +07:00
Stanislav Demyanovich
097ff91c23 Append .gitignore 2019-07-30 14:47:13 +07:00
Stanislav Demyanovich
1d2bccffc1 Fix/update CMake BUNDLED_MODE logic. 2019-07-30 14:44:49 +07:00
Stanislav Demyanovich
066c0f25dc Replace CMake build-related options with cache entries due to option() issues within CMake < 3.13 (CMP0077). 2019-07-30 13:03:35 +07:00
Yann Collet
510e8d53a0
Merge pull request #237 from Mezozoysky/cmaked
Add CMake Config.
2019-07-29 03:08:12 -07:00
Stanislav Demyanovich
58591b0780 Decrease CMake version to 2.8.12 2019-07-28 19:07:22 +07:00
Stanislav Demyanovich
e6ae601b0c Add CMake Config. 2019-07-28 19:07:03 +07:00
Stanislav Demyanovich
655214fcdd Format CMakeLists.txt indentation. 2019-07-28 17:33:18 +07:00