Skip to content

Commit 9b7fb42

Browse files
eduardosmAmanieu
authored andcommitted
Reimplement _mm_movemask_ps and _mm_movemask_pd without LLVM intrinsics
1 parent 3b578c3 commit 9b7fb42

File tree

2 files changed

+2
-6
lines changed

2 files changed

+2
-6
lines changed

crates/core_arch/src/x86/sse.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@ pub unsafe fn _mm_movelh_ps(a: __m128, b: __m128) -> __m128 {
10811081
#[cfg_attr(test, assert_instr(movmskps))]
10821082
#[stable(feature = "simd_x86", since = "1.27.0")]
10831083
pub unsafe fn _mm_movemask_ps(a: __m128) -> i32 {
1084-
movmskps(a)
1084+
simd_bitmask::<u32x4, u8>(transmute(a)).into()
10851085
}
10861086

10871087
/// Construct a `__m128` with the lowest element read from `p` and the other
@@ -1885,8 +1885,6 @@ extern "C" {
18851885
fn maxss(a: __m128, b: __m128) -> __m128;
18861886
#[link_name = "llvm.x86.sse.max.ps"]
18871887
fn maxps(a: __m128, b: __m128) -> __m128;
1888-
#[link_name = "llvm.x86.sse.movmsk.ps"]
1889-
fn movmskps(a: __m128) -> i32;
18901888
#[link_name = "llvm.x86.sse.cmp.ps"]
18911889
fn cmpps(a: __m128, b: __m128, imm8: i8) -> __m128;
18921890
#[link_name = "llvm.x86.sse.comieq.ss"]

crates/core_arch/src/x86/sse2.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2450,7 +2450,7 @@ pub unsafe fn _mm_setzero_pd() -> __m128d {
24502450
#[cfg_attr(test, assert_instr(movmskpd))]
24512451
#[stable(feature = "simd_x86", since = "1.27.0")]
24522452
pub unsafe fn _mm_movemask_pd(a: __m128d) -> i32 {
2453-
movmskpd(a)
2453+
simd_bitmask::<u64x2, u8>(transmute(a)).into()
24542454
}
24552455

24562456
/// Loads 128-bits (composed of 2 packed double-precision (64-bit)
@@ -2914,8 +2914,6 @@ extern "C" {
29142914
fn ucomigesd(a: __m128d, b: __m128d) -> i32;
29152915
#[link_name = "llvm.x86.sse2.ucomineq.sd"]
29162916
fn ucomineqsd(a: __m128d, b: __m128d) -> i32;
2917-
#[link_name = "llvm.x86.sse2.movmsk.pd"]
2918-
fn movmskpd(a: __m128d) -> i32;
29192917
#[link_name = "llvm.x86.sse2.cvtpd2dq"]
29202918
fn cvtpd2dq(a: __m128d) -> i32x4;
29212919
#[link_name = "llvm.x86.sse2.cvtsd2si"]

0 commit comments

Comments
 (0)