Nishiki-Hub

国内外のPC/PCパーツ/スマホ/Appleなどの最新情報を取り上げています

「LLVM 18.1」が正式版に到達 ~ ClangがC23/C++23とともに「AVX10.1」をサポート

3行まとめ

LLVM 18.1が6日、正式版に到達しました。

LLVM

LLVMはこのバージョンよりGCCと同じバージョン管理となったため、v18.1とは言うものの、旧称では18.0となります。したがって、これがメジャーアップデートとなります。

LLVMの新機能は以下の通り。

  • Intel AVX10.1-256及びIntel AVX10.1-512のISAサポート
  • Intelの「Panther Lake」「Clearwater Forest」向けのターゲットの追加
  • Intel APX有効化の一環として「-mapxf」スイッチの追加
  • RISC-V命令サポートの追加
    • 「SiFive P670」ターゲットの新たなサポート
  • Arm「Cortex-A520」「Cortex-A720」「Cortex-X4」とマイコン向け「Cortex-M52」のサポート
  • LoongArchのLSX 128bit及び、LASX 256vit SIMD命令をサポート(詳しくは不明)

AVX10.1はIntelが発表しているAVX512の後継となるような拡張命令です。具体的には、AVX512の拡張が複雑であるため、AVX10で整理したうえで、これまでサポートしてこなかったEコア(Atom系統)のCPUアーキテクチャにもサポートを広げるというものになっています。AVX10は最終的にAVX512の全機能を包括する見込みとなっていますが、実際の導入自体は段階的で、10.1、10.2と続いていきます。具体的にどの製品にどのAVX10のリビジョンが搭載されるかは明かされていませんが、AVX10.1では新機能の実装はなく、基本的にXeonのみの対応に限られることが明らかになっています。なお、コンシューマ向けはわかりませんが、Xeon向けではAVX512も並行してサポートされる見込みになっているので、今後AVX512命令が削除されることはないでしょう(AMD CPUもサポートしていますし)。

また、APXについては今バージョンで完全なサポートとはいかず、まだ準備状態となっているようです。APXは、Intel ISA(CISC)の特徴である、可変長命令の特性を活かし、使用可能な汎用レジスタを倍増させることで、再コンパイルだけで高速化できるというものです。こちらは、コンパイラの動きを変更するものであるため、GCCやLLVMが大きく影響を受けます。

この2点の技術についての詳細は以下のエントリを御覧ください。

他方で、RISC-V、Arm、LoongArchでのサポート強化も進んでいます。特にArmについては、後述のClangでもSVE 2.1のサポートが組み込まれるなど、AI向けの機能拡充にLLVMも追従しています。LoongArchについては知識不足なのでわかりませんが、こちらも徐々に機能を拡充させてきている感じはしていますね。主に中国の開発者の方が貢献しているのでしょうか。興味本位でLoongArchプロセッサがほしいような感じもしますね。

Clang

Clangの今回のアップデートでは、C23やC++23のサポートをはじめ、多数の機能の追加が行われています。

  • C23/C++23/C++20のサポート、C++2cの初期的な対応
  • -std=c23-std=gnu23オプションのサポート
  • AVX10.1のサポートと、USER_MSRに対する追加機能
  • Intelの「Panther Lake」「Clearwater Forest」向けのターゲットの追加
  • 「OpenACC」のサポート準備
  • GCCとの相互運用性を強化
  • Clangの診断に対する改善
  • ARM SVE 2.1のアルファサポート
  • Clangの静的アナライザー用の新しい実験的チェッカ
  • Intel OpenMPのサポート

こちらは、C23やC++23のサポートが含まれています。GCC14がまだStableに至っていないので、現状メジャーなコンパイラでも最速のサポートになるはずです。

OpenACCは、異種混合なCPU/GPUシステムの並列プログラミングのための標準で、IntelのOpenMPと似たようなものですが、こちらはNVIDIAが中心となっています。OpenACCはClangのサポートを望んでおり、このバージョンから順次サポートされていく見込みです。

関連リンク