Re: [PATCH v2] powerpc/math-emu: Update macros from gmp-6.1.2
From: Joel Stanley <joel@jms.id.au>
Date: 2018-11-19 23:18:13
On Tue, 20 Nov 2018 at 05:24, Nick Desaulniers [off-list ref] wrote:
quoted
The only functional change I noticed was this in udiv_qrnnd. __r1 = (n1) % __d1; __q1 = (n1) / __d1; Becomes this: __q1 = (n1) / __d1; __r1 = (n1) - __q1 * __d1; This is equivalent as it instead of calculating the remainder using modulo, it uses the result of integer division to subtract the count of 'whole' d1 from r1.I don't understand this; why was this functional change made?
I couldn't see why. It pre-dates GMP's mecurial history that .
\quoted
- (q) = (UWtype) __q1 * __ll_B | __q0; \ + (q) = __q1 * __ll_B | __q0; \ (r) = __r0; \ } while (0)This appears to now differ from the upstream source: https://github.com/gcc-mirror/gcc/blob/f7289f563a5e447ac21a5901ed75aad0dbd37732/include/longlong.h#L1679
AIUI the upstream source is GMP: https://gmplib.org/repo/gmp/file/tip/longlong.h
If we're going to borrow implementations from GCC, let's borrow the same implementation. Otherwise it's hard to have confidence in this part of the patch.
I agree we should use the upstream source. Segher, which tree contains the One True Upstream for longlong.h? Cheers, Joel