4

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

也就是说,如果我有一些指向x由 给出的浮点数组的指针{a, b},我希望以__mm256包含的结尾{a, b, a, b, a, b, a, b}

我的问题是,在转换为双数组后是否有任何潜在的问题可以_mm256_broadcast_sd用来实现这一点?x

所以:

__m256 vect = (__m256)_mm256_broadcast_sd((double *)x);
4

2 回答 2

3

是的,您可以安全地执行此操作;我过去曾这样做过。就我而言,我正在使用复数进行数学运算,其中每个组件都使用float. Using可用于在结果实例mm256_broadcast_sd()的 4 个位置中的每一个中插入一个复数,然后如果要对其进行操作,可以将其强制转换为 a。__m256d__m256float

于 2013-09-04T16:04:26.893 回答
2

那会很好用。

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

于 2013-09-04T16:07:43.630 回答