【发布时间】:2013-08-30 15:11:50
【问题描述】:
我有一个包含一些 int 值的数组([position%2=0] 处的值为负,[position%2=1] 处的值为正)。
我想以 4 步将这些值从数组加载到寄存器,但我希望它们反转(正转换为负,反之亦然)
__m128i v1;
for (int k = 0; k < limit; k += 4) {
v1 = _mm_load_si128((__m128i *) & myArray[position + k]);
}
上面的 SSE 代码将值按原样加载到寄存器中:是否有命令取 v1 并将其反转?可以一步/命令完成吗?甚至可以直接从原始数组加载值吗?
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
如果您希望 -1 为 1 且 2 为 -2 则称为“否定”。反转是按位不,即反转值中的所有位,所以 -1 将变为 0