diff options
Diffstat (limited to 'vendor/github.com/remyoudompheng')
10 files changed, 30 insertions, 303 deletions
diff --git a/vendor/github.com/remyoudompheng/bigfft/README b/vendor/github.com/remyoudompheng/bigfft/README index 303c6177..0fcd39d9 100644 --- a/vendor/github.com/remyoudompheng/bigfft/README +++ b/vendor/github.com/remyoudompheng/bigfft/README @@ -1,3 +1,14 @@ +This library is a toy proof-of-concept implementation of the +well-known Schonhage-Strassen method for multiplying integers. +It is not expected to have a real life usecase outside number +theory computations, nor is it expected to be used in any production +system. + +If you are using it in your project, you may want to carefully +examine the actual requirement or problem you are trying to solve. + +# Comparison with the standard library and GMP + Benchmarking math/big vs. bigfft Number size old ns/op new ns/op delta diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_386.s b/vendor/github.com/remyoudompheng/bigfft/arith_386.s deleted file mode 100644 index cc50a017..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_386.s +++ /dev/null @@ -1,36 +0,0 @@ -// Trampolines to math/big assembly implementations. - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - JMP math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -TEXT ·subVV(SB),NOSPLIT,$0 - JMP math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - JMP math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -TEXT ·subVW(SB),NOSPLIT,$0 - JMP math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - JMP math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - JMP math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - JMP math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - JMP math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_amd64.s b/vendor/github.com/remyoudompheng/bigfft/arith_amd64.s deleted file mode 100644 index 0b79335f..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_amd64.s +++ /dev/null @@ -1,38 +0,0 @@ -// Trampolines to math/big assembly implementations. - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - JMP math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -// (same as addVV except for SBBQ instead of ADCQ and label names) -TEXT ·subVV(SB),NOSPLIT,$0 - JMP math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - JMP math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -// (same as addVW except for SUBQ/SBBQ instead of ADDQ/ADCQ and label names) -TEXT ·subVW(SB),NOSPLIT,$0 - JMP math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - JMP math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - JMP math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - JMP math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - JMP math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_arm.s b/vendor/github.com/remyoudompheng/bigfft/arith_arm.s deleted file mode 100644 index 0ed60f5c..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_arm.s +++ /dev/null @@ -1,36 +0,0 @@ -// Trampolines to math/big assembly implementations. - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - B math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -TEXT ·subVV(SB),NOSPLIT,$0 - B math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - B math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -TEXT ·subVW(SB),NOSPLIT,$0 - B math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - B math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - B math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - B math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - B math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_arm64.s b/vendor/github.com/remyoudompheng/bigfft/arith_arm64.s deleted file mode 100644 index 0ed60f5c..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_arm64.s +++ /dev/null @@ -1,36 +0,0 @@ -// Trampolines to math/big assembly implementations. - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - B math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -TEXT ·subVV(SB),NOSPLIT,$0 - B math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - B math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -TEXT ·subVW(SB),NOSPLIT,$0 - B math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - B math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - B math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - B math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - B math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_decl.go b/vendor/github.com/remyoudompheng/bigfft/arith_decl.go index 7659b019..96937dff 100644 --- a/vendor/github.com/remyoudompheng/bigfft/arith_decl.go +++ b/vendor/github.com/remyoudompheng/bigfft/arith_decl.go @@ -4,13 +4,30 @@ package bigfft -import . "math/big" +import ( + "math/big" + _ "unsafe" +) -// implemented in arith_$GOARCH.s +type Word = big.Word + +//go:linkname addVV math/big.addVV func addVV(z, x, y []Word) (c Word) + +//go:linkname subVV math/big.subVV func subVV(z, x, y []Word) (c Word) + +//go:linkname addVW math/big.addVW func addVW(z, x []Word, y Word) (c Word) + +//go:linkname subVW math/big.subVW func subVW(z, x []Word, y Word) (c Word) + +//go:linkname shlVU math/big.shlVU func shlVU(z, x []Word, s uint) (c Word) + +//go:linkname mulAddVWW math/big.mulAddVWW func mulAddVWW(z, x []Word, y, r Word) (c Word) + +//go:linkname addMulVVW math/big.addMulVVW func addMulVVW(z, x []Word, y Word) (c Word) diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_mips64x.s b/vendor/github.com/remyoudompheng/bigfft/arith_mips64x.s deleted file mode 100644 index 82443882..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_mips64x.s +++ /dev/null @@ -1,40 +0,0 @@ -// Trampolines to math/big assembly implementations. - -// +build mips64 mips64le - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - JMP math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -// (same as addVV except for SBBQ instead of ADCQ and label names) -TEXT ·subVV(SB),NOSPLIT,$0 - JMP math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - JMP math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -// (same as addVW except for SUBQ/SBBQ instead of ADDQ/ADCQ and label names) -TEXT ·subVW(SB),NOSPLIT,$0 - JMP math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - JMP math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - JMP math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - JMP math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - JMP math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_mipsx.s b/vendor/github.com/remyoudompheng/bigfft/arith_mipsx.s deleted file mode 100644 index 6c0e92e5..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_mipsx.s +++ /dev/null @@ -1,40 +0,0 @@ -// Trampolines to math/big assembly implementations. - -// +build mips mipsle - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - JMP math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -// (same as addVV except for SBBQ instead of ADCQ and label names) -TEXT ·subVV(SB),NOSPLIT,$0 - JMP math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - JMP math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -// (same as addVW except for SUBQ/SBBQ instead of ADDQ/ADCQ and label names) -TEXT ·subVW(SB),NOSPLIT,$0 - JMP math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - JMP math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - JMP math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - JMP math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - JMP math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_ppc64x.s b/vendor/github.com/remyoudompheng/bigfft/arith_ppc64x.s deleted file mode 100644 index 16c7f153..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_ppc64x.s +++ /dev/null @@ -1,38 +0,0 @@ -// Trampolines to math/big assembly implementations. - -// +build ppc64 ppc64le - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - BR math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -TEXT ·subVV(SB),NOSPLIT,$0 - BR math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - BR math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -TEXT ·subVW(SB),NOSPLIT,$0 - BR math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - BR math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - BR math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - BR math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - BR math∕big·addMulVVW(SB) - diff --git a/vendor/github.com/remyoudompheng/bigfft/arith_s390x.s b/vendor/github.com/remyoudompheng/bigfft/arith_s390x.s deleted file mode 100644 index f72ab053..00000000 --- a/vendor/github.com/remyoudompheng/bigfft/arith_s390x.s +++ /dev/null @@ -1,37 +0,0 @@ - -// Trampolines to math/big assembly implementations. - -#include "textflag.h" - -// func addVV(z, x, y []Word) (c Word) -TEXT ·addVV(SB),NOSPLIT,$0 - BR math∕big·addVV(SB) - -// func subVV(z, x, y []Word) (c Word) -TEXT ·subVV(SB),NOSPLIT,$0 - BR math∕big·subVV(SB) - -// func addVW(z, x []Word, y Word) (c Word) -TEXT ·addVW(SB),NOSPLIT,$0 - BR math∕big·addVW(SB) - -// func subVW(z, x []Word, y Word) (c Word) -TEXT ·subVW(SB),NOSPLIT,$0 - BR math∕big·subVW(SB) - -// func shlVU(z, x []Word, s uint) (c Word) -TEXT ·shlVU(SB),NOSPLIT,$0 - BR math∕big·shlVU(SB) - -// func shrVU(z, x []Word, s uint) (c Word) -TEXT ·shrVU(SB),NOSPLIT,$0 - BR math∕big·shrVU(SB) - -// func mulAddVWW(z, x []Word, y, r Word) (c Word) -TEXT ·mulAddVWW(SB),NOSPLIT,$0 - BR math∕big·mulAddVWW(SB) - -// func addMulVVW(z, x []Word, y Word) (c Word) -TEXT ·addMulVVW(SB),NOSPLIT,$0 - BR math∕big·addMulVVW(SB) - |