我通过遵循以下代码获得了ICmpInst的操作码,
unsigned op = icmp->getOpcode();
现在我想根据操作码进行不同的操作,所以我编写了以下代码,
switch (op){
case 32:
exp = (opl == opr);
break;
default:
break;
}
涉及到问题,我只知道操作码'32'代表'eq',但是其他呢? 在哪里可以找到其他代表的操作码,或者有没有更有效的方法?
答案 0 :(得分:3)
icmp
指令的操作码就是Instruction::ICmp
,但这并不能告诉您执行哪种比较。它只说明您正在处理一条icmp
指令,而该指令您已经知道。
您想要的是getPredicate
,它返回值Predicate
enum,该值定义了CmpInst::ICMP_EQ
之类的常量,您可以在switch语句中使用它。