問題タブ [llvm-ir]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2006 参照

c - C で LLVM IR コードを実行する

基本的に LLVM IR コードの一部を取得し、C でインラインで実行する方法を見つけようとしています。仮想関数呼び出しが不要になるように、IR コードをインライン化できるようにしたいと考えています (同じを使用してアセンブリ コードをインライン化する方法_asm{})。次の例を参照してください。

実行するLLVM IRコード:

C プログラム:

IRコードを使用して読み取り、parseIRFile()関数へのポインターを作成できることはわかっていますが、仮想関数呼び出しが必要なため、それは私が探しているものではありません。

0 投票する
1 に答える
376 参照

opencl - OpenCL カーネル プログラミングの一般的なバイナリ中間表現はありますか?

私が理解したように、OpenCL はカーネル関数を定義するための一般的な目的として (__global のようないくつかのキーワードを追加することによって) 変更された C 言語を使用します。そして今、私は F# 言語内でフロントエンドを実行しています。これには、メタ プログラミングを実行できるコード クォーテーション機能があります (ある種のリフレクション テクノロジと考えることができます)。そのため、C ソース ファイルの代わりにカーネルの一般的なバイナリ中間表現があるかどうかを知りたいです。

CUDA がバイナリ中間表現の LLVM IR をサポートしていることを知っているので、プログラムでカーネルを作成できます。OpenCL でも同じことをしたいと考えています。しかし、ドキュメントには、バイナリ形式は指定されていないと書かれており、各実装は独自のバイナリ形式を使用できます。プログラムで生成でき、NVIDIA、AMD、Intel の OpenCL 実装で実行できる汎用 IR はありますか?

ありがとう。

0 投票する
1 に答える
5147 参照

llvm - CreateLoad 関数に以前に割り当てられた llvm::Value へのポインタを取得します

私はllvmが初めてで、小さなllvm IRビルダーを書いています。IRBuilder とこれらすべての Create* 関数を使用して IR を生成します。私がやろうとしているのは、以前に割り当てられたllvm::Valueの値を持つ新しい SSA ローカル変数を作成するロード命令を作成することです。

私が期待していたもの:

%2ロード命令の結果と% 1以前に割り当てられた値 (CreateAlloca)

これが私が試したものです:

そして、ここに私が持っているものがあります:

locは、すべての llvm::Value* を含む配列です

私が間違っていることを教えてください。それとも、私が悪い道を進んでいるのですか?ありがとう。

0 投票する
1 に答える
873 参照

llvm - LLVM IR getelementptr LLVM C API と同等

文字列内の文字数をカウントする LLVM アセンブリ コードを生成する LLVM C API コードを作成しようとしています。LLVM C API に相当する LLVM IR で getelementptr を記述する方法を知る必要があります。私はグーグル全体を見てきましたが、答えが見つからないようです。ヘルプやヒントをいただければ幸いです。前もって感謝します。

0 投票する
1 に答える
795 参照

function - モジュール内のメイン関数の代わりに目的の関数を見つけるためにllvm passアーキテクチャを変更する

最終的な実行可能バイナリを生成せずに、LLVM ビットコードを最適化しようとしています。すべてのプロジェクトビットコードをリンクします。このテストでは、ビットコードにメイン関数はありませんが、LLVM は他の関数をインターナライズするためにモジュール内のメイン関数を見つける必要があります。プログラムのエントリポイントとしてメイン関数を探す代わりに、パスまたはパスマネージャーを変更するにはどうすればよいですか? 、私の特別な関数は foo1 のように見えますが、foo1 にメイン関数のルールがあるとしますか?

0 投票する
1 に答える
3897 参照

llvm - 配列パラメーターを使用した LLVM IR 関数

以下のような 2 つの基本的な C++ 関数から LLVM IR コードを生成したいと考えています。

私の問題は、LLVM API を使用して配列パラメーターのインデックスを取得することです。何か案は ?どうもありがとう

編集済み

これは、API を使用した私のコードです。

そして、これは生成される LLVM IR です:

配列アクセスが原因で、newFun の本体に固執しています。