9 #ifndef BOTAN_MP_ASM_H__
10 #define BOTAN_MP_ASM_H__
12 #include <botan/mp_types.h>
14 #if (BOTAN_MP_WORD_BITS != 32)
15 #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32
25 #define ASM(x) x "\n\t"
30 inline word
word_madd2(word a, word b, word* c)
35 ASM(
"adcl $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("adcl $0,%[carry]")
55 ASM("adcl $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)