From 4ad9d4e444e4f75fd388078b617c411bfab762c8 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Thu, 12 May 2016 09:50:36 +0200 Subject: [PATCH] prefer_openssl: add amd64 constraint Optimized assembly versions for Go GCM are only available on amd64. --- Documentation/MANPAGE.md | 2 +- internal/prefer_openssl/prefer_go1.5.go | 7 ++++--- internal/prefer_openssl/prefer_go1.6.go | 7 ++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Documentation/MANPAGE.md b/Documentation/MANPAGE.md index cb725d5..411a1d5 100644 --- a/Documentation/MANPAGE.md +++ b/Documentation/MANPAGE.md @@ -97,7 +97,7 @@ used internally for daemonization. **-openssl bool** : Use OpenSSL instead of built-in Go crypto (default "auto"). Using -built-in crypto is 4x slower unless you CPU has AES instructions and +built-in crypto is 4x slower unless your CPU has AES instructions and you are using Go 1.6+. In mode "auto", gocrypts chooses the faster option. diff --git a/internal/prefer_openssl/prefer_go1.5.go b/internal/prefer_openssl/prefer_go1.5.go index 4b681e7..51a07ab 100644 --- a/internal/prefer_openssl/prefer_go1.5.go +++ b/internal/prefer_openssl/prefer_go1.5.go @@ -1,9 +1,10 @@ -// +build !go1.6 -// = go 1.5 or lower +// +build !go1.6 !amd64 +// not go1.6+ OR not amd64 package prefer_openssl func PreferOpenSSL() bool { - // OpenSSL is always faster than Go GCM on old Go versions. + // OpenSSL is always faster than Go GCM on old Go versions or on anything + // other than amd64 return true } diff --git a/internal/prefer_openssl/prefer_go1.6.go b/internal/prefer_openssl/prefer_go1.6.go index 5d0f426..898db0c 100644 --- a/internal/prefer_openssl/prefer_go1.6.go +++ b/internal/prefer_openssl/prefer_go1.6.go @@ -1,10 +1,11 @@ -// +build go1.6 -// = go 1.6 or higher +// +build go1.6,amd64 +// go1.6+ AND amd64 package prefer_openssl // PreferOpenSSL tells us if OpenSSL is faster than Go GCM on this machine. -// Go GCM is fastern when the CPU has AES instructions and Go is v1.6 or higher. +// Go GCM is faster when the CPU has AES instructions and Go is v1.6 or higher +// on amd64. // // See https://github.com/rfjakob/gocryptfs/issues/23#issuecomment-218286502 // for benchmarks.