Bah, you didn't state you were running Win95 again.
Client: Included in Windows XP, Windows 2000 Professional, and Windows NT Workstation 4.0.
iirc you need to use the old inline asm (cribbed from MAME):
Code:
CGLOBAL cpuid
cpuid:
push ebx
push ecx
push edx
mov eax,0
;// attempt to change the ID flag
pushfd
pop edx
xor edx,1<<21
push edx
popfd
;// if we can't, they definitely don't have any of these things
pushfd
pop ebx
xor edx,ebx
test edx,1<<21
jnz .Return
;// use CPUID
mov eax,1
cpuid
mov eax, edx
.Return:
pop edx
pop ecx
pop ebx
ret
Then:
UINT32 features = cpuid();
use_mmx = (features & (1 << 23));
use_sse = (features & (1 << 25));
use_sse2 = (features & (1 << 26));