Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/fpu/fpu_mul.c
Show First 20 Lines • Show All 166 Lines • ▼ Show 20 Lines | |||||
#define ADD /* A += X */ \ | #define ADD /* A += X */ \ | ||||
FPU_ADDS(a3, a3, x3); \ | FPU_ADDS(a3, a3, x3); \ | ||||
FPU_ADDCS(a2, a2, x2); \ | FPU_ADDCS(a2, a2, x2); \ | ||||
FPU_ADDCS(a1, a1, x1); \ | FPU_ADDCS(a1, a1, x1); \ | ||||
FPU_ADDC(a0, a0, x0) | FPU_ADDC(a0, a0, x0) | ||||
#define SHR1 /* A >>= 1, with sticky */ \ | #define SHR1 /* A >>= 1, with sticky */ \ | ||||
sticky |= a3 & 1, a3 = (a3 >> 1) | (a2 << 31), \ | sticky |= a3 & 1, a3 = (a3 >> 1) | (a2 << 31), \ | ||||
a2 = (a2 >> 1) | (a1 << 31), a1 = (a1 >> 1) | (a0 << 31), a0 >>= 1 | a2 = (a2 >> 1) | (a1U << 31), a1 = (a1 >> 1) | (a0 << 31), a0 >>= 1 | ||||
#define SHR32 /* A >>= 32, with sticky */ \ | #define SHR32 /* A >>= 32, with sticky */ \ | ||||
sticky |= a3, a3 = a2, a2 = a1, a1 = a0, a0 = 0 | sticky |= a3, a3 = a2, a2 = a1, a1 = a0, a0 = 0 | ||||
#define STEP /* each 1-bit step of the multiplication */ \ | #define STEP /* each 1-bit step of the multiplication */ \ | ||||
SHR1; if (bit & m) { ADD; }; bit <<= 1 | SHR1; if (bit & m) { ADD; }; bit <<= 1 | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 58 Lines • Show Last 20 Lines |