【发布时间】:2018-01-30 19:30:42
【问题描述】:
我有一个充满 32 位整数的 __m128i 寄存器。我想从寄存器中提取第四个元素。
例如, 如果
int extract;
__m128i register = _mm_set_epi32(3,2,1,0);
然后我希望“提取”的值为 3。
似乎 _mm_extract_epi32() 应该完成这项工作。但是,它有一个 imm8 参数。
图片: description on Intel's website
我只是不明白imm8 是如何工作的(或者在这种情况下会工作)。
有人可以详细说明如何使用 imm8 作为参数吗?
【问题讨论】:
-
您是否尝试传递 3(或者如果顺序颠倒,则可能是 8-3)作为该参数的值?不必因为符号有点不寻常而复杂。
-
试过了,以前不行。也许是缺少一个#include 文件。现在很好,非常感谢
标签: c++ visual-studio x86 sse simd