在 LLVM IR 中,将整数存储到向量的第二个元素中

Posted

技术标签:

【中文标题】在 LLVM IR 中,将整数存储到向量的第二个元素中【英文标题】:In LLVM IR, store an integer into the second element of a vector 【发布时间】:2018-03-31 13:49:32 【问题描述】:

我现在想将一个整数存储到向量的第二个元素中。向量是<2 x i64>,现在我只有它的指针<2 x i64>*。 我尝试了几种方法来获取指向其第二个元素的指针,但它们都失败了。 我尝试使用 getelementptr,但无法将 Ty 参数设置为 i64i64*,否则它会报告“assert (PointeeType == cast<PointerType>(Ptr->getType()->getScalarType())->getElementType()); failed”的错误。如果我将它设置为 NULL,我可以得到一个<2 x i64>*。 然后我尝试使用IRBuilder.CreateExtractElement先提取向量的第二个元素。但是拿到i64之后,我不知道怎么获取它的指针,因为我必须将store的第二个参数设置为i64

【问题讨论】:

llvm.org/docs/LangRef.html#insertelement-instruction 【参考方案1】:

嗯,一般来说,你不能“存储”到向量的第二个元素(如果它在寄存器中怎么办——地址是什么?)。

使用 insertelement 指令 (https://llvm.org/docs/LangRef.html#insertelement-instruction) 将标量元素放入向量中。

【讨论】:

你好,我能帮个小忙吗,你能看看这个问题吗:***.com/questions/50308253/…?

以上是关于在 LLVM IR 中,将整数存储到向量的第二个元素中的主要内容,如果未能解决你的问题,请参考以下文章