about summary refs log tree commit diff
path: root/src/etc
diff options
context:
space:
mode:
authorgnzlbg <gonzalobg88@gmail.com>2016-06-22 16:34:10 +0200
committergnzlbg <gonzalobg88@gmail.com>2016-06-22 16:34:10 +0200
commit10cbc37cddc9498532f87c299e120735b15f1adf (patch)
tree2371311c81683625608e53a983e34014725e9963 /src/etc
parent152055451c552121be35a179bb77194e02800baa (diff)
downloadrust-10cbc37cddc9498532f87c299e120735b15f1adf.tar.gz
rust-10cbc37cddc9498532f87c299e120735b15f1adf.zip
Add intrinsics for x86 bit manipulation instruction sets: BMI 1.0, BMI 2.0, and TBM.
Diffstat (limited to 'src/etc')
-rw-r--r--src/etc/platform-intrinsics/x86/bmi.json13
-rw-r--r--src/etc/platform-intrinsics/x86/bmi2.json27
-rw-r--r--src/etc/platform-intrinsics/x86/tbm.json13
3 files changed, 53 insertions, 0 deletions
diff --git a/src/etc/platform-intrinsics/x86/bmi.json b/src/etc/platform-intrinsics/x86/bmi.json
new file mode 100644
index 00000000000..24e2cbcf8aa
--- /dev/null
+++ b/src/etc/platform-intrinsics/x86/bmi.json
@@ -0,0 +1,13 @@
+{
+    "intrinsic_prefix": "_bmi",
+    "llvm_prefix": "llvm.x86.bmi.",
+    "intrinsics": [
+        {
+            "intrinsic": "_bextr_{0.bitwidth}",
+            "width": ["0"],
+            "llvm": "bextr.{0.bitwidth}",
+            "ret": "S(32-64)u",
+            "args": ["0", "0"]
+        }
+    ]
+}
diff --git a/src/etc/platform-intrinsics/x86/bmi2.json b/src/etc/platform-intrinsics/x86/bmi2.json
new file mode 100644
index 00000000000..f5a0db5ef51
--- /dev/null
+++ b/src/etc/platform-intrinsics/x86/bmi2.json
@@ -0,0 +1,27 @@
+{
+    "intrinsic_prefix": "_bmi2",
+    "llvm_prefix": "llvm.x86.bmi.",
+    "intrinsics": [
+        {
+            "intrinsic": "_bzhi_{0.bitwidth}",
+            "width": ["0"],
+            "llvm": "bzhi.{0.bitwidth}",
+            "ret": "S(32-64)u",
+            "args": ["0", "0"]
+        },
+        {
+            "intrinsic": "_pdep_{0.bitwidth}",
+            "width": ["0"],
+            "llvm": "pdep.{0.bitwidth}",
+            "ret": "S(32-64)u",
+            "args": ["0", "0"]
+        },
+        {
+            "intrinsic": "_pext_{0.bitwidth}",
+            "width": ["0"],
+            "llvm": "pext.{0.bitwidth}",
+            "ret": "S(32-64)u",
+            "args": ["0", "0"]
+        }
+    ]
+}
diff --git a/src/etc/platform-intrinsics/x86/tbm.json b/src/etc/platform-intrinsics/x86/tbm.json
new file mode 100644
index 00000000000..d1322cd60c4
--- /dev/null
+++ b/src/etc/platform-intrinsics/x86/tbm.json
@@ -0,0 +1,13 @@
+{
+    "intrinsic_prefix": "_tbm",
+    "llvm_prefix": "llvm.x86.tbm.",
+    "intrinsics": [
+        {
+            "intrinsic": "_bextri_u{0.bitwidth}",
+            "width": ["0"],
+            "llvm": "bextri.u{0.bitwidth}",
+            "ret": "S(32-64)u",
+            "args": ["0", "0"]
+        }
+    ]
+}