github.com/cloudflare/circl@v1.5.0/math/fp25519/fp_amd64.go (about) 1 //go:build amd64 && !purego 2 // +build amd64,!purego 3 4 package fp25519 5 6 import ( 7 "golang.org/x/sys/cpu" 8 ) 9 10 var hasBmi2Adx = cpu.X86.HasBMI2 && cpu.X86.HasADX 11 12 var _ = hasBmi2Adx 13 14 func cmov(x, y *Elt, n uint) { cmovAmd64(x, y, n) } 15 func cswap(x, y *Elt, n uint) { cswapAmd64(x, y, n) } 16 func add(z, x, y *Elt) { addAmd64(z, x, y) } 17 func sub(z, x, y *Elt) { subAmd64(z, x, y) } 18 func addsub(x, y *Elt) { addsubAmd64(x, y) } 19 func mul(z, x, y *Elt) { mulAmd64(z, x, y) } 20 func sqr(z, x *Elt) { sqrAmd64(z, x) } 21 func modp(z *Elt) { modpAmd64(z) } 22 23 //go:noescape 24 func cmovAmd64(x, y *Elt, n uint) 25 26 //go:noescape 27 func cswapAmd64(x, y *Elt, n uint) 28 29 //go:noescape 30 func addAmd64(z, x, y *Elt) 31 32 //go:noescape 33 func subAmd64(z, x, y *Elt) 34 35 //go:noescape 36 func addsubAmd64(x, y *Elt) 37 38 //go:noescape 39 func mulAmd64(z, x, y *Elt) 40 41 //go:noescape 42 func sqrAmd64(z, x *Elt) 43 44 //go:noescape 45 func modpAmd64(z *Elt)