README
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:1k
源码类别:

数学计算

开发平台:

Unix_Linux

  1. All current (2001) S/390 and z/Architecture machines are single-issue,
  2. but some newer machines have a deep pipeline.  Software-pipelining is
  3. therefore beneficial.
  4. * mpn_add_n, mpn_sub_n: Use code along the lines below.  Two-way unrolling
  5.   would be adequate.
  6.   mp_limb_t
  7.   mpn_add_n (mp_ptr rp, mp_srcptr up, mp_srcptr vp, mp_size_t n)
  8.   {
  9.     mp_limb_t a, b, r, cy;
  10.     mp_size_t i;
  11.     mp_limb_t mm = -1;
  12.     cy = 0;
  13.     up += n;
  14.     vp += n;
  15.     rp += n;
  16.     i = -n;
  17.     do
  18.       {
  19. a = up[i];
  20. b = vp[i];
  21. r = a + b + cy;
  22. rp[i] = r;
  23. cy = (((a & b) | ((a | b) & (r ^ mm)))) >> 31;
  24. i++;
  25.       }
  26.     while (i < 0);
  27.     return cy;
  28.   }
  29. * mpn_lshift, mpn_rshift: Use SLDL/SRDL, and two-way unrolling.
  30. * mpn_mul_1, mpn_addmul_1, mpn_submul_1: For machines with just signed
  31.   multiply (MR), use two loops, similar to the corresponding VAX or
  32.   POWER functions.  Handle carry like for mpn_add_n.