@@ -253,10 +253,19 @@ TEST_F(BuiltinTest, div) {
253
253
" Divide by zero?" );
254
254
}
255
255
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
+
257
268
auto twoF16 = rewriter.getF16FloatAttr (2.0 );
258
- auto maxValF16 = rewriter.getF16FloatAttr (
259
- llvm::APFloat::getLargest (llvm::APFloat::IEEEhalf ()).convertToFloat ());
260
269
auto zeroF16 = rewriter.getF16FloatAttr (0.0 );
261
270
auto negzeroF16 = rewriter.getF16FloatAttr (-0.0 );
262
271
@@ -272,13 +281,6 @@ TEST_F(BuiltinTest, div) {
272
281
EXPECT_TRUE (builtin::div (rewriter, results, {twoF16, negzeroF16}).failed ());
273
282
}
274
283
275
- // float: overflow
276
- {
277
- TestPDLResultList results (1 );
278
- EXPECT_TRUE (
279
- builtin::div (rewriter, results, {maxValF16, smallF16}).failed ());
280
- }
281
-
282
284
// float: correctness
283
285
{
284
286
TestPDLResultList results (1 );
@@ -456,19 +458,17 @@ TEST_F(BuiltinTest, add) {
456
458
EXPECT_TRUE (builtin::add (rewriter, results, {oneI16, oneI32}).failed ());
457
459
}
458
460
459
- auto oneF16 = rewriter.getF16FloatAttr (1.0 );
460
461
auto oneF32 = rewriter.getF32FloatAttr (1.0 );
461
462
auto zeroF32 = rewriter.getF32FloatAttr (0.0 );
462
463
auto negzeroF32 = rewriter.getF32FloatAttr (-0.0 );
463
464
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 );
467
466
468
467
// float: overflow
469
468
{
470
469
TestPDLResultList results (1 );
471
- EXPECT_TRUE (builtin::add (rewriter, results, {oneF16, maxValF16}).failed ());
470
+ EXPECT_TRUE (
471
+ builtin::add (rewriter, results, {overflowF16, overflowF16}).failed ());
472
472
}
473
473
474
474
// float: correctness
@@ -553,19 +553,17 @@ TEST_F(BuiltinTest, sub) {
553
553
EXPECT_TRUE (builtin::sub (rewriter, results, {oneI16, oneI32}).failed ());
554
554
}
555
555
556
- auto oneF16 = rewriter.getF16FloatAttr (1 .0 );
556
+ auto oneF16 = rewriter.getF16FloatAttr (100 .0 );
557
557
auto oneF32 = rewriter.getF32FloatAttr (1.0 );
558
558
auto zeroF32 = rewriter.getF32FloatAttr (0.0 );
559
559
auto negzeroF32 = rewriter.getF32FloatAttr (-0.0 );
560
560
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 );
564
562
565
563
// float: overflow
566
564
{
567
565
TestPDLResultList results (1 );
568
- EXPECT_TRUE (builtin::sub (rewriter, results, {maxValF16, oneF16 }).failed ());
566
+ EXPECT_TRUE (builtin::sub (rewriter, results, {oneF16, minValF16 }).failed ());
569
567
}
570
568
571
569
// float: correctness
0 commit comments