]> git.lizzy.rs Git - rust.git/commitdiff
Add most SSE2 intrinsics.
authorHuon Wilson <dbau.pp+github@gmail.com>
Tue, 11 Aug 2015 00:15:34 +0000 (17:15 -0700)
committerHuon Wilson <dbau.pp+github@gmail.com>
Mon, 17 Aug 2015 21:41:39 +0000 (14:41 -0700)
src/librustc_platform_intrinsics/x86.rs

index 631e1c423182ad27c12fbe5af5a8792849ff68bb..6fda7f18e3e9cca49b8ae0b26a08c161b64189b5 100644 (file)
@@ -36,6 +36,30 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
         "mm_min_pd" => p!("sse2.min.pd", (f64x2, f64x2) -> f64x2),
 
         "mm_shuffle_epi8" => p!("ssse3.pshuf.b.128", (i8x16, i8x16) -> i8x16),
+
+        "mm_adds_epi16" => p!("sse2.padds.w", (i16x8, i16x8) -> i16x8),
+        "mm_adds_epi8" => p!("sse2.padds.b", (i8x16, i8x16) -> i8x16),
+        "mm_adds_epu16" => p!("sse2.paddus.w", (i16x8, i16x8) -> i16x8),
+        "mm_adds_epu8" => p!("sse2.paddus.b", (i8x16, i8x16) -> i8x16),
+        "mm_avg_epu16" => p!("sse2.pavg.w", (i16x8, i16x8) -> i16x8),
+        "mm_avg_epu8" => p!("sse2.pavg.b", (i8x16, i8x16) -> i8x16),
+        "mm_madd_epi16" => p!("sse2.pmadd.wd", (i16x8, i16x8) -> i32x4),
+        "mm_max_epi16" => p!("sse2.pmaxs.w", (i16x8, i16x8) -> i16x8),
+        "mm_max_epu8" => p!("sse2.pmaxu.b", (i8x16, i8x16) -> i8x16),
+        "mm_min_epi16" => p!("sse2.pmins.w", (i16x8, i16x8) -> i16x8),
+        "mm_min_epu8" => p!("sse2.pminu.b", (i8x16, i8x16) -> i8x16),
+        "mm_mul_epu32" => p!("sse2.pmulu.dq", (i32x4, i32x4) -> i64x2),
+        "mm_mulhi_epi16" => p!("sse2.pmulh.w", (i8x16, i8x16) -> i8x16),
+        "mm_mulhi_epu16" => p!("sse2.pmulhu.w", (i8x16, i8x16) -> i8x16),
+        "mm_packs_epi16" => p!("sse2.packsswb.128", (i16x8, i16x8) -> i8x16),
+        "mm_packs_epi32" => p!("sse2.packssdw.128", (i32x4, i32x4) -> i16x8),
+        "mm_packus_epi16" => p!("sse2.packuswb.128", (i16x8, i16x8) -> i8x16),
+        "mm_sad_epu8" => p!("sse2.psad.bw", (i8x16, i8x16) -> i64x2),
+        "mm_subs_epi16" => p!("sse2.psubs.w", (i16x8, i16x8) -> i16x8),
+        "mm_subs_epi8" => p!("sse2.psubs.b", (i8x16, i8x16) -> i8x16),
+        "mm_subs_epu16" => p!("sse2.psubus.w", (i16x8, i16x8) -> i16x8),
+        "mm_subs_epu8" => p!("sse2.psubus.b", (i8x16, i8x16) -> i8x16),
+
         _ => return None
     })
 }