• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

SSE

SSE are just an extension to the x86 machine code.
Therefore, they are issued just like regulare machine code.

However, you need to know if the computer you are running on does have SSE support or not, and I guess you need to ask the mobo that - so the mobo needs to figure it out.

I think you could possibly force a program to use SSE if you write it yourself, but it will hang immediately if run on a non-SSE machine.
 
ah, thanks. couldn't you do a CPUID (and whatever else apps like WCPUID use) and based on that info guess, just make the system requirements specific? just put a warning about incompatible hardware 😉

the result on a non-SSE CPU should be illegal instruction. can an application catch that, or only the OS? if the app can catch it, you could use that to decide also.
 
"the result on a non-SSE CPU should be illegal instruction. can an application catch that, or only the OS? if the app can catch it, you could use that to decide also."

No, not AFAIK. I just read about that in Hennessy and Patterson and it says there that an illegal instruction terminates an application. (Ch. 3, the part on exceptions)
 
crude workaround: run a config program, which writes a file, first it writes "UseSSE=false". attepmt an SSE instruction, write "UseSSE=true". crude, but functional (kinda) 😉
 
I don't want to contradict Hennessy and Patterson, but you can definitely trap invalid instructions in application code!

for example, say you want to determine if a computer has SSE. You simply query CPUID and check a status bit. But what if the CPU doesn't support the CPUID instruction (486 and below, and Cyrix 686s don't). Then you'll get an invalid opcode exception raised.

You get around that by using a try/catch exception handling block in C++, for example.

The code :

__try {
__asm xor eax, eax
__asm xor ebx, ebx
__asm xor ecx, ecx
__asm xor edx, edx
__asm cpuid
}
__except (EXCEPTION_EXECUTE_HANDLER) {
cerr << " CPU does NOT have CPUID capability!";
return;
}

does the trick.
 
Back
Top