wasm-micro-runtime/ATTRIBUTIONS.md
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

4.2 KiB

WebAssembly Micro Runtime Attributions

WAMR project reused some components from other open source project:

  • cJson: used in the host_tool for remotely managing wasm applications
  • contiki-ng: for the coap protocol implementation
  • freebsd libm: used in core/shared/platform/alios/bh_math.c
  • LVGL: for the gui samples and wrapped the wasm graphic layer
  • llvm: for the AOT/JIT compilation
  • wasm-c-api: to implement the C-APIs of wasm. using headers and sameples
  • wasmtime: for the wasi libc implementation
  • zephyr: for several platform specific examples
  • WebAssembly debugging patch for LLDB: for extending the ability of LLDB to support wasm debugging
  • libuv: for the WASI Libc with uvwasi implementation
  • uvwasi: for the WASI Libc with uvwasi implementation
  • asmjit: for the Fast JIT x86-64 codegen implementation
  • zydis: for the Fast JIT x86-64 codegen implementation
  • NuttX ELF headers: used in core/iwasm/aot/debug/elf_parser.c
  • Dhrystone: for the test benchmakr dhrystone

The WAMR fast interpreter is a clean room development. We would acknowledge the inspirations by WASM3 open source project for the approach of pre-calculated oprand stack location.

third party components version number latest release vendor pages CVE details
cjson 1.7.10 1.7.14 https://github.com/DaveGamble/cJSON https://www.cvedetails.com/vendor/19164/Cjson-Project.html
contiki-ng (er-coap) unspecified 3.0 https://github.com/contiki-os/contiki https://www.cvedetails.com/vendor/16528/Contiki-os.html
freebsd libm unspecified 13.0 https://www.freebsd.org/ https://www.cvedetails.com/vendor/6/Freebsd.html
LVGL 6.0.1 7.11.0 https://lvgl.io/
llvm 11.0.1 12.0.0 https://llvm.org https://www.cvedetails.com/vendor/13260/Llvm.html
wasm-c-api ac9b509f4df86e40e56e9b01f3f49afab0100037 c9d31284651b975f05ac27cee0bab1377560b87e https://github.com/WebAssembly/wasm-c-api
wasmtime unspecified v0.26.0 https://github.com/bytecodealliance/wasmtime
zephyr unspecified v2.5.0 https://www.zephyrproject.org/ https://www.cvedetails.com/vendor/19255/Zephyrproject.html
WebAssembly debugging patch for LLDB unspecified unspecified https://reviews.llvm.org/D78801
libuv v1.42.0 v1.44.1 https://github.com/libuv/libuv https://www.cvedetails.com/vendor/15402/Libuv-Project.html
uvwasi unspecified v0.0.12 https://github.com/nodejs/uvwasi
asmjit unspecified unspecified https://github.com/asmjit/asmjit
zydis unspecified e14a07895136182a5b53e181eec3b1c6e0b434de https://github.com/zyantific/zydis
NuttX ELF headers 72313301e23f9c2de969fb64b9a0f67bb4c284df 10.3.0 https://github.com/apache/incubator-nuttx
Dhrystone 2.1 2.1 https://fossies.org/linux/privat/old/

Licenses

cJson

LICENSE

contiki-ng

LICENSE

freebsd libm

COPYRIGHT

LVGL

LICENSE

LICENSE

llvm

LICENSE

wasm-c-api

LICENSE

wasmtime

LICENSE

LICENSE

LICENSE

zephyr

LICENSE

wac

LICENSE

libuv

LICENSE

uvwasi

LICENSE

asmjit

LICENSE

zydis

LICENSE

NuttX ELF headers

LICENSE

NOTICE

Dhrystone

LICENSE