使用英特尔编译器内在函数,给定一个128位寄存器,打包8个16位元素,如何从寄存器中访问(廉价)任意元素,以便后续使用_mm_cvtepi8_epi64(符号扩展两个8位元素,打包在较低位置) 16位寄存器,两个64位元素)?
我会解释为什么我问:
0x0和包装两个四字(64位)0xffff ffff ffff ffff.注意:输入缓冲区的值0x0和值0xff可以更改为最有用的值,前提是在总和之前屏蔽效果仍然存在.
从我的问题可以明显看出,我目前的计划如下,在输入缓冲区中流式传输:
谢谢,阿萨夫
在C++的"this"指针上执行指针运算有什么合法和/或有趣的用途,如果有的话?
为了让SE对这个问题的长度感到满意,我将包含一些相关的代码.
class Foo
{
public:
Foo(bool terminate = false)
: _data(terminate ? -1 : 0)
{}
void Bar(void)
{
if (_data >= 0)
{
_data++;
this[1].Bar();
}
}
private:
int _data;
};
void main()
{
std::vector<Foo> vec;
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo());
vec.push_back(Foo(true));
vec[2].Bar();
}
Run Code Online (Sandbox Code Playgroud)