檢查了一下VC2012新增的Intrinsics函數集,發現它支持ARM指令和Haswell新指令


作者:zyl910

  之前我整理了一份VC6至VC2010中Intrinsics函數集對應表。現在VS2012發布了,它有沒有增加Intrinsics函數集呢?於是我對此進行檢查。

  若是64位win8系統中默認安裝的VS2012,Intrinsics頭文件位於“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include”目錄。

  首先發現多了兩個Intrinsics頭文件——
armintr.h:ARM的常用指令集。
arm_neon.h:ARM的neon指令集。

  看了一下intrin.h,發現以前大段的ARM Intrinsics被移到armintr.h中去了,現在的intrin.h只需引入armintr.h(擁有_M_ARM宏時)。
  但是intrin.h並沒有引入arm_neon.h。搜索了一下其他頭文件,也沒有引入arm_neon.h。看來不會自動引入,需要開發者根據情況手動引入arm_neon.h。

  又對比了一下原來就有Intrinsics頭文件,發現兩個文件增加了新的Intrinsics函數集——
immintrin.h:F16C、RDRAND、FSGSBASE、FMA、AVX2、BMI1、BMI2、LZCNT、INVPCID、HLE、RTM。
ammintrin.h:BMI1、TBM。

  指令簡介——
F16C、RDRAND、FSGSBASE:這些是Ivy Bridge架構的新指令。
FMA、AVX2、BMI1、BMI2、INVPCID、HLE、RTM:這些是Haswell架構的新指令。
LZCNT:AMD的ABM指令集,現在Intel對其支持。以前intrin.h有一個雙下划線版的,現在immintrin.h提供單下划線版。
TBM:AMD的TBM指令集。

  Haswell架構要到2013年第二季度才發售,VC2012已提前做好准備。


參考文獻——
《Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes:1, 2A, 2B, 2C, 3A, 3B, and 3C》044US. August 2012. http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
《Intel® Architecture Instruction Set Extensions Programming Reference》014. AUGUST 2012. http://software.intel.com/en-us/avx/
《AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions》. December 2011. http://developer.amd.com/documentation/guides/Pages/default.aspx#manuals
《Intrinsics頭文件與SIMD指令集、Visual Studio版本對應表》. http://www.cnblogs.com/zyl910/archive/2012/02/28/vs_intrin_table.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM