aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2016-09-26 13:30:07 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2016-09-26 13:30:07 +0800
commita441a522facde9804f44550848c32bd22b645d9c (patch)
tree56509d10ad709b97246e83c64c930fbad0cfbed1
parent20c35f12963983a389fd381a7414d884bdc8ca59 (diff)
downloadtangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.tar.gz
tangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.tar.zst
tangerine-mcl-a441a522facde9804f44550848c32bd22b645d9c.zip
op.sub requires p
-rw-r--r--include/mcl/fp.hpp14
-rw-r--r--include/mcl/op.hpp2
-rw-r--r--src/fp.cpp4
-rw-r--r--src/fp_generator.hpp2
-rw-r--r--test/fp_generator_test.cpp2
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]
diff --git a/src/fp.cpp b/src/fp.cpp
index 7c923db..9025827 100644
--- a/src/fp.cpp
+++ b/src/fp.cpp
@@ -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);
}
}