From 355cffd6b5efaaef5774056441098be5546e427c Mon Sep 17 00:00:00 2001 From: 0xturboblitz Date: Fri, 5 Apr 2024 18:54:38 -0700 Subject: [PATCH] typecasting everything in fr_raw_generic.cpp. Might fail to produce correct witness --- app/witnesscalc/build/fr_raw_generic.cpp | 158 +++++++++++------------ 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/app/witnesscalc/build/fr_raw_generic.cpp b/app/witnesscalc/build/fr_raw_generic.cpp index 8378a4ec7..b9caeb6fa 100644 --- a/app/witnesscalc/build/fr_raw_generic.cpp +++ b/app/witnesscalc/build/fr_raw_generic.cpp @@ -10,58 +10,60 @@ static uint64_t lboMask = 0x3fffffffffffffff; void Fr_rawAdd(FrRawElement pRawResult, const FrRawElement pRawA, const FrRawElement pRawB) { - uint64_t carry = mpn_add_n(pRawResult, pRawA, pRawB, Fr_N64); + // Cast the pointers from uint64_t* to mp_ptr (unsigned long long*) to match the expected types + uint64_t carry = mpn_add_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); - if(carry || mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if(carry || mpn_cmp((mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + // Also cast the pointers for mpn_sub_n for consistency + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawAddLS(FrRawElement pRawResult, FrRawElement pRawA, uint64_t rawB) { - uint64_t carry = mpn_add_1(pRawResult, pRawA, Fr_N64, rawB); + uint64_t carry = mpn_add_1((mp_ptr)pRawResult, (mp_srcptr)pRawA, Fr_N64, rawB); - if(carry || mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if(carry || mpn_cmp((mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawSub(FrRawElement pRawResult, const FrRawElement pRawA, const FrRawElement pRawB) { - uint64_t carry = mpn_sub_n(pRawResult, pRawA, pRawB, Fr_N64); + uint64_t carry = mpn_sub_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); if(carry) { - mpn_add_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_add_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawSubRegular(FrRawElement pRawResult, FrRawElement pRawA, FrRawElement pRawB) { - mpn_sub_n(pRawResult, pRawA, pRawB, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); } void Fr_rawSubSL(FrRawElement pRawResult, uint64_t rawA, FrRawElement pRawB) { FrRawElement pRawA = {rawA, 0, 0, 0}; - uint64_t carry = mpn_sub_n(pRawResult, pRawA, pRawB, Fr_N64); + uint64_t carry = mpn_sub_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); if(carry) { - mpn_add_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_add_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawSubLS(FrRawElement pRawResult, FrRawElement pRawA, uint64_t rawB) { - uint64_t carry = mpn_sub_1(pRawResult, pRawA, Fr_N64, rawB); + uint64_t carry = mpn_sub_1((mp_ptr)pRawResult, (mp_srcptr)pRawA, Fr_N64, rawB); if(carry) { - mpn_add_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_add_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } @@ -69,25 +71,25 @@ void Fr_rawNeg(FrRawElement pRawResult, const FrRawElement pRawA) { const uint64_t zero[Fr_N64] = {0, 0, 0, 0}; - if (mpn_cmp(pRawA, zero, Fr_N64) != 0) + if (mpn_cmp((mp_srcptr)pRawA, (mp_srcptr)zero, Fr_N64) != 0) { - mpn_sub_n(pRawResult, Fr_rawq, pRawA, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, (mp_srcptr)pRawA, Fr_N64); } else { - mpn_copyi(pRawResult, zero, Fr_N64); + mpn_copyi((mp_ptr)pRawResult, (mp_srcptr)zero, Fr_N64); } } // Substracts a long element and a short element form 0 void Fr_rawNegLS(FrRawElement pRawResult, FrRawElement pRawA, uint64_t rawB) { - uint64_t carry1 = mpn_sub_1(pRawResult, Fr_rawq, Fr_N64, rawB); - uint64_t carry2 = mpn_sub_n(pRawResult, pRawResult, pRawA, Fr_N64); + uint64_t carry1 = mpn_sub_1((mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64, rawB); + uint64_t carry2 = mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)pRawA, Fr_N64); if (carry1 || carry2) { - mpn_add_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_add_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } @@ -98,10 +100,9 @@ void Fr_rawCopy(FrRawElement pRawResult, const FrRawElement pRawA) pRawResult[2] = pRawA[2]; pRawResult[3] = pRawA[3]; } - int Fr_rawIsEq(const FrRawElement pRawA, const FrRawElement pRawB) { - return mpn_cmp(pRawA, pRawB, Fr_N64) == 0; + return mpn_cmp((mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64) == 0; } void Fr_rawMMul(FrRawElement pRawResult, const FrRawElement pRawA, const FrRawElement pRawB) @@ -116,34 +117,34 @@ void Fr_rawMMul(FrRawElement pRawResult, const FrRawElement pRawA, const FrRawEl uint64_t product2[N] = {0}; uint64_t product3[N] = {0}; - product0[4] = mpn_mul_1(product0, pRawB, Fr_N64, pRawA[0]); + product0[4] = mpn_mul_1((mp_ptr)product0, (mp_srcptr)pRawB, Fr_N64, pRawA[0]); np0 = Fr_np * product0[0]; - product1[1] = mpn_addmul_1(product0, mq, N, np0); + product1[1] = mpn_addmul_1((mp_ptr)product0, (mp_srcptr)mq, N, np0); - product1[4] = mpn_addmul_1(product1, pRawB, Fr_N64, pRawA[1]); - mpn_add(product1, product1, N, product0+1, N-1); + product1[4] = mpn_addmul_1((mp_ptr)product1, (mp_srcptr)pRawB, Fr_N64, pRawA[1]); + mpn_add((mp_ptr)product1, (mp_ptr)product1, N, (mp_ptr)product0+1, N-1); np0 = Fr_np * product1[0]; - product2[1] = mpn_addmul_1(product1, mq, N, np0); + product2[1] = mpn_addmul_1((mp_ptr)product1, (mp_srcptr)mq, N, np0); - product2[4] = mpn_addmul_1(product2, pRawB, Fr_N64, pRawA[2]); - mpn_add(product2, product2, N, product1+1, N-1); + product2[4] = mpn_addmul_1((mp_ptr)product2, (mp_srcptr)pRawB, Fr_N64, pRawA[2]); + mpn_add((mp_ptr)product2, (mp_ptr)product2, N, (mp_ptr)product1+1, N-1); np0 = Fr_np * product2[0]; - product3[1] = mpn_addmul_1(product2, mq, N, np0); + product3[1] = mpn_addmul_1((mp_ptr)product2, (mp_srcptr)mq, N, np0); - product3[4] = mpn_addmul_1(product3, pRawB, Fr_N64, pRawA[3]); - mpn_add(product3, product3, N, product2+1, N-1); + product3[4] = mpn_addmul_1((mp_ptr)product3, (mp_srcptr)pRawB, Fr_N64, pRawA[3]); + mpn_add((mp_ptr)product3, (mp_ptr)product3, N, (mp_ptr)product2+1, N-1); np0 = Fr_np * product3[0]; - mpn_addmul_1(product3, mq, N, np0); + mpn_addmul_1((mp_ptr)product3, (mp_srcptr)mq, N, np0); - mpn_copyi(pRawResult, product3+1, Fr_N64); + mpn_copyi((mp_ptr)pRawResult, (mp_ptr)product3+1, Fr_N64); - if (mpn_cmp(pRawResult, mq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)mq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, mq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)mq, Fr_N64); } } @@ -164,31 +165,30 @@ void Fr_rawMMul1(FrRawElement pRawResult, const FrRawElement pRawA, uint64_t pRa uint64_t product2[N] = {0}; uint64_t product3[N] = {0}; - product0[4] = mpn_mul_1(product0, pRawA, Fr_N64, pRawB); + product0[4] = mpn_mul_1((mp_ptr)product0, (mp_srcptr)pRawA, Fr_N64, pRawB); np0 = Fr_np * product0[0]; - product1[1] = mpn_addmul_1(product0, mq, N, np0); - mpn_add(product1, product1, N, product0+1, N-1); + product1[1] = mpn_addmul_1((mp_ptr)product0, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product1, (mp_ptr)product1, N, (mp_ptr)product0+1, N-1); np0 = Fr_np * product1[0]; - product2[1] = mpn_addmul_1(product1, mq, N, np0); - mpn_add(product2, product2, N, product1+1, N-1); + product2[1] = mpn_addmul_1((mp_ptr)product1, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product2, (mp_ptr)product2, N, (mp_ptr)product1+1, N-1); np0 = Fr_np * product2[0]; - product3[1] = mpn_addmul_1(product2, mq, N, np0); - mpn_add(product3, product3, N, product2+1, N-1); + product3[1] = mpn_addmul_1((mp_ptr)product2, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product3, (mp_ptr)product3, N, (mp_ptr)product2+1, N-1); np0 = Fr_np * product3[0]; - mpn_addmul_1(product3, mq, N, np0); + mpn_addmul_1((mp_ptr)product3, (mp_srcptr)mq, N, np0); - mpn_copyi(pRawResult, product3+1, Fr_N64); + mpn_copyi((mp_ptr)pRawResult, (mp_ptr)product3+1, Fr_N64); - if (mpn_cmp(pRawResult, mq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)mq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, mq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)mq, Fr_N64); } } - void Fr_rawToMontgomery(FrRawElement pRawResult, const FrRawElement &pRawA) { Fr_rawMMul(pRawResult, pRawA, Fr_rawR2); @@ -206,39 +206,39 @@ void Fr_rawFromMontgomery(FrRawElement pRawResult, const FrRawElement &pRawA) uint64_t product2[N] = {0}; uint64_t product3[N] = {0}; - mpn_copyi(product0, pRawA, Fr_N64); product0[4] = 0; + mpn_copyi((mp_ptr)product0, (mp_srcptr)pRawA, Fr_N64); product0[4] = 0; np0 = Fr_np * product0[0]; - product1[1] = mpn_addmul_1(product0, mq, N, np0); - mpn_add(product1, product1, N, product0+1, N-1); + product1[1] = mpn_addmul_1((mp_ptr)product0, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product1, (mp_ptr)product1, N, (mp_ptr)product0+1, N-1); np0 = Fr_np * product1[0]; - product2[1] = mpn_addmul_1(product1, mq, N, np0); - mpn_add(product2, product2, N, product1+1, N-1); + product2[1] = mpn_addmul_1((mp_ptr)product1, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product2, (mp_ptr)product2, N, (mp_ptr)product1+1, N-1); np0 = Fr_np * product2[0]; - product3[1] = mpn_addmul_1(product2, mq, N, np0); - mpn_add(product3, product3, N, product2+1, N-1); + product3[1] = mpn_addmul_1((mp_ptr)product2, (mp_srcptr)mq, N, np0); + mpn_add((mp_ptr)product3, (mp_ptr)product3, N, (mp_ptr)product2+1, N-1); np0 = Fr_np * product3[0]; - mpn_addmul_1(product3, mq, N, np0); + mpn_addmul_1((mp_ptr)product3, (mp_srcptr)mq, N, np0); - mpn_copyi(pRawResult, product3+1, Fr_N64); + mpn_copyi((mp_ptr)pRawResult, (mp_ptr)product3+1, Fr_N64); - if (mpn_cmp(pRawResult, mq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)mq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, mq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)mq, Fr_N64); } } int Fr_rawIsZero(const FrRawElement rawA) { - return mpn_zero_p(rawA, Fr_N64) ? 1 : 0; + return mpn_zero_p((mp_srcptr)rawA, Fr_N64) ? 1 : 0; } int Fr_rawCmp(FrRawElement pRawA, FrRawElement pRawB) { - return mpn_cmp(pRawA, pRawB, Fr_N64); + return mpn_cmp((mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); } void Fr_rawSwap(FrRawElement pRawResult, FrRawElement pRawA) @@ -274,43 +274,43 @@ void Fr_rawCopyS2L(FrRawElement pRawResult, int64_t val) pRawResult[2] = -1; pRawResult[3] = -1; - mpn_add_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_add_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawAnd(FrRawElement pRawResult, FrRawElement pRawA, FrRawElement pRawB) { - mpn_and_n(pRawResult, pRawA, pRawB, Fr_N64); + mpn_and_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); pRawResult[3] &= lboMask; - if (mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawOr(FrRawElement pRawResult, FrRawElement pRawA, FrRawElement pRawB) { - mpn_ior_n(pRawResult, pRawA, pRawB, Fr_N64); + mpn_ior_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); pRawResult[3] &= lboMask; - if (mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } void Fr_rawXor(FrRawElement pRawResult, FrRawElement pRawA, FrRawElement pRawB) { - mpn_xor_n(pRawResult, pRawA, pRawB, Fr_N64); + mpn_xor_n((mp_ptr)pRawResult, (mp_srcptr)pRawA, (mp_srcptr)pRawB, Fr_N64); pRawResult[3] &= lboMask; - if (mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } } @@ -320,19 +320,19 @@ void Fr_rawShl(FrRawElement r, FrRawElement a, uint64_t b) uint64_t word_shift = b / 64; uint64_t word_count = Fr_N64 - word_shift; - mpn_copyi(r + word_shift, a, word_count); + mpn_copyi((mp_ptr)(r + word_shift), (mp_srcptr)a, word_count); std::memset(r, 0, word_shift * sizeof(uint64_t)); if (bit_shift) { - mpn_lshift(r, r, Fr_N64, bit_shift); + mpn_lshift((mp_ptr)r, (mp_ptr)r, Fr_N64, bit_shift); } r[3] &= lboMask; - if (mpn_cmp(r, Fr_rawq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)r, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(r, r, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)r, (mp_ptr)r, (mp_srcptr)Fr_rawq, Fr_N64); } } @@ -342,23 +342,23 @@ void Fr_rawShr(FrRawElement r, FrRawElement a, uint64_t b) const uint64_t word_shift = b / 64; const uint64_t word_count = Fr_N64 - word_shift; - mpn_copyi(r, a + word_shift, word_count); + mpn_copyi((mp_ptr)r, (mp_srcptr)(a + word_shift), word_count); std::memset(r + word_count, 0, word_shift * sizeof(uint64_t)); if (bit_shift) { - mpn_rshift(r, r, Fr_N64, bit_shift); + mpn_rshift((mp_ptr)r, (mp_ptr)r, Fr_N64, bit_shift); } } void Fr_rawNot(FrRawElement pRawResult, FrRawElement pRawA) { - mpn_com(pRawResult, pRawA, Fr_N64); + mpn_com((mp_ptr)pRawResult, (mp_srcptr)pRawA, Fr_N64); pRawResult[3] &= lboMask; - if (mpn_cmp(pRawResult, Fr_rawq, Fr_N64) >= 0) + if (mpn_cmp((mp_srcptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64) >= 0) { - mpn_sub_n(pRawResult, pRawResult, Fr_rawq, Fr_N64); + mpn_sub_n((mp_ptr)pRawResult, (mp_ptr)pRawResult, (mp_srcptr)Fr_rawq, Fr_N64); } }