summaryrefslogtreecommitdiff
path: root/include/llvm/IntrinsicsX86.td
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-07-12 09:31:43 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-07-12 09:31:43 +0000
commitb9bee0499553358e64c34cfcbd32380ac7fb452e (patch)
treea9168a3d1d6d1ffbafb4fcee06089d72972ed532 /include/llvm/IntrinsicsX86.td
parent4e8982a34da69effe23ce9c553680b19d7d57551 (diff)
downloadllvm-b9bee0499553358e64c34cfcbd32380ac7fb452e.tar.gz
llvm-b9bee0499553358e64c34cfcbd32380ac7fb452e.tar.bz2
llvm-b9bee0499553358e64c34cfcbd32380ac7fb452e.tar.xz
Add intrinsics for Ivy Bridge's rdrand instruction.
The rdrand/cmov sequence is the same that is emitted by both GCC and ICC. Fixes PR13284. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160117 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/IntrinsicsX86.td')
-rw-r--r--include/llvm/IntrinsicsX86.td11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/llvm/IntrinsicsX86.td b/include/llvm/IntrinsicsX86.td
index 14fd76d213..e8039f2358 100644
--- a/include/llvm/IntrinsicsX86.td
+++ b/include/llvm/IntrinsicsX86.td
@@ -2536,3 +2536,14 @@ let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
Intrinsic<[llvm_v8i16_ty], [llvm_v8f32_ty, llvm_i32_ty],
[IntrNoMem]>;
}
+
+//===----------------------------------------------------------------------===//
+// RDRAND intrinsics. Return a random value and whether it is valid.
+
+let TargetPrefix = "x86" in { // All intrinsics start with "llvm.x86.".
+ // These are declared side-effecting so they don't get eliminated by CSE or
+ // LICM.
+ def int_x86_rdrand_16 : Intrinsic<[llvm_i16_ty, llvm_i32_ty], [], []>;
+ def int_x86_rdrand_32 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], [], []>;
+ def int_x86_rdrand_64 : Intrinsic<[llvm_i64_ty, llvm_i32_ty], [], []>;
+}