Compare commits
8 Commits
a365110054
...
f579ec6e48
Author | SHA1 | Date | |
---|---|---|---|
f579ec6e48 | |||
fd20e66f1f | |||
5d69b79232 | |||
2edd68d1bd | |||
7ffa7667b6 | |||
93d89e07ca | |||
17dcba4b90 | |||
39d2518fdd |
@ -100,7 +100,12 @@ protected:
|
|||||||
using compile_ret_t = virt_addr_t;
|
using compile_ret_t = virt_addr_t;
|
||||||
using compile_func = compile_ret_t (this_class::*)(virt_addr_t &pc, code_word_t instr);
|
using compile_func = compile_ret_t (this_class::*)(virt_addr_t &pc, code_word_t instr);
|
||||||
|
|
||||||
inline const char *name(size_t index){return index<traits::reg_aliases.size()?traits::reg_aliases[index]:"illegal";}
|
inline const char *name(size_t index){return traits::reg_aliases.at(index);}
|
||||||
|
<%
|
||||||
|
def fcsr = registers.find {it.name=='FCSR'}
|
||||||
|
if(fcsr != null) {%>
|
||||||
|
inline const char *fname(size_t index){return index < 32?name(index+traits::F0):"illegal";}
|
||||||
|
<%}%>
|
||||||
|
|
||||||
virt_addr_t execute_inst(finish_cond_e cond, virt_addr_t start, uint64_t icount_limit) override;
|
virt_addr_t execute_inst(finish_cond_e cond, virt_addr_t start, uint64_t icount_limit) override;
|
||||||
|
|
||||||
|
2
softfloat/.gitignore
vendored
Normal file
2
softfloat/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
build/*/*.o
|
||||||
|
build/*/*.a
|
@ -1,37 +1,37 @@
|
|||||||
|
|
||||||
License for Berkeley SoftFloat Release 3e
|
License for Berkeley SoftFloat Release 3e
|
||||||
|
|
||||||
John R. Hauser
|
John R. Hauser
|
||||||
2018 January 20
|
2018 January 20
|
||||||
|
|
||||||
The following applies to the whole of SoftFloat Release 3e as well as to
|
The following applies to the whole of SoftFloat Release 3e as well as to
|
||||||
each source file individually.
|
each source file individually.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
notice, this list of conditions, and the following disclaimer in the
|
notice, this list of conditions, and the following disclaimer in the
|
||||||
documentation and/or other materials provided with the distribution.
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors
|
3. Neither the name of the University nor the names of its contributors
|
||||||
may be used to endorse or promote products derived from this software
|
may be used to endorse or promote products derived from this software
|
||||||
without specific prior written permission.
|
without specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
@ -1,49 +1,49 @@
|
|||||||
|
|
||||||
<HTML>
|
<HTML>
|
||||||
|
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>Berkeley SoftFloat Package Overview</TITLE>
|
<TITLE>Berkeley SoftFloat Package Overview</TITLE>
|
||||||
</HEAD>
|
</HEAD>
|
||||||
|
|
||||||
<BODY>
|
<BODY>
|
||||||
|
|
||||||
<H1>Package Overview for Berkeley SoftFloat Release 3e</H1>
|
<H1>Package Overview for Berkeley SoftFloat Release 3e</H1>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
John R. Hauser<BR>
|
John R. Hauser<BR>
|
||||||
2018 January 20<BR>
|
2018 January 20<BR>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
Berkeley SoftFloat is a software implementation of binary floating-point that
|
Berkeley SoftFloat is a software implementation of binary floating-point that
|
||||||
conforms to the IEEE Standard for Floating-Point Arithmetic.
|
conforms to the IEEE Standard for Floating-Point Arithmetic.
|
||||||
SoftFloat is distributed in the form of C source code.
|
SoftFloat is distributed in the form of C source code.
|
||||||
Building the SoftFloat sources generates a library file (typically
|
Building the SoftFloat sources generates a library file (typically
|
||||||
<CODE>softfloat.a</CODE> or <CODE>libsoftfloat.a</CODE>) containing the
|
<CODE>softfloat.a</CODE> or <CODE>libsoftfloat.a</CODE>) containing the
|
||||||
floating-point subroutines.
|
floating-point subroutines.
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
The SoftFloat package is documented in the following files in the
|
The SoftFloat package is documented in the following files in the
|
||||||
<CODE>doc</CODE> subdirectory:
|
<CODE>doc</CODE> subdirectory:
|
||||||
<BLOCKQUOTE>
|
<BLOCKQUOTE>
|
||||||
<TABLE>
|
<TABLE>
|
||||||
<TR>
|
<TR>
|
||||||
<TD><A HREF="doc/SoftFloat.html"><NOBR><CODE>SoftFloat.html</CODE></NOBR></A></TD>
|
<TD><A HREF="doc/SoftFloat.html"><NOBR><CODE>SoftFloat.html</CODE></NOBR></A></TD>
|
||||||
<TD>Documentation for using the SoftFloat functions.</TD>
|
<TD>Documentation for using the SoftFloat functions.</TD>
|
||||||
</TR>
|
</TR>
|
||||||
<TR>
|
<TR>
|
||||||
<TD><A HREF="doc/SoftFloat-source.html"><NOBR><CODE>SoftFloat-source.html</CODE></NOBR></A></TD>
|
<TD><A HREF="doc/SoftFloat-source.html"><NOBR><CODE>SoftFloat-source.html</CODE></NOBR></A></TD>
|
||||||
<TD>Documentation for building SoftFloat.</TD>
|
<TD>Documentation for building SoftFloat.</TD>
|
||||||
</TR>
|
</TR>
|
||||||
<TR>
|
<TR>
|
||||||
<TD><A HREF="doc/SoftFloat-history.html"><NOBR><CODE>SoftFloat-history.html</CODE></A><CODE> </CODE></NOBR></TD>
|
<TD><A HREF="doc/SoftFloat-history.html"><NOBR><CODE>SoftFloat-history.html</CODE></A><CODE> </CODE></NOBR></TD>
|
||||||
<TD>History of the major changes to SoftFloat.</TD>
|
<TD>History of the major changes to SoftFloat.</TD>
|
||||||
</TR>
|
</TR>
|
||||||
</TABLE>
|
</TABLE>
|
||||||
</BLOCKQUOTE>
|
</BLOCKQUOTE>
|
||||||
Other files in the package comprise the source code for SoftFloat.
|
Other files in the package comprise the source code for SoftFloat.
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
|
|
||||||
|
24
softfloat/README.md
Normal file
24
softfloat/README.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
Package Overview for Berkeley SoftFloat Release 3e
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
John R. Hauser<br>
|
||||||
|
2018 January 20
|
||||||
|
|
||||||
|
|
||||||
|
Berkeley SoftFloat is a software implementation of binary floating-point
|
||||||
|
that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat
|
||||||
|
is distributed in the form of C source code. Building the SoftFloat sources
|
||||||
|
generates a library file (typically `softfloat.a` or `libsoftfloat.a`)
|
||||||
|
containing the floating-point subroutines.
|
||||||
|
|
||||||
|
|
||||||
|
The SoftFloat package is documented in the following files in the `doc`
|
||||||
|
subdirectory:
|
||||||
|
|
||||||
|
* [SoftFloat.html](http://www.jhauser.us/arithmetic/SoftFloat-3/doc/SoftFloat.html) Documentation for using the SoftFloat functions.
|
||||||
|
* [SoftFloat-source.html](http://www.jhauser.us/arithmetic/SoftFloat-3/doc/SoftFloat-source.html) Documentation for building SoftFloat.
|
||||||
|
* [SoftFloat-history.html](http://www.jhauser.us/arithmetic/SoftFloat-3/doc/SoftFloat-history.html) History of the major changes to SoftFloat.
|
||||||
|
|
||||||
|
Other files in the package comprise the source code for SoftFloat.
|
||||||
|
|
@ -1,21 +1,21 @@
|
|||||||
|
|
||||||
Package Overview for Berkeley SoftFloat Release 3e
|
Package Overview for Berkeley SoftFloat Release 3e
|
||||||
|
|
||||||
John R. Hauser
|
John R. Hauser
|
||||||
2018 January 20
|
2018 January 20
|
||||||
|
|
||||||
Berkeley SoftFloat is a software implementation of binary floating-point
|
Berkeley SoftFloat is a software implementation of binary floating-point
|
||||||
that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat
|
that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat
|
||||||
is distributed in the form of C source code. Building the SoftFloat sources
|
is distributed in the form of C source code. Building the SoftFloat sources
|
||||||
generates a library file (typically "softfloat.a" or "libsoftfloat.a")
|
generates a library file (typically "softfloat.a" or "libsoftfloat.a")
|
||||||
containing the floating-point subroutines.
|
containing the floating-point subroutines.
|
||||||
|
|
||||||
The SoftFloat package is documented in the following files in the "doc"
|
The SoftFloat package is documented in the following files in the "doc"
|
||||||
subdirectory:
|
subdirectory:
|
||||||
|
|
||||||
SoftFloat.html Documentation for using the SoftFloat functions.
|
SoftFloat.html Documentation for using the SoftFloat functions.
|
||||||
SoftFloat-source.html Documentation for building SoftFloat.
|
SoftFloat-source.html Documentation for building SoftFloat.
|
||||||
SoftFloat-history.html History of the major changes to SoftFloat.
|
SoftFloat-history.html History of the major changes to SoftFloat.
|
||||||
|
|
||||||
Other files in the package comprise the source code for SoftFloat.
|
Other files in the package comprise the source code for SoftFloat.
|
||||||
|
|
||||||
|
@ -1,325 +1,325 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086
|
SPECIALIZE_TYPE ?= 8086
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
||||||
$(C_INCLUDES) -O2 -o $@
|
$(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS =
|
OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
@ -1,325 +1,325 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086-SSE
|
SPECIALIZE_TYPE ?= 8086-SSE
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
||||||
$(C_INCLUDES) -O2 -o $@
|
$(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS =
|
OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
@ -1,323 +1,323 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= ARM-VFPv2
|
SPECIALIZE_TYPE ?= ARM-VFPv2
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5
|
SOFTFLOAT_OPTS ?= -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
||||||
$(C_INCLUDES) -O2 -o $@
|
$(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS =
|
OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
399
softfloat/build/Linux-RISCV64-GCC/Makefile
Normal file
399
softfloat/build/Linux-RISCV64-GCC/Makefile
Normal file
@ -0,0 +1,399 @@
|
|||||||
|
|
||||||
|
#=============================================================================
|
||||||
|
#
|
||||||
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
|
# Package, Release 3e, by John R. Hauser.
|
||||||
|
#
|
||||||
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
|
# University of California. All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions, and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
|
# may be used to endorse or promote products derived from this software
|
||||||
|
# without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
#=============================================================================
|
||||||
|
|
||||||
|
SOURCE_DIR ?= ../../source
|
||||||
|
SPECIALIZE_TYPE ?= RISCV
|
||||||
|
MARCH ?= rv64gcv_zfh_zfhmin
|
||||||
|
MABI ?= lp64d
|
||||||
|
|
||||||
|
SOFTFLOAT_OPTS ?= \
|
||||||
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
|
DELETE = rm -f
|
||||||
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
|
COMPILE_C = \
|
||||||
|
riscv64-unknown-linux-gnu-gcc -c -march=$(MARCH) -mabi=$(MABI) -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
|
||||||
|
$(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
||||||
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
|
OBJ = .o
|
||||||
|
LIB = .a
|
||||||
|
|
||||||
|
OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
|
OBJS_PRIMITIVES = \
|
||||||
|
s_eq128$(OBJ) \
|
||||||
|
s_le128$(OBJ) \
|
||||||
|
s_lt128$(OBJ) \
|
||||||
|
s_shortShiftLeft128$(OBJ) \
|
||||||
|
s_shortShiftRight128$(OBJ) \
|
||||||
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
|
s_shortShiftRightJam64Extra$(OBJ) \
|
||||||
|
s_shortShiftRightJam128$(OBJ) \
|
||||||
|
s_shortShiftRightJam128Extra$(OBJ) \
|
||||||
|
s_shiftRightJam32$(OBJ) \
|
||||||
|
s_shiftRightJam64$(OBJ) \
|
||||||
|
s_shiftRightJam64Extra$(OBJ) \
|
||||||
|
s_shiftRightJam128$(OBJ) \
|
||||||
|
s_shiftRightJam128Extra$(OBJ) \
|
||||||
|
s_shiftRightJam256M$(OBJ) \
|
||||||
|
s_countLeadingZeros8$(OBJ) \
|
||||||
|
s_countLeadingZeros16$(OBJ) \
|
||||||
|
s_countLeadingZeros32$(OBJ) \
|
||||||
|
s_countLeadingZeros64$(OBJ) \
|
||||||
|
s_add128$(OBJ) \
|
||||||
|
s_add256M$(OBJ) \
|
||||||
|
s_sub128$(OBJ) \
|
||||||
|
s_sub256M$(OBJ) \
|
||||||
|
s_mul64ByShifted32To128$(OBJ) \
|
||||||
|
s_mul64To128$(OBJ) \
|
||||||
|
s_mul128By32$(OBJ) \
|
||||||
|
s_mul128To256M$(OBJ) \
|
||||||
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
|
s_approxRecip32_1$(OBJ) \
|
||||||
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
|
|
||||||
|
OBJS_SPECIALIZE = \
|
||||||
|
softfloat_raiseFlags$(OBJ) \
|
||||||
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
|
s_bf16UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToBF16UI$(OBJ) \
|
||||||
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
|
s_extF80UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToExtF80UI$(OBJ) \
|
||||||
|
s_propagateNaNExtF80UI$(OBJ) \
|
||||||
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
|
s_f128UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToF128UI$(OBJ) \
|
||||||
|
s_propagateNaNF128UI$(OBJ) \
|
||||||
|
|
||||||
|
OBJS_OTHERS = \
|
||||||
|
s_roundToUI32$(OBJ) \
|
||||||
|
s_roundToUI64$(OBJ) \
|
||||||
|
s_roundToI32$(OBJ) \
|
||||||
|
s_roundToI64$(OBJ) \
|
||||||
|
s_normSubnormalBF16Sig$(OBJ) \
|
||||||
|
s_roundPackToBF16$(OBJ) \
|
||||||
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
|
s_roundPackToF16$(OBJ) \
|
||||||
|
s_normRoundPackToF16$(OBJ) \
|
||||||
|
s_addMagsF16$(OBJ) \
|
||||||
|
s_subMagsF16$(OBJ) \
|
||||||
|
s_mulAddF16$(OBJ) \
|
||||||
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
|
s_roundPackToF32$(OBJ) \
|
||||||
|
s_normRoundPackToF32$(OBJ) \
|
||||||
|
s_addMagsF32$(OBJ) \
|
||||||
|
s_subMagsF32$(OBJ) \
|
||||||
|
s_mulAddF32$(OBJ) \
|
||||||
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
|
s_roundPackToF64$(OBJ) \
|
||||||
|
s_normRoundPackToF64$(OBJ) \
|
||||||
|
s_addMagsF64$(OBJ) \
|
||||||
|
s_subMagsF64$(OBJ) \
|
||||||
|
s_mulAddF64$(OBJ) \
|
||||||
|
s_normSubnormalExtF80Sig$(OBJ) \
|
||||||
|
s_roundPackToExtF80$(OBJ) \
|
||||||
|
s_normRoundPackToExtF80$(OBJ) \
|
||||||
|
s_addMagsExtF80$(OBJ) \
|
||||||
|
s_subMagsExtF80$(OBJ) \
|
||||||
|
s_normSubnormalF128Sig$(OBJ) \
|
||||||
|
s_roundPackToF128$(OBJ) \
|
||||||
|
s_normRoundPackToF128$(OBJ) \
|
||||||
|
s_addMagsF128$(OBJ) \
|
||||||
|
s_subMagsF128$(OBJ) \
|
||||||
|
s_mulAddF128$(OBJ) \
|
||||||
|
softfloat_state$(OBJ) \
|
||||||
|
ui32_to_f16$(OBJ) \
|
||||||
|
ui32_to_f32$(OBJ) \
|
||||||
|
ui32_to_f64$(OBJ) \
|
||||||
|
ui32_to_extF80$(OBJ) \
|
||||||
|
ui32_to_extF80M$(OBJ) \
|
||||||
|
ui32_to_f128$(OBJ) \
|
||||||
|
ui32_to_f128M$(OBJ) \
|
||||||
|
ui64_to_f16$(OBJ) \
|
||||||
|
ui64_to_f32$(OBJ) \
|
||||||
|
ui64_to_f64$(OBJ) \
|
||||||
|
ui64_to_extF80$(OBJ) \
|
||||||
|
ui64_to_extF80M$(OBJ) \
|
||||||
|
ui64_to_f128$(OBJ) \
|
||||||
|
ui64_to_f128M$(OBJ) \
|
||||||
|
i32_to_f16$(OBJ) \
|
||||||
|
i32_to_f32$(OBJ) \
|
||||||
|
i32_to_f64$(OBJ) \
|
||||||
|
i32_to_extF80$(OBJ) \
|
||||||
|
i32_to_extF80M$(OBJ) \
|
||||||
|
i32_to_f128$(OBJ) \
|
||||||
|
i32_to_f128M$(OBJ) \
|
||||||
|
i64_to_f16$(OBJ) \
|
||||||
|
i64_to_f32$(OBJ) \
|
||||||
|
i64_to_f64$(OBJ) \
|
||||||
|
i64_to_extF80$(OBJ) \
|
||||||
|
i64_to_extF80M$(OBJ) \
|
||||||
|
i64_to_f128$(OBJ) \
|
||||||
|
i64_to_f128M$(OBJ) \
|
||||||
|
bf16_isSignalingNaN$(OBJ) \
|
||||||
|
bf16_to_f32$(OBJ) \
|
||||||
|
f16_to_ui32$(OBJ) \
|
||||||
|
f16_to_ui64$(OBJ) \
|
||||||
|
f16_to_i32$(OBJ) \
|
||||||
|
f16_to_i64$(OBJ) \
|
||||||
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
|
f16_to_f32$(OBJ) \
|
||||||
|
f16_to_f64$(OBJ) \
|
||||||
|
f16_to_extF80$(OBJ) \
|
||||||
|
f16_to_extF80M$(OBJ) \
|
||||||
|
f16_to_f128$(OBJ) \
|
||||||
|
f16_to_f128M$(OBJ) \
|
||||||
|
f16_roundToInt$(OBJ) \
|
||||||
|
f16_add$(OBJ) \
|
||||||
|
f16_sub$(OBJ) \
|
||||||
|
f16_mul$(OBJ) \
|
||||||
|
f16_mulAdd$(OBJ) \
|
||||||
|
f16_div$(OBJ) \
|
||||||
|
f16_rem$(OBJ) \
|
||||||
|
f16_sqrt$(OBJ) \
|
||||||
|
f16_eq$(OBJ) \
|
||||||
|
f16_le$(OBJ) \
|
||||||
|
f16_lt$(OBJ) \
|
||||||
|
f16_eq_signaling$(OBJ) \
|
||||||
|
f16_le_quiet$(OBJ) \
|
||||||
|
f16_lt_quiet$(OBJ) \
|
||||||
|
f16_isSignalingNaN$(OBJ) \
|
||||||
|
f32_to_ui32$(OBJ) \
|
||||||
|
f32_to_ui64$(OBJ) \
|
||||||
|
f32_to_i32$(OBJ) \
|
||||||
|
f32_to_i64$(OBJ) \
|
||||||
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
|
f32_to_bf16$(OBJ) \
|
||||||
|
f32_to_f16$(OBJ) \
|
||||||
|
f32_to_f64$(OBJ) \
|
||||||
|
f32_to_extF80$(OBJ) \
|
||||||
|
f32_to_extF80M$(OBJ) \
|
||||||
|
f32_to_f128$(OBJ) \
|
||||||
|
f32_to_f128M$(OBJ) \
|
||||||
|
f32_roundToInt$(OBJ) \
|
||||||
|
f32_add$(OBJ) \
|
||||||
|
f32_sub$(OBJ) \
|
||||||
|
f32_mul$(OBJ) \
|
||||||
|
f32_mulAdd$(OBJ) \
|
||||||
|
f32_div$(OBJ) \
|
||||||
|
f32_rem$(OBJ) \
|
||||||
|
f32_sqrt$(OBJ) \
|
||||||
|
f32_eq$(OBJ) \
|
||||||
|
f32_le$(OBJ) \
|
||||||
|
f32_lt$(OBJ) \
|
||||||
|
f32_eq_signaling$(OBJ) \
|
||||||
|
f32_le_quiet$(OBJ) \
|
||||||
|
f32_lt_quiet$(OBJ) \
|
||||||
|
f32_isSignalingNaN$(OBJ) \
|
||||||
|
f64_to_ui32$(OBJ) \
|
||||||
|
f64_to_ui64$(OBJ) \
|
||||||
|
f64_to_i32$(OBJ) \
|
||||||
|
f64_to_i64$(OBJ) \
|
||||||
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
|
f64_to_f16$(OBJ) \
|
||||||
|
f64_to_f32$(OBJ) \
|
||||||
|
f64_to_extF80$(OBJ) \
|
||||||
|
f64_to_extF80M$(OBJ) \
|
||||||
|
f64_to_f128$(OBJ) \
|
||||||
|
f64_to_f128M$(OBJ) \
|
||||||
|
f64_roundToInt$(OBJ) \
|
||||||
|
f64_add$(OBJ) \
|
||||||
|
f64_sub$(OBJ) \
|
||||||
|
f64_mul$(OBJ) \
|
||||||
|
f64_mulAdd$(OBJ) \
|
||||||
|
f64_div$(OBJ) \
|
||||||
|
f64_rem$(OBJ) \
|
||||||
|
f64_sqrt$(OBJ) \
|
||||||
|
f64_eq$(OBJ) \
|
||||||
|
f64_le$(OBJ) \
|
||||||
|
f64_lt$(OBJ) \
|
||||||
|
f64_eq_signaling$(OBJ) \
|
||||||
|
f64_le_quiet$(OBJ) \
|
||||||
|
f64_lt_quiet$(OBJ) \
|
||||||
|
f64_isSignalingNaN$(OBJ) \
|
||||||
|
extF80_to_ui32$(OBJ) \
|
||||||
|
extF80_to_ui64$(OBJ) \
|
||||||
|
extF80_to_i32$(OBJ) \
|
||||||
|
extF80_to_i64$(OBJ) \
|
||||||
|
extF80_to_ui32_r_minMag$(OBJ) \
|
||||||
|
extF80_to_ui64_r_minMag$(OBJ) \
|
||||||
|
extF80_to_i32_r_minMag$(OBJ) \
|
||||||
|
extF80_to_i64_r_minMag$(OBJ) \
|
||||||
|
extF80_to_f16$(OBJ) \
|
||||||
|
extF80_to_f32$(OBJ) \
|
||||||
|
extF80_to_f64$(OBJ) \
|
||||||
|
extF80_to_f128$(OBJ) \
|
||||||
|
extF80_roundToInt$(OBJ) \
|
||||||
|
extF80_add$(OBJ) \
|
||||||
|
extF80_sub$(OBJ) \
|
||||||
|
extF80_mul$(OBJ) \
|
||||||
|
extF80_div$(OBJ) \
|
||||||
|
extF80_rem$(OBJ) \
|
||||||
|
extF80_sqrt$(OBJ) \
|
||||||
|
extF80_eq$(OBJ) \
|
||||||
|
extF80_le$(OBJ) \
|
||||||
|
extF80_lt$(OBJ) \
|
||||||
|
extF80_eq_signaling$(OBJ) \
|
||||||
|
extF80_le_quiet$(OBJ) \
|
||||||
|
extF80_lt_quiet$(OBJ) \
|
||||||
|
extF80_isSignalingNaN$(OBJ) \
|
||||||
|
extF80M_to_ui32$(OBJ) \
|
||||||
|
extF80M_to_ui64$(OBJ) \
|
||||||
|
extF80M_to_i32$(OBJ) \
|
||||||
|
extF80M_to_i64$(OBJ) \
|
||||||
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
|
extF80M_to_f16$(OBJ) \
|
||||||
|
extF80M_to_f32$(OBJ) \
|
||||||
|
extF80M_to_f64$(OBJ) \
|
||||||
|
extF80M_to_f128M$(OBJ) \
|
||||||
|
extF80M_roundToInt$(OBJ) \
|
||||||
|
extF80M_add$(OBJ) \
|
||||||
|
extF80M_sub$(OBJ) \
|
||||||
|
extF80M_mul$(OBJ) \
|
||||||
|
extF80M_div$(OBJ) \
|
||||||
|
extF80M_rem$(OBJ) \
|
||||||
|
extF80M_sqrt$(OBJ) \
|
||||||
|
extF80M_eq$(OBJ) \
|
||||||
|
extF80M_le$(OBJ) \
|
||||||
|
extF80M_lt$(OBJ) \
|
||||||
|
extF80M_eq_signaling$(OBJ) \
|
||||||
|
extF80M_le_quiet$(OBJ) \
|
||||||
|
extF80M_lt_quiet$(OBJ) \
|
||||||
|
f128_to_ui32$(OBJ) \
|
||||||
|
f128_to_ui64$(OBJ) \
|
||||||
|
f128_to_i32$(OBJ) \
|
||||||
|
f128_to_i64$(OBJ) \
|
||||||
|
f128_to_ui32_r_minMag$(OBJ) \
|
||||||
|
f128_to_ui64_r_minMag$(OBJ) \
|
||||||
|
f128_to_i32_r_minMag$(OBJ) \
|
||||||
|
f128_to_i64_r_minMag$(OBJ) \
|
||||||
|
f128_to_f16$(OBJ) \
|
||||||
|
f128_to_f32$(OBJ) \
|
||||||
|
f128_to_extF80$(OBJ) \
|
||||||
|
f128_to_f64$(OBJ) \
|
||||||
|
f128_roundToInt$(OBJ) \
|
||||||
|
f128_add$(OBJ) \
|
||||||
|
f128_sub$(OBJ) \
|
||||||
|
f128_mul$(OBJ) \
|
||||||
|
f128_mulAdd$(OBJ) \
|
||||||
|
f128_div$(OBJ) \
|
||||||
|
f128_rem$(OBJ) \
|
||||||
|
f128_sqrt$(OBJ) \
|
||||||
|
f128_eq$(OBJ) \
|
||||||
|
f128_le$(OBJ) \
|
||||||
|
f128_lt$(OBJ) \
|
||||||
|
f128_eq_signaling$(OBJ) \
|
||||||
|
f128_le_quiet$(OBJ) \
|
||||||
|
f128_lt_quiet$(OBJ) \
|
||||||
|
f128_isSignalingNaN$(OBJ) \
|
||||||
|
f128M_to_ui32$(OBJ) \
|
||||||
|
f128M_to_ui64$(OBJ) \
|
||||||
|
f128M_to_i32$(OBJ) \
|
||||||
|
f128M_to_i64$(OBJ) \
|
||||||
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
|
f128M_to_f16$(OBJ) \
|
||||||
|
f128M_to_f32$(OBJ) \
|
||||||
|
f128M_to_extF80M$(OBJ) \
|
||||||
|
f128M_to_f64$(OBJ) \
|
||||||
|
f128M_roundToInt$(OBJ) \
|
||||||
|
f128M_add$(OBJ) \
|
||||||
|
f128M_sub$(OBJ) \
|
||||||
|
f128M_mul$(OBJ) \
|
||||||
|
f128M_mulAdd$(OBJ) \
|
||||||
|
f128M_div$(OBJ) \
|
||||||
|
f128M_rem$(OBJ) \
|
||||||
|
f128M_sqrt$(OBJ) \
|
||||||
|
f128M_eq$(OBJ) \
|
||||||
|
f128M_le$(OBJ) \
|
||||||
|
f128M_lt$(OBJ) \
|
||||||
|
f128M_eq_signaling$(OBJ) \
|
||||||
|
f128M_le_quiet$(OBJ) \
|
||||||
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
|
$(OBJS_ALL): \
|
||||||
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
|
$(DELETE) $@
|
||||||
|
$(MAKELIB) $^
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
54
softfloat/build/Linux-RISCV64-GCC/platform.h
Normal file
54
softfloat/build/Linux-RISCV64-GCC/platform.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
/*============================================================================
|
||||||
|
|
||||||
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
|
University of California. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
|
be used to endorse or promote products derived from this software without
|
||||||
|
specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
=============================================================================*/
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
|
#define INLINE inline
|
||||||
|
#else
|
||||||
|
#define INLINE extern inline
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
|
#define SOFTFLOAT_INTRINSIC_INT128 1
|
||||||
|
#include "opts-GCC.h"
|
||||||
|
|
@ -1,390 +1,397 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086-SSE
|
SPECIALIZE_TYPE ?= 8086-SSE
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
|
gcc -c -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
|
||||||
$(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
$(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
|
OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_eq128$(OBJ) \
|
s_eq128$(OBJ) \
|
||||||
s_le128$(OBJ) \
|
s_le128$(OBJ) \
|
||||||
s_lt128$(OBJ) \
|
s_lt128$(OBJ) \
|
||||||
s_shortShiftLeft128$(OBJ) \
|
s_shortShiftLeft128$(OBJ) \
|
||||||
s_shortShiftRight128$(OBJ) \
|
s_shortShiftRight128$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJam64Extra$(OBJ) \
|
s_shortShiftRightJam64Extra$(OBJ) \
|
||||||
s_shortShiftRightJam128$(OBJ) \
|
s_shortShiftRightJam128$(OBJ) \
|
||||||
s_shortShiftRightJam128Extra$(OBJ) \
|
s_shortShiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJam64Extra$(OBJ) \
|
s_shiftRightJam64Extra$(OBJ) \
|
||||||
s_shiftRightJam128$(OBJ) \
|
s_shiftRightJam128$(OBJ) \
|
||||||
s_shiftRightJam128Extra$(OBJ) \
|
s_shiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam256M$(OBJ) \
|
s_shiftRightJam256M$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_add128$(OBJ) \
|
s_add128$(OBJ) \
|
||||||
s_add256M$(OBJ) \
|
s_add256M$(OBJ) \
|
||||||
s_sub128$(OBJ) \
|
s_sub128$(OBJ) \
|
||||||
s_sub256M$(OBJ) \
|
s_sub256M$(OBJ) \
|
||||||
s_mul64ByShifted32To128$(OBJ) \
|
s_mul64ByShifted32To128$(OBJ) \
|
||||||
s_mul64To128$(OBJ) \
|
s_mul64To128$(OBJ) \
|
||||||
s_mul128By32$(OBJ) \
|
s_mul128By32$(OBJ) \
|
||||||
s_mul128To256M$(OBJ) \
|
s_mul128To256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_bf16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToBF16UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_extF80UIToCommonNaN$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
s_commonNaNToExtF80UI$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_propagateNaNExtF80UI$(OBJ) \
|
s_extF80UIToCommonNaN$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
s_commonNaNToExtF80UI$(OBJ) \
|
||||||
s_f128UIToCommonNaN$(OBJ) \
|
s_propagateNaNExtF80UI$(OBJ) \
|
||||||
s_commonNaNToF128UI$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_propagateNaNF128UI$(OBJ) \
|
s_f128UIToCommonNaN$(OBJ) \
|
||||||
|
s_commonNaNToF128UI$(OBJ) \
|
||||||
OBJS_OTHERS = \
|
s_propagateNaNF128UI$(OBJ) \
|
||||||
s_roundToUI32$(OBJ) \
|
|
||||||
s_roundToUI64$(OBJ) \
|
OBJS_OTHERS = \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundToI64$(OBJ) \
|
s_roundToUI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundToI64$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normSubnormalBF16Sig$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_roundPackToBF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normSubnormalExtF80Sig$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_roundPackToExtF80$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_normRoundPackToExtF80$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_addMagsExtF80$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_subMagsExtF80$(OBJ) \
|
s_normSubnormalExtF80Sig$(OBJ) \
|
||||||
s_normSubnormalF128Sig$(OBJ) \
|
s_roundPackToExtF80$(OBJ) \
|
||||||
s_roundPackToF128$(OBJ) \
|
s_normRoundPackToExtF80$(OBJ) \
|
||||||
s_normRoundPackToF128$(OBJ) \
|
s_addMagsExtF80$(OBJ) \
|
||||||
s_addMagsF128$(OBJ) \
|
s_subMagsExtF80$(OBJ) \
|
||||||
s_subMagsF128$(OBJ) \
|
s_normSubnormalF128Sig$(OBJ) \
|
||||||
s_mulAddF128$(OBJ) \
|
s_roundPackToF128$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
s_normRoundPackToF128$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
s_addMagsF128$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
s_subMagsF128$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
s_mulAddF128$(OBJ) \
|
||||||
ui32_to_extF80$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f128$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui32_to_extF80$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui32_to_f128$(OBJ) \
|
||||||
ui64_to_extF80$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f128$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
ui64_to_extF80$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
ui64_to_f128$(OBJ) \
|
||||||
i32_to_extF80$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f128$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i32_to_extF80$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i32_to_f128$(OBJ) \
|
||||||
i64_to_extF80$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f128$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
i64_to_extF80$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
i64_to_f128$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
bf16_isSignalingNaN$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
bf16_to_f32$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_extF80$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_f128$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_to_extF80$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_to_f128$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_extF80$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_f128$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_to_bf16$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_to_extF80$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_to_f128$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_extF80$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_f128$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_to_extF80$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_to_f128$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
extF80_to_ui32$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
extF80_to_ui64$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
extF80_to_i32$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
extF80_to_i64$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
extF80_to_ui32_r_minMag$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
extF80_to_ui64_r_minMag$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
extF80_to_i32_r_minMag$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80_to_i64_r_minMag$(OBJ) \
|
extF80_to_ui32$(OBJ) \
|
||||||
extF80_to_f16$(OBJ) \
|
extF80_to_ui64$(OBJ) \
|
||||||
extF80_to_f32$(OBJ) \
|
extF80_to_i32$(OBJ) \
|
||||||
extF80_to_f64$(OBJ) \
|
extF80_to_i64$(OBJ) \
|
||||||
extF80_to_f128$(OBJ) \
|
extF80_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80_roundToInt$(OBJ) \
|
extF80_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80_add$(OBJ) \
|
extF80_to_i32_r_minMag$(OBJ) \
|
||||||
extF80_sub$(OBJ) \
|
extF80_to_i64_r_minMag$(OBJ) \
|
||||||
extF80_mul$(OBJ) \
|
extF80_to_f16$(OBJ) \
|
||||||
extF80_div$(OBJ) \
|
extF80_to_f32$(OBJ) \
|
||||||
extF80_rem$(OBJ) \
|
extF80_to_f64$(OBJ) \
|
||||||
extF80_sqrt$(OBJ) \
|
extF80_to_f128$(OBJ) \
|
||||||
extF80_eq$(OBJ) \
|
extF80_roundToInt$(OBJ) \
|
||||||
extF80_le$(OBJ) \
|
extF80_add$(OBJ) \
|
||||||
extF80_lt$(OBJ) \
|
extF80_sub$(OBJ) \
|
||||||
extF80_eq_signaling$(OBJ) \
|
extF80_mul$(OBJ) \
|
||||||
extF80_le_quiet$(OBJ) \
|
extF80_div$(OBJ) \
|
||||||
extF80_lt_quiet$(OBJ) \
|
extF80_rem$(OBJ) \
|
||||||
extF80_isSignalingNaN$(OBJ) \
|
extF80_sqrt$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80_eq$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80_le$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80_lt$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80_eq_signaling$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80_le_quiet$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80_lt_quiet$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
f128_to_ui32$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
f128_to_ui64$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
f128_to_i32$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
f128_to_i64$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
f128_to_ui32_r_minMag$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
f128_to_ui64_r_minMag$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
f128_to_i32_r_minMag$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128_to_i64_r_minMag$(OBJ) \
|
f128_to_ui32$(OBJ) \
|
||||||
f128_to_f16$(OBJ) \
|
f128_to_ui64$(OBJ) \
|
||||||
f128_to_f32$(OBJ) \
|
f128_to_i32$(OBJ) \
|
||||||
f128_to_extF80$(OBJ) \
|
f128_to_i64$(OBJ) \
|
||||||
f128_to_f64$(OBJ) \
|
f128_to_ui32_r_minMag$(OBJ) \
|
||||||
f128_roundToInt$(OBJ) \
|
f128_to_ui64_r_minMag$(OBJ) \
|
||||||
f128_add$(OBJ) \
|
f128_to_i32_r_minMag$(OBJ) \
|
||||||
f128_sub$(OBJ) \
|
f128_to_i64_r_minMag$(OBJ) \
|
||||||
f128_mul$(OBJ) \
|
f128_to_f16$(OBJ) \
|
||||||
f128_mulAdd$(OBJ) \
|
f128_to_f32$(OBJ) \
|
||||||
f128_div$(OBJ) \
|
f128_to_extF80$(OBJ) \
|
||||||
f128_rem$(OBJ) \
|
f128_to_f64$(OBJ) \
|
||||||
f128_sqrt$(OBJ) \
|
f128_roundToInt$(OBJ) \
|
||||||
f128_eq$(OBJ) \
|
f128_add$(OBJ) \
|
||||||
f128_le$(OBJ) \
|
f128_sub$(OBJ) \
|
||||||
f128_lt$(OBJ) \
|
f128_mul$(OBJ) \
|
||||||
f128_eq_signaling$(OBJ) \
|
f128_mulAdd$(OBJ) \
|
||||||
f128_le_quiet$(OBJ) \
|
f128_div$(OBJ) \
|
||||||
f128_lt_quiet$(OBJ) \
|
f128_rem$(OBJ) \
|
||||||
f128_isSignalingNaN$(OBJ) \
|
f128_sqrt$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128_eq$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128_le$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128_lt$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128_eq_signaling$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128_le_quiet$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128_lt_quiet$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128_isSignalingNaN$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
|
f128M_sqrt$(OBJ) \
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
f128M_eq$(OBJ) \
|
||||||
|
f128M_le$(OBJ) \
|
||||||
$(OBJS_ALL): \
|
f128M_lt$(OBJ) \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
f128M_eq_signaling$(OBJ) \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
f128M_le_quiet$(OBJ) \
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
f128M_lt_quiet$(OBJ) \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
|
||||||
|
$(OBJS_ALL): \
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
|
||||||
$(DELETE) $@
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(MAKELIB) $^
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
.PHONY: clean
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
clean:
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
|
||||||
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
|
$(DELETE) $@
|
||||||
|
$(MAKELIB) $^
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
//#define INLINE inline
|
//#define INLINE inline
|
||||||
#define INLINE static
|
#define INLINE static
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#define SOFTFLOAT_INTRINSIC_INT128 1
|
#define SOFTFLOAT_INTRINSIC_INT128 1
|
||||||
#endif
|
#endif
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
@ -1,325 +1,325 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086
|
SPECIALIZE_TYPE ?= 8086
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
||||||
$(C_INCLUDES) -O2 -o $@
|
$(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS =
|
OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
@ -1,325 +1,325 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086-SSE
|
SPECIALIZE_TYPE ?= 8086-SSE
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
|
||||||
$(C_INCLUDES) -O2 -o $@
|
$(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = ar crs $@
|
MAKELIB = ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS =
|
OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,52 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
@ -1,390 +1,390 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
# Package, Release 3e, by John R. Hauser.
|
# Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
SOURCE_DIR ?= ../../source
|
SOURCE_DIR ?= ../../source
|
||||||
SPECIALIZE_TYPE ?= 8086-SSE
|
SPECIALIZE_TYPE ?= 8086-SSE
|
||||||
|
|
||||||
SOFTFLOAT_OPTS ?= \
|
SOFTFLOAT_OPTS ?= \
|
||||||
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
-DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
-DSOFTFLOAT_FAST_DIV64TO32
|
-DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
DELETE = rm -f
|
DELETE = rm -f
|
||||||
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
COMPILE_C = \
|
COMPILE_C = \
|
||||||
x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
|
x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
|
||||||
-DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
-DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
||||||
MAKELIB = x86_64-w64-mingw32-ar crs $@
|
MAKELIB = x86_64-w64-mingw32-ar crs $@
|
||||||
|
|
||||||
OBJ = .o
|
OBJ = .o
|
||||||
LIB = .a
|
LIB = .a
|
||||||
|
|
||||||
OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
|
OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_eq128$(OBJ) \
|
s_eq128$(OBJ) \
|
||||||
s_le128$(OBJ) \
|
s_le128$(OBJ) \
|
||||||
s_lt128$(OBJ) \
|
s_lt128$(OBJ) \
|
||||||
s_shortShiftLeft128$(OBJ) \
|
s_shortShiftLeft128$(OBJ) \
|
||||||
s_shortShiftRight128$(OBJ) \
|
s_shortShiftRight128$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJam64Extra$(OBJ) \
|
s_shortShiftRightJam64Extra$(OBJ) \
|
||||||
s_shortShiftRightJam128$(OBJ) \
|
s_shortShiftRightJam128$(OBJ) \
|
||||||
s_shortShiftRightJam128Extra$(OBJ) \
|
s_shortShiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJam64Extra$(OBJ) \
|
s_shiftRightJam64Extra$(OBJ) \
|
||||||
s_shiftRightJam128$(OBJ) \
|
s_shiftRightJam128$(OBJ) \
|
||||||
s_shiftRightJam128Extra$(OBJ) \
|
s_shiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam256M$(OBJ) \
|
s_shiftRightJam256M$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_add128$(OBJ) \
|
s_add128$(OBJ) \
|
||||||
s_add256M$(OBJ) \
|
s_add256M$(OBJ) \
|
||||||
s_sub128$(OBJ) \
|
s_sub128$(OBJ) \
|
||||||
s_sub256M$(OBJ) \
|
s_sub256M$(OBJ) \
|
||||||
s_mul64ByShifted32To128$(OBJ) \
|
s_mul64ByShifted32To128$(OBJ) \
|
||||||
s_mul64To128$(OBJ) \
|
s_mul64To128$(OBJ) \
|
||||||
s_mul128By32$(OBJ) \
|
s_mul128By32$(OBJ) \
|
||||||
s_mul128To256M$(OBJ) \
|
s_mul128To256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80UIToCommonNaN$(OBJ) \
|
s_extF80UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80UI$(OBJ) \
|
s_commonNaNToExtF80UI$(OBJ) \
|
||||||
s_propagateNaNExtF80UI$(OBJ) \
|
s_propagateNaNExtF80UI$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128UIToCommonNaN$(OBJ) \
|
s_f128UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128UI$(OBJ) \
|
s_commonNaNToF128UI$(OBJ) \
|
||||||
s_propagateNaNF128UI$(OBJ) \
|
s_propagateNaNF128UI$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundToUI64$(OBJ) \
|
s_roundToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundToI64$(OBJ) \
|
s_roundToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_normSubnormalExtF80Sig$(OBJ) \
|
s_normSubnormalExtF80Sig$(OBJ) \
|
||||||
s_roundPackToExtF80$(OBJ) \
|
s_roundPackToExtF80$(OBJ) \
|
||||||
s_normRoundPackToExtF80$(OBJ) \
|
s_normRoundPackToExtF80$(OBJ) \
|
||||||
s_addMagsExtF80$(OBJ) \
|
s_addMagsExtF80$(OBJ) \
|
||||||
s_subMagsExtF80$(OBJ) \
|
s_subMagsExtF80$(OBJ) \
|
||||||
s_normSubnormalF128Sig$(OBJ) \
|
s_normSubnormalF128Sig$(OBJ) \
|
||||||
s_roundPackToF128$(OBJ) \
|
s_roundPackToF128$(OBJ) \
|
||||||
s_normRoundPackToF128$(OBJ) \
|
s_normRoundPackToF128$(OBJ) \
|
||||||
s_addMagsF128$(OBJ) \
|
s_addMagsF128$(OBJ) \
|
||||||
s_subMagsF128$(OBJ) \
|
s_subMagsF128$(OBJ) \
|
||||||
s_mulAddF128$(OBJ) \
|
s_mulAddF128$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80$(OBJ) \
|
ui32_to_extF80$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128$(OBJ) \
|
ui32_to_f128$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80$(OBJ) \
|
ui64_to_extF80$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128$(OBJ) \
|
ui64_to_f128$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80$(OBJ) \
|
i32_to_extF80$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128$(OBJ) \
|
i32_to_f128$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80$(OBJ) \
|
i64_to_extF80$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128$(OBJ) \
|
i64_to_f128$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80$(OBJ) \
|
f16_to_extF80$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128$(OBJ) \
|
f16_to_f128$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80$(OBJ) \
|
f32_to_extF80$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128$(OBJ) \
|
f32_to_f128$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80$(OBJ) \
|
f64_to_extF80$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128$(OBJ) \
|
f64_to_f128$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80_to_ui32$(OBJ) \
|
extF80_to_ui32$(OBJ) \
|
||||||
extF80_to_ui64$(OBJ) \
|
extF80_to_ui64$(OBJ) \
|
||||||
extF80_to_i32$(OBJ) \
|
extF80_to_i32$(OBJ) \
|
||||||
extF80_to_i64$(OBJ) \
|
extF80_to_i64$(OBJ) \
|
||||||
extF80_to_ui32_r_minMag$(OBJ) \
|
extF80_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80_to_ui64_r_minMag$(OBJ) \
|
extF80_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80_to_i32_r_minMag$(OBJ) \
|
extF80_to_i32_r_minMag$(OBJ) \
|
||||||
extF80_to_i64_r_minMag$(OBJ) \
|
extF80_to_i64_r_minMag$(OBJ) \
|
||||||
extF80_to_f16$(OBJ) \
|
extF80_to_f16$(OBJ) \
|
||||||
extF80_to_f32$(OBJ) \
|
extF80_to_f32$(OBJ) \
|
||||||
extF80_to_f64$(OBJ) \
|
extF80_to_f64$(OBJ) \
|
||||||
extF80_to_f128$(OBJ) \
|
extF80_to_f128$(OBJ) \
|
||||||
extF80_roundToInt$(OBJ) \
|
extF80_roundToInt$(OBJ) \
|
||||||
extF80_add$(OBJ) \
|
extF80_add$(OBJ) \
|
||||||
extF80_sub$(OBJ) \
|
extF80_sub$(OBJ) \
|
||||||
extF80_mul$(OBJ) \
|
extF80_mul$(OBJ) \
|
||||||
extF80_div$(OBJ) \
|
extF80_div$(OBJ) \
|
||||||
extF80_rem$(OBJ) \
|
extF80_rem$(OBJ) \
|
||||||
extF80_sqrt$(OBJ) \
|
extF80_sqrt$(OBJ) \
|
||||||
extF80_eq$(OBJ) \
|
extF80_eq$(OBJ) \
|
||||||
extF80_le$(OBJ) \
|
extF80_le$(OBJ) \
|
||||||
extF80_lt$(OBJ) \
|
extF80_lt$(OBJ) \
|
||||||
extF80_eq_signaling$(OBJ) \
|
extF80_eq_signaling$(OBJ) \
|
||||||
extF80_le_quiet$(OBJ) \
|
extF80_le_quiet$(OBJ) \
|
||||||
extF80_lt_quiet$(OBJ) \
|
extF80_lt_quiet$(OBJ) \
|
||||||
extF80_isSignalingNaN$(OBJ) \
|
extF80_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128_to_ui32$(OBJ) \
|
f128_to_ui32$(OBJ) \
|
||||||
f128_to_ui64$(OBJ) \
|
f128_to_ui64$(OBJ) \
|
||||||
f128_to_i32$(OBJ) \
|
f128_to_i32$(OBJ) \
|
||||||
f128_to_i64$(OBJ) \
|
f128_to_i64$(OBJ) \
|
||||||
f128_to_ui32_r_minMag$(OBJ) \
|
f128_to_ui32_r_minMag$(OBJ) \
|
||||||
f128_to_ui64_r_minMag$(OBJ) \
|
f128_to_ui64_r_minMag$(OBJ) \
|
||||||
f128_to_i32_r_minMag$(OBJ) \
|
f128_to_i32_r_minMag$(OBJ) \
|
||||||
f128_to_i64_r_minMag$(OBJ) \
|
f128_to_i64_r_minMag$(OBJ) \
|
||||||
f128_to_f16$(OBJ) \
|
f128_to_f16$(OBJ) \
|
||||||
f128_to_f32$(OBJ) \
|
f128_to_f32$(OBJ) \
|
||||||
f128_to_extF80$(OBJ) \
|
f128_to_extF80$(OBJ) \
|
||||||
f128_to_f64$(OBJ) \
|
f128_to_f64$(OBJ) \
|
||||||
f128_roundToInt$(OBJ) \
|
f128_roundToInt$(OBJ) \
|
||||||
f128_add$(OBJ) \
|
f128_add$(OBJ) \
|
||||||
f128_sub$(OBJ) \
|
f128_sub$(OBJ) \
|
||||||
f128_mul$(OBJ) \
|
f128_mul$(OBJ) \
|
||||||
f128_mulAdd$(OBJ) \
|
f128_mulAdd$(OBJ) \
|
||||||
f128_div$(OBJ) \
|
f128_div$(OBJ) \
|
||||||
f128_rem$(OBJ) \
|
f128_rem$(OBJ) \
|
||||||
f128_sqrt$(OBJ) \
|
f128_sqrt$(OBJ) \
|
||||||
f128_eq$(OBJ) \
|
f128_eq$(OBJ) \
|
||||||
f128_le$(OBJ) \
|
f128_le$(OBJ) \
|
||||||
f128_lt$(OBJ) \
|
f128_lt$(OBJ) \
|
||||||
f128_eq_signaling$(OBJ) \
|
f128_eq_signaling$(OBJ) \
|
||||||
f128_le_quiet$(OBJ) \
|
f128_le_quiet$(OBJ) \
|
||||||
f128_lt_quiet$(OBJ) \
|
f128_lt_quiet$(OBJ) \
|
||||||
f128_isSignalingNaN$(OBJ) \
|
f128_isSignalingNaN$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,53 +1,54 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define LITTLEENDIAN 1
|
#define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#ifdef __GNUC_STDC_INLINE__
|
#ifdef __GNUC_STDC_INLINE__
|
||||||
#define INLINE inline
|
#define INLINE inline
|
||||||
#else
|
#else
|
||||||
#define INLINE extern inline
|
#define INLINE extern inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define SOFTFLOAT_BUILTIN_CLZ 1
|
#define SOFTFLOAT_BUILTIN_CLZ 1
|
||||||
#define SOFTFLOAT_INTRINSIC_INT128 1
|
#define SOFTFLOAT_INTRINSIC_INT128 1
|
||||||
#include "opts-GCC.h"
|
#include "opts-GCC.h"
|
||||||
|
|
||||||
|
@ -1,391 +1,396 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile template is part of the SoftFloat IEEE Floating-Point
|
# This Makefile template is part of the SoftFloat IEEE Floating-Point
|
||||||
# Arithmetic Package, Release 3e, by John R. Hauser.
|
# Arithmetic Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
# Edit lines marked with `==>'. See "SoftFloat-source.html".
|
# Edit lines marked with `==>'. See "SoftFloat-source.html".
|
||||||
|
|
||||||
==> SOURCE_DIR ?= ../../source
|
==> SOURCE_DIR ?= ../../source
|
||||||
==> SPECIALIZE_TYPE ?= 8086
|
==> SPECIALIZE_TYPE ?= 8086
|
||||||
|
|
||||||
==> SOFTFLOAT_OPTS ?= \
|
==> SOFTFLOAT_OPTS ?= \
|
||||||
==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
==> -DSOFTFLOAT_FAST_DIV64TO32
|
==> -DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
==> DELETE = rm -f
|
==> DELETE = rm -f
|
||||||
==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
==> COMPILE_C = \
|
==> COMPILE_C = \
|
||||||
==> cc -c -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
==> cc -c -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
||||||
==> MAKELIB = ar crs $@
|
==> MAKELIB = ar crs $@
|
||||||
|
|
||||||
==> OBJ = .o
|
==> OBJ = .o
|
||||||
==> LIB = .a
|
==> LIB = .a
|
||||||
|
|
||||||
==> OTHER_HEADERS =
|
==> OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_eq128$(OBJ) \
|
s_eq128$(OBJ) \
|
||||||
s_le128$(OBJ) \
|
s_le128$(OBJ) \
|
||||||
s_lt128$(OBJ) \
|
s_lt128$(OBJ) \
|
||||||
s_shortShiftLeft128$(OBJ) \
|
s_shortShiftLeft128$(OBJ) \
|
||||||
s_shortShiftRight128$(OBJ) \
|
s_shortShiftRight128$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJam64Extra$(OBJ) \
|
s_shortShiftRightJam64Extra$(OBJ) \
|
||||||
s_shortShiftRightJam128$(OBJ) \
|
s_shortShiftRightJam128$(OBJ) \
|
||||||
s_shortShiftRightJam128Extra$(OBJ) \
|
s_shortShiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJam64Extra$(OBJ) \
|
s_shiftRightJam64Extra$(OBJ) \
|
||||||
s_shiftRightJam128$(OBJ) \
|
s_shiftRightJam128$(OBJ) \
|
||||||
s_shiftRightJam128Extra$(OBJ) \
|
s_shiftRightJam128Extra$(OBJ) \
|
||||||
s_shiftRightJam256M$(OBJ) \
|
s_shiftRightJam256M$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_add128$(OBJ) \
|
s_add128$(OBJ) \
|
||||||
s_add256M$(OBJ) \
|
s_add256M$(OBJ) \
|
||||||
s_sub128$(OBJ) \
|
s_sub128$(OBJ) \
|
||||||
s_sub256M$(OBJ) \
|
s_sub256M$(OBJ) \
|
||||||
s_mul64ByShifted32To128$(OBJ) \
|
s_mul64ByShifted32To128$(OBJ) \
|
||||||
s_mul64To128$(OBJ) \
|
s_mul64To128$(OBJ) \
|
||||||
s_mul128By32$(OBJ) \
|
s_mul128By32$(OBJ) \
|
||||||
s_mul128To256M$(OBJ) \
|
s_mul128To256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80UIToCommonNaN$(OBJ) \
|
s_extF80UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80UI$(OBJ) \
|
s_commonNaNToExtF80UI$(OBJ) \
|
||||||
s_propagateNaNExtF80UI$(OBJ) \
|
s_propagateNaNExtF80UI$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128UIToCommonNaN$(OBJ) \
|
s_f128UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128UI$(OBJ) \
|
s_commonNaNToF128UI$(OBJ) \
|
||||||
s_propagateNaNF128UI$(OBJ) \
|
s_propagateNaNF128UI$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundToUI64$(OBJ) \
|
s_roundToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundToI64$(OBJ) \
|
s_roundToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalBF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToBF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_normSubnormalExtF80Sig$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_roundPackToExtF80$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_normRoundPackToExtF80$(OBJ) \
|
s_normSubnormalExtF80Sig$(OBJ) \
|
||||||
s_addMagsExtF80$(OBJ) \
|
s_roundPackToExtF80$(OBJ) \
|
||||||
s_subMagsExtF80$(OBJ) \
|
s_normRoundPackToExtF80$(OBJ) \
|
||||||
s_normSubnormalF128Sig$(OBJ) \
|
s_addMagsExtF80$(OBJ) \
|
||||||
s_roundPackToF128$(OBJ) \
|
s_subMagsExtF80$(OBJ) \
|
||||||
s_normRoundPackToF128$(OBJ) \
|
s_normSubnormalF128Sig$(OBJ) \
|
||||||
s_addMagsF128$(OBJ) \
|
s_roundPackToF128$(OBJ) \
|
||||||
s_subMagsF128$(OBJ) \
|
s_normRoundPackToF128$(OBJ) \
|
||||||
s_mulAddF128$(OBJ) \
|
s_addMagsF128$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
s_subMagsF128$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
s_mulAddF128$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_extF80$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_f128$(OBJ) \
|
ui32_to_extF80$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui32_to_f128$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_extF80$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_f128$(OBJ) \
|
ui64_to_extF80$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
ui64_to_f128$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_extF80$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_f128$(OBJ) \
|
i32_to_extF80$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i32_to_f128$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_extF80$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_f128$(OBJ) \
|
i64_to_extF80$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
i64_to_f128$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
bf16_isSignalingNaN$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
bf16_to_f32$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_extF80$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f128$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_to_extF80$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_to_f128$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_extF80$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f128$(OBJ) \
|
f32_to_bf16$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_to_extF80$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_to_f128$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_extF80$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_f128$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_to_extF80$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_to_f128$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
extF80_to_ui32$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
extF80_to_ui64$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
extF80_to_i32$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
extF80_to_i64$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
extF80_to_ui32_r_minMag$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80_to_ui64_r_minMag$(OBJ) \
|
extF80_to_ui32$(OBJ) \
|
||||||
extF80_to_i32_r_minMag$(OBJ) \
|
extF80_to_ui64$(OBJ) \
|
||||||
extF80_to_i64_r_minMag$(OBJ) \
|
extF80_to_i32$(OBJ) \
|
||||||
extF80_to_f16$(OBJ) \
|
extF80_to_i64$(OBJ) \
|
||||||
extF80_to_f32$(OBJ) \
|
extF80_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80_to_f64$(OBJ) \
|
extF80_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80_to_f128$(OBJ) \
|
extF80_to_i32_r_minMag$(OBJ) \
|
||||||
extF80_roundToInt$(OBJ) \
|
extF80_to_i64_r_minMag$(OBJ) \
|
||||||
extF80_add$(OBJ) \
|
extF80_to_f16$(OBJ) \
|
||||||
extF80_sub$(OBJ) \
|
extF80_to_f32$(OBJ) \
|
||||||
extF80_mul$(OBJ) \
|
extF80_to_f64$(OBJ) \
|
||||||
extF80_div$(OBJ) \
|
extF80_to_f128$(OBJ) \
|
||||||
extF80_rem$(OBJ) \
|
extF80_roundToInt$(OBJ) \
|
||||||
extF80_sqrt$(OBJ) \
|
extF80_add$(OBJ) \
|
||||||
extF80_eq$(OBJ) \
|
extF80_sub$(OBJ) \
|
||||||
extF80_le$(OBJ) \
|
extF80_mul$(OBJ) \
|
||||||
extF80_lt$(OBJ) \
|
extF80_div$(OBJ) \
|
||||||
extF80_eq_signaling$(OBJ) \
|
extF80_rem$(OBJ) \
|
||||||
extF80_le_quiet$(OBJ) \
|
extF80_sqrt$(OBJ) \
|
||||||
extF80_lt_quiet$(OBJ) \
|
extF80_eq$(OBJ) \
|
||||||
extF80_isSignalingNaN$(OBJ) \
|
extF80_le$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80_lt$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80_eq_signaling$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80_le_quiet$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80_lt_quiet$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
f128_to_ui32$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
f128_to_ui64$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
f128_to_i32$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
f128_to_i64$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
f128_to_ui32_r_minMag$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128_to_ui64_r_minMag$(OBJ) \
|
f128_to_ui32$(OBJ) \
|
||||||
f128_to_i32_r_minMag$(OBJ) \
|
f128_to_ui64$(OBJ) \
|
||||||
f128_to_i64_r_minMag$(OBJ) \
|
f128_to_i32$(OBJ) \
|
||||||
f128_to_f16$(OBJ) \
|
f128_to_i64$(OBJ) \
|
||||||
f128_to_f32$(OBJ) \
|
f128_to_ui32_r_minMag$(OBJ) \
|
||||||
f128_to_extF80$(OBJ) \
|
f128_to_ui64_r_minMag$(OBJ) \
|
||||||
f128_to_f64$(OBJ) \
|
f128_to_i32_r_minMag$(OBJ) \
|
||||||
f128_roundToInt$(OBJ) \
|
f128_to_i64_r_minMag$(OBJ) \
|
||||||
f128_add$(OBJ) \
|
f128_to_f16$(OBJ) \
|
||||||
f128_sub$(OBJ) \
|
f128_to_f32$(OBJ) \
|
||||||
f128_mul$(OBJ) \
|
f128_to_extF80$(OBJ) \
|
||||||
f128_mulAdd$(OBJ) \
|
f128_to_f64$(OBJ) \
|
||||||
f128_div$(OBJ) \
|
f128_roundToInt$(OBJ) \
|
||||||
f128_rem$(OBJ) \
|
f128_add$(OBJ) \
|
||||||
f128_sqrt$(OBJ) \
|
f128_sub$(OBJ) \
|
||||||
f128_eq$(OBJ) \
|
f128_mul$(OBJ) \
|
||||||
f128_le$(OBJ) \
|
f128_mulAdd$(OBJ) \
|
||||||
f128_lt$(OBJ) \
|
f128_div$(OBJ) \
|
||||||
f128_eq_signaling$(OBJ) \
|
f128_rem$(OBJ) \
|
||||||
f128_le_quiet$(OBJ) \
|
f128_sqrt$(OBJ) \
|
||||||
f128_lt_quiet$(OBJ) \
|
f128_eq$(OBJ) \
|
||||||
f128_isSignalingNaN$(OBJ) \
|
f128_le$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128_lt$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128_eq_signaling$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128_le_quiet$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128_isSignalingNaN$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
|
f128M_le$(OBJ) \
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
f128M_lt$(OBJ) \
|
||||||
|
f128M_eq_signaling$(OBJ) \
|
||||||
$(OBJS_ALL): \
|
f128M_le_quiet$(OBJ) \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
f128M_lt_quiet$(OBJ) \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(OBJS_ALL): \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
|
||||||
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
$(DELETE) $@
|
|
||||||
$(MAKELIB) $^
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $@
|
||||||
|
$(MAKELIB) $^
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,49 +1,50 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
// Edit lines marked with `==>'. See "SoftFloat-source.html".
|
// Edit lines marked with `==>'. See "SoftFloat-source.html".
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define LITTLEENDIAN 1
|
==> #define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define INLINE inline
|
==> #define INLINE inline
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define THREAD_LOCAL _Thread_local
|
==> #define THREAD_LOCAL _Thread_local
|
||||||
|
|
||||||
|
@ -1,325 +1,325 @@
|
|||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
#
|
#
|
||||||
# This Makefile template is part of the SoftFloat IEEE Floating-Point
|
# This Makefile template is part of the SoftFloat IEEE Floating-Point
|
||||||
# Arithmetic Package, Release 3e, by John R. Hauser.
|
# Arithmetic Package, Release 3e, by John R. Hauser.
|
||||||
#
|
#
|
||||||
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
|
||||||
# University of California. All rights reserved.
|
# University of California. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions are met:
|
# modification, are permitted provided that the following conditions are met:
|
||||||
#
|
#
|
||||||
# 1. Redistributions of source code must retain the above copyright notice,
|
# 1. Redistributions of source code must retain the above copyright notice,
|
||||||
# this list of conditions, and the following disclaimer.
|
# this list of conditions, and the following disclaimer.
|
||||||
#
|
#
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
# notice, this list of conditions, and the following disclaimer in the
|
# notice, this list of conditions, and the following disclaimer in the
|
||||||
# documentation and/or other materials provided with the distribution.
|
# documentation and/or other materials provided with the distribution.
|
||||||
#
|
#
|
||||||
# 3. Neither the name of the University nor the names of its contributors
|
# 3. Neither the name of the University nor the names of its contributors
|
||||||
# may be used to endorse or promote products derived from this software
|
# may be used to endorse or promote products derived from this software
|
||||||
# without specific prior written permission.
|
# without specific prior written permission.
|
||||||
#
|
#
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|
||||||
# Edit lines marked with `==>'. See "SoftFloat-source.html".
|
# Edit lines marked with `==>'. See "SoftFloat-source.html".
|
||||||
|
|
||||||
==> SOURCE_DIR ?= ../../source
|
==> SOURCE_DIR ?= ../../source
|
||||||
==> SPECIALIZE_TYPE ?= 8086
|
==> SPECIALIZE_TYPE ?= 8086
|
||||||
|
|
||||||
==> SOFTFLOAT_OPTS ?= \
|
==> SOFTFLOAT_OPTS ?= \
|
||||||
==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
|
||||||
==> -DSOFTFLOAT_FAST_DIV64TO32
|
==> -DSOFTFLOAT_FAST_DIV64TO32
|
||||||
|
|
||||||
==> DELETE = rm -f
|
==> DELETE = rm -f
|
||||||
==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
|
||||||
==> COMPILE_C = cc -c $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
==> COMPILE_C = cc -c $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
|
||||||
==> MAKELIB = ar crs $@
|
==> MAKELIB = ar crs $@
|
||||||
|
|
||||||
==> OBJ = .o
|
==> OBJ = .o
|
||||||
==> LIB = .a
|
==> LIB = .a
|
||||||
|
|
||||||
==> OTHER_HEADERS =
|
==> OTHER_HEADERS =
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: softfloat$(LIB)
|
all: softfloat$(LIB)
|
||||||
|
|
||||||
OBJS_PRIMITIVES = \
|
OBJS_PRIMITIVES = \
|
||||||
s_compare96M$(OBJ) \
|
s_compare96M$(OBJ) \
|
||||||
s_compare128M$(OBJ) \
|
s_compare128M$(OBJ) \
|
||||||
s_shortShiftLeft64To96M$(OBJ) \
|
s_shortShiftLeft64To96M$(OBJ) \
|
||||||
s_shortShiftLeftM$(OBJ) \
|
s_shortShiftLeftM$(OBJ) \
|
||||||
s_shiftLeftM$(OBJ) \
|
s_shiftLeftM$(OBJ) \
|
||||||
s_shortShiftRightM$(OBJ) \
|
s_shortShiftRightM$(OBJ) \
|
||||||
s_shortShiftRightJam64$(OBJ) \
|
s_shortShiftRightJam64$(OBJ) \
|
||||||
s_shortShiftRightJamM$(OBJ) \
|
s_shortShiftRightJamM$(OBJ) \
|
||||||
s_shiftRightJam32$(OBJ) \
|
s_shiftRightJam32$(OBJ) \
|
||||||
s_shiftRightJam64$(OBJ) \
|
s_shiftRightJam64$(OBJ) \
|
||||||
s_shiftRightJamM$(OBJ) \
|
s_shiftRightJamM$(OBJ) \
|
||||||
s_shiftRightM$(OBJ) \
|
s_shiftRightM$(OBJ) \
|
||||||
s_countLeadingZeros8$(OBJ) \
|
s_countLeadingZeros8$(OBJ) \
|
||||||
s_countLeadingZeros16$(OBJ) \
|
s_countLeadingZeros16$(OBJ) \
|
||||||
s_countLeadingZeros32$(OBJ) \
|
s_countLeadingZeros32$(OBJ) \
|
||||||
s_countLeadingZeros64$(OBJ) \
|
s_countLeadingZeros64$(OBJ) \
|
||||||
s_addM$(OBJ) \
|
s_addM$(OBJ) \
|
||||||
s_addCarryM$(OBJ) \
|
s_addCarryM$(OBJ) \
|
||||||
s_addComplCarryM$(OBJ) \
|
s_addComplCarryM$(OBJ) \
|
||||||
s_negXM$(OBJ) \
|
s_negXM$(OBJ) \
|
||||||
s_sub1XM$(OBJ) \
|
s_sub1XM$(OBJ) \
|
||||||
s_subM$(OBJ) \
|
s_subM$(OBJ) \
|
||||||
s_mul64To128M$(OBJ) \
|
s_mul64To128M$(OBJ) \
|
||||||
s_mul128MTo256M$(OBJ) \
|
s_mul128MTo256M$(OBJ) \
|
||||||
s_approxRecip_1Ks$(OBJ) \
|
s_approxRecip_1Ks$(OBJ) \
|
||||||
s_approxRecip32_1$(OBJ) \
|
s_approxRecip32_1$(OBJ) \
|
||||||
s_approxRecipSqrt_1Ks$(OBJ) \
|
s_approxRecipSqrt_1Ks$(OBJ) \
|
||||||
s_approxRecipSqrt32_1$(OBJ) \
|
s_approxRecipSqrt32_1$(OBJ) \
|
||||||
s_remStepMBy32$(OBJ) \
|
s_remStepMBy32$(OBJ) \
|
||||||
|
|
||||||
OBJS_SPECIALIZE = \
|
OBJS_SPECIALIZE = \
|
||||||
softfloat_raiseFlags$(OBJ) \
|
softfloat_raiseFlags$(OBJ) \
|
||||||
s_f16UIToCommonNaN$(OBJ) \
|
s_f16UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF16UI$(OBJ) \
|
s_commonNaNToF16UI$(OBJ) \
|
||||||
s_propagateNaNF16UI$(OBJ) \
|
s_propagateNaNF16UI$(OBJ) \
|
||||||
s_f32UIToCommonNaN$(OBJ) \
|
s_f32UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF32UI$(OBJ) \
|
s_commonNaNToF32UI$(OBJ) \
|
||||||
s_propagateNaNF32UI$(OBJ) \
|
s_propagateNaNF32UI$(OBJ) \
|
||||||
s_f64UIToCommonNaN$(OBJ) \
|
s_f64UIToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF64UI$(OBJ) \
|
s_commonNaNToF64UI$(OBJ) \
|
||||||
s_propagateNaNF64UI$(OBJ) \
|
s_propagateNaNF64UI$(OBJ) \
|
||||||
extF80M_isSignalingNaN$(OBJ) \
|
extF80M_isSignalingNaN$(OBJ) \
|
||||||
s_extF80MToCommonNaN$(OBJ) \
|
s_extF80MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToExtF80M$(OBJ) \
|
s_commonNaNToExtF80M$(OBJ) \
|
||||||
s_propagateNaNExtF80M$(OBJ) \
|
s_propagateNaNExtF80M$(OBJ) \
|
||||||
f128M_isSignalingNaN$(OBJ) \
|
f128M_isSignalingNaN$(OBJ) \
|
||||||
s_f128MToCommonNaN$(OBJ) \
|
s_f128MToCommonNaN$(OBJ) \
|
||||||
s_commonNaNToF128M$(OBJ) \
|
s_commonNaNToF128M$(OBJ) \
|
||||||
s_propagateNaNF128M$(OBJ) \
|
s_propagateNaNF128M$(OBJ) \
|
||||||
|
|
||||||
OBJS_OTHERS = \
|
OBJS_OTHERS = \
|
||||||
s_roundToUI32$(OBJ) \
|
s_roundToUI32$(OBJ) \
|
||||||
s_roundMToUI64$(OBJ) \
|
s_roundMToUI64$(OBJ) \
|
||||||
s_roundToI32$(OBJ) \
|
s_roundToI32$(OBJ) \
|
||||||
s_roundMToI64$(OBJ) \
|
s_roundMToI64$(OBJ) \
|
||||||
s_normSubnormalF16Sig$(OBJ) \
|
s_normSubnormalF16Sig$(OBJ) \
|
||||||
s_roundPackToF16$(OBJ) \
|
s_roundPackToF16$(OBJ) \
|
||||||
s_normRoundPackToF16$(OBJ) \
|
s_normRoundPackToF16$(OBJ) \
|
||||||
s_addMagsF16$(OBJ) \
|
s_addMagsF16$(OBJ) \
|
||||||
s_subMagsF16$(OBJ) \
|
s_subMagsF16$(OBJ) \
|
||||||
s_mulAddF16$(OBJ) \
|
s_mulAddF16$(OBJ) \
|
||||||
s_normSubnormalF32Sig$(OBJ) \
|
s_normSubnormalF32Sig$(OBJ) \
|
||||||
s_roundPackToF32$(OBJ) \
|
s_roundPackToF32$(OBJ) \
|
||||||
s_normRoundPackToF32$(OBJ) \
|
s_normRoundPackToF32$(OBJ) \
|
||||||
s_addMagsF32$(OBJ) \
|
s_addMagsF32$(OBJ) \
|
||||||
s_subMagsF32$(OBJ) \
|
s_subMagsF32$(OBJ) \
|
||||||
s_mulAddF32$(OBJ) \
|
s_mulAddF32$(OBJ) \
|
||||||
s_normSubnormalF64Sig$(OBJ) \
|
s_normSubnormalF64Sig$(OBJ) \
|
||||||
s_roundPackToF64$(OBJ) \
|
s_roundPackToF64$(OBJ) \
|
||||||
s_normRoundPackToF64$(OBJ) \
|
s_normRoundPackToF64$(OBJ) \
|
||||||
s_addMagsF64$(OBJ) \
|
s_addMagsF64$(OBJ) \
|
||||||
s_subMagsF64$(OBJ) \
|
s_subMagsF64$(OBJ) \
|
||||||
s_mulAddF64$(OBJ) \
|
s_mulAddF64$(OBJ) \
|
||||||
s_tryPropagateNaNExtF80M$(OBJ) \
|
s_tryPropagateNaNExtF80M$(OBJ) \
|
||||||
s_invalidExtF80M$(OBJ) \
|
s_invalidExtF80M$(OBJ) \
|
||||||
s_normExtF80SigM$(OBJ) \
|
s_normExtF80SigM$(OBJ) \
|
||||||
s_roundPackMToExtF80M$(OBJ) \
|
s_roundPackMToExtF80M$(OBJ) \
|
||||||
s_normRoundPackMToExtF80M$(OBJ) \
|
s_normRoundPackMToExtF80M$(OBJ) \
|
||||||
s_addExtF80M$(OBJ) \
|
s_addExtF80M$(OBJ) \
|
||||||
s_compareNonnormExtF80M$(OBJ) \
|
s_compareNonnormExtF80M$(OBJ) \
|
||||||
s_isNaNF128M$(OBJ) \
|
s_isNaNF128M$(OBJ) \
|
||||||
s_tryPropagateNaNF128M$(OBJ) \
|
s_tryPropagateNaNF128M$(OBJ) \
|
||||||
s_invalidF128M$(OBJ) \
|
s_invalidF128M$(OBJ) \
|
||||||
s_shiftNormSigF128M$(OBJ) \
|
s_shiftNormSigF128M$(OBJ) \
|
||||||
s_roundPackMToF128M$(OBJ) \
|
s_roundPackMToF128M$(OBJ) \
|
||||||
s_normRoundPackMToF128M$(OBJ) \
|
s_normRoundPackMToF128M$(OBJ) \
|
||||||
s_addF128M$(OBJ) \
|
s_addF128M$(OBJ) \
|
||||||
s_mulAddF128M$(OBJ) \
|
s_mulAddF128M$(OBJ) \
|
||||||
softfloat_state$(OBJ) \
|
softfloat_state$(OBJ) \
|
||||||
ui32_to_f16$(OBJ) \
|
ui32_to_f16$(OBJ) \
|
||||||
ui32_to_f32$(OBJ) \
|
ui32_to_f32$(OBJ) \
|
||||||
ui32_to_f64$(OBJ) \
|
ui32_to_f64$(OBJ) \
|
||||||
ui32_to_extF80M$(OBJ) \
|
ui32_to_extF80M$(OBJ) \
|
||||||
ui32_to_f128M$(OBJ) \
|
ui32_to_f128M$(OBJ) \
|
||||||
ui64_to_f16$(OBJ) \
|
ui64_to_f16$(OBJ) \
|
||||||
ui64_to_f32$(OBJ) \
|
ui64_to_f32$(OBJ) \
|
||||||
ui64_to_f64$(OBJ) \
|
ui64_to_f64$(OBJ) \
|
||||||
ui64_to_extF80M$(OBJ) \
|
ui64_to_extF80M$(OBJ) \
|
||||||
ui64_to_f128M$(OBJ) \
|
ui64_to_f128M$(OBJ) \
|
||||||
i32_to_f16$(OBJ) \
|
i32_to_f16$(OBJ) \
|
||||||
i32_to_f32$(OBJ) \
|
i32_to_f32$(OBJ) \
|
||||||
i32_to_f64$(OBJ) \
|
i32_to_f64$(OBJ) \
|
||||||
i32_to_extF80M$(OBJ) \
|
i32_to_extF80M$(OBJ) \
|
||||||
i32_to_f128M$(OBJ) \
|
i32_to_f128M$(OBJ) \
|
||||||
i64_to_f16$(OBJ) \
|
i64_to_f16$(OBJ) \
|
||||||
i64_to_f32$(OBJ) \
|
i64_to_f32$(OBJ) \
|
||||||
i64_to_f64$(OBJ) \
|
i64_to_f64$(OBJ) \
|
||||||
i64_to_extF80M$(OBJ) \
|
i64_to_extF80M$(OBJ) \
|
||||||
i64_to_f128M$(OBJ) \
|
i64_to_f128M$(OBJ) \
|
||||||
f16_to_ui32$(OBJ) \
|
f16_to_ui32$(OBJ) \
|
||||||
f16_to_ui64$(OBJ) \
|
f16_to_ui64$(OBJ) \
|
||||||
f16_to_i32$(OBJ) \
|
f16_to_i32$(OBJ) \
|
||||||
f16_to_i64$(OBJ) \
|
f16_to_i64$(OBJ) \
|
||||||
f16_to_ui32_r_minMag$(OBJ) \
|
f16_to_ui32_r_minMag$(OBJ) \
|
||||||
f16_to_ui64_r_minMag$(OBJ) \
|
f16_to_ui64_r_minMag$(OBJ) \
|
||||||
f16_to_i32_r_minMag$(OBJ) \
|
f16_to_i32_r_minMag$(OBJ) \
|
||||||
f16_to_i64_r_minMag$(OBJ) \
|
f16_to_i64_r_minMag$(OBJ) \
|
||||||
f16_to_f32$(OBJ) \
|
f16_to_f32$(OBJ) \
|
||||||
f16_to_f64$(OBJ) \
|
f16_to_f64$(OBJ) \
|
||||||
f16_to_extF80M$(OBJ) \
|
f16_to_extF80M$(OBJ) \
|
||||||
f16_to_f128M$(OBJ) \
|
f16_to_f128M$(OBJ) \
|
||||||
f16_roundToInt$(OBJ) \
|
f16_roundToInt$(OBJ) \
|
||||||
f16_add$(OBJ) \
|
f16_add$(OBJ) \
|
||||||
f16_sub$(OBJ) \
|
f16_sub$(OBJ) \
|
||||||
f16_mul$(OBJ) \
|
f16_mul$(OBJ) \
|
||||||
f16_mulAdd$(OBJ) \
|
f16_mulAdd$(OBJ) \
|
||||||
f16_div$(OBJ) \
|
f16_div$(OBJ) \
|
||||||
f16_rem$(OBJ) \
|
f16_rem$(OBJ) \
|
||||||
f16_sqrt$(OBJ) \
|
f16_sqrt$(OBJ) \
|
||||||
f16_eq$(OBJ) \
|
f16_eq$(OBJ) \
|
||||||
f16_le$(OBJ) \
|
f16_le$(OBJ) \
|
||||||
f16_lt$(OBJ) \
|
f16_lt$(OBJ) \
|
||||||
f16_eq_signaling$(OBJ) \
|
f16_eq_signaling$(OBJ) \
|
||||||
f16_le_quiet$(OBJ) \
|
f16_le_quiet$(OBJ) \
|
||||||
f16_lt_quiet$(OBJ) \
|
f16_lt_quiet$(OBJ) \
|
||||||
f16_isSignalingNaN$(OBJ) \
|
f16_isSignalingNaN$(OBJ) \
|
||||||
f32_to_ui32$(OBJ) \
|
f32_to_ui32$(OBJ) \
|
||||||
f32_to_ui64$(OBJ) \
|
f32_to_ui64$(OBJ) \
|
||||||
f32_to_i32$(OBJ) \
|
f32_to_i32$(OBJ) \
|
||||||
f32_to_i64$(OBJ) \
|
f32_to_i64$(OBJ) \
|
||||||
f32_to_ui32_r_minMag$(OBJ) \
|
f32_to_ui32_r_minMag$(OBJ) \
|
||||||
f32_to_ui64_r_minMag$(OBJ) \
|
f32_to_ui64_r_minMag$(OBJ) \
|
||||||
f32_to_i32_r_minMag$(OBJ) \
|
f32_to_i32_r_minMag$(OBJ) \
|
||||||
f32_to_i64_r_minMag$(OBJ) \
|
f32_to_i64_r_minMag$(OBJ) \
|
||||||
f32_to_f16$(OBJ) \
|
f32_to_f16$(OBJ) \
|
||||||
f32_to_f64$(OBJ) \
|
f32_to_f64$(OBJ) \
|
||||||
f32_to_extF80M$(OBJ) \
|
f32_to_extF80M$(OBJ) \
|
||||||
f32_to_f128M$(OBJ) \
|
f32_to_f128M$(OBJ) \
|
||||||
f32_roundToInt$(OBJ) \
|
f32_roundToInt$(OBJ) \
|
||||||
f32_add$(OBJ) \
|
f32_add$(OBJ) \
|
||||||
f32_sub$(OBJ) \
|
f32_sub$(OBJ) \
|
||||||
f32_mul$(OBJ) \
|
f32_mul$(OBJ) \
|
||||||
f32_mulAdd$(OBJ) \
|
f32_mulAdd$(OBJ) \
|
||||||
f32_div$(OBJ) \
|
f32_div$(OBJ) \
|
||||||
f32_rem$(OBJ) \
|
f32_rem$(OBJ) \
|
||||||
f32_sqrt$(OBJ) \
|
f32_sqrt$(OBJ) \
|
||||||
f32_eq$(OBJ) \
|
f32_eq$(OBJ) \
|
||||||
f32_le$(OBJ) \
|
f32_le$(OBJ) \
|
||||||
f32_lt$(OBJ) \
|
f32_lt$(OBJ) \
|
||||||
f32_eq_signaling$(OBJ) \
|
f32_eq_signaling$(OBJ) \
|
||||||
f32_le_quiet$(OBJ) \
|
f32_le_quiet$(OBJ) \
|
||||||
f32_lt_quiet$(OBJ) \
|
f32_lt_quiet$(OBJ) \
|
||||||
f32_isSignalingNaN$(OBJ) \
|
f32_isSignalingNaN$(OBJ) \
|
||||||
f64_to_ui32$(OBJ) \
|
f64_to_ui32$(OBJ) \
|
||||||
f64_to_ui64$(OBJ) \
|
f64_to_ui64$(OBJ) \
|
||||||
f64_to_i32$(OBJ) \
|
f64_to_i32$(OBJ) \
|
||||||
f64_to_i64$(OBJ) \
|
f64_to_i64$(OBJ) \
|
||||||
f64_to_ui32_r_minMag$(OBJ) \
|
f64_to_ui32_r_minMag$(OBJ) \
|
||||||
f64_to_ui64_r_minMag$(OBJ) \
|
f64_to_ui64_r_minMag$(OBJ) \
|
||||||
f64_to_i32_r_minMag$(OBJ) \
|
f64_to_i32_r_minMag$(OBJ) \
|
||||||
f64_to_i64_r_minMag$(OBJ) \
|
f64_to_i64_r_minMag$(OBJ) \
|
||||||
f64_to_f16$(OBJ) \
|
f64_to_f16$(OBJ) \
|
||||||
f64_to_f32$(OBJ) \
|
f64_to_f32$(OBJ) \
|
||||||
f64_to_extF80M$(OBJ) \
|
f64_to_extF80M$(OBJ) \
|
||||||
f64_to_f128M$(OBJ) \
|
f64_to_f128M$(OBJ) \
|
||||||
f64_roundToInt$(OBJ) \
|
f64_roundToInt$(OBJ) \
|
||||||
f64_add$(OBJ) \
|
f64_add$(OBJ) \
|
||||||
f64_sub$(OBJ) \
|
f64_sub$(OBJ) \
|
||||||
f64_mul$(OBJ) \
|
f64_mul$(OBJ) \
|
||||||
f64_mulAdd$(OBJ) \
|
f64_mulAdd$(OBJ) \
|
||||||
f64_div$(OBJ) \
|
f64_div$(OBJ) \
|
||||||
f64_rem$(OBJ) \
|
f64_rem$(OBJ) \
|
||||||
f64_sqrt$(OBJ) \
|
f64_sqrt$(OBJ) \
|
||||||
f64_eq$(OBJ) \
|
f64_eq$(OBJ) \
|
||||||
f64_le$(OBJ) \
|
f64_le$(OBJ) \
|
||||||
f64_lt$(OBJ) \
|
f64_lt$(OBJ) \
|
||||||
f64_eq_signaling$(OBJ) \
|
f64_eq_signaling$(OBJ) \
|
||||||
f64_le_quiet$(OBJ) \
|
f64_le_quiet$(OBJ) \
|
||||||
f64_lt_quiet$(OBJ) \
|
f64_lt_quiet$(OBJ) \
|
||||||
f64_isSignalingNaN$(OBJ) \
|
f64_isSignalingNaN$(OBJ) \
|
||||||
extF80M_to_ui32$(OBJ) \
|
extF80M_to_ui32$(OBJ) \
|
||||||
extF80M_to_ui64$(OBJ) \
|
extF80M_to_ui64$(OBJ) \
|
||||||
extF80M_to_i32$(OBJ) \
|
extF80M_to_i32$(OBJ) \
|
||||||
extF80M_to_i64$(OBJ) \
|
extF80M_to_i64$(OBJ) \
|
||||||
extF80M_to_ui32_r_minMag$(OBJ) \
|
extF80M_to_ui32_r_minMag$(OBJ) \
|
||||||
extF80M_to_ui64_r_minMag$(OBJ) \
|
extF80M_to_ui64_r_minMag$(OBJ) \
|
||||||
extF80M_to_i32_r_minMag$(OBJ) \
|
extF80M_to_i32_r_minMag$(OBJ) \
|
||||||
extF80M_to_i64_r_minMag$(OBJ) \
|
extF80M_to_i64_r_minMag$(OBJ) \
|
||||||
extF80M_to_f16$(OBJ) \
|
extF80M_to_f16$(OBJ) \
|
||||||
extF80M_to_f32$(OBJ) \
|
extF80M_to_f32$(OBJ) \
|
||||||
extF80M_to_f64$(OBJ) \
|
extF80M_to_f64$(OBJ) \
|
||||||
extF80M_to_f128M$(OBJ) \
|
extF80M_to_f128M$(OBJ) \
|
||||||
extF80M_roundToInt$(OBJ) \
|
extF80M_roundToInt$(OBJ) \
|
||||||
extF80M_add$(OBJ) \
|
extF80M_add$(OBJ) \
|
||||||
extF80M_sub$(OBJ) \
|
extF80M_sub$(OBJ) \
|
||||||
extF80M_mul$(OBJ) \
|
extF80M_mul$(OBJ) \
|
||||||
extF80M_div$(OBJ) \
|
extF80M_div$(OBJ) \
|
||||||
extF80M_rem$(OBJ) \
|
extF80M_rem$(OBJ) \
|
||||||
extF80M_sqrt$(OBJ) \
|
extF80M_sqrt$(OBJ) \
|
||||||
extF80M_eq$(OBJ) \
|
extF80M_eq$(OBJ) \
|
||||||
extF80M_le$(OBJ) \
|
extF80M_le$(OBJ) \
|
||||||
extF80M_lt$(OBJ) \
|
extF80M_lt$(OBJ) \
|
||||||
extF80M_eq_signaling$(OBJ) \
|
extF80M_eq_signaling$(OBJ) \
|
||||||
extF80M_le_quiet$(OBJ) \
|
extF80M_le_quiet$(OBJ) \
|
||||||
extF80M_lt_quiet$(OBJ) \
|
extF80M_lt_quiet$(OBJ) \
|
||||||
f128M_to_ui32$(OBJ) \
|
f128M_to_ui32$(OBJ) \
|
||||||
f128M_to_ui64$(OBJ) \
|
f128M_to_ui64$(OBJ) \
|
||||||
f128M_to_i32$(OBJ) \
|
f128M_to_i32$(OBJ) \
|
||||||
f128M_to_i64$(OBJ) \
|
f128M_to_i64$(OBJ) \
|
||||||
f128M_to_ui32_r_minMag$(OBJ) \
|
f128M_to_ui32_r_minMag$(OBJ) \
|
||||||
f128M_to_ui64_r_minMag$(OBJ) \
|
f128M_to_ui64_r_minMag$(OBJ) \
|
||||||
f128M_to_i32_r_minMag$(OBJ) \
|
f128M_to_i32_r_minMag$(OBJ) \
|
||||||
f128M_to_i64_r_minMag$(OBJ) \
|
f128M_to_i64_r_minMag$(OBJ) \
|
||||||
f128M_to_f16$(OBJ) \
|
f128M_to_f16$(OBJ) \
|
||||||
f128M_to_f32$(OBJ) \
|
f128M_to_f32$(OBJ) \
|
||||||
f128M_to_f64$(OBJ) \
|
f128M_to_f64$(OBJ) \
|
||||||
f128M_to_extF80M$(OBJ) \
|
f128M_to_extF80M$(OBJ) \
|
||||||
f128M_roundToInt$(OBJ) \
|
f128M_roundToInt$(OBJ) \
|
||||||
f128M_add$(OBJ) \
|
f128M_add$(OBJ) \
|
||||||
f128M_sub$(OBJ) \
|
f128M_sub$(OBJ) \
|
||||||
f128M_mul$(OBJ) \
|
f128M_mul$(OBJ) \
|
||||||
f128M_mulAdd$(OBJ) \
|
f128M_mulAdd$(OBJ) \
|
||||||
f128M_div$(OBJ) \
|
f128M_div$(OBJ) \
|
||||||
f128M_rem$(OBJ) \
|
f128M_rem$(OBJ) \
|
||||||
f128M_sqrt$(OBJ) \
|
f128M_sqrt$(OBJ) \
|
||||||
f128M_eq$(OBJ) \
|
f128M_eq$(OBJ) \
|
||||||
f128M_le$(OBJ) \
|
f128M_le$(OBJ) \
|
||||||
f128M_lt$(OBJ) \
|
f128M_lt$(OBJ) \
|
||||||
f128M_eq_signaling$(OBJ) \
|
f128M_eq_signaling$(OBJ) \
|
||||||
f128M_le_quiet$(OBJ) \
|
f128M_le_quiet$(OBJ) \
|
||||||
f128M_lt_quiet$(OBJ) \
|
f128M_lt_quiet$(OBJ) \
|
||||||
|
|
||||||
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
|
||||||
|
|
||||||
$(OBJS_ALL): \
|
$(OBJS_ALL): \
|
||||||
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
$(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
|
||||||
$(SOURCE_DIR)/include/primitives.h
|
$(SOURCE_DIR)/include/primitives.h
|
||||||
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
|
||||||
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
$(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
|
||||||
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
$(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
|
||||||
$(SOURCE_DIR)/include/softfloat.h
|
$(SOURCE_DIR)/include/softfloat.h
|
||||||
|
|
||||||
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$*.c
|
||||||
|
|
||||||
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
|
||||||
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
$(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
|
||||||
|
|
||||||
softfloat$(LIB): $(OBJS_ALL)
|
softfloat$(LIB): $(OBJS_ALL)
|
||||||
$(DELETE) $@
|
$(DELETE) $@
|
||||||
$(MAKELIB) $^
|
$(MAKELIB) $^
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
$(DELETE) $(OBJS_ALL) softfloat$(LIB)
|
||||||
|
|
||||||
|
@ -1,49 +1,50 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
// Edit lines marked with `==>'. See "SoftFloat-source.html".
|
// Edit lines marked with `==>'. See "SoftFloat-source.html".
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define LITTLEENDIAN 1
|
==> #define LITTLEENDIAN 1
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define INLINE inline
|
==> #define INLINE inline
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
== > #define THREAD_LOCAL _Thread_local
|
==> #define THREAD_LOCAL _Thread_local
|
||||||
|
|
||||||
|
@ -1,258 +1,258 @@
|
|||||||
|
|
||||||
<HTML>
|
<HTML>
|
||||||
|
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>Berkeley SoftFloat History</TITLE>
|
<TITLE>Berkeley SoftFloat History</TITLE>
|
||||||
</HEAD>
|
</HEAD>
|
||||||
|
|
||||||
<BODY>
|
<BODY>
|
||||||
|
|
||||||
<H1>History of Berkeley SoftFloat, to Release 3e</H1>
|
<H1>History of Berkeley SoftFloat, to Release 3e</H1>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
John R. Hauser<BR>
|
John R. Hauser<BR>
|
||||||
2018 January 20<BR>
|
2018 January 20<BR>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3e (2018 January)</H3>
|
<H3>Release 3e (2018 January)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Changed the default numeric code for optional rounding mode <CODE>odd</CODE>
|
Changed the default numeric code for optional rounding mode <CODE>odd</CODE>
|
||||||
(round to odd, also known as <EM>jamming</EM>) from 5 to 6.
|
(round to odd, also known as <EM>jamming</EM>) from 5 to 6.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Modified the behavior of rounding mode <CODE>odd</CODE> when rounding to an
|
Modified the behavior of rounding mode <CODE>odd</CODE> when rounding to an
|
||||||
integer value (either conversion to an integer format or a
|
integer value (either conversion to an integer format or a
|
||||||
‘<CODE>roundToInt</CODE>’ function).
|
‘<CODE>roundToInt</CODE>’ function).
|
||||||
Previously, for those cases only, rounding mode <CODE>odd</CODE> acted the same
|
Previously, for those cases only, rounding mode <CODE>odd</CODE> acted the same
|
||||||
as rounding to minimum magnitude.
|
as rounding to minimum magnitude.
|
||||||
Now all operations are rounded consistently.
|
Now all operations are rounded consistently.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed some errors in the specialization code modeling Intel x86 floating-point,
|
Fixed some errors in the specialization code modeling Intel x86 floating-point,
|
||||||
specifically the integers returned on invalid operations and the propagation of
|
specifically the integers returned on invalid operations and the propagation of
|
||||||
NaN payloads in a few rare cases.
|
NaN payloads in a few rare cases.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added specialization code modeling ARM floating-point, conforming to VFPv2 or
|
Added specialization code modeling ARM floating-point, conforming to VFPv2 or
|
||||||
later.
|
later.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added an example target for ARM processors.
|
Added an example target for ARM processors.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed a minor bug whereby function <CODE>f16_to_ui64</CODE> might return a
|
Fixed a minor bug whereby function <CODE>f16_to_ui64</CODE> might return a
|
||||||
different integer than expected in the case that the floating-point operand is
|
different integer than expected in the case that the floating-point operand is
|
||||||
negative.
|
negative.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added example target-specific optimization for GCC, employing GCC instrinsics
|
Added example target-specific optimization for GCC, employing GCC instrinsics
|
||||||
and support for <NOBR>128-bit</NOBR> integer arithmetic.
|
and support for <NOBR>128-bit</NOBR> integer arithmetic.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Made other minor improvements.
|
Made other minor improvements.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3d (2017 August)</H3>
|
<H3>Release 3d (2017 August)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed bugs in the square root functions for <NOBR>64-bit</NOBR>
|
Fixed bugs in the square root functions for <NOBR>64-bit</NOBR>
|
||||||
double-precision, <NOBR>80-bit</NOBR> double-extended-precision, and
|
double-precision, <NOBR>80-bit</NOBR> double-extended-precision, and
|
||||||
<NOBR>128-bit</NOBR> quadruple-precision.
|
<NOBR>128-bit</NOBR> quadruple-precision.
|
||||||
For <NOBR>64-bit</NOBR> double-precision (<CODE>f64_sqrt</CODE>), the result
|
For <NOBR>64-bit</NOBR> double-precision (<CODE>f64_sqrt</CODE>), the result
|
||||||
could sometimes be off by <NOBR>1 unit</NOBR> in the last place
|
could sometimes be off by <NOBR>1 unit</NOBR> in the last place
|
||||||
(<NOBR>1 ulp</NOBR>) from what it should be.
|
(<NOBR>1 ulp</NOBR>) from what it should be.
|
||||||
For the larger formats, the square root could be wrong in a large portion of
|
For the larger formats, the square root could be wrong in a large portion of
|
||||||
the less-significant bits.
|
the less-significant bits.
|
||||||
(A bug in <CODE>f128_sqrt</CODE> was first reported by Alexei Sibidanov.)
|
(A bug in <CODE>f128_sqrt</CODE> was first reported by Alexei Sibidanov.)
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3c (2017 February)</H3>
|
<H3>Release 3c (2017 February)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added optional rounding mode <CODE>odd</CODE> (round to odd, also known as
|
Added optional rounding mode <CODE>odd</CODE> (round to odd, also known as
|
||||||
<EM>jamming</EM>).
|
<EM>jamming</EM>).
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Corrected the documentation concerning non-canonical representations in
|
Corrected the documentation concerning non-canonical representations in
|
||||||
<NOBR>80-bit</NOBR> double-extended-precision.
|
<NOBR>80-bit</NOBR> double-extended-precision.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3b (2016 July)</H3>
|
<H3>Release 3b (2016 July)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Implemented the common <NOBR>16-bit</NOBR> “half-precision”
|
Implemented the common <NOBR>16-bit</NOBR> “half-precision”
|
||||||
floating-point format (<CODE>float16_t</CODE>).
|
floating-point format (<CODE>float16_t</CODE>).
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Made the integer values returned on invalid conversions to integer formats
|
Made the integer values returned on invalid conversions to integer formats
|
||||||
be determined by the port-specific specialization instead of being the same for
|
be determined by the port-specific specialization instead of being the same for
|
||||||
all ports.
|
all ports.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added preprocessor macro <CODE>THREAD_LOCAL</CODE> to allow the floating-point
|
Added preprocessor macro <CODE>THREAD_LOCAL</CODE> to allow the floating-point
|
||||||
state (modes and exception flags) to be made per-thread.
|
state (modes and exception flags) to be made per-thread.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Modified the provided Makefiles to allow some options to be overridden from the
|
Modified the provided Makefiles to allow some options to be overridden from the
|
||||||
<CODE>make</CODE> command.
|
<CODE>make</CODE> command.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Made other minor improvements.
|
Made other minor improvements.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3a (2015 October)</H3>
|
<H3>Release 3a (2015 October)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Replaced the license text supplied by the University of California, Berkeley.
|
Replaced the license text supplied by the University of California, Berkeley.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 3 (2015 February)</H3>
|
<H3>Release 3 (2015 February)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Complete rewrite, funded by the University of California, Berkeley, and
|
Complete rewrite, funded by the University of California, Berkeley, and
|
||||||
consequently having a different use license than earlier releases.
|
consequently having a different use license than earlier releases.
|
||||||
Major changes included renaming most types and functions, upgrading some
|
Major changes included renaming most types and functions, upgrading some
|
||||||
algorithms, restructuring the source files, and making SoftFloat into a true
|
algorithms, restructuring the source files, and making SoftFloat into a true
|
||||||
library.
|
library.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added functions to convert between floating-point and unsigned integers, both
|
Added functions to convert between floating-point and unsigned integers, both
|
||||||
<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and
|
<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and
|
||||||
<CODE>uint64_t</CODE>).
|
<CODE>uint64_t</CODE>).
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added functions for fused multiply-add, for all supported floating-point
|
Added functions for fused multiply-add, for all supported floating-point
|
||||||
formats except <NOBR>80-bit</NOBR> double-extended-precision.
|
formats except <NOBR>80-bit</NOBR> double-extended-precision.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to
|
Added support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to
|
||||||
nearest, with ties to maximum magnitude, away from zero).
|
nearest, with ties to maximum magnitude, away from zero).
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Dropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley
|
Dropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley
|
||||||
TestFloat package).
|
TestFloat package).
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 2c (2015 January)</H3>
|
<H3>Release 2c (2015 January)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.
|
Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Further improved the documentation and the wording for the legal restrictions
|
Further improved the documentation and the wording for the legal restrictions
|
||||||
on using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to
|
on using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to
|
||||||
<NOBR>Release 3</NOBR> or later).
|
<NOBR>Release 3</NOBR> or later).
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 2b (2002 May)</H3>
|
<H3>Release 2b (2002 May)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Made minor updates to the documentation, including improved wording for the
|
Made minor updates to the documentation, including improved wording for the
|
||||||
legal restrictions on using SoftFloat.
|
legal restrictions on using SoftFloat.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 2a (1998 December)</H3>
|
<H3>Release 2a (1998 December)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added functions to convert between <NOBR>64-bit</NOBR> integers
|
Added functions to convert between <NOBR>64-bit</NOBR> integers
|
||||||
(<CODE>int64</CODE>) and all supported floating-point formats.
|
(<CODE>int64</CODE>) and all supported floating-point formats.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except
|
Fixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except
|
||||||
<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by
|
<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by
|
||||||
<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should
|
<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should
|
||||||
be.
|
be.
|
||||||
(Bug discovered by Paul Donahue.)
|
(Bug discovered by Paul Donahue.)
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Improved the Makefiles.
|
Improved the Makefiles.
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 2 (1997 June)</H3>
|
<H3>Release 2 (1997 June)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Created the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the
|
Created the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the
|
||||||
<CODE>floatx80</CODE> and <CODE>float128</CODE> formats.
|
<CODE>floatx80</CODE> and <CODE>float128</CODE> formats.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Changed the source directory structure, splitting the sources into a
|
Changed the source directory structure, splitting the sources into a
|
||||||
<CODE>bits32</CODE> and a <CODE>bits64</CODE> version.
|
<CODE>bits32</CODE> and a <CODE>bits64</CODE> version.
|
||||||
Renamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion
|
Renamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion
|
||||||
with environment variables.
|
with environment variables.
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Fixed a small error that caused <CODE>float64_round_to_int</CODE> often to
|
Fixed a small error that caused <CODE>float64_round_to_int</CODE> often to
|
||||||
round the wrong way in nearest/even mode when the operand was between
|
round the wrong way in nearest/even mode when the operand was between
|
||||||
2<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers.
|
2<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 1a (1996 July)</H3>
|
<H3>Release 1a (1996 July)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Corrected a mistake that caused borderline underflow cases not to raise the
|
Corrected a mistake that caused borderline underflow cases not to raise the
|
||||||
underflow flag when they should have.
|
underflow flag when they should have.
|
||||||
(Problem reported by Doug Priest.)
|
(Problem reported by Doug Priest.)
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Added the <CODE>float_detect_tininess</CODE> variable to control whether
|
Added the <CODE>float_detect_tininess</CODE> variable to control whether
|
||||||
tininess is detected before or after rounding.
|
tininess is detected before or after rounding.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
<H3>Release 1 (1996 July)</H3>
|
<H3>Release 1 (1996 July)</H3>
|
||||||
|
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>
|
<LI>
|
||||||
Original release, based on work done for the International Computer Science
|
Original release, based on work done for the International Computer Science
|
||||||
Institute (ICSI) in Berkeley, California.
|
Institute (ICSI) in Berkeley, California.
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
||||||
</BODY>
|
</BODY>
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
||||||
{
|
{
|
||||||
const struct extFloat80M *aSPtr;
|
const struct extFloat80M *aSPtr;
|
||||||
uint64_t uiA0;
|
uint64_t uiA0;
|
||||||
|
|
||||||
aSPtr = (const struct extFloat80M *) aPtr;
|
aSPtr = (const struct extFloat80M *) aPtr;
|
||||||
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
return
|
return
|
||||||
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
||||||
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,60 +1,60 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
||||||
{
|
{
|
||||||
const uint32_t *aWPtr;
|
const uint32_t *aWPtr;
|
||||||
uint32_t uiA96;
|
uint32_t uiA96;
|
||||||
|
|
||||||
aWPtr = (const uint32_t *) aPtr;
|
aWPtr = (const uint32_t *) aPtr;
|
||||||
uiA96 = aWPtr[indexWordHi( 4 )];
|
uiA96 = aWPtr[indexWordHi( 4 )];
|
||||||
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
||||||
return
|
return
|
||||||
((uiA96 & 0x00007FFF) != 0)
|
((uiA96 & 0x00007FFF) != 0)
|
||||||
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
||||||
| aWPtr[indexWord( 4, 0 )])
|
| aWPtr[indexWord( 4, 0 )])
|
||||||
!= 0);
|
!= 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
59
softfloat/source/8086-SSE/s_bf16UIToCommonNaN.c
Normal file
59
softfloat/source/8086-SSE/s_bf16UIToCommonNaN.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
/*============================================================================
|
||||||
|
|
||||||
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
|
be used to endorse or promote products derived from this software without
|
||||||
|
specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
=============================================================================*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "platform.h"
|
||||||
|
#include "specialize.h"
|
||||||
|
#include "softfloat.h"
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Assuming `uiA' has the bit pattern of a BF16 NaN, converts
|
||||||
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
|
| exception is raised.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void softfloat_bf16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( softfloat_isSigNaNBF16UI( uiA ) ) {
|
||||||
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
|
}
|
||||||
|
zPtr->sign = uiA>>15;
|
||||||
|
zPtr->v64 = (uint_fast64_t) uiA<<56;
|
||||||
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
51
softfloat/source/8086-SSE/s_commonNaNToBF16UI.c
Normal file
51
softfloat/source/8086-SSE/s_commonNaNToBF16UI.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
/*============================================================================
|
||||||
|
|
||||||
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
|
be used to endorse or promote products derived from this software without
|
||||||
|
specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
=============================================================================*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "platform.h"
|
||||||
|
#include "specialize.h"
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Converts the common NaN pointed to by `aPtr' into a BF16 NaN, and
|
||||||
|
| returns the bit pattern of this value as an unsigned integer.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast16_t softfloat_commonNaNToBF16UI( const struct commonNaN *aPtr )
|
||||||
|
{
|
||||||
|
|
||||||
|
return (uint_fast16_t) aPtr->sign<<15 | 0x7FC0 | aPtr->v64>>56;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and stores this NaN at the location pointed to by
|
| floating-point NaN, and stores this NaN at the location pointed to by
|
||||||
| `zSPtr'.
|
| `zSPtr'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToExtF80M(
|
softfloat_commonNaNToExtF80M(
|
||||||
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
|
zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
|
||||||
zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
||||||
| integer.
|
| integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
|
uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
|
||||||
uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
||||||
| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
|
| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
|
||||||
| `zWPtr' points to an array of four 32-bit elements that concatenate in the
|
| `zWPtr' points to an array of four 32-bit elements that concatenate in the
|
||||||
| platform's normal endian order to form a 128-bit floating-point value.
|
| platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
|
softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
|
||||||
zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
|
zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,55 +1,55 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
|
uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
|
||||||
uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
|
uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,51 +1,51 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
|
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
|
return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,51 +1,51 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
|
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
|
return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,53 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
|
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return
|
return
|
||||||
(uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
|
(uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
|
||||||
| aPtr->v64>>12;
|
| aPtr->v64>>12;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
|
| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
|
||||||
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
||||||
| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
|
| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
|
||||||
| NaN, the invalid exception is raised.
|
| NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_extF80MToCommonNaN(
|
softfloat_extF80MToCommonNaN(
|
||||||
const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
|
const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
|
if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = signExtF80UI64( aSPtr->signExp );
|
zPtr->sign = signExtF80UI64( aSPtr->signExp );
|
||||||
zPtr->v64 = aSPtr->signif<<1;
|
zPtr->v64 = aSPtr->signif<<1;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
||||||
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_extF80UIToCommonNaN(
|
softfloat_extF80UIToCommonNaN(
|
||||||
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
|
if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA64>>15;
|
zPtr->sign = uiA64>>15;
|
||||||
zPtr->v64 = uiA0<<1;
|
zPtr->v64 = uiA0<<1;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
|
| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
|
||||||
| converts this NaN to the common NaN form, and stores the resulting common
|
| converts this NaN to the common NaN form, and stores the resulting common
|
||||||
| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
|
| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
|
||||||
| the invalid exception is raised. Argument `aWPtr' points to an array of
|
| the invalid exception is raised. Argument `aWPtr' points to an array of
|
||||||
| four 32-bit elements that concatenate in the platform's normal endian order
|
| four 32-bit elements that concatenate in the platform's normal endian order
|
||||||
| to form a 128-bit floating-point value.
|
| to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
|
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
|
if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
|
zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
|
||||||
softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
|
softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,65 +1,65 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
||||||
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
||||||
| the common NaN form, and stores the resulting common NaN at the location
|
| the common NaN form, and stores the resulting common NaN at the location
|
||||||
| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
|
| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
|
||||||
| is raised.
|
| is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_f128UIToCommonNaN(
|
softfloat_f128UIToCommonNaN(
|
||||||
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
struct uint128 NaNSig;
|
struct uint128 NaNSig;
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
|
if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
|
NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
|
||||||
zPtr->sign = uiA64>>63;
|
zPtr->sign = uiA64>>63;
|
||||||
zPtr->v64 = NaNSig.v64;
|
zPtr->v64 = NaNSig.v64;
|
||||||
zPtr->v0 = NaNSig.v0;
|
zPtr->v0 = NaNSig.v0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
|
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF16UI( uiA ) ) {
|
if ( softfloat_isSigNaNF16UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>15;
|
zPtr->sign = uiA>>15;
|
||||||
zPtr->v64 = (uint_fast64_t) uiA<<54;
|
zPtr->v64 = (uint_fast64_t) uiA<<54;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
|
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF32UI( uiA ) ) {
|
if ( softfloat_isSigNaNF32UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>31;
|
zPtr->sign = uiA>>31;
|
||||||
zPtr->v64 = (uint_fast64_t) uiA<<41;
|
zPtr->v64 = (uint_fast64_t) uiA<<41;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
|
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF64UI( uiA ) ) {
|
if ( softfloat_isSigNaNF64UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>63;
|
zPtr->sign = uiA>>63;
|
||||||
zPtr->v64 = uiA<<12;
|
zPtr->v64 = uiA<<12;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,107 +1,107 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 80-bit extended floating-point values
|
| Assuming at least one of the two 80-bit extended floating-point values
|
||||||
| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
|
| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
|
||||||
| at the location pointed to by `zSPtr'. If either original floating-point
|
| at the location pointed to by `zSPtr'. If either original floating-point
|
||||||
| value is a signaling NaN, the invalid exception is raised.
|
| value is a signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNExtF80M(
|
softfloat_propagateNaNExtF80M(
|
||||||
const struct extFloat80M *aSPtr,
|
const struct extFloat80M *aSPtr,
|
||||||
const struct extFloat80M *bSPtr,
|
const struct extFloat80M *bSPtr,
|
||||||
struct extFloat80M *zSPtr
|
struct extFloat80M *zSPtr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
const struct extFloat80M *sPtr;
|
const struct extFloat80M *sPtr;
|
||||||
bool isSigNaNB;
|
bool isSigNaNB;
|
||||||
uint_fast16_t uiB64;
|
uint_fast16_t uiB64;
|
||||||
uint64_t uiB0;
|
uint64_t uiB0;
|
||||||
uint_fast16_t uiA64;
|
uint_fast16_t uiA64;
|
||||||
uint64_t uiA0;
|
uint64_t uiA0;
|
||||||
uint_fast16_t uiMagA64, uiMagB64;
|
uint_fast16_t uiMagA64, uiMagB64;
|
||||||
|
|
||||||
isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
|
isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
|
||||||
sPtr = aSPtr;
|
sPtr = aSPtr;
|
||||||
if ( ! bSPtr ) {
|
if ( ! bSPtr ) {
|
||||||
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
goto copy;
|
goto copy;
|
||||||
}
|
}
|
||||||
isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
|
isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
uiB64 = bSPtr->signExp;
|
uiB64 = bSPtr->signExp;
|
||||||
if ( isSigNaNB ) goto returnLargerUIMag;
|
if ( isSigNaNB ) goto returnLargerUIMag;
|
||||||
uiB0 = bSPtr->signif;
|
uiB0 = bSPtr->signif;
|
||||||
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
|
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
|
||||||
goto copy;
|
goto copy;
|
||||||
} else {
|
} else {
|
||||||
uiA64 = aSPtr->signExp;
|
uiA64 = aSPtr->signExp;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
|
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
|
||||||
goto copyB;
|
goto copyB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uiB64 = bSPtr->signExp;
|
uiB64 = bSPtr->signExp;
|
||||||
returnLargerUIMag:
|
returnLargerUIMag:
|
||||||
uiA64 = aSPtr->signExp;
|
uiA64 = aSPtr->signExp;
|
||||||
uiMagA64 = uiA64 & 0x7FFF;
|
uiMagA64 = uiA64 & 0x7FFF;
|
||||||
uiMagB64 = uiB64 & 0x7FFF;
|
uiMagB64 = uiB64 & 0x7FFF;
|
||||||
if ( uiMagA64 < uiMagB64 ) goto copyB;
|
if ( uiMagA64 < uiMagB64 ) goto copyB;
|
||||||
if ( uiMagB64 < uiMagA64 ) goto copy;
|
if ( uiMagB64 < uiMagA64 ) goto copy;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
uiB0 = bSPtr->signif;
|
uiB0 = bSPtr->signif;
|
||||||
if ( uiA0 < uiB0 ) goto copyB;
|
if ( uiA0 < uiB0 ) goto copyB;
|
||||||
if ( uiB0 < uiA0 ) goto copy;
|
if ( uiB0 < uiA0 ) goto copy;
|
||||||
if ( uiA64 < uiB64 ) goto copy;
|
if ( uiA64 < uiB64 ) goto copy;
|
||||||
copyB:
|
copyB:
|
||||||
sPtr = bSPtr;
|
sPtr = bSPtr;
|
||||||
copy:
|
copy:
|
||||||
zSPtr->signExp = sPtr->signExp;
|
zSPtr->signExp = sPtr->signExp;
|
||||||
zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
|
zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,106 +1,106 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
||||||
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| 80-bit extended floating-point value, and assuming at least on of these
|
| 80-bit extended floating-point value, and assuming at least on of these
|
||||||
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
||||||
| result. If either original floating-point value is a signaling NaN, the
|
| result. If either original floating-point value is a signaling NaN, the
|
||||||
| invalid exception is raised.
|
| invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128
|
struct uint128
|
||||||
softfloat_propagateNaNExtF80UI(
|
softfloat_propagateNaNExtF80UI(
|
||||||
uint_fast16_t uiA64,
|
uint_fast16_t uiA64,
|
||||||
uint_fast64_t uiA0,
|
uint_fast64_t uiA0,
|
||||||
uint_fast16_t uiB64,
|
uint_fast16_t uiB64,
|
||||||
uint_fast64_t uiB0
|
uint_fast64_t uiB0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast64_t uiNonsigA0, uiNonsigB0;
|
uint_fast64_t uiNonsigA0, uiNonsigB0;
|
||||||
uint_fast16_t uiMagA64, uiMagB64;
|
uint_fast16_t uiMagA64, uiMagB64;
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
|
isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
|
||||||
isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
|
isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
|
uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
|
||||||
uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
|
uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
|
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
|
||||||
goto returnA;
|
goto returnA;
|
||||||
} else {
|
} else {
|
||||||
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
|
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
|
||||||
goto returnB;
|
goto returnB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA64 = uiA64 & 0x7FFF;
|
uiMagA64 = uiA64 & 0x7FFF;
|
||||||
uiMagB64 = uiB64 & 0x7FFF;
|
uiMagB64 = uiB64 & 0x7FFF;
|
||||||
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
||||||
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
||||||
if ( uiA0 < uiB0 ) goto returnB;
|
if ( uiA0 < uiB0 ) goto returnB;
|
||||||
if ( uiB0 < uiA0 ) goto returnA;
|
if ( uiB0 < uiA0 ) goto returnA;
|
||||||
if ( uiA64 < uiB64 ) goto returnA;
|
if ( uiA64 < uiB64 ) goto returnA;
|
||||||
returnB:
|
returnB:
|
||||||
uiZ.v64 = uiB64;
|
uiZ.v64 = uiB64;
|
||||||
uiZ.v0 = uiNonsigB0;
|
uiZ.v0 = uiNonsigB0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
returnA:
|
returnA:
|
||||||
uiZ.v64 = uiA64;
|
uiZ.v64 = uiA64;
|
||||||
uiZ.v0 = uiNonsigA0;
|
uiZ.v0 = uiNonsigA0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,76 +1,76 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
||||||
| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
|
| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
|
||||||
| pointed to by `zWPtr'. If either original floating-point value is a
|
| pointed to by `zWPtr'. If either original floating-point value is a
|
||||||
| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
|
| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
|
||||||
| and `zWPtr' points to an array of four 32-bit elements that concatenate in
|
| and `zWPtr' points to an array of four 32-bit elements that concatenate in
|
||||||
| the platform's normal endian order to form a 128-bit floating-point value.
|
| the platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNF128M(
|
softfloat_propagateNaNF128M(
|
||||||
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
const uint32_t *ptr;
|
const uint32_t *ptr;
|
||||||
|
|
||||||
ptr = aWPtr;
|
ptr = aWPtr;
|
||||||
isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
||||||
if (
|
if (
|
||||||
isSigNaNA
|
isSigNaNA
|
||||||
|| (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
|
|| (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
|
||||||
) {
|
) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) goto copy;
|
if ( isSigNaNA ) goto copy;
|
||||||
}
|
}
|
||||||
if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
|
if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
|
||||||
copy:
|
copy:
|
||||||
zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
|
zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
|
||||||
zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
|
zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
|
||||||
zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
|
zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
|
||||||
zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
|
zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,81 +1,81 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating `uiA64' and
|
| Interpreting the unsigned integer formed from concatenating `uiA64' and
|
||||||
| `uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
| `uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
||||||
| unsigned integer formed from concatenating `uiB64' and `uiB0' as another
|
| unsigned integer formed from concatenating `uiB64' and `uiB0' as another
|
||||||
| 128-bit floating-point value, and assuming at least on of these floating-
|
| 128-bit floating-point value, and assuming at least on of these floating-
|
||||||
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
||||||
| If either original floating-point value is a signaling NaN, the invalid
|
| If either original floating-point value is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128
|
struct uint128
|
||||||
softfloat_propagateNaNF128UI(
|
softfloat_propagateNaNF128UI(
|
||||||
uint_fast64_t uiA64,
|
uint_fast64_t uiA64,
|
||||||
uint_fast64_t uiA0,
|
uint_fast64_t uiA0,
|
||||||
uint_fast64_t uiB64,
|
uint_fast64_t uiB64,
|
||||||
uint_fast64_t uiB0
|
uint_fast64_t uiB0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
|
isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
|
||||||
if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
|
if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) goto returnNonsigA;
|
if ( isSigNaNA ) goto returnNonsigA;
|
||||||
}
|
}
|
||||||
if ( isNaNF128UI( uiA64, uiA0 ) ) {
|
if ( isNaNF128UI( uiA64, uiA0 ) ) {
|
||||||
returnNonsigA:
|
returnNonsigA:
|
||||||
uiZ.v64 = uiA64;
|
uiZ.v64 = uiA64;
|
||||||
uiZ.v0 = uiA0;
|
uiZ.v0 = uiA0;
|
||||||
} else {
|
} else {
|
||||||
uiZ.v64 = uiB64;
|
uiZ.v64 = uiB64;
|
||||||
uiZ.v0 = uiB0;
|
uiZ.v0 = uiB0;
|
||||||
}
|
}
|
||||||
uiZ.v64 |= UINT64_C( 0x0000800000000000 );
|
uiZ.v64 |= UINT64_C( 0x0000800000000000 );
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,63 +1,63 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting `uiA' and `uiB' as the bit patterns of two 16-bit floating-
|
| Interpreting `uiA' and `uiB' as the bit patterns of two 16-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t
|
uint_fast16_t
|
||||||
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
|
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
|
|
||||||
isSigNaNA = softfloat_isSigNaNF16UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF16UI( uiA );
|
||||||
if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
|
if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) return uiA | 0x0200;
|
if ( isSigNaNA ) return uiA | 0x0200;
|
||||||
}
|
}
|
||||||
return (isNaNF16UI( uiA ) ? uiA : uiB) | 0x0200;
|
return (isNaNF16UI( uiA ) ? uiA : uiB) | 0x0200;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,63 +1,63 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting `uiA' and `uiB' as the bit patterns of two 32-bit floating-
|
| Interpreting `uiA' and `uiB' as the bit patterns of two 32-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast32_t
|
uint_fast32_t
|
||||||
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
|
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
|
|
||||||
isSigNaNA = softfloat_isSigNaNF32UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF32UI( uiA );
|
||||||
if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
|
if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) return uiA | 0x00400000;
|
if ( isSigNaNA ) return uiA | 0x00400000;
|
||||||
}
|
}
|
||||||
return (isNaNF32UI( uiA ) ? uiA : uiB) | 0x00400000;
|
return (isNaNF32UI( uiA ) ? uiA : uiB) | 0x00400000;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,63 +1,63 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting `uiA' and `uiB' as the bit patterns of two 64-bit floating-
|
| Interpreting `uiA' and `uiB' as the bit patterns of two 64-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast64_t
|
uint_fast64_t
|
||||||
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
|
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
|
|
||||||
isSigNaNA = softfloat_isSigNaNF64UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF64UI( uiA );
|
||||||
if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
|
if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) return uiA | UINT64_C( 0x0008000000000000 );
|
if ( isSigNaNA ) return uiA | UINT64_C( 0x0008000000000000 );
|
||||||
}
|
}
|
||||||
return (isNaNF64UI( uiA ) ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
|
return (isNaNF64UI( uiA ) ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Raises the exceptions specified by `flags'. Floating-point traps can be
|
| Raises the exceptions specified by `flags'. Floating-point traps can be
|
||||||
| defined here if desired. It is currently not possible for such a trap
|
| defined here if desired. It is currently not possible for such a trap
|
||||||
| to substitute a result value. If traps are not implemented, this routine
|
| to substitute a result value. If traps are not implemented, this routine
|
||||||
| should be simply `softfloat_exceptionFlags |= flags;'.
|
| should be simply `softfloat_exceptionFlags |= flags;'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_raiseFlags( uint_fast8_t flags )
|
void softfloat_raiseFlags( uint_fast8_t flags )
|
||||||
{
|
{
|
||||||
|
|
||||||
softfloat_exceptionFlags |= flags;
|
softfloat_exceptionFlags |= flags;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,346 +1,397 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#ifndef specialize_h
|
#ifndef specialize_h
|
||||||
#define specialize_h 1
|
#define specialize_h 1
|
||||||
|
|
||||||
#include "primitiveTypes.h"
|
#include <stdbool.h>
|
||||||
#include "softfloat.h"
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include "primitiveTypes.h"
|
||||||
#include <stdint.h>
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Default value for 'softfloat_detectTininess'.
|
| Default value for 'softfloat_detectTininess'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define init_detectTininess softfloat_tininess_afterRounding
|
#define init_detectTininess softfloat_tininess_afterRounding
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The values to return on conversions to 32-bit integer formats that raise an
|
| The values to return on conversions to 32-bit integer formats that raise an
|
||||||
| invalid exception.
|
| invalid exception.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define ui32_fromPosOverflow 0xFFFFFFFF
|
#define ui32_fromPosOverflow 0xFFFFFFFF
|
||||||
#define ui32_fromNegOverflow 0xFFFFFFFF
|
#define ui32_fromNegOverflow 0xFFFFFFFF
|
||||||
#define ui32_fromNaN 0xFFFFFFFF
|
#define ui32_fromNaN 0xFFFFFFFF
|
||||||
#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
|
#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
|
||||||
#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
|
#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
|
||||||
#define i32_fromNaN (-0x7FFFFFFF - 1)
|
#define i32_fromNaN (-0x7FFFFFFF - 1)
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The values to return on conversions to 64-bit integer formats that raise an
|
| The values to return on conversions to 64-bit integer formats that raise an
|
||||||
| invalid exception.
|
| invalid exception.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define ui64_fromPosOverflow UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define ui64_fromNegOverflow UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define ui64_fromNaN UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define i64_fromPosOverflow (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
#define i64_fromNegOverflow (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
#define i64_fromNaN (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| "Common NaN" structure, used to transfer NaN representations from one format
|
| "Common NaN" structure, used to transfer NaN representations from one format
|
||||||
| to another.
|
| to another.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct commonNaN {
|
struct commonNaN {
|
||||||
bool sign;
|
bool sign;
|
||||||
#ifdef LITTLEENDIAN
|
#ifdef LITTLEENDIAN
|
||||||
uint64_t v0, v64;
|
uint64_t v0, v64;
|
||||||
#else
|
#else
|
||||||
uint64_t v64, v0;
|
uint64_t v64, v0;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The bit pattern for a default generated 16-bit floating-point NaN.
|
| The bit pattern for a default generated 16-bit floating-point NaN.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define defaultNaNF16UI 0xFE00
|
#define defaultNaNF16UI 0xFE00
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
|
| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
| 16-bit floating-point signaling NaN.
|
| 16-bit floating-point signaling NaN.
|
||||||
| Note: This macro evaluates its argument more than once.
|
| Note: This macro evaluates its argument more than once.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define softfloat_isSigNaNF16UI(uiA) ((((uiA)&0x7E00) == 0x7C00) && ((uiA)&0x01FF))
|
#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f16UIToCommonNaN(uint_fast16_t uiA, struct commonNaN* zPtr);
|
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
|
| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_commonNaNToF16UI(const struct commonNaN* aPtr);
|
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB);
|
uint_fast16_t
|
||||||
|
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| The bit pattern for a default generated 32-bit floating-point NaN.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
#define defaultNaNF32UI 0xFFC00000
|
| 16-bit brain floating-point (BF16) signaling NaN.
|
||||||
|
| Note: This macro evaluates its argument more than once.
|
||||||
/*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------*/
|
||||||
| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
|
#define softfloat_isSigNaNBF16UI( uiA ) ((((uiA) & 0x7FC0) == 0x7F80) && ((uiA) & 0x003F))
|
||||||
| 32-bit floating-point signaling NaN.
|
|
||||||
| Note: This macro evaluates its argument more than once.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Assuming 'uiA' has the bit pattern of a 16-bit BF16 floating-point NaN, converts
|
||||||
#define softfloat_isSigNaNF32UI(uiA) ((((uiA)&0x7FC00000) == 0x7F800000) && ((uiA)&0x003FFFFF))
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
/*----------------------------------------------------------------------------
|
| exception is raised.
|
||||||
| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
*----------------------------------------------------------------------------*/
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
void softfloat_bf16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
|
||||||
| exception is raised.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
|
||||||
void softfloat_f32UIToCommonNaN(uint_fast32_t uiA, struct commonNaN* zPtr);
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
uint_fast16_t softfloat_commonNaNToBF16UI( const struct commonNaN *aPtr );
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
|
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| The bit pattern for a default generated 32-bit floating-point NaN.
|
||||||
uint_fast32_t softfloat_commonNaNToF32UI(const struct commonNaN* aPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define defaultNaNF32UI 0xFFC00000
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
/*----------------------------------------------------------------------------
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| 32-bit floating-point signaling NaN.
|
||||||
| signaling NaN, the invalid exception is raised.
|
| Note: This macro evaluates its argument more than once.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast32_t softfloat_propagateNaNF32UI(uint_fast32_t uiA, uint_fast32_t uiB);
|
#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The bit pattern for a default generated 64-bit floating-point NaN.
|
| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
||||||
*----------------------------------------------------------------------------*/
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
#define defaultNaNF64UI UINT64_C(0xFFF8000000000000)
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
|
| exception is raised.
|
||||||
/*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------*/
|
||||||
| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
|
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
|
||||||
| 64-bit floating-point signaling NaN.
|
|
||||||
| Note: This macro evaluates its argument more than once.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
|
||||||
#define softfloat_isSigNaNF64UI(uiA) \
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
((((uiA)&UINT64_C(0x7FF8000000000000)) == UINT64_C(0x7FF0000000000000)) && ((uiA)&UINT64_C(0x0007FFFFFFFFFFFF)))
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
/*----------------------------------------------------------------------------
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| exception is raised.
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
*----------------------------------------------------------------------------*/
|
| signaling NaN, the invalid exception is raised.
|
||||||
void softfloat_f64UIToCommonNaN(uint_fast64_t uiA, struct commonNaN* zPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast32_t
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
|
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| The bit pattern for a default generated 64-bit floating-point NaN.
|
||||||
uint_fast64_t softfloat_commonNaNToF64UI(const struct commonNaN* aPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
/*----------------------------------------------------------------------------
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| 64-bit floating-point signaling NaN.
|
||||||
| signaling NaN, the invalid exception is raised.
|
| Note: This macro evaluates its argument more than once.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, uint_fast64_t uiB);
|
#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The bit pattern for a default generated 80-bit extended floating-point NaN.
|
| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
||||||
*----------------------------------------------------------------------------*/
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
#define defaultNaNExtF80UI64 0xFFFF
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
#define defaultNaNExtF80UI0 UINT64_C(0xC000000000000000)
|
| exception is raised.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
|
||||||
| Returns true when the 80-bit unsigned integer formed from concatenating
|
|
||||||
| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
|
/*----------------------------------------------------------------------------
|
||||||
| floating-point signaling NaN.
|
| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
|
||||||
| Note: This macro evaluates its arguments more than once.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define softfloat_isSigNaNExtF80UI(uiA64, uiA0) \
|
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
|
||||||
((((uiA64)&0x7FFF) == 0x7FFF) && !((uiA0)&UINT64_C(0x4000000000000000)) && ((uiA0)&UINT64_C(0x3FFFFFFFFFFFFFFF)))
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
#ifdef SOFTFLOAT_FAST_INT64
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
||||||
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
/*----------------------------------------------------------------------------
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
|
| signaling NaN, the invalid exception is raised.
|
||||||
| defined.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
uint_fast64_t
|
||||||
|
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
/*----------------------------------------------------------------------------
|
||||||
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
| The bit pattern for a default generated 80-bit extended floating-point NaN.
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
*----------------------------------------------------------------------------*/
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
#define defaultNaNExtF80UI64 0xFFFF
|
||||||
| exception is raised.
|
#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
void softfloat_extF80UIToCommonNaN(uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN* zPtr);
|
/*----------------------------------------------------------------------------
|
||||||
|
| Returns true when the 80-bit unsigned integer formed from concatenating
|
||||||
/*----------------------------------------------------------------------------
|
| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
| floating-point signaling NaN.
|
||||||
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
| Note: This macro evaluates its arguments more than once.
|
||||||
| integer.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
|
||||||
struct uint128 softfloat_commonNaNToExtF80UI(const struct commonNaN* aPtr);
|
|
||||||
|
#ifdef SOFTFLOAT_FAST_INT64
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
/*----------------------------------------------------------------------------
|
||||||
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
|
||||||
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
| defined.
|
||||||
| 80-bit extended floating-point value, and assuming at least on of these
|
*----------------------------------------------------------------------------*/
|
||||||
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
|
||||||
| result. If either original floating-point value is a signaling NaN, the
|
/*----------------------------------------------------------------------------
|
||||||
| invalid exception is raised.
|
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
||||||
*----------------------------------------------------------------------------*/
|
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
||||||
struct uint128 softfloat_propagateNaNExtF80UI(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0);
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
/*----------------------------------------------------------------------------
|
| exception is raised.
|
||||||
| The bit pattern for a default generated 128-bit floating-point NaN.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
void
|
||||||
#define defaultNaNF128UI64 UINT64_C(0xFFFF800000000000)
|
softfloat_extF80UIToCommonNaN(
|
||||||
#define defaultNaNF128UI0 UINT64_C(0)
|
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Returns true when the 128-bit unsigned integer formed from concatenating
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
|
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
||||||
| point signaling NaN.
|
| integer.
|
||||||
| Note: This macro evaluates its arguments more than once.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
|
||||||
#define softfloat_isSigNaNF128UI(uiA64, uiA0) \
|
|
||||||
((((uiA64)&UINT64_C(0x7FFF800000000000)) == UINT64_C(0x7FFF000000000000)) && ((uiA0) || ((uiA64)&UINT64_C(0x00007FFFFFFFFFFF))))
|
/*----------------------------------------------------------------------------
|
||||||
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
/*----------------------------------------------------------------------------
|
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
||||||
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
| 80-bit extended floating-point value, and assuming at least on of these
|
||||||
| the common NaN form, and stores the resulting common NaN at the location
|
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
||||||
| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
|
| result. If either original floating-point value is a signaling NaN, the
|
||||||
| is raised.
|
| invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f128UIToCommonNaN(uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN* zPtr);
|
struct uint128
|
||||||
|
softfloat_propagateNaNExtF80UI(
|
||||||
/*----------------------------------------------------------------------------
|
uint_fast16_t uiA64,
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
uint_fast64_t uiA0,
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
uint_fast16_t uiB64,
|
||||||
*----------------------------------------------------------------------------*/
|
uint_fast64_t uiB0
|
||||||
struct uint128 softfloat_commonNaNToF128UI(const struct commonNaN*);
|
);
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
| The bit pattern for a default generated 128-bit floating-point NaN.
|
||||||
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
*----------------------------------------------------------------------------*/
|
||||||
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
|
||||||
| 128-bit floating-point value, and assuming at least on of these floating-
|
#define defaultNaNF128UI0 UINT64_C( 0 )
|
||||||
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
|
||||||
| If either original floating-point value is a signaling NaN, the invalid
|
/*----------------------------------------------------------------------------
|
||||||
| exception is raised.
|
| Returns true when the 128-bit unsigned integer formed from concatenating
|
||||||
*----------------------------------------------------------------------------*/
|
| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
|
||||||
struct uint128 softfloat_propagateNaNF128UI(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0);
|
| point signaling NaN.
|
||||||
|
| Note: This macro evaluates its arguments more than once.
|
||||||
#else
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
|
/*----------------------------------------------------------------------------
|
||||||
| defined.
|
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
||||||
*----------------------------------------------------------------------------*/
|
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
||||||
|
| the common NaN form, and stores the resulting common NaN at the location
|
||||||
/*----------------------------------------------------------------------------
|
| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
|
||||||
| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
|
| is raised.
|
||||||
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
*----------------------------------------------------------------------------*/
|
||||||
| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
|
void
|
||||||
| NaN, the invalid exception is raised.
|
softfloat_f128UIToCommonNaN(
|
||||||
*----------------------------------------------------------------------------*/
|
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
|
||||||
void softfloat_extF80MToCommonNaN(const struct extFloat80M* aSPtr, struct commonNaN* zPtr);
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
/*----------------------------------------------------------------------------
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
| floating-point NaN, and stores this NaN at the location pointed to by
|
*----------------------------------------------------------------------------*/
|
||||||
| 'zSPtr'.
|
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
void softfloat_commonNaNToExtF80M(const struct commonNaN* aPtr, struct extFloat80M* zSPtr);
|
/*----------------------------------------------------------------------------
|
||||||
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
/*----------------------------------------------------------------------------
|
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
||||||
| Assuming at least one of the two 80-bit extended floating-point values
|
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
| 128-bit floating-point value, and assuming at least on of these floating-
|
||||||
| at the location pointed to by 'zSPtr'. If either original floating-point
|
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
||||||
| value is a signaling NaN, the invalid exception is raised.
|
| If either original floating-point value is a signaling NaN, the invalid
|
||||||
*----------------------------------------------------------------------------*/
|
| exception is raised.
|
||||||
void softfloat_propagateNaNExtF80M(const struct extFloat80M* aSPtr, const struct extFloat80M* bSPtr, struct extFloat80M* zSPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
struct uint128
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_propagateNaNF128UI(
|
||||||
| The bit pattern for a default generated 128-bit floating-point NaN.
|
uint_fast64_t uiA64,
|
||||||
*----------------------------------------------------------------------------*/
|
uint_fast64_t uiA0,
|
||||||
#define defaultNaNF128UI96 0xFFFF8000
|
uint_fast64_t uiB64,
|
||||||
#define defaultNaNF128UI64 0
|
uint_fast64_t uiB0
|
||||||
#define defaultNaNF128UI32 0
|
);
|
||||||
#define defaultNaNF128UI0 0
|
|
||||||
|
#else
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
|
/*----------------------------------------------------------------------------
|
||||||
| converts this NaN to the common NaN form, and stores the resulting common
|
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
|
||||||
| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
|
| defined.
|
||||||
| the invalid exception is raised. Argument 'aWPtr' points to an array of
|
*----------------------------------------------------------------------------*/
|
||||||
| four 32-bit elements that concatenate in the platform's normal endian order
|
|
||||||
| to form a 128-bit floating-point value.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
|
||||||
void softfloat_f128MToCommonNaN(const uint32_t* aWPtr, struct commonNaN* zPtr);
|
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
||||||
|
| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
|
||||||
/*----------------------------------------------------------------------------
|
| NaN, the invalid exception is raised.
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
*----------------------------------------------------------------------------*/
|
||||||
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
void
|
||||||
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
softfloat_extF80MToCommonNaN(
|
||||||
| platform's normal endian order to form a 128-bit floating-point value.
|
const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
void softfloat_commonNaNToF128M(const struct commonNaN* aPtr, uint32_t* zWPtr);
|
/*----------------------------------------------------------------------------
|
||||||
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
/*----------------------------------------------------------------------------
|
| floating-point NaN, and stores this NaN at the location pointed to by
|
||||||
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
| 'zSPtr'.
|
||||||
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
*----------------------------------------------------------------------------*/
|
||||||
| pointed to by 'zWPtr'. If either original floating-point value is a
|
void
|
||||||
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
softfloat_commonNaNToExtF80M(
|
||||||
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
|
||||||
| the platform's normal endian order to form a 128-bit floating-point value.
|
|
||||||
*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------
|
||||||
void softfloat_propagateNaNF128M(const uint32_t* aWPtr, const uint32_t* bWPtr, uint32_t* zWPtr);
|
| Assuming at least one of the two 80-bit extended floating-point values
|
||||||
|
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
||||||
#endif
|
| at the location pointed to by 'zSPtr'. If either original floating-point
|
||||||
|
| value is a signaling NaN, the invalid exception is raised.
|
||||||
#endif
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_propagateNaNExtF80M(
|
||||||
|
const struct extFloat80M *aSPtr,
|
||||||
|
const struct extFloat80M *bSPtr,
|
||||||
|
struct extFloat80M *zSPtr
|
||||||
|
);
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| The bit pattern for a default generated 128-bit floating-point NaN.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define defaultNaNF128UI96 0xFFFF8000
|
||||||
|
#define defaultNaNF128UI64 0
|
||||||
|
#define defaultNaNF128UI32 0
|
||||||
|
#define defaultNaNF128UI0 0
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
|
||||||
|
| converts this NaN to the common NaN form, and stores the resulting common
|
||||||
|
| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
|
||||||
|
| the invalid exception is raised. Argument 'aWPtr' points to an array of
|
||||||
|
| four 32-bit elements that concatenate in the platform's normal endian order
|
||||||
|
| to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
|
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
||||||
|
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
||||||
|
| platform's normal endian order to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
||||||
|
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
||||||
|
| pointed to by 'zWPtr'. If either original floating-point value is a
|
||||||
|
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
||||||
|
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
||||||
|
| the platform's normal endian order to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_propagateNaNF128M(
|
||||||
|
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
||||||
{
|
{
|
||||||
const struct extFloat80M *aSPtr;
|
const struct extFloat80M *aSPtr;
|
||||||
uint64_t uiA0;
|
uint64_t uiA0;
|
||||||
|
|
||||||
aSPtr = (const struct extFloat80M *) aPtr;
|
aSPtr = (const struct extFloat80M *) aPtr;
|
||||||
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
return
|
return
|
||||||
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
||||||
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,60 +1,60 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
||||||
{
|
{
|
||||||
const uint32_t *aWPtr;
|
const uint32_t *aWPtr;
|
||||||
uint32_t uiA96;
|
uint32_t uiA96;
|
||||||
|
|
||||||
aWPtr = (const uint32_t *) aPtr;
|
aWPtr = (const uint32_t *) aPtr;
|
||||||
uiA96 = aWPtr[indexWordHi( 4 )];
|
uiA96 = aWPtr[indexWordHi( 4 )];
|
||||||
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
||||||
return
|
return
|
||||||
((uiA96 & 0x00007FFF) != 0)
|
((uiA96 & 0x00007FFF) != 0)
|
||||||
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
||||||
| aWPtr[indexWord( 4, 0 )])
|
| aWPtr[indexWord( 4, 0 )])
|
||||||
!= 0);
|
!= 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and stores this NaN at the location pointed to by
|
| floating-point NaN, and stores this NaN at the location pointed to by
|
||||||
| `zSPtr'.
|
| `zSPtr'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToExtF80M(
|
softfloat_commonNaNToExtF80M(
|
||||||
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
|
zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
|
||||||
zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
||||||
| integer.
|
| integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
|
uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
|
||||||
uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
||||||
| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
|
| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
|
||||||
| `zWPtr' points to an array of four 32-bit elements that concatenate in the
|
| `zWPtr' points to an array of four 32-bit elements that concatenate in the
|
||||||
| platform's normal endian order to form a 128-bit floating-point value.
|
| platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
|
softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
|
||||||
zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
|
zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,55 +1,55 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
|
uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
|
||||||
uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
|
uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,51 +1,51 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
|
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
|
return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,51 +1,51 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
|
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
|
return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,53 +1,53 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
|
| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
|
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
return
|
return
|
||||||
(uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
|
(uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
|
||||||
| aPtr->v64>>12;
|
| aPtr->v64>>12;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
|
| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
|
||||||
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
||||||
| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
|
| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
|
||||||
| NaN, the invalid exception is raised.
|
| NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_extF80MToCommonNaN(
|
softfloat_extF80MToCommonNaN(
|
||||||
const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
|
const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
|
if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = signExtF80UI64( aSPtr->signExp );
|
zPtr->sign = signExtF80UI64( aSPtr->signExp );
|
||||||
zPtr->v64 = aSPtr->signif<<1;
|
zPtr->v64 = aSPtr->signif<<1;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
||||||
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_extF80UIToCommonNaN(
|
softfloat_extF80UIToCommonNaN(
|
||||||
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
|
if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA64>>15;
|
zPtr->sign = uiA64>>15;
|
||||||
zPtr->v64 = uiA0<<1;
|
zPtr->v64 = uiA0<<1;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,62 +1,62 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
|
| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
|
||||||
| converts this NaN to the common NaN form, and stores the resulting common
|
| converts this NaN to the common NaN form, and stores the resulting common
|
||||||
| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
|
| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
|
||||||
| the invalid exception is raised. Argument `aWPtr' points to an array of
|
| the invalid exception is raised. Argument `aWPtr' points to an array of
|
||||||
| four 32-bit elements that concatenate in the platform's normal endian order
|
| four 32-bit elements that concatenate in the platform's normal endian order
|
||||||
| to form a 128-bit floating-point value.
|
| to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
|
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
|
if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
|
zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
|
||||||
softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
|
softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,65 +1,65 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
|
||||||
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
||||||
| the common NaN form, and stores the resulting common NaN at the location
|
| the common NaN form, and stores the resulting common NaN at the location
|
||||||
| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
|
| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
|
||||||
| is raised.
|
| is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_f128UIToCommonNaN(
|
softfloat_f128UIToCommonNaN(
|
||||||
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
struct uint128 NaNSig;
|
struct uint128 NaNSig;
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
|
if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
|
NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
|
||||||
zPtr->sign = uiA64>>63;
|
zPtr->sign = uiA64>>63;
|
||||||
zPtr->v64 = NaNSig.v64;
|
zPtr->v64 = NaNSig.v64;
|
||||||
zPtr->v0 = NaNSig.v0;
|
zPtr->v0 = NaNSig.v0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
|
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF16UI( uiA ) ) {
|
if ( softfloat_isSigNaNF16UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>15;
|
zPtr->sign = uiA>>15;
|
||||||
zPtr->v64 = (uint_fast64_t) uiA<<54;
|
zPtr->v64 = (uint_fast64_t) uiA<<54;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
|
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF32UI( uiA ) ) {
|
if ( softfloat_isSigNaNF32UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>31;
|
zPtr->sign = uiA>>31;
|
||||||
zPtr->v64 = (uint_fast64_t) uiA<<41;
|
zPtr->v64 = (uint_fast64_t) uiA<<41;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,59 +1,59 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
|
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( softfloat_isSigNaNF64UI( uiA ) ) {
|
if ( softfloat_isSigNaNF64UI( uiA ) ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zPtr->sign = uiA>>63;
|
zPtr->sign = uiA>>63;
|
||||||
zPtr->v64 = uiA<<12;
|
zPtr->v64 = uiA<<12;
|
||||||
zPtr->v0 = 0;
|
zPtr->v0 = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,107 +1,107 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 80-bit extended floating-point values
|
| Assuming at least one of the two 80-bit extended floating-point values
|
||||||
| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
|
| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
|
||||||
| at the location pointed to by `zSPtr'. If either original floating-point
|
| at the location pointed to by `zSPtr'. If either original floating-point
|
||||||
| value is a signaling NaN, the invalid exception is raised.
|
| value is a signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNExtF80M(
|
softfloat_propagateNaNExtF80M(
|
||||||
const struct extFloat80M *aSPtr,
|
const struct extFloat80M *aSPtr,
|
||||||
const struct extFloat80M *bSPtr,
|
const struct extFloat80M *bSPtr,
|
||||||
struct extFloat80M *zSPtr
|
struct extFloat80M *zSPtr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
const struct extFloat80M *sPtr;
|
const struct extFloat80M *sPtr;
|
||||||
bool isSigNaNB;
|
bool isSigNaNB;
|
||||||
uint_fast16_t uiB64;
|
uint_fast16_t uiB64;
|
||||||
uint64_t uiB0;
|
uint64_t uiB0;
|
||||||
uint_fast16_t uiA64;
|
uint_fast16_t uiA64;
|
||||||
uint64_t uiA0;
|
uint64_t uiA0;
|
||||||
uint_fast16_t uiMagA64, uiMagB64;
|
uint_fast16_t uiMagA64, uiMagB64;
|
||||||
|
|
||||||
isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
|
isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
|
||||||
sPtr = aSPtr;
|
sPtr = aSPtr;
|
||||||
if ( ! bSPtr ) {
|
if ( ! bSPtr ) {
|
||||||
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
goto copy;
|
goto copy;
|
||||||
}
|
}
|
||||||
isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
|
isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
uiB64 = bSPtr->signExp;
|
uiB64 = bSPtr->signExp;
|
||||||
if ( isSigNaNB ) goto returnLargerUIMag;
|
if ( isSigNaNB ) goto returnLargerUIMag;
|
||||||
uiB0 = bSPtr->signif;
|
uiB0 = bSPtr->signif;
|
||||||
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
|
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
|
||||||
goto copy;
|
goto copy;
|
||||||
} else {
|
} else {
|
||||||
uiA64 = aSPtr->signExp;
|
uiA64 = aSPtr->signExp;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
|
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
|
||||||
goto copyB;
|
goto copyB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uiB64 = bSPtr->signExp;
|
uiB64 = bSPtr->signExp;
|
||||||
returnLargerUIMag:
|
returnLargerUIMag:
|
||||||
uiA64 = aSPtr->signExp;
|
uiA64 = aSPtr->signExp;
|
||||||
uiMagA64 = uiA64 & 0x7FFF;
|
uiMagA64 = uiA64 & 0x7FFF;
|
||||||
uiMagB64 = uiB64 & 0x7FFF;
|
uiMagB64 = uiB64 & 0x7FFF;
|
||||||
if ( uiMagA64 < uiMagB64 ) goto copyB;
|
if ( uiMagA64 < uiMagB64 ) goto copyB;
|
||||||
if ( uiMagB64 < uiMagA64 ) goto copy;
|
if ( uiMagB64 < uiMagA64 ) goto copy;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
uiB0 = bSPtr->signif;
|
uiB0 = bSPtr->signif;
|
||||||
if ( uiA0 < uiB0 ) goto copyB;
|
if ( uiA0 < uiB0 ) goto copyB;
|
||||||
if ( uiB0 < uiA0 ) goto copy;
|
if ( uiB0 < uiA0 ) goto copy;
|
||||||
if ( uiA64 < uiB64 ) goto copy;
|
if ( uiA64 < uiB64 ) goto copy;
|
||||||
copyB:
|
copyB:
|
||||||
sPtr = bSPtr;
|
sPtr = bSPtr;
|
||||||
copy:
|
copy:
|
||||||
zSPtr->signExp = sPtr->signExp;
|
zSPtr->signExp = sPtr->signExp;
|
||||||
zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
|
zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,106 +1,106 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
||||||
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| 80-bit extended floating-point value, and assuming at least on of these
|
| 80-bit extended floating-point value, and assuming at least on of these
|
||||||
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
||||||
| result. If either original floating-point value is a signaling NaN, the
|
| result. If either original floating-point value is a signaling NaN, the
|
||||||
| invalid exception is raised.
|
| invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128
|
struct uint128
|
||||||
softfloat_propagateNaNExtF80UI(
|
softfloat_propagateNaNExtF80UI(
|
||||||
uint_fast16_t uiA64,
|
uint_fast16_t uiA64,
|
||||||
uint_fast64_t uiA0,
|
uint_fast64_t uiA0,
|
||||||
uint_fast16_t uiB64,
|
uint_fast16_t uiB64,
|
||||||
uint_fast64_t uiB0
|
uint_fast64_t uiB0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast64_t uiNonsigA0, uiNonsigB0;
|
uint_fast64_t uiNonsigA0, uiNonsigB0;
|
||||||
uint_fast16_t uiMagA64, uiMagB64;
|
uint_fast16_t uiMagA64, uiMagB64;
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
|
isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
|
||||||
isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
|
isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
|
uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
|
||||||
uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
|
uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
|
if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
|
||||||
goto returnA;
|
goto returnA;
|
||||||
} else {
|
} else {
|
||||||
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
|
if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
|
||||||
goto returnB;
|
goto returnB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA64 = uiA64 & 0x7FFF;
|
uiMagA64 = uiA64 & 0x7FFF;
|
||||||
uiMagB64 = uiB64 & 0x7FFF;
|
uiMagB64 = uiB64 & 0x7FFF;
|
||||||
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
||||||
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
||||||
if ( uiA0 < uiB0 ) goto returnB;
|
if ( uiA0 < uiB0 ) goto returnB;
|
||||||
if ( uiB0 < uiA0 ) goto returnA;
|
if ( uiB0 < uiA0 ) goto returnA;
|
||||||
if ( uiA64 < uiB64 ) goto returnA;
|
if ( uiA64 < uiB64 ) goto returnA;
|
||||||
returnB:
|
returnB:
|
||||||
uiZ.v64 = uiB64;
|
uiZ.v64 = uiB64;
|
||||||
uiZ.v0 = uiNonsigB0;
|
uiZ.v0 = uiNonsigB0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
returnA:
|
returnA:
|
||||||
uiZ.v64 = uiA64;
|
uiZ.v64 = uiA64;
|
||||||
uiZ.v0 = uiNonsigA0;
|
uiZ.v0 = uiNonsigA0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,108 +1,108 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
||||||
| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
|
| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
|
||||||
| pointed to by `zWPtr'. If either original floating-point value is a
|
| pointed to by `zWPtr'. If either original floating-point value is a
|
||||||
| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
|
| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
|
||||||
| and `zWPtr' points to an array of four 32-bit elements that concatenate in
|
| and `zWPtr' points to an array of four 32-bit elements that concatenate in
|
||||||
| the platform's normal endian order to form a 128-bit floating-point value.
|
| the platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNF128M(
|
softfloat_propagateNaNF128M(
|
||||||
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
bool isSigNaNA;
|
bool isSigNaNA;
|
||||||
const uint32_t *ptr;
|
const uint32_t *ptr;
|
||||||
bool isSigNaNB;
|
bool isSigNaNB;
|
||||||
uint32_t uiA96, uiB96, wordMagA, wordMagB;
|
uint32_t uiA96, uiB96, wordMagA, wordMagB;
|
||||||
|
|
||||||
isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
||||||
ptr = aWPtr;
|
ptr = aWPtr;
|
||||||
if ( ! bWPtr ) {
|
if ( ! bWPtr ) {
|
||||||
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
goto copy;
|
goto copy;
|
||||||
}
|
}
|
||||||
isSigNaNB = f128M_isSignalingNaN( (const float128_t *) bWPtr );
|
isSigNaNB = f128M_isSignalingNaN( (const float128_t *) bWPtr );
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerUIMag;
|
if ( isSigNaNB ) goto returnLargerUIMag;
|
||||||
if ( softfloat_isNaNF128M( bWPtr ) ) goto copyB;
|
if ( softfloat_isNaNF128M( bWPtr ) ) goto copyB;
|
||||||
goto copy;
|
goto copy;
|
||||||
} else {
|
} else {
|
||||||
if ( softfloat_isNaNF128M( aWPtr ) ) goto copy;
|
if ( softfloat_isNaNF128M( aWPtr ) ) goto copy;
|
||||||
goto copyB;
|
goto copyB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerUIMag:
|
returnLargerUIMag:
|
||||||
uiA96 = aWPtr[indexWordHi( 4 )];
|
uiA96 = aWPtr[indexWordHi( 4 )];
|
||||||
uiB96 = bWPtr[indexWordHi( 4 )];
|
uiB96 = bWPtr[indexWordHi( 4 )];
|
||||||
wordMagA = uiA96 & 0x7FFFFFFF;
|
wordMagA = uiA96 & 0x7FFFFFFF;
|
||||||
wordMagB = uiB96 & 0x7FFFFFFF;
|
wordMagB = uiB96 & 0x7FFFFFFF;
|
||||||
if ( wordMagA < wordMagB ) goto copyB;
|
if ( wordMagA < wordMagB ) goto copyB;
|
||||||
if ( wordMagB < wordMagA ) goto copy;
|
if ( wordMagB < wordMagA ) goto copy;
|
||||||
wordMagA = aWPtr[indexWord( 4, 2 )];
|
wordMagA = aWPtr[indexWord( 4, 2 )];
|
||||||
wordMagB = bWPtr[indexWord( 4, 2 )];
|
wordMagB = bWPtr[indexWord( 4, 2 )];
|
||||||
if ( wordMagA < wordMagB ) goto copyB;
|
if ( wordMagA < wordMagB ) goto copyB;
|
||||||
if ( wordMagB < wordMagA ) goto copy;
|
if ( wordMagB < wordMagA ) goto copy;
|
||||||
wordMagA = aWPtr[indexWord( 4, 1 )];
|
wordMagA = aWPtr[indexWord( 4, 1 )];
|
||||||
wordMagB = bWPtr[indexWord( 4, 1 )];
|
wordMagB = bWPtr[indexWord( 4, 1 )];
|
||||||
if ( wordMagA < wordMagB ) goto copyB;
|
if ( wordMagA < wordMagB ) goto copyB;
|
||||||
if ( wordMagB < wordMagA ) goto copy;
|
if ( wordMagB < wordMagA ) goto copy;
|
||||||
wordMagA = aWPtr[indexWord( 4, 0 )];
|
wordMagA = aWPtr[indexWord( 4, 0 )];
|
||||||
wordMagB = bWPtr[indexWord( 4, 0 )];
|
wordMagB = bWPtr[indexWord( 4, 0 )];
|
||||||
if ( wordMagA < wordMagB ) goto copyB;
|
if ( wordMagA < wordMagB ) goto copyB;
|
||||||
if ( wordMagB < wordMagA ) goto copy;
|
if ( wordMagB < wordMagA ) goto copy;
|
||||||
if ( uiA96 < uiB96 ) goto copy;
|
if ( uiA96 < uiB96 ) goto copy;
|
||||||
copyB:
|
copyB:
|
||||||
ptr = bWPtr;
|
ptr = bWPtr;
|
||||||
copy:
|
copy:
|
||||||
zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
|
zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
|
||||||
zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
|
zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
|
||||||
zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
|
zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
|
||||||
zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
|
zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,105 +1,105 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
||||||
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| 128-bit floating-point value, and assuming at least on of these floating-
|
| 128-bit floating-point value, and assuming at least on of these floating-
|
||||||
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
||||||
| If either original floating-point value is a signaling NaN, the invalid
|
| If either original floating-point value is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128
|
struct uint128
|
||||||
softfloat_propagateNaNF128UI(
|
softfloat_propagateNaNF128UI(
|
||||||
uint_fast64_t uiA64,
|
uint_fast64_t uiA64,
|
||||||
uint_fast64_t uiA0,
|
uint_fast64_t uiA0,
|
||||||
uint_fast64_t uiB64,
|
uint_fast64_t uiB64,
|
||||||
uint_fast64_t uiB0
|
uint_fast64_t uiB0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast64_t uiNonsigA64, uiNonsigB64, uiMagA64, uiMagB64;
|
uint_fast64_t uiNonsigA64, uiNonsigB64, uiMagA64, uiMagB64;
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
|
isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
|
||||||
isSigNaNB = softfloat_isSigNaNF128UI( uiB64, uiB0 );
|
isSigNaNB = softfloat_isSigNaNF128UI( uiB64, uiB0 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA64 = uiA64 | UINT64_C( 0x0000800000000000 );
|
uiNonsigA64 = uiA64 | UINT64_C( 0x0000800000000000 );
|
||||||
uiNonsigB64 = uiB64 | UINT64_C( 0x0000800000000000 );
|
uiNonsigB64 = uiB64 | UINT64_C( 0x0000800000000000 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
if ( isNaNF128UI( uiB64, uiB0 ) ) goto returnB;
|
if ( isNaNF128UI( uiB64, uiB0 ) ) goto returnB;
|
||||||
goto returnA;
|
goto returnA;
|
||||||
} else {
|
} else {
|
||||||
if ( isNaNF128UI( uiA64, uiA0 ) ) goto returnA;
|
if ( isNaNF128UI( uiA64, uiA0 ) ) goto returnA;
|
||||||
goto returnB;
|
goto returnB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA64 = uiA64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
uiMagA64 = uiA64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
||||||
uiMagB64 = uiB64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
uiMagB64 = uiB64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
||||||
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
if ( uiMagA64 < uiMagB64 ) goto returnB;
|
||||||
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
if ( uiMagB64 < uiMagA64 ) goto returnA;
|
||||||
if ( uiA0 < uiB0 ) goto returnB;
|
if ( uiA0 < uiB0 ) goto returnB;
|
||||||
if ( uiB0 < uiA0 ) goto returnA;
|
if ( uiB0 < uiA0 ) goto returnA;
|
||||||
if ( uiNonsigA64 < uiNonsigB64 ) goto returnA;
|
if ( uiNonsigA64 < uiNonsigB64 ) goto returnA;
|
||||||
returnB:
|
returnB:
|
||||||
uiZ.v64 = uiNonsigB64;
|
uiZ.v64 = uiNonsigB64;
|
||||||
uiZ.v0 = uiB0;
|
uiZ.v0 = uiB0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
returnA:
|
returnA:
|
||||||
uiZ.v64 = uiNonsigA64;
|
uiZ.v64 = uiNonsigA64;
|
||||||
uiZ.v0 = uiA0;
|
uiZ.v0 = uiA0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,84 +1,84 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t
|
uint_fast16_t
|
||||||
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
|
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast16_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
uint_fast16_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNF16UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF16UI( uiA );
|
||||||
isSigNaNB = softfloat_isSigNaNF16UI( uiB );
|
isSigNaNB = softfloat_isSigNaNF16UI( uiB );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA = uiA | 0x0200;
|
uiNonsigA = uiA | 0x0200;
|
||||||
uiNonsigB = uiB | 0x0200;
|
uiNonsigB = uiB | 0x0200;
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
return isNaNF16UI( uiB ) ? uiNonsigB : uiNonsigA;
|
return isNaNF16UI( uiB ) ? uiNonsigB : uiNonsigA;
|
||||||
} else {
|
} else {
|
||||||
return isNaNF16UI( uiA ) ? uiNonsigA : uiNonsigB;
|
return isNaNF16UI( uiA ) ? uiNonsigA : uiNonsigB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA = uiA & 0x7FFF;
|
uiMagA = uiA & 0x7FFF;
|
||||||
uiMagB = uiB & 0x7FFF;
|
uiMagB = uiB & 0x7FFF;
|
||||||
if ( uiMagA < uiMagB ) return uiNonsigB;
|
if ( uiMagA < uiMagB ) return uiNonsigB;
|
||||||
if ( uiMagB < uiMagA ) return uiNonsigA;
|
if ( uiMagB < uiMagA ) return uiNonsigA;
|
||||||
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,84 +1,84 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast32_t
|
uint_fast32_t
|
||||||
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
|
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast32_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
uint_fast32_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNF32UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF32UI( uiA );
|
||||||
isSigNaNB = softfloat_isSigNaNF32UI( uiB );
|
isSigNaNB = softfloat_isSigNaNF32UI( uiB );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA = uiA | 0x00400000;
|
uiNonsigA = uiA | 0x00400000;
|
||||||
uiNonsigB = uiB | 0x00400000;
|
uiNonsigB = uiB | 0x00400000;
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
return isNaNF32UI( uiB ) ? uiNonsigB : uiNonsigA;
|
return isNaNF32UI( uiB ) ? uiNonsigB : uiNonsigA;
|
||||||
} else {
|
} else {
|
||||||
return isNaNF32UI( uiA ) ? uiNonsigA : uiNonsigB;
|
return isNaNF32UI( uiA ) ? uiNonsigA : uiNonsigB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA = uiA & 0x7FFFFFFF;
|
uiMagA = uiA & 0x7FFFFFFF;
|
||||||
uiMagB = uiB & 0x7FFFFFFF;
|
uiMagB = uiB & 0x7FFFFFFF;
|
||||||
if ( uiMagA < uiMagB ) return uiNonsigB;
|
if ( uiMagA < uiMagB ) return uiNonsigB;
|
||||||
if ( uiMagB < uiMagA ) return uiNonsigA;
|
if ( uiMagB < uiMagA ) return uiNonsigA;
|
||||||
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,84 +1,84 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast64_t
|
uint_fast64_t
|
||||||
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
|
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
|
||||||
{
|
{
|
||||||
bool isSigNaNA, isSigNaNB;
|
bool isSigNaNA, isSigNaNB;
|
||||||
uint_fast64_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
uint_fast64_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
|
||||||
|
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
isSigNaNA = softfloat_isSigNaNF64UI( uiA );
|
isSigNaNA = softfloat_isSigNaNF64UI( uiA );
|
||||||
isSigNaNB = softfloat_isSigNaNF64UI( uiB );
|
isSigNaNB = softfloat_isSigNaNF64UI( uiB );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
| Make NaNs non-signaling.
|
| Make NaNs non-signaling.
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
uiNonsigA = uiA | UINT64_C( 0x0008000000000000 );
|
uiNonsigA = uiA | UINT64_C( 0x0008000000000000 );
|
||||||
uiNonsigB = uiB | UINT64_C( 0x0008000000000000 );
|
uiNonsigB = uiB | UINT64_C( 0x0008000000000000 );
|
||||||
/*------------------------------------------------------------------------
|
/*------------------------------------------------------------------------
|
||||||
*------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------*/
|
||||||
if ( isSigNaNA | isSigNaNB ) {
|
if ( isSigNaNA | isSigNaNB ) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
if ( isSigNaNA ) {
|
if ( isSigNaNA ) {
|
||||||
if ( isSigNaNB ) goto returnLargerMag;
|
if ( isSigNaNB ) goto returnLargerMag;
|
||||||
return isNaNF64UI( uiB ) ? uiNonsigB : uiNonsigA;
|
return isNaNF64UI( uiB ) ? uiNonsigB : uiNonsigA;
|
||||||
} else {
|
} else {
|
||||||
return isNaNF64UI( uiA ) ? uiNonsigA : uiNonsigB;
|
return isNaNF64UI( uiA ) ? uiNonsigA : uiNonsigB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
returnLargerMag:
|
returnLargerMag:
|
||||||
uiMagA = uiA & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
uiMagA = uiA & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
||||||
uiMagB = uiB & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
uiMagB = uiB & UINT64_C( 0x7FFFFFFFFFFFFFFF );
|
||||||
if ( uiMagA < uiMagB ) return uiNonsigB;
|
if ( uiMagA < uiMagB ) return uiNonsigB;
|
||||||
if ( uiMagB < uiMagA ) return uiNonsigA;
|
if ( uiMagB < uiMagA ) return uiNonsigA;
|
||||||
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Raises the exceptions specified by `flags'. Floating-point traps can be
|
| Raises the exceptions specified by `flags'. Floating-point traps can be
|
||||||
| defined here if desired. It is currently not possible for such a trap
|
| defined here if desired. It is currently not possible for such a trap
|
||||||
| to substitute a result value. If traps are not implemented, this routine
|
| to substitute a result value. If traps are not implemented, this routine
|
||||||
| should be simply `softfloat_exceptionFlags |= flags;'.
|
| should be simply `softfloat_exceptionFlags |= flags;'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_raiseFlags( uint_fast8_t flags )
|
void softfloat_raiseFlags( uint_fast8_t flags )
|
||||||
{
|
{
|
||||||
|
|
||||||
softfloat_exceptionFlags |= flags;
|
softfloat_exceptionFlags |= flags;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,346 +1,376 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
|
||||||
University of California. All rights reserved.
|
University of California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#ifndef specialize_h
|
#ifndef specialize_h
|
||||||
#define specialize_h 1
|
#define specialize_h 1
|
||||||
|
|
||||||
#include "primitiveTypes.h"
|
#include <stdbool.h>
|
||||||
#include "softfloat.h"
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include "primitiveTypes.h"
|
||||||
#include <stdint.h>
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Default value for 'softfloat_detectTininess'.
|
| Default value for 'softfloat_detectTininess'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define init_detectTininess softfloat_tininess_afterRounding
|
#define init_detectTininess softfloat_tininess_afterRounding
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The values to return on conversions to 32-bit integer formats that raise an
|
| The values to return on conversions to 32-bit integer formats that raise an
|
||||||
| invalid exception.
|
| invalid exception.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define ui32_fromPosOverflow 0xFFFFFFFF
|
#define ui32_fromPosOverflow 0xFFFFFFFF
|
||||||
#define ui32_fromNegOverflow 0xFFFFFFFF
|
#define ui32_fromNegOverflow 0xFFFFFFFF
|
||||||
#define ui32_fromNaN 0xFFFFFFFF
|
#define ui32_fromNaN 0xFFFFFFFF
|
||||||
#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
|
#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
|
||||||
#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
|
#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
|
||||||
#define i32_fromNaN (-0x7FFFFFFF - 1)
|
#define i32_fromNaN (-0x7FFFFFFF - 1)
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The values to return on conversions to 64-bit integer formats that raise an
|
| The values to return on conversions to 64-bit integer formats that raise an
|
||||||
| invalid exception.
|
| invalid exception.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define ui64_fromPosOverflow UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define ui64_fromNegOverflow UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define ui64_fromNaN UINT64_C(0xFFFFFFFFFFFFFFFF)
|
#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
|
||||||
#define i64_fromPosOverflow (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
#define i64_fromNegOverflow (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
#define i64_fromNaN (-INT64_C(0x7FFFFFFFFFFFFFFF) - 1)
|
#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| "Common NaN" structure, used to transfer NaN representations from one format
|
| "Common NaN" structure, used to transfer NaN representations from one format
|
||||||
| to another.
|
| to another.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct commonNaN {
|
struct commonNaN {
|
||||||
bool sign;
|
bool sign;
|
||||||
#ifdef LITTLEENDIAN
|
#ifdef LITTLEENDIAN
|
||||||
uint64_t v0, v64;
|
uint64_t v0, v64;
|
||||||
#else
|
#else
|
||||||
uint64_t v64, v0;
|
uint64_t v64, v0;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| The bit pattern for a default generated 16-bit floating-point NaN.
|
| The bit pattern for a default generated 16-bit floating-point NaN.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define defaultNaNF16UI 0xFE00
|
#define defaultNaNF16UI 0xFE00
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
|
| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
| 16-bit floating-point signaling NaN.
|
| 16-bit floating-point signaling NaN.
|
||||||
| Note: This macro evaluates its argument more than once.
|
| Note: This macro evaluates its argument more than once.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define softfloat_isSigNaNF16UI(uiA) ((((uiA)&0x7E00) == 0x7C00) && ((uiA)&0x01FF))
|
#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
| exception is raised.
|
| exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void softfloat_f16UIToCommonNaN(uint_fast16_t uiA, struct commonNaN* zPtr);
|
void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
|
| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_commonNaNToF16UI(const struct commonNaN* aPtr);
|
uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
| signaling NaN, the invalid exception is raised.
|
| signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
uint_fast16_t softfloat_propagateNaNF16UI(uint_fast16_t uiA, uint_fast16_t uiB);
|
uint_fast16_t
|
||||||
|
softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| The bit pattern for a default generated 32-bit floating-point NaN.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| The bit pattern for a default generated 32-bit floating-point NaN.
|
||||||
#define defaultNaNF32UI 0xFFC00000
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define defaultNaNF32UI 0xFFC00000
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
|
/*----------------------------------------------------------------------------
|
||||||
| 32-bit floating-point signaling NaN.
|
| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
| Note: This macro evaluates its argument more than once.
|
| 32-bit floating-point signaling NaN.
|
||||||
*----------------------------------------------------------------------------*/
|
| Note: This macro evaluates its argument more than once.
|
||||||
#define softfloat_isSigNaNF32UI(uiA) ((((uiA)&0x7FC00000) == 0x7F800000) && ((uiA)&0x003FFFFF))
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
/*----------------------------------------------------------------------------
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| exception is raised.
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
*----------------------------------------------------------------------------*/
|
| exception is raised.
|
||||||
void softfloat_f32UIToCommonNaN(uint_fast32_t uiA, struct commonNaN* zPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
|
/*----------------------------------------------------------------------------
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
|
||||||
*----------------------------------------------------------------------------*/
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
uint_fast32_t softfloat_commonNaNToF32UI(const struct commonNaN* aPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
/*----------------------------------------------------------------------------
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| signaling NaN, the invalid exception is raised.
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
*----------------------------------------------------------------------------*/
|
| signaling NaN, the invalid exception is raised.
|
||||||
uint_fast32_t softfloat_propagateNaNF32UI(uint_fast32_t uiA, uint_fast32_t uiB);
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast32_t
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
|
||||||
| The bit pattern for a default generated 64-bit floating-point NaN.
|
|
||||||
*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------
|
||||||
#define defaultNaNF64UI UINT64_C(0xFFF8000000000000)
|
| The bit pattern for a default generated 64-bit floating-point NaN.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
|
||||||
| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
|
|
||||||
| 64-bit floating-point signaling NaN.
|
/*----------------------------------------------------------------------------
|
||||||
| Note: This macro evaluates its argument more than once.
|
| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
|
||||||
*----------------------------------------------------------------------------*/
|
| 64-bit floating-point signaling NaN.
|
||||||
#define softfloat_isSigNaNF64UI(uiA) \
|
| Note: This macro evaluates its argument more than once.
|
||||||
((((uiA)&UINT64_C(0x7FF8000000000000)) == UINT64_C(0x7FF0000000000000)) && ((uiA)&UINT64_C(0x0007FFFFFFFFFFFF)))
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
/*----------------------------------------------------------------------------
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| exception is raised.
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
*----------------------------------------------------------------------------*/
|
| exception is raised.
|
||||||
void softfloat_f64UIToCommonNaN(uint_fast64_t uiA, struct commonNaN* zPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
|
/*----------------------------------------------------------------------------
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
|
||||||
*----------------------------------------------------------------------------*/
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
uint_fast64_t softfloat_commonNaNToF64UI(const struct commonNaN* aPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
/*----------------------------------------------------------------------------
|
||||||
| point values, at least one of which is a NaN, returns the bit pattern of
|
| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
|
||||||
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
| point values, at least one of which is a NaN, returns the bit pattern of
|
||||||
| signaling NaN, the invalid exception is raised.
|
| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
|
||||||
*----------------------------------------------------------------------------*/
|
| signaling NaN, the invalid exception is raised.
|
||||||
uint_fast64_t softfloat_propagateNaNF64UI(uint_fast64_t uiA, uint_fast64_t uiB);
|
*----------------------------------------------------------------------------*/
|
||||||
|
uint_fast64_t
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
|
||||||
| The bit pattern for a default generated 80-bit extended floating-point NaN.
|
|
||||||
*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------
|
||||||
#define defaultNaNExtF80UI64 0xFFFF
|
| The bit pattern for a default generated 80-bit extended floating-point NaN.
|
||||||
#define defaultNaNExtF80UI0 UINT64_C(0xC000000000000000)
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define defaultNaNExtF80UI64 0xFFFF
|
||||||
/*----------------------------------------------------------------------------
|
#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
|
||||||
| Returns true when the 80-bit unsigned integer formed from concatenating
|
|
||||||
| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
|
/*----------------------------------------------------------------------------
|
||||||
| floating-point signaling NaN.
|
| Returns true when the 80-bit unsigned integer formed from concatenating
|
||||||
| Note: This macro evaluates its arguments more than once.
|
| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
|
||||||
*----------------------------------------------------------------------------*/
|
| floating-point signaling NaN.
|
||||||
#define softfloat_isSigNaNExtF80UI(uiA64, uiA0) \
|
| Note: This macro evaluates its arguments more than once.
|
||||||
((((uiA64)&0x7FFF) == 0x7FFF) && !((uiA0)&UINT64_C(0x4000000000000000)) && ((uiA0)&UINT64_C(0x3FFFFFFFFFFFFFFF)))
|
*----------------------------------------------------------------------------*/
|
||||||
|
#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
|
||||||
#ifdef SOFTFLOAT_FAST_INT64
|
|
||||||
|
#ifdef SOFTFLOAT_FAST_INT64
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
|
/*----------------------------------------------------------------------------
|
||||||
| defined.
|
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
|
||||||
*----------------------------------------------------------------------------*/
|
| defined.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
/*----------------------------------------------------------------------------
|
||||||
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
||||||
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
| has the bit pattern of an 80-bit extended floating-point NaN, converts
|
||||||
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
| this NaN to the common NaN form, and stores the resulting common NaN at the
|
||||||
| exception is raised.
|
| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
|
||||||
*----------------------------------------------------------------------------*/
|
| exception is raised.
|
||||||
void softfloat_extF80UIToCommonNaN(uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN* zPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_extF80UIToCommonNaN(
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
|
||||||
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
|
||||||
| integer.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
struct uint128 softfloat_commonNaNToExtF80UI(const struct commonNaN* aPtr);
|
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
||||||
|
| integer.
|
||||||
/*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------*/
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
|
||||||
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
|
||||||
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
/*----------------------------------------------------------------------------
|
||||||
| 80-bit extended floating-point value, and assuming at least on of these
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
||||||
| result. If either original floating-point value is a signaling NaN, the
|
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| invalid exception is raised.
|
| 80-bit extended floating-point value, and assuming at least on of these
|
||||||
*----------------------------------------------------------------------------*/
|
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
||||||
struct uint128 softfloat_propagateNaNExtF80UI(uint_fast16_t uiA64, uint_fast64_t uiA0, uint_fast16_t uiB64, uint_fast64_t uiB0);
|
| result. If either original floating-point value is a signaling NaN, the
|
||||||
|
| invalid exception is raised.
|
||||||
/*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------*/
|
||||||
| The bit pattern for a default generated 128-bit floating-point NaN.
|
struct uint128
|
||||||
*----------------------------------------------------------------------------*/
|
softfloat_propagateNaNExtF80UI(
|
||||||
#define defaultNaNF128UI64 UINT64_C(0xFFFF800000000000)
|
uint_fast16_t uiA64,
|
||||||
#define defaultNaNF128UI0 UINT64_C(0)
|
uint_fast64_t uiA0,
|
||||||
|
uint_fast16_t uiB64,
|
||||||
/*----------------------------------------------------------------------------
|
uint_fast64_t uiB0
|
||||||
| Returns true when the 128-bit unsigned integer formed from concatenating
|
);
|
||||||
| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
|
|
||||||
| point signaling NaN.
|
/*----------------------------------------------------------------------------
|
||||||
| Note: This macro evaluates its arguments more than once.
|
| The bit pattern for a default generated 128-bit floating-point NaN.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
#define softfloat_isSigNaNF128UI(uiA64, uiA0) \
|
#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
|
||||||
((((uiA64)&UINT64_C(0x7FFF800000000000)) == UINT64_C(0x7FFF000000000000)) && ((uiA0) || ((uiA64)&UINT64_C(0x00007FFFFFFFFFFF))))
|
#define defaultNaNF128UI0 UINT64_C( 0 )
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
| Returns true when the 128-bit unsigned integer formed from concatenating
|
||||||
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
|
||||||
| the common NaN form, and stores the resulting common NaN at the location
|
| point signaling NaN.
|
||||||
| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
|
| Note: This macro evaluates its arguments more than once.
|
||||||
| is raised.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
|
||||||
void softfloat_f128UIToCommonNaN(uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN* zPtr);
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
/*----------------------------------------------------------------------------
|
| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| the common NaN form, and stores the resulting common NaN at the location
|
||||||
*----------------------------------------------------------------------------*/
|
| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
|
||||||
struct uint128 softfloat_commonNaNToF128UI(const struct commonNaN*);
|
| is raised.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
void
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
softfloat_f128UIToCommonNaN(
|
||||||
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
|
||||||
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
|
||||||
| 128-bit floating-point value, and assuming at least on of these floating-
|
/*----------------------------------------------------------------------------
|
||||||
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
| If either original floating-point value is a signaling NaN, the invalid
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
| exception is raised.
|
*----------------------------------------------------------------------------*/
|
||||||
*----------------------------------------------------------------------------*/
|
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
|
||||||
struct uint128 softfloat_propagateNaNF128UI(uint_fast64_t uiA64, uint_fast64_t uiA0, uint_fast64_t uiB64, uint_fast64_t uiB0);
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
#else
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
|
| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
|
||||||
/*----------------------------------------------------------------------------
|
| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
|
| 128-bit floating-point value, and assuming at least on of these floating-
|
||||||
| defined.
|
| point values is a NaN, returns the bit pattern of the combined NaN result.
|
||||||
*----------------------------------------------------------------------------*/
|
| If either original floating-point value is a signaling NaN, the invalid
|
||||||
|
| exception is raised.
|
||||||
/*----------------------------------------------------------------------------
|
*----------------------------------------------------------------------------*/
|
||||||
| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
|
struct uint128
|
||||||
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
softfloat_propagateNaNF128UI(
|
||||||
| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
|
uint_fast64_t uiA64,
|
||||||
| NaN, the invalid exception is raised.
|
uint_fast64_t uiA0,
|
||||||
*----------------------------------------------------------------------------*/
|
uint_fast64_t uiB64,
|
||||||
void softfloat_extF80MToCommonNaN(const struct extFloat80M* aSPtr, struct commonNaN* zPtr);
|
uint_fast64_t uiB0
|
||||||
|
);
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
#else
|
||||||
| floating-point NaN, and stores this NaN at the location pointed to by
|
|
||||||
| 'zSPtr'.
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
|
||||||
void softfloat_commonNaNToExtF80M(const struct commonNaN* aPtr, struct extFloat80M* zSPtr);
|
| defined.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
| Assuming at least one of the two 80-bit extended floating-point values
|
/*----------------------------------------------------------------------------
|
||||||
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
|
||||||
| at the location pointed to by 'zSPtr'. If either original floating-point
|
| a NaN, converts this NaN to the common NaN form, and stores the resulting
|
||||||
| value is a signaling NaN, the invalid exception is raised.
|
| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
|
||||||
*----------------------------------------------------------------------------*/
|
| NaN, the invalid exception is raised.
|
||||||
void softfloat_propagateNaNExtF80M(const struct extFloat80M* aSPtr, const struct extFloat80M* bSPtr, struct extFloat80M* zSPtr);
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
/*----------------------------------------------------------------------------
|
softfloat_extF80MToCommonNaN(
|
||||||
| The bit pattern for a default generated 128-bit floating-point NaN.
|
const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
|
||||||
*----------------------------------------------------------------------------*/
|
|
||||||
#define defaultNaNF128UI96 0xFFFF8000
|
/*----------------------------------------------------------------------------
|
||||||
#define defaultNaNF128UI64 0
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
#define defaultNaNF128UI32 0
|
| floating-point NaN, and stores this NaN at the location pointed to by
|
||||||
#define defaultNaNF128UI0 0
|
| 'zSPtr'.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
void
|
||||||
| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
|
softfloat_commonNaNToExtF80M(
|
||||||
| converts this NaN to the common NaN form, and stores the resulting common
|
const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
|
||||||
| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
|
|
||||||
| the invalid exception is raised. Argument 'aWPtr' points to an array of
|
/*----------------------------------------------------------------------------
|
||||||
| four 32-bit elements that concatenate in the platform's normal endian order
|
| Assuming at least one of the two 80-bit extended floating-point values
|
||||||
| to form a 128-bit floating-point value.
|
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
||||||
*----------------------------------------------------------------------------*/
|
| at the location pointed to by 'zSPtr'. If either original floating-point
|
||||||
void softfloat_f128MToCommonNaN(const uint32_t* aWPtr, struct commonNaN* zPtr);
|
| value is a signaling NaN, the invalid exception is raised.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
/*----------------------------------------------------------------------------
|
void
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
softfloat_propagateNaNExtF80M(
|
||||||
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
const struct extFloat80M *aSPtr,
|
||||||
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
const struct extFloat80M *bSPtr,
|
||||||
| platform's normal endian order to form a 128-bit floating-point value.
|
struct extFloat80M *zSPtr
|
||||||
*----------------------------------------------------------------------------*/
|
);
|
||||||
void softfloat_commonNaNToF128M(const struct commonNaN* aPtr, uint32_t* zWPtr);
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
/*----------------------------------------------------------------------------
|
| The bit pattern for a default generated 128-bit floating-point NaN.
|
||||||
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
*----------------------------------------------------------------------------*/
|
||||||
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
#define defaultNaNF128UI96 0xFFFF8000
|
||||||
| pointed to by 'zWPtr'. If either original floating-point value is a
|
#define defaultNaNF128UI64 0
|
||||||
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
#define defaultNaNF128UI32 0
|
||||||
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
#define defaultNaNF128UI0 0
|
||||||
| the platform's normal endian order to form a 128-bit floating-point value.
|
|
||||||
*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------
|
||||||
void softfloat_propagateNaNF128M(const uint32_t* aWPtr, const uint32_t* bWPtr, uint32_t* zWPtr);
|
| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
|
||||||
|
| converts this NaN to the common NaN form, and stores the resulting common
|
||||||
#endif
|
| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
|
||||||
|
| the invalid exception is raised. Argument 'aWPtr' points to an array of
|
||||||
#endif
|
| four 32-bit elements that concatenate in the platform's normal endian order
|
||||||
|
| to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
|
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
||||||
|
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
||||||
|
| platform's normal endian order to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
||||||
|
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
||||||
|
| pointed to by 'zWPtr'. If either original floating-point value is a
|
||||||
|
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
||||||
|
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
||||||
|
| the platform's normal endian order to form a 128-bit floating-point value.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
softfloat_propagateNaNF128M(
|
||||||
|
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
|
||||||
{
|
{
|
||||||
const struct extFloat80M *aSPtr;
|
const struct extFloat80M *aSPtr;
|
||||||
uint64_t uiA0;
|
uint64_t uiA0;
|
||||||
|
|
||||||
aSPtr = (const struct extFloat80M *) aPtr;
|
aSPtr = (const struct extFloat80M *) aPtr;
|
||||||
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
|
||||||
uiA0 = aSPtr->signif;
|
uiA0 = aSPtr->signif;
|
||||||
return
|
return
|
||||||
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
! (uiA0 & UINT64_C( 0x4000000000000000 ))
|
||||||
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
&& (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,60 +1,60 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitives.h"
|
#include "primitives.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
bool f128M_isSignalingNaN( const float128_t *aPtr )
|
||||||
{
|
{
|
||||||
const uint32_t *aWPtr;
|
const uint32_t *aWPtr;
|
||||||
uint32_t uiA96;
|
uint32_t uiA96;
|
||||||
|
|
||||||
aWPtr = (const uint32_t *) aPtr;
|
aWPtr = (const uint32_t *) aPtr;
|
||||||
uiA96 = aWPtr[indexWordHi( 4 )];
|
uiA96 = aWPtr[indexWordHi( 4 )];
|
||||||
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
|
||||||
return
|
return
|
||||||
((uiA96 & 0x00007FFF) != 0)
|
((uiA96 & 0x00007FFF) != 0)
|
||||||
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
|| ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
|
||||||
| aWPtr[indexWord( 4, 0 )])
|
| aWPtr[indexWord( 4, 0 )])
|
||||||
!= 0);
|
!= 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "softfloat_types.h"
|
#include "softfloat_types.h"
|
||||||
|
|
||||||
#define softfloat_commonNaNToExtF80M softfloat_commonNaNToExtF80M
|
#define softfloat_commonNaNToExtF80M softfloat_commonNaNToExtF80M
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and stores this NaN at the location pointed to by
|
| floating-point NaN, and stores this NaN at the location pointed to by
|
||||||
| 'zSPtr'.
|
| 'zSPtr'.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToExtF80M(
|
softfloat_commonNaNToExtF80M(
|
||||||
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
zSPtr->signExp = defaultNaNExtF80UI64;
|
zSPtr->signExp = defaultNaNExtF80UI64;
|
||||||
zSPtr->signif = defaultNaNExtF80UI0;
|
zSPtr->signif = defaultNaNExtF80UI0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
|
|
||||||
#define softfloat_commonNaNToExtF80UI softfloat_commonNaNToExtF80UI
|
#define softfloat_commonNaNToExtF80UI softfloat_commonNaNToExtF80UI
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
|
||||||
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
| floating-point NaN, and returns the bit pattern of this value as an unsigned
|
||||||
| integer.
|
| integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ.v64 = defaultNaNExtF80UI64;
|
uiZ.v64 = defaultNaNExtF80UI64;
|
||||||
uiZ.v0 = defaultNaNExtF80UI0;
|
uiZ.v0 = defaultNaNExtF80UI0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,60 +1,60 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
|
|
||||||
#define softfloat_commonNaNToF128M softfloat_commonNaNToF128M
|
#define softfloat_commonNaNToF128M softfloat_commonNaNToF128M
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
|
||||||
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
|
||||||
| platform's normal endian order to form a 128-bit floating-point value.
|
| platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
|
zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
|
||||||
zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
|
zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
|
||||||
zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
|
zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
|
||||||
zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
|
zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,56 +1,56 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
|
|
||||||
#define softfloat_commonNaNToF128UI softfloat_commonNaNToF128UI
|
#define softfloat_commonNaNToF128UI softfloat_commonNaNToF128UI
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
|
||||||
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
| NaN, and returns the bit pattern of this value as an unsigned integer.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
uiZ.v64 = defaultNaNF128UI64;
|
uiZ.v64 = defaultNaNF128UI64;
|
||||||
uiZ.v0 = defaultNaNF128UI0;
|
uiZ.v0 = defaultNaNF128UI0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| This file intentionally contains no code.
|
| This file intentionally contains no code.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -1,74 +1,74 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 80-bit extended floating-point values
|
| Assuming at least one of the two 80-bit extended floating-point values
|
||||||
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
|
||||||
| at the location pointed to by 'zSPtr'. If either original floating-point
|
| at the location pointed to by 'zSPtr'. If either original floating-point
|
||||||
| value is a signaling NaN, the invalid exception is raised.
|
| value is a signaling NaN, the invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNExtF80M(
|
softfloat_propagateNaNExtF80M(
|
||||||
const struct extFloat80M *aSPtr,
|
const struct extFloat80M *aSPtr,
|
||||||
const struct extFloat80M *bSPtr,
|
const struct extFloat80M *bSPtr,
|
||||||
struct extFloat80M *zSPtr
|
struct extFloat80M *zSPtr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
uint_fast16_t ui64;
|
uint_fast16_t ui64;
|
||||||
uint_fast64_t ui0;
|
uint_fast64_t ui0;
|
||||||
|
|
||||||
ui64 = aSPtr->signExp;
|
ui64 = aSPtr->signExp;
|
||||||
ui0 = aSPtr->signif;
|
ui0 = aSPtr->signif;
|
||||||
if (
|
if (
|
||||||
softfloat_isSigNaNExtF80UI( ui64, ui0 )
|
softfloat_isSigNaNExtF80UI( ui64, ui0 )
|
||||||
|| (bSPtr
|
|| (bSPtr
|
||||||
&& (ui64 = bSPtr->signExp,
|
&& (ui64 = bSPtr->signExp,
|
||||||
ui0 = bSPtr->signif,
|
ui0 = bSPtr->signif,
|
||||||
softfloat_isSigNaNExtF80UI( ui64, ui0 )))
|
softfloat_isSigNaNExtF80UI( ui64, ui0 )))
|
||||||
) {
|
) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zSPtr->signExp = defaultNaNExtF80UI64;
|
zSPtr->signExp = defaultNaNExtF80UI64;
|
||||||
zSPtr->signif = defaultNaNExtF80UI0;
|
zSPtr->signif = defaultNaNExtF80UI0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,73 +1,73 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
| Interpreting the unsigned integer formed from concatenating 'uiA64' and
|
||||||
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
|
||||||
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
|
||||||
| 80-bit extended floating-point value, and assuming at least on of these
|
| 80-bit extended floating-point value, and assuming at least on of these
|
||||||
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
| floating-point values is a NaN, returns the bit pattern of the combined NaN
|
||||||
| result. If either original floating-point value is a signaling NaN, the
|
| result. If either original floating-point value is a signaling NaN, the
|
||||||
| invalid exception is raised.
|
| invalid exception is raised.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
struct uint128
|
struct uint128
|
||||||
softfloat_propagateNaNExtF80UI(
|
softfloat_propagateNaNExtF80UI(
|
||||||
uint_fast16_t uiA64,
|
uint_fast16_t uiA64,
|
||||||
uint_fast64_t uiA0,
|
uint_fast64_t uiA0,
|
||||||
uint_fast16_t uiB64,
|
uint_fast16_t uiB64,
|
||||||
uint_fast64_t uiB0
|
uint_fast64_t uiB0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
struct uint128 uiZ;
|
struct uint128 uiZ;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
|
softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
|
||||||
|| softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
|
|| softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
|
||||||
) {
|
) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
uiZ.v64 = defaultNaNExtF80UI64;
|
uiZ.v64 = defaultNaNExtF80UI64;
|
||||||
uiZ.v0 = defaultNaNExtF80UI0;
|
uiZ.v0 = defaultNaNExtF80UI0;
|
||||||
return uiZ;
|
return uiZ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,68 +1,68 @@
|
|||||||
|
|
||||||
/*============================================================================
|
/*============================================================================
|
||||||
|
|
||||||
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
|
||||||
Package, Release 3e, by John R. Hauser.
|
Package, Release 3e, by John R. Hauser.
|
||||||
|
|
||||||
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
|
||||||
California. All rights reserved.
|
California. All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
1. Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer.
|
this list of conditions, and the following disclaimer.
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions, and the following disclaimer in the documentation
|
this list of conditions, and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
3. Neither the name of the University nor the names of its contributors may
|
3. Neither the name of the University nor the names of its contributors may
|
||||||
be used to endorse or promote products derived from this software without
|
be used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
|
||||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
=============================================================================*/
|
=============================================================================*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "primitiveTypes.h"
|
#include "primitiveTypes.h"
|
||||||
#include "specialize.h"
|
#include "specialize.h"
|
||||||
#include "softfloat.h"
|
#include "softfloat.h"
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
| Assuming at least one of the two 128-bit floating-point values pointed to by
|
||||||
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
|
||||||
| pointed to by 'zWPtr'. If either original floating-point value is a
|
| pointed to by 'zWPtr'. If either original floating-point value is a
|
||||||
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
|
||||||
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
|
||||||
| the platform's normal endian order to form a 128-bit floating-point value.
|
| the platform's normal endian order to form a 128-bit floating-point value.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
softfloat_propagateNaNF128M(
|
softfloat_propagateNaNF128M(
|
||||||
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
|
||||||
{
|
{
|
||||||
|
|
||||||
if (
|
if (
|
||||||
f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
f128M_isSignalingNaN( (const float128_t *) aWPtr );
|
||||||
|| (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
|
|| (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
|
||||||
) {
|
) {
|
||||||
softfloat_raiseFlags( softfloat_flag_invalid );
|
softfloat_raiseFlags( softfloat_flag_invalid );
|
||||||
}
|
}
|
||||||
zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
|
zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
|
||||||
zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
|
zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
|
||||||
zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
|
zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
|
||||||
zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
|
zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user