两个固定长度的整数数组的元素和

时间:2012-09-08 18:44:28

标签: c algorithm sse

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

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};
... // funky code without loop so that
    // foo now is {0, 2, 4, 6, 8, 10, 12, 14, 16, 18}

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

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

1 个答案:

答案 0 :(得分:0)

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