14#ifndef SECP256K1_FIELD_INNER5X52_IMPL_H
15#define SECP256K1_FIELD_INNER5X52_IMPL_H
29 "movq 0(%%rsi),%%r10\n"
30 "movq 8(%%rsi),%%r11\n"
31 "movq 16(%%rsi),%%r12\n"
32 "movq 24(%%rsi),%%r13\n"
33 "movq 32(%%rsi),%%r14\n"
36 "movq 0(%%rbx),%%rax\n"
41 "movq 8(%%rbx),%%rax\n"
46 "movq 16(%%rbx),%%rax\n"
51 "movq 24(%%rbx),%%rax\n"
56 "movq 32(%%rbx),%%rax\n"
61 "movq $0xfffffffffffff,%%rdx\n"
63 "movq $0x1000003d10,%%rdx\n"
68 "shrdq $52,%%r9,%%r8\n"
71 "movq $0xfffffffffffff,%%rdx\n"
75 "shrdq $52,%%r15,%%rcx\n"
78 "movq 0(%%rbx),%%rax\n"
83 "movq 8(%%rbx),%%rax\n"
88 "movq 16(%%rbx),%%rax\n"
93 "movq 24(%%rbx),%%rax\n"
98 "movq 32(%%rbx),%%rax\n"
104 "movq $0x1000003d10,%%rdx\n"
110 "movq $0xfffffffffffff,%%rdx\n"
113 "shrdq $52,%%r15,%%rcx\n"
120 "movq $0xffffffffffff,%%rax\n"
124 "movq 0(%%rbx),%%rax\n"
129 "movq 8(%%rbx),%%rax\n"
134 "movq 16(%%rbx),%%rax\n"
139 "movq 24(%%rbx),%%rax\n"
144 "movq 32(%%rbx),%%rax\n"
150 "movq $0xfffffffffffff,%%rdx\n"
153 "shrdq $52,%%r15,%%rcx\n"
160 "movq $0x1000003d1,%%rax\n"
166 "movq $0xfffffffffffff,%%rdx\n"
168 "movq %%rax,0(%%rdi)\n"
170 "shrdq $52,%%r9,%%r8\n"
173 "movq 0(%%rbx),%%rax\n"
178 "movq 8(%%rbx),%%rax\n"
183 "movq 16(%%rbx),%%rax\n"
188 "movq 24(%%rbx),%%rax\n"
193 "movq 32(%%rbx),%%rax\n"
199 "movq $0xfffffffffffff,%%rdx\n"
201 "movq $0x1000003d10,%%rdx\n"
206 "shrdq $52,%%r15,%%rcx\n"
210 "movq $0xfffffffffffff,%%rdx\n"
212 "movq %%rax,8(%%rdi)\n"
214 "shrdq $52,%%r9,%%r8\n"
217 "movq 0(%%rbx),%%rax\n"
222 "movq 8(%%rbx),%%rax\n"
227 "movq 16(%%rbx),%%rax\n"
235 "movq 24(%%rbx),%%rax\n"
240 "movq 32(%%rbx),%%rax\n"
246 "movq $0xfffffffffffff,%%rdx\n"
248 "movq $0x1000003d10,%%rdx\n"
253 "shrdq $52,%%r15,%%rcx\n"
256 "movq $0xfffffffffffff,%%rdx\n"
258 "movq %%rax,16(%%rdi)\n"
260 "shrdq $52,%%r9,%%r8\n"
266 "movq $0x1000003d10,%%rdx\n"
272 "movq $0xfffffffffffff,%%rdx\n"
274 "movq %%rax,24(%%rdi)\n"
276 "shrdq $52,%%r9,%%r8\n"
280 "movq %%r8,32(%%rdi)\n"
283:
"%rax",
"%rcx",
"%rdx",
"%r8",
"%r9",
"%r10",
"%r11",
"%r12",
"%r13",
"%r14",
"%r15",
"cc",
"memory"
299 "movq 0(%%rsi),%%r10\n"
300 "movq 8(%%rsi),%%r11\n"
301 "movq 16(%%rsi),%%r12\n"
302 "movq 24(%%rsi),%%r13\n"
303 "movq 32(%%rsi),%%r14\n"
304 "movq $0xfffffffffffff,%%r15\n"
307 "leaq (%%r10,%%r10,1),%%rax\n"
312 "leaq (%%r11,%%r11,1),%%rax\n"
323 "movq $0x1000003d10,%%rdx\n"
328 "shrdq $52,%%r9,%%r8\n"
334 "shrdq $52,%%rcx,%%rbx\n"
344 "leaq (%%r11,%%r11,1),%%rax\n"
355 "movq $0x1000003d10,%%rdx\n"
363 "shrdq $52,%%rcx,%%rbx\n"
370 "movq $0xffffffffffff,%%rax\n"
384 "leaq (%%r12,%%r12,1),%%rax\n"
392 "shrdq $52,%%rcx,%%rbx\n"
399 "movq $0x1000003d1,%%rax\n"
406 "movq %%rax,0(%%rdi)\n"
408 "shrdq $52,%%r9,%%r8\n"
430 "movq $0x1000003d10,%%rdx\n"
435 "shrdq $52,%%rcx,%%rbx\n"
440 "movq %%rax,8(%%rdi)\n"
442 "shrdq $52,%%r9,%%r8\n"
465 "movq $0x1000003d10,%%rdx\n"
470 "shrdq $52,%%rcx,%%rbx\n"
474 "movq %%rax,16(%%rdi)\n"
476 "shrdq $52,%%r9,%%r8\n"
482 "movq $0x1000003d10,%%rdx\n"
489 "movq %%rax,24(%%rdi)\n"
491 "shrdq $52,%%r9,%%r8\n"
495 "movq %%r8,32(%%rdi)\n"
498:
"%rax",
"%rbx",
"%rcx",
"%rdx",
"%r8",
"%r9",
"%r10",
"%r11",
"%r12",
"%r13",
"%r14",
"%r15",
"cc",
"memory"
static SECP256K1_INLINE void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t *SECP256K1_RESTRICT b)
Changelog:
static SECP256K1_INLINE void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a)
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
#define SECP256K1_RESTRICT