crypto/blake2b
Garrett Bodley 82942cf1d8 blake2b: port blake2b_amd64.s to Avo
This implementation utilizes the same registers found in the reference
implementation, aiming to produce a minimal semantic diff between the
Avo-generated output and the original hand-written assembly.

To verify the Avo implementation, the reference and Avo-generated
assembly files are fed to `go tool asm`, capturing the debug output into
corresponding temp files. The debug output contains supplementary
metadata (line numbers, instruction offsets, and source file references)
that must be removed in order to obtain a semantic diff of the two
files. This is accomplished via a small utility script written in awk.

Commands used to verify Avo output:

GOROOT=$(go env GOROOT)
ASM_PATH="blake2b/blake2b_amd64.s"
REFERENCE="b2d3a6a4b4d36521cd7f653879cf6981e7c5c340"

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  <(git cat-file -p "$REFERENCE:$ASM_PATH") \
  > /tmp/reference.s

go tool asm -o /dev/null -I "$GOROOT"/src/runtime -debug \
  "$ASM_PATH" \
  > /tmp/avo.s

normalize(){
  awk '{
    $1=$2=$3="";
    print substr($0,4)
  }'
}

diff <(normalize < /tmp/reference.s) <(normalize < /tmp/avo.s)

Change-Id: I6dd59fb0b0365674aa5e43b69a57ea60fbcc4ba1
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/600456
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
2024-09-04 20:34:46 +00:00
..
_asm blake2b: port blake2b_amd64.s to Avo 2024-09-04 20:34:46 +00:00
blake2b.go blake2b,blake2s: clarify difference between blake2b and blake2s 2020-04-03 20:14:58 +00:00
blake2bAVX2_amd64.go blake2b: drop Go 1.6, Go 1.8 compatibility 2023-11-27 17:26:05 +00:00
blake2bAVX2_amd64.s blake2b: port blake2bAVX2_amd64.s to Avo 2024-09-04 20:34:34 +00:00
blake2b_amd64.s blake2b: port blake2b_amd64.s to Avo 2024-09-04 20:34:46 +00:00
blake2b_generic.go blake2b: use math.bits rotate functions instead of ad-hoc implementations 2019-04-22 16:24:23 +00:00
blake2b_ref.go all: update go directive to 1.18 2023-10-11 22:02:22 +00:00
blake2b_test.go blake2b,blake2s: implement BinaryMarshaler, BinaryUnmarshaler 2018-03-30 21:03:55 +00:00
blake2x.go all: fix typos 2018-10-29 02:12:03 +00:00
register.go blake2b: drop Go 1.6, Go 1.8 compatibility 2023-11-27 17:26:05 +00:00