use __cpuid for msvc