about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/etc/platform-intrinsics/arm.json18
-rw-r--r--src/etc/platform-intrinsics/x86/sse.json7
-rw-r--r--src/etc/platform-intrinsics/x86/sse2.json7
-rw-r--r--src/etc/platform-intrinsics/x86/sse42.json20
-rw-r--r--src/librustc_platform_intrinsics/arm.rs36
-rw-r--r--src/librustc_platform_intrinsics/x86.rs30
6 files changed, 71 insertions, 47 deletions
diff --git a/src/etc/platform-intrinsics/arm.json b/src/etc/platform-intrinsics/arm.json
index 29f69b4e7a5..97db7cbb3e0 100644
--- a/src/etc/platform-intrinsics/arm.json
+++ b/src/etc/platform-intrinsics/arm.json
@@ -337,56 +337,56 @@
             "args": ["0", "0"]
         },
         {
-            "intrinsic": "qtbl1_{0.data_type}",
+            "intrinsic": "tbl1_{0.data_type}",
             "width": [64],
             "llvm": "tbl1",
             "ret": "i8",
-            "args": ["0x128", "0u"]
+            "args": ["0", "0u"]
         },
         {
-            "intrinsic": "qtbx1_{0.data_type}",
+            "intrinsic": "tbx1_{0.data_type}",
             "width": [64],
             "llvm": "tbx1",
             "ret": "i8",
             "args": ["0", "0", "0u"]
         },
         {
-            "intrinsic": "qtbl2_{0.data_type}",
+            "intrinsic": "tbl2_{0.data_type}",
             "width": [64],
             "llvm": "tbl2",
             "ret": "i8",
             "args": ["(0,0)f", "0u"]
         },
         {
-            "intrinsic": "qtbx2_{0.data_type}",
+            "intrinsic": "tbx2_{0.data_type}",
             "width": [64],
             "llvm": "tbx2",
             "ret": "i8",
             "args": ["(0,0)f", "0u"]
         },
         {
-            "intrinsic": "qtbl3_{0.data_type}",
+            "intrinsic": "tbl3_{0.data_type}",
             "width": [64],
             "llvm": "tbl3",
             "ret": "i8",
             "args": ["(0,0,0)f", "0u"]
         },
         {
-            "intrinsic": "qtbx3_{0.data_type}",
+            "intrinsic": "tbx3_{0.data_type}",
             "width": [64],
             "llvm": "tbx3",
             "ret": "i8",
             "args": ["0", "(0,0,0)f", "0u"]
         },
         {
-            "intrinsic": "qtbl4_{0.data_type}",
+            "intrinsic": "tbl4_{0.data_type}",
             "width": [64],
             "llvm": "tbl4",
             "ret": "i8",
             "args": ["(0,0,0,0)f", "0u"]
         },
         {
-            "intrinsic": "qtbx4_{0.data_type}",
+            "intrinsic": "tbx4_{0.data_type}",
             "width": [64],
             "llvm": "tbx4",
             "ret": "i8",
diff --git a/src/etc/platform-intrinsics/x86/sse.json b/src/etc/platform-intrinsics/x86/sse.json
index 144d326ffd0..27da842934c 100644
--- a/src/etc/platform-intrinsics/x86/sse.json
+++ b/src/etc/platform-intrinsics/x86/sse.json
@@ -35,6 +35,13 @@
             "llvm": "rcp.ps",
             "ret": "f32",
             "args": ["0"]
+        },
+        {
+            "intrinsic": "_sqrt_ps",
+            "width": [128],
+            "llvm": "!llvm.sqrt.v4f32",
+            "ret": "f32",
+            "args": ["0"]
         }
     ]
 }
diff --git a/src/etc/platform-intrinsics/x86/sse2.json b/src/etc/platform-intrinsics/x86/sse2.json
index 2a3db561097..b2a3fe60f1a 100644
--- a/src/etc/platform-intrinsics/x86/sse2.json
+++ b/src/etc/platform-intrinsics/x86/sse2.json
@@ -100,6 +100,13 @@
             "args": ["u8", "u8"]
         },
         {
+            "intrinsic": "_sqrt_pd",
+            "width": [128],
+            "llvm": "!llvm.sqrt.v2f64",
+            "ret": "f64",
+            "args": ["0"]
+        },
+        {
             "intrinsic": "_subs_{0.data_type}",
             "width": [128],
             "llvm": "psub{0.kind_short}s.{0.data_type_short}",
diff --git a/src/etc/platform-intrinsics/x86/sse42.json b/src/etc/platform-intrinsics/x86/sse42.json
index 2961405a055..e63182d4857 100644
--- a/src/etc/platform-intrinsics/x86/sse42.json
+++ b/src/etc/platform-intrinsics/x86/sse42.json
@@ -25,7 +25,7 @@
         {
             "intrinsic": "_cmpestrm",
             "width": [128],
-            "llvm": "pcmpestrim128",
+            "llvm": "pcmpestrm128",
             "ret": "s8",
             "args": ["s8", "S32", "s8", "S32", "S32"]
         },
@@ -55,49 +55,49 @@
             "width": [128],
             "llvm": "pcmpistria128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistrc",
             "width": [128],
             "llvm": "pcmpistric128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistri",
             "width": [128],
-            "llvm": "pcmpistrii128",
+            "llvm": "pcmpistri128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistrm",
             "width": [128],
-            "llvm": "pcmpistrim128",
+            "llvm": "pcmpistrm128",
             "ret": "s8",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistro",
             "width": [128],
             "llvm": "pcmpistrio128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistrs",
             "width": [128],
             "llvm": "pcmpistris128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         },
         {
             "intrinsic": "_cmpistrz",
             "width": [128],
             "llvm": "pcmpistriz128",
             "ret": "S32",
-            "args": ["s8", "S32", "s8", "S32", "S32"]
+            "args": ["s8", "s8", "S32"]
         }
     ]
 }
diff --git a/src/librustc_platform_intrinsics/arm.rs b/src/librustc_platform_intrinsics/arm.rs
index 2d672870bb2..8ea725ee95d 100644
--- a/src/librustc_platform_intrinsics/arm.rs
+++ b/src/librustc_platform_intrinsics/arm.rs
@@ -2000,82 +2000,82 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
             output: v(f(32), 4),
             definition: Named("llvm.neon.vpminf.v4f32")
         },
-        "qtbl1_s8" => Intrinsic {
-            inputs: vec![v(i(8), 16), v(u(8), 8)],
+        "tbl1_s8" => Intrinsic {
+            inputs: vec![v(i(8), 8), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbl1")
         },
-        "qtbl1_u8" => Intrinsic {
-            inputs: vec![v(u(8), 16), v(u(8), 8)],
+        "tbl1_u8" => Intrinsic {
+            inputs: vec![v(u(8), 8), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbl1")
         },
-        "qtbx1_s8" => Intrinsic {
+        "tbx1_s8" => Intrinsic {
             inputs: vec![v(i(8), 8), v(i(8), 8), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbx1")
         },
-        "qtbx1_u8" => Intrinsic {
+        "tbx1_u8" => Intrinsic {
             inputs: vec![v(u(8), 8), v(u(8), 8), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbx1")
         },
-        "qtbl2_s8" => Intrinsic {
+        "tbl2_s8" => Intrinsic {
             inputs: vec![agg(true, vec![v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbl2")
         },
-        "qtbl2_u8" => Intrinsic {
+        "tbl2_u8" => Intrinsic {
             inputs: vec![agg(true, vec![v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbl2")
         },
-        "qtbx2_s8" => Intrinsic {
+        "tbx2_s8" => Intrinsic {
             inputs: vec![agg(true, vec![v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbx2")
         },
-        "qtbx2_u8" => Intrinsic {
+        "tbx2_u8" => Intrinsic {
             inputs: vec![agg(true, vec![v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbx2")
         },
-        "qtbl3_s8" => Intrinsic {
+        "tbl3_s8" => Intrinsic {
             inputs: vec![agg(true, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbl3")
         },
-        "qtbl3_u8" => Intrinsic {
+        "tbl3_u8" => Intrinsic {
             inputs: vec![agg(true, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbl3")
         },
-        "qtbx3_s8" => Intrinsic {
+        "tbx3_s8" => Intrinsic {
             inputs: vec![v(i(8), 8), agg(true, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbx3")
         },
-        "qtbx3_u8" => Intrinsic {
+        "tbx3_u8" => Intrinsic {
             inputs: vec![v(u(8), 8), agg(true, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbx3")
         },
-        "qtbl4_s8" => Intrinsic {
+        "tbl4_s8" => Intrinsic {
             inputs: vec![agg(true, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbl4")
         },
-        "qtbl4_u8" => Intrinsic {
+        "tbl4_u8" => Intrinsic {
             inputs: vec![agg(true, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbl4")
         },
-        "qtbx4_s8" => Intrinsic {
+        "tbx4_s8" => Intrinsic {
             inputs: vec![v(i(8), 8), agg(true, vec![v(i(8), 8), v(i(8), 8), v(i(8), 8), v(i(8), 8)]), v(u(8), 8)],
             output: v(i(8), 8),
             definition: Named("llvm.neon.vtbx4")
         },
-        "qtbx4_u8" => Intrinsic {
+        "tbx4_u8" => Intrinsic {
             inputs: vec![v(u(8), 8), agg(true, vec![v(u(8), 8), v(u(8), 8), v(u(8), 8), v(u(8), 8)]), v(u(8), 8)],
             output: v(u(8), 8),
             definition: Named("llvm.neon.vtbx4")
diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs
index f805f480ece..d86afa7f41f 100644
--- a/src/librustc_platform_intrinsics/x86.rs
+++ b/src/librustc_platform_intrinsics/x86.rs
@@ -45,6 +45,11 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
             output: v(f(32), 4),
             definition: Named("llvm.x86.sse.rcp.ps")
         },
+        "_sqrt_ps" => Intrinsic {
+            inputs: vec![v(f(32), 4)],
+            output: v(f(32), 4),
+            definition: Named("llvm.sqrt.v4f32")
+        },
         "_adds_epi8" => Intrinsic {
             inputs: vec![v(i(8), 16), v(i(8), 16)],
             output: v(i(8), 16),
@@ -155,6 +160,11 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
             output: v(u(64), 2),
             definition: Named("llvm.x86.sse2.psad.bw")
         },
+        "_sqrt_pd" => Intrinsic {
+            inputs: vec![v(f(64), 2)],
+            output: v(f(64), 2),
+            definition: Named("llvm.sqrt.v2f64")
+        },
         "_subs_epi8" => Intrinsic {
             inputs: vec![v(i(8), 16), v(i(8), 16)],
             output: v(i(8), 16),
@@ -378,7 +388,7 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
         "_cmpestrm" => Intrinsic {
             inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
             output: v(i(8), 16),
-            definition: Named("llvm.x86.sse42.pcmpestrim128")
+            definition: Named("llvm.x86.sse42.pcmpestrm128")
         },
         "_cmpestro" => Intrinsic {
             inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
@@ -396,37 +406,37 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
             definition: Named("llvm.x86.sse42.pcmpestriz128")
         },
         "_cmpistra" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
             definition: Named("llvm.x86.sse42.pcmpistria128")
         },
         "_cmpistrc" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
             definition: Named("llvm.x86.sse42.pcmpistric128")
         },
         "_cmpistri" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
-            definition: Named("llvm.x86.sse42.pcmpistrii128")
+            definition: Named("llvm.x86.sse42.pcmpistri128")
         },
         "_cmpistrm" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: v(i(8), 16),
-            definition: Named("llvm.x86.sse42.pcmpistrim128")
+            definition: Named("llvm.x86.sse42.pcmpistrm128")
         },
         "_cmpistro" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
             definition: Named("llvm.x86.sse42.pcmpistrio128")
         },
         "_cmpistrs" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
             definition: Named("llvm.x86.sse42.pcmpistris128")
         },
         "_cmpistrz" => Intrinsic {
-            inputs: vec![v(i(8), 16), i(32), v(i(8), 16), i(32), i(32)],
+            inputs: vec![v(i(8), 16), v(i(8), 16), i(32)],
             output: i(32),
             definition: Named("llvm.x86.sse42.pcmpistriz128")
         },