1.SSE指令集简介
略。网上有很多资源,有兴趣的读者,可以扩展阅读一下,这里不再赘述。
2.SSE指令集支持情况判断原理
a.判断处理器是否支持SSE4.2,应采取如下方法:
true if CPUID.01H:ECX.SSE4_2[bit 20] = 1
b.判断处理器是否支持SSE4.1,应采取如下方法:
true if CPUID.01H:ECX.SSE4_1[bit 19] = 1
c.判断处理器是否支持SSSE3,应采取如下方法:
true if CPUID.01H:ECX.SSSE3[bit 9] = 1
d.判断处理器是否支持SSE2,应采取如下方法:
true if CPUID.01H:EDX.SSE2[bit 26] = 1
e.判断处理器是否支持SSE,应采取如下方法:
true if CPUID.01H:EDX.SSE2[bit 25] = 1
f.判断处理器是否支持MMX,应采取如下方法:
true if CPUID.01H:EDX.SSE2[bit 23] = 1
3.SSE指令使用扩展
a.在应用程序中使用CRC32指令之前,必须检查处理器是否支持SSE4.2.
b.在应用程序中试图使用POPCNT指令之前,同样也必须检查处理器是否支持SSE4.2.
c.在应用程序中试图使用CPUID指令之前,必须检查EFLAGS寄存器,若置位,则可使用。方法如下:
true if EFLAFS[bit 21] = 1
4.错误调试说明
a.在一个不支持SSE或SSE2的处理器上试图执行SSE或SSE2指令时,会产生一个invalid-opcode exception (#UD)错误.
b.如果当 CR0.TS[bit 3] = 1时,处理器试图执行SSE3指令时,SSE3, SSSE3 和 SSE4 将会产生一个DNA Exception (#NM)[Device Not Available (DNA) Exceptions]错误.
c.如果当CPUID.01H:ECX.SSE3[bit 0] = 0时,处理器试图执行SSE3指令时将会产生一个invalid opcode fault错误.
d.相似地,若出现a,b,c中类似的情况,处理器将会产生 invalid opcode fault.
5.判断系统支持SSE指令情况的C语言程序见附件。
|
文件: | ssetest.c.tar.gz |
大小: | 0KB |
下载: | 下载 |
|
阅读(4999) | 评论(1) | 转发(0) |