すごい……
つまり、128ビットレジスターを使って4つの32ビットデータを一度にSIMD処理しているということか? 長い間それを考えていたが、加算の桁上がりが隣の値に影響するため、不可能だと思っていた。
その通りだ。128 ビットベクトルに 4 つの 32 ビット値を入れる。それぞれ独立に計算されるが、同時に処理される。
ところで、attribute ((aligned (16)))でコンパイル時にアラインメントを指示できるのに、なぜ alignup<16>関数を使っているのか?
すごい……
つまり、128ビットレジスターを使って4つの32ビットデータを一度にSIMD処理しているということか? 長い間それを考えていたが、加算の桁上がりが隣の値に影響するため、不可能だと思っていた。
その通りだ。128 ビットベクトルに 4 つの 32 ビット値を入れる。それぞれ独立に計算されるが、同時に処理される。
ところで、attribute ((aligned (16)))でコンパイル時にアラインメントを指示できるのに、なぜ alignup<16>関数を使っているのか?