|
1 | 1 | use crate::simd::SimdElement;
|
2 | 2 |
|
3 | 3 | /// Supporting trait for `Simd::cast`. Typically doesn't need to be used directly.
|
| 4 | +/// |
| 5 | +/// # Safety |
| 6 | +/// Implementing this trait asserts that the type is a valid vector element for the `simd_cast` or |
| 7 | +/// `simd_as` intrinsics. |
4 | 8 | pub unsafe trait SimdCast: SimdElement {}
|
5 | 9 |
|
| 10 | +// Safety: primitive number types can be cast to other primitive number types |
6 | 11 | unsafe impl SimdCast for i8 {}
|
| 12 | +// Safety: primitive number types can be cast to other primitive number types |
7 | 13 | unsafe impl SimdCast for i16 {}
|
| 14 | +// Safety: primitive number types can be cast to other primitive number types |
8 | 15 | unsafe impl SimdCast for i32 {}
|
| 16 | +// Safety: primitive number types can be cast to other primitive number types |
9 | 17 | unsafe impl SimdCast for i64 {}
|
| 18 | +// Safety: primitive number types can be cast to other primitive number types |
10 | 19 | unsafe impl SimdCast for isize {}
|
| 20 | +// Safety: primitive number types can be cast to other primitive number types |
11 | 21 | unsafe impl SimdCast for u8 {}
|
| 22 | +// Safety: primitive number types can be cast to other primitive number types |
12 | 23 | unsafe impl SimdCast for u16 {}
|
| 24 | +// Safety: primitive number types can be cast to other primitive number types |
13 | 25 | unsafe impl SimdCast for u32 {}
|
| 26 | +// Safety: primitive number types can be cast to other primitive number types |
14 | 27 | unsafe impl SimdCast for u64 {}
|
| 28 | +// Safety: primitive number types can be cast to other primitive number types |
15 | 29 | unsafe impl SimdCast for usize {}
|
| 30 | +// Safety: primitive number types can be cast to other primitive number types |
16 | 31 | unsafe impl SimdCast for f32 {}
|
| 32 | +// Safety: primitive number types can be cast to other primitive number types |
17 | 33 | unsafe impl SimdCast for f64 {}
|
18 | 34 |
|
19 | 35 | /// Supporting trait for `Simd::cast_ptr`. Typically doesn't need to be used directly.
|
| 36 | +/// |
| 37 | +/// # Safety |
| 38 | +/// Implementing this trait asserts that the type is a valid vector element for the `simd_cast_ptr` |
| 39 | +/// intrinsic. |
20 | 40 | pub unsafe trait SimdCastPtr: SimdElement {}
|
21 | 41 |
|
| 42 | +// Safety: pointers can be cast to other pointer types |
22 | 43 | unsafe impl<T> SimdCastPtr for *const T {}
|
| 44 | +// Safety: pointers can be cast to other pointer types |
23 | 45 | unsafe impl<T> SimdCastPtr for *mut T {}
|
0 commit comments