_control87的文档说明:
_control87...如果存在,会影响x87和SSE2的控制字。
似乎SSE和SSE2 MXCSR控制寄存器是相同的,但是在文档中没有提到SSE单元。_control87是否会影响SSE单元的MXCSR控制寄存器,还是只适用于SSE2?
发布于 2013-11-18 11:52:27
我挖出了一个古老的奔腾III,并使用以下代码进行了检查:
#include <Windows.h>
#include <float.h>
#include <xmmintrin.h>
#include <iostream>
#include <iomanip>
int _tmain( int argc, _TCHAR* argv[] ) {
using namespace std;
// Unmask all SSE/SSE2 exceptions
_MM_SET_EXCEPTION_MASK( 0 );
// Get SSE/SSE2 exception mask
DWORD dwExceptionMask = _MM_GET_EXCEPTION_MASK();
cout << "Exception Mask: 0x" << hex << setw( 8 )
<< setfill( '0' ) << dwExceptionMask << endl;
// Mask all FPU exceptions
_control87( 0xFFFF, _MCW_EM );
// Get SSE/SSE2 exception mask
dwExceptionMask = _MM_GET_EXCEPTION_MASK();
cout << "Exception Mask: 0x" << hex << setw( 8 )
<< setfill( '0' ) << dwExceptionMask << endl;
return 0;
}奔腾III (SSE)结果:
Exception Mask: 0x00000000
Exception Mask: 0x00000000Xeon的结果(SSE,SSE2,SSE3,SSSE3):
Exception Mask: 0x00000000
Exception Mask: 0x00001e80结果令人惊讶,但与文档相符。只有在至少有一个_control87单元可用时,SSE2才会对MXCSR控制寄存器产生影响。
发布于 2013-11-18 11:37:41
一个MXCSR控制sse和sse2 (以及sse3和ssse3以及sse4.1和.)
https://stackoverflow.com/questions/20045968
复制相似问题