From: Chris Duncan Date: Fri, 21 Aug 2026 20:14:43 +0000 (-0700) Subject: Eliminate intermediate base copy. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=e8dbddaae2a9d27a658e15a4d23d74ca75fd25cc;p=nano25519.git Eliminate intermediate base copy. --- diff --git a/src/assembly/ge.ts b/src/assembly/ge.ts index 040ddea..32dd7c5 100644 --- a/src/assembly/ge.ts +++ b/src/assembly/ge.ts @@ -31,7 +31,6 @@ 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(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(), @@ -49,11 +48,10 @@ function ge_cmov8_base (t: ge_precomp, offset: i32, b: i8): void { const minust = ge_cmov8_minust const bnegative: u8 = negative(b) const babs: u8 = b - (((-bnegative) & b) * (i8(1) << 1)) - memory.copy(ge_cmov8_precomp_buffer, base + offset, 1152) ge_precomp_0(t) for (let i = 0; i < 8; i++) { - const ptr = ge_cmov8_precomp_buffer + (i * 144) // 4 bytes * 12 values * 3 fields + const ptr = base + offset + (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)