//@ts-expect-error
@inline
-function ge_cmov (t: ge_precomp, u: ge_precomp, b: u8): void {
- fe_cmov(changetype<usize>(t.yplusx), changetype<usize>(u.yplusx), b)
- fe_cmov(changetype<usize>(t.yminusx), changetype<usize>(u.yminusx), b)
- fe_cmov(changetype<usize>(t.xy2d), changetype<usize>(u.xy2d), b)
+function ge_cmov (t: ge_precomp, u: usize, b: u8): void {
+ fe_cmov(changetype<usize>(t.yplusx), u, b)
+ fe_cmov(changetype<usize>(t.yminusx), u + 48, b)
+ fe_cmov(changetype<usize>(t.xy2d), u + 96, b)
}
const p: ge_precomp = new ge_precomp()
+const q: usize = changetype<usize>(new StaticArray<i32>(36))
//@ts-expect-error
@inline
function ge_cmov8_base (t: ge_precomp, offset: i32, b: i8): void {
ge_precomp_0(t)
for (let i = 0; i < 8; i++) {
const baseptr = base + offset + (i * 144) // 4 bytes * 12 values * 3 fields
- memory.copy(changetype<usize>(p.yplusx), baseptr, 48)
- memory.copy(changetype<usize>(p.yminusx), baseptr + 48, 48)
- memory.copy(changetype<usize>(p.xy2d), baseptr + 96, 48)
- ge_cmov(t, p, equal(babs, i8(i + 1)))
+ ge_cmov(t, baseptr, equal(babs, i8(i + 1)))
}
fe_copy(p.yplusx, t.yminusx)
fe_copy(p.yminusx, t.yplusx)
fe_neg(p.xy2d, t.xy2d)
- ge_cmov(t, p, bnegative)
+
+ memory.copy(q, changetype<usize>(p.yplusx), 48)
+ memory.copy(q + 48, changetype<usize>(p.yminusx), 48)
+ memory.copy(q + 96, changetype<usize>(p.xy2d), 48)
+
+ ge_cmov(t, q, bnegative)
}
const u: FieldElement = fe()