IR を含むLLVM モジュールから開始する*Mod
: 特定のバックエンドを使用して、そこからターゲット固有のアセンブラーを生成するにはどうすればよいですか? 残念ながら、万華鏡のチュートリアルでは、これについて詳しく説明していません。実行エンジンを使用してプログラムを (ビルド、ターゲット アーキテクチャで) JIT コンパイルするだけで、実際には特定のバックエンドを選択してターゲット固有のアセンブラーを生成するわけではありません。静的コンパイラの構築について詳しく説明していないため、LLVMチュートリアルもありません。したがって、この質問は、この不足している情報を提供することができます。
llc
静的コンパイラを構築したいので、ジョブを実行するために などのコマンド ライン ツールを使用したくありません。LLVM API を使用したいと考えています。
これをより具体的にするために、次のコードから始めましょう。
LLVMContext &Context = getGlobalContext();
SMDiagnostic Err;
Module *Mod = ParseIRFile(argv[1], Err, Context);
ファイル名 (第 1 引数で指定) は、IR に正常に解析されました。ここで、最適化パスをスキップして、PTX バックエンド (バージョン 3.2 以降で使用可能) など、特定のバックエンドを持つアセンブラーを作成しましょう。