Files
RedBear-OS/recipes/libs/libgmp/source/mpn/s390_32/README
T
vasilito ff4ff35918 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00

38 lines
899 B
Plaintext

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.