关于CPU的SSE指令集C++代码

时间:2021-02-04 00:59:27

仅VS2002及以上才支持SSE指令函数库

目前市面上的大多数CPU(Intel、AMD)均支持SSE指令集

 

使用SSE指令函数需要包含以下头文件

#include <xmmintrin.h>

 

SSE指令的细节这里不详细说明,这里只说一说批量计算功能

但这个批量也仅仅是一次处理4个32位符点数,或者其它,它的一次数据传送量为128位,即16字节。

所以在处理大量数组的情况下SSE指令集就比普通汇编指令有着明显的优势。

 

在xmmintrin.h头文件里包含一些函数:

主要有加、减、剩、除、开方、倒数、最大最小等等算术函数,与、或、非等逻辑函数,

以及各种比较函数和转换函数,具体请看看该头文件。

 

SSE指令运算寄存变量是 __m128 ,这个在xmmintrin.h有定义。

 

例如DX中常用的D3DXVec3Cross函数我们可以改写一样(这里不考虑效率,仅供学习SSE指令)

DX的D3DXVec3Cross函数如下:

我们用SSE指令改写如下(需要CPU支持SSE):

_mm_set_ps 初始化一个__m128变量

_mm_mul_ps 计算两个值的乘法,结果传回到次变量中

_mm_sub_ps 减法

 

 

其实就这么简单,其它常用的有

_mm_div_ss 除法

_mm_sqrt_ss 开方

....等等其它