comparison cpudetect.c @ 35101:3e1a4184b70e

Add SSE3, SSE4, SSE4.2 and AVX detection. Patch by Xidorn Quan, quanxunzhen gmail
author cehoyos
date Fri, 14 Sep 2012 14:16:08 +0000
parents 064be070d8c8
children b4ce15212bfc
comparison
equal deleted inserted replaced
35100:bc7b006732c0 35101:3e1a4184b70e
313 caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000 313 caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000
314 caps->hasSSE = (regs2[3] & (1 << 25 )) >> 25; // 0x2000000 314 caps->hasSSE = (regs2[3] & (1 << 25 )) >> 25; // 0x2000000
315 caps->hasSSE2 = (regs2[3] & (1 << 26 )) >> 26; // 0x4000000 315 caps->hasSSE2 = (regs2[3] & (1 << 26 )) >> 26; // 0x4000000
316 caps->hasSSE3 = (regs2[2] & 1); // 0x0000001 316 caps->hasSSE3 = (regs2[2] & 1); // 0x0000001
317 caps->hasSSSE3 = (regs2[2] & (1 << 9 )) >> 9; // 0x0000200 317 caps->hasSSSE3 = (regs2[2] & (1 << 9 )) >> 9; // 0x0000200
318 caps->hasSSE4 = (regs2[2] & (1 << 19 )) >> 19; // 0x0080000
319 caps->hasSSE42 = (regs2[2] & (1 << 20)) >> 20; // 0x0100000
320 caps->hasAVX = (regs2[2] & (1 << 28 )) >> 28; // 0x10000000
318 caps->hasMMX2 = caps->hasSSE; // SSE cpus supports mmxext too 321 caps->hasMMX2 = caps->hasSSE; // SSE cpus supports mmxext too
319 cl_size = ((regs2[1] >> 8) & 0xFF)*8; 322 cl_size = ((regs2[1] >> 8) & 0xFF)*8;
320 if(cl_size) caps->cl_size = cl_size; 323 if(cl_size) caps->cl_size = cl_size;
321 324
322 ptmpstr=tmpstr=GetCpuFriendlyName(regs, regs2); 325 ptmpstr=tmpstr=GetCpuFriendlyName(regs, regs2);
455 caps->has3DNowExt=0; 458 caps->has3DNowExt=0;
456 caps->hasSSE=0; 459 caps->hasSSE=0;
457 caps->hasSSE2=0; 460 caps->hasSSE2=0;
458 caps->hasSSE3=0; 461 caps->hasSSE3=0;
459 caps->hasSSSE3=0; 462 caps->hasSSSE3=0;
463 caps->hasSSE4=0;
464 caps->hasSSE42=0;
460 caps->hasSSE4a=0; 465 caps->hasSSE4a=0;
466 caps->hasAVX=0;
461 caps->isX86=0; 467 caps->isX86=0;
462 caps->hasAltiVec = 0; 468 caps->hasAltiVec = 0;
463 #if HAVE_ALTIVEC 469 #if HAVE_ALTIVEC
464 #ifdef __APPLE__ 470 #ifdef __APPLE__
465 /* 471 /*