1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-feature +rdrnd -target-feature +rdseed -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // Don't include mm_malloc.h, it's system specific. 4*67e74705SXin Li #define __MM_MALLOC_H 5*67e74705SXin Li 6*67e74705SXin Li #include <x86intrin.h> 7*67e74705SXin Li rdrand16(unsigned short * p)8*67e74705SXin Liint rdrand16(unsigned short *p) { 9*67e74705SXin Li return _rdrand16_step(p); 10*67e74705SXin Li // CHECK: @rdrand16 11*67e74705SXin Li // CHECK: call { i16, i32 } @llvm.x86.rdrand.16 12*67e74705SXin Li // CHECK: store i16 13*67e74705SXin Li } 14*67e74705SXin Li rdrand32(unsigned * p)15*67e74705SXin Liint rdrand32(unsigned *p) { 16*67e74705SXin Li return _rdrand32_step(p); 17*67e74705SXin Li // CHECK: @rdrand32 18*67e74705SXin Li // CHECK: call { i32, i32 } @llvm.x86.rdrand.32 19*67e74705SXin Li // CHECK: store i32 20*67e74705SXin Li } 21*67e74705SXin Li rdrand64(unsigned long long * p)22*67e74705SXin Liint rdrand64(unsigned long long *p) { 23*67e74705SXin Li return _rdrand64_step(p); 24*67e74705SXin Li // CHECK: @rdrand64 25*67e74705SXin Li // CHECK: call { i64, i32 } @llvm.x86.rdrand.64 26*67e74705SXin Li // CHECK: store i64 27*67e74705SXin Li } 28*67e74705SXin Li rdseed16(unsigned short * p)29*67e74705SXin Liint rdseed16(unsigned short *p) { 30*67e74705SXin Li return _rdseed16_step(p); 31*67e74705SXin Li // CHECK: @rdseed16 32*67e74705SXin Li // CHECK: call { i16, i32 } @llvm.x86.rdseed.16 33*67e74705SXin Li // CHECK: store i16 34*67e74705SXin Li } 35*67e74705SXin Li rdseed32(unsigned * p)36*67e74705SXin Liint rdseed32(unsigned *p) { 37*67e74705SXin Li return _rdseed32_step(p); 38*67e74705SXin Li // CHECK: @rdseed32 39*67e74705SXin Li // CHECK: call { i32, i32 } @llvm.x86.rdseed.32 40*67e74705SXin Li // CHECK: store i32 41*67e74705SXin Li } 42*67e74705SXin Li rdseed64(unsigned long long * p)43*67e74705SXin Liint rdseed64(unsigned long long *p) { 44*67e74705SXin Li return _rdseed64_step(p); 45*67e74705SXin Li // CHECK: @rdseed64 46*67e74705SXin Li // CHECK: call { i64, i32 } @llvm.x86.rdseed.64 47*67e74705SXin Li // CHECK: store i64 48*67e74705SXin Li } 49