lli - LLVMビットコードからプログラムを直接実行する¶
概要¶
lli [オプション] [ファイル名] [プログラム引数]
説明¶
lli はLLVMビットコード形式のプログラムを直接実行します。LLVMビットコード形式のプログラムを受け取り、Just-In-Timeコンパイラまたはインタプリタを使用して実行します。
lli はエミュレータではありません。異なるアーキテクチャのIRを実行することはできず、ホストアーキテクチャの解釈(またはJITコンパイル)のみ可能です。
JITコンパイラは、llc のような他のツールと同じ引数を取りますが、インタプリタでは必ずしも動作するとは限りません。
ファイル名が指定されていない場合、lli は標準入力からプログラムのLLVMビットコードを読み込みます。
コマンドラインで指定されたオプションの引数は、プログラムに引数として渡されます。
一般オプション¶
- -fake-argv0=実行ファイル¶
実行中のプログラムに渡される
argv[0]
値を上書きします。
- -force-interpreter={false,true}¶
trueに設定すると、このアーキテクチャでJust-In-Timeコンパイラが利用可能な場合でもインタプリタを使用します。デフォルトはfalseです。
- -help¶
コマンドラインオプションの概要を表示します。
- -load=プラグインファイル名¶
lli にプラグインファイル名 という名前のプラグイン(共有オブジェクト)をロードさせ、最適化に使用します。
- -stats¶
コード生成パスからの統計情報を出力します。これは現在、Just-In-Timeコンパイラでのみ意味があります。
- -time-passes¶
各コード生成パスに必要な時間を記録し、標準エラーに出力します。
- -version¶
lli のバージョンを出力し、それ以外の操作を行わずに終了します。
ターゲットオプション¶
- -mtriple=ターゲットトリプル¶
入力ビットコードファイルで指定されたターゲットトリプルを、指定された文字列で上書きします。現在のシステムと互換性のないアーキテクチャを選択すると、クラッシュする可能性があります。
- -march=アーキテクチャ¶
アセンブリを生成するアーキテクチャを指定し、ビットコードファイルにエンコードされているターゲットを上書きします。有効なアーキテクチャのリストについては、 **llc -help** の出力をご覧ください。デフォルトでは、これはターゲットトリプルから推測されるか、現在のアーキテクチャに自動検出されます。
- -mcpu=CPU名¶
コードを生成する現在のアーキテクチャの特定のチップを指定します。デフォルトでは、これはターゲットトリプルから推測されるか、現在のアーキテクチャに自動検出されます。利用可能なCPUのリストについては、 **llvm-as < /dev/null | llc -march=xyz -mcpu=help** を使用してください。
- -mattr=a1,+a2,-a3,...¶
SIMD操作が有効かどうかなど、ターゲットの特定の属性を上書きまたは制御します。属性のデフォルトセットは、現在のCPUによって設定されます。利用可能な属性のリストについては、 **llvm-as < /dev/null | llc -march=xyz -mattr=help** を使用してください。
浮動小数点オプション¶
- -disable-excess-fp-precision¶
浮動小数点精度を向上させる可能性のある最適化を無効にします。
- -enable-no-infs-fp-math¶
無限大値がないことを前提とした最適化を有効にします。
- -enable-no-nans-fp-math¶
NaN値がないことを前提とした最適化を有効にします。
- -enable-unsafe-fp-math¶
lli に、浮動小数点精度を低下させる可能性のある最適化を有効にします。
- -soft-float¶
lli に、同等のハードウェア命令の代わりに、ソフトウェア浮動小数点ライブラリ呼び出しを生成させます。
コード生成オプション¶
- -code-model=モデル¶
コードモデルを選択してください
default: Target default code model tiny: Tiny code model small: Small code model kernel: Kernel code model medium: Medium code model large: Large code model
- -disable-post-RA-scheduler¶
レジスタ割り当て後のスケジューリングを無効にします。
- -disable-spill-fusing¶
スピルコードの命令への融合を無効にします。
- -jit-enable-eh¶
Just-In-Timeコンパイラで例外処理を有効にする必要があります。
- -join-liveintervals¶
コピーを合体させます(default=true)。
- -nozero-initialized-in-bss¶
ゼロ初期化されたシンボルをBSSセクションに配置しません。
- -pre-RA-sched=スケジューラ¶
利用可能な命令スケジューラ(レジスタ割り当て前)
=default: Best scheduler for the target =none: No scheduling: breadth first sequencing =simple: Simple two pass scheduling: minimize critical path and maximize processor utilization =simple-noitin: Simple two pass scheduling: Same as simple except using generic latency =list-burr: Bottom-up register reduction list scheduling =list-tdrr: Top-down register reduction list scheduling =list-td: Top-down list scheduler
- -regalloc=アロケータ¶
使用するレジスタアロケータ(default=linearscan)
=bigblock: Big-block register allocator =linearscan: linear scan register allocator =local: local register allocator =simple: simple register allocator
- -relocation-model=モデル¶
再配置モデルを選択してください
=default: Target default relocation model =static: Non-relocatable code =pic: Fully relocatable, position independent code =dynamic-no-pic: Relocatable external references, non-relocatable code
- -spiller¶
使用するスピラー(default=local)
=simple: simple spiller =local: local spiller
- -x86-asm-syntax=構文¶
X86バックエンドから出力するコードのスタイルを選択してください
=att: Emit AT&T-style assembly =intel: Emit Intel-style assembly
終了ステータス¶
lli がプログラムのロードに失敗した場合、終了コード1で終了します。そうでない場合、実行するプログラムの終了コードを返します。