Index: trunk/src/libs/softfloat-3e/TestFloat-3e-patch.diff
===================================================================
--- trunk/src/libs/softfloat-3e/TestFloat-3e-patch.diff	(revision 94484)
+++ trunk/src/libs/softfloat-3e/TestFloat-3e-patch.diff	(revision 94484)
@@ -0,0 +1,302 @@
+diff -Nru TestFloat-3e-virgin/Makefile.kmk TestFloat-3e/Makefile.kmk
+--- TestFloat-3e-virgin/Makefile.kmk	1970-01-01 01:00:00.000000000 +0100
++++ TestFloat-3e/Makefile.kmk	2022-04-06 01:57:25.200692100 +0200
+@@ -0,0 +1,262 @@
++# $Id$
++## @file
++# Sub-Makefile for TestFloat-3e.
++#
++
++#
++# Copyright (C) 2022 Oracle Corporation
++#
++# This file is part of VirtualBox Open Source Edition (OSE), as
++# available from http://www.virtualbox.org. This file is free software;
++# you can redistribute it and/or modify it under the terms of the GNU
++# General Public License (GPL) as published by the Free Software
++# Foundation, in version 2 as it comes in the "COPYING" file of the
++# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
++# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
++#
++
++SUB_DEPTH = ../../..
++include $(KBUILD_PATH)/subheader.kmk
++
++#
++# Basis template for building test stuff.
++#
++TEMPLATE_VBoxTestFloat = Template for building SoftFloat-3e
++TEMPLATE_VBoxTestFloat_EXTENDS = VBoxR3DllNonPedantic
++TEMPLATE_VBoxTestFloat_SDKS    = $(TEMPLATE_VBoxR3DllNonPedantic_SDKS) VBOX_SOFTFLOAT
++TEMPLATE_VBoxTestFloat_DEFS    = $(TEMPLATE_VBoxR3DllNonPedantic_DEFS) \
++	FLOAT16 \
++	FLOAT64 \
++	EXTFLOAT80 \
++	FLOAT128 \
++	FLOAT_ROUND_ODD
++ifn1of ($(KBUILD_TARGET), win)
++TEMPLATE_VBoxTestFloat_DEFS.amd64 = $(TEMPLATE_VBoxR3DllNonPedantic_DEFS.amd64) LONG_DOUBLE_IS_EXTFLOAT80
++endif
++if1of ($(KBUILD_TARGET), win)
++ TEMPLATE_VBoxTestFloat_INCS.amd64 = ../softfloat-3e/build/Win-amd64-VCC $(TEMPLATE_VBoxR3DllNonPedantic_INCS.amd64)
++else
++ TEMPLATE_VBoxTestFloat_INCS.amd64 = build/Linux-x86_64-GCC $(TEMPLATE_VBoxR3DllNonPedantic_INCS.amd64)
++endif
++TEMPLATE_VBoxTestFloat_INCS = $(TEMPLATE_VBoxR3DllNonPedantic_INCS) \
++	source/subj-C \
++	source
++
++# -wd4068: test_a_ui32_z_f16.c(48): warning C4068: unknown pragma 'STDC'
++# -wd4146: primitives.h(74): warning C4146: unary minus operator applied to unsigned type, result still unsigned
++# -wd4715: genCases_f16.c(336) : warning C4715: 'f16Random': not all control paths return a value
++TEMPLATE_VBoxTestFloat_CFLAGS.win = $(TEMPLATE_VBoxR3DllNonPedantic_CFLAGS) -wd4068 -wd4146 -wd4715
++
++#
++# For linking test executables.
++#
++TEMPLATE_VBoxTestFloatExe = Template for building SoftFloat-3e programs.
++TEMPLATE_VBoxTestFloatExe_EXTENDS = VBoxTestFloat
++TEMPLATE_VBoxTestFloatExe_INST    = $(INST_TESTCASE)
++TEMPLATE_VBoxTestFloatExe_LIBS    = \
++	$(VBox-TestFloat_1_TARGET) \
++	$(TEMPLATE_VBoxTestFloat_LIBS)
++
++# -wd4098: testfloat.c(438): warning C4098: 'subjFunction_az_extF80_rx': 'void' function returning a value
++# -wd4102: testfloat.c(767): warning C4102: 'test_abz_f16': unreferenced label
++# -wd4701: testfloat.c(1410) : warning C4701: potentially uninitialized local variable 'roundingMode' used
++TEMPLATE_VBoxTestFloatExe_CFLAGS.win = $(TEMPLATE_VBoxTestFloat_CFLAGS.win) -wd4098 -wd4102 -wd4701
++
++
++#
++# Library.
++#
++LIBRARIES += VBox-TestFloat
++VBox-TestFloat_TEMPLATE    := VBoxTestFloat
++VBox-TestFloat_INSTTYPE    := none
++VBox-TestFloat_SOURCES     := \
++	source/uint128_inline.c \
++	source/uint128.c \
++	source/fail.c \
++	source/functions_common.c \
++	source/functionInfos.c \
++	source/standardFunctionInfos.c \
++	source/random.c \
++	source/genCases_common.c \
++	source/genCases_writeTestsTotal.c \
++	source/verCases_inline.c \
++	source/verCases_common.c \
++	source/verCases_writeFunctionName.c \
++	source/readHex.c \
++	source/writeHex.c \
++	source/writeCase_a_ui32.c \
++	source/writeCase_a_ui64.c \
++	source/writeCase_a_f16.c \
++	source/writeCase_ab_f16.c \
++	source/writeCase_abc_f16.c \
++	source/writeCase_a_f32.c \
++	source/writeCase_ab_f32.c \
++	source/writeCase_abc_f32.c \
++	source/writeCase_a_f64.c \
++	source/writeCase_ab_f64.c \
++	source/writeCase_abc_f64.c \
++	source/writeCase_a_extF80M.c \
++	source/writeCase_ab_extF80M.c \
++	source/writeCase_a_f128M.c \
++	source/writeCase_ab_f128M.c \
++	source/writeCase_abc_f128M.c \
++	source/writeCase_z_bool.c \
++	source/writeCase_z_ui32.c \
++	source/writeCase_z_ui64.c \
++	source/writeCase_z_f16.c \
++	source/writeCase_z_f32.c \
++	source/writeCase_z_f64.c \
++	source/writeCase_z_extF80M.c \
++	source/writeCase_z_f128M.c \
++	source/testLoops_common.c \
++       \
++	source/test_a_ui32_z_f16.c \
++	source/test_a_ui32_z_f32.c \
++	source/test_a_ui32_z_f64.c \
++	source/test_a_ui32_z_extF80.c \
++	source/test_a_ui32_z_f128.c \
++	source/test_a_ui64_z_f16.c \
++	source/test_a_ui64_z_f32.c \
++	source/test_a_ui64_z_f64.c \
++	source/test_a_ui64_z_extF80.c \
++	source/test_a_ui64_z_f128.c \
++	source/test_a_i32_z_f16.c \
++	source/test_a_i32_z_f32.c \
++	source/test_a_i32_z_f64.c \
++	source/test_a_i32_z_extF80.c \
++	source/test_a_i32_z_f128.c \
++	source/test_a_i64_z_f16.c \
++	source/test_a_i64_z_f32.c \
++	source/test_a_i64_z_f64.c \
++	source/test_a_i64_z_extF80.c \
++	source/test_a_i64_z_f128.c \
++	source/test_a_f16_z_ui32_rx.c \
++	source/test_a_f16_z_ui64_rx.c \
++	source/test_a_f16_z_i32_rx.c \
++	source/test_a_f16_z_i64_rx.c \
++	source/test_a_f16_z_ui32_x.c \
++	source/test_a_f16_z_ui64_x.c \
++	source/test_a_f16_z_i32_x.c \
++	source/test_a_f16_z_i64_x.c \
++	source/test_a_f16_z_f32.c \
++	source/test_a_f16_z_f64.c \
++	source/test_a_f16_z_extF80.c \
++	source/test_a_f16_z_f128.c \
++	source/test_az_f16.c \
++	source/test_az_f16_rx.c \
++	source/test_abz_f16.c \
++	source/test_abcz_f16.c \
++	source/test_ab_f16_z_bool.c \
++	source/test_a_f32_z_ui32_rx.c \
++	source/test_a_f32_z_ui64_rx.c \
++	source/test_a_f32_z_i32_rx.c \
++	source/test_a_f32_z_i64_rx.c \
++	source/test_a_f32_z_ui32_x.c \
++	source/test_a_f32_z_ui64_x.c \
++	source/test_a_f32_z_i32_x.c \
++	source/test_a_f32_z_i64_x.c \
++	source/test_a_f32_z_f16.c \
++	source/test_a_f32_z_f64.c \
++	source/test_a_f32_z_extF80.c \
++	source/test_a_f32_z_f128.c \
++	source/test_az_f32.c \
++	source/test_az_f32_rx.c \
++	source/test_abz_f32.c \
++	source/test_abcz_f32.c \
++	source/test_ab_f32_z_bool.c \
++	source/test_a_f64_z_ui32_rx.c \
++	source/test_a_f64_z_ui64_rx.c \
++	source/test_a_f64_z_i32_rx.c \
++	source/test_a_f64_z_i64_rx.c \
++	source/test_a_f64_z_ui32_x.c \
++	source/test_a_f64_z_ui64_x.c \
++	source/test_a_f64_z_i32_x.c \
++	source/test_a_f64_z_i64_x.c \
++	source/test_a_f64_z_f16.c \
++	source/test_a_f64_z_f32.c \
++	source/test_a_f64_z_extF80.c \
++	source/test_a_f64_z_f128.c \
++	source/test_az_f64.c \
++	source/test_az_f64_rx.c \
++	source/test_abz_f64.c \
++	source/test_abcz_f64.c \
++	source/test_ab_f64_z_bool.c \
++	source/test_a_extF80_z_ui32_rx.c \
++	source/test_a_extF80_z_ui64_rx.c \
++	source/test_a_extF80_z_i32_rx.c \
++	source/test_a_extF80_z_i64_rx.c \
++	source/test_a_extF80_z_ui32_x.c \
++	source/test_a_extF80_z_ui64_x.c \
++	source/test_a_extF80_z_i32_x.c \
++	source/test_a_extF80_z_i64_x.c \
++	source/test_a_extF80_z_f16.c \
++	source/test_a_extF80_z_f32.c \
++	source/test_a_extF80_z_f64.c \
++	source/test_a_extF80_z_f128.c \
++	source/test_az_extF80.c \
++	source/test_az_extF80_rx.c \
++	source/test_abz_extF80.c \
++	source/test_ab_extF80_z_bool.c \
++	source/test_a_f128_z_ui32_rx.c \
++	source/test_a_f128_z_ui64_rx.c \
++	source/test_a_f128_z_i32_rx.c \
++	source/test_a_f128_z_i64_rx.c \
++	source/test_a_f128_z_ui32_x.c \
++	source/test_a_f128_z_ui64_x.c \
++	source/test_a_f128_z_i32_x.c \
++	source/test_a_f128_z_i64_x.c \
++	source/test_a_f128_z_f16.c \
++	source/test_a_f128_z_f32.c \
++	source/test_a_f128_z_f64.c \
++	source/test_a_f128_z_extF80.c \
++	source/test_az_f128.c \
++	source/test_az_f128_rx.c \
++	source/test_abz_f128.c \
++	source/test_abcz_f128.c \
++	source/test_ab_f128_z_bool.c \
++       \
++	source/genCases_ui32.c \
++	source/genCases_ui64.c \
++	source/genCases_i32.c \
++	source/genCases_i64.c \
++	source/genCases_f16.c \
++	source/genCases_f32.c \
++	source/genCases_f64.c \
++	source/genCases_extF80.c \
++	source/genCases_f128.c
++
++
++PROGRAMS += tstTestFloat
++tstTestFloat_TEMPLATE = VBoxTestFloatExe
++tstTestFloat_SOURCES  = \
++	source/testfloat.c \
++	source/subjfloat_functions.c \
++	source/subj-C/subjfloat.c
++
++PROGRAMS += tstTestFloatVer
++tstTestFloatVer_TEMPLATE = VBoxTestFloatExe
++tstTestFloatVer_SOURCES  = \
++	source/testfloat_ver.c \
++	source/verLoops.c
++
++PROGRAMS += tstTestFloatGen
++tstTestFloatGen_TEMPLATE = VBoxTestFloatExe
++tstTestFloatGen_SOURCES  = \
++	source/testfloat_gen.c \
++       source/genLoops.c
++
++PROGRAMS += tstTestFloatTime
++tstTestFloatTime_TEMPLATE = VBoxTestFloatExe
++tstTestFloatTime_SOURCES  = \
++	source/timesoftfloat.c
++tstTestFloatTime_CFLAGS.win = -wd4459 # timesoftfloat.c(4201): warning C4459: declaration of 'exact' hides global declaration
++
++PROGRAMS += tstTestFloat2
++tstTestFloat2_TEMPLATE = VBoxTestFloatExe
++tstTestFloat2_SOURCES  = \
++	source/testsoftfloat.c \
++	source/slowfloat.c
++
++include $(FILE_KBUILD_SUB_FOOTER)
++
++
+diff -Nru TestFloat-3e-virgin/source/testfloat.c TestFloat-3e/source/testfloat.c
+--- TestFloat-3e-virgin/source/testfloat.c	2018-01-19 22:41:28.000000000 +0100
++++ TestFloat-3e/source/testfloat.c	2022-04-06 02:07:07.033310000 +0200
+@@ -1353,7 +1353,7 @@
+     bool standardFunctionHasFixedRounding;
+     int roundingCode;
+     bool exact;
+-    uint_fast8_t roundingPrecision, roundingMode;
++    uint_fast8_t roundingPrecision, roundingMode = 0;
+ 
+     functionCode = standardFunctionInfoPtr->functionCode;
+     functionAttribs = functionInfos[functionCode].attribs;
+diff -Nru TestFloat-3e-virgin/source/testsoftfloat.c TestFloat-3e/source/testsoftfloat.c
+--- TestFloat-3e-virgin/source/testsoftfloat.c	2018-01-18 18:19:08.000000000 +0100
++++ TestFloat-3e/source/testsoftfloat.c	2022-04-06 02:07:28.791453300 +0200
+@@ -793,7 +793,7 @@
+     int functionAttribs;
+     uint_fast8_t roundingPrecision;
+     int roundingCode;
+-    uint_fast8_t roundingMode;
++    uint_fast8_t roundingMode = 0;
+     int exactCode;
+     bool exact;
+     int tininessCode;
+diff -Nru TestFloat-3e-virgin/source/timesoftfloat.c TestFloat-3e/source/timesoftfloat.c
+--- TestFloat-3e-virgin/source/timesoftfloat.c	2018-01-18 18:19:08.000000000 +0100
++++ TestFloat-3e/source/timesoftfloat.c	2022-04-06 02:01:34.386232700 +0200
+@@ -4794,7 +4794,7 @@
+  )
+ {
+     int functionAttribs, exactCode;
+-    uint_fast8_t roundingMode, tininessMode;
++    uint_fast8_t roundingMode = softfloat_round_near_even, tininessMode;
+ 
+     functionNamePtr = functionInfos[functionCode].namePtr;
+     functionAttribs = functionInfos[functionCode].attribs;
