]> git.lizzy.rs Git - rust.git/commitdiff
Reorganise ARM intrinsic definitions.
authorHuon Wilson <dbau.pp+github@gmail.com>
Tue, 11 Aug 2015 16:55:16 +0000 (09:55 -0700)
committerHuon Wilson <dbau.pp+github@gmail.com>
Mon, 17 Aug 2015 21:41:40 +0000 (14:41 -0700)
src/librustc_platform_intrinsics/arm.rs

index ed1121b98df142fdd53f5a9c692c1eb6bc8ba66a..bc8740468890b376dbd0078e95aa6b62b199936e 100644 (file)
@@ -17,31 +17,27 @@ macro_rules! p {
     }
 }
 pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
-    Some(match name {
-        "vpmax_u8" => p!("vpmaxu.v8i8", (i8x8, i8x8) -> i8x8),
-        "vpmax_s8" => p!("vpmaxs.v8i8", (i8x8, i8x8) -> i8x8),
-        "vpmax_u16" => p!("vpmaxu.v4i16", (i16x4, i16x4) -> i16x4),
-        "vpmax_s16" => p!("vpmaxs.v4i16", (i16x4, i16x4) -> i16x4),
-        "vpmax_u32" => p!("vpmaxu.v2i32", (i32x2, i32x2) -> i32x2),
-        "vpmax_s32" => p!("vpmaxs.v2i32", (i32x2, i32x2) -> i32x2),
-
-        "vpmin_u8" => p!("vpminu.v8i8", (i8x8, i8x8) -> i8x8),
-        "vpmin_s8" => p!("vpmins.v8i8", (i8x8, i8x8) -> i8x8),
-        "vpmin_u16" => p!("vpminu.v4i16", (i16x4, i16x4) -> i16x4),
-        "vpmin_s16" => p!("vpmins.v4i16", (i16x4, i16x4) -> i16x4),
-        "vpmin_u32" => p!("vpminu.v2i32", (i32x2, i32x2) -> i32x2),
-        "vpmin_s32" => p!("vpmins.v2i32", (i32x2, i32x2) -> i32x2),
-
-        "vsqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
-        "vsqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
-
-        "vrecpeq_f32" => p!("vrecpe.v4f32", (f32x4) -> f32x4),
-        "vrsqrteq_f32" => p!("vrsqrte.v4f32", (f32x4) -> f32x4),
-        "vrsqrteq_f64" => p!("vrsqrte.v2f64", (f64x2) -> f64x2),
-
-        "vmaxq_f32" => p!("vmaxs.v4f32", (f32x4, f32x4) -> f32x4),
-
-        "vminq_f32" => p!("vmins.v4f32", (f32x4, f32x4) -> f32x4),
+    if !name.starts_with("v") { return None }
+    Some(match &name["v".len()..] {
+        "maxq_f32" => p!("vmaxs.v4f32", (f32x4, f32x4) -> f32x4),
+        "minq_f32" => p!("vmins.v4f32", (f32x4, f32x4) -> f32x4),
+        "pmax_s16" => p!("vpmaxs.v4i16", (i16x4, i16x4) -> i16x4),
+        "pmax_s32" => p!("vpmaxs.v2i32", (i32x2, i32x2) -> i32x2),
+        "pmax_s8" => p!("vpmaxs.v8i8", (i8x8, i8x8) -> i8x8),
+        "pmax_u16" => p!("vpmaxu.v4i16", (i16x4, i16x4) -> i16x4),
+        "pmax_u32" => p!("vpmaxu.v2i32", (i32x2, i32x2) -> i32x2),
+        "pmax_u8" => p!("vpmaxu.v8i8", (i8x8, i8x8) -> i8x8),
+        "pmin_s16" => p!("vpmins.v4i16", (i16x4, i16x4) -> i16x4),
+        "pmin_s32" => p!("vpmins.v2i32", (i32x2, i32x2) -> i32x2),
+        "pmin_s8" => p!("vpmins.v8i8", (i8x8, i8x8) -> i8x8),
+        "pmin_u16" => p!("vpminu.v4i16", (i16x4, i16x4) -> i16x4),
+        "pmin_u32" => p!("vpminu.v2i32", (i32x2, i32x2) -> i32x2),
+        "pmin_u8" => p!("vpminu.v8i8", (i8x8, i8x8) -> i8x8),
+        "recpeq_f32" => p!("vrecpe.v4f32", (f32x4) -> f32x4),
+        "rsqrteq_f32" => p!("vrsqrte.v4f32", (f32x4) -> f32x4),
+        "rsqrteq_f64" => p!("vrsqrte.v2f64", (f64x2) -> f64x2),
+        "sqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
+        "sqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
         _ => return None,
     })
 }