スタッフのブログです。個以上あるコメントは受け付けない設定になってます。以前にgccでNEONのSIMD命令を生成させる方法という記事を書きましたが、今はかなり状況が変わっています。コンパイラのオートベクタライズの最適化はずっと進化していて、簡単なコンパイルオプションをつけるだけでNEONのSIMD命令を活用することができるようになっています。12.04LTSのarm-linux-gnueabihf-gccを使用しています。4.8を使っても同様です。整数演算のベクタライズ以下の関数はint配列の要素の相加平均を求めるものです。こんな単純な関数でもベクタライズの最適化を適用できます。つけるとベクタライズを行います。...SIMD命令が使われています。得られた結果は以下に貼りました。size;}先ほどと同様の相加平均を求める関数のfloat版です。.L7bxlrx86_64では-O3で浮動小数点演算もベクタライズされますが、ARMではそうなりません。その理由はNEONの浮動小数点演算はIEEE754標準の全てを満たしていないためです。コンパイルオプションを追加するとベクタライズされるようになります。これは「厳密さよりも速度優先」です。最適化に追加して厳密さを欠く最適化も行います。グラフィックスの座標計算のような用途ではこちらが適しています。...SIMD命令が使われています。得られた結果は以下に貼りました。