crypto/sha3
Garrett Bodley e983fa2741 sha3: Avo port of keccakf_amd64.s
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:

BASE="d66d9c31b4ae80d173d1187a9e40c188788dbdbc"
go tool asm -o /dev/null -debug \
  <(git cat-file -p "$BASE":sha3/keccakf_amd64.s) \
  > /tmp/reference.s

go tool asm -o /dev/null -debug \
  sha3/keccakf_amd64.s \
  > /tmp/avo.s

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

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

Change-Id: I1c0ea516531355263b83d3b66a37df090e293cea
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/594655
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Russell Webb <russell.webb@protonmail.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
2024-07-16 18:24:57 +00:00
..
_asm sha3: Avo port of keccakf_amd64.s 2024-07-16 18:24:57 +00:00
testdata sha3: add cSHAKE support 2019-04-17 17:40:47 +00:00
allocations_test.go sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
doc.go all: bump go.mod version and drop compatibility shims 2024-06-26 15:12:35 +00:00
hashes.go all: bump go.mod version and drop compatibility shims 2024-06-26 15:12:35 +00:00
hashes_noasm.go sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
keccakf.go all: update go directive to 1.18 2023-10-11 22:02:22 +00:00
keccakf_amd64.go all: update go directive to 1.18 2023-10-11 22:02:22 +00:00
keccakf_amd64.s sha3: Avo port of keccakf_amd64.s 2024-07-16 18:24:57 +00:00
sha3.go sha3: make APIs usable with zero allocations 2024-05-07 22:04:09 +00:00
sha3_s390x.go sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
sha3_s390x.s sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
sha3_test.go sha3: simplify XOR functions 2024-05-06 15:29:57 +00:00
shake.go sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
shake_noasm.go sha3: reenable s390x assembly 2024-05-07 22:33:54 +00:00
xor.go sha3: simplify XOR functions 2024-05-06 15:29:57 +00:00