Skip to content

Commit d06eda8

Browse files
eduardosmAmanieu
authored andcommitted
Reimplement _mm256_movemask_ps and _mm256_movemask_pd without LLVM intrinsics
1 parent 9b7fb42 commit d06eda8

File tree

1 file changed

+2
-6
lines changed
  • crates/core_arch/src/x86

1 file changed

+2
-6
lines changed

crates/core_arch/src/x86/avx.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,7 @@ pub unsafe fn _mm_testnzc_ps(a: __m128, b: __m128) -> i32 {
20662066
#[cfg_attr(test, assert_instr(vmovmskpd))]
20672067
#[stable(feature = "simd_x86", since = "1.27.0")]
20682068
pub unsafe fn _mm256_movemask_pd(a: __m256d) -> i32 {
2069-
movmskpd256(a)
2069+
simd_bitmask::<u64x4, u8>(transmute(a)).into()
20702070
}
20712071

20722072
/// Sets each bit of the returned mask based on the most significant bit of the
@@ -2079,7 +2079,7 @@ pub unsafe fn _mm256_movemask_pd(a: __m256d) -> i32 {
20792079
#[cfg_attr(test, assert_instr(vmovmskps))]
20802080
#[stable(feature = "simd_x86", since = "1.27.0")]
20812081
pub unsafe fn _mm256_movemask_ps(a: __m256) -> i32 {
2082-
movmskps256(a)
2082+
simd_bitmask::<u32x8, u8>(transmute(a)).into()
20832083
}
20842084

20852085
/// Returns vector of type __m256d with all elements set to zero.
@@ -3028,10 +3028,6 @@ extern "C" {
30283028
fn vtestcps(a: __m128, b: __m128) -> i32;
30293029
#[link_name = "llvm.x86.avx.vtestnzc.ps"]
30303030
fn vtestnzcps(a: __m128, b: __m128) -> i32;
3031-
#[link_name = "llvm.x86.avx.movmsk.pd.256"]
3032-
fn movmskpd256(a: __m256d) -> i32;
3033-
#[link_name = "llvm.x86.avx.movmsk.ps.256"]
3034-
fn movmskps256(a: __m256) -> i32;
30353031
#[link_name = "llvm.x86.avx.min.ps.256"]
30363032
fn vminps(a: __m256, b: __m256) -> __m256;
30373033
#[link_name = "llvm.x86.avx.max.ps.256"]

0 commit comments

Comments
 (0)