@@ -1786,7 +1786,8 @@ pub fn _mm256_maddubs_epi16(a: __m256i, b: __m256i) -> __m256i {
17861786#[ cfg_attr( test, assert_instr( vpmaskmovd) ) ]
17871787#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
17881788pub unsafe fn _mm_maskload_epi32 ( mem_addr : * const i32 , mask : __m128i ) -> __m128i {
1789- transmute ( maskloadd ( mem_addr as * const i8 , mask. as_i32x4 ( ) ) )
1789+ let mask = simd_shr ( mask. as_i32x4 ( ) , i32x4:: splat ( 31 ) ) ;
1790+ simd_masked_load ! ( SimdAlign :: Unaligned , mask, mem_addr, i32x4:: ZERO ) . as_m128i ( )
17901791}
17911792
17921793/// Loads packed 32-bit integers from memory pointed by `mem_addr` using `mask`
@@ -1799,7 +1800,8 @@ pub unsafe fn _mm_maskload_epi32(mem_addr: *const i32, mask: __m128i) -> __m128i
17991800#[ cfg_attr( test, assert_instr( vpmaskmovd) ) ]
18001801#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18011802pub unsafe fn _mm256_maskload_epi32 ( mem_addr : * const i32 , mask : __m256i ) -> __m256i {
1802- transmute ( maskloadd256 ( mem_addr as * const i8 , mask. as_i32x8 ( ) ) )
1803+ let mask = simd_shr ( mask. as_i32x8 ( ) , i32x8:: splat ( 31 ) ) ;
1804+ simd_masked_load ! ( SimdAlign :: Unaligned , mask, mem_addr, i32x8:: ZERO ) . as_m256i ( )
18031805}
18041806
18051807/// Loads packed 64-bit integers from memory pointed by `mem_addr` using `mask`
@@ -1812,7 +1814,8 @@ pub unsafe fn _mm256_maskload_epi32(mem_addr: *const i32, mask: __m256i) -> __m2
18121814#[ cfg_attr( test, assert_instr( vpmaskmovq) ) ]
18131815#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18141816pub unsafe fn _mm_maskload_epi64 ( mem_addr : * const i64 , mask : __m128i ) -> __m128i {
1815- transmute ( maskloadq ( mem_addr as * const i8 , mask. as_i64x2 ( ) ) )
1817+ let mask = simd_shr ( mask. as_i64x2 ( ) , i64x2:: splat ( 63 ) ) ;
1818+ simd_masked_load ! ( SimdAlign :: Unaligned , mask, mem_addr, i64x2:: ZERO ) . as_m128i ( )
18161819}
18171820
18181821/// Loads packed 64-bit integers from memory pointed by `mem_addr` using `mask`
@@ -1825,7 +1828,8 @@ pub unsafe fn _mm_maskload_epi64(mem_addr: *const i64, mask: __m128i) -> __m128i
18251828#[ cfg_attr( test, assert_instr( vpmaskmovq) ) ]
18261829#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18271830pub unsafe fn _mm256_maskload_epi64 ( mem_addr : * const i64 , mask : __m256i ) -> __m256i {
1828- transmute ( maskloadq256 ( mem_addr as * const i8 , mask. as_i64x4 ( ) ) )
1831+ let mask = simd_shr ( mask. as_i64x4 ( ) , i64x4:: splat ( 63 ) ) ;
1832+ simd_masked_load ! ( SimdAlign :: Unaligned , mask, mem_addr, i64x4:: ZERO ) . as_m256i ( )
18291833}
18301834
18311835/// Stores packed 32-bit integers from `a` into memory pointed by `mem_addr`
@@ -1838,7 +1842,8 @@ pub unsafe fn _mm256_maskload_epi64(mem_addr: *const i64, mask: __m256i) -> __m2
18381842#[ cfg_attr( test, assert_instr( vpmaskmovd) ) ]
18391843#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18401844pub unsafe fn _mm_maskstore_epi32 ( mem_addr : * mut i32 , mask : __m128i , a : __m128i ) {
1841- maskstored ( mem_addr as * mut i8 , mask. as_i32x4 ( ) , a. as_i32x4 ( ) )
1845+ let mask = simd_shr ( mask. as_i32x4 ( ) , i32x4:: splat ( 31 ) ) ;
1846+ simd_masked_store ! ( SimdAlign :: Unaligned , mask, mem_addr, a. as_i32x4( ) )
18421847}
18431848
18441849/// Stores packed 32-bit integers from `a` into memory pointed by `mem_addr`
@@ -1851,7 +1856,8 @@ pub unsafe fn _mm_maskstore_epi32(mem_addr: *mut i32, mask: __m128i, a: __m128i)
18511856#[ cfg_attr( test, assert_instr( vpmaskmovd) ) ]
18521857#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18531858pub unsafe fn _mm256_maskstore_epi32 ( mem_addr : * mut i32 , mask : __m256i , a : __m256i ) {
1854- maskstored256 ( mem_addr as * mut i8 , mask. as_i32x8 ( ) , a. as_i32x8 ( ) )
1859+ let mask = simd_shr ( mask. as_i32x8 ( ) , i32x8:: splat ( 31 ) ) ;
1860+ simd_masked_store ! ( SimdAlign :: Unaligned , mask, mem_addr, a. as_i32x8( ) )
18551861}
18561862
18571863/// Stores packed 64-bit integers from `a` into memory pointed by `mem_addr`
@@ -1864,7 +1870,8 @@ pub unsafe fn _mm256_maskstore_epi32(mem_addr: *mut i32, mask: __m256i, a: __m25
18641870#[ cfg_attr( test, assert_instr( vpmaskmovq) ) ]
18651871#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18661872pub unsafe fn _mm_maskstore_epi64 ( mem_addr : * mut i64 , mask : __m128i , a : __m128i ) {
1867- maskstoreq ( mem_addr as * mut i8 , mask. as_i64x2 ( ) , a. as_i64x2 ( ) )
1873+ let mask = simd_shr ( mask. as_i64x2 ( ) , i64x2:: splat ( 63 ) ) ;
1874+ simd_masked_store ! ( SimdAlign :: Unaligned , mask, mem_addr, a. as_i64x2( ) )
18681875}
18691876
18701877/// Stores packed 64-bit integers from `a` into memory pointed by `mem_addr`
@@ -1877,7 +1884,8 @@ pub unsafe fn _mm_maskstore_epi64(mem_addr: *mut i64, mask: __m128i, a: __m128i)
18771884#[ cfg_attr( test, assert_instr( vpmaskmovq) ) ]
18781885#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
18791886pub unsafe fn _mm256_maskstore_epi64 ( mem_addr : * mut i64 , mask : __m256i , a : __m256i ) {
1880- maskstoreq256 ( mem_addr as * mut i8 , mask. as_i64x4 ( ) , a. as_i64x4 ( ) )
1887+ let mask = simd_shr ( mask. as_i64x4 ( ) , i64x4:: splat ( 63 ) ) ;
1888+ simd_masked_store ! ( SimdAlign :: Unaligned , mask, mem_addr, a. as_i64x4( ) )
18811889}
18821890
18831891/// Compares packed 16-bit integers in `a` and `b`, and returns the packed
@@ -3645,22 +3653,6 @@ unsafe extern "C" {
36453653 fn phsubsw ( a : i16x16 , b : i16x16 ) -> i16x16 ;
36463654 #[ link_name = "llvm.x86.avx2.pmadd.ub.sw" ]
36473655 fn pmaddubsw ( a : u8x32 , b : u8x32 ) -> i16x16 ;
3648- #[ link_name = "llvm.x86.avx2.maskload.d" ]
3649- fn maskloadd ( mem_addr : * const i8 , mask : i32x4 ) -> i32x4 ;
3650- #[ link_name = "llvm.x86.avx2.maskload.d.256" ]
3651- fn maskloadd256 ( mem_addr : * const i8 , mask : i32x8 ) -> i32x8 ;
3652- #[ link_name = "llvm.x86.avx2.maskload.q" ]
3653- fn maskloadq ( mem_addr : * const i8 , mask : i64x2 ) -> i64x2 ;
3654- #[ link_name = "llvm.x86.avx2.maskload.q.256" ]
3655- fn maskloadq256 ( mem_addr : * const i8 , mask : i64x4 ) -> i64x4 ;
3656- #[ link_name = "llvm.x86.avx2.maskstore.d" ]
3657- fn maskstored ( mem_addr : * mut i8 , mask : i32x4 , a : i32x4 ) ;
3658- #[ link_name = "llvm.x86.avx2.maskstore.d.256" ]
3659- fn maskstored256 ( mem_addr : * mut i8 , mask : i32x8 , a : i32x8 ) ;
3660- #[ link_name = "llvm.x86.avx2.maskstore.q" ]
3661- fn maskstoreq ( mem_addr : * mut i8 , mask : i64x2 , a : i64x2 ) ;
3662- #[ link_name = "llvm.x86.avx2.maskstore.q.256" ]
3663- fn maskstoreq256 ( mem_addr : * mut i8 , mask : i64x4 , a : i64x4 ) ;
36643656 #[ link_name = "llvm.x86.avx2.mpsadbw" ]
36653657 fn mpsadbw ( a : u8x32 , b : u8x32 , imm8 : i8 ) -> u16x16 ;
36663658 #[ link_name = "llvm.x86.avx2.pmul.hr.sw" ]
0 commit comments