X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fec%2Fcurve448%2Farch_32%2Ff_impl.c;h=423e8a803a43da47df72a820a5024f7889f3deb7;hp=8ba7c630e7fe04109d874809468e1cdfc6fa17d4;hb=cb5ed32665ffb3a5ed6f631343d9c5302eaf7478;hpb=dd03fd7e3ada3a9ebdb83fc5e4164b2a404e6c62 diff --git a/crypto/ec/curve448/arch_32/f_impl.c b/crypto/ec/curve448/arch_32/f_impl.c index 8ba7c630e7..423e8a803a 100644 --- a/crypto/ec/curve448/arch_32/f_impl.c +++ b/crypto/ec/curve448/arch_32/f_impl.c @@ -12,14 +12,6 @@ #include "field.h" -#if (defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) && !defined(I_HATE_UNROLLED_LOOPS)) \ - || defined(C448_FORCE_UNROLL) -# define REPEAT8(_x) _x _x _x _x _x _x _x _x -# define FOR_LIMB(_i,_start,_end,_x) do { _i=_start; REPEAT8( if (_i<_end) { _x; } _i++;) } while (0) -#else -# define FOR_LIMB(_i,_start,_end,_x) do { for (_i=_start; _i<_end; _i++) _x; } while (0) -#endif - void gf_mul(gf_s * RESTRICT cs, const gf as, const gf bs) { const uint32_t *a = as->limb, *b = bs->limb; @@ -34,30 +26,28 @@ void gf_mul(gf_s * RESTRICT cs, const gf as, const gf bs) bb[i] = b[i] + b[i + 8]; } - FOR_LIMB(j, 0, 8, { - accum2 = 0; - FOR_LIMB(i, 0, j + 1, { - accum2 += widemul(a[j - i], b[i]); - accum1 += widemul(aa[j - i], bb[i]); - accum0 += widemul(a[8 + j - i], b[8 + i]); - } - ); accum1 -= accum2; accum0 += accum2; - accum2 = 0; - FOR_LIMB(i, j + 1, 8, { - accum0 -= - widemul(a[8 + j - i], b[i]); - accum2 += - widemul(aa[8 + j - i], - bb[i]); - accum1 += widemul(a[16 + j - i], b[8 + i]); - } - ); - accum1 += accum2; - accum0 += accum2; - c[j] = ((uint32_t)(accum0)) & mask; - c[j + 8] = ((uint32_t)(accum1)) & mask; - accum0 >>= 28; accum1 >>= 28; - }); + for (j = 0; j < 8; j++) { + accum2 = 0; + for (i = 0; i < j + 1; i++) { + accum2 += widemul(a[j - i], b[i]); + accum1 += widemul(aa[j - i], bb[i]); + accum0 += widemul(a[8 + j - i], b[8 + i]); + } + accum1 -= accum2; + accum0 += accum2; + accum2 = 0; + for (i = j + 1; i < 8; i++) { + accum0 -= widemul(a[8 + j - i], b[i]); + accum2 += widemul(aa[8 + j - i], bb[i]); + accum1 += widemul(a[16 + j - i], b[8 + i]); + } + accum1 += accum2; + accum0 += accum2; + c[j] = ((uint32_t)(accum0)) & mask; + c[j + 8] = ((uint32_t)(accum1)) & mask; + accum0 >>= 28; + accum1 >>= 28; + } accum0 += accum1; accum0 += c[8]; @@ -81,11 +71,14 @@ void gf_mulw_unsigned(gf_s * RESTRICT cs, const gf as, uint32_t b) assert(b < 1 << 28); - FOR_LIMB(i, 0, 8, { - accum0 += widemul(b, a[i]); accum8 += widemul(b, a[i + 8]); - c[i] = accum0 & mask; accum0 >>= 28; - c[i + 8] = accum8 & mask; accum8 >>= 28; - }); + for (i = 0; i < 8; i++) { + accum0 += widemul(b, a[i]); + accum8 += widemul(b, a[i + 8]); + c[i] = accum0 & mask; + accum0 >>= 28; + c[i + 8] = accum8 & mask; + accum8 >>= 28; + } accum0 += accum8 + c[8]; c[8] = ((uint32_t)accum0) & mask;