您的位置:首页 > 其它

测试amd cpu对intel sse指令集的支持情况

2011-03-05 08:55 831 查看
首先测试下sse4.1,源代码如下

#include <stdio.h>
#include <smmintrin.h>
int main()
{
__m128i a, b;
char * psA = (char * )&a;
char * psB = (char * )&b;
int i = 0 ;
for( ;   i < 16; ++i)
{
psA[i] = 0xcc; psB[i] = 0x33;
}
int sResult = _mm_testz_si128(a,b);
printf("sResult == %d/n",sResult);
}


编译方法

g++ -O2 -o1 -s -msse4.1 1.cpp

gdb报sigill,非法指令集,不支持sse4.1

接着测试sse3

#include <stdio.h>
#include <pmmintrin.h>
int main(){
__m128 a, b,c;
float * psA = (float*)&a;
psA[0] = 0.1f;psA[1]= 0.2f; psA[2]= 0.3f; psA[3]= 0.4f;
float * psB = (float*)&b;
psB[0] = 0.001f; psB[1] = 0.002f; psB[2] = 0.003f; psB[3] = 0.004f;
c = _mm_addsub_ps(a,b);
float * psC = (float*)&c;
printf("c[0] = %f,c[1] = %f,c[2] = %f,c[3] = %f", psC[0],psC[1],psC[2],psC[3]);
}


结果输出:

c[0] = 0.099000,c[1] = 0.202000,c[2] = 0.297000,c[3] = 0.404000

支持sse3

至于那个sse4a,那就真是算了,只有AMD支持,没有市场……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: