@@ -253,10 +253,19 @@ TEST_F(BuiltinTest, div) {
253253 " Divide by zero?" );
254254 }
255255
256- auto smallF16 = rewriter.getF16FloatAttr (0.0001 );
256+ auto BF16Type = rewriter.getBF16Type ();
257+ auto oneBF16 = rewriter.getFloatAttr (BF16Type, 1.0 );
258+ auto nineBF16 = rewriter.getFloatAttr (BF16Type, 9.0 );
259+
260+ // float: inexact result
261+ // return success(), but warning is emitted.
262+ {
263+ TestPDLResultList results (1 );
264+ EXPECT_TRUE (
265+ builtin::div (rewriter, results, {oneBF16, nineBF16}).succeeded ());
266+ }
267+
257268 auto twoF16 = rewriter.getF16FloatAttr (2.0 );
258- auto maxValF16 = rewriter.getF16FloatAttr (
259- llvm::APFloat::getLargest (llvm::APFloat::IEEEhalf ()).convertToFloat ());
260269 auto zeroF16 = rewriter.getF16FloatAttr (0.0 );
261270 auto negzeroF16 = rewriter.getF16FloatAttr (-0.0 );
262271
@@ -272,13 +281,6 @@ TEST_F(BuiltinTest, div) {
272281 EXPECT_TRUE (builtin::div (rewriter, results, {twoF16, negzeroF16}).failed ());
273282 }
274283
275- // float: overflow
276- {
277- TestPDLResultList results (1 );
278- EXPECT_TRUE (
279- builtin::div (rewriter, results, {maxValF16, smallF16}).failed ());
280- }
281-
282284 // float: correctness
283285 {
284286 TestPDLResultList results (1 );
@@ -456,19 +458,17 @@ TEST_F(BuiltinTest, add) {
456458 EXPECT_TRUE (builtin::add (rewriter, results, {oneI16, oneI32}).failed ());
457459 }
458460
459- auto oneF16 = rewriter.getF16FloatAttr (1.0 );
460461 auto oneF32 = rewriter.getF32FloatAttr (1.0 );
461462 auto zeroF32 = rewriter.getF32FloatAttr (0.0 );
462463 auto negzeroF32 = rewriter.getF32FloatAttr (-0.0 );
463464 auto zeroF64 = rewriter.getF64FloatAttr (0.0 );
464-
465- auto maxValF16 = rewriter.getF16FloatAttr (
466- llvm::APFloat::getLargest (llvm::APFloat::IEEEhalf ()).convertToFloat ());
465+ auto overflowF16 = rewriter.getF16FloatAttr (32768 );
467466
468467 // float: overflow
469468 {
470469 TestPDLResultList results (1 );
471- EXPECT_TRUE (builtin::add (rewriter, results, {oneF16, maxValF16}).failed ());
470+ EXPECT_TRUE (
471+ builtin::add (rewriter, results, {overflowF16, overflowF16}).failed ());
472472 }
473473
474474 // float: correctness
@@ -553,19 +553,17 @@ TEST_F(BuiltinTest, sub) {
553553 EXPECT_TRUE (builtin::sub (rewriter, results, {oneI16, oneI32}).failed ());
554554 }
555555
556- auto oneF16 = rewriter.getF16FloatAttr (1 .0 );
556+ auto oneF16 = rewriter.getF16FloatAttr (100 .0 );
557557 auto oneF32 = rewriter.getF32FloatAttr (1.0 );
558558 auto zeroF32 = rewriter.getF32FloatAttr (0.0 );
559559 auto negzeroF32 = rewriter.getF32FloatAttr (-0.0 );
560560 auto zeroF64 = rewriter.getF64FloatAttr (0.0 );
561-
562- auto maxValF16 = rewriter.getF16FloatAttr (
563- llvm::APFloat::getLargest (llvm::APFloat::IEEEhalf ()).convertToFloat ());
561+ auto minValF16 = rewriter.getF16FloatAttr (-65504 );
564562
565563 // float: overflow
566564 {
567565 TestPDLResultList results (1 );
568- EXPECT_TRUE (builtin::sub (rewriter, results, {maxValF16, oneF16 }).failed ());
566+ EXPECT_TRUE (builtin::sub (rewriter, results, {oneF16, minValF16 }).failed ());
569567 }
570568
571569 // float: correctness
0 commit comments