SIGN IN SIGN UP

[dev.simd] simd: add ARM64 PMULL (carrylessMultiplyWidenLo) intrinsic

Add polynomial (carryless) multiply long using VPMULL/VPMULL2.
In this CL Uint64x2→Uint64x2 (2D→1Q).
GetHi folding produces VPMULL2 without extra instructions.

Also adds clmul_arm64.go with CarrylessMultiply{Even,Odd,OddEven,EvenOdd}
helper methods matching the amd64 API.

Also adds a feature check for ARM64.PMULL().

Directly based on CL 784020 which includes the 8-bit CLMUL.
Original author: alexander.musman@gmail.com

Change-Id: I6c554398f97c5c827bad92b271b8d03fd8adbd49
Reviewed-on: https://go-review.googlesource.com/c/go/+/785240
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
D
David Chase committed
627bc968ea7c5e2220b87998cd83a544981b2d9b
Parent: 80ab7bc