将一对浮点数加载到矢量类型中,就像它是双精度数一样

时间:2013-09-04 15:33:11

标签: c optimization sse intrinsics avx

我希望广播加载一个__m256向量,该向量具有与内存中相邻的4对浮点数。

也就是说,如果我有一些指向x给出的浮点数组{a, b}的指针,我希望得到一个包含__mm256的{​​{1}}。

我的问题是,在将{a, b, a, b, a, b, a, b}转换为双数组后使用_mm256_broadcast_sd实现此问题是否存在任何潜在问题?

所以:

x

2 个答案:

答案 0 :(得分:3)

是的,你可以安全地做到这一点;我过去做过这个。在我的例子中,我使用复数来做数学,其中每个组件都使用float来保存。使用mm256_broadcast_sd()可以在生成的__m256d实例中的4个位置中的每个位置插入一个复数,如果要执行__m256,则可以将其转换为float {{1}} 1}}对它的操作。

答案 1 :(得分:2)

这样就可以了。

如果启用了对齐检查,则有关于8字节对齐的小细节,但是每个人都会在对齐检查时运行,所以这在实践中不是问题。