fp_amd64.go raw

   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)
  46