[llvm] [APFloat] Add APFloat support for E8M0 type (PR #107127)

Durgadoss R via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 6 06:35:56 PDT 2024


================
@@ -5790,6 +5872,46 @@ TEST(APFloatTest, Float8E4M3FNExhaustive) {
   }
 }
 
+TEST(APFloatTest, Float8E8M0FNExhaustive) {
+  // Test each of the 256 Float8E8M0FN values.
+  for (int i = 0; i < 256; i++) {
+    APFloat test(APFloat::Float8E8M0FN(), APInt(8, i));
+    SCOPED_TRACE("i=" + std::to_string(i));
+
+    // isLargest
+    if (i == 254) {
+      EXPECT_TRUE(test.isLargest());
+      EXPECT_EQ(abs(test).convertToDouble(), 0x1.0p127);
+    } else {
+      EXPECT_FALSE(test.isLargest());
+    }
+
+    // isSmallest
+    if (i == 0) {
+      EXPECT_TRUE(test.isSmallest());
+      EXPECT_EQ(abs(test).convertToDouble(), 0x1.0p-127);
+    } else {
+      EXPECT_FALSE(test.isSmallest());
+    }
+
+    // convert to Double
+    bool losesInfo;
+    std::string prefix = "0x1.0p";
+    std::string val = std::to_string(i - 127); // 127 is the bias
+    std::string final_str = prefix + val;
----------------
durga4github wrote:

Sure, fixed it in the latest revision.

https://github.com/llvm/llvm-project/pull/107127


More information about the llvm-commits mailing list