@@ -122,6 +122,7 @@ where
122
122
/// let v = u32x4::splat(0);
123
123
/// assert_eq!(v.lanes(), 4);
124
124
/// ```
125
+ #[ inline]
125
126
pub const fn lanes ( & self ) -> usize {
126
127
Self :: LANES
127
128
}
@@ -136,6 +137,7 @@ where
136
137
/// let v = u32x4::splat(8);
137
138
/// assert_eq!(v.as_array(), &[8, 8, 8, 8]);
138
139
/// ```
140
+ #[ inline]
139
141
pub fn splat ( value : T ) -> Self {
140
142
// This is preferred over `[value; N]`, since it's explicitly a splat:
141
143
// https://github.com/rust-lang/rust/issues/97804
@@ -156,6 +158,7 @@ where
156
158
/// let v: u64x4 = Simd::from_array([0, 1, 2, 3]);
157
159
/// assert_eq!(v.as_array(), &[0, 1, 2, 3]);
158
160
/// ```
161
+ #[ inline]
159
162
pub const fn as_array ( & self ) -> & [ T ; N ] {
160
163
// SAFETY: `Simd<T, N>` is just an overaligned `[T; N]` with
161
164
// potential padding at the end, so pointer casting to a
@@ -167,6 +170,7 @@ where
167
170
}
168
171
169
172
/// Returns a mutable array reference containing the entire SIMD vector.
173
+ #[ inline]
170
174
pub fn as_mut_array ( & mut self ) -> & mut [ T ; N ] {
171
175
// SAFETY: `Simd<T, N>` is just an overaligned `[T; N]` with
172
176
// potential padding at the end, so pointer casting to a
@@ -184,6 +188,7 @@ where
184
188
///
185
189
/// # Safety
186
190
/// Reading `ptr` must be safe, as if by `<*const [T; N]>::read_unaligned`.
191
+ #[ inline]
187
192
const unsafe fn load ( ptr : * const [ T ; N ] ) -> Self {
188
193
// There are potentially simpler ways to write this function, but this should result in
189
194
// LLVM `load <N x T>`
@@ -204,6 +209,7 @@ where
204
209
///
205
210
/// # Safety
206
211
/// Writing to `ptr` must be safe, as if by `<*mut [T; N]>::write_unaligned`.
212
+ #[ inline]
207
213
const unsafe fn store ( self , ptr : * mut [ T ; N ] ) {
208
214
// There are potentially simpler ways to write this function, but this should result in
209
215
// LLVM `store <N x T>`
@@ -216,6 +222,7 @@ where
216
222
}
217
223
218
224
/// Converts an array to a SIMD vector.
225
+ #[ inline]
219
226
pub const fn from_array ( array : [ T ; N ] ) -> Self {
220
227
// SAFETY: `&array` is safe to read.
221
228
//
@@ -228,6 +235,7 @@ where
228
235
}
229
236
230
237
/// Converts a SIMD vector to an array.
238
+ #[ inline]
231
239
pub const fn to_array ( self ) -> [ T ; N ] {
232
240
let mut tmp = core:: mem:: MaybeUninit :: uninit ( ) ;
233
241
// SAFETY: writing to `tmp` is safe and initializes it.
@@ -258,7 +266,8 @@ where
258
266
/// let v = u32x4::from_slice(&source);
259
267
/// assert_eq!(v.as_array(), &[1, 2, 3, 4]);
260
268
/// ```
261
- #[ must_use]
269
+ #[ inline]
270
+ #[ track_caller]
262
271
pub const fn from_slice ( slice : & [ T ] ) -> Self {
263
272
assert ! (
264
273
slice. len( ) >= Self :: LANES ,
@@ -287,6 +296,8 @@ where
287
296
/// v.copy_to_slice(&mut dest);
288
297
/// assert_eq!(&dest, &[1, 2, 3, 4, 0, 0]);
289
298
/// ```
299
+ #[ inline]
300
+ #[ track_caller]
290
301
pub fn copy_to_slice ( self , slice : & mut [ T ] ) {
291
302
assert ! (
292
303
slice. len( ) >= Self :: LANES ,
@@ -718,6 +729,7 @@ where
718
729
LaneCount < N > : SupportedLaneCount ,
719
730
T : SimdElement ,
720
731
{
732
+ #[ inline]
721
733
fn clone ( & self ) -> Self {
722
734
* self
723
735
}
@@ -862,6 +874,7 @@ where
862
874
LaneCount < N > : SupportedLaneCount ,
863
875
T : SimdElement ,
864
876
{
877
+ #[ inline]
865
878
fn from ( array : [ T ; N ] ) -> Self {
866
879
Self :: from_array ( array)
867
880
}
@@ -872,6 +885,7 @@ where
872
885
LaneCount < N > : SupportedLaneCount ,
873
886
T : SimdElement ,
874
887
{
888
+ #[ inline]
875
889
fn from ( vector : Simd < T , N > ) -> Self {
876
890
vector. to_array ( )
877
891
}
@@ -884,6 +898,7 @@ where
884
898
{
885
899
type Error = core:: array:: TryFromSliceError ;
886
900
901
+ #[ inline]
887
902
fn try_from ( slice : & [ T ] ) -> Result < Self , core:: array:: TryFromSliceError > {
888
903
Ok ( Self :: from_array ( slice. try_into ( ) ?) )
889
904
}
@@ -896,6 +911,7 @@ where
896
911
{
897
912
type Error = core:: array:: TryFromSliceError ;
898
913
914
+ #[ inline]
899
915
fn try_from ( slice : & mut [ T ] ) -> Result < Self , core:: array:: TryFromSliceError > {
900
916
Ok ( Self :: from_array ( slice. try_into ( ) ?) )
901
917
}
0 commit comments