about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2015-08-10 17:33:06 -0700
committerHuon Wilson <dbau.pp+github@gmail.com>2015-08-17 14:41:39 -0700
commitf6275b760c8638985cef7c6ee0a694a1b0eff661 (patch)
treef194acb089187c0fa69d068699fc95de3de83838
parent9d78efbd601935ec11ce1b5f3dbadb9e3123fe2b (diff)
downloadrust-f6275b760c8638985cef7c6ee0a694a1b0eff661.tar.gz
rust-f6275b760c8638985cef7c6ee0a694a1b0eff661.zip
Add most SSSE3 intrinsics.
-rw-r--r--src/librustc_platform_intrinsics/x86.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs
index bfbdc76beee..2085342d11d 100644
--- a/src/librustc_platform_intrinsics/x86.rs
+++ b/src/librustc_platform_intrinsics/x86.rs
@@ -64,7 +64,21 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
         "hsub_pd" => p!("sse3.hsub.pd", (f64x2, f64x2) -> f64x2),
         "hsub_ps" => p!("sse3.hsub.ps", (f32x4, f32x4) -> f32x4),
 
+        "abs_epi16" => p!("ssse3.pabs.w.128", (i16x8) -> i16x8),
+        "abs_epi32" => p!("ssse3.pabs.d.128", (i32x4) -> i32x4),
+        "abs_epi8" => p!("ssse3.pabs.b.128", (i8x16) -> i8x16),
+        "hadd_epi16" => p!("ssse3.phadd.w.128", (i16x8, i16x8) -> i16x8),
+        "hadd_epi32" => p!("ssse3.phadd.d.128", (i32x4, i32x4) -> i32x4),
+        "hadds_epi16" => p!("ssse3.phadd.sw.128", (i16x8, i16x8) -> i16x8),
+        "hsub_epi16" => p!("ssse3.phsub.w.128", (i16x8, i16x8) -> i16x8),
+        "hsub_epi32" => p!("ssse3.phsub.d.128", (i32x4, i32x4) -> i32x4),
+        "hsubs_epi16" => p!("ssse3.phsub.sw.128", (i16x8, i16x8) -> i16x8),
+        "maddubs_epi16" => p!("ssse3.pmadd.ub.sw.128", (i8x16, i8x16) -> i16x8),
+        "mulhrs_epi16" => p!("ssse3.pmul.hr.sw.128", (i16x8, i16x8) -> i16x8),
         "shuffle_epi8" => p!("ssse3.pshuf.b.128", (i8x16, i8x16) -> i8x16),
+        "sign_epi16" => p!("ssse3.psign.w.128", (i16x8, i16x8) -> i16x8),
+        "sign_epi32" => p!("ssse3.psign.d.128", (i32x4, i32x4) -> i32x4),
+        "sign_epi8" => p!("ssse3.psign.b.128", (i8x16, i8x16) -> i8x16),
         _ => return None
     })
 }