]> Cypherpunks repositories - gostls13.git/commit
crypto/aes: dedicated asm version of AES-GCM
authorVlad Krasnov <vlad@cloudflare.com>
Thu, 28 May 2015 20:50:23 +0000 (13:50 -0700)
committerAdam Langley <agl@golang.org>
Sat, 29 Aug 2015 21:02:38 +0000 (21:02 +0000)
commitefeeee38c9aa30d2bdcb9d150c6e76ada01c5145
tree1435f295800887bd0d313b65b97ff404edaa55b3
parentbfa016150b886b76cc1a4050ee8b6e98d0e0e9ba
crypto/aes: dedicated asm version of AES-GCM

The existing implementation didn't use the CLMUL instructions for fast
and constant time binary-field multiplication. With this change, amd64
CPUs that support both AES and CLMUL instructions will use an optimised
asm implementation.

benchmark                 old ns/op     new ns/op     delta
BenchmarkAESGCMSeal8K     91723         3200          -96.51%
BenchmarkAESGCMOpen8K     91487         3324          -96.37%
BenchmarkAESGCMSeal1K     11873         546           -95.40%
BenchmarkAESGCMOpen1K     11833         594           -94.98%

benchmark                 old MB/s     new MB/s     speedup
BenchmarkAESGCMSeal8K     89.31        2559.62      28.66x
BenchmarkAESGCMOpen8K     89.54        2463.78      27.52x
BenchmarkAESGCMSeal1K     86.24        1872.49      21.71x
BenchmarkAESGCMOpen1K     86.53        1721.78      19.90x

Change-Id: Idd63233098356d8b353d16624747b74d0c3f193e
Reviewed-on: https://go-review.googlesource.com/10484
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Adam Langley <agl@golang.org>
src/crypto/aes/aes_gcm.go [new file with mode: 0644]
src/crypto/aes/cipher.go
src/crypto/aes/cipher_generic.go
src/crypto/aes/gcm_amd64.s [new file with mode: 0644]
src/crypto/cipher/benchmark_test.go
src/crypto/cipher/gcm.go
src/crypto/cipher/gcm_test.go