From: Chris Duncan Date: Thu, 1 Oct 2026 00:23:48 +0000 (-0700) Subject: Combine load and splat. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=1c0e94cd5ac0ed57801b65c628be57b129ba314e;p=nano25519.git Combine load and splat. --- diff --git a/src/assembly/ed25519/fe.ts b/src/assembly/ed25519/fe.ts index 17964f4..46dfba8 100644 --- a/src/assembly/ed25519/fe.ts +++ b/src/assembly/ed25519/fe.ts @@ -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(f_ptr, 0) - let fv: v128 = i32x4.splat(fi) + let fv: v128 = v128.load_splat(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(f_ptr, 4) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 8) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 12) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 16) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 20) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 24) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 28) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 32) - fv = i32x4.splat(fi) + fv = v128.load_splat(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(f_ptr, 36) - fv = i32x4.splat(fi) + fv = v128.load_splat(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))