#intrinsics #llvm #simd

nightly llvmint

绑定到几乎所有平台的 (几乎) 所有 LLVM 内置函数

3 个版本

使用旧的 Rust 2015

0.0.3 2017年4月3日
0.0.2 2015年1月20日
0.0.1 2015年1月19日

#18 in #intrinsics


2 个crate中使用

MIT/Apache

2.5MB
17K SLoC

LLVMint

直接 Rust 绑定到(基本上)所有 LLVM 内置函数。此库对您在不受支持的平台上使用内置函数的保护很少,并且通常不执行任何错误检查。

此库中的绑定是从 LLVM 源代码自动生成的,因此使用它导致的 LLVM 崩溃可能是由于误用或不充分的 target-cpu/target-feature 指令,而不是库本身(尽管当然也可能存在库本身的错误)。

这是高度实验性的,目前仅固定到我使用的 LLVM 的任何版本。如果 rustc 开始坚持使用 LLVM 的发布版本,并且当我更满意实验时,我将更认真地研究更好的版本控制。

重新生成

重新创建内置函数表 allintrinsics.td

# directory containing a rust-lang/rust checkout
RUST=~/rust
cat ${RUST}/src/llvm/include/llvm/IR/Intrinsics*.td > allintrinsics.td

重新创建库文件

cd generator
cargo build --release
./target/release/generator < ../allintrinsics.td > ../src/lib.rs

为什么不使用构建脚本?部分原因是我还没有写一个,部分原因是我不想要求用户访问从 LLVM 获取的必要信息,因此将输出检查到 VC 中很容易。

依赖关系