在 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 中,将整数存储到向量的第二个元素中的主要内容,如果未能解决你的问题,请参考以下文章

LLVM IR:有效地对向量求和

获取指向 LLVM-IR 中数组第一个元素的指针

LLVM极简教程: 第三章 LLVM IR代码生成

在c ++中给出两个整数向量(相同的大小和类型),我想从最小到最大的元素对一个进行排序并更改第二个向量的顺序[重复]

使用整数向量的向量对整数向量进行基数排序

将一个向量交错和去交错成两个新向量