【发布时间】:2014-08-13 08:56:52
【问题描述】:
由于_mm_loadu_ps() Intrinsic 函数,我正在尝试将std::complex<float> 数组内容的实部加载到一个128 位寄存器中。
__m128 data_block;
complex<float> a[4];
a[0] = complex<float>(1.0, 2.0);
a[1] = complex<float>(3.0, 4.0);
a[2] = complex<float>(5.0, 6.0);
a[3] = complex<float>(7.0, 8.0);
data_block = _mm_loadu_ps(&a[0].real());
float b[4];
_mm_storeu_ps(b, data_block);
cout << b[0] << " " << b[1] << " " << b[2] << " " << b[3] << endl;
我得到了输出 1 2 3 4 而不是 1 3 5 7。
这是因为_mm_loadu_ps()函数加载了作为参数给出的地址之后的4个数据。
我知道我可以使用中间数组,但我的问题是:
是否有任何允许执行加载和存储操作的内部函数偏移量?所以我可以给sizeof(float)作为偏移量,只加载我数组的真实部分并在处理后存储它们。
提前谢谢你。
【问题讨论】: