constantine/tests
Mamy Ratsimbazafy d97bc9b61c
Assembly backend (#69)
* Proof-of-Concept Assembly code generator

* Tag inline per procedure so we can easily track the tradeoff on tower fields

* Implement Assembly for modular addition (but very curious off-by-one)

* Fix off-by one for moduli with non msb set

* Stash (super fast) alternative but still off by carry

* Fix GCC optimizing ASM away

* Save 1 register to allow compiling for BLS12-381 (in the GMP test)

* The compiler cannot find enough registers if the ASM file is not compiled with -O3

* Add modsub

* Add field negation

* Implement no-carry Assembly optimized field multiplication

* Expose UseX86ASM to the EC benchmark

* omit frame pointer to save registers instead of hardcoding -O3. Also ensure early clobber constraints for Clang

* Prepare for assembly fallback

* Implement fallback for CPU that don't support ADX and BMI2

* Add CPU runtime detection

* Update README closes #66

* Remove commented out code
2020-07-24 22:02:30 +02:00
..
support Github Action CI (without GMP) (#29) 2020-06-19 22:08:15 +02:00
t_bigints.nim Github Action CI (without GMP) (#29) 2020-06-19 22:08:15 +02:00
t_bigints_mod_vs_gmp.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_bigints_mul_high_words_vs_gmp.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_bigints_mul_vs_gmp.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_bigints_multimod.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_sage_bls12_381.nim Add test generator for BLS12-381 G2 and pass the tests 2020-06-18 22:00:31 +02:00
t_ec_sage_bn254.nim Add a test vector generator for BN254 on G2 and pass the tests 2020-06-18 01:40:13 +02:00
t_ec_template.nim [WIP] Skewed RNGs that trigger corner cases (#59) 2020-06-20 18:55:27 +02:00
t_ec_wstrass_prj_edge_cases.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_ec_wstrass_prj_g1_add_double.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g1_mul_distri.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g1_mul_sanity.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_ec_wstrass_prj_g1_mul_vs_ref.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_add_double_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_add_double_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_distri_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_distri_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_sanity_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_sanity_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_vs_ref_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_ec_wstrass_prj_g2_mul_vs_ref_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields.nim.cfg SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields_mulsquare.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_finite_fields_mulsquare.nim.cfg SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields_powinv.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_finite_fields_powinv.nim.cfg SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields_sqrt.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_finite_fields_sqrt.nim.cfg SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_finite_fields_vs_gmp.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
t_fp2.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp2_sqrt.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00
t_fp6_bls12_377.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp6_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp6_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp12_bls12_377.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp12_bls12_381.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp12_bn254_snarks.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_fp_tower_template.nim [WIP] Skewed RNGs that trigger corner cases (#59) 2020-06-20 18:55:27 +02:00
t_io_bigints.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_io_fields.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
t_io_fields.nim.cfg SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_precomputed.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_primitives.nim SHorter test names for github display 2020-06-15 23:15:01 +02:00
t_primitives_extended_precision.nim Fuzzing campaign fixes (#58) 2020-06-23 01:27:40 +02:00