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で終了します。そうでない場合、実行するプログラムの終了コードを返します。

関連項目

llc(1)