comparison tomsfastmath/changes.txt @ 643:a362b62d38b2 dropbear-tfm

Add tomsfastmath from git rev bfa4582842bc3bab42e4be4aed5703437049502a with renamed
author Matt Johnston <>
date Wed, 23 Nov 2011 18:10:20 +0700
equal deleted inserted replaced
642:33fd2f3499d2 643:a362b62d38b2
1 March 14th, 2007
2 0.12 -- Christophe Devine contributed MIPS asm w00t
3 ++ quick release to get the MIPS code out there
5 March 10th, 2007
6 0.11 -- re-org'ed the source tree, it's cooler now
7 -- cleaned up mul/sqr so there is only one file per unit, should help building with older compilers and/or on slower boxes
8 -- [CRI] optimized fp_read_unsigned_bin
9 -- fixed -0 ... again ... I now have less hair on my head.
10 -- [CRI] renamed bn_reverse() -> fp_reverse()
12 November 1st, 2006
13 0.10 -- Unrolled Montgomery for 1..16 digits with TFM_SMALL_MONT_SET between 10% and 25% speedup depending on size.
14 -- fixed fp_sqr_comba.c so it builds in ISO C mode [Andreas Lange]
15 -- [email protected] pointed out fp_radix_size() had a few typos that affected correctness. Fixed.
16 -- Added support for ECC performance, e.g. define "-DTFM_ALREADY_SET -DTFM_ECC192" and it will disable
17 all of the unrolled code EXCEPT what is required for ECC P-192. It autodetects 32/64-bit platforms too. It's super neato.
18 Support for 192, 224, 256, 384 and 521 bit curves through the defines [see tfm.h]
19 -- AVR32 support added, define TFM_AVR32 to enable
21 April 4th, 2006
22 0.09 -- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++.
23 -- Added support for k=1 in exptmod for RSA exponents. Makes it more competitive with other libraries
24 -- added cutoffs to the comba32 sqr/mul code to better handle 640, 786 and 896 bit operands (e.g. for RSA-1280, RSA-1536 and RSA-1792), really no effect
25 for 64-bit boxes as these represent 1280, 1536 and 1792 bit operands (not likely to be invoked).
26 -- Removed karatsuba from the mul/sqr since they're not useful and slow.
27 -- added 20, 24 and 28 digit multipliers for oddsized RSA support. You can easily disable them by uncommenting the TFM_SQRXX and TFM_MULXX lines in
28 tfm.h to save space. Now GMP and TFM are roughly the same speed on the Pentium-M for RSA with LTC.
29 -- unrolled SSE2 code and optimize for platforms with load/store pipes (e.g. can store and load in a cycle). Got 4% or so boost on my Dothan laptop (marginal improvement on a P4 Prescott)
31 Jan 26th, 2006
32 0.08 -- Fixed a bug in the generic mult/sqr where we overflowed by one digit
34 November 18th, 2005
35 0.07 -- Fixes to fp_mul and fp_sqr to clean up the handling of the defines, fix to tfm.h to also clear up the prototypes.
36 -- Updates to build and run on a IBM PPC 405 [using GCC 3.4.4]
37 -- Made the "make" command renamable in the build system
39 October 31st, 2005
40 0.06 -- fixed fp_mul() and fp_sqr() to trim digits when overflows would occur. Produces numerically inprecise results
41 (e.g. the lower FP_SIZE digits) but shouldn't segfault at least ;-)
42 -- Updated the combas so you can turn on and off specific unrolled loops at build time
43 -- Michael Heyman reported a bug in s_fp_sub() that was pretty substantial and a bug in fp_montgomery_calc_normalization(). Fixed.
45 August 1st, 2005
46 0.05 -- Quick fix to the fp_invmod.c code to let it handle even moduli [required for LTC]
47 -- Added makefile.shared to make shared objects [required for LTC]
48 -- Improved makefiles to make them way more configurable
49 -- Added timing resistant fp_exptmod() enabled with TFM_TIMING_RESISTANT
51 July 23rd, 2005
52 0.04 -- Fixed bugs in the SSE2 squaring code
53 -- Rewrote the multipliers to be optimized for small inputs
54 -- Nelson Bolyard of the NSS crew submitted [among other things] new faster Montgomery reduction
55 code. It brings the performance for small numbers on the AMD64 and all numbers on the P4
56 to a new level. Thanks!
57 -- Added missing ARM support for fp_montgomery_reduce.c that the NSS folk left off, Officially
58 the ARM code is for v4 and above WITH the "M" multiplier support (e.g. umlal instruction)
59 -- Added PPC32 support, define TFM_PPC32 to enable it, I used the "PowerPC 6xx" instruction
60 databook for reference. Does not require altivec. Should be fairly portable to the other
61 32-bit PPCs provided they have mullw and mulhwu instructions.
62 [Note: porting the macros to PPC64 should be trivial, anyone with a shell to lend... email me!]
63 -- Rewrote the config a bit in tfm.h so you can better choose which set of "oh my god that's huge" code to
64 enable for your task. "generic" functions are ALWAYS included which are smaller but will cover the
65 gaps in the coverage for ya.
66 -- The PPC32 code has been verified to function on a Darwin box running GCC 2.95.2
67 [Thanks to the folk at PeerSec for lending me a shell to use]
68 -- Fixed a bug in fp_exptmod() where if the exponent was negative AND the destination the output
69 would have the sign set to FP_NEG.
71 March 1st, 2005
72 0.03 -- Optimized squaring
73 -- Applied new license header to all files (still PD)
75 September 18th, 2004
76 0.02 -- Added TFM_LARGE to turn on/off 16x combas to save even more space.
77 This also helps prevent killing the cache on smaller cpus.
78 -- Cast memset to void in fp_init() to catch people who misuse the function (e.g. expect return)
79 Thanks to Johan Lindh
80 -- Cleaned up x86-64 support [faster montgomery reductions]
81 -- Autodetects x86-32 and x86-64 and enables it's asm now
82 -- Made test demo build cleaner in multilib platforms [e.g. mixed 32/64 bits]
83 -- Fix to fp_mod to ensure that remainder is of the same sign as the modulus.
84 -- Fixed bug in fp_montgomery_calc_normalization for single digit moduli
85 -- cleaned up ISO C macros in comba/mont to avoid branches [works best with GCC 3.4.x branch]
86 -- Added more testing to tfm.h to help detect misconfigured builds
87 -- Added TFM_NO_ASM which forces ASM off [even if it was autodetected].
88 -- Added fp_radix_size() to API
89 -- Cleaned up demo/test.c to build with far fewer warnings (mostly %d => %lu fixes)
90 -- fp_exptmod() now supports negative exponent and base>modulus cases
91 -- Added fp_ident() which gives a string showing how TFM was configured. Useful for debuging...
92 -- fix script so it includes the whole source tree now
94 August 25th, 2004
95 0.01 -- Initial Release