about summary refs log tree commit diff
path: root/library/stdarch
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2019-07-31 12:28:15 +0200
committergnzlbg <gnzlbg@users.noreply.github.com>2019-12-18 17:41:21 +0100
commit4da22d5120c334f5619475d1f17212eceb0820ba (patch)
treef4971097f63d2c8ca0f8007df58a06775cd3b9e4 /library/stdarch
parent039944d3664decf5ca7e2e116bee9d5b1781e9ef (diff)
downloadrust-4da22d5120c334f5619475d1f17212eceb0820ba.tar.gz
rust-4da22d5120c334f5619475d1f17212eceb0820ba.zip
Use simd_saturating_* in x86/sse2.rs where possible
Diffstat (limited to 'library/stdarch')
-rw-r--r--library/stdarch/crates/core_arch/src/x86/sse2.rs32
1 files changed, 8 insertions, 24 deletions
diff --git a/library/stdarch/crates/core_arch/src/x86/sse2.rs b/library/stdarch/crates/core_arch/src/x86/sse2.rs
index 8230ac5ba97..3e738e33520 100644
--- a/library/stdarch/crates/core_arch/src/x86/sse2.rs
+++ b/library/stdarch/crates/core_arch/src/x86/sse2.rs
@@ -121,7 +121,7 @@ pub unsafe fn _mm_add_epi64(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(paddsb))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_adds_epi8(a: __m128i, b: __m128i) -> __m128i {
-    transmute(paddsb(a.as_i8x16(), b.as_i8x16()))
+    transmute(simd_saturating_add(a.as_i8x16(), b.as_i8x16()))
 }
 
 /// Adds packed 16-bit integers in `a` and `b` using saturation.
@@ -132,7 +132,7 @@ pub unsafe fn _mm_adds_epi8(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(paddsw))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_adds_epi16(a: __m128i, b: __m128i) -> __m128i {
-    transmute(paddsw(a.as_i16x8(), b.as_i16x8()))
+    transmute(simd_saturating_add(a.as_i16x8(), b.as_i16x8()))
 }
 
 /// Adds packed unsigned 8-bit integers in `a` and `b` using saturation.
@@ -143,7 +143,7 @@ pub unsafe fn _mm_adds_epi16(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(paddusb))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_adds_epu8(a: __m128i, b: __m128i) -> __m128i {
-    transmute(paddsub(a.as_u8x16(), b.as_u8x16()))
+    transmute(simd_saturating_add(a.as_u8x16(), b.as_u8x16()))
 }
 
 /// Adds packed unsigned 16-bit integers in `a` and `b` using saturation.
@@ -154,7 +154,7 @@ pub unsafe fn _mm_adds_epu8(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(paddusw))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_adds_epu16(a: __m128i, b: __m128i) -> __m128i {
-    transmute(paddsuw(a.as_u16x8(), b.as_u16x8()))
+    transmute(simd_saturating_add(a.as_u16x8(), b.as_u16x8()))
 }
 
 /// Averages packed unsigned 8-bit integers in `a` and `b`.
@@ -367,7 +367,7 @@ pub unsafe fn _mm_sub_epi64(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(psubsb))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_subs_epi8(a: __m128i, b: __m128i) -> __m128i {
-    transmute(psubsb(a.as_i8x16(), b.as_i8x16()))
+    transmute(simd_saturating_sub(a.as_i8x16(), b.as_i8x16()))
 }
 
 /// Subtract packed 16-bit integers in `b` from packed 16-bit integers in `a`
@@ -379,7 +379,7 @@ pub unsafe fn _mm_subs_epi8(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(psubsw))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_subs_epi16(a: __m128i, b: __m128i) -> __m128i {
-    transmute(psubsw(a.as_i16x8(), b.as_i16x8()))
+    transmute(simd_saturating_sub(a.as_i16x8(), b.as_i16x8()))
 }
 
 /// Subtract packed unsigned 8-bit integers in `b` from packed unsigned 8-bit
@@ -391,7 +391,7 @@ pub unsafe fn _mm_subs_epi16(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(psubusb))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_subs_epu8(a: __m128i, b: __m128i) -> __m128i {
-    transmute(psubusb(a.as_u8x16(), b.as_u8x16()))
+    transmute(simd_saturating_sub(a.as_u8x16(), b.as_u8x16()))
 }
 
 /// Subtract packed unsigned 16-bit integers in `b` from packed unsigned 16-bit
@@ -403,7 +403,7 @@ pub unsafe fn _mm_subs_epu8(a: __m128i, b: __m128i) -> __m128i {
 #[cfg_attr(test, assert_instr(psubusw))]
 #[stable(feature = "simd_x86", since = "1.27.0")]
 pub unsafe fn _mm_subs_epu16(a: __m128i, b: __m128i) -> __m128i {
-    transmute(psubusw(a.as_u16x8(), b.as_u16x8()))
+    transmute(simd_saturating_sub(a.as_u16x8(), b.as_u16x8()))
 }
 
 /// Shifts `a` left by `imm8` bytes while shifting in zeros.
@@ -3021,14 +3021,6 @@ extern "C" {
     fn lfence();
     #[link_name = "llvm.x86.sse2.mfence"]
     fn mfence();
-    #[link_name = "llvm.x86.sse2.padds.b"]
-    fn paddsb(a: i8x16, b: i8x16) -> i8x16;
-    #[link_name = "llvm.x86.sse2.padds.w"]
-    fn paddsw(a: i16x8, b: i16x8) -> i16x8;
-    #[link_name = "llvm.x86.sse2.paddus.b"]
-    fn paddsub(a: u8x16, b: u8x16) -> u8x16;
-    #[link_name = "llvm.x86.sse2.paddus.w"]
-    fn paddsuw(a: u16x8, b: u16x8) -> u16x8;
     #[link_name = "llvm.x86.sse2.pavg.b"]
     fn pavgb(a: u8x16, b: u8x16) -> u8x16;
     #[link_name = "llvm.x86.sse2.pavg.w"]
@@ -3051,14 +3043,6 @@ extern "C" {
     fn pmuludq(a: u32x4, b: u32x4) -> u64x2;
     #[link_name = "llvm.x86.sse2.psad.bw"]
     fn psadbw(a: u8x16, b: u8x16) -> u64x2;
-    #[link_name = "llvm.x86.sse2.psubs.b"]
-    fn psubsb(a: i8x16, b: i8x16) -> i8x16;
-    #[link_name = "llvm.x86.sse2.psubs.w"]
-    fn psubsw(a: i16x8, b: i16x8) -> i16x8;
-    #[link_name = "llvm.x86.sse2.psubus.b"]
-    fn psubusb(a: u8x16, b: u8x16) -> u8x16;
-    #[link_name = "llvm.x86.sse2.psubus.w"]
-    fn psubusw(a: u16x8, b: u16x8) -> u16x8;
     #[link_name = "llvm.x86.sse2.pslli.w"]
     fn pslliw(a: i16x8, imm8: i32) -> i16x8;
     #[link_name = "llvm.x86.sse2.psll.w"]