1
C nettle, low-level cryptographics library
3
C Copyright (C) 2013 Niels Möller
5
C The nettle library is free software; you can redistribute it and/or modify
6
C it under the terms of the GNU Lesser General Public License as published by
7
C the Free Software Foundation; either version 2.1 of the License, or (at your
8
C option) any later version.
10
C The nettle library is distributed in the hope that it will be useful, but
11
C WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12
C or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
13
C License for more details.
15
C You should have received a copy of the GNU Lesser General Public License
16
C along with the nettle library; see the file COPYING.LIB. If not, write to
17
C the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
.file "ecc-256-redc.asm"
23
define(<U0>, <%rdi>) C Overlaps unused ecc input
35
C FOLD(x), sets (F3,F2,F1,F0) <-- (x << 224) - (x << 128) - (x<<32)
48
PROLOGUE(nettle_ecc_256_redc)
50
C save all registers that need to be saved
63
sbb F3, U0 C Add in later
91
C If carry, we need to add in
92
C 2^256 - p = <0xfffffffe, 0xff..ff, 0xffffffff00000000, 1>
96
mov XREG(F2), XREG(F3)
116
EPILOGUE(nettle_ecc_256_redc)