Skip to content

Commit c5045b5

Browse files
committed
[ConstantFPRange] Add unittests for fcmp. NFC.
1 parent fba9d95 commit c5045b5

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

llvm/unittests/IR/ConstantFPRangeTest.cpp

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,4 +633,65 @@ TEST_F(ConstantFPRangeTest, makeSatisfyingFCmpRegion) {
633633
}
634634
}
635635

636+
TEST_F(ConstantFPRangeTest, fcmp) {
637+
std::vector<ConstantFPRange> InterestingRanges;
638+
const fltSemantics &Sem = APFloat::Float8E4M3();
639+
auto FpImm = [&](double V) {
640+
bool ignored;
641+
APFloat APF(V);
642+
APF.convert(Sem, APFloat::rmNearestTiesToEven, &ignored);
643+
return APF;
644+
};
645+
646+
InterestingRanges.push_back(ConstantFPRange::getEmpty(Sem));
647+
InterestingRanges.push_back(ConstantFPRange::getFull(Sem));
648+
InterestingRanges.push_back(ConstantFPRange::getFinite(Sem));
649+
InterestingRanges.push_back(ConstantFPRange(FpImm(1.0)));
650+
InterestingRanges.push_back(
651+
ConstantFPRange(APFloat::getZero(Sem, /*Negative=*/false)));
652+
InterestingRanges.push_back(
653+
ConstantFPRange(APFloat::getZero(Sem, /*Negative=*/true)));
654+
InterestingRanges.push_back(
655+
ConstantFPRange(APFloat::getInf(Sem, /*Negative=*/false)));
656+
InterestingRanges.push_back(
657+
ConstantFPRange(APFloat::getInf(Sem, /*Negative=*/true)));
658+
InterestingRanges.push_back(
659+
ConstantFPRange(APFloat::getSmallest(Sem, /*Negative=*/false)));
660+
InterestingRanges.push_back(
661+
ConstantFPRange(APFloat::getSmallest(Sem, /*Negative=*/true)));
662+
InterestingRanges.push_back(
663+
ConstantFPRange(APFloat::getLargest(Sem, /*Negative=*/false)));
664+
InterestingRanges.push_back(
665+
ConstantFPRange(APFloat::getLargest(Sem, /*Negative=*/true)));
666+
InterestingRanges.push_back(
667+
ConstantFPRange::getNaNOnly(Sem, /*MayBeQNaN=*/true, /*MayBeSNaN=*/true));
668+
InterestingRanges.push_back(
669+
ConstantFPRange::getNonNaN(FpImm(0.0), FpImm(1.0)));
670+
InterestingRanges.push_back(
671+
ConstantFPRange::getNonNaN(FpImm(2.0), FpImm(3.0)));
672+
InterestingRanges.push_back(
673+
ConstantFPRange::getNonNaN(FpImm(-1.0), FpImm(1.0)));
674+
InterestingRanges.push_back(
675+
ConstantFPRange::getNonNaN(FpImm(-1.0), FpImm(-0.0)));
676+
InterestingRanges.push_back(ConstantFPRange::getNonNaN(
677+
APFloat::getInf(Sem, /*Negative=*/true), FpImm(-1.0)));
678+
InterestingRanges.push_back(ConstantFPRange::getNonNaN(
679+
FpImm(1.0), APFloat::getInf(Sem, /*Negative=*/false)));
680+
681+
for (auto &LHS : InterestingRanges) {
682+
for (auto &RHS : InterestingRanges) {
683+
for (auto Pred : FCmpInst::predicates()) {
684+
if (LHS.fcmp(Pred, RHS)) {
685+
EnumerateValuesInConstantFPRange(LHS, [&](const APFloat &LHSC) {
686+
EnumerateValuesInConstantFPRange(RHS, [&](const APFloat &RHSC) {
687+
EXPECT_TRUE(FCmpInst::compare(LHSC, RHSC, Pred))
688+
<< LHS << " " << Pred << " " << RHS << " doesn't hold";
689+
});
690+
});
691+
}
692+
}
693+
}
694+
}
695+
}
696+
636697
} // anonymous namespace

0 commit comments

Comments
 (0)