CmpInst::Predicate Pred =
CI ? CI->getPredicate() : static_cast<CmpInst::Predicate>(
cast<ConstantExpr>(U).getPredicate());
-
if (CmpInst::isIntPredicate(Pred))
MIRBuilder.buildICmp(Pred, Res, Op0, Op1);
+ else if (Pred == CmpInst::FCMP_FALSE)
+ MIRBuilder.buildConstant(Res, 0);
+ else if (Pred == CmpInst::FCMP_TRUE)
+ MIRBuilder.buildConstant(Res, 1);
else
MIRBuilder.buildFCmp(Pred, Res, Op0, Op1);
ret void
}
+; CHECK-LABEL: name: trivial_float_comparison
+; CHECK: [[R1:%[0-9]+]](s1) = G_CONSTANT i1 false
+; CHECK: [[R2:%[0-9]+]](s1) = G_CONSTANT i1 true
+; CHECK: G_ADD [[R1]], [[R2]]
+define i1 @trivial_float_comparison(double %a, double %b) {
+ %r1 = fcmp false double %a, %b
+ %r2 = fcmp true double %a, %b
+ %sum = add i1 %r1, %r2
+ ret i1 %sum
+}
+
@var = global i32 0
define i32* @test_global() {