diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-26 13:30:07 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-26 13:30:07 +0800 |
commit | a441a522facde9804f44550848c32bd22b645d9c (patch) | |
tree | 56509d10ad709b97246e83c64c930fbad0cfbed1 | |
parent | 20c35f12963983a389fd381a7414d884bdc8ca59 (diff) | |
download | tangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.tar.gz tangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.tar.zst tangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.zip |
op.sub requires p
-rw-r--r-- | include/mcl/fp.hpp | 14 | ||||
-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, 17 deletions
diff --git a/include/mcl/fp.hpp b/include/mcl/fp.hpp index f7ba637..fa8a5af 100644 --- a/include/mcl/fp.hpp +++ b/include/mcl/fp.hpp @@ -132,7 +132,7 @@ public: op_.fp_neg = fp_negW; op_.fp_sqr = fp_sqrW; op_.fp_add = 0; - op_.fp_sub = fp_subW; + op_.fp_sub = 0; op_.fpDbl_add = fpDbl_addW; op_.fpDbl_sub = fpDbl_subW; op_.fp_mul = fp_mulW; @@ -366,7 +366,7 @@ public: setArray(gmp::getUnit(x), gmp::getUnitSize(x)); } static inline void add(FpT& z, const FpT& x, const FpT& y) { op_.fp_add(z.v_, x.v_, y.v_, op_.p); } - static inline void sub(FpT& z, const FpT& x, const FpT& y) { op_.fp_sub(z.v_, x.v_, y.v_); } + static inline void sub(FpT& z, const FpT& x, const FpT& y) { op_.fp_sub(z.v_, x.v_, y.v_, op_.p); } static inline void addNC(FpT& z, const FpT& x, const FpT& y) { op_.fp_addNC(z.v_, x.v_, y.v_); } static inline void subNC(FpT& z, const FpT& x, const FpT& y) { op_.fp_subNC(z.v_, x.v_, y.v_); } static inline void mul(FpT& z, const FpT& x, const FpT& y) { op_.fp_mul(z.v_, x.v_, y.v_); } @@ -480,16 +480,6 @@ private: case 2: fp_addW(z.v_, x.v_, y.v_) op_.fp_addP(z, x, y, p) written by GMP/LLVM with generic p */ -#if 0 - static inline void fp_addW(Unit *z, const Unit *x, const Unit *y) - { - op_.fp_addP(z, x, y, op_.p); - } -#endif - static inline void fp_subW(Unit *z, const Unit *x, const Unit *y) - { - op_.fp_subP(z, x, y, op_.p); - } static inline void fpDbl_addW(Unit *z, const Unit *x, const Unit *y) { op_.fpDbl_addP(z, x, y, op_.p); diff --git a/include/mcl/op.hpp b/include/mcl/op.hpp index f613469..69dd803 100644 --- a/include/mcl/op.hpp +++ b/include/mcl/op.hpp @@ -88,7 +88,7 @@ struct Op { void2u fp_neg; void2u fp_sqr; void4u fp_add; - void3u fp_sub; + void4u fp_sub; void3u fp_mul; void2uI fp_mul_UnitPre; // z[N + 1] = x[N] * y void3u fpN1_modP; // y[N] = x[N + 1] % p[N] @@ -296,7 +296,7 @@ struct OpeFunc { #define SET_OP_LLVM(n) \ if (mode == FP_LLVM || mode == FP_LLVM_MONT) { \ fp_add = mcl_fp_add ## n; \ - fp_subP = mcl_fp_sub ## n; \ + fp_sub = mcl_fp_sub ## n; \ if (!isFullBit) { \ fp_addNC = mcl_fp_addNC ## n; \ fp_subNC = mcl_fp_subNC ## n; \ @@ -333,7 +333,7 @@ struct OpeFunc { fp_invOp = OpeFunc<n>::fp_invOpC; \ } \ fp_add = OpeFunc<n>::fp_addPC; \ - fp_subP = OpeFunc<n>::fp_subPC; \ + fp_sub = OpeFunc<n>::fp_subPC; \ fpDbl_addP = OpeFunc<n>::fpDbl_addPC; \ fpDbl_subP = OpeFunc<n>::fpDbl_subPC; \ if (isFullBit) { \ diff --git a/src/fp_generator.hpp b/src/fp_generator.hpp index ab63420..7e3b857 100644 --- a/src/fp_generator.hpp +++ b/src/fp_generator.hpp @@ -196,7 +196,7 @@ struct FpGenerator : Xbyak::CodeGenerator { op.fp_add = getCurr<void4u>(); gen_fp_add(); align(16); - op.fp_sub = getCurr<void3u>(); + op.fp_sub = getCurr<void4u>(); gen_fp_sub(); if (op.isFullBit) { diff --git a/test/fp_generator_test.cpp b/test/fp_generator_test.cpp index 3fdb3a7..36dc5ae 100644 --- a/test/fp_generator_test.cpp +++ b/test/fp_generator_test.cpp @@ -115,7 +115,7 @@ void testAddSub(const mcl::fp::Op& op) for (int i = 0; i < 30; i++) { CYBOZU_TEST_EQUAL(my, y); y -= x; - op.fp_sub(my.v, my.v, mx.v); + op.fp_sub(my.v, my.v, mx.v, p); } } |