go/src/internal/cpu
bill_ofarrell 897e0807c3 crypto/elliptic: utilize faster z14 multiply/square instructions (when available)
In the s390x assembly implementation of NIST P-256 curve, utilize faster multiply/square
instructions introduced in the z14. These new instructions are designed for crypto
and are constant time. The algorithm is unchanged except for faster
multiplication when run on a z14 or later. On z13, the original mutiplication
(also constant time) is used.

P-256 performance is critical in many applications, such as Blockchain.

name            old time      new time     delta
BaseMultP256    24396 ns/op   21564 ns/op  1.13x
ScalarMultP256  87546 ns/op   72813 ns/op. 1.20x

Change-Id: I7e6d8b420fac56d5f9cc13c9423e2080df854bac
Reviewed-on: https://go-review.googlesource.com/c/146022
Reviewed-by: Michael Munday <mike.munday@ibm.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Michael Munday <mike.munday@ibm.com>
2018-12-05 10:58:44 +00:00
..
cpu.go crypto/elliptic: utilize faster z14 multiply/square instructions (when available) 2018-12-05 10:58:44 +00:00
cpu_386.go internal/cpu: add experiment to disable CPU features with GODEBUGCPU 2018-05-22 18:49:31 +00:00
cpu_amd64.go internal/cpu: add experiment to disable CPU features with GODEBUGCPU 2018-05-22 18:49:31 +00:00
cpu_amd64p32.go internal/cpu: add experiment to disable CPU features with GODEBUGCPU 2018-05-22 18:49:31 +00:00
cpu_arm.go internal/cpu: add invalid option warnings and support to enable cpu features 2018-10-15 21:46:44 +00:00
cpu_arm64.go internal/cpu: add options and warnings for required cpu features 2018-10-24 06:27:53 +00:00
cpu_mips.go internal/cpu: add a CacheLinePadSize constant 2018-08-24 17:45:28 +00:00
cpu_mips64.go internal/cpu: add a CacheLinePadSize constant 2018-08-24 17:45:28 +00:00
cpu_mips64le.go internal/cpu: add a CacheLinePadSize constant 2018-08-24 17:45:28 +00:00
cpu_mipsle.go internal/cpu: add a CacheLinePadSize constant 2018-08-24 17:45:28 +00:00
cpu_no_init.go runtime: move arm hardware division support detection to internal/cpu 2018-08-24 14:27:07 +00:00
cpu_ppc64x.go internal/cpu, runtime: add CPU feature detection support for AIX 2018-10-31 16:11:20 +00:00
cpu_s390x.go crypto/elliptic: utilize faster z14 multiply/square instructions (when available) 2018-12-05 10:58:44 +00:00
cpu_s390x.s crypto, internal/cpu: fix s390x AES feature detection and update SHA implementations 2018-06-11 11:41:31 +00:00
cpu_s390x_test.go crypto, internal/cpu: fix s390x AES feature detection and update SHA implementations 2018-06-11 11:41:31 +00:00
cpu_test.go internal/cpu: move GODEBUGCPU options into GODEBUG 2018-11-14 21:47:50 +00:00
cpu_wasm.go internal/cpu: add a CacheLinePadSize constant 2018-08-24 17:45:28 +00:00
cpu_x86.go internal/cpu: add options and warnings for required cpu features 2018-10-24 06:27:53 +00:00
cpu_x86.s
cpu_x86_test.go internal/cpu: move GODEBUGCPU options into GODEBUG 2018-11-14 21:47:50 +00:00
export_test.go runtime: don't use linkname to refer to internal/cpu 2018-08-21 14:36:09 +00:00