21 Commits

Author SHA1 Message Date
Russell O'Connor
2914bccbc0 Simulated int128 type. 2022-11-07 16:37:24 -05:00
Tim Ruffing
9526874d14
Merge bitcoin-core/secp256k1#810: Avoid overly-wide multiplications in 5x52 field mul/sqr
b53e0cd61fce0bcef178f317537c91efc9afd04d Avoid overly-wide multiplications (Peter Dettman)

Pull request description:

  Speeds up bench_ecdh, bench_sign, bench_verify relative to master by 5+% at -O3, haswell.

ACKs for top commit:
  sipa:
    ACK b53e0cd61fce0bcef178f317537c91efc9afd04d
  real-or-random:
    ACK b53e0cd61fce0bcef178f317537c91efc9afd04d I've inspected the diff and run the tests without asm for a CPU day

Tree-SHA512: 4f79c98371a3dc9da013632210c8db979f910b222291999dfaa0c31849a77eb427361e4ab9206cbfee73c30a8933178784d6cb8e747e8dca6b227eb77fbea2a2
2021-10-17 18:44:54 +02:00
Dimitris Apostolou
07aa4c70ff
Fix insecure links 2020-12-18 00:24:22 +02:00
Peter Dettman
b53e0cd61f Avoid overly-wide multiplications 2020-09-10 15:19:15 +07:00
Russell O'Connor
deff5edd42 Correct math typos in field_*.h 2018-07-06 08:40:35 -04:00
Russell O'Connor
4efb3f8dd1 Add check that restrict pointers don't alias with all parameters. 2018-07-06 08:40:34 -04:00
Dan Raviv
abe2d3e84b Fix header guards using reserved identifiers
Identifiers starting with an underscore and followed immediately by a capital letter are reserved by the C++ standard.

The only header guards not fixed are those in the headers auto-generated from java.
2017-08-26 18:44:21 +03:00
paveljanik
e5a904788e [Trivial] Remove double semicolons 2015-12-30 08:42:42 +01:00
Gregory Maxwell
4be8d6fc42 Centralize the definition of uint128_t and use it uniformly.
This needs to be renamed along with the other _t types, because _t
 is reserved.  But that will be done later.
2015-01-25 05:10:40 +00:00
Gregory Maxwell
25b35c7ecb Convert field code to strict C89 (+ long long, +__int128)
This makes the software more portable to embedded systems
 and static analysis tools.

Sadly, it can't result in identical binaries because C99 mixed
 declarations seem to make GCC emit superfluous stack-pointer
 updates. The compiler is also somewhat dependent on the
 declaration order.
2015-01-23 05:48:27 +00:00
Pieter Wuille
b2c9681c6f Make {mul,sqr}_inner use the same argument order as {mul,sqr} 2014-12-04 13:54:36 +01:00
Pieter Wuille
82f9254cc0 Fix typo 2014-12-02 18:35:33 +01:00
Pieter Wuille
35399e08c4 Bugfix: b is restricted, not r 2014-12-02 17:43:42 +01:00
Pieter Wuille
4d4eeea4ac Make secp256k1_fe_mul_inner use the r != property
Suggested by Peter Dettman.
2014-12-01 13:40:36 +01:00
Pieter Wuille
be82e92fc4 Require that r and b are different for field multiplication.
Suggested by Peter Dettman, this prepares for slightly faster muitiplication
which writes results immediately to r before finishing reading b.
2014-12-01 13:40:34 +01:00
Gregory Maxwell
71712b27e5 Switch to C89 comments in prep for making the whole codebase C89 compatible.
This should be whitespace/comment only changes and should produce the same
object code.
2014-11-15 07:33:07 -08:00
Pieter Wuille
a51859871a Add overflow analysis to field_5x52_int128_impl.h 2014-11-13 07:47:40 -08:00
Pieter Wuille
fa0d620668 Add equalities relating input and output variables 2014-11-13 07:00:44 -08:00
Peter Dettman
5dd421bab5 Rewrite mul/sqr for 32bit/64bit
- interleave calculation of the lower and upper partial product ranges, and reduction
- less registers needed, more opportunities for parallel ops
2014-11-13 04:46:17 -08:00
Gregory Maxwell
a4a43d7543 Reorder static to comply with C99 and switch to the inline macro. 2014-11-12 13:07:55 -08:00
Pieter Wuille
11ab562203 Move implementations from impl/*.h to *_impl.h 2014-03-12 18:40:02 +01:00