@@ -26,28 +26,28 @@ pub const unsafe fn simd_extract<T, U>(_x: T, _idx: u32) -> U;
2626
2727/// Adds two simd vectors elementwise.
2828///
29- /// `T` must be a vector of integer or floating point primitive types .
29+ /// `T` must be a vector of integers or floats .
3030#[ rustc_intrinsic]
3131#[ rustc_nounwind]
3232pub unsafe fn simd_add < T > ( _x : T , _y : T ) -> T ;
3333
3434/// Subtracts `rhs` from `lhs` elementwise.
3535///
36- /// `T` must be a vector of integer or floating point primitive types .
36+ /// `T` must be a vector of integers or floats .
3737#[ rustc_intrinsic]
3838#[ rustc_nounwind]
3939pub unsafe fn simd_sub < T > ( _lhs : T , _rhs : T ) -> T ;
4040
4141/// Multiplies two simd vectors elementwise.
4242///
43- /// `T` must be a vector of integer or floating point primitive types .
43+ /// `T` must be a vector of integers or floats .
4444#[ rustc_intrinsic]
4545#[ rustc_nounwind]
4646pub unsafe fn simd_mul < T > ( _x : T , _y : T ) -> T ;
4747
4848/// Divides `lhs` by `rhs` elementwise.
4949///
50- /// `T` must be a vector of integer or floating point primitive types .
50+ /// `T` must be a vector of integers or floats .
5151///
5252/// # Safety
5353/// For integers, `rhs` must not contain any zero elements.
@@ -58,7 +58,7 @@ pub unsafe fn simd_div<T>(_lhs: T, _rhs: T) -> T;
5858
5959/// Returns remainder of two vectors elementwise.
6060///
61- /// `T` must be a vector of integer or floating point primitive types .
61+ /// `T` must be a vector of integers or floats .
6262///
6363/// # Safety
6464/// For integers, `rhs` must not contain any zero elements.
@@ -71,7 +71,7 @@ pub unsafe fn simd_rem<T>(_lhs: T, _rhs: T) -> T;
7171///
7272/// Shifts `lhs` left by `rhs`, shifting in sign bits for signed types.
7373///
74- /// `T` must be a vector of integer primitive types .
74+ /// `T` must be a vector of integers .
7575///
7676/// # Safety
7777///
@@ -82,7 +82,7 @@ pub unsafe fn simd_shl<T>(_lhs: T, _rhs: T) -> T;
8282
8383/// Shifts vector right elementwise, with UB on overflow.
8484///
85- /// `T` must be a vector of integer primitive types .
85+ /// `T` must be a vector of integers .
8686///
8787/// Shifts `lhs` right by `rhs`, shifting in sign bits for signed types.
8888///
@@ -95,29 +95,28 @@ pub unsafe fn simd_shr<T>(_lhs: T, _rhs: T) -> T;
9595
9696/// "Ands" vectors elementwise.
9797///
98- /// `T` must be a vector of integer primitive types .
98+ /// `T` must be a vector of integers .
9999#[ rustc_intrinsic]
100100#[ rustc_nounwind]
101101pub unsafe fn simd_and < T > ( _x : T , _y : T ) -> T ;
102102
103103/// "Ors" vectors elementwise.
104104///
105- /// `T` must be a vector of integer primitive types .
105+ /// `T` must be a vector of integers .
106106#[ rustc_intrinsic]
107107#[ rustc_nounwind]
108108pub unsafe fn simd_or < T > ( _x : T , _y : T ) -> T ;
109109
110110/// "Exclusive ors" vectors elementwise.
111111///
112- /// `T` must be a vector of integer primitive types .
112+ /// `T` must be a vector of integers .
113113#[ rustc_intrinsic]
114114#[ rustc_nounwind]
115115pub unsafe fn simd_xor < T > ( _x : T , _y : T ) -> T ;
116116
117117/// Numerically casts a vector, elementwise.
118118///
119- /// `T` and `U` must be vectors of integer or floating point primitive types, and must have the
120- /// same length.
119+ /// `T` and `U` must be vectors of integers or floats, and must have the same length.
121120///
122121/// When casting floats to integers, the result is truncated. Out-of-bounds result lead to UB.
123122/// When casting integers to floats, the result is rounded.
@@ -138,8 +137,7 @@ pub unsafe fn simd_cast<T, U>(_x: T) -> U;
138137
139138/// Numerically casts a vector, elementwise.
140139///
141- /// `T` and `U` be a vectors of integer or floating point primitive types, and must have the
142- /// same length.
140+ /// `T` and `U` be a vectors of integers or floats, and must have the same length.
143141///
144142/// Like `simd_cast`, but saturates float-to-integer conversions (NaN becomes 0).
145143/// This matches regular `as` and is always safe.
@@ -153,7 +151,7 @@ pub unsafe fn simd_as<T, U>(_x: T) -> U;
153151
154152/// Negates a vector elementwise.
155153///
156- /// `T` must be a vector of integer or floating-point primitive types .
154+ /// `T` must be a vector of integers or floats .
157155///
158156/// Rust panics for `-<int>::Min` due to overflow, but it is not UB with this intrinsic.
159157#[ rustc_intrinsic]
@@ -187,7 +185,7 @@ pub unsafe fn simd_fmax<T>(_x: T, _y: T) -> T;
187185
188186/// Tests elementwise equality of two vectors.
189187///
190- /// `T` must be a vector of floating-point primitive types .
188+ /// `T` must be a vector of integers or floats .
191189///
192190/// `U` must be a vector of integers with the same number of elements and element size as `T`.
193191///
@@ -198,7 +196,7 @@ pub unsafe fn simd_eq<T, U>(_x: T, _y: T) -> U;
198196
199197/// Tests elementwise inequality equality of two vectors.
200198///
201- /// `T` must be a vector of floating-point primitive types .
199+ /// `T` must be a vector of integers or floats .
202200///
203201/// `U` must be a vector of integers with the same number of elements and element size as `T`.
204202///
@@ -209,7 +207,7 @@ pub unsafe fn simd_ne<T, U>(_x: T, _y: T) -> U;
209207
210208/// Tests if `x` is less than `y`, elementwise.
211209///
212- /// `T` must be a vector of floating-point primitive types .
210+ /// `T` must be a vector of integers or floats .
213211///
214212/// `U` must be a vector of integers with the same number of elements and element size as `T`.
215213///
@@ -220,7 +218,7 @@ pub unsafe fn simd_lt<T, U>(_x: T, _y: T) -> U;
220218
221219/// Tests if `x` is less than or equal to `y`, elementwise.
222220///
223- /// `T` must be a vector of floating-point primitive types .
221+ /// `T` must be a vector of integers or floats .
224222///
225223/// `U` must be a vector of integers with the same number of elements and element size as `T`.
226224///
@@ -231,7 +229,7 @@ pub unsafe fn simd_le<T, U>(_x: T, _y: T) -> U;
231229
232230/// Tests if `x` is greater than `y`, elementwise.
233231///
234- /// `T` must be a vector of floating-point primitive types .
232+ /// `T` must be a vector of integers or floats .
235233///
236234/// `U` must be a vector of integers with the same number of elements and element size as `T`.
237235///
@@ -242,7 +240,7 @@ pub unsafe fn simd_gt<T, U>(_x: T, _y: T) -> U;
242240
243241/// Tests if `x` is greater than or equal to `y`, elementwise.
244242///
245- /// `T` must be a vector of floating-point primitive types .
243+ /// `T` must be a vector of integers or floats .
246244///
247245/// `U` must be a vector of integers with the same number of elements and element size as `T`.
248246///
@@ -273,7 +271,7 @@ pub unsafe fn simd_shuffle<T, U, V>(_x: T, _y: T, _idx: U) -> V;
273271///
274272/// `U` must be a vector of pointers to the element type of `T`, with the same length as `T`.
275273///
276- /// `V` must be a vector of integers with the same length as `T` (but any element size).
274+ /// `V` must be a vector of signed integers with the same length as `T` (but any element size).
277275///
278276/// For each pointer in `ptr`, if the corresponding value in `mask` is `!0`, read the pointer.
279277/// Otherwise if the corresponding value in `mask` is `0`, return the corresponding value from
@@ -294,7 +292,7 @@ pub unsafe fn simd_gather<T, U, V>(_val: T, _ptr: U, _mask: V) -> T;
294292///
295293/// `U` must be a vector of pointers to the element type of `T`, with the same length as `T`.
296294///
297- /// `V` must be a vector of integers with the same length as `T` (but any element size).
295+ /// `V` must be a vector of signed integers with the same length as `T` (but any element size).
298296///
299297/// For each pointer in `ptr`, if the corresponding value in `mask` is `!0`, write the
300298/// corresponding value in `val` to the pointer.
@@ -318,7 +316,7 @@ pub unsafe fn simd_scatter<T, U, V>(_val: T, _ptr: U, _mask: V);
318316///
319317/// `U` must be a pointer to the element type of `T`
320318///
321- /// `V` must be a vector of integers with the same length as `T` (but any element size).
319+ /// `V` must be a vector of signed integers with the same length as `T` (but any element size).
322320///
323321/// For each element, if the corresponding value in `mask` is `!0`, read the corresponding
324322/// pointer offset from `ptr`.
@@ -341,7 +339,7 @@ pub unsafe fn simd_masked_load<V, U, T>(_mask: V, _ptr: U, _val: T) -> T;
341339///
342340/// `U` must be a pointer to the element type of `T`
343341///
344- /// `V` must be a vector of integers with the same length as `T` (but any element size).
342+ /// `V` must be a vector of signed integers with the same length as `T` (but any element size).
345343///
346344/// For each element, if the corresponding value in `mask` is `!0`, write the corresponding
347345/// value in `val` to the pointer offset from `ptr`.
@@ -375,7 +373,7 @@ pub unsafe fn simd_saturating_sub<T>(_lhs: T, _rhs: T) -> T;
375373
376374/// Adds elements within a vector from left to right.
377375///
378- /// `T` must be a vector of integer or floating-point primitive types .
376+ /// `T` must be a vector of integers or floats .
379377///
380378/// `U` must be the element type of `T`.
381379///
@@ -387,7 +385,7 @@ pub unsafe fn simd_reduce_add_ordered<T, U>(_x: T, _y: U) -> U;
387385/// Adds elements within a vector in arbitrary order. May also be re-associated with
388386/// unordered additions on the inputs/outputs.
389387///
390- /// `T` must be a vector of integer or floating-point primitive types .
388+ /// `T` must be a vector of integers or floats .
391389///
392390/// `U` must be the element type of `T`.
393391#[ rustc_intrinsic]
@@ -396,7 +394,7 @@ pub unsafe fn simd_reduce_add_unordered<T, U>(_x: T) -> U;
396394
397395/// Multiplies elements within a vector from left to right.
398396///
399- /// `T` must be a vector of integer or floating-point primitive types .
397+ /// `T` must be a vector of integers or floats .
400398///
401399/// `U` must be the element type of `T`.
402400///
@@ -408,7 +406,7 @@ pub unsafe fn simd_reduce_mul_ordered<T, U>(_x: T, _y: U) -> U;
408406/// Multiplies elements within a vector in arbitrary order. May also be re-associated with
409407/// unordered additions on the inputs/outputs.
410408///
411- /// `T` must be a vector of integer or floating-point primitive types .
409+ /// `T` must be a vector of integers or floats .
412410///
413411/// `U` must be the element type of `T`.
414412#[ rustc_intrinsic]
@@ -437,7 +435,7 @@ pub unsafe fn simd_reduce_any<T>(_x: T) -> bool;
437435
438436/// Returns the maximum element of a vector.
439437///
440- /// `T` must be a vector of integer or floating-point primitive types .
438+ /// `T` must be a vector of integers or floats .
441439///
442440/// `U` must be the element type of `T`.
443441///
@@ -448,7 +446,7 @@ pub unsafe fn simd_reduce_max<T, U>(_x: T) -> U;
448446
449447/// Returns the minimum element of a vector.
450448///
451- /// `T` must be a vector of integer or floating-point primitive types .
449+ /// `T` must be a vector of integers or floats .
452450///
453451/// `U` must be the element type of `T`.
454452///
@@ -459,7 +457,7 @@ pub unsafe fn simd_reduce_min<T, U>(_x: T) -> U;
459457
460458/// Logical "ands" all elements together.
461459///
462- /// `T` must be a vector of integer or floating-point primitive types .
460+ /// `T` must be a vector of integers or floats .
463461///
464462/// `U` must be the element type of `T`.
465463#[ rustc_intrinsic]
@@ -468,7 +466,7 @@ pub unsafe fn simd_reduce_and<T, U>(_x: T) -> U;
468466
469467/// Logical "ors" all elements together.
470468///
471- /// `T` must be a vector of integer or floating-point primitive types .
469+ /// `T` must be a vector of integers or floats .
472470///
473471/// `U` must be the element type of `T`.
474472#[ rustc_intrinsic]
@@ -477,7 +475,7 @@ pub unsafe fn simd_reduce_or<T, U>(_x: T) -> U;
477475
478476/// Logical "exclusive ors" all elements together.
479477///
480- /// `T` must be a vector of integer or floating-point primitive types .
478+ /// `T` must be a vector of integers or floats .
481479///
482480/// `U` must be the element type of `T`.
483481#[ rustc_intrinsic]
@@ -523,9 +521,9 @@ pub unsafe fn simd_bitmask<T, U>(_x: T) -> U;
523521
524522/// Selects elements from a mask.
525523///
526- /// `M ` must be an integer vector.
524+ /// `T ` must be a vector.
527525///
528- /// `T ` must be a vector with the same number of elements as `M` .
526+ /// `M ` must be a signed integer vector with the same length as `T` (but any element size) .
529527///
530528/// For each element, if the corresponding value in `mask` is `!0`, select the element from
531529/// `if_true`. If the corresponding value in `mask` is `0`, select the element from
0 commit comments