diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2017-01-26 10:43:10 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2017-01-26 10:43:10 +0800 |
commit | e4ef74373a96a0e8a12aff745d0cb24a96592250 (patch) | |
tree | ad4469da052140b8118625a3538135b451850d55 | |
parent | c0804671f67ab29578d6f17b8f49ea33555b7ac1 (diff) | |
download | tangerine-mcl-e4ef74373a96a0e8a12aff745d0cb24a96592250.tar.gz tangerine-mcl-e4ef74373a96a0e8a12aff745d0cb24a96592250.tar.zst tangerine-mcl-e4ef74373a96a0e8a12aff745d0cb24a96592250.zip |
test of 1024 bit size
-rw-r--r-- | sample/rawbench.cpp | 10 | ||||
-rw-r--r-- | src/fp.cpp | 19 | ||||
-rw-r--r-- | src/low_func_llvm.hpp | 5 | ||||
-rw-r--r-- | src/proto.hpp | 3 |
4 files changed, 26 insertions, 11 deletions
diff --git a/sample/rawbench.cpp b/sample/rawbench.cpp index 4665cb9..8a86682 100644 --- a/sample/rawbench.cpp +++ b/sample/rawbench.cpp @@ -5,7 +5,7 @@ #include <mcl/fp.hpp> #include <mcl/fp_tower.hpp> -typedef mcl::FpT<mcl::FpTag, 512> Fp; +typedef mcl::FpT<mcl::FpTag> Fp; typedef mcl::Fp2T<Fp> Fp2; typedef mcl::FpDblT<Fp> FpDbl; typedef mcl::Fp6T<Fp> Fp6; @@ -151,6 +151,10 @@ int main(int argc, char *argv[]) // N = 8 "0x8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f", "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc7", +#if MCL_MAX_BIT_SIZE == 1024 + "0xc70b1ddda9b96e3965e5855942aa5852d8f8e052c760ac32cdfec16a2ed3d56981e1a475e20a70144ed2f5061ba64900f69451492803f815d446ee133d0668f7a7f3276d6301c95ce231f0e4b0d0f3882f10014fca04454cff55d2e2d4cfc1aad33b8d38397e2fc8b623177e63d0b783269c40a85b8f105654783b8ed2e737df", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97", +#endif }; for (size_t i = 0; i < CYBOZU_NUM_OF_ARRAY(tbl); i++) { const char *p = tbl[i]; @@ -165,7 +169,9 @@ int main(int argc, char *argv[]) benchRaw(tbl[i], mcl::fp::FP_LLVM_MONT); #endif #ifdef MCL_USE_XBYAK - benchRaw(tbl[i], mcl::fp::FP_XBYAK); + if (bitSize <= 256) { + benchRaw(tbl[i], mcl::fp::FP_XBYAK); + } #endif } } catch (std::exception& e) { @@ -394,16 +394,19 @@ void Op::init(const std::string& mstr, size_t maxBitSize, Mode mode) case 8: setOp<8>(*this, mode); break; case 9: setOp<9>(*this, mode); break; // 576 if 64-bit #if CYBOZU_OS_BIT == 32 || MCL_MAX_BIT_SIZE == 768 - case 10: setOp<10>(*this, mode); break; - case 11: setOp<11>(*this, mode); break; - case 12: setOp<12>(*this, mode); break; // 768 if 64-bit + case 10: setOp<10>(*this, mode); break; + case 11: setOp<11>(*this, mode); break; + case 12: setOp<12>(*this, mode); break; // 768 if 64-bit #endif #if CYBOZU_OS_BIT == 32 - case 13: setOp<13>(*this, mode); break; - case 14: setOp<14>(*this, mode); break; - case 15: setOp<15>(*this, mode); break; - case 16: setOp<16>(*this, mode); break; - case 17: setOp<17>(*this, mode); break; // 544 if 32-bit + case 13: setOp<13>(*this, mode); break; + case 14: setOp<14>(*this, mode); break; + case 15: setOp<15>(*this, mode); break; + case 16: setOp<16>(*this, mode); break; + case 17: setOp<17>(*this, mode); break; // 544 if 32-bit +#endif +#if CYBOZU_OS_BIT == 64 && MCL_MAX_BIT_SIZE == 1024 + case 16: setOp<16>(*this, mode); break; #endif default: throw cybozu::Exception("Op::init:not:support") << N << mstr; diff --git a/src/low_func_llvm.hpp b/src/low_func_llvm.hpp index a02001a..fe48853 100644 --- a/src/low_func_llvm.hpp +++ b/src/low_func_llvm.hpp @@ -14,7 +14,7 @@ struct EnableKaratsuba<Ltag> { }; #if CYBOZU_OS_BIT == 32 - #define MCL_GMP_IS_FASTER_THAN_LLVM + #define MCL_GMP_IS_FASTER_THAN_LLVM // QQQ : check later #endif #ifdef MCL_GMP_IS_FASTER_THAN_LLVM @@ -71,6 +71,9 @@ MCL_DEF_LLVM_FUNC(15) MCL_DEF_LLVM_FUNC(16) MCL_DEF_LLVM_FUNC(17) #endif +#if CYBOZU_OS_BIT == 64 && MCL_MAX_BIT_SIZE == 1024 +MCL_DEF_LLVM_FUNC(16) +#endif } } // mcl::fp diff --git a/src/proto.hpp b/src/proto.hpp index 0085f23..c11c8ec 100644 --- a/src/proto.hpp +++ b/src/proto.hpp @@ -58,6 +58,9 @@ MCL_FP_DEF_FUNC(15) MCL_FP_DEF_FUNC(16) MCL_FP_DEF_FUNC(17) #endif +#if CYBOZU_OS_BIT == 64 && MCL_MAX_BIT_SIZE == 1024 +MCL_FP_DEF_FUNC(16) +#endif MCL_FP_DEF_FUNC_SPECIAL(L) MCL_FP_DEF_FUNC_SPECIAL(Lbmi2) |