 |
API参考
|
15#ifndef BN_BINCAL_X8664_H
16#define BN_BINCAL_X8664_H
18#include "hitls_build.h"
29#define MUL_AB(wh, wl, u, v) \
31 __asm("mulq %3" : "=d"(wh), "=a"(wl) : "a"(u), "r"(v) : "cc"); \
34#define SQR_A(wh, wl, u) \
36 __asm("mulq %2 " : "=d"(wh), "=a"(wl) : "a"(u) : "cc"); \
40#define DIV_ND(q, r, nh, nl, d) \
42 __asm("divq %4" : "=a"(q), "=d"(r) : "d"(nh), "a"(nl), "r"(d) : "cc"); \
48#define ADD_CARRY(carry, r) \
50 __asm("addq %1, %0 \n\t " \
53 : "+m"(l), "+r"(carry) \
59#define MULXADD_AB(h, m, l, u, v) \
62 __asm("mulq %0, %1, %2" : "=a"(lo), "=d"(hi) : "a"(u), "m"(v) : "cc"); \
63 __asm("addq %3, %0 \n\t " \
66 : "+r"(l), "+r"(m), "+r"(h) \
74#define MULADC_AB(r, a, b, carry) \
77 __asm("mulq %3" : "=a"(lo), "=d"(hi) : "a"(a), "g"(b) : "cc"); \
78 __asm("addq %3, %1 \n\t" \
83 : "+r"(r), "+r"(carry), "+r"(hi) \
89#define MULADD_AB(h, m, l, u, v) \
92 __asm("mulq %3" : "=a"(lo), "=d"(hi) : "a"(u), "m"(v) : "cc"); \
93 __asm("addq %3, %0 \n\t " \
96 : "+r"(l), "+r"(m), "+r"(h) \
102#define MULADD_AB2(h, m, l, u, v) \
105 __asm("mulq %3" : "=a"(lo), "=d"(hi) : "a"(u), "m"(v) : "cc"); \
106 __asm("addq %3, %0 \n\t " \
107 "adcq %4, %1 \n\t " \
108 "adcq $0, %2 \n\t " \
109 "addq %3, %0 \n\t " \
110 "adcq %4, %1 \n\t " \
111 "adcq $0, %2 \n\t " \
112 : "+r"(l), "+r"(m), "+r"(h) \
118#define SQRADD_A(h, m, l, u) MULADD_AB(h, m, l, u, u)
121#define MOD_HALF(r, nh, nl, d) \
124 __asm("divq %4" : "=a"(tmp), "=d"(r) : "d"(nh), "a"(nl), "r"(d) : "cc"); \
- crypto
- bn
- src
- bn_bincal_x8664.h