0

符号なし整数の固定長配列が 2 つあるとします。
ループせずに、または少ない数のループで、これらの配列を (最初に) 要素ごとに合計するにはどうすればよいですか?

uint64_t foo[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
uint64_t バー[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
... // ループのないファンキーなコードなので、
    // foo は {0, 2, 4, 6, 8, 10, 12, 14, 16, 18} になりました

関連する質問: 1 回の操作で複数の uint64_t 整数を合計することは可能ですか? . (これはsseでできると思います)

一般的な問題は次のとおりです。整数型の 2 つの固定長配列を (最初の配列に) 合計する最速の方法は何ですか?

4

1 に答える 1

0

_mm_add_epi64反復ごとに 2 つの 64 ビット整数を追加するために使用できます。ただし、ストレートなスカラー コードよりも劇的な改善は期待できません。明示的なループが必要ない場合は、これを 5 つの操作に展開できます。

于 2012-09-08T20:03:44.183 に答える