Files
p256k1/field_generic.go
mleku 14dc85cdc3 Add BMI2/AVX2 field assembly and SIMD comparison benchmarks
- Port field operations assembler from libsecp256k1 (field_amd64.s,
    field_amd64_bmi2.s) with MULX/ADCX/ADOX instructions
  - Add AVX2 scalar and affine point operations in avx/ package
  - Implement CPU feature detection (cpufeatures.go) for AVX2/BMI2
  - Add libsecp256k1.so via purego for native C library comparison
  - Create comprehensive SIMD benchmark suite comparing btcec, P256K1
    pure Go, P256K1 ASM, and libsecp256k1
  - Add BENCHMARK_SIMD.md documenting performance across implementations
  - Remove BtcecSigner, consolidate on P256K1Signer as primary impl
  - Add field operation tests and benchmarks (field_asm_test.go,
    field_bench_test.go)
  - Update GLV endomorphism with wNAF scalar multiplication
  - Add scalar assembly (scalar_amd64.s) for optimized operations
  - Clean up dependencies and update benchmark reports
2025-11-29 08:11:13 +00:00

40 lines
1.2 KiB
Go

//go:build !amd64
package p256k1
// hasFieldAsm returns true if field assembly is available.
// On non-amd64 platforms, assembly is not available.
func hasFieldAsm() bool {
return false
}
// hasFieldAsmBMI2 returns true if BMI2+ADX optimized field assembly is available.
// On non-amd64 platforms, this is always false.
func hasFieldAsmBMI2() bool {
return false
}
// fieldMulAsm is a stub for non-amd64 platforms.
// It should never be called since hasFieldAsm() returns false.
func fieldMulAsm(r, a, b *FieldElement) {
panic("field assembly not available on this platform")
}
// fieldSqrAsm is a stub for non-amd64 platforms.
// It should never be called since hasFieldAsm() returns false.
func fieldSqrAsm(r, a *FieldElement) {
panic("field assembly not available on this platform")
}
// fieldMulAsmBMI2 is a stub for non-amd64 platforms.
// It should never be called since hasFieldAsmBMI2() returns false.
func fieldMulAsmBMI2(r, a, b *FieldElement) {
panic("field BMI2 assembly not available on this platform")
}
// fieldSqrAsmBMI2 is a stub for non-amd64 platforms.
// It should never be called since hasFieldAsmBMI2() returns false.
func fieldSqrAsmBMI2(r, a *FieldElement) {
panic("field BMI2 assembly not available on this platform")
}