【问题标题】:Invalid shufflevector operands! LLVM JavaCPP无效的 shufflevector 操作数! LLVM JavaCPP
【发布时间】:2018-11-25 05:58:32
【问题描述】:

我正在尝试使用 LLVMBuildShuffleVector 函数,它要求:

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

我有这两个 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!

这是什么原因?我错过了什么? 任何提示如何解决它?感谢您的所有帮助!

【问题讨论】:

    标签: llvm shuffle javacpp


    【解决方案1】:

    您的value1value2 是数组,但shufflevector 仅适用于向量。

    您需要更改创建这些数组的代码以创建向量,或者您需要创建包含数组元素的向量(尽管后一种选项没有多大意义,因为这没有比只自己选择单个元素而不使用shufflevector 有任何优势)。

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多