我是对的,对任何浮点数的任何算术运算都是由IEEE浮点标准明确定义的吗?如果是的话,只是出于好奇,那是(+0)+(-0)什么?有没有办法在实践中用C++或其他常用的编程语言来检查这些东西?
如果我想在两个__m128i变量之间进行逐位相等测试,我是否需要使用SSE指令或者我可以使用==?如果没有,我应该使用哪条SSE指令?
我正在使用SSE内在函数来确定矩形(由四个int32值定义)是否已更改:
__m128i oldRect; // contains old left, top, right, bottom packed to 128 bits
__m128i newRect; // contains new left, top, right, bottom packed to 128 bits
__m128i xor = _mm_xor_si128(oldRect, newRect);
Run Code Online (Sandbox Code Playgroud)
此时,xor如果矩形未更改,则结果值将全为零.那么最有效的方法是什么呢?
目前我这样做:
if (xor.m128i_u64[0] | xor.m128i_u64[1])
{
// rectangle changed
}
Run Code Online (Sandbox Code Playgroud)
但我认为有一种更聪明的方法(可能使用了一些我还没有找到的SSE指令).
我在x64上定位SSE4.1,我在Visual Studio 2013中编写C++.