18b5d628e5
Changes between 6.0.0 and 6.0.0a: Not documented. Changes between GMP version 5.1.* and 6.0.0 BUGS FIXED * The function mpz_invert now considers any number invertible in Z/1Z. * The mpn multiply code now handles operands of more than 2^31 limbs correctly. (Note however that the mpz code is limited to 2^32 bits on 32-bit hosts and 2^37 bits on 64-bit hosts.) * Contains all fixes from release 5.1.3. SPEEDUPS * Plain division of large operands is faster and more monotonous in operand size. * Major speedup for ARM, in particular ARM Cortex-A15, thanks to improved assembly. * Major speedup for SPARC T4/T5 and speedup also for T3, thanks to a lot of new assembly. * Speedup for Intel Sandy Bridge, Ivy Bridge, Haswell, thanks to rewritten and vastly expanded assembly support. Speedup also for the older Core 2 and Nehalem. * Faster mixed arithmetic between mpq_class and double. * With g++, optimise more operations when one argument is a simple constant. FEATURES * Support for new Intel and AMD CPUs. * Support for ARM64 alias Aarch64 alias ARMv8. * New public functions mpn_sec_mul and mpn_sec_sqr, implementing side-channel silent multiplication and squaring. * New public functions mpn_sec_div_qr and mpn_sec_div_r, implementing side-channel silent division. * New public functions mpn_cnd_add_n and mpn_cnd_sub_n. Side-channel silent conditional addition and subtraction. * New public function mpn_sec_powm, implementing side-channel silent modexp. * New public function mpn_sec_invert, implementing side-channel silent modular inversion. * Better support for applications which use the mpz_t type, but nevertheless need to call some of the lower-level mpn functions. See the documentation for mpz_limbs_read and related functions. MISC [FreeBSD bashing removed]
16 lines
559 B
Text
16 lines
559 B
Text
$NetBSD: patch-aa,v 1.13 2014/04/17 13:08:24 wiz Exp $
|
|
|
|
--- longlong.h.orig 2014-03-25 14:37:55.000000000 +0000
|
|
+++ longlong.h
|
|
@@ -1039,8 +1039,10 @@ extern UWtype __MPN(udiv_qrnnd) (UWtype
|
|
count is only an int. */
|
|
#define count_trailing_zeros(count, x) \
|
|
do { \
|
|
+ UDItype __cbtmp; \
|
|
ASSERT ((x) != 0); \
|
|
- __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
|
|
+ __asm__ ("bsfq %1,%q0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
|
|
+ (count) = __cbtmp; \
|
|
} while (0)
|
|
#endif /* __amd64__ */
|
|
|