首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_control87()是否也设置SSE控件寄存器?

_control87()是否也设置SSE控件寄存器?
EN

Stack Overflow用户
提问于 2013-11-18 10:53:07
回答 2查看 706关注 0票数 3

_control87的文档说明:

_control87 ...如果存在,会影响x87和SSE2的控制字。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-18 11:52:27

我挖出了一个古老的奔腾III,并使用以下代码进行了检查:

代码语言:javascript
复制
#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)结果:

代码语言:javascript
复制
Exception Mask: 0x00000000
Exception Mask: 0x00000000

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

代码语言:javascript
复制
Exception Mask: 0x00000000
Exception Mask: 0x00001e80

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

票数 5
EN

Stack Overflow用户

发布于 2013-11-18 11:37:41

一个MXCSR控制sse和sse2 (以及sse3和ssse3以及sse4.1和.)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20045968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档