diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-27 10:32:35 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-27 10:32:35 +0800 |
commit | 16fb544eb462ae6b94150dc93e16f8f3ca6d7169 (patch) | |
tree | 9e308145d847177b1c794782e61c5333311900bb | |
parent | a441a522facde9804f44550848c32bd22b645d9c (diff) | |
download | dexon-mcl-16fb544eb462ae6b94150dc93e16f8f3ca6d7169.tar.gz dexon-mcl-16fb544eb462ae6b94150dc93e16f8f3ca6d7169.tar.zst dexon-mcl-16fb544eb462ae6b94150dc93e16f8f3ca6d7169.zip |
fp_neg requires p
-rw-r--r-- | include/mcl/fp.hpp | 8 | ||||
-rw-r--r-- | include/mcl/op.hpp | 2 | ||||
-rw-r--r-- | src/fp.cpp | 4 | ||||
-rw-r--r-- | src/fp_generator.hpp | 2 | ||||
-rw-r--r-- | test/fp_generator_test.cpp | 2 |
5 files changed, 7 insertions, 11 deletions
diff --git a/include/mcl/fp.hpp b/include/mcl/fp.hpp index fa8a5af..3d818bc 100644 --- a/include/mcl/fp.hpp +++ b/include/mcl/fp.hpp @@ -129,7 +129,7 @@ public: assert(sizeof(mp_limb_t) == sizeof(Unit)); // set default wrapper function op_.clear(); - op_.fp_neg = fp_negW; + op_.fp_neg = 0; op_.fp_sqr = fp_sqrW; op_.fp_add = 0; op_.fp_sub = 0; @@ -372,7 +372,7 @@ public: static inline void mul(FpT& z, const FpT& x, const FpT& y) { op_.fp_mul(z.v_, x.v_, y.v_); } static inline void mul_Unit(FpT& z, const FpT& x, const Unit y) { op_.fp_mul_Unit(z.v_, x.v_, y); } static inline void inv(FpT& y, const FpT& x) { op_.fp_invOp(y.v_, x.v_, op_); } - static inline void neg(FpT& y, const FpT& x) { op_.fp_neg(y.v_, x.v_); } + static inline void neg(FpT& y, const FpT& x) { op_.fp_neg(y.v_, x.v_, op_.p); } static inline void sqr(FpT& y, const FpT& x) { op_.fp_sqr(y.v_, x.v_); } static inline void divBy2(FpT& y, const FpT& x) { @@ -521,10 +521,6 @@ private: op_.fpDbl_sqrPre(xx, x); op_.fpDbl_mod(y, xx); } - static inline void fp_negW(Unit *y, const Unit *x) - { - op_.fp_negP(y, x, op_.p); - } // wrapper function for mcl_fp_mont by LLVM static inline void fp_montW(Unit *z, const Unit *x, const Unit *y) { diff --git a/include/mcl/op.hpp b/include/mcl/op.hpp index 69dd803..a7721d9 100644 --- a/include/mcl/op.hpp +++ b/include/mcl/op.hpp @@ -85,7 +85,7 @@ struct Op { void1u fp_clear; void2u fp_copy; // not require p(function having p) - void2u fp_neg; + void3u fp_neg; void2u fp_sqr; void4u fp_add; void4u fp_sub; @@ -326,7 +326,7 @@ struct OpeFunc { fp_isZero = OpeFunc<n>::fp_isZeroC; \ fp_clear = OpeFunc<n>::fp_clearC; \ fp_copy = OpeFunc<n>::fp_copyC; \ - fp_negP = OpeFunc<n>::fp_negC; \ + fp_neg = OpeFunc<n>::fp_negC; \ if (isMont) { \ fp_invOp = OpeFunc<n>::fp_invMontOpC; \ } else { \ @@ -588,7 +588,7 @@ int64_t getInt64(bool *pb, fp::Block& b, const fp::Op& op) { bool isNegative = false; if (fp::isGreaterArray(b.p, op.half, op.N)) { - op.fp_neg(b.v_, b.p); + op.fp_neg(b.v_, b.p, op.p); b.p = b.v_; isNegative = true; } diff --git a/src/fp_generator.hpp b/src/fp_generator.hpp index 7e3b857..90aba80 100644 --- a/src/fp_generator.hpp +++ b/src/fp_generator.hpp @@ -215,7 +215,7 @@ struct FpGenerator : Xbyak::CodeGenerator { gen_shr1(); align(16); - op.fp_neg = getCurr<void2u>(); + op.fp_neg = getCurr<void3u>(); gen_neg(); align(16); diff --git a/test/fp_generator_test.cpp b/test/fp_generator_test.cpp index 36dc5ae..ad8e7b4 100644 --- a/test/fp_generator_test.cpp +++ b/test/fp_generator_test.cpp @@ -133,7 +133,7 @@ void testNeg(const mcl::fp::Op& op) x.setStr(tbl[i]); mx.set(x); x = -x; - op.fp_neg(mx.v, mx.v); + op.fp_neg(mx.v, mx.v, op.p); CYBOZU_TEST_EQUAL(mx, x); } } |