《在CC++代码中使用SSE等指令集的指令介绍》由会员分享,可在线阅读,更多相关《在CC++代码中使用SSE等指令集的指令介绍(7页珍藏版)》请在金锄头文库上搜索。
1、123451234567在C/C+代码中使用SSE等指令集的指令(1)介绍转自http:/ fstpQWORDPTRespcall_cosaddesp,8fldQWORDPTR_real4024000000000000callCIcos显然,使用了Intrinsics之后的cos函数的指令少了很多,其调用的内部函数是_Clcos(http:/ 函数名:这类函数名一般以_m开头。函数名称和指令名称有一定的关系。2. 加法实例:下面使用SSE指令集进行加法运算,一条指令对四个浮点数进行运算:1.#include2.#include3.4.main(intargc,char*argv)5.6._m1
2、28a;7._m128b;8.9.a=_mm_set_ps(1,2,3,4);/10.b=_mm_set_ps(1,2,3,4);/11.12._m128c=_mm_add_ps(a,b);/13.14.printf(0:%lfn,c.m128_f320);15.printf(1:%lfn,c.m128_f321);16.printf(2:%lfn,c.m128_f322);17.printf(3:%lfn,c.m128_f323);18.19.return0;20.c=a+bAssignvaluetoaAssignvaluetoa从代码看,好像很复杂,但是生成的汇编的效率会比较高。一条指令就完成了四个浮点数的加法,其运行结果如下:(5)总结:1.1 ntrinsics函数:能提高性能,会增大生成代码的大小,是编译器的”内置函数“。2.1 ntrinsics对指令的封装函数:直接映射到汇编指令,能简化汇编代码的编写,另外,隐藏了寄存器分配和调度等。由于涉及到的数据类型、函数等内容较多,这里只是一个简单的介绍。