0

以下を要求する LLVMBuildShuffleVector 関数を使用しようとしています。

LLVMBuildShuffleVector (LLVMBuilderRef, LLVMValueRef V1, LLVMValueRef V2, LLVMValueRef Mask, const char *Name)

この 2 つの LLVMValueRef があります。

LLVMValueRef value1 = getChildren().get(0).getLlvmValueRef();
LLVMValueRef value2 = getChildren().get(1).getLlvmValueRef();

それらを使用して、マスクを作成します。これは LLVMValueRef でもあります。ここで、maskElemArray はマスクの要素を含む配列です。

LLVMValueRef mask = LLVMConstVector(new PointerPointer(maskElemArray), maskElemArray.length);

次に、LLVMBuildShuffleVector を呼び出す必要があります。

LLVMValueRef shuffleV = LLVMBuildShuffleVector(builderRef, value1, value2, mask, "shuffleV");

問題は、次のエラーが発生することです。

Invalid shufflevector operands!
  %shuffleV = shufflevector [8 x i8] %a3, [4 x i8] %b4, <11 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 8, i32 9, i32 10, i32 11>
LLVM ERROR: Broken module found, compilation aborted!

これの理由は何ですか?私は何が欠けていますか?それを解決する方法のヒントはありますか?ご助力いただきありがとうございます!

4

1 に答える 1