1a4f3ed62SAlex Bennée /* 2a4f3ed62SAlex Bennée * Common Float Helpers 3a4f3ed62SAlex Bennée * 4*542b10bdSAlex Bennée * Copyright (c) 2019, 2024 Linaro 5a4f3ed62SAlex Bennée * 6*542b10bdSAlex Bennée * SPDX-License-Identifier: GPL-2.0-or-later 7a4f3ed62SAlex Bennée */ 8a4f3ed62SAlex Bennée 9a4f3ed62SAlex Bennée #include <inttypes.h> 10a4f3ed62SAlex Bennée 11853c93edSRichard Henderson /* Some hosts do not have support for all of these; not required by ISO C. */ 12853c93edSRichard Henderson #ifndef FE_OVERFLOW 13853c93edSRichard Henderson #define FE_OVERFLOW 0 14853c93edSRichard Henderson #endif 15853c93edSRichard Henderson #ifndef FE_UNDERFLOW 16853c93edSRichard Henderson #define FE_UNDERFLOW 0 17853c93edSRichard Henderson #endif 18853c93edSRichard Henderson #ifndef FE_DIVBYZERO 19853c93edSRichard Henderson #define FE_DIVBYZERO 0 20853c93edSRichard Henderson #endif 21853c93edSRichard Henderson #ifndef FE_INEXACT 22853c93edSRichard Henderson #define FE_INEXACT 0 23853c93edSRichard Henderson #endif 24853c93edSRichard Henderson #ifndef FE_INVALID 25853c93edSRichard Henderson #define FE_INVALID 0 26853c93edSRichard Henderson #endif 27853c93edSRichard Henderson 28a4f3ed62SAlex Bennée /* Number of constants in each table */ 29a4f3ed62SAlex Bennée int get_num_f16(void); 30a4f3ed62SAlex Bennée int get_num_f32(void); 31a4f3ed62SAlex Bennée int get_num_f64(void); 32a4f3ed62SAlex Bennée 33a4f3ed62SAlex Bennée /* Accessor helpers, overflows will automatically wrap */ 34a4f3ed62SAlex Bennée uint16_t get_f16(int i); /* use _Float16 when we can */ 35a4f3ed62SAlex Bennée float get_f32(int i); 36a4f3ed62SAlex Bennée double get_f64(int i); 37a4f3ed62SAlex Bennée 38a4f3ed62SAlex Bennée /* Return format strings, free after use */ 39a4f3ed62SAlex Bennée char * fmt_f16(uint16_t); 40a4f3ed62SAlex Bennée char * fmt_f32(float); 41a4f3ed62SAlex Bennée char * fmt_f64(double); 42a4f3ed62SAlex Bennée /* exception flags */ 43a4f3ed62SAlex Bennée char * fmt_flags(void); 44