@@ -402,3 +402,61 @@ TEST(ScalarTest, TruncOrExtendTo) {
402
402
S.TruncOrExtendTo (16 , false );
403
403
EXPECT_EQ (S.UInt128 (APInt ()), APInt (16 , 0xffffu ));
404
404
}
405
+
406
+ TEST (ScalarTest, APFloatConstructor) {
407
+ llvm::APFloat my_single (llvm::APFloatBase::IEEEsingle (), " 3.14159" );
408
+ llvm::APFloat my_double (llvm::APFloatBase::IEEEdouble (), " 3.14159" );
409
+ Scalar S (my_single);
410
+ Scalar D (my_double);
411
+
412
+ EXPECT_EQ (S.GetType (), Scalar::e_float);
413
+ EXPECT_EQ (D.GetType (), Scalar::e_float);
414
+ ASSERT_TRUE (S != D);
415
+ }
416
+
417
+ TEST (ScalarTest, CreateAPFloats) {
418
+ llvm::APFloat ap_float (llvm::APFloatBase::IEEEsingle (), " 3.14159" );
419
+ llvm::APFloat ap_nan = llvm::APFloat::getNaN (llvm::APFloat::IEEEsingle ());
420
+ llvm::APSInt int1 (" 12" );
421
+ llvm::APSInt int2 (" -4" );
422
+ Scalar I1 (int1);
423
+ Scalar I2 (int2);
424
+ Scalar F (ap_float);
425
+
426
+ llvm::APFloat out1_float = I1.CreateAPFloatFromAPSInt (lldb::eBasicTypeFloat);
427
+ llvm::APFloat out1_double =
428
+ I1.CreateAPFloatFromAPSInt (lldb::eBasicTypeDouble);
429
+ llvm::APFloat out1_longdouble =
430
+ I1.CreateAPFloatFromAPSInt (lldb::eBasicTypeLongDouble);
431
+ llvm::APFloat out1_nan =
432
+ I1.CreateAPFloatFromAPSInt (lldb::eBasicTypeFloatComplex);
433
+ EXPECT_TRUE (!out1_float.isNegative ());
434
+ EXPECT_TRUE (!out1_double.isNegative ());
435
+ EXPECT_TRUE (out1_double.bitwiseIsEqual (out1_longdouble));
436
+ EXPECT_FALSE (out1_double.bitwiseIsEqual (out1_float));
437
+ EXPECT_TRUE (out1_nan.bitwiseIsEqual (ap_nan));
438
+
439
+ llvm::APFloat out2_float = I2.CreateAPFloatFromAPSInt (lldb::eBasicTypeFloat);
440
+ llvm::APFloat out2_double =
441
+ I2.CreateAPFloatFromAPSInt (lldb::eBasicTypeDouble);
442
+ llvm::APFloat out2_longdouble =
443
+ I2.CreateAPFloatFromAPSInt (lldb::eBasicTypeLongDouble);
444
+ llvm::APFloat out2_nan =
445
+ I2.CreateAPFloatFromAPSInt (lldb::eBasicTypeFloatComplex);
446
+ EXPECT_TRUE (out2_float.isNegative ());
447
+ EXPECT_TRUE (out2_double.isNegative ());
448
+ EXPECT_TRUE (out2_double.bitwiseIsEqual (out2_longdouble));
449
+ EXPECT_FALSE (out2_double.bitwiseIsEqual (out2_float));
450
+ EXPECT_TRUE (out2_nan.bitwiseIsEqual (ap_nan));
451
+
452
+ llvm::APFloat out3_float = F.CreateAPFloatFromAPFloat (lldb::eBasicTypeFloat);
453
+ llvm::APFloat out3_double =
454
+ F.CreateAPFloatFromAPFloat (lldb::eBasicTypeDouble);
455
+ llvm::APFloat out3_longdouble =
456
+ F.CreateAPFloatFromAPFloat (lldb::eBasicTypeLongDouble);
457
+ llvm::APFloat out3_nan =
458
+ F.CreateAPFloatFromAPFloat (lldb::eBasicTypeFloatComplex);
459
+ EXPECT_TRUE (out3_double.bitwiseIsEqual (out3_longdouble));
460
+ EXPECT_FALSE (out3_double.bitwiseIsEqual (out3_float));
461
+ EXPECT_TRUE (out3_nan.bitwiseIsEqual (ap_nan));
462
+ }
0 commit comments