diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2019-07-31 13:19:33 +0200 |
|---|---|---|
| committer | gnzlbg <gnzlbg@users.noreply.github.com> | 2019-12-18 17:41:21 +0100 |
| commit | 35fc3c36e37b3bb517cd1d5eb080e0ecbb6627bf (patch) | |
| tree | 22d2514a33d0048ea585202122044da8abb21c18 | |
| parent | fb84f79ce78a69e8fa8445197e7e76ea2afb3cd7 (diff) | |
| download | rust-35fc3c36e37b3bb517cd1d5eb080e0ecbb6627bf.tar.gz rust-35fc3c36e37b3bb517cd1d5eb080e0ecbb6627bf.zip | |
Use simd_* in x86/avx2.rs where possible
| -rw-r--r-- | library/stdarch/crates/core_arch/src/x86/avx2.rs | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/library/stdarch/crates/core_arch/src/x86/avx2.rs b/library/stdarch/crates/core_arch/src/x86/avx2.rs index e137f0ce59f..193e1ca3ae0 100644 --- a/library/stdarch/crates/core_arch/src/x86/avx2.rs +++ b/library/stdarch/crates/core_arch/src/x86/avx2.rs @@ -111,7 +111,7 @@ pub unsafe fn _mm256_add_epi8(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpaddsb))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_adds_epi8(a: __m256i, b: __m256i) -> __m256i { - transmute(paddsb(a.as_i8x32(), b.as_i8x32())) + transmute(simd_saturating_add(a.as_i8x32(), b.as_i8x32())) } /// Adds packed 16-bit integers in `a` and `b` using saturation. @@ -122,7 +122,7 @@ pub unsafe fn _mm256_adds_epi8(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpaddsw))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_adds_epi16(a: __m256i, b: __m256i) -> __m256i { - transmute(paddsw(a.as_i16x16(), b.as_i16x16())) + transmute(simd_saturating_add(a.as_i16x16(), b.as_i16x16())) } /// Adds packed unsigned 8-bit integers in `a` and `b` using saturation. @@ -133,7 +133,7 @@ pub unsafe fn _mm256_adds_epi16(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpaddusb))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_adds_epu8(a: __m256i, b: __m256i) -> __m256i { - transmute(paddusb(a.as_u8x32(), b.as_u8x32())) + transmute(simd_saturating_add(a.as_u8x32(), b.as_u8x32())) } /// Adds packed unsigned 16-bit integers in `a` and `b` using saturation. @@ -144,7 +144,7 @@ pub unsafe fn _mm256_adds_epu8(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpaddusw))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_adds_epu16(a: __m256i, b: __m256i) -> __m256i { - transmute(paddusw(a.as_u16x16(), b.as_u16x16())) + transmute(simd_saturating_add(a.as_u16x16(), b.as_u16x16())) } /// Concatenates pairs of 16-byte blocks in `a` and `b` into a 32-byte temporary @@ -3331,7 +3331,7 @@ pub unsafe fn _mm256_sub_epi8(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpsubsw))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_subs_epi16(a: __m256i, b: __m256i) -> __m256i { - transmute(psubsw(a.as_i16x16(), b.as_i16x16())) + transmute(simd_saturating_sub(a.as_i16x16(), b.as_i16x16())) } /// Subtract packed 8-bit integers in `b` from packed 8-bit integers in @@ -3343,7 +3343,7 @@ pub unsafe fn _mm256_subs_epi16(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpsubsb))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_subs_epi8(a: __m256i, b: __m256i) -> __m256i { - transmute(psubsb(a.as_i8x32(), b.as_i8x32())) + transmute(simd_saturating_sub(a.as_i8x32(), b.as_i8x32())) } /// Subtract packed unsigned 16-bit integers in `b` from packed 16-bit @@ -3355,7 +3355,7 @@ pub unsafe fn _mm256_subs_epi8(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpsubusw))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_subs_epu16(a: __m256i, b: __m256i) -> __m256i { - transmute(psubusw(a.as_u16x16(), b.as_u16x16())) + transmute(simd_saturating_sub(a.as_u16x16(), b.as_u16x16())) } /// Subtract packed unsigned 8-bit integers in `b` from packed 8-bit @@ -3367,7 +3367,7 @@ pub unsafe fn _mm256_subs_epu16(a: __m256i, b: __m256i) -> __m256i { #[cfg_attr(test, assert_instr(vpsubusb))] #[stable(feature = "simd_x86", since = "1.27.0")] pub unsafe fn _mm256_subs_epu8(a: __m256i, b: __m256i) -> __m256i { - transmute(psubusb(a.as_u8x32(), b.as_u8x32())) + transmute(simd_saturating_sub(a.as_u8x32(), b.as_u8x32())) } /// Unpacks and interleave 8-bit integers from the high half of each @@ -3807,14 +3807,6 @@ extern "C" { fn pabsw(a: i16x16) -> u16x16; #[link_name = "llvm.x86.avx2.pabs.d"] fn pabsd(a: i32x8) -> u32x8; - #[link_name = "llvm.x86.avx2.padds.b"] - fn paddsb(a: i8x32, b: i8x32) -> i8x32; - #[link_name = "llvm.x86.avx2.padds.w"] - fn paddsw(a: i16x16, b: i16x16) -> i16x16; - #[link_name = "llvm.x86.avx2.paddus.b"] - fn paddusb(a: u8x32, b: u8x32) -> u8x32; - #[link_name = "llvm.x86.avx2.paddus.w"] - fn paddusw(a: u16x16, b: u16x16) -> u16x16; #[link_name = "llvm.x86.avx2.pavg.b"] fn pavgb(a: u8x32, b: u8x32) -> u8x32; #[link_name = "llvm.x86.avx2.pavg.w"] @@ -3959,14 +3951,6 @@ extern "C" { fn psrlvq(a: i64x2, count: i64x2) -> i64x2; #[link_name = "llvm.x86.avx2.psrlv.q.256"] fn psrlvq256(a: i64x4, count: i64x4) -> i64x4; - #[link_name = "llvm.x86.avx2.psubs.b"] - fn psubsb(a: i8x32, b: i8x32) -> i8x32; - #[link_name = "llvm.x86.avx2.psubs.w"] - fn psubsw(a: i16x16, b: i16x16) -> i16x16; - #[link_name = "llvm.x86.avx2.psubus.b"] - fn psubusb(a: u8x32, b: u8x32) -> u8x32; - #[link_name = "llvm.x86.avx2.psubus.w"] - fn psubusw(a: u16x16, b: u16x16) -> u16x16; #[link_name = "llvm.x86.avx2.pshuf.b"] fn pshufb(a: u8x32, b: u8x32) -> u8x32; #[link_name = "llvm.x86.avx2.permd"] |
