@@ -24,6 +24,8 @@ const __fixdfdi = @import("fixdfdi.zig").__fixdfdi;
24
24
const __fixunsdfdi = @import ("fixunsdfdi.zig" ).__fixunsdfdi ;
25
25
const __fixdfti = @import ("fixdfti.zig" ).__fixdfti ;
26
26
const __fixunsdfti = @import ("fixunsdfti.zig" ).__fixunsdfti ;
27
+ const __fixdfei = @import ("fixdfei.zig" ).__fixdfei ;
28
+ const __fixunsdfei = @import ("fixunsdfei.zig" ).__fixunsdfei ;
27
29
28
30
// Conversion from f128
29
31
const __fixtfsi = @import ("fixtfsi.zig" ).__fixtfsi ;
@@ -681,6 +683,44 @@ test "fixunsdfti" {
681
683
try test__fixunsdfti (-0x1.FFFFFFFFFFFFEp+62 , 0 );
682
684
}
683
685
686
+ fn test_fixdfei (comptime T : type , expected : T , a : f64 ) ! void {
687
+ const int = @typeInfo (T ).int ;
688
+ var expected_buf : [@divExact (int.bits , 32 )]u32 = undefined ;
689
+ std .mem .writeInt (T , std .mem .asBytes (& expected_buf ), expected , endian );
690
+ var actual_buf : [@divExact (int.bits , 32 )]u32 = undefined ;
691
+ _ = switch (int .signedness ) {
692
+ .signed = > __fixdfei ,
693
+ .unsigned = > __fixunsdfei ,
694
+ }(& actual_buf , int .bits , a );
695
+ try testing .expect (std .mem .eql (u32 , & expected_buf , & actual_buf ));
696
+ }
697
+
698
+ test "fixdfei" {
699
+ try test_fixdfei (i256 , -1 << 255 , -0x1p255 );
700
+ try test_fixdfei (i256 , -1 << 127 , -0x1p127 );
701
+ try test_fixdfei (i256 , -1 << 100 , -0x1p100 );
702
+ try test_fixdfei (i256 , -1 << 50 , -0x1p50 );
703
+ try test_fixdfei (i256 , -1 << 1 , -0x1p1 );
704
+ try test_fixdfei (i256 , -1 << 0 , -0x1p0 );
705
+ try test_fixdfei (i256 , 0 , 0 );
706
+ try test_fixdfei (i256 , 1 << 0 , 0x1p0 );
707
+ try test_fixdfei (i256 , 1 << 1 , 0x1p1 );
708
+ try test_fixdfei (i256 , 1 << 50 , 0x1p50 );
709
+ try test_fixdfei (i256 , 1 << 100 , 0x1p100 );
710
+ try test_fixdfei (i256 , 1 << 127 , 0x1p127 );
711
+ try test_fixdfei (i256 , 1 << 254 , 0x1p254 );
712
+ }
713
+
714
+ test "fixundfei" {
715
+ try test_fixdfei (u256 , 0 , 0 );
716
+ try test_fixdfei (u256 , 1 << 0 , 0x1p0 );
717
+ try test_fixdfei (u256 , 1 << 1 , 0x1p1 );
718
+ try test_fixdfei (u256 , 1 << 50 , 0x1p50 );
719
+ try test_fixdfei (u256 , 1 << 100 , 0x1p100 );
720
+ try test_fixdfei (u256 , 1 << 127 , 0x1p127 );
721
+ try test_fixdfei (u256 , 1 << 255 , 0x1p255 );
722
+ }
723
+
684
724
fn test__fixtfsi (a : f128 , expected : i32 ) ! void {
685
725
const x = __fixtfsi (a );
686
726
try testing .expect (x == expected );
0 commit comments