pub trait Swizzle<const N: usize> {
const INDEX: [usize; N];
// Provided methods
fn swizzle<T, const M: usize>(vector: Simd<T, M>) -> Simd<T, N>
where T: SimdElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount { ... }
fn concat_swizzle<T, const M: usize>(
first: Simd<T, M>,
second: Simd<T, M>,
) -> Simd<T, N>
where T: SimdElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount { ... }
fn swizzle_mask<T, const M: usize>(mask: Mask<T, M>) -> Mask<T, N>
where T: MaskElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount { ... }
fn concat_swizzle_mask<T, const M: usize>(
first: Mask<T, M>,
second: Mask<T, M>,
) -> Mask<T, N>
where T: MaskElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount { ... }
}
portable_simd #86656)
Creates a vector from the elements of another vector.
const INDEX: [usize; N]
portable_simd #86656)
Map from the elements of the input vector to the output vector.
fn swizzle<T, const M: usize>(vector: Simd<T, M>) -> Simd<T, N>where
T: SimdElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount,portable_simd #86656)
Creates a new vector from the elements of vector.
Lane i of the output is vector[Self::INDEX[i]].
fn concat_swizzle<T, const M: usize>(
first: Simd<T, M>,
second: Simd<T, M>,
) -> Simd<T, N>where
T: SimdElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount,portable_simd #86656)
Creates a new vector from the elements of first and second.
Lane i of the output is concat[Self::INDEX[i]], where concat is the concatenation of first and second.
fn swizzle_mask<T, const M: usize>(mask: Mask<T, M>) -> Mask<T, N>where
T: MaskElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount,portable_simd #86656)
Creates a new mask from the elements of mask.
Element i of the output is mask[Self::INDEX[i]].
fn concat_swizzle_mask<T, const M: usize>(
first: Mask<T, M>,
second: Mask<T, M>,
) -> Mask<T, N>where
T: MaskElement,
LaneCount<N>: SupportedLaneCount,
LaneCount<M>: SupportedLaneCount,portable_simd #86656)
Creates a new mask from the elements of first and second.
Element i of the output is concat[Self::INDEX[i]], where concat is the concatenation of first and second.
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/simd/trait.Swizzle.html