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)