LLVM ICmpInst中的操作码代表什么?

时间:2020-04-15 14:51:27

标签: llvm

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

unsigned op = icmp->getOpcode();

现在我想根据操作码进行不同的操作,所以我编写了以下代码,

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

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

1 个答案:

答案 0 :(得分:3)

icmp指令的操作码就是Instruction::ICmp,但这并不能告诉您执行哪种比较。它只说明您正在处理一条icmp指令,而该指令您已经知道。

您想要的是getPredicate,它返回值Predicate enum,该值定义了CmpInst::ICMP_EQ之类的常量,您可以在switch语句中使用它。