a little optimization of fp2_mul

dev
MITSUNARI Shigeo 6 years ago
parent 7fc1d5646d
commit a7439e3638
  1. 28
      src/fp_generator.hpp

@ -2857,36 +2857,23 @@ private:
// t = c + d
gen_raw_add(t, gp2, gp2 + FpByte_, rax, 4);
// d1 = (a + b)(c + d)
lea(gp0, ptr [d1]);
lea(gp1, ptr [s]);
lea(gp2, ptr [t]);
call(mulPreL_);
mulPre4(d1, s, t, sf.t);
// d0 = a c
lea(gp0, ptr [d0]);
mov(gp1, ptr [x]);
mov(gp2, ptr [y]);
call(mulPreL_);
mulPre4(d0, gp1, gp2, sf.t);
// d2 = b d
lea(gp0, ptr [d2]);
mov(gp1, ptr [x]);
add(gp1, FpByte_);
mov(gp2, ptr [y]);
add(gp2, FpByte_);
call(mulPreL_);
lea(gp0, ptr [d1]);
mov(gp1, gp0);
lea(gp2, ptr [d0]);
gen_raw_sub(gp0, gp1, gp2, rax, 8);
lea(gp2, ptr [d2]);
gen_raw_sub(gp0, gp1, gp2, rax, 8);
mulPre4(d2, gp1, gp2, sf.t);
lea(gp0, ptr [d0]);
mov(gp1, gp0);
lea(gp2, ptr [d2]);
gen_raw_sub(d1, d1, d0, rax, 8);
gen_raw_sub(d1, d1, d2, rax, 8);
gen_raw_sub(gp0, gp1, gp2, rax, 4);
gen_raw_fp_sub(gp0 + 8 * 4, gp1 + 8 * 4, gp2 + 8 * 4, Pack(gt0, gt1, gt2, gt3, gt4, gt5, gt6, gt7), true);
gen_raw_sub(d0, d0, d2, rax, 4);
gen_raw_fp_sub((RegExp)d0 + 8 * 4, (RegExp)d0 + 8 * 4, (RegExp)d2 + 8 * 4, Pack(gt0, gt1, gt2, gt3, gt4, gt5, gt6, gt7), true);
mov(gp0, ptr [z]);
lea(gp1, ptr[d0]);
@ -2896,7 +2883,6 @@ private:
add(gp0, FpByte_);
lea(gp1, ptr[d1]);
call(fpDbl_modL_);
}
};

Loading…
Cancel
Save