]> git.codecow.com Git - nano25519.git/commitdiff
Fix base copy destination buffer size, and cast to i8 only when necessary.
authorChris Duncan <chris@codecow.com>
Fri, 21 Aug 2026 19:18:46 +0000 (12:18 -0700)
committerChris Duncan <chris@codecow.com>
Fri, 21 Aug 2026 19:18:46 +0000 (12:18 -0700)
src/assembly/base.ts
src/assembly/ge.ts

index 448f1c0681cfbe5b52d621a2e92b3dcdec34f288..4508f59038bc4995c8f71e32ce548521632bba41 100644 (file)
@@ -1,12 +1,8 @@
 //! SPDX-FileCopyrightText: 2013-2026 Frank Denis <j@pureftpd.org>
 //! SPDX-License-Identifier: ISC
 
-
-/** 8 arrays of 3 arrays of 12 values of 4 bytes */
-const stride = 8 * 3 * 12 * 4
-
 export function base (pos: i32): usize {
-       const start: usize = pos * stride
+       const start: usize = (pos << 10) + (pos << 7) // 1152 = 4 bytes * 12 values * 3 fe * 8 ge
        return changetype<usize>(_base) + start
 }
 
index deab94525596f1de45360df5b76a12b1fa0de472..f1c6a7e9203e4f6e41617a6a4ce66f60903bdd58 100644 (file)
@@ -31,7 +31,7 @@ function ge_cmov (t: ge_precomp, u: ge_precomp, b: u8): void {
        fe_cmov(t.xy2d, u.xy2d, b)
 }
 
-const ge_cmov8_precomp_buffer: usize = changetype<usize>(new StaticArray<i32>(1152)) // 4 bytes * 12 values * 3 fields * 8 groups
+const ge_cmov8_precomp_buffer: usize = changetype<usize>(new StaticArray<i32>(288)) // 12 values * 3 fields * 8 groups
 const ge_cmov8_minust: ge_precomp = new ge_precomp()
 const ge_cmov8_precomp: StaticArray<ge_precomp> = StaticArray.fromArray<ge_precomp>([
        new ge_precomp(),
@@ -52,12 +52,12 @@ function ge_cmov8_base (t: ge_precomp, pos: i32, b: i8): void {
        memory.copy(ge_cmov8_precomp_buffer, base(pos), 1152)
 
        ge_precomp_0(t)
-       for (let i: i8 = 0; i < 8; i++) {
+       for (let i = 0; i < 8; i++) {
                const ptr = ge_cmov8_precomp_buffer + (i * 144) // 4 bytes * 12 values * 3 fields
                memory.copy(changetype<usize>(ge_cmov8_precomp[i].yplusx), ptr, 48)
                memory.copy(changetype<usize>(ge_cmov8_precomp[i].yminusx), ptr + 48, 48)
                memory.copy(changetype<usize>(ge_cmov8_precomp[i].xy2d), ptr + 96, 48)
-               ge_cmov(t, ge_cmov8_precomp[i], equal(babs, i + 1))
+               ge_cmov(t, ge_cmov8_precomp[i], equal(babs, i8(i + 1)))
        }
 
        fe_copy(minust.yplusx, t.yminusx)