+Constant *
+ConstantExpr::getICmp(unsigned short pred, Constant* LHS, Constant* RHS) {
+ assert(LHS->getType() == RHS->getType());
+ assert(pred >= ICmpInst::FIRST_ICMP_PREDICATE &&
+ pred <= ICmpInst::LAST_ICMP_PREDICATE && "Invalid ICmp Predicate");
+ CompareConstantExpr *Result =
+ new CompareConstantExpr(Instruction::ICmp, pred, LHS, RHS);
+ return Result;
+}
+Constant *
+ConstantExpr::getFCmp(unsigned short pred, Constant* LHS, Constant* RHS) {
+ assert(LHS->getType() == RHS->getType());
+ assert(pred <= FCmpInst::LAST_FCMP_PREDICATE && "Invalid ICmp Predicate");
+ CompareConstantExpr *Result =
+ new CompareConstantExpr(Instruction::FCmp, pred, LHS, RHS);
+ return Result;
+}
+unsigned ConstantExpr::getPredicate() const {
+ assert(getOpcode() == Instruction::FCmp || getOpcode() == Instruction::ICmp);
+ return dynamic_cast<const CompareConstantExpr*>(this)->predicate;
+}