#include #include #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { char module[] = "cpuctl"; char* msg[] = { "no", "yes" }; cpuctl_cpuid_count_args_t args; int fd, error, sse42; if (geteuid() == 0 && modfind(module) < 0) if (kldload(module) < 0 || modfind(module) < 0) err(1, "%s", module); args.level = 1; args.level_type = 0; fd = open("/dev/cpuctl0", O_RDONLY); if (fd < 0) err(1, "could not open /dev/cpuctl0 (need kmem group at least)"); error = ioctl(fd, CPUCTL_CPUID_COUNT, &args); if (error < 0) err(1, "ioctl(CPUCTL_CPUID_COUNT)"); sse42 = (args.data[2] & bit_SSE42) != 0; fprintf(stdout, "SSE4.2 support: %s\n", msg[sse42]); close(fd); return (0); }