diff options
| author | sayantn <sayantan.chakraborty@students.iiserpune.ac.in> | 2024-06-08 14:21:17 +0530 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2024-06-11 00:18:28 +0200 |
| commit | 1ccc7dbd0d27f13bbe3618bd97752e3df7d6b8fe (patch) | |
| tree | d315632999d0ad39285201d63849fdf77ba60a24 /library/stdarch | |
| parent | 292c0ecffd9bb4f1e8c4857fae3b848a0a6d861d (diff) | |
| download | rust-1ccc7dbd0d27f13bbe3618bd97752e3df7d6b8fe.tar.gz rust-1ccc7dbd0d27f13bbe3618bd97752e3df7d6b8fe.zip | |
Fixed `_mm256_cvtsd_f64`
This intrinsic should have `target_feature` AVX, (according to Intel Intrinsics Guide) but had AVX2
Diffstat (limited to 'library/stdarch')
| -rw-r--r-- | library/stdarch/crates/core_arch/src/x86/avx.rs | 20 | ||||
| -rw-r--r-- | library/stdarch/crates/core_arch/src/x86/avx2.rs | 18 |
2 files changed, 19 insertions, 19 deletions
diff --git a/library/stdarch/crates/core_arch/src/x86/avx.rs b/library/stdarch/crates/core_arch/src/x86/avx.rs index cd2ca2c9cfe..018786ee9f4 100644 --- a/library/stdarch/crates/core_arch/src/x86/avx.rs +++ b/library/stdarch/crates/core_arch/src/x86/avx.rs @@ -889,6 +889,17 @@ pub unsafe fn _mm256_cvtps_pd(a: __m128) -> __m256d { simd_cast(a) } +/// Returns the first element of the input vector of `[4 x double]`. +/// +/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsd_f64) +#[inline] +#[target_feature(enable = "avx")] +#[cfg_attr(test, assert_instr(vmovsd))] +#[stable(feature = "simd_x86", since = "1.27.0")] +pub unsafe fn _mm256_cvtsd_f64(a: __m256d) -> f64 { + simd_extract!(a, 0) +} + /// Converts packed double-precision (64-bit) floating-point elements in `a` /// to packed 32-bit integers with truncation. /// @@ -2937,7 +2948,7 @@ pub unsafe fn _mm256_storeu2_m128i(hiaddr: *mut __m128i, loaddr: *mut __m128i, a /// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtss_f32) #[inline] #[target_feature(enable = "avx")] -//#[cfg_attr(test, assert_instr(movss))] FIXME +#[cfg_attr(test, assert_instr(vmovss))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_cvtss_f32(a: __m256) -> f32 { simd_extract!(a, 0) @@ -3641,6 +3652,13 @@ mod tests { } #[simd_test(enable = "avx")] + unsafe fn test_mm256_cvtsd_f64() { + let a = _mm256_setr_pd(1., 2., 3., 4.); + let r = _mm256_cvtsd_f64(a); + assert_eq!(r, 1.); + } + + #[simd_test(enable = "avx")] unsafe fn test_mm256_cvttpd_epi32() { let a = _mm256_setr_pd(4., 9., 16., 25.); let r = _mm256_cvttpd_epi32(a); diff --git a/library/stdarch/crates/core_arch/src/x86/avx2.rs b/library/stdarch/crates/core_arch/src/x86/avx2.rs index 59c85d1e84a..68a2f34a57a 100644 --- a/library/stdarch/crates/core_arch/src/x86/avx2.rs +++ b/library/stdarch/crates/core_arch/src/x86/avx2.rs @@ -3625,17 +3625,6 @@ pub unsafe fn _mm256_extract_epi32<const INDEX: i32>(a: __m256i) -> i32 { simd_extract!(a.as_i32x8(), INDEX as u32) } -/// Returns the first element of the input vector of `[4 x double]`. -/// -/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsd_f64) -#[inline] -#[target_feature(enable = "avx2")] -//#[cfg_attr(test, assert_instr(movsd))] FIXME -#[stable(feature = "simd_x86", since = "1.27.0")] -pub unsafe fn _mm256_cvtsd_f64(a: __m256d) -> f64 { - simd_extract!(a, 0) -} - /// Returns the first element of the input vector of `[8 x i32]`. /// /// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsi256_si32) @@ -5777,13 +5766,6 @@ mod tests { } #[simd_test(enable = "avx2")] - unsafe fn test_mm256_cvtsd_f64() { - let a = _mm256_setr_pd(1., 2., 3., 4.); - let r = _mm256_cvtsd_f64(a); - assert_eq!(r, 1.); - } - - #[simd_test(enable = "avx2")] unsafe fn test_mm256_cvtsi256_si32() { let a = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8); let r = _mm256_cvtsi256_si32(a); |
