* [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang
@ 2024-06-26 11:26 Akihiko Odaki
2024-06-26 11:26 ` [PATCH 1/6] tests/tcg/arm: Fix fcvt result messages Akihiko Odaki
` (6 more replies)
0 siblings, 7 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
Unlike GCC, clang checks if the operands in assembly matches with the
type in C. It also does not support "x" constraint for AArch64 and
complains about them.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
Akihiko Odaki (6):
tests/tcg/arm: Fix fcvt result messages
tests/tcg/aarch64: Fix test architecture specification
tests/tcg/aarch64: Explicitly specify register width
tests/tcg/aarch64: Fix irg operand type
tests/tcg/aarch64: Do not use x constraint
tests/tcg/arm: Manually bit-cast half-precision numbers
tests/tcg/aarch64/bti-1.c | 6 +-
tests/tcg/aarch64/bti-3.c | 6 +-
tests/tcg/aarch64/mte-1.c | 2 +-
tests/tcg/aarch64/sme-smopa-2.c | 2 +-
tests/tcg/arm/fcvt.c | 20 +-
tests/tcg/aarch64/Makefile.target | 12 +-
tests/tcg/aarch64/fcvt.ref | 604 +++++++++++++++++++-------------------
7 files changed, 331 insertions(+), 321 deletions(-)
---
base-commit: 74abb45dac6979e7ff76172b7f0a24e869405184
change-id: 20240624-tcg-bf8116e80afa
Best regards,
--
Akihiko Odaki <akihiko.odaki@daynix.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/6] tests/tcg/arm: Fix fcvt result messages
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 11:26 ` [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification Akihiko Odaki
` (5 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
The test cases for "converting double-precision to single-precision"
emits float but the result variable was typed as uint32_t and corrupted
the printed values. Propertly type it as float.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Fixes: 8ec8a55e3fc9 ("tests/tcg/arm: add fcvt test cases for AArch32/64")
---
tests/tcg/arm/fcvt.c | 2 +-
tests/tcg/aarch64/fcvt.ref | 604 ++++++++++++++++++++++-----------------------
2 files changed, 303 insertions(+), 303 deletions(-)
diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index 7ac47b564e24..05a27b2d0710 100644
--- a/tests/tcg/arm/fcvt.c
+++ b/tests/tcg/arm/fcvt.c
@@ -258,7 +258,7 @@ static void convert_double_to_single(void)
for (i = 0; i < ARRAY_SIZE(double_numbers); ++i) {
double input = double_numbers[i].d;
- uint32_t output;
+ float output;
feclearexcept(FE_ALL_EXCEPT);
diff --git a/tests/tcg/aarch64/fcvt.ref b/tests/tcg/aarch64/fcvt.ref
index e7af24dc58a8..2726b41063f4 100644
--- a/tests/tcg/aarch64/fcvt.ref
+++ b/tests/tcg/aarch64/fcvt.ref
@@ -211,45 +211,45 @@ Converting double-precision to half-precision
40 HALF: 0x7f00 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570815e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -inf / 0xff800000 (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11100004769645909791e+31 / 0xf30c3a59 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999085e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11100003258488635273e+30 / 0xf1605d5b (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750797e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750797e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750797e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750797e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013061e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026624000000000000e+08 / 0x4e4e0000 (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005935e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994299e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015673e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013665e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851006e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -257,41 +257,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509080e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675456000000000000e+09 / 0x4e805bf1 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311600e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07853004800000000000e+09 / 0x4e809220 (0x10 => INEXACT )
+26 SINGLE: 3.14159274101257324219e+00 / 0x40490fdb (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32540006400000000000e+09 / 0x4e9e0000 (0x10 => INEXACT )
+33 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570815e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x14 => OVERFLOW INEXACT )
+36 SINGLE: inf / 0x7f800000 (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -nan / 0xffffe000 (0 => OK)
@@ -574,87 +574,87 @@ Converting double-precision to half-precision
40 HALF: 0x7f00 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570814e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766502400000000000e+09 / 0x4f730c3b (0x10 => INEXACT )
+06 SINGLE: -1.11099992680387713644e+31 / 0xf30c3a58 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999084e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962457600000000000e+09 / 0x4f71605e (0x10 => INEXACT )
+07 SINGLE: -1.11099995702702262681e+30 / 0xf1605d5a (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750796e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750796e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750797e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750797e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013061e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638080000000000000e+08 / 0x4e4c0001 (0x10 => INEXACT )
+14 SINGLE: 2.98023259404089913006e-08 / 0x33000001 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015662e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026624000000000000e+08 / 0x4e4e0000 (0x10 => INEXACT )
+15 SINGLE: 5.96046021428264793940e-08 / 0x337ffff4 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994299e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896384000000000000e+08 / 0x4e61ff01 (0x10 => INEXACT )
+16 SINGLE: 6.09756025369279086590e-05 / 0x387fc00e (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013665e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912768000000000000e+08 / 0x4e620001 (0x10 => INEXACT )
+17 SINGLE: 6.10352071817032992840e-05 / 0x38800007 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138310e-308 / 0x000010000000000000 (0 => OK)
-20 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+20 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282844e-308 / 0x000009ea82a2287680 (0 => OK)
-21 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+21 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
22 DOUBLE: 1.49147387366816238764e-308 / 0x00000ab98fba843210 (0 => OK)
-22 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+22 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509080e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675456000000000000e+09 / 0x4e805bf1 (0x10 => INEXACT )
+25 SINGLE: 2.71828198432922363282e+00 / 0x402df855 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311600e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07853004800000000000e+09 / 0x4e809220 (0x10 => INEXACT )
+26 SINGLE: 3.14159274101257324219e+00 / 0x40490fdb (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32540006400000000000e+09 / 0x4e9e0000 (0x10 => INEXACT )
+33 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570815e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x14 => OVERFLOW INEXACT )
+36 SINGLE: inf / 0x7f800000 (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -nan / 0xffffe000 (0 => OK)
@@ -937,45 +937,45 @@ Converting double-precision to half-precision
40 HALF: 0x7f00 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570815e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -inf / 0xff800000 (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007530e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11100004769645909791e+31 / 0xf30c3a59 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999085e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11100003258488635273e+30 / 0xf1605d5b (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138310e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -1.40129846432481707093e-45 / 0x80000001 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750797e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750797e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750796e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750796e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013060e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026560000000000000e+08 / 0x4e4dffff (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005934e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994298e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015672e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013664e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851005e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -983,41 +983,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509079e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675443200000000000e+09 / 0x4e805bf0 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311599e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07852992000000000000e+09 / 0x4e80921f (0x10 => INEXACT )
+26 SINGLE: 3.14159250259399414062e+00 / 0x40490fda (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32539993600000000000e+09 / 0x4e9dffff (0x10 => INEXACT )
+33 SINGLE: 2.14748352000000000000e+09 / 0x4effffff (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570814e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x14 => OVERFLOW INEXACT )
+36 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -nan / 0xffffe000 (0 => OK)
@@ -1300,45 +1300,45 @@ Converting double-precision to half-precision
40 HALF: 0x7f00 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570814e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11099992680387713644e+31 / 0xf30c3a58 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999084e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11099995702702262681e+30 / 0xf1605d5a (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750796e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750796e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750796e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750796e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013060e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026560000000000000e+08 / 0x4e4dffff (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005934e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994298e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015672e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013664e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851005e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -1346,41 +1346,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509079e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675443200000000000e+09 / 0x4e805bf0 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311599e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07852992000000000000e+09 / 0x4e80921f (0x10 => INEXACT )
+26 SINGLE: 3.14159250259399414062e+00 / 0x40490fda (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32539993600000000000e+09 / 0x4e9dffff (0x10 => INEXACT )
+33 SINGLE: 2.14748352000000000000e+09 / 0x4effffff (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570814e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x14 => OVERFLOW INEXACT )
+36 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -nan / 0xffffe000 (0 => OK)
@@ -1845,45 +1845,45 @@ Converting double-precision to half-precision
40 HALF: 0000 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570815e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -inf / 0xff800000 (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11100004769645909791e+31 / 0xf30c3a59 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999085e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11100003258488635273e+30 / 0xf1605d5b (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750797e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750797e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750797e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750797e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013061e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026624000000000000e+08 / 0x4e4e0000 (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005935e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994299e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015673e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013665e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851006e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -1891,41 +1891,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509080e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675456000000000000e+09 / 0x4e805bf1 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311600e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07853004800000000000e+09 / 0x4e809220 (0x10 => INEXACT )
+26 SINGLE: 3.14159274101257324219e+00 / 0x40490fdb (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32540006400000000000e+09 / 0x4e9e0000 (0x10 => INEXACT )
+33 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570815e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x14 => OVERFLOW INEXACT )
+36 SINGLE: inf / 0x7f800000 (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -1.31008000000000000000e+05 / 0xc7ffe000 (0 => OK)
@@ -2208,87 +2208,87 @@ Converting double-precision to half-precision
40 HALF: 0000 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570814e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766502400000000000e+09 / 0x4f730c3b (0x10 => INEXACT )
+06 SINGLE: -1.11099992680387713644e+31 / 0xf30c3a58 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999084e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962457600000000000e+09 / 0x4f71605e (0x10 => INEXACT )
+07 SINGLE: -1.11099995702702262681e+30 / 0xf1605d5a (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750796e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750796e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750797e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750797e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013061e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638080000000000000e+08 / 0x4e4c0001 (0x10 => INEXACT )
+14 SINGLE: 2.98023259404089913006e-08 / 0x33000001 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015662e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026624000000000000e+08 / 0x4e4e0000 (0x10 => INEXACT )
+15 SINGLE: 5.96046021428264793940e-08 / 0x337ffff4 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994299e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896384000000000000e+08 / 0x4e61ff01 (0x10 => INEXACT )
+16 SINGLE: 6.09756025369279086590e-05 / 0x387fc00e (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013665e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912768000000000000e+08 / 0x4e620001 (0x10 => INEXACT )
+17 SINGLE: 6.10352071817032992840e-05 / 0x38800007 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138310e-308 / 0x000010000000000000 (0 => OK)
-20 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+20 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282844e-308 / 0x000009ea82a2287680 (0 => OK)
-21 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+21 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
22 DOUBLE: 1.49147387366816238764e-308 / 0x00000ab98fba843210 (0 => OK)
-22 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0x18 => UNDERFLOW INEXACT )
+22 SINGLE: 1.40129846432481707093e-45 / 0x00000001 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509080e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675456000000000000e+09 / 0x4e805bf1 (0x10 => INEXACT )
+25 SINGLE: 2.71828198432922363282e+00 / 0x402df855 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311600e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07853004800000000000e+09 / 0x4e809220 (0x10 => INEXACT )
+26 SINGLE: 3.14159274101257324219e+00 / 0x40490fdb (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32540006400000000000e+09 / 0x4e9e0000 (0x10 => INEXACT )
+33 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859812e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859812e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570815e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0x14 => OVERFLOW INEXACT )
+36 SINGLE: inf / 0x7f800000 (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -1.31008000000000000000e+05 / 0xc7ffe000 (0 => OK)
@@ -2571,45 +2571,45 @@ Converting double-precision to half-precision
40 HALF: 0000 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570815e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -inf / 0xff800000 (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859812e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859812e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007530e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11100004769645909791e+31 / 0xf30c3a59 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999085e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11100003258488635273e+30 / 0xf1605d5b (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138310e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -1.40129846432481707093e-45 / 0x80000001 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750797e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750797e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750796e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750796e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013060e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026560000000000000e+08 / 0x4e4dffff (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005934e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994298e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015672e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013664e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851005e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -2617,41 +2617,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509079e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675443200000000000e+09 / 0x4e805bf0 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311599e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07852992000000000000e+09 / 0x4e80921f (0x10 => INEXACT )
+26 SINGLE: 3.14159250259399414062e+00 / 0x40490fda (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32539993600000000000e+09 / 0x4e9dffff (0x10 => INEXACT )
+33 SINGLE: 2.14748352000000000000e+09 / 0x4effffff (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570814e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x14 => OVERFLOW INEXACT )
+36 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -1.31008000000000000000e+05 / 0xc7ffe000 (0 => OK)
@@ -2934,45 +2934,45 @@ Converting double-precision to half-precision
40 HALF: 0000 (0x1 => INVALID)
Converting double-precision to single-precision
00 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-00 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+00 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
01 DOUBLE: -nan / 0x00fff8000000000000 (0 => OK)
-01 SINGLE: 4.29077299200000000000e+09 / 0x4f7fc000 (0 => OK)
+01 SINGLE: -nan / 0xffc00000 (0 => OK)
02 DOUBLE: -inf / 0x00fff0000000000000 (0 => OK)
-02 SINGLE: 4.28657868800000000000e+09 / 0x4f7f8000 (0 => OK)
+02 SINGLE: -inf / 0xff800000 (0 => OK)
03 DOUBLE: -1.79769313486231570814e+308 / 0x00ffefffffffffffff (0 => OK)
-03 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x14 => OVERFLOW INEXACT )
+03 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0x14 => OVERFLOW INEXACT )
04 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-04 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+04 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
05 DOUBLE: -3.40282346638528859811e+38 / 0x00c7efffffe0000000 (0 => OK)
-05 SINGLE: 4.28657843200000000000e+09 / 0x4f7f7fff (0x10 => INEXACT )
+05 SINGLE: -3.40282346638528859811e+38 / 0xff7fffff (0 => OK)
06 DOUBLE: -1.11100000000000007529e+31 / 0x00c661874b135ff654 (0 => OK)
-06 SINGLE: 4.07766476800000000000e+09 / 0x4f730c3a (0x10 => INEXACT )
+06 SINGLE: -1.11099992680387713644e+31 / 0xf30c3a58 (0x10 => INEXACT )
07 DOUBLE: -1.11099999999999999084e+30 / 0x00c62c0bab523323b9 (0 => OK)
-07 SINGLE: 4.04962432000000000000e+09 / 0x4f71605d (0x10 => INEXACT )
+07 SINGLE: -1.11099995702702262681e+30 / 0xf1605d5a (0x10 => INEXACT )
08 DOUBLE: -2.00000000000000000000e+00 / 0x00c000000000000000 (0 => OK)
-08 SINGLE: 3.22122547200000000000e+09 / 0x4f400000 (0 => OK)
+08 SINGLE: -2.00000000000000000000e+00 / 0xc0000000 (0 => OK)
09 DOUBLE: -1.00000000000000000000e+00 / 0x00bff0000000000000 (0 => OK)
-09 SINGLE: 3.21283686400000000000e+09 / 0x4f3f8000 (0 => OK)
+09 SINGLE: -1.00000000000000000000e+00 / 0xbf800000 (0 => OK)
10 DOUBLE: -2.22507385850720138309e-308 / 0x008010000000000000 (0 => OK)
-10 SINGLE: 2.14748364800000000000e+09 / 0x4f000000 (0x18 => UNDERFLOW INEXACT )
+10 SINGLE: -0.00000000000000000000e+00 / 0x80000000 (0x18 => UNDERFLOW INEXACT )
11 DOUBLE: -1.17549435082228750796e-38 / 0x00b810000000000000 (0 => OK)
-11 SINGLE: 2.15587225600000000000e+09 / 0x4f008000 (0 => OK)
+11 SINGLE: -1.17549435082228750796e-38 / 0x80800000 (0 => OK)
12 DOUBLE: 0.00000000000000000000e+00 / 00000000000000000000 (0 => OK)
12 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0 => OK)
13 DOUBLE: 1.17549435082228750796e-38 / 0x003810000000000000 (0 => OK)
-13 SINGLE: 8.38860800000000000000e+06 / 0x4b000000 (0 => OK)
+13 SINGLE: 1.17549435082228750796e-38 / 0x00800000 (0 => OK)
14 DOUBLE: 2.98023224000000013060e-08 / 0x003e600000001c5f68 (0 => OK)
-14 SINGLE: 8.55638016000000000000e+08 / 0x4e4c0000 (0x10 => INEXACT )
+14 SINGLE: 2.98023223876953125000e-08 / 0x33000000 (0x10 => INEXACT )
15 DOUBLE: 5.96046000000000015661e-08 / 0x003e6ffffe6cb2fa82 (0 => OK)
-15 SINGLE: 8.64026560000000000000e+08 / 0x4e4dffff (0x10 => INEXACT )
+15 SINGLE: 5.96045985901128005934e-08 / 0x337ffff3 (0x10 => INEXACT )
16 DOUBLE: 6.09755999999999994298e-05 / 0x003f0ff801a9af58a1 (0 => OK)
-16 SINGLE: 9.47896320000000000000e+08 / 0x4e61ff00 (0x10 => INEXACT )
+16 SINGLE: 6.09755988989491015672e-05 / 0x387fc00d (0x10 => INEXACT )
17 DOUBLE: 6.10352000000000013664e-05 / 0x003f100000c06a1ef5 (0 => OK)
-17 SINGLE: 9.47912704000000000000e+08 / 0x4e620000 (0x10 => INEXACT )
+17 SINGLE: 6.10351999057456851005e-05 / 0x38800006 (0x10 => INEXACT )
18 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-18 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+18 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
19 DOUBLE: 1.00097656250000000000e+00 / 0x003ff0040000000000 (0 => OK)
-19 SINGLE: 1.06536140800000000000e+09 / 0x4e7e0080 (0 => OK)
+19 SINGLE: 1.00097656250000000000e+00 / 0x3f802000 (0 => OK)
20 DOUBLE: 2.22507385850720138309e-308 / 0x000010000000000000 (0 => OK)
20 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
21 DOUBLE: 1.37899728486072282843e-308 / 0x000009ea82a2287680 (0 => OK)
@@ -2980,41 +2980,41 @@ Converting double-precision to single-precision
22 DOUBLE: 1.49147387366816238763e-308 / 0x00000ab98fba843210 (0 => OK)
22 SINGLE: 0.00000000000000000000e+00 / 0000000000 (0x18 => UNDERFLOW INEXACT )
23 DOUBLE: 1.00000000000000000000e+00 / 0x003ff0000000000000 (0 => OK)
-23 SINGLE: 1.06535321600000000000e+09 / 0x4e7e0000 (0 => OK)
+23 SINGLE: 1.00000000000000000000e+00 / 0x3f800000 (0 => OK)
24 DOUBLE: 2.00000000000000000000e+00 / 0x004000000000000000 (0 => OK)
-24 SINGLE: 1.07374182400000000000e+09 / 0x4e800000 (0 => OK)
+24 SINGLE: 2.00000000000000000000e+00 / 0x40000000 (0 => OK)
25 DOUBLE: 2.71828182845904509079e+00 / 0x004005bf0a8b145769 (0 => OK)
-25 SINGLE: 1.07675443200000000000e+09 / 0x4e805bf0 (0x10 => INEXACT )
+25 SINGLE: 2.71828174591064453125e+00 / 0x402df854 (0x10 => INEXACT )
26 DOUBLE: 3.14159265358979311599e+00 / 0x00400921fb54442d18 (0 => OK)
-26 SINGLE: 1.07852992000000000000e+09 / 0x4e80921f (0x10 => INEXACT )
+26 SINGLE: 3.14159250259399414062e+00 / 0x40490fda (0x10 => INEXACT )
27 DOUBLE: 6.55030000000000000000e+04 / 0x0040effbe000000000 (0 => OK)
-27 SINGLE: 1.19956249600000000000e+09 / 0x4e8effbe (0 => OK)
+27 SINGLE: 6.55030000000000000000e+04 / 0x477fdf00 (0 => OK)
28 DOUBLE: 6.55040000000000000000e+04 / 0x0040effc0000000000 (0 => OK)
-28 SINGLE: 1.19956275200000000000e+09 / 0x4e8effc0 (0 => OK)
+28 SINGLE: 6.55040000000000000000e+04 / 0x477fe000 (0 => OK)
29 DOUBLE: 6.55050000000000000000e+04 / 0x0040effc2000000000 (0 => OK)
-29 SINGLE: 1.19956300800000000000e+09 / 0x4e8effc2 (0 => OK)
+29 SINGLE: 6.55050000000000000000e+04 / 0x477fe100 (0 => OK)
30 DOUBLE: 1.31007000000000000000e+05 / 0x0040fffbf000000000 (0 => OK)
-30 SINGLE: 1.20795123200000000000e+09 / 0x4e8fffbf (0 => OK)
+30 SINGLE: 1.31007000000000000000e+05 / 0x47ffdf80 (0 => OK)
31 DOUBLE: 1.31008000000000000000e+05 / 0x0040fffc0000000000 (0 => OK)
-31 SINGLE: 1.20795136000000000000e+09 / 0x4e8fffc0 (0 => OK)
+31 SINGLE: 1.31008000000000000000e+05 / 0x47ffe000 (0 => OK)
32 DOUBLE: 1.31009000000000000000e+05 / 0x0040fffc1000000000 (0 => OK)
-32 SINGLE: 1.20795148800000000000e+09 / 0x4e8fffc1 (0 => OK)
+32 SINGLE: 1.31009000000000000000e+05 / 0x47ffe080 (0 => OK)
33 DOUBLE: 2.14748364700000000000e+09 / 0x0041dfffffffc00000 (0 => OK)
-33 SINGLE: 1.32539993600000000000e+09 / 0x4e9dffff (0x10 => INEXACT )
+33 SINGLE: 2.14748352000000000000e+09 / 0x4effffff (0x10 => INEXACT )
34 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-34 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+34 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
35 DOUBLE: 3.40282346638528859811e+38 / 0x0047efffffe0000000 (0 => OK)
-35 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x10 => INEXACT )
+35 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0 => OK)
36 DOUBLE: 1.79769313486231570814e+308 / 0x007fefffffffffffff (0 => OK)
-36 SINGLE: 2.13909491200000000000e+09 / 0x4efeffff (0x14 => OVERFLOW INEXACT )
+36 SINGLE: 3.40282346638528859811e+38 / 0x7f7fffff (0x14 => OVERFLOW INEXACT )
37 DOUBLE: inf / 0x007ff0000000000000 (0 => OK)
-37 SINGLE: 2.13909504000000000000e+09 / 0x4eff0000 (0 => OK)
+37 SINGLE: inf / 0x7f800000 (0 => OK)
38 DOUBLE: nan / 0x007ff8000000000000 (0 => OK)
-38 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0 => OK)
+38 SINGLE: nan / 0x7fc00000 (0 => OK)
39 DOUBLE: nan / 0x007ff0000000000001 (0 => OK)
-39 SINGLE: 2.14328934400000000000e+09 / 0x4eff8000 (0x1 => INVALID)
+39 SINGLE: nan / 0x7fc00000 (0x1 => INVALID)
40 DOUBLE: nan / 0x007ff4000000000000 (0 => OK)
-40 SINGLE: 2.14538649600000000000e+09 / 0x4effc000 (0x1 => INVALID)
+40 SINGLE: nan / 0x7fe00000 (0x1 => INVALID)
Converting half-precision to single-precision
00 HALF: 0xffff (0 => OK)
00 SINGLE: -1.31008000000000000000e+05 / 0xc7ffe000 (0 => OK)
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
2024-06-26 11:26 ` [PATCH 1/6] tests/tcg/arm: Fix fcvt result messages Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 16:12 ` Alex Bennée
2024-06-26 16:15 ` Alex Bennée
2024-06-26 11:26 ` [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width Akihiko Odaki
` (4 subsequent siblings)
6 siblings, 2 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
sme-smopa-2.c requires sme-i16i64 but the compiler option used not to
specify it. Instead, the extension was specified with the inline
assembly, resulting in mixing assembly code targeting sme-i1664 and C
code that does not target sme-i1664.
clang version 18.1.6 does not support such mixing so properly specify
the extension with the compiler option instead.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
tests/tcg/aarch64/sme-smopa-2.c | 2 +-
tests/tcg/aarch64/Makefile.target | 12 ++++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/tests/tcg/aarch64/sme-smopa-2.c b/tests/tcg/aarch64/sme-smopa-2.c
index c9f48c3bfca2..2c9707065992 100644
--- a/tests/tcg/aarch64/sme-smopa-2.c
+++ b/tests/tcg/aarch64/sme-smopa-2.c
@@ -14,7 +14,7 @@ int main()
long svl;
/* Validate that we have a wide enough vector for 4 elements. */
- asm(".arch armv8-r+sme-i64\n\trdsvl %0, #1" : "=r"(svl));
+ asm("rdsvl %0, #1" : "=r"(svl));
if (svl < 32) {
return 0;
}
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index 70d728ae9af7..f53a1d615c21 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -27,7 +27,8 @@ config-cc.mak: Makefile
$(call cc-option,-march=armv8.5-a, CROSS_CC_HAS_ARMV8_5); \
$(call cc-option,-mbranch-protection=standard, CROSS_CC_HAS_ARMV8_BTI); \
$(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE); \
- $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
+ $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME); \
+ $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme-i16i64, CROSS_AS_HAS_ARMV9_SME_I1664)) 3> config-cc.mak
-include config-cc.mak
ifneq ($(CROSS_CC_HAS_ARMV8_2),)
@@ -68,7 +69,14 @@ endif
# SME Tests
ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
-AARCH64_TESTS += sme-outprod1 sme-smopa-1 sme-smopa-2
+AARCH64_TESTS += sme-outprod1 sme-smopa-1
+sme-%: CFLAGS += -march=armv9-a+sme
+endif
+
+# SME I16I64 Tests
+ifneq ($(CROSS_AS_HAS_ARMV9_SME_I1664),)
+AARCH64_TESTS += sme-smopa-2
+sme-smopa-2: CFLAGS += -march=armv9-a+sme-i16i64+sme
endif
# System Registers Tests
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
2024-06-26 11:26 ` [PATCH 1/6] tests/tcg/arm: Fix fcvt result messages Akihiko Odaki
2024-06-26 11:26 ` [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 11:59 ` Philippe Mathieu-Daudé
2024-06-26 11:26 ` [PATCH 4/6] tests/tcg/aarch64: Fix irg operand type Akihiko Odaki
` (3 subsequent siblings)
6 siblings, 1 reply; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
clang version 18.1.6 assumes a register is 64-bit by default and
complains if a 32-bit value is given. Explicitly specify register width
when passing a 32-bit value.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
tests/tcg/aarch64/bti-1.c | 6 +++---
tests/tcg/aarch64/bti-3.c | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/tests/tcg/aarch64/bti-1.c b/tests/tcg/aarch64/bti-1.c
index 99a879af23d4..1fada8108d22 100644
--- a/tests/tcg/aarch64/bti-1.c
+++ b/tests/tcg/aarch64/bti-1.c
@@ -17,15 +17,15 @@ static void skip2_sigill(int sig, siginfo_t *info, ucontext_t *uc)
#define BTI_JC "hint #38"
#define BTYPE_1(DEST) \
- asm("mov %0,#1; adr x16, 1f; br x16; 1: " DEST "; mov %0,#0" \
+ asm("mov %w0,#1; adr x16, 1f; br x16; 1: " DEST "; mov %w0,#0" \
: "=r"(skipped) : : "x16")
#define BTYPE_2(DEST) \
- asm("mov %0,#1; adr x16, 1f; blr x16; 1: " DEST "; mov %0,#0" \
+ asm("mov %w0,#1; adr x16, 1f; blr x16; 1: " DEST "; mov %w0,#0" \
: "=r"(skipped) : : "x16", "x30")
#define BTYPE_3(DEST) \
- asm("mov %0,#1; adr x15, 1f; br x15; 1: " DEST "; mov %0,#0" \
+ asm("mov %w0,#1; adr x15, 1f; br x15; 1: " DEST "; mov %w0,#0" \
: "=r"(skipped) : : "x15")
#define TEST(WHICH, DEST, EXPECT) \
diff --git a/tests/tcg/aarch64/bti-3.c b/tests/tcg/aarch64/bti-3.c
index 8c534c09d784..6a3bd037bcd6 100644
--- a/tests/tcg/aarch64/bti-3.c
+++ b/tests/tcg/aarch64/bti-3.c
@@ -11,15 +11,15 @@ static void skip2_sigill(int sig, siginfo_t *info, ucontext_t *uc)
}
#define BTYPE_1() \
- asm("mov %0,#1; adr x16, 1f; br x16; 1: hint #25; mov %0,#0" \
+ asm("mov %w0,#1; adr x16, 1f; br x16; 1: hint #25; mov %w0,#0" \
: "=r"(skipped) : : "x16", "x30")
#define BTYPE_2() \
- asm("mov %0,#1; adr x16, 1f; blr x16; 1: hint #25; mov %0,#0" \
+ asm("mov %w0,#1; adr x16, 1f; blr x16; 1: hint #25; mov %w0,#0" \
: "=r"(skipped) : : "x16", "x30")
#define BTYPE_3() \
- asm("mov %0,#1; adr x15, 1f; br x15; 1: hint #25; mov %0,#0" \
+ asm("mov %w0,#1; adr x15, 1f; br x15; 1: hint #25; mov %w0,#0" \
: "=r"(skipped) : : "x15", "x30")
#define TEST(WHICH, EXPECT) \
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 4/6] tests/tcg/aarch64: Fix irg operand type
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
` (2 preceding siblings ...)
2024-06-26 11:26 ` [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 11:26 ` [PATCH 5/6] tests/tcg/aarch64: Do not use x constraint Akihiko Odaki
` (2 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
irg expects 64-bit integers. Passing a 32-bit integer results in
compilation failure with clang version 18.1.6.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
tests/tcg/aarch64/mte-1.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/tcg/aarch64/mte-1.c b/tests/tcg/aarch64/mte-1.c
index 88dcd617addc..146cad4a0499 100644
--- a/tests/tcg/aarch64/mte-1.c
+++ b/tests/tcg/aarch64/mte-1.c
@@ -15,7 +15,7 @@ int main(int ac, char **av)
enable_mte(PR_MTE_TCF_NONE);
p0 = alloc_mte_mem(sizeof(*p0));
- asm("irg %0,%1,%2" : "=r"(p1) : "r"(p0), "r"(1));
+ asm("irg %0,%1,%2" : "=r"(p1) : "r"(p0), "r"(1l));
assert(p1 != p0);
asm("subp %0,%1,%2" : "=r"(c) : "r"(p0), "r"(p1));
assert(c == 0);
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 5/6] tests/tcg/aarch64: Do not use x constraint
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
` (3 preceding siblings ...)
2024-06-26 11:26 ` [PATCH 4/6] tests/tcg/aarch64: Fix irg operand type Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 11:26 ` [PATCH 6/6] tests/tcg/arm: Manually bit-cast half-precision numbers Akihiko Odaki
2024-06-26 14:09 ` [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Alex Bennée
6 siblings, 0 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
clang version 18.1.6 does not support x constraint for AArch64.
Use w instead.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
tests/tcg/arm/fcvt.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index 05a27b2d0710..157790e67961 100644
--- a/tests/tcg/arm/fcvt.c
+++ b/tests/tcg/arm/fcvt.c
@@ -126,7 +126,7 @@ static void convert_single_to_half(void)
asm("vcvtb.f16.f32 %0, %1" : "=t" (output) : "x" (input));
#else
uint16_t output;
- asm("fcvt %h0, %s1" : "=w" (output) : "x" (input));
+ asm("fcvt %h0, %s1" : "=w" (output) : "w" (input));
#endif
print_half_number(i, output);
}
@@ -149,7 +149,7 @@ static void convert_single_to_double(void)
#if defined(__arm__)
asm("vcvt.f64.f32 %P0, %1" : "=w" (output) : "t" (input));
#else
- asm("fcvt %d0, %s1" : "=w" (output) : "x" (input));
+ asm("fcvt %d0, %s1" : "=w" (output) : "w" (input));
#endif
print_double_number(i, output);
}
@@ -244,7 +244,7 @@ static void convert_double_to_half(void)
/* asm("vcvtb.f16.f64 %0, %P1" : "=t" (output) : "x" (input)); */
output = input;
#else
- asm("fcvt %h0, %d1" : "=w" (output) : "x" (input));
+ asm("fcvt %h0, %d1" : "=w" (output) : "w" (input));
#endif
print_half_number(i, output);
}
@@ -267,7 +267,7 @@ static void convert_double_to_single(void)
#if defined(__arm__)
asm("vcvt.f32.f64 %0, %P1" : "=w" (output) : "x" (input));
#else
- asm("fcvt %s0, %d1" : "=w" (output) : "x" (input));
+ asm("fcvt %s0, %d1" : "=w" (output) : "w" (input));
#endif
print_single_number(i, output);
@@ -335,7 +335,7 @@ static void convert_half_to_double(void)
/* asm("vcvtb.f64.f16 %P0, %1" : "=w" (output) : "t" (input)); */
output = input;
#else
- asm("fcvt %d0, %h1" : "=w" (output) : "x" (input));
+ asm("fcvt %d0, %h1" : "=w" (output) : "w" (input));
#endif
print_double_number(i, output);
}
@@ -357,7 +357,7 @@ static void convert_half_to_single(void)
#if defined(__arm__)
asm("vcvtb.f32.f16 %0, %1" : "=w" (output) : "x" ((uint32_t)input));
#else
- asm("fcvt %s0, %h1" : "=w" (output) : "x" (input));
+ asm("fcvt %s0, %h1" : "=w" (output) : "w" (input));
#endif
print_single_number(i, output);
}
@@ -380,7 +380,7 @@ static void convert_half_to_integer(void)
/* asm("vcvt.s32.f16 %0, %1" : "=t" (output) : "t" (input)); v8.2*/
output = input;
#else
- asm("fcvt %s0, %h1" : "=w" (output) : "x" (input));
+ asm("fcvt %s0, %h1" : "=w" (output) : "w" (input));
#endif
print_int64(i, output);
}
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 6/6] tests/tcg/arm: Manually bit-cast half-precision numbers
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
` (4 preceding siblings ...)
2024-06-26 11:26 ` [PATCH 5/6] tests/tcg/aarch64: Do not use x constraint Akihiko Odaki
@ 2024-06-26 11:26 ` Akihiko Odaki
2024-06-26 14:09 ` [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Alex Bennée
6 siblings, 0 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-26 11:26 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-arm, qemu-devel, Akihiko Odaki
clang version 18.1.6 does not allow specifying an integer as the value
of a single-precision register. Manually bit-cast into float with vmov
first.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
tests/tcg/arm/fcvt.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index 157790e67961..14c9bb669c91 100644
--- a/tests/tcg/arm/fcvt.c
+++ b/tests/tcg/arm/fcvt.c
@@ -355,7 +355,9 @@ static void convert_half_to_single(void)
print_half_number(i, input);
#if defined(__arm__)
- asm("vcvtb.f32.f16 %0, %1" : "=w" (output) : "x" ((uint32_t)input));
+ float tmp;
+ asm("vmov %0, %1" : "=w" (tmp) : "r" (input));
+ asm("vcvtb.f32.f16 %0, %1" : "=w" (output) : "x" (tmp));
#else
asm("fcvt %s0, %h1" : "=w" (output) : "w" (input));
#endif
--
2.45.2
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width
2024-06-26 11:26 ` [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width Akihiko Odaki
@ 2024-06-26 11:59 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-06-26 11:59 UTC (permalink / raw)
To: Akihiko Odaki, Peter Maydell; +Cc: qemu-arm, qemu-devel
On 26/6/24 13:26, Akihiko Odaki wrote:
> clang version 18.1.6 assumes a register is 64-bit by default and
> complains if a 32-bit value is given. Explicitly specify register width
> when passing a 32-bit value.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> tests/tcg/aarch64/bti-1.c | 6 +++---
> tests/tcg/aarch64/bti-3.c | 6 +++---
> 2 files changed, 6 insertions(+), 6 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
` (5 preceding siblings ...)
2024-06-26 11:26 ` [PATCH 6/6] tests/tcg/arm: Manually bit-cast half-precision numbers Akihiko Odaki
@ 2024-06-26 14:09 ` Alex Bennée
2024-06-27 13:28 ` Akihiko Odaki
6 siblings, 1 reply; 12+ messages in thread
From: Alex Bennée @ 2024-06-26 14:09 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: Peter Maydell, qemu-arm, qemu-devel
Akihiko Odaki <akihiko.odaki@daynix.com> writes:
> Unlike GCC, clang checks if the operands in assembly matches with the
> type in C. It also does not support "x" constraint for AArch64 and
> complains about them.
When are the test cases ever built with clang? Is this for Arm on Arm
testing only?
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> Akihiko Odaki (6):
> tests/tcg/arm: Fix fcvt result messages
> tests/tcg/aarch64: Fix test architecture specification
> tests/tcg/aarch64: Explicitly specify register width
> tests/tcg/aarch64: Fix irg operand type
> tests/tcg/aarch64: Do not use x constraint
> tests/tcg/arm: Manually bit-cast half-precision numbers
>
> tests/tcg/aarch64/bti-1.c | 6 +-
> tests/tcg/aarch64/bti-3.c | 6 +-
> tests/tcg/aarch64/mte-1.c | 2 +-
> tests/tcg/aarch64/sme-smopa-2.c | 2 +-
> tests/tcg/arm/fcvt.c | 20 +-
> tests/tcg/aarch64/Makefile.target | 12 +-
> tests/tcg/aarch64/fcvt.ref | 604 +++++++++++++++++++-------------------
> 7 files changed, 331 insertions(+), 321 deletions(-)
> ---
> base-commit: 74abb45dac6979e7ff76172b7f0a24e869405184
> change-id: 20240624-tcg-bf8116e80afa
>
> Best regards,
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification
2024-06-26 11:26 ` [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification Akihiko Odaki
@ 2024-06-26 16:12 ` Alex Bennée
2024-06-26 16:15 ` Alex Bennée
1 sibling, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-06-26 16:12 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: Peter Maydell, qemu-arm, qemu-devel
Akihiko Odaki <akihiko.odaki@daynix.com> writes:
> sme-smopa-2.c requires sme-i16i64 but the compiler option used not to
> specify it. Instead, the extension was specified with the inline
> assembly, resulting in mixing assembly code targeting sme-i1664 and C
> code that does not target sme-i1664.
>
> clang version 18.1.6 does not support such mixing so properly specify
> the extension with the compiler option instead.
I think we need fixes for older clangs supported by our distros as well:
16:08:26 [alex@aarch64:~/l/q/b/all.clang] plugins/next|✚1…(+0/-0) 2 + clang --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Gives:
tests/tcg/aarch64-linux-user: -Wa,-march=armv9-a+sme-i16i64 detected
/home/alex/lsrc/qemu.git/tests/tcg/aarch64/sme-smopa-1.c:17:19: error: instruction requires: sve or sme
"smstart\n\t"
^
<inline asm>:3:2: note: instantiated into assembly here
index z0.b, #0, #1
^
/home/alex/lsrc/qemu.git/tests/tcg/aarch64/sme-smopa-1.c:18:30: error: instruction requires: sve or sme
"index z0.b, #0, #1\n\t"
^
<inline asm>:4:2: note: instantiated into assembly here
movprfx z1, z0
^
/home/alex/lsrc/qemu.git/tests/tcg/aarch64/sme-smopa-1.c:19:26: error: instruction requires: sve or sme
"movprfx z1, z0\n\t"
^
<inline asm>:5:2: note: instantiated into assembly here
add z1.b, z1.b, #16
^
/home/alex/lsrc/qemu.git/tests/tcg/aarch64/sme-smopa-1.c:20:31: error: instruction requires: sve or sme
"add z1.b, z1.b, #16\n\t"
^
<inline asm>:6:2: note: instantiated into assembly here
ptrue p0.b
^
/home/alex/lsrc/qemu.git/tests/tcg/aarch64/sme-smopa-1.c:22:47: error: instruction requires: sve or sme
"smopa za0.s, p0/m, p0/m, z0.b, z1.b\n\t"
^
<inline asm>:8:2: note: instantiated into assembly here
ptrue p0.s, vl4
^
5 errors generated.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> tests/tcg/aarch64/sme-smopa-2.c | 2 +-
> tests/tcg/aarch64/Makefile.target | 12 ++++++++++--
> 2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/tests/tcg/aarch64/sme-smopa-2.c b/tests/tcg/aarch64/sme-smopa-2.c
> index c9f48c3bfca2..2c9707065992 100644
> --- a/tests/tcg/aarch64/sme-smopa-2.c
> +++ b/tests/tcg/aarch64/sme-smopa-2.c
> @@ -14,7 +14,7 @@ int main()
> long svl;
>
> /* Validate that we have a wide enough vector for 4 elements. */
> - asm(".arch armv8-r+sme-i64\n\trdsvl %0, #1" : "=r"(svl));
> + asm("rdsvl %0, #1" : "=r"(svl));
> if (svl < 32) {
> return 0;
> }
> diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
> index 70d728ae9af7..f53a1d615c21 100644
> --- a/tests/tcg/aarch64/Makefile.target
> +++ b/tests/tcg/aarch64/Makefile.target
> @@ -27,7 +27,8 @@ config-cc.mak: Makefile
> $(call cc-option,-march=armv8.5-a, CROSS_CC_HAS_ARMV8_5); \
> $(call cc-option,-mbranch-protection=standard, CROSS_CC_HAS_ARMV8_BTI); \
> $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE); \
> - $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
> + $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME); \
> + $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme-i16i64, CROSS_AS_HAS_ARMV9_SME_I1664)) 3> config-cc.mak
> -include config-cc.mak
>
> ifneq ($(CROSS_CC_HAS_ARMV8_2),)
> @@ -68,7 +69,14 @@ endif
>
> # SME Tests
> ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
> -AARCH64_TESTS += sme-outprod1 sme-smopa-1 sme-smopa-2
> +AARCH64_TESTS += sme-outprod1 sme-smopa-1
> +sme-%: CFLAGS += -march=armv9-a+sme
> +endif
> +
> +# SME I16I64 Tests
> +ifneq ($(CROSS_AS_HAS_ARMV9_SME_I1664),)
> +AARCH64_TESTS += sme-smopa-2
> +sme-smopa-2: CFLAGS += -march=armv9-a+sme-i16i64+sme
> endif
>
> # System Registers Tests
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification
2024-06-26 11:26 ` [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification Akihiko Odaki
2024-06-26 16:12 ` Alex Bennée
@ 2024-06-26 16:15 ` Alex Bennée
1 sibling, 0 replies; 12+ messages in thread
From: Alex Bennée @ 2024-06-26 16:15 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: Peter Maydell, qemu-arm, qemu-devel
Akihiko Odaki <akihiko.odaki@daynix.com> writes:
> sme-smopa-2.c requires sme-i16i64 but the compiler option used not to
> specify it. Instead, the extension was specified with the inline
> assembly, resulting in mixing assembly code targeting sme-i1664 and C
> code that does not target sme-i1664.
>
> clang version 18.1.6 does not support such mixing so properly specify
> the extension with the compiler option instead.
Also with gcc on aarch64.ci.qemu.org (Ubuntu 22.04.4 LTS) I get:
16:05:44 [alex@aarch64:~/l/q/b/all] plugins/next|✚1…(+0/-0) + make run-tcg-tests-aarch64-linux-user
ninja: no work to do.
/home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/meson introspect --targets --tests --benchmarks | /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/python3 -B scripts/mtest2make.py > Makefile.mtest
BUILD aarch64-linux-user guest-tests
tests/tcg/aarch64-linux-user: -march=armv8.1-a+sve detected
tests/tcg/aarch64-linux-user: -march=armv8.1-a+sve2 detected
tests/tcg/aarch64-linux-user: -march=armv8.2-a detected
tests/tcg/aarch64-linux-user: -march=armv8.3-a detected
tests/tcg/aarch64-linux-user: -march=armv8.5-a detected
tests/tcg/aarch64-linux-user: -mbranch-protection=standard detected
tests/tcg/aarch64-linux-user: -march=armv8.5-a+memtag detected
tests/tcg/aarch64-linux-user: -Wa,-march=armv9-a+sme detected
tests/tcg/aarch64-linux-user: -Wa,-march=armv9-a+sme-i16i64 not detected
cc1: error: unknown value ‘armv9-a+sme’ for ‘-march’
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-r native
make[1]: *** [Makefile:116: sme-outprod1] Error 1
make: *** [/home/alex/lsrc/qemu.git/tests/Makefile.include:50: build-tcg-tests-aarch64-linux-user] Error 2
16:08:32 [alex@aarch64:~/l/q/b/all] plugins/next|✚1…(+0/-0) 2 +
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> tests/tcg/aarch64/sme-smopa-2.c | 2 +-
> tests/tcg/aarch64/Makefile.target | 12 ++++++++++--
> 2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/tests/tcg/aarch64/sme-smopa-2.c b/tests/tcg/aarch64/sme-smopa-2.c
> index c9f48c3bfca2..2c9707065992 100644
> --- a/tests/tcg/aarch64/sme-smopa-2.c
> +++ b/tests/tcg/aarch64/sme-smopa-2.c
> @@ -14,7 +14,7 @@ int main()
> long svl;
>
> /* Validate that we have a wide enough vector for 4 elements. */
> - asm(".arch armv8-r+sme-i64\n\trdsvl %0, #1" : "=r"(svl));
> + asm("rdsvl %0, #1" : "=r"(svl));
> if (svl < 32) {
> return 0;
> }
> diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
> index 70d728ae9af7..f53a1d615c21 100644
> --- a/tests/tcg/aarch64/Makefile.target
> +++ b/tests/tcg/aarch64/Makefile.target
> @@ -27,7 +27,8 @@ config-cc.mak: Makefile
> $(call cc-option,-march=armv8.5-a, CROSS_CC_HAS_ARMV8_5); \
> $(call cc-option,-mbranch-protection=standard, CROSS_CC_HAS_ARMV8_BTI); \
> $(call cc-option,-march=armv8.5-a+memtag, CROSS_CC_HAS_ARMV8_MTE); \
> - $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
> + $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme, CROSS_AS_HAS_ARMV9_SME); \
> + $(call cc-option,-Wa$(COMMA)-march=armv9-a+sme-i16i64, CROSS_AS_HAS_ARMV9_SME_I1664)) 3> config-cc.mak
> -include config-cc.mak
>
> ifneq ($(CROSS_CC_HAS_ARMV8_2),)
> @@ -68,7 +69,14 @@ endif
>
> # SME Tests
> ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
> -AARCH64_TESTS += sme-outprod1 sme-smopa-1 sme-smopa-2
> +AARCH64_TESTS += sme-outprod1 sme-smopa-1
> +sme-%: CFLAGS += -march=armv9-a+sme
> +endif
> +
> +# SME I16I64 Tests
> +ifneq ($(CROSS_AS_HAS_ARMV9_SME_I1664),)
> +AARCH64_TESTS += sme-smopa-2
> +sme-smopa-2: CFLAGS += -march=armv9-a+sme-i16i64+sme
> endif
>
> # System Registers Tests
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang
2024-06-26 14:09 ` [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Alex Bennée
@ 2024-06-27 13:28 ` Akihiko Odaki
0 siblings, 0 replies; 12+ messages in thread
From: Akihiko Odaki @ 2024-06-27 13:28 UTC (permalink / raw)
To: Alex Bennée; +Cc: Peter Maydell, qemu-arm, qemu-devel
On 2024/06/26 23:09, Alex Bennée wrote:
> Akihiko Odaki <akihiko.odaki@daynix.com> writes:
>
>> Unlike GCC, clang checks if the operands in assembly matches with the
>> type in C. It also does not support "x" constraint for AArch64 and
>> complains about them.
>
> When are the test cases ever built with clang? Is this for Arm on Arm
> testing only?
I ran test QEMU built with clang on Asahi Linux.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-06-27 13:28 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-26 11:26 [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Akihiko Odaki
2024-06-26 11:26 ` [PATCH 1/6] tests/tcg/arm: Fix fcvt result messages Akihiko Odaki
2024-06-26 11:26 ` [PATCH 2/6] tests/tcg/aarch64: Fix test architecture specification Akihiko Odaki
2024-06-26 16:12 ` Alex Bennée
2024-06-26 16:15 ` Alex Bennée
2024-06-26 11:26 ` [PATCH 3/6] tests/tcg/aarch64: Explicitly specify register width Akihiko Odaki
2024-06-26 11:59 ` Philippe Mathieu-Daudé
2024-06-26 11:26 ` [PATCH 4/6] tests/tcg/aarch64: Fix irg operand type Akihiko Odaki
2024-06-26 11:26 ` [PATCH 5/6] tests/tcg/aarch64: Do not use x constraint Akihiko Odaki
2024-06-26 11:26 ` [PATCH 6/6] tests/tcg/arm: Manually bit-cast half-precision numbers Akihiko Odaki
2024-06-26 14:09 ` [PATCH 0/6] tests/tcg/aarch64: Fix inline assemblies for clang Alex Bennée
2024-06-27 13:28 ` Akihiko Odaki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).