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)