在 LLVM IR 中,将整数存储到向量的第二个元素中
In LLVM IR, store an integer into the second element of a vector
我现在想将一个整数存储到向量的第二个元素中。向量是<2 x i64>
,现在我只有它的指针<2 x i64>*
。
我尝试了几种方法来获取指向其第二个元素的指针,但都失败了。
我尝试使用 getelementptr 但我无法将 Ty 参数设置为 i64
或 i64*
否则它会报告一个错误“assert (PointeeType == cast<PointerType>(Ptr->getType()->getScalarType())->getElementType());
失败的”。如果我将它设置为 NULL,我只能得到一个 <2 x i64>*
。
然后我尝试使用 IRBuilder.CreateExtractElement
先提取向量的第二个元素。但是在我得到 i64
之后,我不知道如何得到它的指针,因为我必须将商店的第二个参数设置为 i64
.
嗯,你不能 "store" 通常向量的第二个元素(如果它在寄存器中怎么办——地址是什么?)。
使用 insertelement 指令 (https://llvm.org/docs/LangRef.html#insertelement-instruction) 将标量元素放入向量中。
我现在想将一个整数存储到向量的第二个元素中。向量是<2 x i64>
,现在我只有它的指针<2 x i64>*
。
我尝试了几种方法来获取指向其第二个元素的指针,但都失败了。
我尝试使用 getelementptr 但我无法将 Ty 参数设置为 i64
或 i64*
否则它会报告一个错误“assert (PointeeType == cast<PointerType>(Ptr->getType()->getScalarType())->getElementType());
失败的”。如果我将它设置为 NULL,我只能得到一个 <2 x i64>*
。
然后我尝试使用 IRBuilder.CreateExtractElement
先提取向量的第二个元素。但是在我得到 i64
之后,我不知道如何得到它的指针,因为我必须将商店的第二个参数设置为 i64
.
嗯,你不能 "store" 通常向量的第二个元素(如果它在寄存器中怎么办——地址是什么?)。
使用 insertelement 指令 (https://llvm.org/docs/LangRef.html#insertelement-instruction) 将标量元素放入向量中。