Skip to content

Commit

Permalink
(4/4) Support e4m3/e5m2 modes in f16 to f8 conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
Omar Almatov authored and rbuchner-aril committed Feb 7, 2025
1 parent 343abf2 commit 2573d49
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions softfloat/f16_to_f8.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,24 @@ float8_t f16_to_f8( float16_t a )
if ( exp == 0xFF ) {
if ( frac ) {
softfloat_f16UIToCommonNaN( uiA, &commonNaN );
uiZ = softfloat_commonNaNToF8UI( &commonNaN );
switch ( softfloat_fp8Mode ) {
case softfloat_fp8_e4m3:
uiZ = softfloat_commonNaNToE4M3F8UI( &commonNaN );
case softfloat_fp8_e5m2:
uiZ = softfloat_commonNaNToE5M2F8UI( &commonNaN );
default:
uiZ = softfloat_commonNaNToF8UI( &commonNaN );
}
} else {
uiZ = signInfF8UI( sign );
switch ( softfloat_fp8Mode ) {
case softfloat_fp8_e4m3:
// Assuming overflow mode (Inf --> NaN)
uiZ = softfloat_commonNaNToE4M3F8UI( &commonNaN );
case softfloat_fp8_e5m2:
uiZ = signInfE5M2F8UI( sign );
default:
uiZ = signInfF8UI( sign );
}
}
goto uiZ;
}
Expand Down

0 comments on commit 2573d49

Please sign in to comment.