我正在对 x86 内在函数的 Rust 包装器进行简单测试:莱布尼茨级数的 PI 近似值:
#[cfg(target_arch = "x86_64")]
use std::arch::x86_64::*;
fn main() {
let mut n: u64 = 0;
let pi4 = std::f64::consts::PI / 4.0;
unsafe {
let mut dens = _mm256_set_pd(1.0f64, -3.0f64, 5.0f64, -7.0f64);
let adder = _mm256_set_pd(8.0f64, -8.0f64, 8.0f64, -8.0f64);
let ones = _mm256_set1_pd(1.0f64);
let mut rsum = _mm256_set1_pd(0.0f64);
let mut quotients: __m256d;
loop {
quotients = _mm256_div_pd(ones, dens);
rsum = _mm256_add_pd(rsum, quotients);
dens = _mm256_add_pd(dens, adder);
n = n + 1;
let vlow = _mm256_extractf128_pd(rsum, …
Run Code Online (Sandbox Code Playgroud)