Skip to content
BLAKE2 AVX2 implementations
Branch: master
Clone or download
sneves Merge pull request #4 from grafi-tt/shift-diag
About 10% speed up: tweak diagonal shuffle
Latest commit b372392 May 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE add blake2sp Mar 20, 2016
Makefile add blake2sp Mar 20, 2016
README.md reschedule and skylake numbers Feb 26, 2017
bench.c Initial commit Mar 9, 2016
bench.sh reschedule and skylake numbers Feb 26, 2017
blake2-kat.h Initial commit Mar 9, 2016
blake2.h Initial commit Mar 9, 2016
blake2b-common.h
blake2b-load-avx2-simple.h tweak diagonal shuffle in order to relax dependency on a May 3, 2019
blake2b-load-avx2.h tweak diagonal shuffle in order to relax dependency on a May 3, 2019
blake2b.c tweak diagonal shuffle in order to relax dependency on a May 3, 2019
blake2b.h Initial commit Mar 9, 2016
blake2bp.c tweak diagonal shuffle in order to relax dependency on a May 3, 2019
blake2bp.h Initial commit Mar 9, 2016
blake2s-common.h add blake2sp Mar 20, 2016
blake2s-load-sse2.h add blake2sp Mar 20, 2016
blake2s-load-sse41.h add blake2sp Mar 20, 2016
blake2sp.c reschedule and skylake numbers Feb 26, 2017
blake2sp.h add blake2sp Mar 20, 2016

README.md

BLAKE2 AVX2 implementations

This is experimental code implementing BLAKE2 using the AVX2 instruction set present in the Intel Haswell and later microarchitectures.

It currently implements BLAKE2b, BLAKE2bp, and BLAKE2sp using 3 similar but slightly different approaches: one lets the compiler choose how to permute the message, another one does it manually, and the final one uses the gather instructions introduced with AVX2. Current recorded speeds for long messages are:

  • 3.19 cycles per byte on Haswell for BLAKE2b;

  • 1.37 cycles per byte on Haswell for BLAKE2bp;

  • 1.39 cycles per byte on Haswell for BLAKE2sp.

  • 3.08 cycles per byte on Skylake for BLAKE2b;

  • 1.29 cycles per byte on Skylake for BLAKE2bp;

  • 1.30 cycles per byte on Skylake for BLAKE2sp.

You can’t perform that action at this time.