14 #ifndef SECP256K1_FIELD_INNER5X52_IMPL_H 15 #define SECP256K1_FIELD_INNER5X52_IMPL_H 27 uint64_t tmp1, tmp2, tmp3;
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" 281 :
"+S"(a),
"=m"(tmp1),
"=m"(tmp2),
"=m"(tmp3)
283 :
"%rax",
"%rcx",
"%rdx",
"%r8",
"%r9",
"%r10",
"%r11",
"%r12",
"%r13",
"%r14",
"%r15",
"cc",
"memory" 287 SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r,
const uint64_t *a) {
297 uint64_t tmp1, tmp2, tmp3;
298 __asm__ __volatile__(
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" 496 :
"+S"(a),
"=m"(tmp1),
"=m"(tmp2),
"=m"(tmp3)
498 :
"%rax",
"%rbx",
"%rcx",
"%rdx",
"%r8",
"%r9",
"%r10",
"%r11",
"%r12",
"%r13",
"%r14",
"%r15",
"cc",
"memory"
#define SECP256K1_RESTRICT