Skip to content

Commit 2573d49

Browse files
Omar Almatovrbuchner-aril
authored andcommitted
(4/4) Support e4m3/e5m2 modes in f16 to f8 conversion
1 parent 343abf2 commit 2573d49

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

softfloat/f16_to_f8.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,24 @@ float8_t f16_to_f8( float16_t a )
6565
if ( exp == 0xFF ) {
6666
if ( frac ) {
6767
softfloat_f16UIToCommonNaN( uiA, &commonNaN );
68-
uiZ = softfloat_commonNaNToF8UI( &commonNaN );
68+
switch ( softfloat_fp8Mode ) {
69+
case softfloat_fp8_e4m3:
70+
uiZ = softfloat_commonNaNToE4M3F8UI( &commonNaN );
71+
case softfloat_fp8_e5m2:
72+
uiZ = softfloat_commonNaNToE5M2F8UI( &commonNaN );
73+
default:
74+
uiZ = softfloat_commonNaNToF8UI( &commonNaN );
75+
}
6976
} else {
70-
uiZ = signInfF8UI( sign );
77+
switch ( softfloat_fp8Mode ) {
78+
case softfloat_fp8_e4m3:
79+
// Assuming overflow mode (Inf --> NaN)
80+
uiZ = softfloat_commonNaNToE4M3F8UI( &commonNaN );
81+
case softfloat_fp8_e5m2:
82+
uiZ = signInfE5M2F8UI( sign );
83+
default:
84+
uiZ = signInfF8UI( sign );
85+
}
7186
}
7287
goto uiZ;
7388
}

0 commit comments

Comments
 (0)