@@ -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.
@@ -259,6 +267,8 @@ where
259
267
/// assert_eq!(v.as_array(), &[1, 2, 3, 4]);
260
268
/// ```
261
269
#[ must_use]
270
+ #[ inline]
271
+ #[ track_caller]
262
272
pub const fn from_slice ( slice : & [ T ] ) -> Self {
263
273
assert ! (
264
274
slice. len( ) >= Self :: LANES ,
@@ -287,6 +297,8 @@ where
287
297
/// v.copy_to_slice(&mut dest);
288
298
/// assert_eq!(&dest, &[1, 2, 3, 4, 0, 0]);
289
299
/// ```
300
+ #[ inline]
301
+ #[ track_caller]
290
302
pub fn copy_to_slice ( self , slice : & mut [ T ] ) {
291
303
assert ! (
292
304
slice. len( ) >= Self :: LANES ,
@@ -718,6 +730,7 @@ where
718
730
LaneCount < N > : SupportedLaneCount ,
719
731
T : SimdElement ,
720
732
{
733
+ #[ inline]
721
734
fn clone ( & self ) -> Self {
722
735
* self
723
736
}
@@ -862,6 +875,7 @@ where
862
875
LaneCount < N > : SupportedLaneCount ,
863
876
T : SimdElement ,
864
877
{
878
+ #[ inline]
865
879
fn from ( array : [ T ; N ] ) -> Self {
866
880
Self :: from_array ( array)
867
881
}
@@ -872,6 +886,7 @@ where
872
886
LaneCount < N > : SupportedLaneCount ,
873
887
T : SimdElement ,
874
888
{
889
+ #[ inline]
875
890
fn from ( vector : Simd < T , N > ) -> Self {
876
891
vector. to_array ( )
877
892
}
@@ -884,6 +899,7 @@ where
884
899
{
885
900
type Error = core:: array:: TryFromSliceError ;
886
901
902
+ #[ inline]
887
903
fn try_from ( slice : & [ T ] ) -> Result < Self , core:: array:: TryFromSliceError > {
888
904
Ok ( Self :: from_array ( slice. try_into ( ) ?) )
889
905
}
@@ -896,6 +912,7 @@ where
896
912
{
897
913
type Error = core:: array:: TryFromSliceError ;
898
914
915
+ #[ inline]
899
916
fn try_from ( slice : & mut [ T ] ) -> Result < Self , core:: array:: TryFromSliceError > {
900
917
Ok ( Self :: from_array ( slice. try_into ( ) ?) )
901
918
}
0 commit comments