mirror of
https://github.com/fluencelabs/wasmer
synced 2025-03-27 05:01:02 +00:00
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>
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());