Lines Matching +full:32 +full:m
29 br_i32_muladd_small(uint32_t *x, uint32_t z, const uint32_t *m) in br_i32_muladd_small() argument
41 m_bitlen = m[0]; in br_i32_muladd_small()
45 if (m_bitlen <= 32) { in br_i32_muladd_small()
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()
56 * w = 2^32 in br_i32_muladd_small()
77 a0 = br_i32_word(x, m_bitlen - 32); 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()
98 * We subtract q*m from x (with the extra high word of value 'hi'). in br_i32_muladd_small()
100 * add or subtract m afterwards. in br_i32_muladd_small()
112 mw = m[u]; in br_i32_muladd_small()
114 cc = (uint32_t)(zl >> 32); in br_i32_muladd_small()
127 * these cases we must subtract m once. in br_i32_muladd_small()
130 * cc > hi (thus a negative result). Correction is adding m once. in br_i32_muladd_small()
132 chf = (uint32_t)(cc >> 32); in br_i32_muladd_small()
136 br_i32_add(x, m, over); in br_i32_muladd_small()
137 br_i32_sub(x, m, under); in br_i32_muladd_small()