wasm-micro-runtime/tests/benchmarks/libsodium
Wenyong Huang 76be848ec3
Implement the segue optimization for LLVM AOT/JIT (#2230)
Segue is an optimization technology which uses x86 segment register to store
the WebAssembly linear memory base address, so as to remove most of the cost
of SFI (Software-based Fault Isolation) base addition and free up a general
purpose register, by this way it may:
- Improve the performance of JIT/AOT
- Reduce the footprint of JIT/AOT, the JIT/AOT code generated is smaller
- Reduce the compilation time of JIT/AOT

This PR uses the x86-64 GS segment register to apply the optimization, currently
it supports linux and linux-sgx platforms on x86-64 target. By default it is disabled,
developer can use the option below to enable it for wamrc and iwasm(with LLVM
JIT enabled):
```bash
wamrc --enable-segue=[<flags>] -o output_file wasm_file
iwasm --enable-segue=[<flags>] wasm_file [args...]
```
`flags` can be:
    i32.load, i64.load, f32.load, f64.load, v128.load,
    i32.store, i64.store, f32.store, f64.store, v128.store
Use comma to separate them, e.g. `--enable-segue=i32.load,i64.store`,
and `--enable-segue` means all flags are added.

Acknowledgement:
Many thanks to Intel Labs, UC San Diego and UT Austin teams for introducing this
technology and the great support and guidance!

Signed-off-by: Wenyong Huang <wenyong.huang@intel.com>
Co-authored-by: Vahldiek-oberwagner, Anjo Lucas <anjo.lucas.vahldiek-oberwagner@intel.com>
2023-05-26 10:13:33 +08:00
..
build.sh Implement the segue optimization for LLVM AOT/JIT (#2230) 2023-05-26 10:13:33 +08:00
README.md Add libsodium benchmark (#2025) 2023-03-15 08:24:08 +08:00
run_aot.sh Implement the segue optimization for LLVM AOT/JIT (#2230) 2023-05-26 10:13:33 +08:00

Introduction

libsodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.

Source: https://github.com/jedisct1/libsodium

Building

Please build iwasm and wamrc, refer to:

And install zig toolchain, refer to Install Zig from a Package Manager for how to install it.

And then run ./build.sh to build the source code, the libsodium source code will be cloned, and test benchmarks of native version, wasm files and AOT files will be generated under libsodium/zig-out/bin.

Running

Run ./run_aot.sh to test the benchmark, the native mode and iwasm aot mode will be tested respectively.

Others

Refer to Performance of WebAssembly runtimes in 2023 for more about the performance comparison of wasm runtimes on running the libsodium benchmarks.