about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRuud van Asseldonk <ruuda@google.com>2016-03-11 16:22:11 +0100
committerRuud van Asseldonk <ruuda@google.com>2016-03-13 15:04:14 +0100
commite1489caf0b1796db5dc5bc9946db0453838366ea (patch)
tree9d66a6ebc5dfc858fef74f2908bb577beed93ea7 /src
parentddfe9b6d7dff1d0e357a751229dec2db81a2267c (diff)
downloadrust-e1489caf0b1796db5dc5bc9946db0453838366ea.tar.gz
rust-e1489caf0b1796db5dc5bc9946db0453838366ea.zip
Define AVX blend intrinsics
This defines the `_mm256_blendv_pd` and `_mm256_blendv_ps` intrinsics.
The `_mm256_blend_pd` and `_mm256_blend_ps` intrinsics are not available
as LLVM intrinsics. In Clang they are implemented using the
shufflevector builtin.

Intel reference: https://software.intel.com/en-us/node/524070.
Diffstat (limited to 'src')
-rw-r--r--src/etc/platform-intrinsics/x86/avx.json7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/etc/platform-intrinsics/x86/avx.json b/src/etc/platform-intrinsics/x86/avx.json
index 0625ac63bf1..05a4721aed8 100644
--- a/src/etc/platform-intrinsics/x86/avx.json
+++ b/src/etc/platform-intrinsics/x86/avx.json
@@ -9,6 +9,13 @@
             "args": ["0", "0"]
         },
         {
+            "intrinsic": "256_blendv_{0.data_type}",
+            "width": [256],
+            "llvm": "blendv.{0.data_type}.256",
+            "ret": "f(32-64)",
+            "args": ["0", "0", "0"]
+        },
+        {
             "intrinsic": "256_broadcast_{0.data_type}",
             "width": [256],
             "llvm": "vbroadcastf128.{0.data_type}.256",