|
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" |
@@ -822,6 +823,7 @@ TEST_F(ConstantFPRangeTest, cast) { |
822 | 823 | const fltSemantics &F16Sem = APFloat::IEEEhalf(); |
823 | 824 | const fltSemantics &BF16Sem = APFloat::BFloat(); |
824 | 825 | const fltSemantics &F32Sem = APFloat::IEEEsingle(); |
| 826 | + const fltSemantics &F8NanOnlySem = APFloat::Float8E4M3FN(); |
825 | 827 | // normal -> normal (exact) |
826 | 828 | EXPECT_EQ(ConstantFPRange::getNonNaN(APFloat(1.0), APFloat(2.0)).cast(F32Sem), |
827 | 829 | ConstantFPRange::getNonNaN(APFloat(1.0f), APFloat(2.0f))); |
@@ -872,6 +874,11 @@ TEST_F(ConstantFPRangeTest, cast) { |
872 | 874 | .cast(F32Sem), |
873 | 875 | ConstantFPRange::getNaNOnly(F32Sem, /*MayBeQNaN=*/true, |
874 | 876 | /*MayBeSNaN=*/false)); |
| 877 | + // inf -> nan only (return full set for now) |
| 878 | + EXPECT_EQ(ConstantFPRange::getNonNaN(APFloat::getInf(Sem, /*Negative=*/true), |
| 879 | + APFloat::getInf(Sem, /*Negative=*/false)) |
| 880 | + .cast(F8NanOnlySem), |
| 881 | + ConstantFPRange::getFull(F8NanOnlySem)); |
875 | 882 |
|
876 | 883 | EnumerateValuesInConstantFPRange( |
877 | 884 | ConstantFPRange::getFull(APFloat::Float8E4M3()), |
|
0 commit comments