blob: 25393d7a3c24f09754d4d1d08ea94d8086ca3b09 [file] [log] [blame]
// { dg-do assemble { target { fpic } } }
// { dg-options "-mx32 -fPIC" }
// { dg-require-ifunc "" }
// { dg-require-effective-target maybe_x32 }
// { dg-require-effective-target rdrand }
void
__throw_runtime_error(const char*) __attribute__((__noreturn__));
unsigned int
__attribute__ ((target("rdrnd")))
__x86_rdrand(void)
{
unsigned int retries = 100;
unsigned int val;
while (__builtin_ia32_rdrand32_step(&val) == 0)
if (--retries == 0)
__throw_runtime_error(("random_device::__x86_rdrand(void)"));
return val;
}