more portable CPUID