diff --git a/src/fp.cpp b/src/fp.cpp index 90410d2..e88670e 100644 --- a/src/fp.cpp +++ b/src/fp.cpp @@ -106,45 +106,6 @@ Mode StrToMode(const std::string& s) throw cybozu::Exception("StrToMode") << s; } -#ifdef MCL_USE_LLVM - -#define MCL_DEF_LLVM_FUNC(n) \ -template<>const u3u AddPre::f = &mcl_fp_addPre ## n ## L; \ -template<>const u3u SubPre::f = &mcl_fp_subPre ## n ## L; \ -template<>const void3u MulPre::f = &mcl_fpDbl_mulPre ## n ## L; \ -template<>const void2u SqrPre::f = &mcl_fpDbl_sqrPre ## n ## L; \ -template<>const void2uI MulUnitPre::f = &mcl_fp_mulUnitPre ## n ## L; \ -template<>const void4u Add::f = &mcl_fp_add ## n ## L; \ -template<>const void4u Sub::f = &mcl_fp_sub ## n ## L; \ -template<>const void4u Mont::f = &mcl_fp_mont ## n ## L; \ -template<>const void3u MontRed::f = &mcl_fp_montRed ## n ## L; \ -template<>const void4u DblAdd::f = &mcl_fpDbl_add ## n ## L; \ -template<>const void4u DblSub::f = &mcl_fpDbl_sub ## n ## L; \ - -MCL_DEF_LLVM_FUNC(1) -MCL_DEF_LLVM_FUNC(2) -MCL_DEF_LLVM_FUNC(3) -MCL_DEF_LLVM_FUNC(4) -MCL_DEF_LLVM_FUNC(5) -MCL_DEF_LLVM_FUNC(6) -MCL_DEF_LLVM_FUNC(7) -MCL_DEF_LLVM_FUNC(8) -MCL_DEF_LLVM_FUNC(9) -#if CYBOZU_OS_BIT == 32 || MCL_MAX_OP_BIT_SIZE == 768 -MCL_DEF_LLVM_FUNC(10) -MCL_DEF_LLVM_FUNC(11) -MCL_DEF_LLVM_FUNC(12) -#endif -#if CYBOZU_OS_BIT == 32 -MCL_DEF_LLVM_FUNC(13) -MCL_DEF_LLVM_FUNC(14) -MCL_DEF_LLVM_FUNC(15) -MCL_DEF_LLVM_FUNC(16) -MCL_DEF_LLVM_FUNC(17) -#endif - -#endif - static inline void set_mpz_t(mpz_t& z, const Unit* p, int n) { int s = n; diff --git a/src/fp_proto.hpp b/src/fp_proto.hpp index 92c79f9..b9e7317 100644 --- a/src/fp_proto.hpp +++ b/src/fp_proto.hpp @@ -492,8 +492,47 @@ MCL_FP_DEF_FUNC_SPECIAL(A) #undef MCL_FP_DEF_FUNC_SUB #undef MCL_FP_DEF_FUNC +namespace mcl { namespace fp { + +#define MCL_DEF_LLVM_FUNC(n) \ +template<>const u3u AddPre::f = &mcl_fp_addPre ## n ## L; \ +template<>const u3u SubPre::f = &mcl_fp_subPre ## n ## L; \ +template<>const void3u MulPre::f = &mcl_fpDbl_mulPre ## n ## L; \ +template<>const void2u SqrPre::f = &mcl_fpDbl_sqrPre ## n ## L; \ +template<>const void2uI MulUnitPre::f = &mcl_fp_mulUnitPre ## n ## L; \ +template<>const void4u Add::f = &mcl_fp_add ## n ## L; \ +template<>const void4u Sub::f = &mcl_fp_sub ## n ## L; \ +template<>const void4u Mont::f = &mcl_fp_mont ## n ## L; \ +template<>const void3u MontRed::f = &mcl_fp_montRed ## n ## L; \ +template<>const void4u DblAdd::f = &mcl_fpDbl_add ## n ## L; \ +template<>const void4u DblSub::f = &mcl_fpDbl_sub ## n ## L; \ + +MCL_DEF_LLVM_FUNC(1) +MCL_DEF_LLVM_FUNC(2) +MCL_DEF_LLVM_FUNC(3) +MCL_DEF_LLVM_FUNC(4) +MCL_DEF_LLVM_FUNC(5) +MCL_DEF_LLVM_FUNC(6) +MCL_DEF_LLVM_FUNC(7) +MCL_DEF_LLVM_FUNC(8) +MCL_DEF_LLVM_FUNC(9) +#if CYBOZU_OS_BIT == 32 || MCL_MAX_OP_BIT_SIZE == 768 +MCL_DEF_LLVM_FUNC(10) +MCL_DEF_LLVM_FUNC(11) +MCL_DEF_LLVM_FUNC(12) +#endif +#if CYBOZU_OS_BIT == 32 +MCL_DEF_LLVM_FUNC(13) +MCL_DEF_LLVM_FUNC(14) +MCL_DEF_LLVM_FUNC(15) +MCL_DEF_LLVM_FUNC(16) +MCL_DEF_LLVM_FUNC(17) #endif +} } // mcl::fp + +#endif // MCL_USE_LLVM + #ifdef _WIN32 #pragma warning(pop) #endif