]> git.codecow.com Git - nano25519.git/commitdiff
Eliminate intermediate base copy.
authorChris Duncan <chris@codecow.com>
Fri, 21 Aug 2026 20:14:43 +0000 (13:14 -0700)
committerChris Duncan <chris@codecow.com>
Fri, 21 Aug 2026 20:14:43 +0000 (13:14 -0700)
src/assembly/ge.ts

index 040ddea38521b80505444989b0b352d0ff8213cd..32dd7c5da0dc7ec04b18eed41672abf0a411959b 100644 (file)
@@ -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<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(),
@@ -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<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)