v128.store_lane<i64>(h_ptr, v128.add<i32>(v128.load(f_ptr, 32), v128.load(g_ptr, 32)), 0, 32)
}
-/**
- * Conditionally copy values from one FieldElement to another.
- *
- * @param {usize} f FieldElement destination
- * @param {usize} g FieldElement source
- * @param {u64} b Copy `g` into `f` if 1, copy `f` into `f` if 0
- */
-//@ts-expect-error
-@inline
-export function fe_memcmov (f: usize, g: usize, b: u64): void {
- const c = v128.splat<u64>(0 - b)
- v128.store(f, v128.bitselect(v128.load(g), v128.load(f, 0), c))
- v128.store(f, v128.bitselect(v128.load(g, 16), v128.load(f, 16), c), 16)
- v128.store_lane<u64>(f, v128.bitselect(v128.load(g, 32), v128.load(f, 32), c), 0, 32)
-}
-
/**
* Conditionally copy values from one FieldElement to another.
*
//@ts-expect-error
@inline
export function fe_cmov (f: FieldElement, g: FieldElement, b: u64): void {
- fe_memcmov(changetype<usize>(f), changetype<usize>(g), b)
-}
-
-/**
- * Copy values from one FieldElement to another.
- *
- * @param {usize} h pointer to FieldElement destination
- * @param {usize} f pointer to FieldElement source
- */
-//@ts-expect-error
-@inline
-export function fe_memcopy (h: usize, f: usize): void {
- memory.copy(h, f, 40)
+ const f_ptr = changetype<usize>(f)
+ const g_ptr = changetype<usize>(g)
+ const c = v128.splat<u64>(0 - b)
+ v128.store(f_ptr, v128.bitselect(v128.load(g_ptr), v128.load(f_ptr, 0), c))
+ v128.store(f_ptr, v128.bitselect(v128.load(g_ptr, 16), v128.load(f_ptr, 16), c), 16)
+ v128.store_lane<u64>(f_ptr, v128.bitselect(v128.load(g_ptr, 32), v128.load(f_ptr, 32), c), 0, 32)
}
/**
memory.copy(changetype<usize>(h), changetype<usize>(f), 40)
}
-/**
- * Conditionally swap values between two FieldElements.
- *
- * @param f FieldElement destination
- * @param g FieldElement source
- * @param b Copy `f` into `g` and `g` into `f` if 1, else copy self if 0
- */
-//@ts-expect-error
-@inline
-export function fe_cswap (f: FieldElement, g: FieldElement, b: u64): void {
- const f_ptr = changetype<usize>(f)
- const g_ptr = changetype<usize>(g)
- const c = v128.splat<u64>(0 - b)
-
- const f03 = v128.load(f_ptr)
- const g03 = v128.load(g_ptr)
- const f47 = v128.load(f_ptr, 16)
- const g47 = v128.load(g_ptr, 16)
- const f89 = v128.load(f_ptr, 32)
- const g89 = v128.load(g_ptr, 32)
-
- v128.store(f_ptr, v128.bitselect(g03, f03, c))
- v128.store(g_ptr, v128.bitselect(f03, g03, c))
- v128.store(f_ptr, v128.bitselect(g47, f47, c), 16)
- v128.store(g_ptr, v128.bitselect(f47, g47, c), 16)
- v128.store_lane<i64>(f_ptr, v128.bitselect(g89, f89, c), 0, 32)
- v128.store_lane<i64>(g_ptr, v128.bitselect(f89, g89, c), 0, 32)
-}
-
/**
* Add a FieldElement to itself and store the sum.
*