1*1bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-3-Clause */ 29403c583SJens Wiklander 39403c583SJens Wiklander /*============================================================================ 49403c583SJens Wiklander 59403c583SJens Wiklander This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic 69403c583SJens Wiklander Package, Release 3a, by John R. Hauser. 79403c583SJens Wiklander 89403c583SJens Wiklander Copyright 2011, 2012, 2013, 2014 The Regents of the University of California. 99403c583SJens Wiklander All rights reserved. 109403c583SJens Wiklander 119403c583SJens Wiklander Redistribution and use in source and binary forms, with or without 129403c583SJens Wiklander modification, are permitted provided that the following conditions are met: 139403c583SJens Wiklander 149403c583SJens Wiklander 1. Redistributions of source code must retain the above copyright notice, 159403c583SJens Wiklander this list of conditions, and the following disclaimer. 169403c583SJens Wiklander 179403c583SJens Wiklander 2. Redistributions in binary form must reproduce the above copyright notice, 189403c583SJens Wiklander this list of conditions, and the following disclaimer in the documentation 199403c583SJens Wiklander and/or other materials provided with the distribution. 209403c583SJens Wiklander 219403c583SJens Wiklander 3. Neither the name of the University nor the names of its contributors may 229403c583SJens Wiklander be used to endorse or promote products derived from this software without 239403c583SJens Wiklander specific prior written permission. 249403c583SJens Wiklander 259403c583SJens Wiklander THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY 269403c583SJens Wiklander EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 279403c583SJens Wiklander WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE 289403c583SJens Wiklander DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY 299403c583SJens Wiklander DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 309403c583SJens Wiklander (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 319403c583SJens Wiklander LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 329403c583SJens Wiklander ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 339403c583SJens Wiklander (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 349403c583SJens Wiklander SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 359403c583SJens Wiklander 369403c583SJens Wiklander =============================================================================*/ 379403c583SJens Wiklander 389403c583SJens Wiklander 399403c583SJens Wiklander /*============================================================================ 409403c583SJens Wiklander | Note: If SoftFloat is made available as a general library for programs to 419403c583SJens Wiklander | use, it is strongly recommended that a platform-specific version of this 429403c583SJens Wiklander | header, "softfloat.h", be created that folds in "softfloat_types.h" and that 439403c583SJens Wiklander | eliminates all dependencies on compile-time macros. 449403c583SJens Wiklander *============================================================================*/ 459403c583SJens Wiklander 469403c583SJens Wiklander 479403c583SJens Wiklander #ifndef softfloat_h 489403c583SJens Wiklander #define softfloat_h 1 499403c583SJens Wiklander 509403c583SJens Wiklander #include <stdbool.h> 519403c583SJens Wiklander #include <stdint.h> 529403c583SJens Wiklander 539403c583SJens Wiklander #include "softfloat_types.h" 549403c583SJens Wiklander 559403c583SJens Wiklander /*---------------------------------------------------------------------------- 569403c583SJens Wiklander | Software floating-point underflow tininess-detection mode. 579403c583SJens Wiklander *----------------------------------------------------------------------------*/ 589403c583SJens Wiklander extern uint_fast8_t softfloat_detectTininess; 599403c583SJens Wiklander enum { 609403c583SJens Wiklander softfloat_tininess_beforeRounding = 0, 619403c583SJens Wiklander softfloat_tininess_afterRounding = 1 629403c583SJens Wiklander }; 639403c583SJens Wiklander 649403c583SJens Wiklander /*---------------------------------------------------------------------------- 659403c583SJens Wiklander | Software floating-point rounding mode. 669403c583SJens Wiklander *----------------------------------------------------------------------------*/ 679403c583SJens Wiklander extern uint_fast8_t softfloat_roundingMode; 689403c583SJens Wiklander enum { 699403c583SJens Wiklander softfloat_round_near_even = 0, 709403c583SJens Wiklander softfloat_round_minMag = 1, 719403c583SJens Wiklander softfloat_round_min = 2, 729403c583SJens Wiklander softfloat_round_max = 3, 739403c583SJens Wiklander softfloat_round_near_maxMag = 4 749403c583SJens Wiklander }; 759403c583SJens Wiklander 769403c583SJens Wiklander /*---------------------------------------------------------------------------- 779403c583SJens Wiklander | Software floating-point exception flags. 789403c583SJens Wiklander *----------------------------------------------------------------------------*/ 799403c583SJens Wiklander extern uint_fast8_t softfloat_exceptionFlags; 809403c583SJens Wiklander enum { 819403c583SJens Wiklander softfloat_flag_inexact = 1, 829403c583SJens Wiklander softfloat_flag_underflow = 2, 839403c583SJens Wiklander softfloat_flag_overflow = 4, 849403c583SJens Wiklander softfloat_flag_infinite = 8, 859403c583SJens Wiklander softfloat_flag_invalid = 16 869403c583SJens Wiklander }; 879403c583SJens Wiklander 889403c583SJens Wiklander /*---------------------------------------------------------------------------- 899403c583SJens Wiklander | Routine to raise any or all of the software floating-point exception flags. 909403c583SJens Wiklander *----------------------------------------------------------------------------*/ 919403c583SJens Wiklander void softfloat_raiseFlags( uint_fast8_t ); 929403c583SJens Wiklander 939403c583SJens Wiklander /*---------------------------------------------------------------------------- 949403c583SJens Wiklander | Integer-to-floating-point conversion routines. 959403c583SJens Wiklander *----------------------------------------------------------------------------*/ 969403c583SJens Wiklander float32_t ui32_to_f32( uint32_t ); 979403c583SJens Wiklander float64_t ui32_to_f64( uint32_t ); 989403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 999403c583SJens Wiklander extFloat80_t ui32_to_extF80( uint32_t ); 1009403c583SJens Wiklander float128_t ui32_to_f128( uint32_t ); 1019403c583SJens Wiklander #endif 1029403c583SJens Wiklander void ui32_to_extF80M( uint32_t, extFloat80_t * ); 1039403c583SJens Wiklander void ui32_to_f128M( uint32_t, float128_t * ); 1049403c583SJens Wiklander float32_t ui64_to_f32( uint64_t ); 1059403c583SJens Wiklander float64_t ui64_to_f64( uint64_t ); 1069403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 1079403c583SJens Wiklander extFloat80_t ui64_to_extF80( uint64_t ); 1089403c583SJens Wiklander float128_t ui64_to_f128( uint64_t ); 1099403c583SJens Wiklander #endif 1109403c583SJens Wiklander void ui64_to_extF80M( uint64_t, extFloat80_t * ); 1119403c583SJens Wiklander void ui64_to_f128M( uint64_t, float128_t * ); 1129403c583SJens Wiklander float32_t i32_to_f32( int32_t ); 1139403c583SJens Wiklander float64_t i32_to_f64( int32_t ); 1149403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 1159403c583SJens Wiklander extFloat80_t i32_to_extF80( int32_t ); 1169403c583SJens Wiklander float128_t i32_to_f128( int32_t ); 1179403c583SJens Wiklander #endif 1189403c583SJens Wiklander void i32_to_extF80M( int32_t, extFloat80_t * ); 1199403c583SJens Wiklander void i32_to_f128M( int32_t, float128_t * ); 1209403c583SJens Wiklander float32_t i64_to_f32( int64_t ); 1219403c583SJens Wiklander float64_t i64_to_f64( int64_t ); 1229403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 1239403c583SJens Wiklander extFloat80_t i64_to_extF80( int64_t ); 1249403c583SJens Wiklander float128_t i64_to_f128( int64_t ); 1259403c583SJens Wiklander #endif 1269403c583SJens Wiklander void i64_to_extF80M( int64_t, extFloat80_t * ); 1279403c583SJens Wiklander void i64_to_f128M( int64_t, float128_t * ); 1289403c583SJens Wiklander 1299403c583SJens Wiklander /*---------------------------------------------------------------------------- 1309403c583SJens Wiklander | 32-bit (single-precision) floating-point operations. 1319403c583SJens Wiklander *----------------------------------------------------------------------------*/ 1329403c583SJens Wiklander uint_fast32_t f32_to_ui32( float32_t, uint_fast8_t, bool ); 1339403c583SJens Wiklander uint_fast64_t f32_to_ui64( float32_t, uint_fast8_t, bool ); 1349403c583SJens Wiklander int_fast32_t f32_to_i32( float32_t, uint_fast8_t, bool ); 1359403c583SJens Wiklander int_fast64_t f32_to_i64( float32_t, uint_fast8_t, bool ); 1369403c583SJens Wiklander uint_fast32_t f32_to_ui32_r_minMag( float32_t, bool ); 1379403c583SJens Wiklander uint_fast64_t f32_to_ui64_r_minMag( float32_t, bool ); 1389403c583SJens Wiklander int_fast32_t f32_to_i32_r_minMag( float32_t, bool ); 1399403c583SJens Wiklander int_fast64_t f32_to_i64_r_minMag( float32_t, bool ); 1409403c583SJens Wiklander float64_t f32_to_f64( float32_t ); 1419403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 1429403c583SJens Wiklander extFloat80_t f32_to_extF80( float32_t ); 1439403c583SJens Wiklander float128_t f32_to_f128( float32_t ); 1449403c583SJens Wiklander #endif 1459403c583SJens Wiklander void f32_to_extF80M( float32_t, extFloat80_t * ); 1469403c583SJens Wiklander void f32_to_f128M( float32_t, float128_t * ); 1479403c583SJens Wiklander float32_t f32_roundToInt( float32_t, uint_fast8_t, bool ); 1489403c583SJens Wiklander float32_t f32_add( float32_t, float32_t ); 1499403c583SJens Wiklander float32_t f32_sub( float32_t, float32_t ); 1509403c583SJens Wiklander float32_t f32_mul( float32_t, float32_t ); 1519403c583SJens Wiklander float32_t f32_mulAdd( float32_t, float32_t, float32_t ); 1529403c583SJens Wiklander float32_t f32_div( float32_t, float32_t ); 1539403c583SJens Wiklander float32_t f32_rem( float32_t, float32_t ); 1549403c583SJens Wiklander float32_t f32_sqrt( float32_t ); 1559403c583SJens Wiklander bool f32_eq( float32_t, float32_t ); 1569403c583SJens Wiklander bool f32_le( float32_t, float32_t ); 1579403c583SJens Wiklander bool f32_lt( float32_t, float32_t ); 1589403c583SJens Wiklander bool f32_eq_signaling( float32_t, float32_t ); 1599403c583SJens Wiklander bool f32_le_quiet( float32_t, float32_t ); 1609403c583SJens Wiklander bool f32_lt_quiet( float32_t, float32_t ); 1619403c583SJens Wiklander bool f32_isSignalingNaN( float32_t ); 1629403c583SJens Wiklander 1639403c583SJens Wiklander /*---------------------------------------------------------------------------- 1649403c583SJens Wiklander | 64-bit (double-precision) floating-point operations. 1659403c583SJens Wiklander *----------------------------------------------------------------------------*/ 1669403c583SJens Wiklander uint_fast32_t f64_to_ui32( float64_t, uint_fast8_t, bool ); 1679403c583SJens Wiklander uint_fast64_t f64_to_ui64( float64_t, uint_fast8_t, bool ); 1689403c583SJens Wiklander int_fast32_t f64_to_i32( float64_t, uint_fast8_t, bool ); 1699403c583SJens Wiklander int_fast64_t f64_to_i64( float64_t, uint_fast8_t, bool ); 1709403c583SJens Wiklander uint_fast32_t f64_to_ui32_r_minMag( float64_t, bool ); 1719403c583SJens Wiklander uint_fast64_t f64_to_ui64_r_minMag( float64_t, bool ); 1729403c583SJens Wiklander int_fast32_t f64_to_i32_r_minMag( float64_t, bool ); 1739403c583SJens Wiklander int_fast64_t f64_to_i64_r_minMag( float64_t, bool ); 1749403c583SJens Wiklander float32_t f64_to_f32( float64_t ); 1759403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 1769403c583SJens Wiklander extFloat80_t f64_to_extF80( float64_t ); 1779403c583SJens Wiklander float128_t f64_to_f128( float64_t ); 1789403c583SJens Wiklander #endif 1799403c583SJens Wiklander void f64_to_extF80M( float64_t, extFloat80_t * ); 1809403c583SJens Wiklander void f64_to_f128M( float64_t, float128_t * ); 1819403c583SJens Wiklander float64_t f64_roundToInt( float64_t, uint_fast8_t, bool ); 1829403c583SJens Wiklander float64_t f64_add( float64_t, float64_t ); 1839403c583SJens Wiklander float64_t f64_sub( float64_t, float64_t ); 1849403c583SJens Wiklander float64_t f64_mul( float64_t, float64_t ); 1859403c583SJens Wiklander float64_t f64_mulAdd( float64_t, float64_t, float64_t ); 1869403c583SJens Wiklander float64_t f64_div( float64_t, float64_t ); 1879403c583SJens Wiklander float64_t f64_rem( float64_t, float64_t ); 1889403c583SJens Wiklander float64_t f64_sqrt( float64_t ); 1899403c583SJens Wiklander bool f64_eq( float64_t, float64_t ); 1909403c583SJens Wiklander bool f64_le( float64_t, float64_t ); 1919403c583SJens Wiklander bool f64_lt( float64_t, float64_t ); 1929403c583SJens Wiklander bool f64_eq_signaling( float64_t, float64_t ); 1939403c583SJens Wiklander bool f64_le_quiet( float64_t, float64_t ); 1949403c583SJens Wiklander bool f64_lt_quiet( float64_t, float64_t ); 1959403c583SJens Wiklander bool f64_isSignalingNaN( float64_t ); 1969403c583SJens Wiklander 1979403c583SJens Wiklander /*---------------------------------------------------------------------------- 1989403c583SJens Wiklander | Rounding precision for 80-bit extended double-precision floating-point. 1999403c583SJens Wiklander | Valid values are 32, 64, and 80. 2009403c583SJens Wiklander *----------------------------------------------------------------------------*/ 2019403c583SJens Wiklander extern uint_fast8_t extF80_roundingPrecision; 2029403c583SJens Wiklander 2039403c583SJens Wiklander /*---------------------------------------------------------------------------- 2049403c583SJens Wiklander | 80-bit extended double-precision floating-point operations. 2059403c583SJens Wiklander *----------------------------------------------------------------------------*/ 2069403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 2079403c583SJens Wiklander uint_fast32_t extF80_to_ui32( extFloat80_t, uint_fast8_t, bool ); 2089403c583SJens Wiklander uint_fast64_t extF80_to_ui64( extFloat80_t, uint_fast8_t, bool ); 2099403c583SJens Wiklander int_fast32_t extF80_to_i32( extFloat80_t, uint_fast8_t, bool ); 2109403c583SJens Wiklander int_fast64_t extF80_to_i64( extFloat80_t, uint_fast8_t, bool ); 2119403c583SJens Wiklander uint_fast32_t extF80_to_ui32_r_minMag( extFloat80_t, bool ); 2129403c583SJens Wiklander uint_fast64_t extF80_to_ui64_r_minMag( extFloat80_t, bool ); 2139403c583SJens Wiklander int_fast32_t extF80_to_i32_r_minMag( extFloat80_t, bool ); 2149403c583SJens Wiklander int_fast64_t extF80_to_i64_r_minMag( extFloat80_t, bool ); 2159403c583SJens Wiklander float32_t extF80_to_f32( extFloat80_t ); 2169403c583SJens Wiklander float64_t extF80_to_f64( extFloat80_t ); 2179403c583SJens Wiklander float128_t extF80_to_f128( extFloat80_t ); 2189403c583SJens Wiklander extFloat80_t extF80_roundToInt( extFloat80_t, uint_fast8_t, bool ); 2199403c583SJens Wiklander extFloat80_t extF80_add( extFloat80_t, extFloat80_t ); 2209403c583SJens Wiklander extFloat80_t extF80_sub( extFloat80_t, extFloat80_t ); 2219403c583SJens Wiklander extFloat80_t extF80_mul( extFloat80_t, extFloat80_t ); 2229403c583SJens Wiklander extFloat80_t extF80_div( extFloat80_t, extFloat80_t ); 2239403c583SJens Wiklander extFloat80_t extF80_rem( extFloat80_t, extFloat80_t ); 2249403c583SJens Wiklander extFloat80_t extF80_sqrt( extFloat80_t ); 2259403c583SJens Wiklander bool extF80_eq( extFloat80_t, extFloat80_t ); 2269403c583SJens Wiklander bool extF80_le( extFloat80_t, extFloat80_t ); 2279403c583SJens Wiklander bool extF80_lt( extFloat80_t, extFloat80_t ); 2289403c583SJens Wiklander bool extF80_eq_signaling( extFloat80_t, extFloat80_t ); 2299403c583SJens Wiklander bool extF80_le_quiet( extFloat80_t, extFloat80_t ); 2309403c583SJens Wiklander bool extF80_lt_quiet( extFloat80_t, extFloat80_t ); 2319403c583SJens Wiklander bool extF80_isSignalingNaN( extFloat80_t ); 2329403c583SJens Wiklander #endif 2339403c583SJens Wiklander uint_fast32_t extF80M_to_ui32( const extFloat80_t *, uint_fast8_t, bool ); 2349403c583SJens Wiklander uint_fast64_t extF80M_to_ui64( const extFloat80_t *, uint_fast8_t, bool ); 2359403c583SJens Wiklander int_fast32_t extF80M_to_i32( const extFloat80_t *, uint_fast8_t, bool ); 2369403c583SJens Wiklander int_fast64_t extF80M_to_i64( const extFloat80_t *, uint_fast8_t, bool ); 2379403c583SJens Wiklander uint_fast32_t extF80M_to_ui32_r_minMag( const extFloat80_t *, bool ); 2389403c583SJens Wiklander uint_fast64_t extF80M_to_ui64_r_minMag( const extFloat80_t *, bool ); 2399403c583SJens Wiklander int_fast32_t extF80M_to_i32_r_minMag( const extFloat80_t *, bool ); 2409403c583SJens Wiklander int_fast64_t extF80M_to_i64_r_minMag( const extFloat80_t *, bool ); 2419403c583SJens Wiklander float32_t extF80M_to_f32( const extFloat80_t * ); 2429403c583SJens Wiklander float64_t extF80M_to_f64( const extFloat80_t * ); 2439403c583SJens Wiklander void extF80M_to_f128M( const extFloat80_t *, float128_t * ); 2449403c583SJens Wiklander void 2459403c583SJens Wiklander extF80M_roundToInt( 2469403c583SJens Wiklander const extFloat80_t *, uint_fast8_t, bool, extFloat80_t * ); 2479403c583SJens Wiklander void extF80M_add( const extFloat80_t *, const extFloat80_t *, extFloat80_t * ); 2489403c583SJens Wiklander void extF80M_sub( const extFloat80_t *, const extFloat80_t *, extFloat80_t * ); 2499403c583SJens Wiklander void extF80M_mul( const extFloat80_t *, const extFloat80_t *, extFloat80_t * ); 2509403c583SJens Wiklander void extF80M_div( const extFloat80_t *, const extFloat80_t *, extFloat80_t * ); 2519403c583SJens Wiklander void extF80M_rem( const extFloat80_t *, const extFloat80_t *, extFloat80_t * ); 2529403c583SJens Wiklander void extF80M_sqrt( const extFloat80_t *, extFloat80_t * ); 2539403c583SJens Wiklander bool extF80M_eq( const extFloat80_t *, const extFloat80_t * ); 2549403c583SJens Wiklander bool extF80M_le( const extFloat80_t *, const extFloat80_t * ); 2559403c583SJens Wiklander bool extF80M_lt( const extFloat80_t *, const extFloat80_t * ); 2569403c583SJens Wiklander bool extF80M_eq_signaling( const extFloat80_t *, const extFloat80_t * ); 2579403c583SJens Wiklander bool extF80M_le_quiet( const extFloat80_t *, const extFloat80_t * ); 2589403c583SJens Wiklander bool extF80M_lt_quiet( const extFloat80_t *, const extFloat80_t * ); 2599403c583SJens Wiklander bool extF80M_isSignalingNaN( const extFloat80_t * ); 2609403c583SJens Wiklander 2619403c583SJens Wiklander /*---------------------------------------------------------------------------- 2629403c583SJens Wiklander | 128-bit (quadruple-precision) floating-point operations. 2639403c583SJens Wiklander *----------------------------------------------------------------------------*/ 2649403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64 2659403c583SJens Wiklander uint_fast32_t f128_to_ui32( float128_t, uint_fast8_t, bool ); 2669403c583SJens Wiklander uint_fast64_t f128_to_ui64( float128_t, uint_fast8_t, bool ); 2679403c583SJens Wiklander int_fast32_t f128_to_i32( float128_t, uint_fast8_t, bool ); 2689403c583SJens Wiklander int_fast64_t f128_to_i64( float128_t, uint_fast8_t, bool ); 2699403c583SJens Wiklander uint_fast32_t f128_to_ui32_r_minMag( float128_t, bool ); 2709403c583SJens Wiklander uint_fast64_t f128_to_ui64_r_minMag( float128_t, bool ); 2719403c583SJens Wiklander int_fast32_t f128_to_i32_r_minMag( float128_t, bool ); 2729403c583SJens Wiklander int_fast64_t f128_to_i64_r_minMag( float128_t, bool ); 2739403c583SJens Wiklander float32_t f128_to_f32( float128_t ); 2749403c583SJens Wiklander float64_t f128_to_f64( float128_t ); 2759403c583SJens Wiklander extFloat80_t f128_to_extF80( float128_t ); 2769403c583SJens Wiklander float128_t f128_roundToInt( float128_t, uint_fast8_t, bool ); 2779403c583SJens Wiklander float128_t f128_add( float128_t, float128_t ); 2789403c583SJens Wiklander float128_t f128_sub( float128_t, float128_t ); 2799403c583SJens Wiklander float128_t f128_mul( float128_t, float128_t ); 2809403c583SJens Wiklander float128_t f128_mulAdd( float128_t, float128_t, float128_t ); 2819403c583SJens Wiklander float128_t f128_div( float128_t, float128_t ); 2829403c583SJens Wiklander float128_t f128_rem( float128_t, float128_t ); 2839403c583SJens Wiklander float128_t f128_sqrt( float128_t ); 2849403c583SJens Wiklander bool f128_eq( float128_t, float128_t ); 2859403c583SJens Wiklander bool f128_le( float128_t, float128_t ); 2869403c583SJens Wiklander bool f128_lt( float128_t, float128_t ); 2879403c583SJens Wiklander bool f128_eq_signaling( float128_t, float128_t ); 2889403c583SJens Wiklander bool f128_le_quiet( float128_t, float128_t ); 2899403c583SJens Wiklander bool f128_lt_quiet( float128_t, float128_t ); 2909403c583SJens Wiklander bool f128_isSignalingNaN( float128_t ); 2919403c583SJens Wiklander #endif 2929403c583SJens Wiklander uint_fast32_t f128M_to_ui32( const float128_t *, uint_fast8_t, bool ); 2939403c583SJens Wiklander uint_fast64_t f128M_to_ui64( const float128_t *, uint_fast8_t, bool ); 2949403c583SJens Wiklander int_fast32_t f128M_to_i32( const float128_t *, uint_fast8_t, bool ); 2959403c583SJens Wiklander int_fast64_t f128M_to_i64( const float128_t *, uint_fast8_t, bool ); 2969403c583SJens Wiklander uint_fast32_t f128M_to_ui32_r_minMag( const float128_t *, bool ); 2979403c583SJens Wiklander uint_fast64_t f128M_to_ui64_r_minMag( const float128_t *, bool ); 2989403c583SJens Wiklander int_fast32_t f128M_to_i32_r_minMag( const float128_t *, bool ); 2999403c583SJens Wiklander int_fast64_t f128M_to_i64_r_minMag( const float128_t *, bool ); 3009403c583SJens Wiklander float32_t f128M_to_f32( const float128_t * ); 3019403c583SJens Wiklander float64_t f128M_to_f64( const float128_t * ); 3029403c583SJens Wiklander void f128M_to_extF80M( const float128_t *, extFloat80_t * ); 3039403c583SJens Wiklander void f128M_roundToInt( const float128_t *, uint_fast8_t, bool, float128_t * ); 3049403c583SJens Wiklander void f128M_add( const float128_t *, const float128_t *, float128_t * ); 3059403c583SJens Wiklander void f128M_sub( const float128_t *, const float128_t *, float128_t * ); 3069403c583SJens Wiklander void f128M_mul( const float128_t *, const float128_t *, float128_t * ); 3079403c583SJens Wiklander void 3089403c583SJens Wiklander f128M_mulAdd( 3099403c583SJens Wiklander const float128_t *, const float128_t *, const float128_t *, float128_t * 3109403c583SJens Wiklander ); 3119403c583SJens Wiklander void f128M_div( const float128_t *, const float128_t *, float128_t * ); 3129403c583SJens Wiklander void f128M_rem( const float128_t *, const float128_t *, float128_t * ); 3139403c583SJens Wiklander void f128M_sqrt( const float128_t *, float128_t * ); 3149403c583SJens Wiklander bool f128M_eq( const float128_t *, const float128_t * ); 3159403c583SJens Wiklander bool f128M_le( const float128_t *, const float128_t * ); 3169403c583SJens Wiklander bool f128M_lt( const float128_t *, const float128_t * ); 3179403c583SJens Wiklander bool f128M_eq_signaling( const float128_t *, const float128_t * ); 3189403c583SJens Wiklander bool f128M_le_quiet( const float128_t *, const float128_t * ); 3199403c583SJens Wiklander bool f128M_lt_quiet( const float128_t *, const float128_t * ); 3209403c583SJens Wiklander bool f128M_isSignalingNaN( const float128_t * ); 3219403c583SJens Wiklander 3229403c583SJens Wiklander #endif 3239403c583SJens Wiklander 324