1 / 19
文档名称:

intel手册附录 C.doc

格式:doc   大小:521KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

intel手册附录 C.doc

上传人:xgs758698 2016/8/13 文件大小:521 KB

下载得到文件列表

intel手册附录 C.doc

相关文档

文档介绍

文档介绍:附录 C IN TEL? C/C++ 内置函数及函数替换1 该附录中的两张表列出了 Intel C/C++ 编译器针对 MMX 技术,SSE,SSE2,SSE3,SSSE3 指令的内置函数和函数替换. 可能有些新增的内置函数并没有相应的指令替换. 请查阅编译器文档中列出的所有支持的内置函数 ht tp: //www .in om /s uppor t /pe r for ma n ce t oo ls/. 表 C-1 列出的是简单的内置函数,表 C-2 列出的复合内置函数. 某些内置函数是复合的, 因为这时需要多于一条指令去实现它们. Intel C/C ++ 编译器内置函数均依照以下约定: _m m_<in trin _op >_< su ffix > 其中:< intrin_o p> 指示内置函数的基本操作;如, add 为加, sub 为减< suffi x > 表示指令的操作数类型. 开头的一两个字母指示数据是否是紧缩(pac k ed p), 扩展紧缩(extend ed pac k ed ep), 或者标量( scalar s). 剩下的字母记录类型:s 单精度浮点数 d 双精度浮点数 i1 28 128 位有符号整数 i64 64 位有符号整数 u64 64 位无符号整数 i32 32 位有符号整数 u32 32 位无符号整数 i16 16 位有符号整数 u16 16 位无符号整数 i88 位有符号整数 u88 位无符号整数而r 一般被用作内置函数的返回值. r0 表示 r 的最低字. 紧缩值以从右到左的顺序描述, 最低值被用作标量操作. 考虑以下操作: doub lea [2] ={,};m12 8d t= _m m _load_ p d(a); 结果和以下操作相同:m12 8d t = _m m _s et _p d(,); m12 8d t= _m m _se tr_ p d(, ); 换句话说, 暂存变量 t 的 MMX 寄存器就像下图所示的样子: 12 764630 标量元素即 . 由于指令本身的关系, 某些内置函数需要立即数(整形字面常量)参数. 为了使用内置函数, 你可以按照下面的样子在你的代码中插入一行: data_ t ype intrinsic _na me (p ar a met ers) 其中: data_type 返回值的类型, 可以是 v oid, int, m6 4,m1 28, m12 8 d, 或者 m1 2 8i. 仅有_mm_empty 内置函数返回 void. intrin s ic_name 内置函数的名称. 它可以在源代码中表现为函数而不是内联实际指令. pa r amet e rs 内置函数需要的参数. 简单内置函数注如要查看表 C-1 中内置函数的详细描述, 请查阅《 Intel ? 64和 IA-32 架构软件开发者手册第2卷A 》第 3章“指令集参考,N-Z”或《 Intel ? 64 和 IA-32 架构软件开发者手册第2 卷A 》第 4 章“指令集参考,N-Z”. 表 C-1. 简单内置函数助记符内置函数 ADDPD __m12 8d _mm_add_pd( m128d a, m128d b) ADDPS __m128 _mm_add_ps( m128 a, m128 b) ADD SD __m12 8d _mm_add_sd( m128d a, m128d b) ADD SS __m128 _mm_add_ss( m128 a,m 128 b) ADD SUB PD m12 8d _mm_addsub_pd( m128d a, m128d b) ADD SUB PS m128 _mm_add s ub_ps( m1 28a, m128 b) ANDNPD m12 8d _mm_andn o t_pd( m128d a, m128d b) ANDNPS m128 _mm_andn o t_ps( m128 a, m128 b) ANDPD __m12 8d _mm_and_pd( m128d a,m 128d b) ANDPS __m128 _mm_and_ p s( m128 a, m128 b) BLENDPD __m12 8d _mm_bl en d_pd( m128d v 1, m128d v2, constint mask) BLENDPS m128 _mm_bl en d_ps( m128 v1, m 128 v2, c on stint mask) BLENDVPD m12 8d _mm_bl en dv_pd( m12 8d