code wiki / (root) / nx_p256_fieldmul_mulx.nx

nx_p256_fieldmul_mulx.nx

buildroot/runtime/nx_p256_fieldmul_mulx.nx

2212 B46 linesdepth 5pulls 6 transitivereach 2 importersview sourcekind librarytopic p256
docsdependenciesstructsconstsfunctions

about

nx_p256_fieldmul_mulx.nx -- P-256 field multiply using the FUSED __mul256_wide intrinsic (ADX/BMI2 mulx+adcx+adox) for the 256x256->512 product, then the EXISTING NIST Solinas reducer. This is the drop-in fast path for p256_field_mul: identical reduction, only the multiply changes. Kept in a SEPARATE file (imports nx_p256_field_mul.nx for _p256_solinas_reduce) so the live crypto source stays clean -- a file that USES __mul256_wide only builds with a compiler that has the intrinsic (the candidate), never breaking the live-compiler build of the P-256 stack. Correctness: nx_p256_fieldmul_mulx_difftest proves p256_field_mul_mulx == p256_field_mul bit-exact. license_tier: ORIGINAL

dependencies 1 imports · 2 importers

nx_p256_field_mul.nx nx_p256_fieldmul_mulx.nx nx_p256_fieldmul_mulx_bench.nx nx_p256_fieldmul_mulx_difftest.nx

imports: nx_p256_field_mul.nx

imported by: nx_p256_fieldmul_mulx_bench.nxnx_p256_fieldmul_mulx_difftest.nx

structs

none

consts

none

functions

12func fmx_pack64(dst64: *i64, src32: *i64) -> i64
18func fmx_split32(c16: *i64, prod64: *i64) -> i64
25func p256_field_mul_mulx(out_8: *i64, a: *i64, b: *i64) -> i64
39func p256_field_mul_mulx_s(out_8: *i64, a: *i64, b: *i64, a64: *i64, b64: *i64, prod: *i64, c16: *i64) -> i64