nx_p256_fieldmul_mulx.nx
buildroot/runtime/nx_p256_fieldmul_mulx.nx
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
imports: nx_p256_field_mul.nx
imported by: nx_p256_fieldmul_mulx_bench.nxnx_p256_fieldmul_mulx_difftest.nx
structs
| none |
consts
| none |
functions
| 12 | func fmx_pack64(dst64: *i64, src32: *i64) -> i64 |
| 18 | func fmx_split32(c16: *i64, prod64: *i64) -> i64 |
| 25 | func p256_field_mul_mulx(out_8: *i64, a: *i64, b: *i64) -> i64 |
| 39 | func p256_field_mul_mulx_s(out_8: *i64, a: *i64, b: *i64, a64: *i64, b64: *i64, prod: *i64, c16: *i64) -> i64 |