github.com/consensys/gnark-crypto@v0.14.0/internal/generator/tower/template/fq12over6over2/amd64.fq2.go.tmpl (about) 1 2 //go:noescape 3 func addE2(res,x,y *E2) 4 5 //go:noescape 6 func subE2(res,x,y *E2) 7 8 //go:noescape 9 func doubleE2(res,x *E2) 10 11 //go:noescape 12 func negE2(res,x *E2) 13 14 {{if eq .Name "bn254"}} 15 16 //go:noescape 17 func mulNonResE2(res, x *E2) 18 19 //go:noescape 20 func squareAdxE2(res, x *E2) 21 22 //go:noescape 23 func mulAdxE2(res, x, y *E2) 24 25 // MulByNonResidue multiplies a E2 by (9,1) 26 func (z *E2) MulByNonResidue(x *E2) *E2 { 27 mulNonResE2(z, x) 28 return z 29 } 30 31 // Mul sets z to the E2-product of x,y, returns z 32 func (z *E2) Mul(x, y *E2) *E2 { 33 mulAdxE2(z, x, y) 34 return z 35 } 36 37 // Square sets z to the E2-product of x,x, returns z 38 func (z *E2) Square(x *E2) *E2 { 39 squareAdxE2(z, x) 40 return z 41 } 42 43 {{else if eq .Name "bls12-381"}} 44 45 //go:noescape 46 func mulNonResE2(res, x *E2) 47 48 //go:noescape 49 func squareAdxE2(res, x *E2) 50 51 //go:noescape 52 func mulAdxE2(z, x, y *E2) 53 54 // Mul sets z to the E2-product of x,y, returns z 55 func (z *E2) Mul(x, y *E2) *E2 { 56 mulAdxE2(z, x, y) 57 return z 58 } 59 60 61 // MulByNonResidue multiplies a E2 by (1,1) 62 func (z *E2) MulByNonResidue(x *E2) *E2 { 63 mulNonResE2(z, x) 64 return z 65 } 66 // Square sets z to the E2-product of x,x, returns z 67 func (z *E2) Square(x *E2) *E2 { 68 squareAdxE2(z, x) 69 return z 70 } 71 72 {{end}}