@@ -141,8 +141,30 @@ pub unsafe fn _mm_blend_ps<const IMM4: i32>(a: __m128, b: __m128) -> __m128 {
141
141
}
142
142
143
143
/// Extracts a single-precision (32-bit) floating-point element from `a`,
144
- /// selected with `IMM8`
144
+ /// selected with `IMM8`. The returned `i32` stores the float's bit-pattern,
145
+ /// and may be converted back to a floating point number via casting.
145
146
///
147
+ /// # Example
148
+ /// ```rust
149
+ /// #[cfg(target_arch = "x86")]
150
+ /// #use std::arch::x86::*;
151
+ /// #[cfg(target_arch = "x86_64")]
152
+ /// #use std::arch::x86_64::*;
153
+ /// #fn main() {
154
+ /// # if is_x86_feature_detected!("sse4.1") {
155
+ /// # #[target_feature(enable = "sse4.1")]
156
+ /// # unsafe fn worker() {
157
+ /// let mut float_store = vec![1.0, 1.0, 2.0, 3.0];
158
+ /// unsafe {
159
+ /// let simd_floats = _mm_set_ps(2.5, 5.0, 7.5, 10.0);
160
+ /// let x: i32 = _mm_extract_ps::<2>(simd_floats);
161
+ /// float_store.push(f32::from_bits(x as u32));
162
+ /// }
163
+ /// assert_eq!(float_store, vec![1.0, 1.0, 2.0, 3.0, 5.0]);
164
+ /// # }
165
+ /// # unsafe { worker() }
166
+ /// #}
167
+ /// ```
146
168
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_extract_ps)
147
169
#[ inline]
148
170
#[ target_feature( enable = "sse4.1" ) ]
0 commit comments