]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/rdrand-builtins.c
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGen / rdrand-builtins.c
1 // RUN: %clang_cc1 -ffreestanding -triple x86_64-unknown-unknown -target-feature +rdrnd -target-feature +rdseed -emit-llvm -o - %s | FileCheck %s
2
3
4 #include <x86intrin.h>
5
6 int rdrand16(unsigned short *p) {
7   return _rdrand16_step(p);
8 // CHECK: @rdrand16
9 // CHECK: call { i16, i32 } @llvm.x86.rdrand.16
10 // CHECK: store i16
11 }
12
13 int rdrand32(unsigned *p) {
14   return _rdrand32_step(p);
15 // CHECK: @rdrand32
16 // CHECK: call { i32, i32 } @llvm.x86.rdrand.32
17 // CHECK: store i32
18 }
19
20 int rdrand64(unsigned long long *p) {
21   return _rdrand64_step(p);
22 // CHECK: @rdrand64
23 // CHECK: call { i64, i32 } @llvm.x86.rdrand.64
24 // CHECK: store i64
25 }
26
27 int rdseed16(unsigned short *p) {
28   return _rdseed16_step(p);
29 // CHECK: @rdseed16
30 // CHECK: call { i16, i32 } @llvm.x86.rdseed.16
31 // CHECK: store i16
32 }
33
34 int rdseed32(unsigned *p) {
35   return _rdseed32_step(p);
36 // CHECK: @rdseed32
37 // CHECK: call { i32, i32 } @llvm.x86.rdseed.32
38 // CHECK: store i32
39 }
40
41 int rdseed64(unsigned long long *p) {
42   return _rdseed64_step(p);
43 // CHECK: @rdseed64
44 // CHECK: call { i64, i32 } @llvm.x86.rdseed.64
45 // CHECK: store i64
46 }