]> Cypherpunks repositories - gostls13.git/commit
crypto: detect BMI usability on AMD64 for sha1 and sha256
authorLion Yang <lion@aosc.xyz>
Wed, 4 Jan 2017 21:13:53 +0000 (05:13 +0800)
committerIan Lance Taylor <iant@golang.org>
Thu, 5 Jan 2017 15:37:37 +0000 (15:37 +0000)
commita2b615d5270f0bc2ee1dfcdd7849bdd05ee76a14
tree2446db40f137cdf160d3c16c8299ed5dae6381d7
parentf5608c20f7b88c20fa2cd70090d9917df63f5c8e
crypto: detect BMI usability on AMD64 for sha1 and sha256

The existing implementations on AMD64 only detects AVX2 usability,
when they also contains BMI (bit-manipulation instructions).
These instructions crash the running program as 'unknown instructions'
on the architecture, e.g. i3-4000M, which supports AVX2 but not
support BMI.

This change added the detections for BMI1 and BMI2 to AMD64 runtime with
two flags as the result, `support_bmi1` and `support_bmi2`,
in runtime/runtime2.go. It also completed the condition to run AVX2 version
in packages crypto/sha1 and crypto/sha256.

Fixes #18512

Change-Id: I917bf0de365237740999de3e049d2e8f2a4385ad
Reviewed-on: https://go-review.googlesource.com/34850
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/crypto/sha1/sha1block_amd64.s
src/crypto/sha256/sha256block_amd64.s
src/runtime/asm_amd64.s
src/runtime/runtime2.go