curve_amd64.go raw
1 //go:build amd64 && !purego
2 // +build amd64,!purego
3
4 package x25519
5
6 import (
7 fp "github.com/cloudflare/circl/math/fp25519"
8 "golang.org/x/sys/cpu"
9 )
10
11 var hasBmi2Adx = cpu.X86.HasBMI2 && cpu.X86.HasADX
12
13 var _ = hasBmi2Adx
14
15 func double(x, z *fp.Elt) { doubleAmd64(x, z) }
16 func diffAdd(w *[5]fp.Elt, b uint) { diffAddAmd64(w, b) }
17 func ladderStep(w *[5]fp.Elt, b uint) { ladderStepAmd64(w, b) }
18 func mulA24(z, x *fp.Elt) { mulA24Amd64(z, x) }
19
20 //go:noescape
21 func ladderStepAmd64(w *[5]fp.Elt, b uint)
22
23 //go:noescape
24 func diffAddAmd64(w *[5]fp.Elt, b uint)
25
26 //go:noescape
27 func doubleAmd64(x, z *fp.Elt)
28
29 //go:noescape
30 func mulA24Amd64(z, x *fp.Elt)
31