wasmer/lib/llvm-backend
bors[bot] 03a5b1fbf4
Merge #901
901: Set target triple and datalayout when creating the LLVM module. r=nlewycky a=nlewycky

We were giving LLVM a triple and datalayout only when producing native code from the LLVM IR. With this change, we tell LLVM as early as possible so that the entire optimization stack knows that it's safe to use target-specific constructs (including target intrinsics `@llvm.x86.sse2.ucomieq.sd`) as well as cost models (for autovectorization) and knowing the bitwidth of the registers so that we can know it's profitable to eliminate redundant extend/truncate casts.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-10-25 17:57:11 +00:00
..
2019-08-22 18:57:26 -07:00
2019-10-25 17:57:11 +00:00
2019-08-22 22:58:08 -07:00
2019-10-23 13:40:35 -07:00
2019-09-30 22:50:04 -07:00

Wasmer logo

Build Status License Join the Wasmer Community Number of downloads from crates.io Read our API documentation

Wasmer LLVM backend

Wasmer is a standalone JIT WebAssembly runtime, aiming to be fully compatible with Emscripten, Rust and Go. Learn more.

This crate represents the LLVM backend integration for Wasmer.

Usage

Usage in Wasmer Standalone

If you are using the wasmer CLI, you can specify the backend with:

wasmer run program.wasm --backend=llvm

Usage in Wasmer Embedded

If you are using Wasmer Embedded, you can specify the LLVM backend to the compile_with function:

use wasmer_llvm_backend::LLVMCompiler;

// ...
let module = wasmer_runtime_core::compile_with(&wasm_binary[..], &LLVMCompiler::new());