xref: /optee_os/lib/libutils/isoc/arch/arm/softfloat/source/8086-SSE/specialize.h (revision 1bb929836182ecb96d2d9d268daa807c67596396)
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 #ifndef specialize_h
399403c583SJens Wiklander #define specialize_h 1
409403c583SJens Wiklander 
419403c583SJens Wiklander #include <stdbool.h>
429403c583SJens Wiklander #include <stdint.h>
439403c583SJens Wiklander #include "softfloat_types.h"
449403c583SJens Wiklander 
459403c583SJens Wiklander /*----------------------------------------------------------------------------
469403c583SJens Wiklander | Default value for `softfloat_detectTininess'.
479403c583SJens Wiklander *----------------------------------------------------------------------------*/
48fce4cfa1SJens Wiklander #define init_detectTininess softfloat_tininess_afterRounding
499403c583SJens Wiklander 
509403c583SJens Wiklander /*----------------------------------------------------------------------------
519403c583SJens Wiklander | "Common NaN" structure, used to transfer NaN representations from one format
529403c583SJens Wiklander | to another.
539403c583SJens Wiklander *----------------------------------------------------------------------------*/
549403c583SJens Wiklander struct commonNaN {
559403c583SJens Wiklander     bool sign;
569403c583SJens Wiklander #ifdef LITTLEENDIAN
579403c583SJens Wiklander     uint64_t v0, v64;
589403c583SJens Wiklander #else
599403c583SJens Wiklander     uint64_t v64, v0;
609403c583SJens Wiklander #endif
619403c583SJens Wiklander };
629403c583SJens Wiklander 
639403c583SJens Wiklander /*----------------------------------------------------------------------------
649403c583SJens Wiklander | The bit pattern for a default generated 32-bit floating-point NaN.
659403c583SJens Wiklander *----------------------------------------------------------------------------*/
669403c583SJens Wiklander #define defaultNaNF32UI 0xFFC00000
679403c583SJens Wiklander 
689403c583SJens Wiklander /*----------------------------------------------------------------------------
699403c583SJens Wiklander | Returns true when 32-bit unsigned integer `uiA' has the bit pattern of a
709403c583SJens Wiklander | 32-bit floating-point signaling NaN.
719403c583SJens Wiklander | Note:  This macro evaluates its argument more than once.
729403c583SJens Wiklander *----------------------------------------------------------------------------*/
739403c583SJens Wiklander #define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
749403c583SJens Wiklander 
759403c583SJens Wiklander /*----------------------------------------------------------------------------
769403c583SJens Wiklander | Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
779403c583SJens Wiklander | this NaN to the common NaN form, and stores the resulting common NaN at the
789403c583SJens Wiklander | location pointed to by `zPtr'.  If the NaN is a signaling NaN, the invalid
799403c583SJens Wiklander | exception is raised.
809403c583SJens Wiklander *----------------------------------------------------------------------------*/
819403c583SJens Wiklander void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
829403c583SJens Wiklander 
839403c583SJens Wiklander /*----------------------------------------------------------------------------
849403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
859403c583SJens Wiklander | NaN, and returns the bit pattern of this value as an unsigned integer.
869403c583SJens Wiklander *----------------------------------------------------------------------------*/
879403c583SJens Wiklander uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
889403c583SJens Wiklander 
899403c583SJens Wiklander /*----------------------------------------------------------------------------
909403c583SJens Wiklander | Interpreting `uiA' and `uiB' as the bit patterns of two 32-bit floating-
919403c583SJens Wiklander | point values, at least one of which is a NaN, returns the bit pattern of
929403c583SJens Wiklander | the combined NaN result.  If either `uiA' or `uiB' has the pattern of a
939403c583SJens Wiklander | signaling NaN, the invalid exception is raised.
949403c583SJens Wiklander *----------------------------------------------------------------------------*/
959403c583SJens Wiklander uint_fast32_t
969403c583SJens Wiklander  softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
979403c583SJens Wiklander 
989403c583SJens Wiklander /*----------------------------------------------------------------------------
999403c583SJens Wiklander | The bit pattern for a default generated 64-bit floating-point NaN.
1009403c583SJens Wiklander *----------------------------------------------------------------------------*/
1019403c583SJens Wiklander #define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
1029403c583SJens Wiklander 
1039403c583SJens Wiklander /*----------------------------------------------------------------------------
1049403c583SJens Wiklander | Returns true when 64-bit unsigned integer `uiA' has the bit pattern of a
1059403c583SJens Wiklander | 64-bit floating-point signaling NaN.
1069403c583SJens Wiklander | Note:  This macro evaluates its argument more than once.
1079403c583SJens Wiklander *----------------------------------------------------------------------------*/
1089403c583SJens Wiklander #define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
1099403c583SJens Wiklander 
1109403c583SJens Wiklander /*----------------------------------------------------------------------------
1119403c583SJens Wiklander | Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
1129403c583SJens Wiklander | this NaN to the common NaN form, and stores the resulting common NaN at the
1139403c583SJens Wiklander | location pointed to by `zPtr'.  If the NaN is a signaling NaN, the invalid
1149403c583SJens Wiklander | exception is raised.
1159403c583SJens Wiklander *----------------------------------------------------------------------------*/
1169403c583SJens Wiklander void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
1179403c583SJens Wiklander 
1189403c583SJens Wiklander /*----------------------------------------------------------------------------
1199403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
1209403c583SJens Wiklander | NaN, and returns the bit pattern of this value as an unsigned integer.
1219403c583SJens Wiklander *----------------------------------------------------------------------------*/
1229403c583SJens Wiklander uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
1239403c583SJens Wiklander 
1249403c583SJens Wiklander /*----------------------------------------------------------------------------
1259403c583SJens Wiklander | Interpreting `uiA' and `uiB' as the bit patterns of two 64-bit floating-
1269403c583SJens Wiklander | point values, at least one of which is a NaN, returns the bit pattern of
1279403c583SJens Wiklander | the combined NaN result.  If either `uiA' or `uiB' has the pattern of a
1289403c583SJens Wiklander | signaling NaN, the invalid exception is raised.
1299403c583SJens Wiklander *----------------------------------------------------------------------------*/
1309403c583SJens Wiklander uint_fast64_t
1319403c583SJens Wiklander  softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
1329403c583SJens Wiklander 
1339403c583SJens Wiklander /*----------------------------------------------------------------------------
1349403c583SJens Wiklander | The bit pattern for a default generated 80-bit extended floating-point NaN.
1359403c583SJens Wiklander *----------------------------------------------------------------------------*/
1369403c583SJens Wiklander #define defaultNaNExtF80UI64 0xFFFF
1379403c583SJens Wiklander #define defaultNaNExtF80UI0  UINT64_C( 0xC000000000000000 )
1389403c583SJens Wiklander 
1399403c583SJens Wiklander /*----------------------------------------------------------------------------
1409403c583SJens Wiklander | Returns true when the 80-bit unsigned integer formed from concatenating
1419403c583SJens Wiklander | 16-bit `uiA64' and 64-bit `uiA0' has the bit pattern of an 80-bit extended
1429403c583SJens Wiklander | floating-point signaling NaN.
1439403c583SJens Wiklander | Note:  This macro evaluates its arguments more than once.
1449403c583SJens Wiklander *----------------------------------------------------------------------------*/
1459403c583SJens Wiklander #define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
1469403c583SJens Wiklander 
1479403c583SJens Wiklander #ifdef SOFTFLOAT_FAST_INT64
1489403c583SJens Wiklander 
1499403c583SJens Wiklander /*----------------------------------------------------------------------------
1509403c583SJens Wiklander | The following functions are needed only when `SOFTFLOAT_FAST_INT64' is
1519403c583SJens Wiklander | defined.
1529403c583SJens Wiklander *----------------------------------------------------------------------------*/
1539403c583SJens Wiklander 
1549403c583SJens Wiklander /*----------------------------------------------------------------------------
1559403c583SJens Wiklander | Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
1569403c583SJens Wiklander | has the bit pattern of an 80-bit extended floating-point NaN, converts
1579403c583SJens Wiklander | this NaN to the common NaN form, and stores the resulting common NaN at the
1589403c583SJens Wiklander | location pointed to by `zPtr'.  If the NaN is a signaling NaN, the invalid
1599403c583SJens Wiklander | exception is raised.
1609403c583SJens Wiklander *----------------------------------------------------------------------------*/
1619403c583SJens Wiklander void
1629403c583SJens Wiklander  softfloat_extF80UIToCommonNaN(
1639403c583SJens Wiklander      uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
1649403c583SJens Wiklander 
1659403c583SJens Wiklander /*----------------------------------------------------------------------------
1669403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into an 80-bit extended
1679403c583SJens Wiklander | floating-point NaN, and returns the bit pattern of this value as an unsigned
1689403c583SJens Wiklander | integer.
1699403c583SJens Wiklander *----------------------------------------------------------------------------*/
1709403c583SJens Wiklander struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
1719403c583SJens Wiklander 
1729403c583SJens Wiklander /*----------------------------------------------------------------------------
1739403c583SJens Wiklander | Interpreting the unsigned integer formed from concatenating `uiA64' and
1749403c583SJens Wiklander | `uiA0' as an 80-bit extended floating-point value, and likewise interpreting
1759403c583SJens Wiklander | the unsigned integer formed from concatenating `uiB64' and `uiB0' as another
1769403c583SJens Wiklander | 80-bit extended floating-point value, and assuming at least on of these
1779403c583SJens Wiklander | floating-point values is a NaN, returns the bit pattern of the combined NaN
1789403c583SJens Wiklander | result.  If either original floating-point value is a signaling NaN, the
1799403c583SJens Wiklander | invalid exception is raised.
1809403c583SJens Wiklander *----------------------------------------------------------------------------*/
1819403c583SJens Wiklander struct uint128
1829403c583SJens Wiklander  softfloat_propagateNaNExtF80UI(
1839403c583SJens Wiklander      uint_fast16_t uiA64,
1849403c583SJens Wiklander      uint_fast64_t uiA0,
1859403c583SJens Wiklander      uint_fast16_t uiB64,
1869403c583SJens Wiklander      uint_fast64_t uiB0
1879403c583SJens Wiklander  );
1889403c583SJens Wiklander 
1899403c583SJens Wiklander /*----------------------------------------------------------------------------
1909403c583SJens Wiklander | The bit pattern for a default generated 128-bit floating-point NaN.
1919403c583SJens Wiklander *----------------------------------------------------------------------------*/
1929403c583SJens Wiklander #define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
1939403c583SJens Wiklander #define defaultNaNF128UI0  UINT64_C( 0 )
1949403c583SJens Wiklander 
1959403c583SJens Wiklander /*----------------------------------------------------------------------------
1969403c583SJens Wiklander | Returns true when the 128-bit unsigned integer formed from concatenating
1979403c583SJens Wiklander | 64-bit `uiA64' and 64-bit `uiA0' has the bit pattern of a 128-bit floating-
1989403c583SJens Wiklander | point signaling NaN.
1999403c583SJens Wiklander | Note:  This macro evaluates its arguments more than once.
2009403c583SJens Wiklander *----------------------------------------------------------------------------*/
2019403c583SJens Wiklander #define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
2029403c583SJens Wiklander 
2039403c583SJens Wiklander /*----------------------------------------------------------------------------
2049403c583SJens Wiklander | Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
2059403c583SJens Wiklander | has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
2069403c583SJens Wiklander | the common NaN form, and stores the resulting common NaN at the location
2079403c583SJens Wiklander | pointed to by `zPtr'.  If the NaN is a signaling NaN, the invalid exception
2089403c583SJens Wiklander | is raised.
2099403c583SJens Wiklander *----------------------------------------------------------------------------*/
2109403c583SJens Wiklander void
2119403c583SJens Wiklander  softfloat_f128UIToCommonNaN(
2129403c583SJens Wiklander      uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
2139403c583SJens Wiklander 
2149403c583SJens Wiklander /*----------------------------------------------------------------------------
2159403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
2169403c583SJens Wiklander | NaN, and returns the bit pattern of this value as an unsigned integer.
2179403c583SJens Wiklander *----------------------------------------------------------------------------*/
2189403c583SJens Wiklander struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
2199403c583SJens Wiklander 
2209403c583SJens Wiklander /*----------------------------------------------------------------------------
2219403c583SJens Wiklander | Interpreting the unsigned integer formed from concatenating `uiA64' and
2229403c583SJens Wiklander | `uiA0' as a 128-bit floating-point value, and likewise interpreting the
2239403c583SJens Wiklander | unsigned integer formed from concatenating `uiB64' and `uiB0' as another
2249403c583SJens Wiklander | 128-bit floating-point value, and assuming at least on of these floating-
2259403c583SJens Wiklander | point values is a NaN, returns the bit pattern of the combined NaN result.
2269403c583SJens Wiklander | If either original floating-point value is a signaling NaN, the invalid
2279403c583SJens Wiklander | exception is raised.
2289403c583SJens Wiklander *----------------------------------------------------------------------------*/
2299403c583SJens Wiklander struct uint128
2309403c583SJens Wiklander  softfloat_propagateNaNF128UI(
2319403c583SJens Wiklander      uint_fast64_t uiA64,
2329403c583SJens Wiklander      uint_fast64_t uiA0,
2339403c583SJens Wiklander      uint_fast64_t uiB64,
2349403c583SJens Wiklander      uint_fast64_t uiB0
2359403c583SJens Wiklander  );
2369403c583SJens Wiklander 
2379403c583SJens Wiklander #else
2389403c583SJens Wiklander 
2399403c583SJens Wiklander /*----------------------------------------------------------------------------
2409403c583SJens Wiklander | The following functions are needed only when `SOFTFLOAT_FAST_INT64' is not
2419403c583SJens Wiklander | defined.
2429403c583SJens Wiklander *----------------------------------------------------------------------------*/
2439403c583SJens Wiklander 
2449403c583SJens Wiklander /*----------------------------------------------------------------------------
2459403c583SJens Wiklander | Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
2469403c583SJens Wiklander | a NaN, converts this NaN to the common NaN form, and stores the resulting
2479403c583SJens Wiklander | common NaN at the location pointed to by `zPtr'.  If the NaN is a signaling
2489403c583SJens Wiklander | NaN, the invalid exception is raised.
2499403c583SJens Wiklander *----------------------------------------------------------------------------*/
2509403c583SJens Wiklander void
2519403c583SJens Wiklander  softfloat_extF80MToCommonNaN(
2529403c583SJens Wiklander      const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
2539403c583SJens Wiklander 
2549403c583SJens Wiklander /*----------------------------------------------------------------------------
2559403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into an 80-bit extended
2569403c583SJens Wiklander | floating-point NaN, and stores this NaN at the location pointed to by
2579403c583SJens Wiklander | `zSPtr'.
2589403c583SJens Wiklander *----------------------------------------------------------------------------*/
2599403c583SJens Wiklander void
2609403c583SJens Wiklander  softfloat_commonNaNToExtF80M(
2619403c583SJens Wiklander      const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
2629403c583SJens Wiklander 
2639403c583SJens Wiklander /*----------------------------------------------------------------------------
2649403c583SJens Wiklander | Assuming at least one of the two 80-bit extended floating-point values
2659403c583SJens Wiklander | pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
2669403c583SJens Wiklander | at the location pointed to by `zSPtr'.  If either original floating-point
2679403c583SJens Wiklander | value is a signaling NaN, the invalid exception is raised.
2689403c583SJens Wiklander *----------------------------------------------------------------------------*/
2699403c583SJens Wiklander void
2709403c583SJens Wiklander  softfloat_propagateNaNExtF80M(
2719403c583SJens Wiklander      const struct extFloat80M *aSPtr,
2729403c583SJens Wiklander      const struct extFloat80M *bSPtr,
2739403c583SJens Wiklander      struct extFloat80M *zSPtr
2749403c583SJens Wiklander  );
2759403c583SJens Wiklander 
2769403c583SJens Wiklander /*----------------------------------------------------------------------------
2779403c583SJens Wiklander | The bit pattern for a default generated 128-bit floating-point NaN.
2789403c583SJens Wiklander *----------------------------------------------------------------------------*/
2799403c583SJens Wiklander #define defaultNaNF128UI96 0xFFFF8000
2809403c583SJens Wiklander #define defaultNaNF128UI64 0
2819403c583SJens Wiklander #define defaultNaNF128UI32 0
2829403c583SJens Wiklander #define defaultNaNF128UI0  0
2839403c583SJens Wiklander 
2849403c583SJens Wiklander /*----------------------------------------------------------------------------
2859403c583SJens Wiklander | Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
2869403c583SJens Wiklander | converts this NaN to the common NaN form, and stores the resulting common
2879403c583SJens Wiklander | NaN at the location pointed to by `zPtr'.  If the NaN is a signaling NaN,
2889403c583SJens Wiklander | the invalid exception is raised.  Argument `aWPtr' points to an array of
2899403c583SJens Wiklander | four 32-bit elements that concatenate in the platform's normal endian order
2909403c583SJens Wiklander | to form a 128-bit floating-point value.
2919403c583SJens Wiklander *----------------------------------------------------------------------------*/
2929403c583SJens Wiklander void
2939403c583SJens Wiklander  softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
2949403c583SJens Wiklander 
2959403c583SJens Wiklander /*----------------------------------------------------------------------------
2969403c583SJens Wiklander | Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
2979403c583SJens Wiklander | NaN, and stores this NaN at the location pointed to by `zWPtr'.  Argument
2989403c583SJens Wiklander | `zWPtr' points to an array of four 32-bit elements that concatenate in the
2999403c583SJens Wiklander | platform's normal endian order to form a 128-bit floating-point value.
3009403c583SJens Wiklander *----------------------------------------------------------------------------*/
3019403c583SJens Wiklander void
3029403c583SJens Wiklander  softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
3039403c583SJens Wiklander 
3049403c583SJens Wiklander /*----------------------------------------------------------------------------
3059403c583SJens Wiklander | Assuming at least one of the two 128-bit floating-point values pointed to by
3069403c583SJens Wiklander | `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
3079403c583SJens Wiklander | pointed to by `zWPtr'.  If either original floating-point value is a
3089403c583SJens Wiklander | signaling NaN, the invalid exception is raised.  Each of `aWPtr', `bWPtr',
3099403c583SJens Wiklander | and `zWPtr' points to an array of four 32-bit elements that concatenate in
3109403c583SJens Wiklander | the platform's normal endian order to form a 128-bit floating-point value.
3119403c583SJens Wiklander *----------------------------------------------------------------------------*/
3129403c583SJens Wiklander void
3139403c583SJens Wiklander  softfloat_propagateNaNF128M(
3149403c583SJens Wiklander      const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
3159403c583SJens Wiklander 
3169403c583SJens Wiklander #endif
3179403c583SJens Wiklander 
3189403c583SJens Wiklander #endif
3199403c583SJens Wiklander 
320