about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2015-08-28 16:38:25 -0700
committerHuon Wilson <dbau.pp+github@gmail.com>2015-08-29 15:36:16 -0700
commit72382d247a008c4e51c2ce1e08b7c2a4ebd5e925 (patch)
tree02aa3da794e6baa2c0235e5a9f5842de0448b03f /src
parentee2de279965a27e8189a9129a4b3454dd82568b9 (diff)
downloadrust-72382d247a008c4e51c2ce1e08b7c2a4ebd5e925.tar.gz
rust-72382d247a008c4e51c2ce1e08b7c2a4ebd5e925.zip
Avoid eagerly stripping the common platform prefix.
This works better with the code generation approach.
Diffstat (limited to 'src')
-rw-r--r--src/librustc_platform_intrinsics/aarch64.rs2
-rw-r--r--src/librustc_platform_intrinsics/arm.rs4
-rwxr-xr-xsrc/librustc_platform_intrinsics/lib.rs6
-rw-r--r--src/librustc_platform_intrinsics/x86.rs8
4 files changed, 10 insertions, 10 deletions
diff --git a/src/librustc_platform_intrinsics/aarch64.rs b/src/librustc_platform_intrinsics/aarch64.rs
index 4f311a47807..259b21704df 100644
--- a/src/librustc_platform_intrinsics/aarch64.rs
+++ b/src/librustc_platform_intrinsics/aarch64.rs
@@ -17,7 +17,7 @@ macro_rules! p {
     }
 }
 pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
-    Some(match name {
+    Some(match name["aarch64_".len()..] {
         "vmaxvq_u8" => p!("umaxv.i8.v16i8", (i8x16) -> i8),
         "vmaxvq_u16" => p!("umaxv.i16.v8i16", (i16x8) -> i16),
         "vmaxvq_u32" => p!("umaxv.i32.v4i32", (i32x4) -> i32),
diff --git a/src/librustc_platform_intrinsics/arm.rs b/src/librustc_platform_intrinsics/arm.rs
index f29f7e384b4..b8a02773ec0 100644
--- a/src/librustc_platform_intrinsics/arm.rs
+++ b/src/librustc_platform_intrinsics/arm.rs
@@ -17,8 +17,8 @@ macro_rules! p {
     }
 }
 pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
-    if !name.starts_with("v") { return None }
-    Some(match &name["v".len()..] {
+    if !name.starts_with("arm_v") { return None }
+    Some(match &name["arm_v".len()..] {
         "sqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
         "sqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
 
diff --git a/src/librustc_platform_intrinsics/lib.rs b/src/librustc_platform_intrinsics/lib.rs
index 88ad2dce55c..5eb09aeb0dc 100755
--- a/src/librustc_platform_intrinsics/lib.rs
+++ b/src/librustc_platform_intrinsics/lib.rs
@@ -96,11 +96,11 @@ mod aarch64;
 impl Intrinsic {
     pub fn find<'tcx>(tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
         if name.starts_with("x86_") {
-            x86::find(tcx, &name["x86_".len()..])
+            x86::find(tcx, name)
         } else if name.starts_with("arm_") {
-            arm::find(tcx, &name["arm_".len()..])
+            arm::find(tcx, name)
         } else if name.starts_with("aarch64_") {
-            aarch64::find(tcx, &name["aarch64_".len()..])
+            aarch64::find(tcx, name)
         } else {
             None
         }
diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs
index cab7ab2fecb..ad5fcff8f58 100644
--- a/src/librustc_platform_intrinsics/x86.rs
+++ b/src/librustc_platform_intrinsics/x86.rs
@@ -18,8 +18,8 @@ macro_rules! p {
 }
 
 pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
-    if name.starts_with("mm_") {
-        Some(match &name["mm_".len()..] {
+    if name.starts_with("x86_mm_") {
+        Some(match &name["x86_mm_".len()..] {
             "sqrt_ps" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
             "sqrt_pd" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
 
@@ -105,8 +105,8 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
 
             _ => return None
         })
-    } else if name.starts_with("mm256_") {
-        Some(match &name["mm256_".len()..] {
+    } else if name.starts_with("x86_mm256_") {
+        Some(match &name["x86_mm256_".len()..] {
             "addsub_pd" => p!("avx.addsub.pd.256", (f64x4, f64x4) -> f64x4),
             "addsub_ps" => p!("avx.addsub.ps.256", (f32x8, f32x8) -> f32x8),
             "hadd_pd" => p!("avx.hadd.pd.256", (f64x4, f64x4) -> f64x4),