問題タブ [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.
c - C で LLVM IR コードを実行する
基本的に LLVM IR コードの一部を取得し、C でインラインで実行する方法を見つけようとしています。仮想関数呼び出しが不要になるように、IR コードをインライン化できるようにしたいと考えています (同じを使用してアセンブリ コードをインライン化する方法_asm{}
)。次の例を参照してください。
実行するLLVM IRコード:
C プログラム:
IRコードを使用して読み取り、parseIRFile()
関数へのポインターを作成できることはわかっていますが、仮想関数呼び出しが必要なため、それは私が探しているものではありません。
opencl - OpenCL カーネル プログラミングの一般的なバイナリ中間表現はありますか?
私が理解したように、OpenCL はカーネル関数を定義するための一般的な目的として (__global のようないくつかのキーワードを追加することによって) 変更された C 言語を使用します。そして今、私は F# 言語内でフロントエンドを実行しています。これには、メタ プログラミングを実行できるコード クォーテーション機能があります (ある種のリフレクション テクノロジと考えることができます)。そのため、C ソース ファイルの代わりにカーネルの一般的なバイナリ中間表現があるかどうかを知りたいです。
CUDA がバイナリ中間表現の LLVM IR をサポートしていることを知っているので、プログラムでカーネルを作成できます。OpenCL でも同じことをしたいと考えています。しかし、ドキュメントには、バイナリ形式は指定されていないと書かれており、各実装は独自のバイナリ形式を使用できます。プログラムで生成でき、NVIDIA、AMD、Intel の OpenCL 実装で実行できる汎用 IR はありますか?
ありがとう。
llvm - CreateLoad 関数に以前に割り当てられた llvm::Value へのポインタを取得します
私はllvmが初めてで、小さなllvm IRビルダーを書いています。IRBuilder とこれらすべての Create* 関数を使用して IR を生成します。私がやろうとしているのは、以前に割り当てられたllvm::Valueの値を持つ新しい SSA ローカル変数を作成するロード命令を作成することです。
私が期待していたもの:
%2ロード命令の結果と% 1以前に割り当てられた値 (CreateAlloca)
これが私が試したものです:
そして、ここに私が持っているものがあります:
locは、すべての llvm::Value* を含む配列です
私が間違っていることを教えてください。それとも、私が悪い道を進んでいるのですか?ありがとう。
llvm - LLVM IR getelementptr LLVM C API と同等
文字列内の文字数をカウントする LLVM アセンブリ コードを生成する LLVM C API コードを作成しようとしています。LLVM C API に相当する LLVM IR で getelementptr を記述する方法を知る必要があります。私はグーグル全体を見てきましたが、答えが見つからないようです。ヘルプやヒントをいただければ幸いです。前もって感謝します。
function - モジュール内のメイン関数の代わりに目的の関数を見つけるためにllvm passアーキテクチャを変更する
最終的な実行可能バイナリを生成せずに、LLVM ビットコードを最適化しようとしています。すべてのプロジェクトビットコードをリンクします。このテストでは、ビットコードにメイン関数はありませんが、LLVM は他の関数をインターナライズするためにモジュール内のメイン関数を見つける必要があります。プログラムのエントリポイントとしてメイン関数を探す代わりに、パスまたはパスマネージャーを変更するにはどうすればよいですか? 、私の特別な関数は foo1 のように見えますが、foo1 にメイン関数のルールがあるとしますか?
llvm - 配列パラメーターを使用した LLVM IR 関数
以下のような 2 つの基本的な C++ 関数から LLVM IR コードを生成したいと考えています。
私の問題は、LLVM API を使用して配列パラメーターのインデックスを取得することです。何か案は ?どうもありがとう
編集済み
これは、API を使用した私のコードです。
そして、これは生成される LLVM IR です:
配列アクセスが原因で、newFun の本体に固執しています。