|
7 | 7 | //===----------------------------------------------------------------------===// |
8 | 8 |
|
9 | 9 | #include "llvm/IR/ConstantFPRange.h" |
| 10 | +#include "llvm/ADT/APFloat.h" |
10 | 11 | #include "llvm/IR/Instructions.h" |
11 | 12 | #include "llvm/IR/Operator.h" |
12 | 13 | #include "gtest/gtest.h" |
@@ -771,6 +772,7 @@ TEST_F(ConstantFPRangeTest, cast) { |
771 | 772 | const fltSemantics &F16Sem = APFloat::IEEEhalf(); |
772 | 773 | const fltSemantics &BF16Sem = APFloat::BFloat(); |
773 | 774 | const fltSemantics &F32Sem = APFloat::IEEEsingle(); |
| 775 | + const fltSemantics &F8NanOnlySem = APFloat::Float8E4M3FN(); |
774 | 776 | // normal -> normal (exact) |
775 | 777 | EXPECT_EQ(ConstantFPRange::getNonNaN(APFloat(1.0), APFloat(2.0)).cast(F32Sem), |
776 | 778 | ConstantFPRange::getNonNaN(APFloat(1.0f), APFloat(2.0f))); |
@@ -821,6 +823,11 @@ TEST_F(ConstantFPRangeTest, cast) { |
821 | 823 | .cast(F32Sem), |
822 | 824 | ConstantFPRange::getNaNOnly(F32Sem, /*MayBeQNaN=*/true, |
823 | 825 | /*MayBeSNaN=*/false)); |
| 826 | + // inf -> nan only (return full set for now) |
| 827 | + EXPECT_EQ(ConstantFPRange::getNonNaN(APFloat::getInf(Sem, /*Negative=*/true), |
| 828 | + APFloat::getInf(Sem, /*Negative=*/false)) |
| 829 | + .cast(F8NanOnlySem), |
| 830 | + ConstantFPRange::getFull(F8NanOnlySem)); |
824 | 831 |
|
825 | 832 | EnumerateValuesInConstantFPRange( |
826 | 833 | ConstantFPRange::getFull(APFloat::Float8E4M3()), |
|
0 commit comments