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 <immintrin.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 | } |
47 | |