| // Copyright 2010 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| //go:build !math_big_pure_go | |
| //go:generate go test ./internal/asmgen -generate | |
| package big | |
| import _ "unsafe" // for linkname | |
| // implemented in arith_$GOARCH.s | |
| // addVV should be an internal detail, | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - github.com/remyoudompheng/bigfft | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname addVV | |
| //go:noescape | |
| func addVV(z, x, y []Word) (c Word) | |
| // subVV should be an internal detail, | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - github.com/remyoudompheng/bigfft | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname subVV | |
| //go:noescape | |
| func subVV(z, x, y []Word) (c Word) | |
| // shlVU should be an internal detail (and a stale one at that), | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - github.com/remyoudompheng/bigfft | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname shlVU | |
| func shlVU(z, x []Word, s uint) (c Word) { | |
| if s == 0 { | |
| copy(z, x) | |
| return 0 | |
| } | |
| return lshVU(z, x, s) | |
| } | |
| // lshVU sets z = x<<s, returning the high bits c. 1 ≤ s ≤ _B-1. | |
| // | |
| //go:noescape | |
| func lshVU(z, x []Word, s uint) (c Word) | |
| // rshVU sets z = x>>s, returning the low bits c. 1 ≤ s ≤ _B-1. | |
| // | |
| //go:noescape | |
| func rshVU(z, x []Word, s uint) (c Word) | |
| // mulAddVWW should be an internal detail, | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - github.com/remyoudompheng/bigfft | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname mulAddVWW | |
| //go:noescape | |
| func mulAddVWW(z, x []Word, m, a Word) (c Word) | |
| // addMulVVW should be an internal detail (and a stale one at that), | |
| // but widely used packages access it using linkname. | |
| // Notable members of the hall of shame include: | |
| // - github.com/remyoudompheng/bigfft | |
| // | |
| // Do not remove or change the type signature. | |
| // See go.dev/issue/67401. | |
| // | |
| //go:linkname addMulVVW | |
| func addMulVVW(z, x []Word, y Word) (c Word) { | |
| return addMulVVWW(z, z, x, y, 0) | |
| } | |
| // addMulVVWW sets z = x+y*m+a. | |
| // | |
| //go:noescape | |
| func addMulVVWW(z, x, y []Word, m, a Word) (c Word) | |