如何用"ffast-math"编译?

yon*_*ong 15 llvm rust fast-math llvm-codegen

我正在尝试对一些Rust代码进行基准测试,但我无法弄清楚如何设置"ffast-math"选项.

% rustc -C opt-level=3 -C llvm-args='-enable-unsafe-fp-math' unrolled.rs
rustc: Unknown command line argument '-enable-unsafe-fp-math'.  Try: 'rustc -help'
rustc: Did you mean '-enable-load-pre'?
Run Code Online (Sandbox Code Playgroud)

llvm-args='-ffast-math'并且llvm-args='-fast'也没有工作.我应该使用什么旗帜?

She*_*ter 6

Rust问题#21690讨论了添加不精确的浮点运算.与该问题相关联的是添加了内在函数,允许您在每个操作的基础上选择更宽松的规则.例如,fadd_fast:

pub unsafe extern "rust-intrinsic" fn fadd_fast<T>(a: T, b: T) -> T
Run Code Online (Sandbox Code Playgroud)

使用内在函数需要夜间编译器和不安全的代码:

#![feature(core_intrinsics)]

use std::intrinsics::fadd_fast;

fn main() {
    let result = unsafe { fadd_fast(42.0, 31.0) };
    println!("{}", result);
}
Run Code Online (Sandbox Code Playgroud)

归根结底,这是一个更好的设计不是一个命令行标志的全有或全无的解决方案.谁知道是否有一些浮点计算对于不使用快速数学至关重要,深埋在你的程序中?但是,在尝试与选择它的C程序进行比较时,这对您没有帮助!


llo*_*giq 4

您始终可以使用rustc --emit llvm-ir所需的设置并编译 LLVM IR。