基本上这个问题与x86汇编有关,其中有一个数字,你想将它设置为零或数字本身,使用
现在我在SSE指令方面遇到的问题是,浮点数在二进制中与双精度浮点数不同(或者可能我弄错了)。无论如何,这就是代码,我尝试使用各种浮点数来屏蔽第二个和第三个数字(分别为127.0f和99.0f),但没有成功。
and
。如果你用负一and
这个数字,你会得到数字本身,但如果你用零and
它,你就得到了零。现在我在SSE指令方面遇到的问题是,浮点数在二进制中与双精度浮点数不同(或者可能我弄错了)。无论如何,这就是代码,我尝试使用各种浮点数来屏蔽第二个和第三个数字(分别为127.0f和99.0f),但没有成功。
#include <xmmintrin.h>
#include <stdio.h>
void print_4_bit_num(const char * label, __m128 var)
{
float *val = (float *) &var;
printf("%s: %f %f %f %f\n",
label, val[3], val[2], val[1], val[0]);
}
int main()
{
__m128 v1 = _mm_set_ps(1.0f, 127.0f, 99.0f, 1.0f);
__m128 v2 = _mm_set_ps(1.0f, 65535.0f, 127.0f, 0.0f);
__m128 v = _mm_and_ps(v1, v2);
print_4_bit_num("v1", v1);
print_4_bit_num("v2", v2);
print_4_bit_num("v ", v);
return 0;
}
_mm_castsi128_ps
和_mm_set_epi32
的头文件是什么?非常感谢。 - pandoragami#include "emmintrin.h"
。将来可以参考非常有用的Intel Intrinsics Guide。 - Paul R