gpt4 book ai didi

visual-c++ - _control87() 是否也设置了 SSE MXCSR 控制寄存器?

转载 作者:行者123 更新时间:2023-12-01 11:41:33 25 4
gpt4 key购买 nike

_control87 的文档备注:

_control87 [...] affect[s] the control words for both the x87 and the SSE2, if present.

似乎 SSE 和 SSE2 MXCSR 控制寄存器是相同的,但是文档中没有提到 SSE 单元。 _control87 会影响 SSE 单元的 MXCSR 控制寄存器还是仅适用于 SSE2?

最佳答案

我翻出一台旧的 Pentium 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;
}

Pentium III (SSE) 的结果:

Exception Mask: 0x00000000
Exception Mask: 0x00000000

Xeon(SSE、SSE2、SSE3、SSSE3)的结果:

Exception Mask: 0x00000000
Exception Mask: 0x00001e80

结果令人惊讶,但与文档一致。 _control87 只有在至少有一个 SSE2 单元可用时才会对 MXCSR 控制寄存器产生影响。

关于visual-c++ - _control87() 是否也设置了 SSE MXCSR 控制寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20045968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com