]> asedeno.scripts.mit.edu Git - PuTTY.git/commit
Use 64-bit BignumInt wherever __uint128_t is available.
authorSimon Tatham <anakin@pobox.com>
Mon, 8 Jun 2015 18:24:58 +0000 (19:24 +0100)
committerSimon Tatham <anakin@pobox.com>
Mon, 8 Jun 2015 18:24:58 +0000 (19:24 +0100)
commitf8b27925eee6a37df107a7cd2e718e997a52516e
tree6e2ea4426c5cbfa5f247dbedfc4bead74443ad25
parente28b35b0a39de28fa2f71aa78071d1ad62deaceb
Use 64-bit BignumInt wherever __uint128_t is available.

gcc and clang both provide a type called __uint128_t when compiling
for 64-bit targets, code-generated more or less similarly to the way
64-bit long longs are handled on 32-bit targets (spanning two
registers, using ADD/ADC, that sort of thing). Where this is available
(and they also provide a handy macro to make it easy to detect), we
should obviously use it, so that we can handle bignums a larger chunk
at a time and make use of the full width of the hardware's multiplier.
Preliminary benchmarking using 'testbn' suggests a factor of about 2.5
improvement.

I've added the new possibility to the ifdefs in sshbn.h, and also
re-run contrib/make1305.py to generate a set of variants of the
poly1305 arithmetic for the new size of BignumInt.
sshbn.h
sshccp.c