0

假设我有两个固定长度的无符号整数数组。
我如何在不循环或使用较少循环数的情况下对这些数组(第一个)进行元素求和?

uint64_t foo[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
uint64_t bar[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
... // 没有循环的时髦代码
    // foo 现在是 {0, 2, 4, 6, 8, 10, 12, 14, 16, 18}

相关问题:是否可以在一次操作中对多个 uint64_t 整数求和?. (我打赌这可以用 sse 完成)

一般的问题是:对两个固定长度的整数类型数组求和(放在第一个数组中)的最快方法是什么?

4

1 回答 1

0

您可以使用_mm_add_epi64每次迭代添加两个 64 位整数。不过,我不希望对直接标量代码有显着的改进。如果您不想要一个显式循环,那么您可以将其展开为 5 个操作。

于 2012-09-08T20:03:44.183 回答