]> git.codecow.com Git - nano25519.git/commitdiff
Combine load and splat.
authorChris Duncan <chris@codecow.com>
Thu, 1 Oct 2026 00:23:48 +0000 (17:23 -0700)
committerChris Duncan <chris@codecow.com>
Thu, 1 Oct 2026 00:23:48 +0000 (17:23 -0700)
src/assembly/ed25519/fe.ts

index 17964f49127e2b4c97aae27558f52908b799bc86..46dfba8b0fe0b00274ced55149a511406b2a2893 100644 (file)
@@ -303,8 +303,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        const g89xx_19: v128 = i32x4.mul(g89xx, v19)
 
        // f[0]
-       let fi: i32 = load<i32>(f_ptr, 0)
-       let fv: v128 = i32x4.splat(fi)
+       let fv: v128 = v128.load_splat<i32>(f_ptr, 0 << 2)
 
        let h01: v128 = i64x2.extmul_low_i32x4_s(fv, g0123)
        let h23: v128 = i64x2.extmul_high_i32x4_s(fv, g0123)
@@ -313,8 +312,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        let h89: v128 = i64x2.extmul_low_i32x4_s(fv, g89xx)
 
        // f[1]
-       fi = load<i32>(f_ptr, 4)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 1 << 2)
        fv = i32x4.add(fv, v128.and(fv, odds))
 
        let h12: v128 = i64x2.extmul_low_i32x4_s(fv, g0123)
@@ -324,8 +322,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        let h90: v128 = i64x2.extmul_low_i32x4_s(fv, v128.bitselect(g89xx, g89xx_19, m))
 
        // f[2]
-       fi = load<i32>(f_ptr, 8)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 2 << 2)
 
        let t0: v128 = i64x2.extmul_low_i32x4_s(fv, g0123)
        let t1: v128 = i64x2.extmul_high_i32x4_s(fv, g0123)
@@ -340,8 +337,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h01 = i64x2.add(h01, t4)
 
        // f[3]
-       fi = load<i32>(f_ptr, 12)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 3 << 2)
        fv = i32x4.add(fv, v128.and(fv, odds))
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
@@ -357,8 +353,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h12 = i64x2.add(h12, t4)
 
        // f[4]
-       fi = load<i32>(f_ptr, 16)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 4 << 2)
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
        t1 = i64x2.extmul_high_i32x4_s(fv, g0123)
@@ -373,8 +368,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h23 = i64x2.add(h23, t4)
 
        // f[5]
-       fi = load<i32>(f_ptr, 20)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 5 << 2)
        fv = i32x4.add(fv, v128.and(fv, odds))
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
@@ -390,8 +384,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h34 = i64x2.add(h34, t4)
 
        // f[6]
-       fi = load<i32>(f_ptr, 24)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 6 << 2)
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
        t1 = i64x2.extmul_high_i32x4_s(fv, g0123)
@@ -406,8 +399,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h45 = i64x2.add(h45, t4)
 
        // f[7]
-       fi = load<i32>(f_ptr, 28)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 7 << 2)
        fv = i32x4.add(fv, v128.and(fv, odds))
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
@@ -423,8 +415,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h56 = i64x2.add(h56, t4)
 
        // f[8]
-       fi = load<i32>(f_ptr, 32)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 8 << 2)
 
        t0 = i64x2.extmul_low_i32x4_s(fv, g0123)
        t1 = i64x2.extmul_high_i32x4_s(fv, g0123_19)
@@ -439,8 +430,7 @@ export function fe_mul (h: FieldElement, f: FieldElement, g: FieldElement): void
        h67 = i64x2.add(h67, t4)
 
        // f[9]
-       fi = load<i32>(f_ptr, 36)
-       fv = i32x4.splat(fi)
+       fv = v128.load_splat<i32>(f_ptr, 9 << 2)
        fv = i32x4.add(fv, v128.and(fv, odds))
 
        t0 = i64x2.extmul_low_i32x4_s(fv, v128.bitselect(g0123, g0123_19, m))