From 6dd0fe408d1d92fd62170950a3714ade77d171eb Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 21 Aug 2026 12:18:46 -0700 Subject: [PATCH] Fix base copy destination buffer size, and cast to i8 only when necessary. --- src/assembly/base.ts | 6 +----- src/assembly/ge.ts | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/assembly/base.ts b/src/assembly/base.ts index 448f1c0..4508f59 100644 --- a/src/assembly/base.ts +++ b/src/assembly/base.ts @@ -1,12 +1,8 @@ //! SPDX-FileCopyrightText: 2013-2026 Frank Denis //! 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(_base) + start } diff --git a/src/assembly/ge.ts b/src/assembly/ge.ts index deab945..f1c6a7e 100644 --- a/src/assembly/ge.ts +++ b/src/assembly/ge.ts @@ -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(new StaticArray(1152)) // 4 bytes * 12 values * 3 fields * 8 groups +const ge_cmov8_precomp_buffer: usize = changetype(new StaticArray(288)) // 12 values * 3 fields * 8 groups const ge_cmov8_minust: ge_precomp = new ge_precomp() const ge_cmov8_precomp: StaticArray = StaticArray.fromArray([ 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(ge_cmov8_precomp[i].yplusx), ptr, 48) memory.copy(changetype(ge_cmov8_precomp[i].yminusx), ptr + 48, 48) memory.copy(changetype(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) -- 2.52.0