]> granicus.if.org Git - python/commit
fixes bpo-31834: Use optimized code for BLAKE2 only with SSSE3+ (#4066)
authorMichał Górny <mgorny@gentoo.org>
Tue, 24 Oct 2017 06:54:19 +0000 (08:54 +0200)
committerBenjamin Peterson <benjamin@python.org>
Tue, 24 Oct 2017 06:54:19 +0000 (23:54 -0700)
commit1aa00ff383c43335e4a5044274617dbf59bc839e
tree7a9435e859119e00b0159268a8456a2d7a7db6ea
parent3b66ebe7727dba68c2c6ccf0cd85a4c31255b9b4
fixes bpo-31834: Use optimized code for BLAKE2 only with SSSE3+ (#4066)

Rework the code choosing BLAKE2 code paths from using the optimized
variant on all x86_64 machines to using it when SSSE3 or better
supported instructions sets are available.

Firstly, this solves the problem of using pure SSE2 code path on x86_64
machines. As reported in the bug, this code is slower than the reference
code on all tested x86_64 machines. Furthermore, on Athlon64 that lacks
SSSE3, it is even 2.5 times slower than the reference code! Checking
for SSSE3 therefore ensures that the optimized implementation will only
be used when it has a chance of performing better.

Secondly, this makes it possible to use SSSE3+ optimizations on 32-bit
x86 systems. This allows for even 2 times speed gain on modern 32-bit
x86 systems (tested in a 32-bit chroot).
Misc/NEWS.d/next/Library/2017-10-23-23-27-52.bpo-31834.InwC6O.rst [new file with mode: 0644]
Modules/_blake2/blake2b_impl.c
Modules/_blake2/blake2s_impl.c
setup.py