我希望广播加载一个__m256
向量,该向量具有与内存中相邻的4对浮点数。
也就是说,如果我有一些指向x
给出的浮点数组{a, b}
的指针,我希望得到一个包含__mm256
的{{1}}。
我的问题是,在将{a, b, a, b, a, b, a, b}
转换为双数组后使用_mm256_broadcast_sd
实现此问题是否存在任何潜在问题?
所以:
x
答案 0 :(得分:3)
是的,你可以安全地做到这一点;我过去做过这个。在我的例子中,我使用复数来做数学,其中每个组件都使用float
来保存。使用mm256_broadcast_sd()
可以在生成的__m256d
实例中的4个位置中的每个位置插入一个复数,如果要执行__m256
,则可以将其转换为float
{{1}} 1}}对它的操作。
答案 1 :(得分:2)
这样就可以了。
如果启用了对齐检查,则有关于8字节对齐的小细节,但是每个人都会在对齐检查时运行,所以这在实践中不是问题。