gpt4 book ai didi

c++ - LLVM传递计数 vector 类型指令

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:13 26 4
gpt4 key购买 nike

我正在尝试编写一个计算 vector 类型指令的 LLVM pass。
有关说明,例如:

  %24 = or <2 x i64> %21, %23
%25 = bitcast <16 x i8> %12 to <8 x i16>
%26 = shl <8 x i16> %25, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
%27 = bitcast <8 x i16> %26 to <2 x i64>

我写了这段代码:

for (auto &F : M) {      
for (auto &B : F) {
for (auto &I : B) {

if (auto* VI = dyn_cast<InsertElementInst>(&I)) {
Value* op = VI->getOperand(0);
if (op->getType()->isVectorTy()){
++vcount;
}

}

但出于某种原因if (auto* VI = dyn_cast<InsertElementInst>(&I))永远不会满足。知道为什么吗?

提前致谢。

最佳答案

InsertElementInst 是一个特定的指令(将一个元素插入到 vector 中)- 在您的指令列表中没有。

您可能想要 dyn_cast 到常规 使用InstructionI 中。

[我个人会使用其中一个函数或模块传递类作为基础,因此您只需要实现代码的内部循环,但这更像是“这就是您应该做的事情” ,而不是你必须做的事情才能让它发挥作用]。

关于c++ - LLVM传递计数 vector 类型指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com