Index of /gcc-12.2.0/gmp-6.2.1/mpn/s390_32/

NameLast ModifiedSize
UpParent Directory
Directoryesame2025-02-13 12:05-
Fileaddmul_1.asm2020-11-14 18:45 3k
Filecopyd.asm2020-11-14 18:45 3k
Filecopyi.asm2020-11-14 18:45 2k
[TXT]gmp-mparam.h2020-11-14 18:45 6k
Filelogops_n.asm2020-11-14 18:45 6k
Filelshift.asm2020-11-14 18:45 3k
Filelshiftc.asm2020-11-14 18:45 3k
Filemul_1.asm2020-11-14 18:45 3k
Filershift.asm2020-11-14 18:45 3k
Filesubmul_1.asm2020-11-14 18:45 3k
All current (2001) S/390 and z/Architecture machines are single-issue, but some newer machines have a deep pipeline. Software-pipelining is therefore beneficial. * mpn_add_n, mpn_sub_n: Use code along the lines below. Two-way unrolling would be adequate. mp_limb_t mpn_add_n (mp_ptr rp, mp_srcptr up, mp_srcptr vp, mp_size_t n) { mp_limb_t a, b, r, cy; mp_size_t i; mp_limb_t mm = -1; cy = 0; up += n; vp += n; rp += n; i = -n; do { a = up[i]; b = vp[i]; r = a + b + cy; rp[i] = r; cy = (((a & b) | ((a | b) & (r ^ mm)))) >> 31; i++; } while (i < 0); return cy; } * mpn_lshift, mpn_rshift: Use SLDL/SRDL, and two-way unrolling. * mpn_mul_1, mpn_addmul_1, mpn_submul_1: For machines with just signed multiply (MR), use two loops, similar to the corresponding VAX or POWER functions. Handle carry like for mpn_add_n.
Proudly Served by LiteSpeed Web Server at mansastainlessfab.com Port 443