Lines Matching refs:left
206 /* Returns sign of left - right. */
207 int vli_cmp(const u64 *left, const u64 *right, unsigned int ndigits)
212 if (left[i] > right[i])
214 else if (left[i] < right[i])
256 /* Computes result = left + right, returning carry. Can modify in place. */
257 static u64 vli_add(u64 *result, const u64 *left, const u64 *right,
266 sum = left[i] + right[i] + carry;
267 if (sum != left[i])
268 carry = (sum < left[i]);
276 /* Computes result = left + right, returning carry. Can modify in place. */
277 static u64 vli_uadd(u64 *result, const u64 *left, u64 right,
286 sum = left[i] + carry;
287 if (sum != left[i])
288 carry = (sum < left[i]);
298 /* Computes result = left - right, returning borrow. Can modify in place. */
299 u64 vli_sub(u64 *result, const u64 *left, const u64 *right,
308 diff = left[i] - right[i] - borrow;
309 if (diff != left[i])
310 borrow = (diff > left[i]);
319 /* Computes result = left - right, returning borrow. Can modify in place. */
320 static u64 vli_usub(u64 *result, const u64 *left, u64 right,
329 diff = left[i] - borrow;
330 if (diff != left[i])
331 borrow = (diff > left[i]);
339 static uint128_t mul_64_64(u64 left, u64 right)
343 unsigned __int128 m = (unsigned __int128)left * right;
348 u64 a0 = left & 0xffffffffull;
349 u64 a1 = left >> 32;
380 static void vli_mult(u64 *result, const u64 *left, const u64 *right,
401 product = mul_64_64(left[i], right[k - i]);
416 /* Compute product = left * right, for a small right value. */
417 static void vli_umult(u64 *result, const u64 *left, u32 right,
426 product = mul_64_64(left[k], right);
438 static void vli_square(u64 *result, const u64 *left, unsigned int ndigits)
455 product = mul_64_64(left[i], left[k - i]);
477 /* Computes result = (left + right) % mod.
478 * Assumes that left < mod and right < mod, result != mod.
480 static void vli_mod_add(u64 *result, const u64 *left, const u64 *right,
485 carry = vli_add(result, left, right, ndigits);
494 /* Computes result = (left - right) % mod.
495 * Assumes that left < mod and right < mod, result != mod.
497 static void vli_mod_sub(u64 *result, const u64 *left, const u64 *right,
500 u64 borrow = vli_sub(result, left, right, ndigits);
941 /* Computes result = (left * right) % mod.
944 void vli_mod_mult_slow(u64 *result, const u64 *left, const u64 *right,
949 vli_mult(product, left, right, ndigits);
954 /* Computes result = (left * right) % curve_prime. */
955 static void vli_mod_mult_fast(u64 *result, const u64 *left, const u64 *right,
960 vli_mult(product, left, right, curve->g.ndigits);
964 /* Computes result = left^2 % curve_prime. */
965 static void vli_mod_square_fast(u64 *result, const u64 *left,
970 vli_square(product, left, curve->g.ndigits);