bool random_device::hasRDRAND() { if (!hasIntelCpu()) return false; CPUIDinfo info; cpuid_info(&info, 1, 0); static const constexpr unsigned int RDRAND_FLAG = (1 << 30); if ((info.ECX & RDRAND_FLAG) == RDRAND_FLAG) return true; return false; }
bool random_device::hasRdseed() { if (!hasIntelCpu()) return false; CPUIDinfo info; info.get(7, 0); static const constexpr unsigned int RDSEED_FLAG = (1 << 18); if ((info.ECX & RDSEED_FLAG) == RDSEED_FLAG) return true; return false; }