_set_SSE2_enable
启用或禁用在 CRT 数学例程中使用流式处理 SIMD 扩展 2 (SSE2) 指令。 (此函数在 x64 体系结构上不可用,因为默认情况下将启用 SSE2。)
语法
int _set_SSE2_enable(
int flag
);
参数
flag
1 表示启用 SSE2 实现;0 表示禁用 SSE2 实现。 默认情况下,在支持 SSE2 实现的处理器上启用 SSE2 实现。
返回值
如果启用 SSE2 实现,则值为非零;如果禁用 SSE2 实现,则值为零。
注解
下列函数具有 SSE2 实现,可通过使用 _set_SSE2_enable
进行启用:
这些函数的 SSE2 实现可能会给出与默认实现略有不同的答案。 SSE2 中间值是 64 位浮点量,但默认实现中间值为 80 位浮点量。
注意
如果使用 /Oi(生成内部函数)编译器选项编译项目,则可能出现 _set_SSE2_enable
似乎没有效果的情况。 /Oi 编译器选项为编译器提供使用内部函数的权限来替换 CRT 调用;此行为重写 _set_SSE2_enable
的效果。 如果要保证 /Oi 不会重写 _set_SSE2_enable
,请使用 /Oi- 来编译项目。 当使用暗示 /Oi 的其他编译器开关时,这也可能是一种好方法。
只有在屏蔽所有异常时才可使用 SSE2 实现。 使用 _control87
、_controlfp
屏蔽异常。
要求
例程 | 必需的标头 |
---|---|
_set_SSE2_enable |
<math.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
// crt_set_SSE2_enable.c
// processor: x86
#include <math.h>
#include <stdio.h>
int main()
{
int i = _set_SSE2_enable(1);
if (i)
printf("SSE2 enabled.\n");
else
printf("SSE2 not enabled; processor does not support SSE2.\n");
}
SSE2 enabled.