Expand description
Dispatch-free inline variants for use inside #[multiversed] functions.
When building your own SIMD-accelerated functions with multiversed,
use these _inline variants to avoid nested dispatch overhead.
These functions are #[inline(always)] and contain no dispatch overhead.
§Example
ⓘ
use linear_srgb::default::inline::*;
use multiversed::multiversed;
use wide::f32x8;
#[multiversed] // Your function handles dispatch
pub fn process_pixels(data: &mut [f32]) {
for chunk in data.chunks_exact_mut(8) {
let v = f32x8::from([
chunk[0], chunk[1], chunk[2], chunk[3],
chunk[4], chunk[5], chunk[6], chunk[7],
]);
// Use inline variants - no dispatch, just raw SIMD
let linear = srgb_to_linear_x8(v);
let processed = linear * f32x8::splat(1.5);
let result = linear_to_srgb_x8(processed);
let arr: [f32; 8] = result.into();
chunk.copy_from_slice(&arr);
}
}Re-exports§
pub use crate::simd::gamma_to_linear_x8_inline as gamma_to_linear_x8;pub use crate::simd::linear_to_gamma_x8_inline as linear_to_gamma_x8;pub use crate::simd::linear_to_srgb_u8_x8_inline as linear_to_srgb_u8_x8;pub use crate::simd::linear_to_srgb_x8_inline as linear_to_srgb_x8;pub use crate::simd::srgb_to_linear_x8_inline as srgb_to_linear_x8;pub use crate::simd::gamma_to_linear_x8_slice_inline as gamma_to_linear_x8_slice;pub use crate::simd::linear_to_gamma_x8_slice_inline as linear_to_gamma_x8_slice;pub use crate::simd::linear_to_srgb_x8_slice_inline as linear_to_srgb_x8_slice;pub use crate::simd::srgb_to_linear_x8_slice_inline as srgb_to_linear_x8_slice;