检测CPU支持的指令SSE

  最近学习SSE指令集,SSE全称是stream SIMD Extentions(流SIMD扩展) ,SSE指令采用128位存储单元,可以放置4个浮点数,也就是说一条命令可以执行4次浮点数运算。 SSE是为了更快地处理浮点数而开发的扩展指令集,因此该指令通常被用于几何运算方面,例如3D绘图应用软件、电脑游戏。对图形图像、多媒体感兴趣的,可以一起来研究研究。 
  下面先贴一段简单的检测程序,以后在找或者翻译两篇(e文比较烂 :~)

 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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值