检测CPU支持的指令SSE

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

最近学习SSE指令集,SSE全称是stream SIMD Extentions(流SIMD扩展) ,SSE指令采用128位存储单元,可以放置4个浮点数,也就是说一条命令可以执行4此浮点数运算。

下面是一段简单的检测程序

const DWORD _SSE_FEATURE_BIT = 0x02000000 //sse标识位

const DWORD _SSE2_FEATURE_BIT = 0x04000000; //sse2标识位

bool _IsFeature(DWORD dwRequestFeature)

{

// 通过设置eax积存器为1,然后调用cpuid即可从edx获得标识

DWORD dwFeature = 0;

__try

{

_asm

{

mov eax,1

cpuid

mov dwFeature,edx

}

}

__except ( EXCEPTION_EXECUTE_HANDLER)

{

return false;

}

if ((dwRequestFeature == _SSE_FEATURE_BIT ) &&(dwFeature & _SSE_FEATURE_BIT ))

{

__try {

__asm {

xorps xmm0, xmm0 //一条SSE指令

}

}

__except (EXCEPTION_EXECUTE_HANDLER)

{

return (0);

}

return(true);

}

else if ((dwRequestFeature == _SSE2_FEATURE_BIT) &&(dwFeature & _SSE2_FEATURE_BIT))

{

__try

{

__asm {

xorpd xmm0, xmm0

}

}

__except (EXCEPTION_EXECUTE_HANDLER)

{

return (0);

}

return(true);

}

return false;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有