100 static int iset = -1;
105 int abcd[4] = {0, 0, 0, 0};
107 if ( abcd[0] == 0 )
return iset;
109 if ( ( abcd[3] & ( 1 << 0 ) ) == 0 )
return iset;
110 if ( ( abcd[3] & ( 1 << 23 ) ) == 0 )
return iset;
111 if ( ( abcd[3] & ( 1 << 15 ) ) == 0 )
return iset;
112 if ( ( abcd[3] & ( 1 << 24 ) ) == 0 )
return iset;
113 if ( ( abcd[3] & ( 1 << 25 ) ) == 0 )
return iset;
115 if ( ( abcd[3] & ( 1 << 26 ) ) == 0 )
return iset;
117 if ( ( abcd[2] & ( 1 << 0 ) ) == 0 )
return iset;
119 if ( ( abcd[2] & ( 1 << 9 ) ) == 0 )
return iset;
121 if ( ( abcd[2] & ( 1 << 19 ) ) == 0 )
return iset;
123 if ( ( abcd[2] & ( 1 << 23 ) ) == 0 )
return iset;
124 if ( ( abcd[2] & ( 1 << 20 ) ) == 0 )
return iset;
126 if ( ( abcd[2] & ( 1 << 27 ) ) == 0 )
return iset;
127 if ( ( xgetbv( 0 ) & 6 ) != 6 )
return iset;
128 if ( ( abcd[2] & ( 1 << 28 ) ) == 0 )
return iset;
131 if ( ( abcd[1] & ( 1 << 5 ) ) == 0 )
return iset;
133 if ( ( abcd[1] & ( 1 << 16 ) ) == 0 )
return iset;
135 if ( ( abcd[0] & 0x60 ) != 0x60 )
return iset;
138 if ( ( abcd[1] & ( 1 << 31 ) ) == 0 )
return iset;
140 if ( ( abcd[1] & 0x40020000 ) != 0x40020000 )
return iset;
#define cpuid(func, eax, ebx, ecx, edx)