ゼロ拡張命令と乗算命令を基本ブロックに挿入したいとします。入力は、私はLLVM C++ APIを使用してそれを行うにはどのように基本ブロックにゼロ拡張命令を挿入する
define void @DriverInit() {
EntryBlock:
%abc = call i32 @cuInit(i32 0)
%2 = zext i32 1 to i64
%3 = mul i64 %2, ptrtoint (i1** getelementptr (i1** null, i32 1) to i64)
ret void
}
、それを変換したい、
define void @DriverInit() {
EntryBlock:
%abc = call i32 @cuInit(i32 0)
ret void
}
のですか?私はゼロ拡張命令を作成するために、以下のコードを使用しますが、私はそれを行うことができません。
IRBuilder<> builder(BB);
Value *One = builder.getInt32(1);
Value *zer=builder.CreateZExt(One, IntegerType::getInt64Ty(M.getContext()),"1");
CreateZExtの第2引数は、ゼロ拡張したい宛先タイプです。間違っていると私を修正します。
私はLLVMの初心者であり、パスで使用する機能についての情報を得ることは困難です。ソースコードのdoxygenドキュメントを除き、どのようなリソースが利用できますか?
私はあなたの質問を理解していません - あなたは明確にすることができますか?あなたが持っているIRの入力は何ですか?作成したい出力は何ですか? 'mul'がやっている第二引数の中で、そのポインタの呪文は何ですか? –
入力機能に「EntryBlock」がある場合は、なぜ基本ブロックを作成していますか? – CAFxX
さらに、実際にあなたが達成しようとしていることを説明してから、あなたがやっている(間違った)方法を示す前に、それはおそらく助けになるでしょう。 – CAFxX