diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2016-11-15 14:35:31 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2016-11-15 14:35:31 +0800 |
commit | 417bf50cf78bcf8b468b6bd295a572715ecfe5d8 (patch) | |
tree | fe89527b2e68310a4b432d3cc1ca3c787563165b | |
parent | 6ade49b750bd7c302d9ac8e244929b47916b731f (diff) | |
download | tangerine-mcl-417bf50cf78bcf8b468b6bd295a572715ecfe5d8.tar.gz tangerine-mcl-417bf50cf78bcf8b468b6bd295a572715ecfe5d8.tar.zst tangerine-mcl-417bf50cf78bcf8b468b6bd295a572715ecfe5d8.zip |
split fp_proto.hpp into proto.hpp and low_func.hpp
-rw-r--r-- | misc/karatsuba.cpp | 2 | ||||
-rw-r--r-- | sample/large.cpp | 2 | ||||
-rw-r--r-- | src/fp.cpp | 3 | ||||
-rw-r--r-- | src/low_func.hpp (renamed from src/fp_proto.hpp) | 62 | ||||
-rw-r--r-- | src/proto.hpp | 65 | ||||
-rw-r--r-- | test/fp_test.cpp | 3 | ||||
-rw-r--r-- | test/low_test.cpp | 2 |
7 files changed, 73 insertions, 66 deletions
diff --git a/misc/karatsuba.cpp b/misc/karatsuba.cpp index 1a8f3dc..5b18f3d 100644 --- a/misc/karatsuba.cpp +++ b/misc/karatsuba.cpp @@ -5,7 +5,7 @@ #include <stdio.h> #include <mcl/fp.hpp> #include <cybozu/xorshift.hpp> -#include "../src/fp_proto.hpp" +#include "../src/low_func.hpp" #ifdef MCL_USE_LLVM #include "../src/fp_llvm.hpp" #endif diff --git a/sample/large.cpp b/sample/large.cpp index 9991bd5..3c83c2c 100644 --- a/sample/large.cpp +++ b/sample/large.cpp @@ -5,7 +5,7 @@ #include <mcl/fp.hpp> #include <cybozu/benchmark.hpp> #include <sstream> -#include "../src/fp_proto.hpp" +#include "../src/low_func.hpp" typedef mcl::FpT<> Fp; @@ -4,8 +4,9 @@ #ifdef MCL_USE_XBYAK #include "fp_generator.hpp" #endif -#include "fp_proto.hpp" +#include "low_func.hpp" #ifdef MCL_USE_LLVM +#include "proto.hpp" #include "fp_llvm.hpp" #endif diff --git a/src/fp_proto.hpp b/src/low_func.hpp index 7c755b6..559f25f 100644 --- a/src/fp_proto.hpp +++ b/src/low_func.hpp @@ -1,7 +1,7 @@ #pragma once /** @file - @brief prototype of asm function + @brief generic function for each N @author MITSUNARI Shigeo(@herumi) @license modified new BSD license http://opensource.org/licenses/BSD-3-Clause @@ -523,68 +523,8 @@ struct Sqr { template<size_t N, class Tag> const void3u Sqr<N, Tag>::f = Sqr<N, Tag>::func; - } } // mcl::fp -#ifdef MCL_USE_LLVM - -#define MCL_FP_DEF_FUNC_SUB(n, suf) \ -void mcl_fp_add ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ -void mcl_fp_sub ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ -mcl::fp::Unit mcl_fp_addPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ -mcl::fp::Unit mcl_fp_subPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ -void mcl_fp_mulUnitPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, mcl::fp::Unit y); \ -void mcl_fpDbl_mulPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ -void mcl_fpDbl_sqrPre ## n ## suf(mcl::fp::Unit* y, const mcl::fp::Unit* x); \ -void mcl_fp_mont ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ -void mcl_fp_montRed ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* p); \ -void mcl_fpDbl_add ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ -void mcl_fpDbl_sub ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); - -#define MCL_FP_DEF_FUNC(n) \ - MCL_FP_DEF_FUNC_SUB(n, L) \ - MCL_FP_DEF_FUNC_SUB(n, A) - -#define MCL_FP_DEF_FUNC_SPECIAL(suf) \ -void mcl_fpDbl_mod_NIST_P192 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* /* dummy */); \ -void mcl_fp_mulNIST_P192 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* /* dummy */); \ -void mcl_fp_sqr_NIST_P192 ## suf(mcl::fp::Unit* y, const mcl::fp::Unit* x, const mcl::fp::Unit* /* dummy */); \ -void mcl_fpDbl_mod_NIST_P521 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* /* dummy */); - -extern "C" { - -MCL_FP_DEF_FUNC(1) -MCL_FP_DEF_FUNC(2) -MCL_FP_DEF_FUNC(3) -MCL_FP_DEF_FUNC(4) -MCL_FP_DEF_FUNC(5) -MCL_FP_DEF_FUNC(6) -MCL_FP_DEF_FUNC(7) -MCL_FP_DEF_FUNC(8) -MCL_FP_DEF_FUNC(9) -#if CYBOZU_OS_BIT == 32 || MCL_MAX_BIT_SIZE == 768 -MCL_FP_DEF_FUNC(10) -MCL_FP_DEF_FUNC(11) -MCL_FP_DEF_FUNC(12) -#endif -#if CYBOZU_OS_BIT == 32 -MCL_FP_DEF_FUNC(13) -MCL_FP_DEF_FUNC(14) -MCL_FP_DEF_FUNC(15) -MCL_FP_DEF_FUNC(16) -MCL_FP_DEF_FUNC(17) -#endif - -MCL_FP_DEF_FUNC_SPECIAL(L) -MCL_FP_DEF_FUNC_SPECIAL(A) - -} - -#undef MCL_FP_DEF_FUNC_SUB -#undef MCL_FP_DEF_FUNC - -#endif // MCL_USE_LLVM - #ifdef _WIN32 #pragma warning(pop) #endif diff --git a/src/proto.hpp b/src/proto.hpp new file mode 100644 index 0000000..d161f8e --- /dev/null +++ b/src/proto.hpp @@ -0,0 +1,65 @@ +#pragma once +/** + @file + @brief prototype of asm function + @author MITSUNARI Shigeo(@herumi) + @license modified new BSD license + http://opensource.org/licenses/BSD-3-Clause +*/ +#include <mcl/op.hpp> + +#define MCL_FP_DEF_FUNC_SUB(n, suf) \ +void mcl_fp_add ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ +void mcl_fp_sub ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ +mcl::fp::Unit mcl_fp_addPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ +mcl::fp::Unit mcl_fp_subPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ +void mcl_fp_mulUnitPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, mcl::fp::Unit y); \ +void mcl_fpDbl_mulPre ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y); \ +void mcl_fpDbl_sqrPre ## n ## suf(mcl::fp::Unit* y, const mcl::fp::Unit* x); \ +void mcl_fp_mont ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ +void mcl_fp_montRed ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* p); \ +void mcl_fpDbl_add ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); \ +void mcl_fpDbl_sub ## n ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* p); + +#define MCL_FP_DEF_FUNC(n) \ + MCL_FP_DEF_FUNC_SUB(n, L) \ + MCL_FP_DEF_FUNC_SUB(n, A) + +#define MCL_FP_DEF_FUNC_SPECIAL(suf) \ +void mcl_fpDbl_mod_NIST_P192 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* /* dummy */); \ +void mcl_fp_mulNIST_P192 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* x, const mcl::fp::Unit* y, const mcl::fp::Unit* /* dummy */); \ +void mcl_fp_sqr_NIST_P192 ## suf(mcl::fp::Unit* y, const mcl::fp::Unit* x, const mcl::fp::Unit* /* dummy */); \ +void mcl_fpDbl_mod_NIST_P521 ## suf(mcl::fp::Unit* z, const mcl::fp::Unit* xy, const mcl::fp::Unit* /* dummy */); + +extern "C" { + +MCL_FP_DEF_FUNC(1) +MCL_FP_DEF_FUNC(2) +MCL_FP_DEF_FUNC(3) +MCL_FP_DEF_FUNC(4) +MCL_FP_DEF_FUNC(5) +MCL_FP_DEF_FUNC(6) +MCL_FP_DEF_FUNC(7) +MCL_FP_DEF_FUNC(8) +MCL_FP_DEF_FUNC(9) +#if CYBOZU_OS_BIT == 32 || MCL_MAX_BIT_SIZE == 768 +MCL_FP_DEF_FUNC(10) +MCL_FP_DEF_FUNC(11) +MCL_FP_DEF_FUNC(12) +#endif +#if CYBOZU_OS_BIT == 32 +MCL_FP_DEF_FUNC(13) +MCL_FP_DEF_FUNC(14) +MCL_FP_DEF_FUNC(15) +MCL_FP_DEF_FUNC(16) +MCL_FP_DEF_FUNC(17) +#endif + +MCL_FP_DEF_FUNC_SPECIAL(L) +MCL_FP_DEF_FUNC_SPECIAL(A) + +} + +#undef MCL_FP_DEF_FUNC_SUB +#undef MCL_FP_DEF_FUNC + diff --git a/test/fp_test.cpp b/test/fp_test.cpp index e9b9e7b..7674099 100644 --- a/test/fp_test.cpp +++ b/test/fp_test.cpp @@ -2,7 +2,8 @@ #define CYBOZU_TEST_DISABLE_AUTO_RUN #include <cybozu/test.hpp> #include <mcl/fp.hpp> -#include "../src/fp_proto.hpp" +#include "../src/low_func.hpp" +#include "../src/proto.hpp" #include <time.h> #include <cybozu/benchmark.hpp> #include <cybozu/option.hpp> diff --git a/test/low_test.cpp b/test/low_test.cpp index 316aa9d..f5e72a0 100644 --- a/test/low_test.cpp +++ b/test/low_test.cpp @@ -4,7 +4,7 @@ #include <cybozu/test.hpp> #include <cybozu/xorshift.hpp> #include <cybozu/itoa.hpp> -#include "../src/fp_proto.hpp" +#include "../src/low_func.hpp" #include <cybozu/benchmark.hpp> cybozu::XorShift rg; |