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