Lines Matching +full:high +full:- +full:z

29 br_i31_muladd_small(uint32_t *x, uint32_t z, const uint32_t *m)  in br_i31_muladd_small()  argument
50 lo = (x[1] << 31) | z; in br_i31_muladd_small()
58 * Principle: we estimate the quotient (x*2^31+z)/m by in br_i31_muladd_small()
59 * doing a 64/32 division with the high words. in br_i31_muladd_small()
73 * b0, we ensured that b0 is "full" (high bit set), and a is in br_i31_muladd_small()
81 * u-2 <= q <= u in br_i31_muladd_small()
86 memmove(x + 2, x + 1, (mlen - 1) * sizeof *x); in br_i31_muladd_small()
87 x[1] = z; in br_i31_muladd_small()
91 a0 = ((x[mlen] << (31 - mblr)) | (x[mlen - 1] >> mblr)) in br_i31_muladd_small()
93 memmove(x + 2, x + 1, (mlen - 1) * sizeof *x); in br_i31_muladd_small()
94 x[1] = z; in br_i31_muladd_small()
95 a1 = ((x[mlen] << (31 - mblr)) | (x[mlen - 1] >> mblr)) in br_i31_muladd_small()
97 b0 = ((m[mlen] << (31 - mblr)) | (m[mlen - 1] >> mblr)) in br_i31_muladd_small()
104 * -- If a0 == b0 then g == 0; we want q = 0x7FFFFFFF. in br_i31_muladd_small()
105 * -- Otherwise: in br_i31_muladd_small()
106 * -- if g == 0 then we set q = 0; in br_i31_muladd_small()
107 * -- otherwise, we set q = g - 1. in br_i31_muladd_small()
109 * quotient is q-1, q or q+1. in br_i31_muladd_small()
111 * Take care that a0, a1 and b0 are 31-bit words, not 32-bit. We in br_i31_muladd_small()
115 q = MUX(EQ(a0, b0), 0x7FFFFFFF, MUX(EQ(g, 0), 0, g - 1)); in br_i31_muladd_small()
118 * We subtract q*m from x (with the extra high word of value 'hi'). in br_i31_muladd_small()
137 nxw = xw - zw; in br_i31_muladd_small()