mulPre for bls12

dev
MITSUNARI Shigeo 6 years ago
parent 12c8c38fb1
commit 931b6952fb
  1. 32
      src/fp_generator.hpp

@ -320,7 +320,6 @@ private:
op.fpDbl_subA_ = getCurr<void3u>(); op.fpDbl_subA_ = getCurr<void3u>();
gen_fpDbl_sub(); gen_fpDbl_sub();
} }
if (op.N > 4) return;
if (op.isFullBit) { if (op.isFullBit) {
op.fpDbl_addPre = 0; op.fpDbl_addPre = 0;
op.fpDbl_subPre = 0; op.fpDbl_subPre = 0;
@ -332,20 +331,6 @@ private:
op.fpDbl_subPreA_ = getCurr<void3u>(); op.fpDbl_subPreA_ = getCurr<void3u>();
gen_addSubPre(false, pn_ * 2); gen_addSubPre(false, pn_ * 2);
} }
if (op.N == 2 || op.N == 3 || op.N == 4) {
align(16);
op.fpDbl_modA_ = getCurr<void2u>();
if (op.N == 4) {
StackFrame sf(this, 3, 10 | UseRDX, 0, false);
call(fpDbl_modL);
sf.close();
L(fpDbl_modL);
gen_fpDbl_mod4(gp0, gp1, sf.t, gp2);
ret();
} else {
gen_fpDbl_mod(op);
}
}
if ((useMulx_ && op.N == 2) || op.N == 3 || op.N == 4 || (useAdx_ && op.N == 6)) { if ((useMulx_ && op.N == 2) || op.N == 3 || op.N == 4 || (useAdx_ && op.N == 6)) {
align(16); align(16);
op.fpDbl_mulPreA_ = getCurr<void3u>(); op.fpDbl_mulPreA_ = getCurr<void3u>();
@ -368,6 +353,21 @@ private:
gen_fpDbl_mulPre(); gen_fpDbl_mulPre();
} }
} }
if (op.N > 4) return;
if (op.N == 2 || op.N == 3 || op.N == 4) {
align(16);
op.fpDbl_modA_ = getCurr<void2u>();
if (op.N == 4) {
StackFrame sf(this, 3, 10 | UseRDX, 0, false);
call(fpDbl_modL);
sf.close();
L(fpDbl_modL);
gen_fpDbl_mod4(gp0, gp1, sf.t, gp2);
ret();
} else {
gen_fpDbl_mod(op);
}
}
if ((useMulx_ && op.N == 2) || op.N == 3 || op.N == 4) { if ((useMulx_ && op.N == 2) || op.N == 3 || op.N == 4) {
align(16); align(16);
op.fpDbl_sqrPreA_ = getCurr<void2u>(); op.fpDbl_sqrPreA_ = getCurr<void2u>();
@ -1888,7 +1888,7 @@ private:
} }
// 64clk -> 56clk // 64clk -> 56clk
if (pn_ == 6 && useAdx_) { if (pn_ == 6 && useAdx_) {
StackFrame sf(this, 3, 7 | UseRDX); StackFrame sf(this, 3, 10 | UseRDX); // 7 is ok, but to use same api
mulPre6(sf.p[0], sf.p[1], sf.p[2], sf.t); mulPre6(sf.p[0], sf.p[1], sf.p[2], sf.t);
} }
} }

Loading…
Cancel
Save