Proverava se VendorString :(
Sto se biblioteka tipa IPP (za optimizovane DSP performanse) tice, resenje za ovo je vrlo lako - napravi se custom IPP library (IPP Merged) gde vasa aplikacija sama radi inicijalizaciju IPP biblioteke na odgovarajuci CPU (tj. feature set) - i za to koristi vasu CPU detection rutinu.
Tako da MMX recimo savrseno radi i na AMD masinama, i sl... (provereno)
Za Intel kompajler je teze, jer on embeduje kod koji ne moze da se menja na visokom nivou... za to ne znam resenje.
Sto se tuzbe tice - cisto da objasnim o cemu se radi - naime Intel ne koristi feature flegove CPUID instrukcije, vec na osnovu VendorString-a i familije podesava tabelu skokova - svaka funkcija ima recimo cistu IA-32 (P54C), IA-32 + MMX (P55C), IA-32 + MMX + SSE, i sl... takodje je i cist IA-32 jako lose napisan (da li namerno ili ne.. to je vec druga stvar)
U slucaju AMD-a nikad nece doci do detekcije MMX/SSE registara i uvek ce se koristiti P54C set - sto performanse koda cini jadnjikavim ;-)
Medjutim, postavlja se pitanje kako ce se ovo zavrsiti jer:
- Intel zapravo proverava da li je CPU Intel (a ne da li je CPU AMD, pa radi nesto lose)
- Za svaki non-Intel CPU vazi isto pravilo
- Intel svoj kompajler prodaje kao optimizovan za Intel procesore, dakle u datasheetu nista ne lazu
Pitanje je, da li intel
mora da ukljuci MMX ako CPUID kaze da CPU podrzava MMX... recimo da se pojavi neki klon koji ima los MMX set - doslo bi do bagova u softveru za koje Intel ne bi bio odgovoran.
Tako da ce ova tuzba biti malo nategnuta...
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey