mpi: avoid MPI copy at gcry_mpi_sub
* mpi/mpi-add.c (_gcry_mpi_add): Rename function... (_gcry_mpi_add_inv_sign): ... to this and add parameter for inverting sign of second operand. (_gcry_mpi_add): New. (_gcry_mpi_sub): Remove mpi_copy and instead use new '_gcry_mpi_add_inv_sign' function with inverted sign for second operand.
Benchmark on AMD Ryzen 9 7900X:
Before:
| nanosecs/byte mebibytes/sec cycles/byte auto Mhz
add | 0.052 ns/B 18301 MiB/s 0.287 c/B 5500
sub | 0.098 ns/B 9768 MiB/s 0.537 c/B 5500
After:
| nanosecs/byte mebibytes/sec cycles/byte auto Mhz
add | 0.030 ns/B 31771 MiB/s 0.165 c/B 5500
sub | 0.031 ns/B 31187 MiB/s 0.168 c/B 5500
- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>