constantine/benchmarks
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
..
platforms benchmarking skips cycle counting for ARM 2020-04-15 21:24:18 +02:00
bench_ec_g1.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_ec_g2.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_elliptic_template.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_fields_template.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_fp.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_fp2.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_fp6.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
bench_fp12.nim Assembly backend (#69) 2020-07-24 22:02:30 +02:00
platforms.nim Github Action CI (without GMP) (#29) 2020-06-19 22:08:15 +02:00