Here is the full code setup for compiling a performance comparison code example from CGAL.
Here is a collection of pointers:
- two benchmark code calls
- CGAL patches (C++ macro overrides for CGAL)
- V8 (currently forked from 326f5f8c, changes till 6d0f69f2 (instruction clones + AVX512 calls))
- chromium patches (there are no patches on chromium other than using the patched V8 version)
- build instructions: (Everything is supposed to be self-contained. So having nix installed (e.g. Single-user installation) and calling the scripts in the repository (
steps_3_build.sh, steps_4_host_bench_test.sh, ...) is supposed enable you to build everything.
- for running the tests there is this fork with the RoundingVariants extension implemented
Regarding toolchain changes:
- I used the keyword
__attribute__((noinline, used, visibility("default"))) for instruction stubs
- Then I used my fork of wabt to do an
.wat roundtrip with patch_wasm_rounding.py
- wasm2wat
- patching callsites of the noinline variants with native instructions
- wat2wasm
Here is the full code setup for compiling a performance comparison code example from CGAL.
Here is a collection of pointers:
steps_3_build.sh,steps_4_host_bench_test.sh, ...) is supposed enable you to build everything.Regarding toolchain changes:
__attribute__((noinline, used, visibility("default")))for instruction stubs.watroundtrip withpatch_wasm_rounding.py