9 #ifndef BOTAN_MP_ASM_H__ 10 #define BOTAN_MP_ASM_H__ 12 #include <botan/mp_types.h> 14 #if (BOTAN_MP_WORD_BITS != 64) 15 #error The mp_x86_64 module requires that BOTAN_MP_WORD_BITS == 64 25 #define ASM(x) x "\n\t" 30 inline word
word_madd2(word a, word b, word* c)
35 ASM(
"adcq $0,%[carry]")
37 : [a]
"=a"(a), [b]
"=rm"(b), [carry]
"=&d"(*c)
38 :
"0"(a),
"1"(b), [c]
"g"(*c) :
"cc");
46 inline word
word_madd3(word a, word b, word c, word* d)
52 ASM(
"adcq $0,%[carry]")
55 ASM(
"adcq $0,%[carry]")
57 : [a]
"=a"(a), [b]
"=rm"(b), [carry]
"=&d"(*d)
58 :
"0"(a),
"1"(b), [c]
"g"(c), [d]
"g"(*d) :
"cc");
word word_madd3(word a, word b, word c, word *d)
word word_madd2(word a, word b, word *c)