Lines Matching +full:high +full:- +full:z
29 br_i32_muladd_small(uint32_t *x, uint32_t z, const uint32_t *m) in br_i32_muladd_small() argument
46 x[1] = br_rem(x[1], z, m[1]); in br_i32_muladd_small()
52 * Principle: we estimate the quotient (x*2^32+z)/m by in br_i32_muladd_small()
53 * doing a 64/32 division with the high words. in br_i32_muladd_small()
67 * b0, we ensured that b0 is "full" (high bit set), and a is in br_i32_muladd_small()
75 * u-2 <= q <= u in br_i32_muladd_small()
77 a0 = br_i32_word(x, m_bitlen - 32); in br_i32_muladd_small()
79 memmove(x + 2, x + 1, (mlen - 1) * sizeof *x); in br_i32_muladd_small()
80 x[1] = z; in br_i32_muladd_small()
81 a1 = br_i32_word(x, m_bitlen - 32); in br_i32_muladd_small()
82 b0 = br_i32_word(m, m_bitlen - 32); in br_i32_muladd_small()
87 * -- If a0 == b0 then g == 0; we want q = 0xFFFFFFFF. in br_i32_muladd_small()
88 * -- Otherwise: in br_i32_muladd_small()
89 * -- if g == 0 then we set q = 0; in br_i32_muladd_small()
90 * -- otherwise, we set q = g - 1. in br_i32_muladd_small()
92 * quotient is q-1, q or q+1. in br_i32_muladd_small()
95 q = MUX(EQ(a0, b0), 0xFFFFFFFF, MUX(EQ(g, 0), 0, g - 1)); in br_i32_muladd_small()
98 * We subtract q*m from x (with the extra high word of value 'hi'). in br_i32_muladd_small()
117 nxw = xw - zw; in br_i32_muladd_small()