@@ -19,17 +19,15 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<5; i++) { | |||||
for (unsigned int i=0; i<5; i++) { | |||||
out->limb[i] = a->limb[i] + b->limb[i]; | out->limb[i] = a->limb[i] + b->limb[i]; | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
uint64_t co1 = ((1ull<<51)-1)*2, co2 = co1-36; | uint64_t co1 = ((1ull<<51)-1)*2, co2 = co1-36; | ||||
for (i=0; i<5; i++) { | |||||
for (unsigned int i=0; i<5; i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i] + ((i==0) ? co2 : co1); | out->limb[i] = a->limb[i] - b->limb[i] + ((i==0) ? co2 : co1); | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
@@ -43,8 +41,7 @@ void gf_bias (gf a, int amt) { | |||||
void gf_weak_reduce (gf a) { | void gf_weak_reduce (gf a) { | ||||
uint64_t mask = (1ull<<51) - 1; | uint64_t mask = (1ull<<51) - 1; | ||||
uint64_t tmp = a->limb[4] >> 51; | uint64_t tmp = a->limb[4] >> 51; | ||||
int i; | |||||
for (i=4; i>0; i--) { | |||||
for (unsigned int i=4; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>51); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>51); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp*19; | a->limb[0] = (a->limb[0] & mask) + tmp*19; | ||||
@@ -15,24 +15,20 @@ | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<5; i++) { | |||||
for (unsigned int i=0; i<5; i++) { | |||||
out->limb[i] = a->limb[i] + b->limb[i]; | out->limb[i] = a->limb[i] + b->limb[i]; | ||||
} | } | ||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
uint64_t co1 = ((1ull<<51)-1)*2, co2 = co1-36; | |||||
for (i=0; i<5; i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i] + ((i==0) ? co2 : co1); | |||||
for (unsigned int i=0; i<5; i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i]; | |||||
} | } | ||||
} | } | ||||
void gf_bias (gf a, int amt) { | void gf_bias (gf a, int amt) { | ||||
a->limb[0] += ((uint64_t)(amt)<<52) - 38*amt; | a->limb[0] += ((uint64_t)(amt)<<52) - 38*amt; | ||||
int i; | |||||
for (i=1; i<5; i++) { | |||||
for (unsigned int i=1; i<5; i++) { | |||||
a->limb[i] += ((uint64_t)(amt)<<52)-2*amt; | a->limb[i] += ((uint64_t)(amt)<<52)-2*amt; | ||||
} | } | ||||
} | } | ||||
@@ -40,8 +36,7 @@ void gf_bias (gf a, int amt) { | |||||
void gf_weak_reduce (gf a) { | void gf_weak_reduce (gf a) { | ||||
uint64_t mask = (1ull<<51) - 1; | uint64_t mask = (1ull<<51) - 1; | ||||
uint64_t tmp = a->limb[4] >> 51; | uint64_t tmp = a->limb[4] >> 51; | ||||
int i; | |||||
for (i=4; i>0; i--) { | |||||
for (unsigned int i=4; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>51); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>51); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp*19; | a->limb[0] = (a->limb[0] & mask) + tmp*19; | ||||
@@ -20,8 +20,7 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -33,8 +32,7 @@ void gf_add_RAW (gf out, const gf a, const gf b) { | |||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -58,9 +56,8 @@ void gf_bias (gf a, int amt) { | |||||
void gf_weak_reduce (gf a) { | void gf_weak_reduce (gf a) { | ||||
uint64_t mask = (1ull<<28) - 1; | uint64_t mask = (1ull<<28) - 1; | ||||
uint64_t tmp = a->limb[15] >> 28; | uint64_t tmp = a->limb[15] >> 28; | ||||
int i; | |||||
a->limb[8] += tmp; | a->limb[8] += tmp; | ||||
for (i=15; i>0; i--) { | |||||
for (unsigned int i=15; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -20,26 +20,22 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) { | |||||
out->limb[i] = a->limb[i] + b->limb[i]; | out->limb[i] = a->limb[i] + b->limb[i]; | ||||
} | } | ||||
*/ | */ | ||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i]; | out->limb[i] = a->limb[i] - b->limb[i]; | ||||
} | } | ||||
*/ | */ | ||||
@@ -58,9 +54,8 @@ void gf_bias (gf a, int amt) { | |||||
void gf_weak_reduce (gf a) { | void gf_weak_reduce (gf a) { | ||||
uint64_t mask = (1ull<<28) - 1; | uint64_t mask = (1ull<<28) - 1; | ||||
uint64_t tmp = a->limb[15] >> 28; | uint64_t tmp = a->limb[15] >> 28; | ||||
int i; | |||||
a->limb[8] += tmp; | a->limb[8] += tmp; | ||||
for (i=15; i>0; i--) { | |||||
for (unsigned int i=15; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -26,15 +26,13 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) { | |||||
((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -60,8 +58,7 @@ void gf_weak_reduce (gf a) { | |||||
uint32x2_t *aa = (uint32x2_t*) a, vmask = {(1ull<<28)-1, (1ull<<28)-1}, vm2 = {0,-1}, | uint32x2_t *aa = (uint32x2_t*) a, vmask = {(1ull<<28)-1, (1ull<<28)-1}, vm2 = {0,-1}, | ||||
tmp = vshr_n_u32(aa[7],28); | tmp = vshr_n_u32(aa[7],28); | ||||
int i; | |||||
for (i=7; i>=1; i--) { | |||||
for (unsigned int i=7; i>=1; i--) { | |||||
aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28); | aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28); | ||||
} | } | ||||
aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2); | aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2); | ||||
@@ -19,17 +19,15 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<8; i++) { | |||||
for (unsigned int i=0; i<8; i++) { | |||||
out->limb[i] = a->limb[i] + b->limb[i]; | out->limb[i] = a->limb[i] + b->limb[i]; | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
uint64_t co1 = ((1ull<<56)-1)*2, co2 = co1-2; | uint64_t co1 = ((1ull<<56)-1)*2, co2 = co1-2; | ||||
for (i=0; i<8; i++) { | |||||
for (unsigned int i=0; i<8; i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i] + ((i==4) ? co2 : co1); | out->limb[i] = a->limb[i] - b->limb[i] + ((i==4) ? co2 : co1); | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
@@ -43,9 +41,8 @@ void gf_bias (gf a, int amt) { | |||||
void gf_weak_reduce (gf a) { | void gf_weak_reduce (gf a) { | ||||
uint64_t mask = (1ull<<56) - 1; | uint64_t mask = (1ull<<56) - 1; | ||||
uint64_t tmp = a->limb[7] >> 56; | uint64_t tmp = a->limb[7] >> 56; | ||||
int i; | |||||
a->limb[4] += tmp; | a->limb[4] += tmp; | ||||
for (i=7; i>0; i--) { | |||||
for (unsigned int i=7; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -18,8 +18,7 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf out, const gf a, const gf b) { | void gf_add_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -31,8 +30,7 @@ void gf_add_RAW (gf out, const gf a, const gf b) { | |||||
} | } | ||||
void gf_sub_RAW (gf out, const gf a, const gf b) { | void gf_sub_RAW (gf out, const gf a, const gf b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -59,8 +57,7 @@ void gf_bias (gf a, int amt) { | |||||
aa[2] += hi; | aa[2] += hi; | ||||
aa[3] += lo; | aa[3] += lo; | ||||
#else | #else | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*a)/sizeof(uint64_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*a)/sizeof(uint64_t); i++) { | |||||
a->limb[i] += (i==4) ? co2 : co1; | a->limb[i] += (i==4) ? co2 : co1; | ||||
} | } | ||||
#endif | #endif | ||||
@@ -70,9 +67,8 @@ void gf_weak_reduce (gf a) { | |||||
/* PERF: use pshufb/palignr if anyone cares about speed of this */ | /* PERF: use pshufb/palignr if anyone cares about speed of this */ | ||||
uint64_t mask = (1ull<<56) - 1; | uint64_t mask = (1ull<<56) - 1; | ||||
uint64_t tmp = a->limb[7] >> 56; | uint64_t tmp = a->limb[7] >> 56; | ||||
int i; | |||||
a->limb[4] += tmp; | a->limb[4] += tmp; | ||||
for (i=7; i>0; i--) { | |||||
for (unsigned int i=7; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -18,8 +18,7 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf *out, const gf *a, const gf *b) { | void gf_add_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -31,8 +30,7 @@ void gf_add_RAW (gf *out, const gf *a, const gf *b) { | |||||
} | } | ||||
void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
/* | /* | ||||
@@ -44,8 +42,7 @@ void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | |||||
} | } | ||||
void gf_copy (gf *out, const gf *a) { | void gf_copy (gf *out, const gf *a) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(big_register_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(big_register_t); i++) { | |||||
((big_register_t *)out)[i] = ((const big_register_t *)a)[i]; | ((big_register_t *)out)[i] = ((const big_register_t *)a)[i]; | ||||
} | } | ||||
} | } | ||||
@@ -68,8 +65,7 @@ void gf_bias ( | |||||
aa[2] += hi; | aa[2] += hi; | ||||
aa[3] += lo; | aa[3] += lo; | ||||
#else | #else | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*a)/sizeof(uint64_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*a)/sizeof(uint64_t); i++) { | |||||
a->limb[i] += (i==4) ? co2 : co1; | a->limb[i] += (i==4) ? co2 : co1; | ||||
} | } | ||||
#endif | #endif | ||||
@@ -79,9 +75,8 @@ void gf_weak_reduce (gf *a) { | |||||
/* PERF: use pshufb/palignr if anyone cares about speed of this */ | /* PERF: use pshufb/palignr if anyone cares about speed of this */ | ||||
uint64_t mask = (1ull<<60) - 1; | uint64_t mask = (1ull<<60) - 1; | ||||
uint64_t tmp = a->limb[7] >> 60; | uint64_t tmp = a->limb[7] >> 60; | ||||
int i; | |||||
a->limb[4] += tmp; | a->limb[4] += tmp; | ||||
for (i=7; i>0; i--) { | |||||
for (unsigned int i=7; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>60); | a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>60); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -17,17 +17,15 @@ extern "C" { | |||||
/* -------------- Inline functions begin here -------------- */ | /* -------------- Inline functions begin here -------------- */ | ||||
void gf_add_RAW (gf *out, const gf *a, const gf *b) { | void gf_add_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
for (i=0; i<9; i++) { | |||||
for (unsigned int i=0; i<9; i++) { | |||||
out->limb[i] = a->limb[i] + b->limb[i]; | out->limb[i] = a->limb[i] + b->limb[i]; | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
} | } | ||||
void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
uint64_t co1 = ((1ull<<58)-1)*4, co2 = ((1ull<<57)-1)*4; | uint64_t co1 = ((1ull<<58)-1)*4, co2 = ((1ull<<57)-1)*4; | ||||
for (i=0; i<9; i++) { | |||||
for (unsigned int i=0; i<9; i++) { | |||||
out->limb[i] = a->limb[i] - b->limb[i] + ((i==8) ? co2 : co1); | out->limb[i] = a->limb[i] - b->limb[i] + ((i==8) ? co2 : co1); | ||||
} | } | ||||
gf_weak_reduce(out); | gf_weak_reduce(out); | ||||
@@ -41,8 +39,7 @@ void gf_bias (gf *a, int amt) { | |||||
void gf_weak_reduce (gf *a) { | void gf_weak_reduce (gf *a) { | ||||
uint64_t mask = (1ull<<58) - 1; | uint64_t mask = (1ull<<58) - 1; | ||||
uint64_t tmp = a->limb[8] >> 57; | uint64_t tmp = a->limb[8] >> 57; | ||||
int i; | |||||
for (i=8; i>0; i--) { | |||||
for (unsigned int i=8; i>0; i--) { | |||||
a->limb[i] = (a->limb[i] & ((i==8) ? mask>>1 : mask)) + (a->limb[i-1]>>58); | a->limb[i] = (a->limb[i] & ((i==8) ? mask>>1 : mask)) + (a->limb[i-1]>>58); | ||||
} | } | ||||
a->limb[0] = (a->limb[0] & mask) + tmp; | a->limb[0] = (a->limb[0] & mask) + tmp; | ||||
@@ -32,15 +32,13 @@ static inline uint64x3_t timesW (uint64x3_t u) { | |||||
} | } | ||||
void gf_add_RAW (gf *out, const gf *a, const gf *b) { | void gf_add_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
} | } | ||||
void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | void gf_sub_RAW (gf *out, const gf *a, const gf *b) { | ||||
unsigned int i; | |||||
for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
for (unsigned int i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) { | |||||
((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i]; | ||||
} | } | ||||
} | } | ||||