aboutsummaryrefslogtreecommitdiff
path: root/source/include
diff options
context:
space:
mode:
authorNicolas Brunie <nibrunie@gmail.com>2023-08-12 04:13:37 +0200
committerNicolas Brunie <nibrunie@gmail.com>2023-08-12 04:13:37 +0200
commit3d0376df7b25ea90ac62b2f89374e7d98ff84f5f (patch)
tree810eefa56eb5e6ead1c73349d806d2bad53612c8 /source/include
parent5c06db33fc1e2130f67c045327b0ec949032df1d (diff)
downloadberkeley-softfloat-3-3d0376df7b25ea90ac62b2f89374e7d98ff84f5f.zip
berkeley-softfloat-3-3d0376df7b25ea90ac62b2f89374e7d98ff84f5f.tar.gz
berkeley-softfloat-3-3d0376df7b25ea90ac62b2f89374e7d98ff84f5f.tar.bz2
adding initial bf16 support
Diffstat (limited to 'source/include')
-rw-r--r--source/include/internals.h1
-rw-r--r--source/include/softfloat.h7
-rw-r--r--source/include/softfloat_types.h1
3 files changed, 9 insertions, 0 deletions
diff --git a/source/include/internals.h b/source/include/internals.h
index f8eac05..ccd7747 100644
--- a/source/include/internals.h
+++ b/source/include/internals.h
@@ -43,6 +43,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "softfloat_types.h"
union ui16_f16 { uint16_t ui; float16_t f; };
+union ui16_bf16 { uint16_t ui; bfloat16_t f; };
union ui32_f32 { uint32_t ui; float32_t f; };
union ui64_f64 { uint64_t ui; float64_t f; };
diff --git a/source/include/softfloat.h b/source/include/softfloat.h
index 9ed17c1..c1757b8 100644
--- a/source/include/softfloat.h
+++ b/source/include/softfloat.h
@@ -170,6 +170,13 @@ bool f16_lt_quiet( float16_t, float16_t );
bool f16_isSignalingNaN( float16_t );
/*----------------------------------------------------------------------------
+| 16-bit (brain float 16) floating-point operations.
+*----------------------------------------------------------------------------*/
+float32_t bf16_to_f32( bfloat16_t );
+bfloat16_t f32_to_bf16( float32_t );
+bool bf16_isSignalingNaN( bfloat16_t );
+
+/*----------------------------------------------------------------------------
| 32-bit (single-precision) floating-point operations.
*----------------------------------------------------------------------------*/
uint_fast32_t f32_to_ui32( float32_t, uint_fast8_t, bool );
diff --git a/source/include/softfloat_types.h b/source/include/softfloat_types.h
index b92d246..25039b5 100644
--- a/source/include/softfloat_types.h
+++ b/source/include/softfloat_types.h
@@ -48,6 +48,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| (typically 'float' and 'double', and possibly 'long double').
*----------------------------------------------------------------------------*/
typedef struct { uint16_t v; } float16_t;
+typedef struct { uint16_t v; } bfloat16_t;
typedef struct { uint32_t v; } float32_t;
typedef struct { uint64_t v; } float64_t;
typedef struct { uint64_t v[2]; } float128_t;