qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64
@ 2024-06-30 19:00 Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num Richard Henderson
                   ` (15 more replies)
  0 siblings, 16 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

Supercedes: 20240629-tcg-v3-0-fa57918bdf09@daynix.com
("[PATCH v3 0/7] tests/tcg/aarch64: Fix inline assemblies for clang")

On top of Akihiko's patches for aarch64, additional changes are
required for arm, both as a host and as a guest.


r~


Akihiko Odaki (5):
  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: Fix fcvt result messages
  tests/tcg/arm: Manually register allocate half-precision numbers

Richard Henderson (9):
  tests/tcg/minilib: Constify digits in print_num
  tests/tcg: Adjust variable defintion from cc-option
  tests/tcg/aarch64: Drop -fno-tree-loop-distribute-patterns
  tests/tcg/aarch64: Add -fno-integrated-as for sme
  tests/tcg/arm: Drop -N from LDFLAGS
  tests/tcg/arm: Use -fno-integrated-as for test-arm-iwmmxt
  tests/tcg/arm: Use -march and -mfpu for fcvt
  tests/tcg/arm: Use vmrs/vmsr instead of mcr/mrc
  linux-user/main: Suppress out-of-range comparison warning for clang

 linux-user/main.c                         |   1 +
 tests/tcg/aarch64/bti-1.c                 |   6 +-
 tests/tcg/aarch64/bti-3.c                 |   6 +-
 tests/tcg/aarch64/mte-1.c                 |   2 +-
 tests/tcg/arm/fcvt.c                      |  28 +-
 tests/tcg/minilib/printf.c                |   2 +-
 tests/tcg/Makefile.target                 |   2 +-
 tests/tcg/aarch64/Makefile.softmmu-target |   4 +-
 tests/tcg/aarch64/Makefile.target         |  18 +-
 tests/tcg/aarch64/fcvt.ref                | 604 +++++++++++-----------
 tests/tcg/arm/Makefile.softmmu-target     |   4 +-
 tests/tcg/arm/Makefile.target             |  12 +-
 tests/tcg/arm/fcvt.ref                    | 604 +++++++++++-----------
 13 files changed, 653 insertions(+), 640 deletions(-)

-- 
2.34.1



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-07-01 12:10   ` Philippe Mathieu-Daudé
  2024-06-30 19:00 ` [PATCH v4 02/14] tests/tcg: Adjust variable defintion from cc-option Richard Henderson
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

This avoids a memcpy to the stack when compiled with clang.
Since we don't enable optimization, nor provide memcpy,
this results in an undefined symbol error at link time.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/minilib/printf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/tcg/minilib/printf.c b/tests/tcg/minilib/printf.c
index 10472b4f58..fb0189c2bb 100644
--- a/tests/tcg/minilib/printf.c
+++ b/tests/tcg/minilib/printf.c
@@ -27,7 +27,7 @@ static void print_str(char *s)
 
 static void print_num(unsigned long long value, int base)
 {
-    char digits[] = "0123456789abcdef";
+    static const char digits[] = "0123456789abcdef";
     char buf[32];
     int i = sizeof(buf) - 2, j;
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 02/14] tests/tcg: Adjust variable defintion from cc-option
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 03/14] tests/tcg/aarch64: Drop -fno-tree-loop-distribute-patterns Richard Henderson
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

Define the variable to the compiler flag used, not "y".
This avoids replication of the compiler flag itself.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/Makefile.target                 |  2 +-
 tests/tcg/aarch64/Makefile.softmmu-target |  2 +-
 tests/tcg/aarch64/Makefile.target         | 15 ++++++++-------
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index f21be50d3b..cb8cfeb6da 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -49,7 +49,7 @@ quiet-command = $(call quiet-@,$2,$3)$1
 
 cc-test = $(CC) -Werror $1 -c -o /dev/null -xc /dev/null >/dev/null 2>&1
 cc-option = if $(call cc-test, $1); then \
-    echo "$(TARGET_PREFIX)$1 detected" && echo "$(strip $2)=y" >&3; else \
+    echo "$(TARGET_PREFIX)$1 detected" && echo "$(strip $2)=$(strip $1)" >&3; else \
     echo "$(TARGET_PREFIX)$1 not detected"; fi
 
 # $1 = test name, $2 = cmd, $3 = desc
diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target
index 4b03ef602e..39d3f961c5 100644
--- a/tests/tcg/aarch64/Makefile.softmmu-target
+++ b/tests/tcg/aarch64/Makefile.softmmu-target
@@ -81,7 +81,7 @@ run-memory-replay: memory-replay run-memory-record
 EXTRA_RUNS+=run-memory-replay
 
 ifneq ($(CROSS_CC_HAS_ARMV8_3),)
-pauth-3: CFLAGS += -march=armv8.3-a
+pauth-3: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
 else
 pauth-3:
 	$(call skip-test, "BUILD of $@", "missing compiler support")
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index 70d728ae9a..e6d5e008a8 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -32,17 +32,17 @@ config-cc.mak: Makefile
 
 ifneq ($(CROSS_CC_HAS_ARMV8_2),)
 AARCH64_TESTS += dcpop
-dcpop: CFLAGS += -march=armv8.2-a
+dcpop: CFLAGS += $(CROSS_CC_HAS_ARMV8_2)
 endif
 ifneq ($(CROSS_CC_HAS_ARMV8_5),)
 AARCH64_TESTS += dcpodp
-dcpodp: CFLAGS += -march=armv8.5-a
+dcpodp: CFLAGS += $(CROSS_CC_HAS_ARMV8_5)
 endif
 
 # Pauth Tests
 ifneq ($(CROSS_CC_HAS_ARMV8_3),)
 AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5
-pauth-%: CFLAGS += -march=armv8.3-a
+pauth-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_3)
 run-pauth-1: QEMU_OPTS += -cpu max
 run-pauth-2: QEMU_OPTS += -cpu max
 # Choose a cpu with FEAT_Pauth but without FEAT_FPAC for pauth-[45].
@@ -54,7 +54,7 @@ endif
 # bti-1 tests the elf notes, so we require special compiler support.
 ifneq ($(CROSS_CC_HAS_ARMV8_BTI),)
 AARCH64_TESTS += bti-1 bti-3
-bti-1 bti-3: CFLAGS += -fno-stack-protector -mbranch-protection=standard
+bti-1 bti-3: CFLAGS += -fno-stack-protector $(CROSS_CC_HAS_ARMV8_BTI)
 bti-1 bti-3: LDFLAGS += -nostdlib
 endif
 # bti-2 tests PROT_BTI, so no special compiler support required.
@@ -63,12 +63,13 @@ AARCH64_TESTS += bti-2
 # MTE Tests
 ifneq ($(CROSS_CC_HAS_ARMV8_MTE),)
 AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7
-mte-%: CFLAGS += -march=armv8.5-a+memtag
+mte-%: CFLAGS += $(CROSS_CC_HAS_ARMV8_MTE)
 endif
 
 # SME Tests
 ifneq ($(CROSS_AS_HAS_ARMV9_SME),)
 AARCH64_TESTS += sme-outprod1 sme-smopa-1 sme-smopa-2
+sme-outprod1 sme-smopa-1 sme-smopa-2: CFLAGS += $(CROSS_AS_HAS_ARMV9_SME)
 endif
 
 # System Registers Tests
@@ -98,7 +99,7 @@ TESTS += sha512-vector
 ifneq ($(CROSS_CC_HAS_SVE),)
 # SVE ioctl test
 AARCH64_TESTS += sve-ioctls
-sve-ioctls: CFLAGS+=-march=armv8.1-a+sve
+sve-ioctls: CFLAGS += $(CROSS_CC_HAS_SVE)
 
 sha512-sve: CFLAGS=-O3 -march=armv8.1-a+sve
 sha512-sve: sha512.c
@@ -133,7 +134,7 @@ endif
 
 ifneq ($(CROSS_CC_HAS_SVE2),)
 AARCH64_TESTS += test-826
-test-826: CFLAGS+=-march=armv8.1-a+sve2
+test-826: CFLAGS += $(CROSS_CC_HAS_SVE2)
 endif
 
 TESTS += $(AARCH64_TESTS)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 03/14] tests/tcg/aarch64: Drop -fno-tree-loop-distribute-patterns
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 02/14] tests/tcg: Adjust variable defintion from cc-option Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 04/14] tests/tcg/aarch64: Explicitly specify register width Richard Henderson
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

This option is not supported by clang, and is not required
in order to get sve code generation with gcc 12.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/aarch64/Makefile.softmmu-target | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target
index 39d3f961c5..dd6d595830 100644
--- a/tests/tcg/aarch64/Makefile.softmmu-target
+++ b/tests/tcg/aarch64/Makefile.softmmu-target
@@ -39,7 +39,7 @@ memory: CFLAGS+=-DCHECK_UNALIGNED=1
 memory-sve: memory.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
 	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)
 
-memory-sve: CFLAGS+=-DCHECK_UNALIGNED=1 -march=armv8.1-a+sve -O3 -fno-tree-loop-distribute-patterns
+memory-sve: CFLAGS+=-DCHECK_UNALIGNED=1 -march=armv8.1-a+sve -O3
 
 TESTS+=memory-sve
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 04/14] tests/tcg/aarch64: Explicitly specify register width
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (2 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 03/14] tests/tcg/aarch64: Drop -fno-tree-loop-distribute-patterns Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 05/14] tests/tcg/aarch64: Fix irg operand type Richard Henderson
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: akihiko.odaki, alex.bennee, qemu-arm, Philippe Mathieu-Daudé

From: Akihiko Odaki <akihiko.odaki@daynix.com>

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>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20240627-tcg-v2-3-1690a813348e@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 99a879af23..1fada8108d 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 8c534c09d7..6a3bd037bc 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.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 05/14] tests/tcg/aarch64: Fix irg operand type
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (3 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 04/14] tests/tcg/aarch64: Explicitly specify register width Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 06/14] tests/tcg/aarch64: Do not use x constraint Richard Henderson
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

From: Akihiko Odaki <akihiko.odaki@daynix.com>

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>
Message-Id: <20240627-tcg-v2-4-1690a813348e@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 88dcd617ad..146cad4a04 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.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 06/14] tests/tcg/aarch64: Do not use x constraint
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (4 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 05/14] tests/tcg/aarch64: Fix irg operand type Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 07/14] tests/tcg/aarch64: Add -fno-integrated-as for sme Richard Henderson
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

From: Akihiko Odaki <akihiko.odaki@daynix.com>

clang version 18.1.6 does not support x constraint for AArch64.
Use w instead.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20240627-tcg-v2-5-1690a813348e@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 7ac47b564e..f631197287 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.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 07/14] tests/tcg/aarch64: Add -fno-integrated-as for sme
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (5 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 06/14] tests/tcg/aarch64: Do not use x constraint Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 08/14] tests/tcg/arm: Fix fcvt result messages Richard Henderson
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

The only use of SME is inline assembly.  Both gcc and clang only
support SME with very recent releases; by deferring detection to
the assembler we get better test coverage.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/aarch64/Makefile.target | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
index e6d5e008a8..8817ac262f 100644
--- a/tests/tcg/aarch64/Makefile.target
+++ b/tests/tcg/aarch64/Makefile.target
@@ -20,6 +20,7 @@ run-fcvt: fcvt
 
 config-cc.mak: Makefile
 	$(quiet-@)( \
+	    fnia=`$(call cc-test,-fno-integrated-as) && echo -fno-integrated-as`; \
 	    $(call cc-option,-march=armv8.1-a+sve,          CROSS_CC_HAS_SVE); \
 	    $(call cc-option,-march=armv8.1-a+sve2,         CROSS_CC_HAS_SVE2); \
 	    $(call cc-option,-march=armv8.2-a,              CROSS_CC_HAS_ARMV8_2); \
@@ -27,7 +28,7 @@ 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 $$fnia, CROSS_AS_HAS_ARMV9_SME)) 3> config-cc.mak
 -include config-cc.mak
 
 ifneq ($(CROSS_CC_HAS_ARMV8_2),)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 08/14] tests/tcg/arm: Fix fcvt result messages
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (6 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 07/14] tests/tcg/aarch64: Add -fno-integrated-as for sme Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 09/14] tests/tcg/arm: Drop -N from LDFLAGS Richard Henderson
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

From: Akihiko Odaki <akihiko.odaki@daynix.com>

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")
Message-Id: <20240627-tcg-v2-1-1690a813348e@daynix.com>
[rth: Update arm ref file as well]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/fcvt.c       |   2 +-
 tests/tcg/aarch64/fcvt.ref | 604 ++++++++++++++++++-------------------
 tests/tcg/arm/fcvt.ref     | 604 ++++++++++++++++++-------------------
 3 files changed, 605 insertions(+), 605 deletions(-)

diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index f631197287..157790e679 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 e7af24dc58..2726b41063 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)
diff --git a/tests/tcg/arm/fcvt.ref b/tests/tcg/arm/fcvt.ref
index f052b6d7e5..8e007c3345 100644
--- a/tests/tcg/arm/fcvt.ref
+++ b/tests/tcg/arm/fcvt.ref
@@ -211,45 +211,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)
@@ -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: 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: -nan / 0xffffe000  (0 => OK)
@@ -937,45 +937,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)
@@ -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: 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)
@@ -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.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 09/14] tests/tcg/arm: Drop -N from LDFLAGS
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (7 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 08/14] tests/tcg/arm: Fix fcvt result messages Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 10/14] tests/tcg/arm: Use -fno-integrated-as for test-arm-iwmmxt Richard Henderson
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

This is redudant with a linker script, and is not
supported by clang.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/Makefile.softmmu-target | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target
index 39e01ce49d..547063c08c 100644
--- a/tests/tcg/arm/Makefile.softmmu-target
+++ b/tests/tcg/arm/Makefile.softmmu-target
@@ -13,7 +13,7 @@ VPATH 		+= $(ARM_SRC)
 test-armv6m-undef: test-armv6m-undef.S
 	$(CC) -mcpu=cortex-m0 -mfloat-abi=soft \
 		-Wl,--build-id=none -x assembler-with-cpp \
-		$< -o $@ -nostdlib -N -static \
+		$< -o $@ -nostdlib -static \
 		-T $(ARM_SRC)/$@.ld
 
 run-test-armv6m-undef: QEMU_OPTS=-semihosting-config enable=on,target=native,chardev=output -M microbit -kernel
@@ -30,7 +30,7 @@ CRT_PATH=$(ARM_SRC)
 LINK_SCRIPT=$(ARM_SRC)/kernel.ld
 LDFLAGS=-Wl,-T$(LINK_SCRIPT)
 CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
-LDFLAGS+=-static -nostdlib -N $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
+LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
 
 # building head blobs
 .PRECIOUS: $(CRT_OBJS)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 10/14] tests/tcg/arm: Use -fno-integrated-as for test-arm-iwmmxt
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (8 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 09/14] tests/tcg/arm: Drop -N from LDFLAGS Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 11/14] tests/tcg/arm: Manually register allocate half-precision numbers Richard Henderson
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

Clang does not support IWMXT instructions.
Fall back to the external assembler.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/Makefile.target | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
index 0a1965fce7..95f891bf8c 100644
--- a/tests/tcg/arm/Makefile.target
+++ b/tests/tcg/arm/Makefile.target
@@ -8,6 +8,11 @@ ARM_SRC=$(SRC_PATH)/tests/tcg/arm
 # Set search path for all sources
 VPATH 		+= $(ARM_SRC)
 
+config-cc.mak: Makefile
+	$(quiet-@)( \
+	    $(call cc-option,-fno-integrated-as, CROSS_CC_HAS_FNIA)) 3> config-cc.mak
+-include config-cc.mak
+
 float_madds: CFLAGS+=-mfpu=neon-vfpv4
 
 # Basic Hello World
@@ -17,7 +22,8 @@ hello-arm: LDFLAGS+=-nostdlib
 
 # IWMXT floating point extensions
 ARM_TESTS += test-arm-iwmmxt
-test-arm-iwmmxt: CFLAGS+=-marm -march=iwmmxt -mabi=aapcs -mfpu=fpv4-sp-d16
+# Clang assembler does not support IWMXT, so use the external assembler.
+test-arm-iwmmxt: CFLAGS += -marm -march=iwmmxt -mabi=aapcs -mfpu=fpv4-sp-d16 $(CROSS_CC_HAS_FNIA)
 test-arm-iwmmxt: test-arm-iwmmxt.S
 	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
 
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 11/14] tests/tcg/arm: Manually register allocate half-precision numbers
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (9 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 10/14] tests/tcg/arm: Use -fno-integrated-as for test-arm-iwmmxt Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 12/14] tests/tcg/arm: Use -march and -mfpu for fcvt Richard Henderson
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

From: Akihiko Odaki <akihiko.odaki@daynix.com>

Clang does not allow specifying an integer as the value of a single
precision register.  Explicitly move value from a general register.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
[rth: Use one single inline asm block.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/fcvt.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index 157790e679..d8c61cd29f 100644
--- a/tests/tcg/arm/fcvt.c
+++ b/tests/tcg/arm/fcvt.c
@@ -355,7 +355,12 @@ 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));
+        /*
+         * Clang refuses to allocate an integer to a fp register.
+         * Perform the move from a general register by hand.
+         */
+        asm("vmov %0, %1\n\t"
+            "vcvtb.f32.f16 %0, %0" : "=w" (output) : "r" (input));
 #else
         asm("fcvt %s0, %h1" : "=w" (output) : "w" (input));
 #endif
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 12/14] tests/tcg/arm: Use -march and -mfpu for fcvt
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (10 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 11/14] tests/tcg/arm: Manually register allocate half-precision numbers Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 13/14] tests/tcg/arm: Use vmrs/vmsr instead of mcr/mrc Richard Henderson
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

Clang requires the architecture to be set properly
in order to assemble the half-precision instructions.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/Makefile.target | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
index 95f891bf8c..8e287191af 100644
--- a/tests/tcg/arm/Makefile.target
+++ b/tests/tcg/arm/Makefile.target
@@ -29,8 +29,8 @@ test-arm-iwmmxt: test-arm-iwmmxt.S
 
 # Float-convert Tests
 ARM_TESTS += fcvt
-fcvt: LDFLAGS+=-lm
-# fcvt: CFLAGS+=-march=armv8.2-a+fp16 -mfpu=neon-fp-armv8
+fcvt: LDFLAGS += -lm
+fcvt: CFLAGS += -march=armv8.2-a+fp16 -mfpu=neon-fp-armv8
 run-fcvt: fcvt
 	$(call run-test,fcvt,$(QEMU) $<)
 	$(call diff-out,fcvt,$(ARM_SRC)/fcvt.ref)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 13/14] tests/tcg/arm: Use vmrs/vmsr instead of mcr/mrc
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (11 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 12/14] tests/tcg/arm: Use -march and -mfpu for fcvt Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-06-30 19:00 ` [PATCH v4 14/14] linux-user/main: Suppress out-of-range comparison warning for clang Richard Henderson
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

Clang 14 generates

/home/rth/qemu/src/tests/tcg/arm/fcvt.c:431:9: error: invalid operand for instruction
    asm("mrc p10, 7, r1, cr1, cr0, 0\n\t"
        ^
<inline asm>:1:6: note: instantiated into assembly here
        mrc p10, 7, r1, cr1, cr0, 0
            ^
/home/rth/qemu/src/tests/tcg/arm/fcvt.c:432:32: error: invalid operand for instruction
        "orr r1, r1, %[flags]\n\t"
                               ^
<inline asm>:3:6: note: instantiated into assembly here
        mcr p10, 7, r1, cr1, cr0, 0
            ^

This is perhaps a clang bug, but using the neon mnemonic is clearer.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/arm/fcvt.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/tests/tcg/arm/fcvt.c b/tests/tcg/arm/fcvt.c
index d8c61cd29f..ecebbb0247 100644
--- a/tests/tcg/arm/fcvt.c
+++ b/tests/tcg/arm/fcvt.c
@@ -427,10 +427,9 @@ int main(int argc, char *argv[argc])
 
     /* And now with ARM alternative FP16 */
 #if defined(__arm__)
-    /* See glibc sysdeps/arm/fpu_control.h */
-    asm("mrc p10, 7, r1, cr1, cr0, 0\n\t"
+    asm("vmrs r1, fpscr\n\t"
         "orr r1, r1, %[flags]\n\t"
-        "mcr p10, 7, r1, cr1, cr0, 0\n\t"
+        "vmsr fpscr, r1"
         : /* no output */ : [flags] "n" (1 << 26) : "r1" );
 #else
     asm("mrs x1, fpcr\n\t"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v4 14/14] linux-user/main: Suppress out-of-range comparison warning for clang
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (12 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 13/14] tests/tcg/arm: Use vmrs/vmsr instead of mcr/mrc Richard Henderson
@ 2024-06-30 19:00 ` Richard Henderson
  2024-07-01 10:40 ` [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Akihiko Odaki
  2024-07-04 19:55 ` Alex Bennée
  15 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-30 19:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

For arm32 host and arm64 guest we get

.../main.c:851:32: error: result of comparison of constant 70368744177664 with expression of type 'unsigned long' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
        if (TASK_UNMAPPED_BASE < reserved_va) {
            ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~

We already disable -Wtype-limits here, for this exact comparison, but
that is not enough for clang.  Disable -Wtautological-compare as well,
which is a superset.  GCC ignores the unknown warning flag.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/linux-user/main.c b/linux-user/main.c
index 94c99a1366..7d3cf45fa9 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -843,6 +843,7 @@ int main(int argc, char **argv, char **envp)
      */
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wtype-limits"
+#pragma GCC diagnostic ignored "-Wtautological-compare"
 
     /*
      * Select an initial value for task_unmapped_base that is in range.
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (13 preceding siblings ...)
  2024-06-30 19:00 ` [PATCH v4 14/14] linux-user/main: Suppress out-of-range comparison warning for clang Richard Henderson
@ 2024-07-01 10:40 ` Akihiko Odaki
  2024-07-04 19:55 ` Alex Bennée
  15 siblings, 0 replies; 18+ messages in thread
From: Akihiko Odaki @ 2024-07-01 10:40 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: alex.bennee, qemu-arm

On 2024/07/01 4:00, Richard Henderson wrote:
> Supercedes: 20240629-tcg-v3-0-fa57918bdf09@daynix.com
> ("[PATCH v3 0/7] tests/tcg/aarch64: Fix inline assemblies for clang")
> 
> On top of Akihiko's patches for aarch64, additional changes are
> required for arm, both as a host and as a guest.

For the whole series:
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num
  2024-06-30 19:00 ` [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num Richard Henderson
@ 2024-07-01 12:10   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-01 12:10 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: akihiko.odaki, alex.bennee, qemu-arm

On 30/6/24 21:00, Richard Henderson wrote:
> This avoids a memcpy to the stack when compiled with clang.
> Since we don't enable optimization, nor provide memcpy,
> this results in an undefined symbol error at link time.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   tests/tcg/minilib/printf.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64
  2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
                   ` (14 preceding siblings ...)
  2024-07-01 10:40 ` [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Akihiko Odaki
@ 2024-07-04 19:55 ` Alex Bennée
  15 siblings, 0 replies; 18+ messages in thread
From: Alex Bennée @ 2024-07-04 19:55 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel, akihiko.odaki, qemu-arm

Richard Henderson <richard.henderson@linaro.org> writes:

> Supercedes: 20240629-tcg-v3-0-fa57918bdf09@daynix.com
> ("[PATCH v3 0/7] tests/tcg/aarch64: Fix inline assemblies for clang")
>
> On top of Akihiko's patches for aarch64, additional changes are
> required for arm, both as a host and as a guest.

Queued to testing/next, thanks.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2024-07-04 19:56 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-30 19:00 [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Richard Henderson
2024-06-30 19:00 ` [PATCH v4 01/14] tests/tcg/minilib: Constify digits in print_num Richard Henderson
2024-07-01 12:10   ` Philippe Mathieu-Daudé
2024-06-30 19:00 ` [PATCH v4 02/14] tests/tcg: Adjust variable defintion from cc-option Richard Henderson
2024-06-30 19:00 ` [PATCH v4 03/14] tests/tcg/aarch64: Drop -fno-tree-loop-distribute-patterns Richard Henderson
2024-06-30 19:00 ` [PATCH v4 04/14] tests/tcg/aarch64: Explicitly specify register width Richard Henderson
2024-06-30 19:00 ` [PATCH v4 05/14] tests/tcg/aarch64: Fix irg operand type Richard Henderson
2024-06-30 19:00 ` [PATCH v4 06/14] tests/tcg/aarch64: Do not use x constraint Richard Henderson
2024-06-30 19:00 ` [PATCH v4 07/14] tests/tcg/aarch64: Add -fno-integrated-as for sme Richard Henderson
2024-06-30 19:00 ` [PATCH v4 08/14] tests/tcg/arm: Fix fcvt result messages Richard Henderson
2024-06-30 19:00 ` [PATCH v4 09/14] tests/tcg/arm: Drop -N from LDFLAGS Richard Henderson
2024-06-30 19:00 ` [PATCH v4 10/14] tests/tcg/arm: Use -fno-integrated-as for test-arm-iwmmxt Richard Henderson
2024-06-30 19:00 ` [PATCH v4 11/14] tests/tcg/arm: Manually register allocate half-precision numbers Richard Henderson
2024-06-30 19:00 ` [PATCH v4 12/14] tests/tcg/arm: Use -march and -mfpu for fcvt Richard Henderson
2024-06-30 19:00 ` [PATCH v4 13/14] tests/tcg/arm: Use vmrs/vmsr instead of mcr/mrc Richard Henderson
2024-06-30 19:00 ` [PATCH v4 14/14] linux-user/main: Suppress out-of-range comparison warning for clang Richard Henderson
2024-07-01 10:40 ` [PATCH v4 00/14] test/tcg: Clang build fixes for arm/aarch64 Akihiko Odaki
2024-07-04 19:55 ` Alex Bennée

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).