1a4f3ed62SAlex Bennée /* 2a4f3ed62SAlex Bennée * Common Float Helpers 3a4f3ed62SAlex Bennée * 4a4f3ed62SAlex Bennée * Copyright (c) 2019 Linaro 5a4f3ed62SAlex Bennée * 6a4f3ed62SAlex Bennée * SPDX-License-Identifier: GPL-3.0-or-later 7a4f3ed62SAlex Bennée */ 8a4f3ed62SAlex Bennée 9a4f3ed62SAlex Bennée #include <inttypes.h> 10a4f3ed62SAlex Bennée 11*853c93edSRichard Henderson /* Some hosts do not have support for all of these; not required by ISO C. */ 12*853c93edSRichard Henderson #ifndef FE_OVERFLOW 13*853c93edSRichard Henderson #define FE_OVERFLOW 0 14*853c93edSRichard Henderson #endif 15*853c93edSRichard Henderson #ifndef FE_UNDERFLOW 16*853c93edSRichard Henderson #define FE_UNDERFLOW 0 17*853c93edSRichard Henderson #endif 18*853c93edSRichard Henderson #ifndef FE_DIVBYZERO 19*853c93edSRichard Henderson #define FE_DIVBYZERO 0 20*853c93edSRichard Henderson #endif 21*853c93edSRichard Henderson #ifndef FE_INEXACT 22*853c93edSRichard Henderson #define FE_INEXACT 0 23*853c93edSRichard Henderson #endif 24*853c93edSRichard Henderson #ifndef FE_INVALID 25*853c93edSRichard Henderson #define FE_INVALID 0 26*853c93edSRichard Henderson #endif 27*853c93edSRichard 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