LLVM IRにバイト型を追加:生データ操作のネイティブサポート

2025-09-09

LLVMコンパイラインフラストラクチャのGoogle Summer of Code 2025プロジェクトは、生メモリ値を表す新しいバイト型をLLVM IRに正常に追加しました。これにより、memcpy、memmove、memcmpなどのメモリ固有の組込み関数のネイティブ実装が可能になり、不正確な変換が修正され、新しい最適化が可能になり、すべて最小限のパフォーマンス影響で実現されます。このプロジェクトは、生メモリを表す型がないというLLVMの長年の問題に対処し、ポインタの来歴追跡と正確なポイズンビット表現により、コンパイラの正確さと最適化が向上しました。C/C++の生メモリアクセスタイプに対するClangの処理も改善され、いくつかの不正確な最適化も修正されました。

続きを読む
開発

LLVM FortranコンパイラFlang:10年の歳月を経て正式リリース

2025-03-12

約10年の開発期間を経て、LLVM FortranコンパイラFlangがついに「flang-new」から「flang」へと正式に改名されました。この記事では、Flangの開発経緯を振り返り、米国国立研究所とNVIDIAによる初期開発から、LLVMのマルチレベル中間表現(MLIR)の採用、そしてLLVMプロジェクトへの統合に至るまでの道のりをたどります。Flangの誕生は、長期的な非独占的なFortranコンパイラを提供し、単一コンパイラによるリスクを軽減し、Fortranコミュニティの成長を促進することを目的としていました。Flangの軌跡は、Fortranコードの最適化におけるMLIRの活用など、コンパイラ技術の進歩も示しています。現在、AMDなどのベンダのサポートを受け、成熟し安定したFlangは、Fortran開発者にとって強力なツールとなっています。

続きを読む
開発

Lightstorm:ミニマルなRubyコンパイラがMLIRでパフォーマンス向上

2024-12-31

DragonRubyチームは、クロスプラットフォームゲームエンジンのパフォーマンス向上を目指して、LightstormというミニマルなRubyコンパイラを開発しました。MLIRを活用し、mruby仮想マシンのバイトコードをCコードに変換することで、VMインタプリタループ内のロード/ストアおよび分岐操作を排除し、パフォーマンスを最適化します。ベンチマークの結果、パフォーマンスは1%から1200%向上し、実行時間とサイクル数は平均で約30%削減されました。現在、Rubyのサブセットのみをサポートしていますが、このプロジェクトは、パフォーマンス向上のためのRubyコードの事前コンパイルの可能性を実証しています。今後の計画には、エンジンの重要なCコンポーネントをコンパイル済みRubyコードに置き換えることが含まれています。

続きを読む