github.com/cloudflare/circl@v1.5.0/ecc/fourq/point_amd64.go (about)

     1  //go:build amd64 && !purego
     2  // +build amd64,!purego
     3  
     4  package fourq
     5  
     6  import "unsafe"
     7  
     8  const ( // constants used in assembly implementation
     9  	_x       = unsafe.Offsetof(pointR1{}.X)
    10  	_y       = unsafe.Offsetof(pointR1{}.Y)
    11  	_z       = unsafe.Offsetof(pointR1{}.Z)
    12  	_ta      = unsafe.Offsetof(pointR1{}.Ta)
    13  	_tb      = unsafe.Offsetof(pointR1{}.Tb)
    14  	_addYXR2 = unsafe.Offsetof(pointR2{}.addYX)
    15  	_subYXR2 = unsafe.Offsetof(pointR2{}.subYX)
    16  	_z2R2    = unsafe.Offsetof(pointR2{}.z2)
    17  	_dt2R2   = unsafe.Offsetof(pointR2{}.dt2)
    18  	_addYXR3 = unsafe.Offsetof(pointR3{}.addYX)
    19  	_subYXR3 = unsafe.Offsetof(pointR3{}.subYX)
    20  	_dt2R3   = unsafe.Offsetof(pointR3{}.dt2)
    21  	_        = _x + _y + _z + _ta + _tb + _addYXR2 + _subYXR2 +
    22  		_z2R2 + _dt2R2 + _addYXR3 + _subYXR3 + _dt2R3
    23  )
    24  
    25  func (P *pointR1) double()           { doubleAmd64(P) }
    26  func (P *pointR1) add(Q *pointR2)    { addAmd64(P, Q) }
    27  func (P *pointR1) mixAdd(Q *pointR3) { mixAddAmd64(P, Q) }
    28  
    29  //go:noescape
    30  func doubleAmd64(P *pointR1)
    31  
    32  //go:noescape
    33  func addAmd64(P *pointR1, Q *pointR2)
    34  
    35  //go:noescape
    36  func mixAddAmd64(P *pointR1, Q *pointR3)