ucb-bar / berkeley-softfloat-3 Goto Github PK
View Code? Open in Web Editor NEWSoftFloat release 3
Home Page: http://www.jhauser.us/arithmetic/SoftFloat.html
License: Other
SoftFloat release 3
Home Page: http://www.jhauser.us/arithmetic/SoftFloat.html
License: Other
<arm_neon.h>
is defined by a spec that ARM releases, and implemented by compilers. It is not a "real" header file. This happen with either included first.
[2/244] Building CXX object CMakeFiles/zig.dir/src/tokenizer.cpp.o
FAILED: CMakeFiles/zig.dir/src/tokenizer.cpp.o
/usr/bin/c++ -I../deps/lld/include -I/usr/lib/llvm-8/include -I../deps/SoftFloat-3e/source/include -I../ -I. -I../src -I../deps/SoftFloat-3e-prebuilt -I../deps/SoftFloat-3e/source/8086 -g -std=c++11 -Werror -Wall -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fno-exceptions -fno-rtti -Werror=strict-prototypes -Werror=old-style-definition -Werror=type-limits -Wno-missing-braces -MD -MT CMakeFiles/zig.dir/src/tokenizer.cpp.o -MF CMakeFiles/zig.dir/src/tokenizer.cpp.o.d -o CMakeFiles/zig.dir/src/tokenizer.cpp.o -c ../src/tokenizer.cpp
In file included from ../src/utf8/range2-neon.c:10,
from ../src/utf8/utf8.h:4,
from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:72:16: error: conflicting declaration ‘typedef __fp16 float16_t’
typedef __fp16 float16_t;
^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
from ../src/softfloat.hpp:12,
from ../src/util.hpp:36,
from ../src/list.hpp:11,
from ../src/buffer.hpp:11,
from ../src/tokenizer.hpp:11,
from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:50:32: note: previous declaration as ‘typedef struct float16_t float16_t’
typedef struct { uint16_t v; } float16_t;
^~~~~~~~~
In file included from ../src/utf8/range2-neon.c:10,
from ../src/utf8/utf8.h:4,
from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:73:15: error: conflicting declaration ‘typedef float float32_t’
typedef float float32_t;
^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
from ../src/softfloat.hpp:12,
from ../src/util.hpp:36,
from ../src/list.hpp:11,
from ../src/buffer.hpp:11,
from ../src/tokenizer.hpp:11,
from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:51:32: note: previous declaration as ‘typedef struct float32_t float32_t’
typedef struct { uint32_t v; } float32_t;
^~~~~~~~~
In file included from ../src/utf8/range2-neon.c:10,
from ../src/utf8/utf8.h:4,
from ../src/tokenizer.cpp:11:
/usr/lib/gcc/aarch64-linux-gnu/8/include/arm_neon.h:74:16: error: conflicting declaration ‘typedef double float64_t’
typedef double float64_t;
^~~~~~~~~
In file included from ../deps/SoftFloat-3e/source/include/softfloat.h:51,
from ../src/softfloat.hpp:12,
from ../src/util.hpp:36,
from ../src/list.hpp:11,
from ../src/buffer.hpp:11,
from ../src/tokenizer.hpp:11,
from ../src/tokenizer.cpp:8:
../deps/SoftFloat-3e/source/include/softfloat_types.h:52:32: note: previous declaration as ‘typedef struct float64_t float64_t’
typedef struct { uint64_t v; } float64_t;
^~~~~~~~~
Perhaps softfloat does not work with <arm_neon.h>
, in which case a preprocessor #error
should give a more helpful error.
Please add support for building with the Clang compiler. Thanks!
Arm v8.6 and RISC-V extensions Zfbfmin, Zvfbfmin, and Zvfbfwma add support for bfloat16 instructions. Modeling the bfloat16 type would be beneficial in emulating these extensions.
Spike seems to use a slighty modified version of softfloat 3d with some additions that are not present in this 3e version.
Would it be possible to sync them up again?
In particular I'm personally missing in this 3e release:
f32_rsqrte7
f64_rsqrte7
f32_recip7
f64_recip7
I'm happy to create a pull request for this but I first wanted to make sure I didn't overlook something...
E.g. there is a valid reason the versions are incompatible currently.
Or the functions I'm looking for exist but under a different name.
The QEMU project makes extensive use of SoftFloat to model floating point instructions. The source in QEMU's tree is based on SoftFloat2a due to later incompatibilities in the licensing. It has also seen a number of additions over time including specialisation for the various architectures we emulate. Perhaps the biggest one being augmenting the API to pass *float_status to the various operations. This needed to be done as the CPUs we emulate often have different FPU contexts so the floating point flags shouldn't interfere with each other.
As time has moved on and more recent processor revisions require additional features from later revisions of IEE754 we are faced with a dilemma of how to move forward. We can either keep adding features to our copy of 2a or instead port our code to use 3c and it track its future development. However given our extensive changes this doesn't make sense if our internal copy is going to have to be significantly modified and diverge again from the upstream. So this leads to a couple of questions:
Dear developer,
I ported the berkeley-softfloat-3 library which is built from berkeley-softfloat-3/build/Linux-ARM-VFPv2-GCC/Makefile.
I found that there may be a mistake when I using the function, f64_mulAdd(op2, op1, addend), and give the operand as following
The arithmatic result is different between berkeley-softfloat-3 and pseudo code from ARM spec:
Please help me to confirm whether berkeley-softfloat-3 library is wrong at here or something missing in my thinking.
The following contents are my investigation:
Many thanks.
I could hardly figure out how does f32_div and f32_sqrt work,
especially the two magic functions "softfloat_approxRecip32_1" and "softfloat_apprroxxRecipSqrt32_1"
If there is any paper or website help me learn more details?
Hi,
s_roundPackToF32.c, line 96 implement rounding to odd as following:
96 if ( roundingMode == softfloat_round_odd ) {
97 sig |= 1;
Does this means rod always or the fraction part bit0 to 1'b1?
The correct behavior of rod suppose to be frac round up only:
Kou
Please consider fixing the following compiler warnings from GCC and Clang. Most of these can probably be fixed by adding explicit type casts. It would add credibility to the project if these warnings were fixed.
GCC 4.9.3 with -Wall -Wextra -Wpedantic -Wno-padded -Wno-missing-prototypes
:
../../source/s_mulAddF32.c: In function 'softfloat_mulAddF32':
../../source/s_mulAddF32.c:186:2: warning: label 'invalid' defined but not used [-Wunused-label]
invalid:
^
../../source/s_mulAddF64.c: In function 'softfloat_mulAddF64':
../../source/s_mulAddF64.c:223:2: warning: label 'invalid' defined but not used [-Wunused-label]
invalid:
^
../../source/s_mulAddF128.c: In function 'softfloat_mulAddF128':
../../source/s_mulAddF128.c:329:2: warning: label 'invalid' defined but not used [-Wunused-label]
invalid:
^
../../source/softfloat_state.c:44:60: warning: ISO C does not allow extra ';' outside of a function [-Wpedantic]
uint_fast8_t softfloat_detectTininess = init_detectTininess;
../../source/f64_to_i64_r_minMag.c: In function 'f64_to_i64_r_minMag':
../../source/f64_to_i64_r_minMag.c:80:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if ( exact && (absZ<<shiftCount != sig) ) {
^
../../source/extF80_rem.c: In function 'extF80_rem':
../../source/extF80_rem.c:55:10: warning: variable 'signB' set but not used [-Wunused-but-set-variable]
bool signB;
^
../../source/f128_to_i64_r_minMag.c: In function 'f128_to_i64_r_minMag':
../../source/f128_to_i64_r_minMag.c:94:50: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if ( exact && (sig0 || (absZ<<shiftCount != sig64)) ) {
^
../../source/f128_rem.c: In function 'f128_rem':
../../source/f128_rem.c:53:10: warning: variable 'signB' set but not used [-Wunused-but-set-variable]
bool signB;
^
Clang 3.7.0 with -Wall -Wextra -Weverything -Wpedantic -Wno-padded -Wno-missing-prototypes
:
../../source/s_shortShiftRightJam128.c:50:16: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
negCount = -count;
~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam128.c:50:20: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
negCount = -count;
~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam128Extra.c:50:16: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
negCount = -count;
~ ^~~~~~
1 warning generated.
../../source/s_shiftRightJam256M.c:85:28: warning: cast from 'const unsigned long *' to 'unsigned long *' drops const qualifier [-Wcast-qual]
ptr = (uint64_t *) (aPtr + indexMultiwordLo( 4, wordCount ));
^
../../source/s_shiftRightJam256M.c:86:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
i = wordCount;
~ ^~~~~~~~~
../../source/s_shiftRightJam256M.c:99:19: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
4 - wordCount,
~~^~~~~~~~~~~
../../source/s_shiftRightJam256M.c:108:25: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
for ( i = 4 - wordCount; i; --i ) {
~ ~~^~~~~~~~~~~
../../source/s_shiftRightJam256M.c:117:10: warning: variable 'ptr' may be uninitialized when used here [-Wconditional-uninitialized]
*ptr++ = 0;
^~~
../../source/s_shiftRightJam256M.c:78:18: note: initialize the variable 'ptr' to silence this warning
uint64_t *ptr;
^
= 0
5 warnings generated.
../../source/s_countLeadingZeros64.c:54:15: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
a32 = a;
~ ^
1 warning generated.
../../source/s_mul64To128.c:50:10: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
a0 = a;
~ ^
../../source/s_mul64To128.c:52:10: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
b0 = b;
~ ^
2 warnings generated.
../../source/s_approxRecip32_1.c:61:21: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
r0 = k0s[index] - ((k1s[index] * (uint_fast32_t) eps)>>20);
~ ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecip32_1.c:62:14: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
delta0 = ~(uint_fast32_t) ((r0 * (uint_fast64_t) a)>>7);
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecip32_1.c:66:12: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
return r;
~~~~~~ ^
3 warnings generated.
../../source/s_approxRecipSqrt32_1.c:60:27: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion]
index = (a>>27 & 0xE) + oddExpA;
~ ~~~~~~~~~~~~~~^~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:62:21: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
r0 = k0s[index] - ((k1s[index] * (uint_fast32_t) eps)>>20);
~ ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:65:14: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
delta0 = ~(uint_fast32_t) (((uint32_t) ESqrR0 * (uint_fast64_t) a)>>23);
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_approxRecipSqrt32_1.c:72:12: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
return r;
~~~~~~ ^
4 warnings generated.
../../source/s_roundPackToI32.c:67:20: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = sign ? -sig32 : sig32;
~ ^~~~~~
../../source/s_roundPackToI32.c:67:29: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = sign ? -sig32 : sig32;
~ ^~~~~
2 warnings generated.
../../source/s_normSubnormalF32Sig.c:46:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( sig ) - 8;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_normSubnormalF32Sig.c:46:49: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
shiftCount = softfloat_countLeadingZeros32( sig ) - 8;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~
2 warnings generated.
../../source/s_roundPackToF32.c:71:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
sig = softfloat_shiftRightJam32( sig, -exp );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/s_roundPackToF32.c:71:46: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sig = softfloat_shiftRightJam32( sig, -exp );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~
../../source/s_roundPackToF32.c:89:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
3 warnings generated.
../../source/s_normRoundPackToF32.c:48:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( sig ) - 1;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_normRoundPackToF32.c:48:49: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
shiftCount = softfloat_countLeadingZeros32( sig ) - 1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~
../../source/s_normRoundPackToF32.c:51:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = packToF32UI( sign, sig ? exp : 0, sig<<(shiftCount - 7) );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/s_addMagsF32.c:84:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
sigA = softfloat_shiftRightJam32( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_addMagsF32.c:93:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
sigB = softfloat_shiftRightJam32( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_addMagsF32.c:84:47: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sigA = softfloat_shiftRightJam32( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/s_addMagsF32.c:93:47: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sigB = softfloat_shiftRightJam32( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/s_addMagsF32.c:105:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
5 warnings generated.
../../source/s_subMagsF32.c:87:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
sigA = softfloat_shiftRightJam32( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_subMagsF32.c:101:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
sigB = softfloat_shiftRightJam32( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_subMagsF32.c:87:39: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sigA = softfloat_shiftRightJam32( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/s_subMagsF32.c:101:39: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sigB = softfloat_shiftRightJam32( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/s_subMagsF32.c:111:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
5 warnings generated.
../../source/s_mulAddF32.c:82:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB;
^~~~ ~
../../source/s_mulAddF32.c:87:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA;
^~~~ ~
../../source/s_mulAddF32.c:134:66: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigZ = sigC + softfloat_shiftRightJam64( sigProd, 32 - expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~^~~~~~~~~
../../source/s_mulAddF32.c:140:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
(uint_fast64_t) sigC<<32, expDiff );
^~~~~~~
../../source/s_mulAddF32.c:152:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Z = sig64C - softfloat_shiftRightJam64( sigProd, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_mulAddF32.c:163:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Z = sigProd - softfloat_shiftRightJam64( sig64C, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_mulAddF32.c:165:62: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig64Z ) - 1;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_mulAddF32.c:169:60: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sigZ = softfloat_shortShiftRightJam64( sig64Z, -shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/s_mulAddF32.c:194:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expC | sigC) && (signProd != signC) ) {
^~~~ ~
../../source/s_mulAddF32.c:186:2: warning: unused label 'invalid' [-Wunused-label]
invalid:
^~~~~~~~
../../source/s_mulAddF32.c:200:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
11 warnings generated.
../../source/s_normSubnormalF64Sig.c:46:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig ) - 11;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/s_roundPackToF64.c:71:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig = softfloat_shiftRightJam64( sig, -exp );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
1 warning generated.
../../source/s_normRoundPackToF64.c:48:55: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig ) - 1;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
1 warning generated.
../../source/s_addMagsF64.c:86:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigA = softfloat_shiftRightJam64( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_addMagsF64.c:95:53: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigB = softfloat_shiftRightJam64( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
2 warnings generated.
../../source/s_subMagsF64.c:87:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigA = softfloat_shiftRightJam64( sigA, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_subMagsF64.c:101:45: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigB = softfloat_shiftRightJam64( sigB, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
2 warnings generated.
../../source/s_mulAddF64.c:86:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB;
^~~~ ~
../../source/s_mulAddF64.c:91:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA;
^~~~ ~
../../source/s_mulAddF64.c:145:67: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig128Z.v64 = softfloat_shiftRightJam64( sig128Z.v64, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_mulAddF64.c:151:56: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig128C = softfloat_shiftRightJam128( sigC, 0, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_mulAddF64.c:195:67: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig128Z.v64 ) - 1;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../../source/s_mulAddF64.c:198:65: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sigZ = softfloat_shortShiftRightJam64( sig128Z.v64, -shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/s_mulAddF64.c:202:46: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sig128Z.v64, sig128Z.v0, shiftCount );
^~~~~~~~~~
../../source/s_mulAddF64.c:233:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expC | sigC) && (signZ != signC) ) {
^~~~ ~
../../source/s_mulAddF64.c:223:2: warning: unused label 'invalid' [-Wunused-label]
invalid:
^~~~~~~~
9 warnings generated.
../../source/s_normSubnormalExtF80Sig.c:46:18: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
../../source/s_roundPackToExtF80.c:87:53: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig = softfloat_shiftRightJam64( sig, 1 - exp );
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~^~~~~
../../source/s_roundPackToExtF80.c:141:66: warning: implicit conversion changes signedness: 'long' to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
softfloat_shiftRightJam64Extra( sig, sigExtra, 1 - exp );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~^~~~~
../../source/s_roundPackToExtF80.c:209:20: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = packToExtF80UI64( sign, exp );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/include/internals.h:129:67: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../../source/s_roundPackToExtF80.c:209:44: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
uZ.s.signExp = packToExtF80UI64( sign, exp );
~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
4 warnings generated.
../../source/s_normRoundPackToExtF80.c:59:18: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/s_normRoundPackToExtF80.c:62:62: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sig128 = softfloat_shortShiftLeft128( sig, sigExtra, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
2 warnings generated.
../../source/s_addMagsExtF80.c:110:63: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sigA, 0, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_addMagsExtF80.c:126:63: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sigB, 0, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_addMagsExtF80.c:151:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/s_subMagsExtF80.c:110:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig128 = softfloat_shiftRightJam128( sigA, 0, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_subMagsExtF80.c:133:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig128 = softfloat_shiftRightJam128( sigB, 0, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_subMagsExtF80.c:153:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/s_normSubnormalF128Sig.c:48:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig0 ) - 15;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normSubnormalF128Sig.c:58:61: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig64 ) - 15;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normSubnormalF128Sig.c:60:59: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
z.sig = softfloat_shortShiftLeft128( sig64, sig0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
3 warnings generated.
../../source/s_roundPackToF128.c:82:73: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
softfloat_shiftRightJam128Extra( sig64, sig0, sigExtra, -exp );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
1 warning generated.
../../source/s_normRoundPackToF128.c:57:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( sig64 ) - 15;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/s_normRoundPackToF128.c:61:64: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sig128 = softfloat_shortShiftLeft128( sig64, sig0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
../../source/s_normRoundPackToF128.c:74:33: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
sig64, sig0, 0, -shiftCount );
^~~~~~~~~~~
3 warnings generated.
../../source/s_addMagsF128.c:104:68: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
softfloat_shiftRightJam128Extra( sigA.v64, sigA.v0, 0, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_addMagsF128.c:123:68: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
softfloat_shiftRightJam128Extra( sigB.v64, sigB.v0, 0, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
2 warnings generated.
../../source/s_subMagsF128.c:103:59: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigA = softfloat_shiftRightJam128( sigA.v64, sigA.v0, -expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~
../../source/s_subMagsF128.c:124:59: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigB = softfloat_shiftRightJam128( sigB.v64, sigB.v0, expDiff );
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
2 warnings generated.
../../source/s_mulAddF128.c:101:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB.v64 | sigB.v0;
^~~~ ~
../../source/s_mulAddF128.c:106:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA.v64 | sigA.v0;
^~~~ ~
../../source/s_mulAddF128.c:169:44: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigZ.v64, sigZ.v0, shiftCount );
^~~~~~~~~~
../../source/s_mulAddF128.c:195:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
softfloat_shiftRightJam256M( sig256C, expDiff, sig256C );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
../../source/s_mulAddF128.c:298:65: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
softfloat_shortShiftLeft128( sigZ.v64, sigZ.v0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
../../source/s_mulAddF128.c:299:63: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
x128 = softfloat_shortShiftLeft128( 0, sigZExtra, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
../../source/s_mulAddF128.c:309:61: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
sigZ = softfloat_shortShiftRight128( sigZ.v64, sigZ.v0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
../../source/s_mulAddF128.c:341:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expC | sigC.v64 | sigC.v0) && (signZ != signC) ) {
^~~~ ~
../../source/s_mulAddF128.c:329:2: warning: unused label 'invalid' [-Wunused-label]
invalid:
^~~~~~~~
9 warnings generated.
../../source/softfloat_state.c:44:60: warning: extra ';' outside of a function [-Wextra-semi]
uint_fast8_t softfloat_detectTininess = init_detectTininess;
^
1 warning generated.
../../source/ui32_to_f64.c:51:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( a ) + 21;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/ui32_to_extF80.c:50:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( a );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/ui32_to_extF80.c:51:24: warning: implicit conversion changes signedness: 'int' to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
uiZ64 = 0x401E - shiftCount;
~ ~~~~~~~^~~~~~~~~~~~
../../source/ui32_to_extF80.c:54:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/ui32_to_f128.c:50:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( a ) + 17;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
1 warning generated.
../../source/ui64_to_f32.c:48:53: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( a ) - 40;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/ui64_to_f32.c:58:67: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
(shiftCount < 0) ? softfloat_shortShiftRightJam64( a, -shiftCount )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/ui64_to_f32.c:51:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
a ? packToF32UI(
^~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/ui64_to_extF80.c:50:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( a );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/ui64_to_extF80.c:51:24: warning: implicit conversion changes signedness: 'int' to 'uint_fast16_t' (aka 'unsigned long') [-Wsign-conversion]
uiZ64 = 0x403E - shiftCount;
~ ~~~~~~~^~~~~~~~~~~~
../../source/ui64_to_extF80.c:54:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/ui64_to_f128.c:53:57: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( a ) + 49;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/ui64_to_f128.c:58:55: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
zSig = softfloat_shortShiftLeft128( 0, a, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
2 warnings generated.
../../source/i32_to_f64.c:56:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( absA ) + 21;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i32_to_f64.c:56:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
shiftCount = softfloat_countLeadingZeros32( absA ) + 21;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
2 warnings generated.
../../source/i32_to_extF80.c:56:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( absA );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/i32_to_extF80.c:57:48: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
uiZ64 = packToExtF80UI64( sign, 0x401E - shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
../../source/i32_to_extF80.c:60:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
../../source/i32_to_extF80.c:56:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
shiftCount = softfloat_countLeadingZeros32( absA );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
4 warnings generated.
../../source/i32_to_f128.c:54:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros32( absA ) + 17;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i32_to_f128.c:54:53: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
shiftCount = softfloat_countLeadingZeros32( absA ) + 17;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
2 warnings generated.
../../source/i64_to_f32.c:53:56: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( absA ) - 40;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i64_to_f32.c:64:57: warning: implicit conversion changes signedness: 'int' to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
? softfloat_shortShiftRightJam64( absA, -shiftCount )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/i64_to_f32.c:56:17: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
a ? packToF32UI(
^~~~~~~~~~~~
../../source/include/internals.h:88:89: note: expanded from macro 'packToF32UI'
#define packToF32UI( sign, exp, sig ) (((uint32_t) (sign)<<31) + ((uint32_t) (exp)<<23) + (sig))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
3 warnings generated.
../../source/i64_to_f64.c:50:13: warning: implicit conversion changes signedness: 'int64_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (a & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
^ ~
1 warning generated.
../../source/i64_to_extF80.c:56:22: warning: implicit conversion changes signedness: 'uint_fast8_t' (aka 'unsigned char') to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( absA );
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/i64_to_extF80.c:57:48: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
uiZ64 = packToExtF80UI64( sign, 0x403E - shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
../../source/i64_to_extF80.c:60:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/i64_to_f128.c:57:60: warning: implicit conversion changes signedness: 'int' to 'int_fast8_t' (aka 'signed char') [-Wsign-conversion]
shiftCount = softfloat_countLeadingZeros64( absA ) + 49;
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
../../source/i64_to_f128.c:62:58: warning: implicit conversion changes signedness: 'int_fast8_t' (aka 'signed char') to 'uint_fast8_t' (aka 'unsigned char') [-Wsign-conversion]
zSig = softfloat_shortShiftLeft128( 0, absA, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
2 warnings generated.
../../source/f32_to_ui32.c:62:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f32_to_ui64.c:70:64: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sig64, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f32_to_i32.c:63:51: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f32_to_i64.c:76:64: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sig64, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f32_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/f32_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/f32_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/f32_to_i32_r_minMag.c:73:15: warning: implicit conversion changes signedness: 'uint_fast32_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
absZ = sig>>shiftCount;
~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f32_to_i64_r_minMag.c:60:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/f32_to_i64_r_minMag.c:77:17: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig64>>shiftCount;
~ ~~~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f32_to_extF80.c:85:41: warning: implicit conversion changes signedness: 'long' to 'unsigned long' [-Wsign-conversion]
uiZ64 = packToExtF80UI64( sign, exp + 0x3F80 );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
../../source/f32_to_extF80.c:88:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
2 warnings generated.
../../source/f32_roundToInt.c:107:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
1 warning generated.
../../source/f32_mul.c:76:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB;
^~~~ ~
../../source/f32_mul.c:81:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA;
^~~~ ~
../../source/f32_mul.c:119:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
3 warnings generated.
../../source/f32_div.c:100:21: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA) ) goto invalid;
^~~~ ~
../../source/f32_div.c:176:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
2 warnings generated.
../../source/f32_rem.c:100:16: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
rem = sigA | 0x00800000;
~ ~~~~~^~~~~~~~~~~~
../../source/f32_rem.c:164:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
2 warnings generated.
../../source/f32_sqrt.c:77:17: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA) ) return a;
^~~~ ~
../../source/f32_sqrt.c:94:64: warning: implicit conversion loses integer precision: 'int_fast16_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
((uint_fast64_t) sigA * softfloat_approxRecipSqrt32_1( expA, sigA ))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/f32_sqrt.c:94:70: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
((uint_fast64_t) sigA * softfloat_approxRecipSqrt32_1( expA, sigA ))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/f32_sqrt.c:102:30: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
negRem = shiftedSigZ * shiftedSigZ;
~ ~~~~~~~~~~~~^~~~~~~~~~~~~
../../source/f32_sqrt.c:117:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
5 warnings generated.
../../source/f64_to_ui32.c:59:65: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
if ( 0 < shiftCount ) sig = softfloat_shiftRightJam64( sig, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f64_to_ui64.c:73:60: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigExtra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f64_to_i32.c:60:65: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
if ( 0 < shiftCount ) sig = softfloat_shiftRightJam64( sig, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f64_to_i64.c:78:60: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigExtra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f64_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/f64_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/f64_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/f64_to_i32_r_minMag.c:79:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
absZ = sig>>shiftCount;
~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f64_to_i64_r_minMag.c:70:19: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig<<-shiftCount;
~ ~~~^~~~~~~~~~~~~
../../source/f64_to_i64_r_minMag.c:73:28: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/f64_to_i64_r_minMag.c:79:19: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig>>shiftCount;
~ ~~~^~~~~~~~~~~~
../../source/f64_to_i64_r_minMag.c:80:41: warning: comparison of integers of different signs: 'int_fast64_t' (aka 'long') and 'uint_fast64_t' (aka 'unsigned long') [-Wsign-compare]
if ( exact && (absZ<<shiftCount != sig) ) {
~~~~~~~~~~~~~~~~ ^ ~~~
4 warnings generated.
../../source/f64_to_f32.c:70:13: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (exp | sig32) ) {
^~~ ~
../../source/f64_to_f32.c:76:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
2 warnings generated.
../../source/f64_to_extF80.c:85:41: warning: implicit conversion changes signedness: 'long' to 'unsigned long' [-Wsign-conversion]
uiZ64 = packToExtF80UI64( sign, exp + 0x3C00 );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
../../source/f64_to_extF80.c:88:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
2 warnings generated.
../../source/f64_mul.c:85:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB;
^~~~ ~
../../source/f64_mul.c:90:19: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA;
^~~~ ~
2 warnings generated.
../../source/f64_div.c:97:21: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA) ) goto invalid;
^~~~ ~
../../source/f64_div.c:134:14: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
q &= ~7;
~~ ^~
2 warnings generated.
../../source/f64_sqrt.c:79:17: warning: implicit conversion changes signedness: 'int_fast16_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA) ) return a;
^~~~ ~
../../source/f64_sqrt.c:98:18: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
sig32A = sigA>>21;
~ ~~~~^~~~
../../source/f64_sqrt.c:99:50: warning: implicit conversion loses integer precision: 'int_fast16_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
3 warnings generated.
../../source/extF80_to_ui32.c:60:43: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig = softfloat_shiftRightJam64( sig, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_ui64.c:65:62: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_i32.c:61:43: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig = softfloat_shiftRightJam64( sig, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_i64.c:72:62: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/extF80_to_ui32_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/extF80_to_ui64_r_minMag.c:58:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/extF80_to_i32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/extF80_to_i32_r_minMag.c:84:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
absZ = sig>>shiftCount;
~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/extF80_to_i64_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig) ) {
^~~ ~
../../source/extF80_to_i64_r_minMag.c:80:15: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig>>shiftCount;
~ ~~~^~~~~~~~~~~~
2 warnings generated.
../../source/extF80_to_f32.c:72:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (exp | sig32) ) {
^~~ ~
../../source/extF80_to_f32.c:82:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
2 warnings generated.
../../source/extF80_to_f64.c:62:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (exp | sig) ) {
^~~ ~
1 warning generated.
../../source/extF80_roundToInt.c:91:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
uiZ64 = signUI64 | exp;
~ ^~~
../../source/extF80_roundToInt.c:119:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
uiZ64 = signUI64 | exp;
~ ^~~
../../source/extF80_roundToInt.c:142:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/extF80_mul.c:91:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB;
^~~~ ~
../../source/extF80_mul.c:96:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA;
^~~~ ~
../../source/extF80_mul.c:153:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
3 warnings generated.
../../source/extF80_div.c:198:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
../../source/extF80_div.c:141:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( sigB, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
../../source/extF80_div.c:153:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( sigB, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
3 warnings generated.
../../source/extF80_rem.c:163:69: warning: implicit conversion loses integer precision: 'long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~^~~~
../../source/extF80_rem.c:219:38: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
uiZ64 = packToExtF80UI64( signA, expA );
~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../source/include/internals.h:129:70: note: expanded from macro 'packToExtF80UI64'
#define packToExtF80UI64( sign, exp ) ((uint_fast16_t) (sign)<<15 | (exp))
^
../../source/extF80_rem.c:222:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
../../source/extF80_rem.c:150:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( sigB, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
../../source/extF80_rem.c:164:55: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( sigB, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
5 warnings generated.
../../source/extF80_sqrt.c:163:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
../../source/extF80_sqrt.c:107:50: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/extF80_sqrt.c:107:56: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~
../../source/extF80_sqrt.c:121:50: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( x64, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
../../source/extF80_sqrt.c:135:64: warning: implicit conversion loses integer precision: 'uint_fast64_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( x64 + (q>>27), q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
5 warnings generated.
../../source/f128_to_ui32.c:64:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f128_to_ui64.c:68:64: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
sig128 = softfloat_shortShiftLeft128( sig64, sig0, -shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/f128_to_ui64.c:76:65: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigExtra = softfloat_shiftRightJam64Extra( sig64, sig0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
2 warnings generated.
../../source/f128_to_i32.c:64:51: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sig64 = softfloat_shiftRightJam64( sig64, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
1 warning generated.
../../source/f128_to_i64.c:72:64: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
sig128 = softfloat_shortShiftLeft128( sig64, sig0, -shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
../../source/f128_to_i64.c:78:65: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'uint_fast32_t' (aka 'unsigned long') [-Wsign-conversion]
sigExtra = softfloat_shiftRightJam64Extra( sig64, sig0, shiftCount );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~
2 warnings generated.
../../source/f128_to_ui32_r_minMag.c:59:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig64) ) {
^~~ ~
1 warning generated.
../../source/f128_to_ui64_r_minMag.c:70:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig64 | sig0) ) {
^~~ ~
1 warning generated.
../../source/f128_to_i32_r_minMag.c:60:24: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig64) ) {
^~~ ~
../../source/f128_to_i32_r_minMag.c:81:17: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast32_t' (aka 'long') [-Wsign-conversion]
absZ = sig64>>shiftCount;
~ ~~~~~^~~~~~~~~~~~
2 warnings generated.
../../source/f128_to_i64_r_minMag.c:81:37: warning: implicit conversion changes signedness: 'unsigned long' to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig64<<negShiftCount | sig0>>(shiftCount & 63);
~ ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../../source/f128_to_i64_r_minMag.c:87:28: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( exact && (exp | sig64 | sig0) ) {
^~~ ~
../../source/f128_to_i64_r_minMag.c:93:21: warning: implicit conversion changes signedness: 'uint_fast64_t' (aka 'unsigned long') to 'int_fast64_t' (aka 'long') [-Wsign-conversion]
absZ = sig64>>shiftCount;
~ ~~~~~^~~~~~~~~~~~
../../source/f128_to_i64_r_minMag.c:94:50: warning: comparison of integers of different signs: 'int_fast64_t' (aka 'long') and 'uint_fast64_t' (aka 'unsigned long') [-Wsign-compare]
if ( exact && (sig0 || (absZ<<shiftCount != sig64)) ) {
~~~~~~~~~~~~~~~~ ^ ~~~~~
4 warnings generated.
../../source/f128_to_f32.c:71:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (exp | sig32) ) {
^~~ ~
../../source/f128_to_f32.c:81:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
uZ.ui = uiZ;
~ ^~~
2 warnings generated.
../../source/f128_to_extF80.c:94:20: warning: implicit conversion loses integer precision: 'uint_fast16_t' (aka 'unsigned long') to 'uint16_t' (aka 'unsigned short') [-Wconversion]
uZ.s.signExp = uiZ64;
~ ^~~~~
1 warning generated.
../../source/f128_to_f64.c:74:13: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (exp | sig64) ) {
^~~ ~
1 warning generated.
../../source/f128_roundToInt.c:88:36: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
uiZ.v64 &= ~1;
~~ ^~
1 warning generated.
../../source/f128_mul.c:92:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expB | sigB.v64 | sigB.v0;
^~~~ ~
../../source/f128_mul.c:97:19: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
magBits = expA | sigA.v64 | sigA.v0;
^~~~ ~
2 warnings generated.
../../source/f128_div.c:105:21: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA.v64 | sigA.v0) ) goto invalid;
^~~~ ~
../../source/f128_div.c:137:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
~~~~~~~~~~~~~~~~~~~~ ^
../../source/f128_div.c:149:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
~~~~~~~~~~~~~~~~~~~~ ^
3 warnings generated.
../../source/f128_rem.c:147:69: warning: implicit conversion loses integer precision: 'long' to 'uint_fast8_t' (aka 'unsigned char') [-Wconversion]
rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~^~~~
../../source/f128_rem.c:136:61: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
~~~~~~~~~~~~~~~~~~~~ ^
../../source/f128_rem.c:148:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul128By32( sigB.v64, sigB.v0, q );
~~~~~~~~~~~~~~~~~~~~ ^
3 warnings generated.
../../source/f128_sqrt.c:85:17: warning: implicit conversion changes signedness: 'int_fast32_t' (aka 'long') to 'unsigned long' [-Wsign-conversion]
if ( ! (expA | sigA.v64 | sigA.v0) ) return a;
^~~~ ~
../../source/f128_sqrt.c:155:14: warning: implicit conversion changes signedness: 'int' to 'unsigned long' [-Wsign-conversion]
q &= ~3;
~~ ^~
../../source/f128_sqrt.c:177:33: warning: implicit conversion changes signedness: 'int' to 'uint_fast64_t' (aka 'unsigned long') [-Wsign-conversion]
sigZExtra = ~0;
~ ^~
../../source/f128_sqrt.c:105:50: warning: implicit conversion loses integer precision: 'int_fast32_t' (aka 'long') to 'unsigned int' [-Wshorten-64-to-32]
recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~
../../source/f128_sqrt.c:105:56: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~
../../source/f128_sqrt.c:113:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
qs[2] = sig32Z;
~ ^~~~~~
../../source/f128_sqrt.c:118:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
qs[1] = q;
~ ^
../../source/f128_sqrt.c:123:50: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( x64, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
../../source/f128_sqrt.c:136:57: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul128By32( term.v64, term.v0, q );
~~~~~~~~~~~~~~~~~~~~ ^
../../source/f128_sqrt.c:141:13: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
qs[0] = q;
~ ^
../../source/f128_sqrt.c:160:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
y = softfloat_mul64ByShifted32To128( term.v0, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
../../source/f128_sqrt.c:161:59: warning: implicit conversion loses integer precision: 'uint_fast32_t' (aka 'unsigned long') to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
term = softfloat_mul64ByShifted32To128( term.v64, q );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
12 warnings generated.
I wrote Rust bindings to softfloat (https://crates.io/crates/softfloat-sys), however I ran into linking problems since a lot of internal functions are declared inline but there is no out-of-line version of them. As a workaround, I had to make -O1 the minimum optimization level.
Note that I am not using softfloat's makefiles, I instead wrote the build.rs build script based on them.
for softfloat-3e
Errors found in f32_mul, rounding near_even:
+01.000000 +7E.7FFFFF => +01.000000 ....x expected +01.000000 ...ux
+01.000000 -7E.7FFFFF => -01.000000 ....x expected -01.000000 ...ux
this case is tricky: the product is a normal number after rounding.
in the function
https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/source/s_roundPackToF32.c
the changed part will not affect the choice of tininessbefore
but cause flags different in tininessafter
I ported the berkeley-softfloat-3 library to run in the NetBSD kernel.
The only difference is that we need to include different headers than the userspace ones.
I intend to merge this into the NetBSD distribution, but would you accept the patch to make berkeley-softloat-3 buildable in such environment out of the box upstream?
Another approach would be to rely on GCC/Clang defines and redefine all the *int*
types from the builtin types, such as __INT_FAST64_TYPE__
. It would make berkeley-softfloat-3 fully standalone.
I prefer to avoid downstream patches if possible.
The same syntax error in RISCV specialization in fixed in b64af41
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.