Struct core::simd::Simd [−][src]
#[repr(simd)]pub struct Simd<T, const LANES: usize>(_)
where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount;
Expand description
T
类型的 LANES
元素的 SIMD vector。
Implementations
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 包装加法。返回 vector 的 lane 总和,带包装加法。
Horizontal 包装乘法。返回 vector 的 lane 的乘积,带包装乘法。
Horizontal 最大值。返回 vector 中的最大 lane。
Horizontal 最小值。返回 vector 中的最小 lane。
Horizontal 加法。返回 vector 的 lane 的总和。
Horizontal 乘法。返回 vector 的 lanes 的乘积。
Horizontal 最大值。返回 vector 中的最大 lane。
返回基于相等的值,因此包含 0.
和 -0.
的 vector 可以返回任意一个值。
这个函数不会返回 NaN
,除非所有的 lane 都是 NaN
。
Horizontal 最小值。返回 vector 中的最小 lane。
返回基于相等的值,因此包含 0.
和 -0.
的 vector 可以返回任意一个值。
这个函数不会返回 NaN
,除非所有的 lane 都是 NaN
。
Horizontal 加法。返回 vector 的 lane 的总和。
Horizontal 乘法。返回 vector 的 lanes 的乘积。
Horizontal 最大值。返回 vector 中的最大 lane。
返回基于相等的值,因此包含 0.
和 -0.
的 vector 可以返回任意一个值。
这个函数不会返回 NaN
,除非所有的 lane 都是 NaN
。
Horizontal 最小值。返回 vector 中的最小 lane。
返回基于相等的值,因此包含 0.
和 -0.
的 vector 可以返回任意一个值。
这个函数不会返回 NaN
,除非所有的 lane 都是 NaN
。
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitAnd<Self, Output = Self>,
T: SimdElement + BitAnd<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitAnd<Self, Output = Self>,
T: SimdElement + BitAnd<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
Horizontal 按位与。 返回跨 vector lane 的累积按位与。
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitOr<Self, Output = Self>,
T: SimdElement + BitOr<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitOr<Self, Output = Self>,
T: SimdElement + BitOr<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
Horizontal 按位或。 返回跨 vector lane 的累积按位或。
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitXor<Self, Output = Self>,
T: SimdElement + BitXor<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
Self: BitXor<Self, Output = Self>,
T: SimdElement + BitXor<T, Output = T>,
LaneCount<LANES>: SupportedLaneCount,
Horizontal 按位异或。 返回跨 vector lane 的累积按位异或。
impl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
反转 vector 中 lanes 的顺序。
旋转 vector,使切片的第一个 OFFSET
元素移动到末尾,而最后一个 LANES - OFFSET
元素移动到前面。
调用 rotate_lanes_left
后,先前在 OFFSET
lane 中的元素将成为该 lane 中的第一个元素。
旋转 vector,使 vector 的第一个 LANES - OFFSET
元素移动到末尾,而最后一个 OFFSET
元素移动到前面。
调用 rotate_lanes_right
后,之前位于索引 LANES - OFFSET
的元素将成为切片中的第一个元素。
交错两个 vectors。
产生两个 vectors,其中 lanes 交替取自 self
和 other
。
第一个结果包含来自 self
和 other
的第一个 LANES / 2
lanes,交替地从 self
的第一个 lane 开始。
第二个结果包含来自 self
和 other
的最后一个 LANES / 2
lanes,交替,从 self
开始的 lane LANES / 2
开始。
#![feature(portable_simd)]
let a = Simd::from_array([0, 1, 2, 3]);
let b = Simd::from_array([4, 5, 6, 7]);
let (x, y) = a.interleave(b);
assert_eq!(x.to_array(), [0, 4, 1, 5]);
assert_eq!(y.to_array(), [2, 6, 3, 7]);
Run去交错两个 vectors。
第一个结果取 self
的每隔一个 lane,然后是 other
,从第一个 lane 开始。
第二个结果取 self
的每隔一个 lane,然后是 other
,从第二个 lane 开始。
#![feature(portable_simd)]
let a = Simd::from_array([0, 4, 1, 5]);
let b = Simd::from_array([2, 6, 3, 7]);
let (x, y) = a.deinterleave(b);
assert_eq!(x.to_array(), [0, 1, 2, 3]);
assert_eq!(y.to_array(), [4, 5, 6, 7]);
Runimpl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement + PartialEq,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement + PartialEq,
LaneCount<LANES>: SupportedLaneCount,
测试每个 lane 是否等于 other
中对应的 lane。
impl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement + PartialOrd,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Simd<T, LANES> where
T: SimdElement + PartialOrd,
LaneCount<LANES>: SupportedLaneCount,
测试每个 lane 是否小于 other
中对应的 lane。
测试每个 lane 是否大于 other
中对应的 lane。
测试每个 lane 是否小于或等于 other
中对应的 lane。
从整数 vector 创建一个浮点 vector。 舍入不能完全表示的值。
从整数 vector 创建一个浮点 vector。 舍入不能完全表示的值。
原始转换为无符号整数 vector 类型,其大小和数量与 lanes 相同。
来自具有相同大小和数量的 lanes 的无符号整数 vector 类型的原始变换。
生成一个 vector,其中每个 lane 都具有 self
中等效索引 lane 的绝对值。
获取每个 lane 的倒数 (inverse),1/x
。
将每个 lane 从弧度转换为度数。
将每个 lane 从度数转换为弧度。
如果每个 lane 具有正号,则为每个 lane 返回 true,包括 +0.0
、具有正符号位的 NaN
和正无穷大。
如果每个 lane 具有负号,则为每个 lane 返回 true,包括 -0.0
、具有负符号位的 NaN
和负无穷大。
如果每个 lane 的值为 NaN
,则为每个 lane 返回 true。
如果每个 lane 的值是正无穷大或负无穷大,则为每个 lane 返回 true。
如果每个 lane 的值既不是无穷大也不是 NaN
,则为每个 lane 返回 true。
如果每个 lane 的值为 subnormal,则为每个 lane 返回 true。
如果每个 lane 的值既不是零、无穷大、subnormal 或 NaN
,则为每个 lane 返回 true。
用代表其符号的数字替换每个 lane。
1.0
如果数字是正数,+0.0
或INFINITY
-1.0
如果数字是负数,-0.0
或NEG_INFINITY
NAN
如果数字是NAN
以 self
的大小和 sign
的符号返回每个 lane。
如果任何 lane 是 NAN
,则返回带有 sign
符号的 NAN
。
返回每个 lane 的最小值。
如果其中一个值为 NAN
,则返回另一个值。
返回每个 lane 的最大值。
如果其中一个值为 NAN
,则返回另一个值。
原始转换为无符号整数 vector 类型,其大小和数量与 lanes 相同。
来自具有相同大小和数量的 lanes 的无符号整数 vector 类型的原始变换。
生成一个 vector,其中每个 lane 都具有 self
中等效索引 lane 的绝对值。
获取每个 lane 的倒数 (inverse),1/x
。
将每个 lane 从弧度转换为度数。
将每个 lane 从度数转换为弧度。
如果每个 lane 具有正号,则为每个 lane 返回 true,包括 +0.0
、具有正符号位的 NaN
和正无穷大。
如果每个 lane 具有负号,则为每个 lane 返回 true,包括 -0.0
、具有负符号位的 NaN
和负无穷大。
如果每个 lane 的值为 NaN
,则为每个 lane 返回 true。
如果每个 lane 的值是正无穷大或负无穷大,则为每个 lane 返回 true。
如果每个 lane 的值既不是无穷大也不是 NaN
,则为每个 lane 返回 true。
如果每个 lane 的值为 subnormal,则为每个 lane 返回 true。
如果每个 lane 的值既不是零、无穷大、subnormal 或 NaN
,则为每个 lane 返回 true。
用代表其符号的数字替换每个 lane。
1.0
如果数字是正数,+0.0
或INFINITY
-1.0
如果数字是负数,-0.0
或NEG_INFINITY
NAN
如果数字是NAN
以 self
的大小和 sign
的符号返回每个 lane。
如果任何 lane 是 NAN
,则返回带有 sign
符号的 NAN
。
返回每个 lane 的最小值。
如果其中一个值为 NAN
,则返回另一个值。
返回每个 lane 的最大值。
如果其中一个值为 NAN
,则返回另一个值。
对于每个正 lane 返回真,如果为零或负则返回假。
对于每个负 lane 返回 true,如果为零或正则返回 false。
对于每个正 lane 返回真,如果为零或负则返回假。
对于每个负 lane 返回 true,如果为零或正则返回 false。
对于每个正 lane 返回真,如果为零或负则返回假。
对于每个负 lane 返回 true,如果为零或正则返回 false。
对于每个正 lane 返回真,如果为零或负则返回假。
对于每个负 lane 返回 true,如果为零或正则返回 false。
对于每个正 lane 返回真,如果为零或负则返回假。
对于每个负 lane 返回 true,如果为零或正则返回 false。
impl<T, const LANES: usize> Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
此 vector 中 lanes 的数量。
获取此 vector 中 lanes 的数量。
通过将所有 lane 设置为给定值来构建 SIMD vector。
返回包含整个 SIMD vector 的数组引用。
返回一个包含整个 SIMD vector 的可变数组引用。
将数组转换为 SIMD vector。
将 SIMD vector 转换为数组。
将切片转换为包含 slice[..LANES]
的 SIMD vector
Panics
如果切片的 len
小于 vector 的 Simd::LANES
,则 from_slice
会出现 panic。
从 slice
中可能不连续的索引读取以构建 SIMD vector。
如果索引越界,则改为从 or
vector 中选择 lane。
Examples
let vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 5]);
let alt = Simd::from_array([-5, -4, -3, -2]);
let result = Simd::gather_or(&vec, idxs, alt); // 注意越界的 lane。
assert_eq!(result, Simd::from_array([-5, 13, 10, 15]));
Runpub fn gather_select(
slice: &[T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>,
or: Self
) -> Self
pub fn gather_select(
slice: &[T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>,
or: Self
) -> Self
从 slice
中可能不连续的索引读取以构建 SIMD vector。
掩码 enable
所有 true
lane 并禁用所有 false
lane。
如果索引被禁用或越界,则从 or
vector 中选择 lane。
Examples
let vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 5]);
let alt = Simd::from_array([-5, -4, -3, -2]);
let enable = Mask::from_array([true, true, true, false]); // 注意最后一个 lane 的掩码。
let result = Simd::gather_select(&vec, enable, idxs, alt); // 注意越界的 lane。
assert_eq!(result, Simd::from_array([-5, 13, 10, -2]));
Runpub unsafe fn gather_select_unchecked(
slice: &[T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>,
or: Self
) -> Self
pub unsafe fn gather_select_unchecked(
slice: &[T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>,
or: Self
) -> Self
从 slice
中可能不连续的索引读取以构建 SIMD vector。
掩码 enable
所有 true
lane 并禁用所有 false
lane。
如果禁用某个索引,则从 or
vector 中选择 lane。
Safety
使用 enable
d 越界索引调用这个函数是 未定义的行为,即使结果值没有被使用。
Examples
let vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 5]);
let alt = Simd::from_array([-5, -4, -3, -2]);
let enable = Mask::from_array([true, true, true, false]); // 注意最后的掩码 lane。
// 如果用这个掩码来收集,这是不合理的。让我们解决这个问题。
let enable = enable & idxs.lanes_lt(Simd::splat(vec.len()));
// 我们已经屏蔽了 OOB lane,所以现在可以安全收集了。
let result = unsafe { Simd::gather_select_unchecked(&vec, enable, idxs, alt) };
assert_eq!(result, Simd::from_array([-5, 13, 10, -2]));
Run将 SIMD vector 中的值写入 slice
中可能不连续的索引。
如果分散的 vector 中的两个 lanes 将写入相同的索引,则只能保证实际写入最后一个 lane。
Examples
let mut vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 0]);
let vals = Simd::from_array([-27, 82, -41, 124]);
vals.scatter(&mut vec, idxs); // 索引 0 接收两次写入。
assert_eq!(vec, vec![124, 11, 12, 82, 14, 15, 16, 17, 18]);
Run将 SIMD vector 中的值写入 slice
中的多个可能不连续的索引。
掩码 enable
所有 true
lane 并禁用所有 false
lane。
如果启用的索引越界,则不会写入 lane。
如果分散的 vector 中的两个启用的 lanes 将写入同一个索引,则只能保证实际写入最后一个 lane。
Examples
let mut vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 0]);
let vals = Simd::from_array([-27, 82, -41, 124]);
let enable = Mask::from_array([true, true, true, false]); // 注意最后一个 lane 的掩码。
vals.scatter_select(&mut vec, enable, idxs); // 索引 0 的第二次写入被屏蔽,因此被省略。
assert_eq!(vec, vec![-41, 11, 12, 82, 14, 15, 16, 17, 18]);
Runpub unsafe fn scatter_select_unchecked(
self,
slice: &mut [T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>
)
pub unsafe fn scatter_select_unchecked(
self,
slice: &mut [T],
enable: Mask<isize, LANES>,
idxs: Simd<usize, LANES>
)
将 SIMD vector 中的值写入 slice
中的多个可能不连续的索引。
掩码 enable
所有 true
lane 并禁用所有 false
lane。
如果分散的 vector 中的两个启用的 lanes 将写入同一个索引,则只能保证实际写入最后一个 lane。
Safety
使用启用的越界索引调用此函数是 [undefined 行为],并可能导致内存损坏。
Examples
let mut vec: Vec<i32> = vec![10, 11, 12, 13, 14, 15, 16, 17, 18];
let idxs = Simd::from_array([9, 3, 0, 0]);
let vals = Simd::from_array([-27, 82, -41, 124]);
let enable = Mask::from_array([true, true, true, false]); // 注意最后一个 lane 的掩码。
// 如果用这个掩码来分散,这是不合理的。让我们解决这个问题。
let enable = enable & idxs.lanes_lt(Simd::splat(vec.len()));
// 我们已经屏蔽了 OOB lane,所以现在可以安全地分散了。
unsafe { vals.scatter_select_unchecked(&mut vec, enable, idxs); }
// 索引 0 的第二次写入被屏蔽,因此被省略。
assert_eq!(vec, vec![-41, 11, 12, 82, 14, 15, 16, 17, 18]);
RunTrait Implementations
impl<T, U, const LANES: usize> AddAssign<U> for Simd<T, LANES> where
Self: Add<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> AddAssign<U> for Simd<T, LANES> where
Self: Add<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 +=
操作。 Read more
impl<T, const LANES: usize> AsMut<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsMut<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsMut<[T]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsMut<[T]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsRef<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsRef<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsRef<[T]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> AsRef<[T]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> Binary for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Binary,
impl<T, const LANES: usize> Binary for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Binary,
impl<T, U, const LANES: usize> BitAndAssign<U> for Simd<T, LANES> where
Self: BitAnd<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> BitAndAssign<U> for Simd<T, LANES> where
Self: BitAnd<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 &=
操作。 Read more
impl<T, U, const LANES: usize> BitOrAssign<U> for Simd<T, LANES> where
Self: BitOr<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> BitOrAssign<U> for Simd<T, LANES> where
Self: BitOr<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 |=
操作。 Read more
impl<T, U, const LANES: usize> BitXorAssign<U> for Simd<T, LANES> where
Self: BitXor<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> BitXorAssign<U> for Simd<T, LANES> where
Self: BitXor<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 ^=
操作。 Read more
impl<T, const LANES: usize> Clone for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Clone for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Debug for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Debug,
impl<T, const LANES: usize> Debug for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Debug,
impl<T, const LANES: usize> Default for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Default,
impl<T, const LANES: usize> Default for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Default,
impl<T, U, const LANES: usize> DivAssign<U> for Simd<T, LANES> where
Self: Div<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> DivAssign<U> for Simd<T, LANES> where
Self: Div<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 /=
操作。 Read more
impl<T, const LANES: usize> From<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> From<[T; LANES]> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> From<Simd<T, LANES>> for [T; LANES] where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> From<Simd<T, LANES>> for [T; LANES] where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement,
impl<T, const LANES: usize> Hash for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Hash,
impl<T, const LANES: usize> Hash for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Hash,
impl<I, T, const LANES: usize> Index<I> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
I: SliceIndex<[T]>,
impl<I, T, const LANES: usize> Index<I> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
I: SliceIndex<[T]>,
impl<I, T, const LANES: usize> IndexMut<I> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
I: SliceIndex<[T]>,
impl<I, T, const LANES: usize> IndexMut<I> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
I: SliceIndex<[T]>,
impl<T, const LANES: usize> LowerExp for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + LowerExp,
impl<T, const LANES: usize> LowerExp for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + LowerExp,
impl<T, const LANES: usize> LowerHex for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + LowerHex,
impl<T, const LANES: usize> LowerHex for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + LowerHex,
impl<T, U, const LANES: usize> MulAssign<U> for Simd<T, LANES> where
Self: Mul<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> MulAssign<U> for Simd<T, LANES> where
Self: Mul<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 *=
操作。 Read more
impl<const LANES: usize> Neg for Simd<f32, LANES> where
f32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<f32, LANES> where
f32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<f64, LANES> where
f64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<f64, LANES> where
f64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i8, LANES> where
i8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i8, LANES> where
i8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i16, LANES> where
i16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i16, LANES> where
i16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i32, LANES> where
i32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i32, LANES> where
i32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i64, LANES> where
i64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<i64, LANES> where
i64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<isize, LANES> where
isize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Neg for Simd<isize, LANES> where
isize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i8, LANES> where
i8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i8, LANES> where
i8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i16, LANES> where
i16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i16, LANES> where
i16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i32, LANES> where
i32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i32, LANES> where
i32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i64, LANES> where
i64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<i64, LANES> where
i64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<isize, LANES> where
isize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<isize, LANES> where
isize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u8, LANES> where
u8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u8, LANES> where
u8: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u16, LANES> where
u16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u16, LANES> where
u16: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u32, LANES> where
u32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u32, LANES> where
u32: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u64, LANES> where
u64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<u64, LANES> where
u64: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<usize, LANES> where
usize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> Not for Simd<usize, LANES> where
usize: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> Octal for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Octal,
impl<T, const LANES: usize> Octal for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Octal,
impl<T, const LANES: usize> Ord for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Ord,
impl<T, const LANES: usize> Ord for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + Ord,
impl<T, const LANES: usize> PartialEq<Simd<T, LANES>> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + PartialEq,
impl<T, const LANES: usize> PartialEq<Simd<T, LANES>> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + PartialEq,
impl<T, const LANES: usize> PartialOrd<Simd<T, LANES>> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + PartialOrd,
impl<T, const LANES: usize> PartialOrd<Simd<T, LANES>> for Simd<T, LANES> where
LaneCount<LANES>: SupportedLaneCount,
T: SimdElement + PartialOrd,
如果存在,则此方法返回 self
和 other
值之间的顺序。 Read more
impl<T, U, const LANES: usize> RemAssign<U> for Simd<T, LANES> where
Self: Rem<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> RemAssign<U> for Simd<T, LANES> where
Self: Rem<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 %=
操作。 Read more
impl<T, U, const LANES: usize> ShlAssign<U> for Simd<T, LANES> where
Self: Shl<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> ShlAssign<U> for Simd<T, LANES> where
Self: Shl<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 <<=
操作。 Read more
impl<T, U, const LANES: usize> ShrAssign<U> for Simd<T, LANES> where
Self: Shr<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> ShrAssign<U> for Simd<T, LANES> where
Self: Shr<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 >>=
操作。 Read more
impl<T, U, const LANES: usize> SubAssign<U> for Simd<T, LANES> where
Self: Sub<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, U, const LANES: usize> SubAssign<U> for Simd<T, LANES> where
Self: Sub<U, Output = Self>,
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
执行 -=
操作。 Read more