Vendor Intrinsics

Sometimes you can’t avoid using vendor intrinsics. In those cases, it’s easy to convert between vendor vector types and portable SIMD vector types:

#![feature(portable_simd)]
fn main() {}
use std::arch::x86_64::{_mm_stream_ps, __m128};
use std::simd::f32x4;

unsafe fn non_temporal_store(addr: *mut f32, vector: f32x4) {
    let vendor: __m128 = vector.into(); // convert into the vendor type
    _mm_stream_ps(addr, vendor);
}