LLVM ICmpInst 中的 Opcode 代表什么?

What's the Opcode in LLVM ICmpInst represents for?

我通过以下代码获得了 ICmpInst 的操作码,

unsigned op = icmp->getOpcode();

现在我想根据操作码做不同的操作,所以我写了下面的代码,

switch (op){
    case 32:
        exp = (opl == opr);
        break;
    default:
        break;
}

问题来了,我只知道操作码'32'代表'eq',但是其他的呢? 我在哪里可以找到其他操作码代表或者有更有效的方法吗?

icmp 指令的操作码只是 Instruction::ICmp,但这并没有告诉您执行何种比较。它只告诉您您正在处理一条您已经知道的 icmp 指令。

你想要的是 getPredicate,returns Predicate enum 的值,它定义了像 CmpInst::ICMP_EQ 这样的常量,你可以在你的 switch 语句中使用。