LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations. |
来月にリリースが予定されているLLVM Clang 3.3で導入される新しい最適化機能のひとつ「SLPベクタライザ」に関して、実際にどのような機能が導入されるのかが「LLVM 3.3 Vectorization Improvements」で紹介された。SPL (Superword-Level Parallelism)はループ・ベクタライゼーションの手法およびベーシックなブロック・ベクタライゼーションの手法を利用した最適化手法。
SPLベクタライザは、類似してはいるが独立している複数の演算を、単一の演算に置き換えるという最適化を実施するもの。「LLVM 3.3 Vectorization Improvements」では、積算と加算を実施する処理が4回連続しているソースコードを、コンパイル後には単一のMultiply-Accumulate命令(vmla)へ置き換えるというARMv7向けの事例を示しながらこの機能を紹介している。SLPベクタライザに関してはすでにGCCが先行して実装している。
SPLベクタライザの機能は多くのケースで扱いやすい最適化手法だとしており、パフォーマンスの向上が期待できると説明がある。LLVM Clang 3.3では改善されたループ・ベクタライザとSPLベクタライザの導入で、従来のバージョンよりもより高速なコードを出力できると期待される。