X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fec%2Fcurve448%2Farch_arm_32%2Ff_impl.h;h=2e385d5214c7739708cbfac73913236172c92dd3;hp=ed19f80e9124a6bfafa01b8518ac4bef29ed7d0a;hb=8d55f844b08199e0ac6a2ddc501de39f3237c5e9;hpb=1308e022e1a62214b9e7f8ec92ca7045e70af3a2 diff --git a/crypto/ec/curve448/arch_arm_32/f_impl.h b/crypto/ec/curve448/arch_arm_32/f_impl.h index ed19f80e91..2e385d5214 100644 --- a/crypto/ec/curve448/arch_arm_32/f_impl.h +++ b/crypto/ec/curve448/arch_arm_32/f_impl.h @@ -14,48 +14,46 @@ #define LIMB(x) (x##ull)&((1ull<<28)-1), (x##ull)>>28 #define FIELD_LITERAL(a,b,c,d,e,f,g,h) \ {{LIMB(a),LIMB(b),LIMB(c),LIMB(d),LIMB(e),LIMB(f),LIMB(g),LIMB(h)}} - + #define LIMB_PLACE_VALUE(i) 28 -void gf_add_RAW (gf out, const gf a, const gf b) { - for (unsigned int i=0; ilimb[0]); i++) { - out->limb[i] = a->limb[i] + b->limb[i]; +void gf_add_RAW(gf out, const gf a, const gf b) +{ + 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]; } - */ } -void gf_sub_RAW (gf out, const gf a, const gf b) { - for (unsigned int i=0; ilimb[0]); i++) { - out->limb[i] = a->limb[i] - b->limb[i]; +void gf_sub_RAW(gf out, const gf a, const gf b) +{ + 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]; } - */ } -void gf_bias (gf a, int amt) { - uint32_t co1 = ((1ull<<28)-1)*amt, co2 = co1-amt; - uint32x4_t lo = {co1,co1,co1,co1}, hi = {co2,co1,co1,co1}; - uint32x4_t *aa = (uint32x4_t*) a; +void gf_bias(gf a, int amt) +{ + uint32_t co1 = ((1ull << 28) - 1) * amt, co2 = co1 - amt; + uint32x4_t lo = { co1, co1, co1, co1 }, hi = { + co2, co1, co1, co1}; + uint32x4_t *aa = (uint32x4_t *) a; + aa[0] += lo; aa[1] += lo; aa[2] += hi; aa[3] += lo; } -void gf_weak_reduce (gf a) { - uint64_t mask = (1ull<<28) - 1; +void gf_weak_reduce(gf a) +{ + uint64_t mask = (1ull << 28) - 1; uint64_t tmp = a->limb[15] >> 28; + a->limb[8] += tmp; - for (unsigned int i=15; i>0; i--) { - a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28); + for (unsigned int i = 15; i > 0; i--) { + a->limb[i] = (a->limb[i] & mask) + (a->limb[i - 1] >> 28); } a->limb[0] = (a->limb[0] & mask) + tmp; } -