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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章