From 93668b51851dcb715f08189868f25131a00aa8da Mon Sep 17 00:00:00 2001
From: "James E. Stine"
Date: Wed, 6 Oct 2021 13:16:38 -0500
Subject: [PATCH 02/10] Update to testbench for FP stuff
---
wally-pipelined/regression/sim-fp64 | 1 +
wally-pipelined/regression/sim-fp64-batch | 3 +
wally-pipelined/testbench/testbench-f64.sv | 129 +++++++++++++++++++++
3 files changed, 133 insertions(+)
create mode 100755 wally-pipelined/regression/sim-fp64
create mode 100755 wally-pipelined/regression/sim-fp64-batch
create mode 100755 wally-pipelined/testbench/testbench-f64.sv
diff --git a/wally-pipelined/regression/sim-fp64 b/wally-pipelined/regression/sim-fp64
new file mode 100755
index 000000000..b6b8ba5ca
--- /dev/null
+++ b/wally-pipelined/regression/sim-fp64
@@ -0,0 +1 @@
+vsim -do wally-fp64.do
diff --git a/wally-pipelined/regression/sim-fp64-batch b/wally-pipelined/regression/sim-fp64-batch
new file mode 100755
index 000000000..81ef807e2
--- /dev/null
+++ b/wally-pipelined/regression/sim-fp64-batch
@@ -0,0 +1,3 @@
+vsim -c <
Date: Wed, 6 Oct 2021 13:17:49 -0500
Subject: [PATCH 03/10] Add generic wave command file
---
.../regression/wave-dos/generic.do | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 wally-pipelined/regression/wave-dos/generic.do
diff --git a/wally-pipelined/regression/wave-dos/generic.do b/wally-pipelined/regression/wave-dos/generic.do
new file mode 100644
index 000000000..1d59f3fbe
--- /dev/null
+++ b/wally-pipelined/regression/wave-dos/generic.do
@@ -0,0 +1,23 @@
+# default-waves.do
+restart -f
+delete wave /*
+view wave
+
+# Diplays All Signals recursively
+add wave /testbench/clk
+add wave /testbench/reset
+add wave -divider
+add wave -hex -r /testbench/*
+
+# appearance
+TreeUpdate [SetDefaultTree]
+WaveRestoreZoom {0 ps} {300 ps}
+configure wave -namecolwidth 350
+configure wave -valuecolwidth 150
+configure wave -justifyvalue left
+configure wave -signalnamewidth 0
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+set DefaultRadix hexadecimal
From 8429078d4fa33d17bff0d18555b892d9db39960c Mon Sep 17 00:00:00 2001
From: "James E. Stine"
Date: Wed, 6 Oct 2021 14:38:32 -0500
Subject: [PATCH 04/10] TV for conversion and compare
---
.../testbench/fp/create_vectors16.csh | 22 +
.../testbench/fp/create_vectors32.csh | 10 -
.../testbench/fp/create_vectors32_64.csh | 5 +
.../testbench/fp/create_vectors32cmp.csh | 9 +
.../testbench/fp/create_vectors64.csh | 10 -
.../testbench/fp/create_vectors64_32.csh | 5 +
.../testbench/fp/create_vectors64cmp.csh | 9 +
.../testbench/fp/create_vectorsi.csh | 23 +
wally-pipelined/testbench/fp/i32_f32_rd.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f32_rne.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f32_ru.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f32_rz.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f64_rd.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f64_rne.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f64_ru.tv | 372 +++++++++
wally-pipelined/testbench/fp/i32_f64_rz.tv | 372 +++++++++
wally-pipelined/testbench/fp/i64_f32_rd.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f32_rne.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f32_ru.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f32_rz.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f64_rd.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f64_rne.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f64_ru.tv | 756 ++++++++++++++++++
wally-pipelined/testbench/fp/i64_f64_rz.tv | 756 ++++++++++++++++++
24 files changed, 9097 insertions(+), 20 deletions(-)
create mode 100755 wally-pipelined/testbench/fp/create_vectors16.csh
create mode 100755 wally-pipelined/testbench/fp/create_vectors32_64.csh
create mode 100755 wally-pipelined/testbench/fp/create_vectors32cmp.csh
create mode 100755 wally-pipelined/testbench/fp/create_vectors64_32.csh
create mode 100755 wally-pipelined/testbench/fp/create_vectors64cmp.csh
create mode 100755 wally-pipelined/testbench/fp/create_vectorsi.csh
create mode 100644 wally-pipelined/testbench/fp/i32_f32_rd.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f32_rne.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f32_ru.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f32_rz.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f64_rd.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f64_rne.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f64_ru.tv
create mode 100644 wally-pipelined/testbench/fp/i32_f64_rz.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f32_rd.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f32_rne.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f32_ru.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f32_rz.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f64_rd.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f64_rne.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f64_ru.tv
create mode 100644 wally-pipelined/testbench/fp/i64_f64_rz.tv
diff --git a/wally-pipelined/testbench/fp/create_vectors16.csh b/wally-pipelined/testbench/fp/create_vectors16.csh
new file mode 100755
index 000000000..9ce533218
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectors16.csh
@@ -0,0 +1,22 @@
+#!/bin/sh
+./testfloat_gen -rnear_even f16_add > f16_add_rne.tv
+./testfloat_gen -rminMag f16_add > f16_add_rz.tv
+./testfloat_gen -rmin f16_add > f16_add_ru.tv
+./testfloat_gen -rmax f16_add > f16_add_rd.tv
+
+./testfloat_gen -rnear_even f16_sub > f16_sub_rne.tv
+./testfloat_gen -rminMag f16_sub > f16_sub_rz.tv
+./testfloat_gen -rmin f16_sub > f16_sub_ru.tv
+./testfloat_gen -rmax f16_sub > f16_sub_rd.tv
+
+./testfloat_gen -rnear_even f16_div > f16_div_rne.tv
+./testfloat_gen -rminMag f16_div > f16_div_rz.tv
+./testfloat_gen -rmin f16_div > f16_div_ru.tv
+./testfloat_gen -rmax f16_div > f16_div_rd.tv
+
+./testfloat_gen -rnear_even f16_sqrt > f16_sqrt_rne.tv
+./testfloat_gen -rminMag f16_sqrt > f16_sqrt_rz.tv
+./testfloat_gen -rmin f16_sqrt > f16_sqrt_ru.tv
+./testfloat_gen -rmax f16_sqrt > f16_sqrt_rd.tv
+
+
diff --git a/wally-pipelined/testbench/fp/create_vectors32.csh b/wally-pipelined/testbench/fp/create_vectors32.csh
index 1a43eb4c7..958c3fad3 100755
--- a/wally-pipelined/testbench/fp/create_vectors32.csh
+++ b/wally-pipelined/testbench/fp/create_vectors32.csh
@@ -9,16 +9,6 @@
./testfloat_gen -rmax f32_sub > f32_sub_ru.tv
./testfloat_gen -rmin f32_sub > f32_sub_rd.tv
-./testfloat_gen -rnear_even f32_mul > f32_mul_rne.tv
-./testfloat_gen -rminMag f32_mul > f32_mul_rz.tv
-./testfloat_gen -rmax f32_mul > f32_mul_ru.tv
-./testfloat_gen -rmin f32_mul > f32_mul_rd.tv
-
-./testfloat_gen -rnear_even f32_mulAdd > f32_fma_rne.tv
-./testfloat_gen -rminMag f32_mulAdd > f32_fma_rz.tv
-./testfloat_gen -rmax f32_mulAdd > f32_fma_ru.tv
-./testfloat_gen -rmin f32_mulAdd > f32_fma_rd.tv
-
./testfloat_gen -rnear_even f32_div > f32_div_rne.tv
./testfloat_gen -rminMag f32_div > f32_div_rz.tv
./testfloat_gen -rmax f32_div > f32_div_ru.tv
diff --git a/wally-pipelined/testbench/fp/create_vectors32_64.csh b/wally-pipelined/testbench/fp/create_vectors32_64.csh
new file mode 100755
index 000000000..13f4c7bed
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectors32_64.csh
@@ -0,0 +1,5 @@
+#!/bin/sh
+./testfloat_gen -rnear_even f32_to_f64 > f32_f64_rne.tv
+./testfloat_gen -rminMag f32_to_f64 > f32_f64_rz.tv
+./testfloat_gen -rmax f32_to_f64 > f32_f64_ru.tv
+./testfloat_gen -rmin f32_to_f64 > f32_f64_rd.tv
diff --git a/wally-pipelined/testbench/fp/create_vectors32cmp.csh b/wally-pipelined/testbench/fp/create_vectors32cmp.csh
new file mode 100755
index 000000000..d7356d3f7
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectors32cmp.csh
@@ -0,0 +1,9 @@
+#!/bin/sh
+./testfloat_gen f32_eq > f32_cmp_eq.tv
+./testfloat_gen f32_le > f32_cmp_le.tv
+./testfloat_gen f32_lt > f32_cmp_lt.tv
+
+./testfloat_gen f32_eq_signaling > f32_cmp_eq_signaling.tv
+./testfloat_gen f32_le_quiet > f32_cmp_le_quiet.tv
+./testfloat_gen f32_lt_quiet > f32_cmp_lt_quiet.tv
+
diff --git a/wally-pipelined/testbench/fp/create_vectors64.csh b/wally-pipelined/testbench/fp/create_vectors64.csh
index bb0c0fda6..fb4f3cef6 100755
--- a/wally-pipelined/testbench/fp/create_vectors64.csh
+++ b/wally-pipelined/testbench/fp/create_vectors64.csh
@@ -9,16 +9,6 @@
./testfloat_gen -rmax f64_sub > f64_sub_ru.tv
./testfloat_gen -rmin f64_sub > f64_sub_rd.tv
-./testfloat_gen -rnear_even f64_mul > f64_mul_rne.tv
-./testfloat_gen -rminMag f64_mul > f64_mul_rz.tv
-./testfloat_gen -rmax f64_mul > f64_mul_ru.tv
-./testfloat_gen -rmin f64_mul > f64_mul_rd.tv
-
-./testfloat_gen -rnear_even f64_mulAdd > f64_fma_rne.tv
-./testfloat_gen -rminMag f64_mulAdd > f64_fma_rz.tv
-./testfloat_gen -rmax f64_mulAdd > f64_fma_ru.tv
-./testfloat_gen -rmin f64_mulAdd > f64_fma_rd.tv
-
./testfloat_gen -rnear_even f64_div > f64_div_rne.tv
./testfloat_gen -rminMag f64_div > f64_div_rz.tv
./testfloat_gen -rmax f64_div > f64_div_ru.tv
diff --git a/wally-pipelined/testbench/fp/create_vectors64_32.csh b/wally-pipelined/testbench/fp/create_vectors64_32.csh
new file mode 100755
index 000000000..3448d9c42
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectors64_32.csh
@@ -0,0 +1,5 @@
+#!/bin/sh
+./testfloat_gen -rnear_even f64_to_f32 > f64_f32_rne.tv
+./testfloat_gen -rminMag f64_to_f32 > f64_f32_rz.tv
+./testfloat_gen -rmax f64_to_f32 > f64_f32_ru.tv
+./testfloat_gen -rmin f64_to_f32 > f64_f32_rd.tv
diff --git a/wally-pipelined/testbench/fp/create_vectors64cmp.csh b/wally-pipelined/testbench/fp/create_vectors64cmp.csh
new file mode 100755
index 000000000..b2f5dd5b0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectors64cmp.csh
@@ -0,0 +1,9 @@
+#!/bin/sh
+./testfloat_gen f64_eq > f64_cmp_eq.tv
+./testfloat_gen f64_le > f64_cmp_le.tv
+./testfloat_gen f64_lt > f64_cmp_lt.tv
+
+./testfloat_gen f64_eq_signaling > f64_cmp_eq_signaling.tv
+./testfloat_gen f64_le_quiet > f64_cmp_le_quiet.tv
+./testfloat_gen f64_lt_quiet > f64_cmp_lt_quiet.tv
+
diff --git a/wally-pipelined/testbench/fp/create_vectorsi.csh b/wally-pipelined/testbench/fp/create_vectorsi.csh
new file mode 100755
index 000000000..7a342e9fa
--- /dev/null
+++ b/wally-pipelined/testbench/fp/create_vectorsi.csh
@@ -0,0 +1,23 @@
+#!/bin/sh
+./testfloat_gen -rnear_even -i32_to_f64 > i32_f64_rne.tv
+./testfloat_gen -rminMag -i32_to_f64 > i32_f64_rz.tv
+./testfloat_gen -rmax -i32_to_f64 > i32_f64_ru.tv
+./testfloat_gen -rmin -i32_to_f64 > i32_f64_rd.tv
+
+./testfloat_gen -rnear_even -i64_to_f64 > i64_f64_rne.tv
+./testfloat_gen -rminMag -i64_to_f64 > i64_f64_rz.tv
+./testfloat_gen -rmax -i64_to_f64 > i64_f64_ru.tv
+./testfloat_gen -rmin -i64_to_f64 > i64_f64_rd.tv
+
+./testfloat_gen -rnear_even -i32_to_f32 > i32_f32_rne.tv
+./testfloat_gen -rminMag -i32_to_f32 > i32_f32_rz.tv
+./testfloat_gen -rmax -i32_to_f32 > i32_f32_ru.tv
+./testfloat_gen -rmin -i32_to_f32 > i32_f32_rd.tv
+
+./testfloat_gen -rnear_even -i64_to_f32 > i64_f32_rne.tv
+./testfloat_gen -rminMag -i64_to_f32 > i64_f32_rz.tv
+./testfloat_gen -rmax -i64_to_f32 > i64_f32_ru.tv
+./testfloat_gen -rmin -i64_to_f32 > i64_f32_rd.tv
+
+
+
diff --git a/wally-pipelined/testbench/fp/i32_f32_rd.tv b/wally-pipelined/testbench/fp/i32_f32_rd.tv
new file mode 100644
index 000000000..e065d28ac
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f32_rd.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 4DFF7FFF_01
+FFFFC48E C66DC800_00
+00000000 00000000_00
+007FFFCD 4AFFFF9A_00
+00009E14 471E1400_00
+00000001 3F800000_00
+001FFFFB 49FFFFD8_00
+FFFFDE38 C6072000_00
+00000002 40000000_00
+FFDFFC02 CA000FF8_00
+FB794C79 CC90D671_01
+00000004 40800000_00
+F00FFFFE CD7F0001_01
+00000A95 45295000_00
+00000008 41000000_00
+FFFFF97F C4D02000_00
+FFAE458D CAA374E6_00
+00000010 41800000_00
+0101001E 4B80800F_00
+29EB4561 4E27AD15_01
+00000020 42000000_00
+8001FFEE CEFFFC01_01
+FFFBDD08 C8845F00_00
+00000040 42800000_00
+FFF03FF9 C97C0070_00
+FFCEDF36 CA448328_00
+00000080 43000000_00
+0000F01F 47701F00_00
+00000279 441E4000_00
+00000100 43800000_00
+BFFFFFEF CE800001_01
+00000007 40E00000_00
+00000200 44000000_00
+010BFFFD 4B85FFFE_01
+FFFFF590 C5270000_00
+00000400 44800000_00
+F7FFFEFB CD000011_01
+2FEA335F 4E3FA8CD_01
+00000800 45000000_00
+FFC07FFF CA7E0004_00
+177957FD 4DBBCABF_01
+00001000 45800000_00
+01FBFFEE 4BFDFFF7_00
+FFFFFAC9 C4A6E000_00
+00002000 46000000_00
+FFFF8004 C6FFF800_00
+FFFBE0DE C883E440_00
+00004000 46800000_00
+3F00001E 4E7C0000_01
+00000000 00000000_00
+00008000 47000000_00
+FF8201FF CAFBFC02_00
+FFFFD2F1 C6343C00_00
+00010000 47800000_00
+0000047E 448FC000_00
+0011B7E5 498DBF28_00
+00020000 48000000_00
+02200200 4C080080_00
+0013F7E6 499FBF30_00
+00040000 48800000_00
+FFFDC007 C80FFE40_00
+FD0ABD9A CC3D509A_01
+00080000 49000000_00
+0000607F 46C0FE00_00
+00003CEE 4673B800_00
+00100000 49800000_00
+DFDFE000 CE008080_00
+FFFB1642 C89D37C0_00
+00200000 4A000000_00
+FC000078 CC7FFFE2_00
+5F70EEC1 4EBEE1DD_01
+00400000 4A800000_00
+00100082 49800410_00
+FFFFFE21 C3EF8000_00
+00800000 4B000000_00
+FF7BFF7F CB040081_00
+FFFF6393 C71C6D00_00
+01000000 4B800000_00
+07EFFEFD 4CFDFFDF_01
+FFFFFDB4 C4130000_00
+02000000 4C000000_00
+8002FFFF CEFFFA01_01
+FFFFC8E2 C65C7800_00
+04000000 4C800000_00
+FFFC0DFE C87C8080_00
+FFFFFF1B C3650000_00
+08000000 4D000000_00
+03FFFDBF 4C7FFF6F_01
+0001092B 47849580_00
+10000000 4D800000_00
+007FBFFD 4AFF7FFA_00
+00B4F3D1 4B34F3D1_00
+20000000 4E000000_00
+FEF801FF CB83FF01_01
+00000005 40A00000_00
+40000000 4E800000_00
+BFF3FFFE CE801801_01
+0001806B 47C03580_00
+80000000 CF000000_00
+0000A07E 47207E00_00
+FFFFA59F C6B4C200_00
+C0000000 CE800000_00
+E0007FDE CDFFFC02_01
+FFF8343E C8F97840_00
+E0000000 CE000000_00
+0000FF7C 477F7C00_00
+FFFFFFF7 C1100000_00
+F0000000 CD800000_00
+BDFFFFFC CE840001_01
+FFFFE3C1 C5E1F800_00
+F8000000 CD000000_00
+28003FFE 4E2000FF_01
+00000000 00000000_00
+FC000000 CC800000_00
+00EEFFFF 4B6EFFFF_00
+00003EB0 467AC000_00
+FE000000 CC000000_00
+00000F7D 4577D000_00
+FFFFFF0F C3710000_00
+FF000000 CB800000_00
+0000406D 4680DA00_00
+0000001A 41D00000_00
+FF800000 CB000000_00
+203FFFFD 4E00FFFF_01
+0000000A 41200000_00
+FFC00000 CA800000_00
+FFFF007C C77F8400_00
+0000009B 431B0000_00
+FFE00000 CA000000_00
+00E00FFF 4B600FFF_00
+00000006 40C00000_00
+FFF00000 C9800000_00
+00200FFC 4A003FF0_00
+00000714 44E28000_00
+FFF80000 C9000000_00
+F800040E CCFFFF7F_01
+00000013 41980000_00
+FFFC0000 C8800000_00
+F83BFFFF CCF88001_01
+FFF3F584 C940A7C0_00
+FFFE0000 C8000000_00
+F6FFFBFF CD100041_01
+FFFFFFF0 C1800000_00
+FFFF0000 C7800000_00
+80003FFD CEFFFF81_01
+FFFFFFAD C2A60000_00
+FFFF8000 C7000000_00
+004001FD 4A8003FA_00
+000D734E 495734E0_00
+FFFFC000 C6800000_00
+006003FE 4AC007FC_00
+FF9DBAA8 CAC48AB0_00
+FFFFE000 C6000000_00
+000403EE 48807DC0_00
+00734668 4AE68CD0_00
+FFFFF000 C5800000_00
+01200002 4B900001_00
+FF8874A5 CAEF16B6_00
+FFFFF800 C5000000_00
+00060001 48C00020_00
+FFFFFFF8 C1000000_00
+FFFFFC00 C4800000_00
+001FFEDD 49FFF6E8_00
+FFFC56DF C86A4840_00
+FFFFFE00 C4000000_00
+EFFFEFFD CD800081_01
+FECF5EC6 CB98509D_00
+FFFFFF00 C3800000_00
+1FF00002 4DFF8000_01
+F6DB786B CD12487A_01
+FFFFFF80 C3000000_00
+F0000FBE CD7FFF05_01
+00000009 41100000_00
+FFFFFFC0 C2800000_00
+0010801F 498400F8_00
+0001F238 47F91C00_00
+FFFFFFE0 C2000000_00
+F8000047 CCFFFFF8_01
+0002133C 4804CF00_00
+FFFFFFF0 C1800000_00
+003C001F 4A70007C_00
+000001F1 43F88000_00
+FFFFFFF8 C1000000_00
+FFDFBFFF CA010004_00
+FF5E507F CB21AF81_00
+FFFFFFFC C0800000_00
+037FFFDE 4C5FFFF7_01
+FFFD7C6F C820E440_00
+FFFFFFFE C0000000_00
+000000FD 437D0000_00
+FFFFF42A C53D6000_00
+FFFFFFFF BF800000_00
+021FFF7D 4C07FFDF_01
+0000000A 41200000_00
+FFFFFFFD C0400000_00
+4010FFFF 4E8021FF_01
+FFFFFFD3 C2340000_00
+FFFFFFFB C0A00000_00
+FFFF800B C6FFEA00_00
+000000B8 43380000_00
+FFFFFFF7 C1100000_00
+FF800803 CAFFEFFA_00
+FFFFFFFE C0000000_00
+FFFFFFEF C1880000_00
+00803FFB 4B003FFB_00
+00000308 44420000_00
+FFFFFFDF C2040000_00
+2107FFFE 4E041FFF_01
+FFE15D4F C9F51588_00
+FFFFFFBF C2820000_00
+400087FD 4E80010F_01
+0000000F 41700000_00
+FFFFFF7F C3010000_00
+FDFC007E CC00FFE1_01
+00000006 40C00000_00
+FFFFFEFF C3808000_00
+FFF80100 C8FFE000_00
+FFFFFE99 C3B38000_00
+FFFFFDFF C4004000_00
+03000002 4C400000_01
+FFF716EA C90E9160_00
+FFFFFBFF C4802000_00
+C7FDFFFF CE600801_01
+FFFFE327 C5E6C800_00
+FFFFF7FF C5001000_00
+0103DFFE 4B81EFFF_00
+07661FD8 4CECC3FB_00
+FFFFEFFF C5800800_00
+83FFFFFE CEF80001_01
+FCD956DB CC49AA4A_01
+FFFFDFFF C6000400_00
+FF2001FD CB5FFE03_00
+E4D35BBF CDD96523_01
+FFFFBFFF C6800200_00
+DFEFEFFE CE004041_01
+05DA4300 4CBB4860_00
+FFFF7FFF C7000100_00
+40001040 4E800020_01
+812EDF40 CEFDA242_01
+FFFEFFFF C7800080_00
+FFFFC007 C67FE400_00
+00B6FCC9 4B36FCC9_00
+FFFDFFFF C8000040_00
+000007FE 44FFC000_00
+FC3DE950 CC7085AC_00
+FFFBFFFF C8800020_00
+7FFFFE03 4EFFFFFC_01
+FEB02B59 CBA7EA54_01
+FFF7FFFF C9000010_00
+10FF7FFF 4D87FBFF_01
+00008D5E 470D5E00_00
+FFEFFFFF C9800008_00
+FFFF007E C77F8200_00
+001C2108 49E10840_00
+FFDFFFFF CA000004_00
+00FFC001 4B7FC001_00
+F01C6B36 CD7E394D_01
+FFBFFFFF CA800002_00
+FFFF7FFF C7000100_00
+FFFFD055 C63EAC00_00
+FF7FFFFF CB000001_00
+027BFFFE 4C1EFFFF_01
+FF3090D0 CB4F6F30_00
+FEFFFFFF CB800001_01
+00082040 49020400_00
+0000006E 42DC0000_00
+FDFFFFFF CC000001_01
+FDFFFF87 CC00001F_01
+04C3764D 4C986EC9_01
+FBFFFFFF CC800001_01
+0006007E 48C00FC0_00
+000001EF 43F78000_00
+F7FFFFFF CD000001_01
+FFBF7FFE CA810004_00
+FF1C4E5A CB63B1A6_00
+EFFFFFFF CD800001_01
+FFF97FFD C8D00060_00
+000001D1 43E88000_00
+DFFFFFFF CE000001_01
+2FFFFFFE 4E3FFFFF_01
+00136721 499B3908_00
+BFFFFFFF CE800001_01
+00004BFF 4697FE00_00
+00000544 44A88000_00
+7FFFFFFF 4EFFFFFF_01
+007FDFFB 4AFFBFF6_00
+FFF8BD5E C8E85440_00
+3FFFFFFF 4E7FFFFF_01
+FFBF8003 CA80FFFA_00
+FFFE45D2 C7DD1700_00
+1FFFFFFF 4DFFFFFF_01
+FFFFFDBF C4104000_00
+FFFFF189 C5677000_00
+0FFFFFFF 4D7FFFFF_01
+FFFE6FFE C7C80100_00
+FC8672A0 CC5E6358_00
+07FFFFFF 4CFFFFFF_01
+00000107 43838000_00
+FFFCCA70 C84D6400_00
+03FFFFFF 4C7FFFFF_01
+002107FE 4A041FF8_00
+FFFF48E7 C7371900_00
+01FFFFFF 4BFFFFFF_01
+F7FDFFEE CD002002_01
+00000010 41800000_00
+00FFFFFF 4B7FFFFF_00
+FFFF01FD C77E0300_00
+0000FAEF 477AEF00_00
+007FFFFF 4AFFFFFE_00
+00FC0001 4B7C0001_00
+000000F5 43750000_00
+003FFFFF 4A7FFFFC_00
+FFE07FC0 C9FC0200_00
+001AFFFB 49D7FFD8_00
+001FFFFF 49FFFFF8_00
+00101FFD 4980FFE8_00
+FF4613B2 CB39EC4E_00
+000FFFFF 497FFFF0_00
+F00005FE CD7FFFA1_01
+00036402 48590080_00
+0007FFFF 48FFFFE0_00
+0404FFFF 4C809FFF_01
+021C2358 4C0708D6_00
+0003FFFF 487FFFC0_00
+FFFFFD02 C43F8000_00
+FFFF41C6 C73E3A00_00
+0001FFFF 47FFFF80_00
+00000007 40E00000_00
+27F174DE 4E1FC5D3_01
+0000FFFF 477FFF00_00
+000083F5 4703F500_00
+FFFFFFFB C0A00000_00
+00007FFF 46FFFE00_00
+FE7FDFFE CBC01001_00
+FFFFFFFD C0400000_00
+00003FFF 467FFC00_00
+DBBFFFFE CE110001_01
+00000404 44808000_00
+00001FFF 45FFF800_00
+FFFFC018 C67FA000_00
+00002853 46214C00_00
+00000FFF 457FF000_00
+03FE007F 4C7F801F_01
+FFFFF124 C56DC000_00
+000007FF 44FFE000_00
+FFFFEFBE C5821000_00
+FFFB9AD8 C88CA500_00
+000003FF 447FC000_00
+DFFFFDFE CE000009_01
+FFFFFD95 C41AC000_00
+000001FF 43FF8000_00
+FDFFFFFF CC000001_01
+FFFFFFD0 C2400000_00
+000000FF 437F0000_00
+0037FFE0 4A5FFF80_00
+010EC496 4B87624B_00
+0000007F 42FE0000_00
+B8007FFF CE8FFF01_01
+00000012 41900000_00
+0000003F 427C0000_00
+02003FFC 4C000FFF_00
+FFFFFFEF C1880000_00
+0000001F 41F80000_00
+FF7FFF02 CB0000FE_00
+FFFFE2CE C5E99000_00
+0000000F 41700000_00
+0000A00D 47200D00_00
+FFFFFE44 C3DE0000_00
+00000007 40E00000_00
+0003FFFA 487FFE80_00
+000038E7 46639C00_00
+00000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_rne.tv b/wally-pipelined/testbench/fp/i32_f32_rne.tv
new file mode 100644
index 000000000..47d0f04bb
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f32_rne.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 4DFF7FFF_01
+FFFFC48E C66DC800_00
+00000000 00000000_00
+007FFFCD 4AFFFF9A_00
+00009E14 471E1400_00
+00000001 3F800000_00
+001FFFFB 49FFFFD8_00
+FFFFDE38 C6072000_00
+00000002 40000000_00
+FFDFFC02 CA000FF8_00
+FB794C79 CC90D671_01
+00000004 40800000_00
+F00FFFFE CD7F0000_01
+00000A95 45295000_00
+00000008 41000000_00
+FFFFF97F C4D02000_00
+FFAE458D CAA374E6_00
+00000010 41800000_00
+0101001E 4B80800F_00
+29EB4561 4E27AD16_01
+00000020 42000000_00
+8001FFEE CEFFFC00_01
+FFFBDD08 C8845F00_00
+00000040 42800000_00
+FFF03FF9 C97C0070_00
+FFCEDF36 CA448328_00
+00000080 43000000_00
+0000F01F 47701F00_00
+00000279 441E4000_00
+00000100 43800000_00
+BFFFFFEF CE800000_01
+00000007 40E00000_00
+00000200 44000000_00
+010BFFFD 4B85FFFE_01
+FFFFF590 C5270000_00
+00000400 44800000_00
+F7FFFEFB CD000010_01
+2FEA335F 4E3FA8CD_01
+00000800 45000000_00
+FFC07FFF CA7E0004_00
+177957FD 4DBBCAC0_01
+00001000 45800000_00
+01FBFFEE 4BFDFFF7_00
+FFFFFAC9 C4A6E000_00
+00002000 46000000_00
+FFFF8004 C6FFF800_00
+FFFBE0DE C883E440_00
+00004000 46800000_00
+3F00001E 4E7C0000_01
+00000000 00000000_00
+00008000 47000000_00
+FF8201FF CAFBFC02_00
+FFFFD2F1 C6343C00_00
+00010000 47800000_00
+0000047E 448FC000_00
+0011B7E5 498DBF28_00
+00020000 48000000_00
+02200200 4C080080_00
+0013F7E6 499FBF30_00
+00040000 48800000_00
+FFFDC007 C80FFE40_00
+FD0ABD9A CC3D509A_01
+00080000 49000000_00
+0000607F 46C0FE00_00
+00003CEE 4673B800_00
+00100000 49800000_00
+DFDFE000 CE008080_00
+FFFB1642 C89D37C0_00
+00200000 4A000000_00
+FC000078 CC7FFFE2_00
+5F70EEC1 4EBEE1DE_01
+00400000 4A800000_00
+00100082 49800410_00
+FFFFFE21 C3EF8000_00
+00800000 4B000000_00
+FF7BFF7F CB040081_00
+FFFF6393 C71C6D00_00
+01000000 4B800000_00
+07EFFEFD 4CFDFFE0_01
+FFFFFDB4 C4130000_00
+02000000 4C000000_00
+8002FFFF CEFFFA00_01
+FFFFC8E2 C65C7800_00
+04000000 4C800000_00
+FFFC0DFE C87C8080_00
+FFFFFF1B C3650000_00
+08000000 4D000000_00
+03FFFDBF 4C7FFF70_01
+0001092B 47849580_00
+10000000 4D800000_00
+007FBFFD 4AFF7FFA_00
+00B4F3D1 4B34F3D1_00
+20000000 4E000000_00
+FEF801FF CB83FF00_01
+00000005 40A00000_00
+40000000 4E800000_00
+BFF3FFFE CE801800_01
+0001806B 47C03580_00
+80000000 CF000000_00
+0000A07E 47207E00_00
+FFFFA59F C6B4C200_00
+C0000000 CE800000_00
+E0007FDE CDFFFC01_01
+FFF8343E C8F97840_00
+E0000000 CE000000_00
+0000FF7C 477F7C00_00
+FFFFFFF7 C1100000_00
+F0000000 CD800000_00
+BDFFFFFC CE840000_01
+FFFFE3C1 C5E1F800_00
+F8000000 CD000000_00
+28003FFE 4E200100_01
+00000000 00000000_00
+FC000000 CC800000_00
+00EEFFFF 4B6EFFFF_00
+00003EB0 467AC000_00
+FE000000 CC000000_00
+00000F7D 4577D000_00
+FFFFFF0F C3710000_00
+FF000000 CB800000_00
+0000406D 4680DA00_00
+0000001A 41D00000_00
+FF800000 CB000000_00
+203FFFFD 4E010000_01
+0000000A 41200000_00
+FFC00000 CA800000_00
+FFFF007C C77F8400_00
+0000009B 431B0000_00
+FFE00000 CA000000_00
+00E00FFF 4B600FFF_00
+00000006 40C00000_00
+FFF00000 C9800000_00
+00200FFC 4A003FF0_00
+00000714 44E28000_00
+FFF80000 C9000000_00
+F800040E CCFFFF7E_01
+00000013 41980000_00
+FFFC0000 C8800000_00
+F83BFFFF CCF88000_01
+FFF3F584 C940A7C0_00
+FFFE0000 C8000000_00
+F6FFFBFF CD100040_01
+FFFFFFF0 C1800000_00
+FFFF0000 C7800000_00
+80003FFD CEFFFF80_01
+FFFFFFAD C2A60000_00
+FFFF8000 C7000000_00
+004001FD 4A8003FA_00
+000D734E 495734E0_00
+FFFFC000 C6800000_00
+006003FE 4AC007FC_00
+FF9DBAA8 CAC48AB0_00
+FFFFE000 C6000000_00
+000403EE 48807DC0_00
+00734668 4AE68CD0_00
+FFFFF000 C5800000_00
+01200002 4B900001_00
+FF8874A5 CAEF16B6_00
+FFFFF800 C5000000_00
+00060001 48C00020_00
+FFFFFFF8 C1000000_00
+FFFFFC00 C4800000_00
+001FFEDD 49FFF6E8_00
+FFFC56DF C86A4840_00
+FFFFFE00 C4000000_00
+EFFFEFFD CD800080_01
+FECF5EC6 CB98509D_00
+FFFFFF00 C3800000_00
+1FF00002 4DFF8000_01
+F6DB786B CD124879_01
+FFFFFF80 C3000000_00
+F0000FBE CD7FFF04_01
+00000009 41100000_00
+FFFFFFC0 C2800000_00
+0010801F 498400F8_00
+0001F238 47F91C00_00
+FFFFFFE0 C2000000_00
+F8000047 CCFFFFF7_01
+0002133C 4804CF00_00
+FFFFFFF0 C1800000_00
+003C001F 4A70007C_00
+000001F1 43F88000_00
+FFFFFFF8 C1000000_00
+FFDFBFFF CA010004_00
+FF5E507F CB21AF81_00
+FFFFFFFC C0800000_00
+037FFFDE 4C5FFFF8_01
+FFFD7C6F C820E440_00
+FFFFFFFE C0000000_00
+000000FD 437D0000_00
+FFFFF42A C53D6000_00
+FFFFFFFF BF800000_00
+021FFF7D 4C07FFDF_01
+0000000A 41200000_00
+FFFFFFFD C0400000_00
+4010FFFF 4E802200_01
+FFFFFFD3 C2340000_00
+FFFFFFFB C0A00000_00
+FFFF800B C6FFEA00_00
+000000B8 43380000_00
+FFFFFFF7 C1100000_00
+FF800803 CAFFEFFA_00
+FFFFFFFE C0000000_00
+FFFFFFEF C1880000_00
+00803FFB 4B003FFB_00
+00000308 44420000_00
+FFFFFFDF C2040000_00
+2107FFFE 4E042000_01
+FFE15D4F C9F51588_00
+FFFFFFBF C2820000_00
+400087FD 4E800110_01
+0000000F 41700000_00
+FFFFFF7F C3010000_00
+FDFC007E CC00FFE0_01
+00000006 40C00000_00
+FFFFFEFF C3808000_00
+FFF80100 C8FFE000_00
+FFFFFE99 C3B38000_00
+FFFFFDFF C4004000_00
+03000002 4C400000_01
+FFF716EA C90E9160_00
+FFFFFBFF C4802000_00
+C7FDFFFF CE600800_01
+FFFFE327 C5E6C800_00
+FFFFF7FF C5001000_00
+0103DFFE 4B81EFFF_00
+07661FD8 4CECC3FB_00
+FFFFEFFF C5800800_00
+83FFFFFE CEF80000_01
+FCD956DB CC49AA49_01
+FFFFDFFF C6000400_00
+FF2001FD CB5FFE03_00
+E4D35BBF CDD96522_01
+FFFFBFFF C6800200_00
+DFEFEFFE CE004040_01
+05DA4300 4CBB4860_00
+FFFF7FFF C7000100_00
+40001040 4E800020_01
+812EDF40 CEFDA242_01
+FFFEFFFF C7800080_00
+FFFFC007 C67FE400_00
+00B6FCC9 4B36FCC9_00
+FFFDFFFF C8000040_00
+000007FE 44FFC000_00
+FC3DE950 CC7085AC_00
+FFFBFFFF C8800020_00
+7FFFFE03 4EFFFFFC_01
+FEB02B59 CBA7EA54_01
+FFF7FFFF C9000010_00
+10FF7FFF 4D87FC00_01
+00008D5E 470D5E00_00
+FFEFFFFF C9800008_00
+FFFF007E C77F8200_00
+001C2108 49E10840_00
+FFDFFFFF CA000004_00
+00FFC001 4B7FC001_00
+F01C6B36 CD7E394D_01
+FFBFFFFF CA800002_00
+FFFF7FFF C7000100_00
+FFFFD055 C63EAC00_00
+FF7FFFFF CB000001_00
+027BFFFE 4C1F0000_01
+FF3090D0 CB4F6F30_00
+FEFFFFFF CB800000_01
+00082040 49020400_00
+0000006E 42DC0000_00
+FDFFFFFF CC000000_01
+FDFFFF87 CC00001E_01
+04C3764D 4C986ECA_01
+FBFFFFFF CC800000_01
+0006007E 48C00FC0_00
+000001EF 43F78000_00
+F7FFFFFF CD000000_01
+FFBF7FFE CA810004_00
+FF1C4E5A CB63B1A6_00
+EFFFFFFF CD800000_01
+FFF97FFD C8D00060_00
+000001D1 43E88000_00
+DFFFFFFF CE000000_01
+2FFFFFFE 4E400000_01
+00136721 499B3908_00
+BFFFFFFF CE800000_01
+00004BFF 4697FE00_00
+00000544 44A88000_00
+7FFFFFFF 4F000000_01
+007FDFFB 4AFFBFF6_00
+FFF8BD5E C8E85440_00
+3FFFFFFF 4E800000_01
+FFBF8003 CA80FFFA_00
+FFFE45D2 C7DD1700_00
+1FFFFFFF 4E000000_01
+FFFFFDBF C4104000_00
+FFFFF189 C5677000_00
+0FFFFFFF 4D800000_01
+FFFE6FFE C7C80100_00
+FC8672A0 CC5E6358_00
+07FFFFFF 4D000000_01
+00000107 43838000_00
+FFFCCA70 C84D6400_00
+03FFFFFF 4C800000_01
+002107FE 4A041FF8_00
+FFFF48E7 C7371900_00
+01FFFFFF 4C000000_01
+F7FDFFEE CD002001_01
+00000010 41800000_00
+00FFFFFF 4B7FFFFF_00
+FFFF01FD C77E0300_00
+0000FAEF 477AEF00_00
+007FFFFF 4AFFFFFE_00
+00FC0001 4B7C0001_00
+000000F5 43750000_00
+003FFFFF 4A7FFFFC_00
+FFE07FC0 C9FC0200_00
+001AFFFB 49D7FFD8_00
+001FFFFF 49FFFFF8_00
+00101FFD 4980FFE8_00
+FF4613B2 CB39EC4E_00
+000FFFFF 497FFFF0_00
+F00005FE CD7FFFA0_01
+00036402 48590080_00
+0007FFFF 48FFFFE0_00
+0404FFFF 4C80A000_01
+021C2358 4C0708D6_00
+0003FFFF 487FFFC0_00
+FFFFFD02 C43F8000_00
+FFFF41C6 C73E3A00_00
+0001FFFF 47FFFF80_00
+00000007 40E00000_00
+27F174DE 4E1FC5D3_01
+0000FFFF 477FFF00_00
+000083F5 4703F500_00
+FFFFFFFB C0A00000_00
+00007FFF 46FFFE00_00
+FE7FDFFE CBC01001_00
+FFFFFFFD C0400000_00
+00003FFF 467FFC00_00
+DBBFFFFE CE110000_01
+00000404 44808000_00
+00001FFF 45FFF800_00
+FFFFC018 C67FA000_00
+00002853 46214C00_00
+00000FFF 457FF000_00
+03FE007F 4C7F8020_01
+FFFFF124 C56DC000_00
+000007FF 44FFE000_00
+FFFFEFBE C5821000_00
+FFFB9AD8 C88CA500_00
+000003FF 447FC000_00
+DFFFFDFE CE000008_01
+FFFFFD95 C41AC000_00
+000001FF 43FF8000_00
+FDFFFFFF CC000000_01
+FFFFFFD0 C2400000_00
+000000FF 437F0000_00
+0037FFE0 4A5FFF80_00
+010EC496 4B87624B_00
+0000007F 42FE0000_00
+B8007FFF CE8FFF00_01
+00000012 41900000_00
+0000003F 427C0000_00
+02003FFC 4C000FFF_00
+FFFFFFEF C1880000_00
+0000001F 41F80000_00
+FF7FFF02 CB0000FE_00
+FFFFE2CE C5E99000_00
+0000000F 41700000_00
+0000A00D 47200D00_00
+FFFFFE44 C3DE0000_00
+00000007 40E00000_00
+0003FFFA 487FFE80_00
+000038E7 46639C00_00
+00000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_ru.tv b/wally-pipelined/testbench/fp/i32_f32_ru.tv
new file mode 100644
index 000000000..b13580f92
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f32_ru.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 4DFF8000_01
+FFFFC48E C66DC800_00
+00000000 00000000_00
+007FFFCD 4AFFFF9A_00
+00009E14 471E1400_00
+00000001 3F800000_00
+001FFFFB 49FFFFD8_00
+FFFFDE38 C6072000_00
+00000002 40000000_00
+FFDFFC02 CA000FF8_00
+FB794C79 CC90D670_01
+00000004 40800000_00
+F00FFFFE CD7F0000_01
+00000A95 45295000_00
+00000008 41000000_00
+FFFFF97F C4D02000_00
+FFAE458D CAA374E6_00
+00000010 41800000_00
+0101001E 4B80800F_00
+29EB4561 4E27AD16_01
+00000020 42000000_00
+8001FFEE CEFFFC00_01
+FFFBDD08 C8845F00_00
+00000040 42800000_00
+FFF03FF9 C97C0070_00
+FFCEDF36 CA448328_00
+00000080 43000000_00
+0000F01F 47701F00_00
+00000279 441E4000_00
+00000100 43800000_00
+BFFFFFEF CE800000_01
+00000007 40E00000_00
+00000200 44000000_00
+010BFFFD 4B85FFFF_01
+FFFFF590 C5270000_00
+00000400 44800000_00
+F7FFFEFB CD000010_01
+2FEA335F 4E3FA8CE_01
+00000800 45000000_00
+FFC07FFF CA7E0004_00
+177957FD 4DBBCAC0_01
+00001000 45800000_00
+01FBFFEE 4BFDFFF7_00
+FFFFFAC9 C4A6E000_00
+00002000 46000000_00
+FFFF8004 C6FFF800_00
+FFFBE0DE C883E440_00
+00004000 46800000_00
+3F00001E 4E7C0001_01
+00000000 00000000_00
+00008000 47000000_00
+FF8201FF CAFBFC02_00
+FFFFD2F1 C6343C00_00
+00010000 47800000_00
+0000047E 448FC000_00
+0011B7E5 498DBF28_00
+00020000 48000000_00
+02200200 4C080080_00
+0013F7E6 499FBF30_00
+00040000 48800000_00
+FFFDC007 C80FFE40_00
+FD0ABD9A CC3D5099_01
+00080000 49000000_00
+0000607F 46C0FE00_00
+00003CEE 4673B800_00
+00100000 49800000_00
+DFDFE000 CE008080_00
+FFFB1642 C89D37C0_00
+00200000 4A000000_00
+FC000078 CC7FFFE2_00
+5F70EEC1 4EBEE1DE_01
+00400000 4A800000_00
+00100082 49800410_00
+FFFFFE21 C3EF8000_00
+00800000 4B000000_00
+FF7BFF7F CB040081_00
+FFFF6393 C71C6D00_00
+01000000 4B800000_00
+07EFFEFD 4CFDFFE0_01
+FFFFFDB4 C4130000_00
+02000000 4C000000_00
+8002FFFF CEFFFA00_01
+FFFFC8E2 C65C7800_00
+04000000 4C800000_00
+FFFC0DFE C87C8080_00
+FFFFFF1B C3650000_00
+08000000 4D000000_00
+03FFFDBF 4C7FFF70_01
+0001092B 47849580_00
+10000000 4D800000_00
+007FBFFD 4AFF7FFA_00
+00B4F3D1 4B34F3D1_00
+20000000 4E000000_00
+FEF801FF CB83FF00_01
+00000005 40A00000_00
+40000000 4E800000_00
+BFF3FFFE CE801800_01
+0001806B 47C03580_00
+80000000 CF000000_00
+0000A07E 47207E00_00
+FFFFA59F C6B4C200_00
+C0000000 CE800000_00
+E0007FDE CDFFFC01_01
+FFF8343E C8F97840_00
+E0000000 CE000000_00
+0000FF7C 477F7C00_00
+FFFFFFF7 C1100000_00
+F0000000 CD800000_00
+BDFFFFFC CE840000_01
+FFFFE3C1 C5E1F800_00
+F8000000 CD000000_00
+28003FFE 4E200100_01
+00000000 00000000_00
+FC000000 CC800000_00
+00EEFFFF 4B6EFFFF_00
+00003EB0 467AC000_00
+FE000000 CC000000_00
+00000F7D 4577D000_00
+FFFFFF0F C3710000_00
+FF000000 CB800000_00
+0000406D 4680DA00_00
+0000001A 41D00000_00
+FF800000 CB000000_00
+203FFFFD 4E010000_01
+0000000A 41200000_00
+FFC00000 CA800000_00
+FFFF007C C77F8400_00
+0000009B 431B0000_00
+FFE00000 CA000000_00
+00E00FFF 4B600FFF_00
+00000006 40C00000_00
+FFF00000 C9800000_00
+00200FFC 4A003FF0_00
+00000714 44E28000_00
+FFF80000 C9000000_00
+F800040E CCFFFF7E_01
+00000013 41980000_00
+FFFC0000 C8800000_00
+F83BFFFF CCF88000_01
+FFF3F584 C940A7C0_00
+FFFE0000 C8000000_00
+F6FFFBFF CD100040_01
+FFFFFFF0 C1800000_00
+FFFF0000 C7800000_00
+80003FFD CEFFFF80_01
+FFFFFFAD C2A60000_00
+FFFF8000 C7000000_00
+004001FD 4A8003FA_00
+000D734E 495734E0_00
+FFFFC000 C6800000_00
+006003FE 4AC007FC_00
+FF9DBAA8 CAC48AB0_00
+FFFFE000 C6000000_00
+000403EE 48807DC0_00
+00734668 4AE68CD0_00
+FFFFF000 C5800000_00
+01200002 4B900001_00
+FF8874A5 CAEF16B6_00
+FFFFF800 C5000000_00
+00060001 48C00020_00
+FFFFFFF8 C1000000_00
+FFFFFC00 C4800000_00
+001FFEDD 49FFF6E8_00
+FFFC56DF C86A4840_00
+FFFFFE00 C4000000_00
+EFFFEFFD CD800080_01
+FECF5EC6 CB98509D_00
+FFFFFF00 C3800000_00
+1FF00002 4DFF8001_01
+F6DB786B CD124879_01
+FFFFFF80 C3000000_00
+F0000FBE CD7FFF04_01
+00000009 41100000_00
+FFFFFFC0 C2800000_00
+0010801F 498400F8_00
+0001F238 47F91C00_00
+FFFFFFE0 C2000000_00
+F8000047 CCFFFFF7_01
+0002133C 4804CF00_00
+FFFFFFF0 C1800000_00
+003C001F 4A70007C_00
+000001F1 43F88000_00
+FFFFFFF8 C1000000_00
+FFDFBFFF CA010004_00
+FF5E507F CB21AF81_00
+FFFFFFFC C0800000_00
+037FFFDE 4C5FFFF8_01
+FFFD7C6F C820E440_00
+FFFFFFFE C0000000_00
+000000FD 437D0000_00
+FFFFF42A C53D6000_00
+FFFFFFFF BF800000_00
+021FFF7D 4C07FFE0_01
+0000000A 41200000_00
+FFFFFFFD C0400000_00
+4010FFFF 4E802200_01
+FFFFFFD3 C2340000_00
+FFFFFFFB C0A00000_00
+FFFF800B C6FFEA00_00
+000000B8 43380000_00
+FFFFFFF7 C1100000_00
+FF800803 CAFFEFFA_00
+FFFFFFFE C0000000_00
+FFFFFFEF C1880000_00
+00803FFB 4B003FFB_00
+00000308 44420000_00
+FFFFFFDF C2040000_00
+2107FFFE 4E042000_01
+FFE15D4F C9F51588_00
+FFFFFFBF C2820000_00
+400087FD 4E800110_01
+0000000F 41700000_00
+FFFFFF7F C3010000_00
+FDFC007E CC00FFE0_01
+00000006 40C00000_00
+FFFFFEFF C3808000_00
+FFF80100 C8FFE000_00
+FFFFFE99 C3B38000_00
+FFFFFDFF C4004000_00
+03000002 4C400001_01
+FFF716EA C90E9160_00
+FFFFFBFF C4802000_00
+C7FDFFFF CE600800_01
+FFFFE327 C5E6C800_00
+FFFFF7FF C5001000_00
+0103DFFE 4B81EFFF_00
+07661FD8 4CECC3FB_00
+FFFFEFFF C5800800_00
+83FFFFFE CEF80000_01
+FCD956DB CC49AA49_01
+FFFFDFFF C6000400_00
+FF2001FD CB5FFE03_00
+E4D35BBF CDD96522_01
+FFFFBFFF C6800200_00
+DFEFEFFE CE004040_01
+05DA4300 4CBB4860_00
+FFFF7FFF C7000100_00
+40001040 4E800021_01
+812EDF40 CEFDA241_01
+FFFEFFFF C7800080_00
+FFFFC007 C67FE400_00
+00B6FCC9 4B36FCC9_00
+FFFDFFFF C8000040_00
+000007FE 44FFC000_00
+FC3DE950 CC7085AC_00
+FFFBFFFF C8800020_00
+7FFFFE03 4EFFFFFD_01
+FEB02B59 CBA7EA53_01
+FFF7FFFF C9000010_00
+10FF7FFF 4D87FC00_01
+00008D5E 470D5E00_00
+FFEFFFFF C9800008_00
+FFFF007E C77F8200_00
+001C2108 49E10840_00
+FFDFFFFF CA000004_00
+00FFC001 4B7FC001_00
+F01C6B36 CD7E394C_01
+FFBFFFFF CA800002_00
+FFFF7FFF C7000100_00
+FFFFD055 C63EAC00_00
+FF7FFFFF CB000001_00
+027BFFFE 4C1F0000_01
+FF3090D0 CB4F6F30_00
+FEFFFFFF CB800000_01
+00082040 49020400_00
+0000006E 42DC0000_00
+FDFFFFFF CC000000_01
+FDFFFF87 CC00001E_01
+04C3764D 4C986ECA_01
+FBFFFFFF CC800000_01
+0006007E 48C00FC0_00
+000001EF 43F78000_00
+F7FFFFFF CD000000_01
+FFBF7FFE CA810004_00
+FF1C4E5A CB63B1A6_00
+EFFFFFFF CD800000_01
+FFF97FFD C8D00060_00
+000001D1 43E88000_00
+DFFFFFFF CE000000_01
+2FFFFFFE 4E400000_01
+00136721 499B3908_00
+BFFFFFFF CE800000_01
+00004BFF 4697FE00_00
+00000544 44A88000_00
+7FFFFFFF 4F000000_01
+007FDFFB 4AFFBFF6_00
+FFF8BD5E C8E85440_00
+3FFFFFFF 4E800000_01
+FFBF8003 CA80FFFA_00
+FFFE45D2 C7DD1700_00
+1FFFFFFF 4E000000_01
+FFFFFDBF C4104000_00
+FFFFF189 C5677000_00
+0FFFFFFF 4D800000_01
+FFFE6FFE C7C80100_00
+FC8672A0 CC5E6358_00
+07FFFFFF 4D000000_01
+00000107 43838000_00
+FFFCCA70 C84D6400_00
+03FFFFFF 4C800000_01
+002107FE 4A041FF8_00
+FFFF48E7 C7371900_00
+01FFFFFF 4C000000_01
+F7FDFFEE CD002001_01
+00000010 41800000_00
+00FFFFFF 4B7FFFFF_00
+FFFF01FD C77E0300_00
+0000FAEF 477AEF00_00
+007FFFFF 4AFFFFFE_00
+00FC0001 4B7C0001_00
+000000F5 43750000_00
+003FFFFF 4A7FFFFC_00
+FFE07FC0 C9FC0200_00
+001AFFFB 49D7FFD8_00
+001FFFFF 49FFFFF8_00
+00101FFD 4980FFE8_00
+FF4613B2 CB39EC4E_00
+000FFFFF 497FFFF0_00
+F00005FE CD7FFFA0_01
+00036402 48590080_00
+0007FFFF 48FFFFE0_00
+0404FFFF 4C80A000_01
+021C2358 4C0708D6_00
+0003FFFF 487FFFC0_00
+FFFFFD02 C43F8000_00
+FFFF41C6 C73E3A00_00
+0001FFFF 47FFFF80_00
+00000007 40E00000_00
+27F174DE 4E1FC5D4_01
+0000FFFF 477FFF00_00
+000083F5 4703F500_00
+FFFFFFFB C0A00000_00
+00007FFF 46FFFE00_00
+FE7FDFFE CBC01001_00
+FFFFFFFD C0400000_00
+00003FFF 467FFC00_00
+DBBFFFFE CE110000_01
+00000404 44808000_00
+00001FFF 45FFF800_00
+FFFFC018 C67FA000_00
+00002853 46214C00_00
+00000FFF 457FF000_00
+03FE007F 4C7F8020_01
+FFFFF124 C56DC000_00
+000007FF 44FFE000_00
+FFFFEFBE C5821000_00
+FFFB9AD8 C88CA500_00
+000003FF 447FC000_00
+DFFFFDFE CE000008_01
+FFFFFD95 C41AC000_00
+000001FF 43FF8000_00
+FDFFFFFF CC000000_01
+FFFFFFD0 C2400000_00
+000000FF 437F0000_00
+0037FFE0 4A5FFF80_00
+010EC496 4B87624B_00
+0000007F 42FE0000_00
+B8007FFF CE8FFF00_01
+00000012 41900000_00
+0000003F 427C0000_00
+02003FFC 4C000FFF_00
+FFFFFFEF C1880000_00
+0000001F 41F80000_00
+FF7FFF02 CB0000FE_00
+FFFFE2CE C5E99000_00
+0000000F 41700000_00
+0000A00D 47200D00_00
+FFFFFE44 C3DE0000_00
+00000007 40E00000_00
+0003FFFA 487FFE80_00
+000038E7 46639C00_00
+00000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_rz.tv b/wally-pipelined/testbench/fp/i32_f32_rz.tv
new file mode 100644
index 000000000..7aa7eb823
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f32_rz.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 4DFF7FFF_01
+FFFFC48E C66DC800_00
+00000000 00000000_00
+007FFFCD 4AFFFF9A_00
+00009E14 471E1400_00
+00000001 3F800000_00
+001FFFFB 49FFFFD8_00
+FFFFDE38 C6072000_00
+00000002 40000000_00
+FFDFFC02 CA000FF8_00
+FB794C79 CC90D670_01
+00000004 40800000_00
+F00FFFFE CD7F0000_01
+00000A95 45295000_00
+00000008 41000000_00
+FFFFF97F C4D02000_00
+FFAE458D CAA374E6_00
+00000010 41800000_00
+0101001E 4B80800F_00
+29EB4561 4E27AD15_01
+00000020 42000000_00
+8001FFEE CEFFFC00_01
+FFFBDD08 C8845F00_00
+00000040 42800000_00
+FFF03FF9 C97C0070_00
+FFCEDF36 CA448328_00
+00000080 43000000_00
+0000F01F 47701F00_00
+00000279 441E4000_00
+00000100 43800000_00
+BFFFFFEF CE800000_01
+00000007 40E00000_00
+00000200 44000000_00
+010BFFFD 4B85FFFE_01
+FFFFF590 C5270000_00
+00000400 44800000_00
+F7FFFEFB CD000010_01
+2FEA335F 4E3FA8CD_01
+00000800 45000000_00
+FFC07FFF CA7E0004_00
+177957FD 4DBBCABF_01
+00001000 45800000_00
+01FBFFEE 4BFDFFF7_00
+FFFFFAC9 C4A6E000_00
+00002000 46000000_00
+FFFF8004 C6FFF800_00
+FFFBE0DE C883E440_00
+00004000 46800000_00
+3F00001E 4E7C0000_01
+00000000 00000000_00
+00008000 47000000_00
+FF8201FF CAFBFC02_00
+FFFFD2F1 C6343C00_00
+00010000 47800000_00
+0000047E 448FC000_00
+0011B7E5 498DBF28_00
+00020000 48000000_00
+02200200 4C080080_00
+0013F7E6 499FBF30_00
+00040000 48800000_00
+FFFDC007 C80FFE40_00
+FD0ABD9A CC3D5099_01
+00080000 49000000_00
+0000607F 46C0FE00_00
+00003CEE 4673B800_00
+00100000 49800000_00
+DFDFE000 CE008080_00
+FFFB1642 C89D37C0_00
+00200000 4A000000_00
+FC000078 CC7FFFE2_00
+5F70EEC1 4EBEE1DD_01
+00400000 4A800000_00
+00100082 49800410_00
+FFFFFE21 C3EF8000_00
+00800000 4B000000_00
+FF7BFF7F CB040081_00
+FFFF6393 C71C6D00_00
+01000000 4B800000_00
+07EFFEFD 4CFDFFDF_01
+FFFFFDB4 C4130000_00
+02000000 4C000000_00
+8002FFFF CEFFFA00_01
+FFFFC8E2 C65C7800_00
+04000000 4C800000_00
+FFFC0DFE C87C8080_00
+FFFFFF1B C3650000_00
+08000000 4D000000_00
+03FFFDBF 4C7FFF6F_01
+0001092B 47849580_00
+10000000 4D800000_00
+007FBFFD 4AFF7FFA_00
+00B4F3D1 4B34F3D1_00
+20000000 4E000000_00
+FEF801FF CB83FF00_01
+00000005 40A00000_00
+40000000 4E800000_00
+BFF3FFFE CE801800_01
+0001806B 47C03580_00
+80000000 CF000000_00
+0000A07E 47207E00_00
+FFFFA59F C6B4C200_00
+C0000000 CE800000_00
+E0007FDE CDFFFC01_01
+FFF8343E C8F97840_00
+E0000000 CE000000_00
+0000FF7C 477F7C00_00
+FFFFFFF7 C1100000_00
+F0000000 CD800000_00
+BDFFFFFC CE840000_01
+FFFFE3C1 C5E1F800_00
+F8000000 CD000000_00
+28003FFE 4E2000FF_01
+00000000 00000000_00
+FC000000 CC800000_00
+00EEFFFF 4B6EFFFF_00
+00003EB0 467AC000_00
+FE000000 CC000000_00
+00000F7D 4577D000_00
+FFFFFF0F C3710000_00
+FF000000 CB800000_00
+0000406D 4680DA00_00
+0000001A 41D00000_00
+FF800000 CB000000_00
+203FFFFD 4E00FFFF_01
+0000000A 41200000_00
+FFC00000 CA800000_00
+FFFF007C C77F8400_00
+0000009B 431B0000_00
+FFE00000 CA000000_00
+00E00FFF 4B600FFF_00
+00000006 40C00000_00
+FFF00000 C9800000_00
+00200FFC 4A003FF0_00
+00000714 44E28000_00
+FFF80000 C9000000_00
+F800040E CCFFFF7E_01
+00000013 41980000_00
+FFFC0000 C8800000_00
+F83BFFFF CCF88000_01
+FFF3F584 C940A7C0_00
+FFFE0000 C8000000_00
+F6FFFBFF CD100040_01
+FFFFFFF0 C1800000_00
+FFFF0000 C7800000_00
+80003FFD CEFFFF80_01
+FFFFFFAD C2A60000_00
+FFFF8000 C7000000_00
+004001FD 4A8003FA_00
+000D734E 495734E0_00
+FFFFC000 C6800000_00
+006003FE 4AC007FC_00
+FF9DBAA8 CAC48AB0_00
+FFFFE000 C6000000_00
+000403EE 48807DC0_00
+00734668 4AE68CD0_00
+FFFFF000 C5800000_00
+01200002 4B900001_00
+FF8874A5 CAEF16B6_00
+FFFFF800 C5000000_00
+00060001 48C00020_00
+FFFFFFF8 C1000000_00
+FFFFFC00 C4800000_00
+001FFEDD 49FFF6E8_00
+FFFC56DF C86A4840_00
+FFFFFE00 C4000000_00
+EFFFEFFD CD800080_01
+FECF5EC6 CB98509D_00
+FFFFFF00 C3800000_00
+1FF00002 4DFF8000_01
+F6DB786B CD124879_01
+FFFFFF80 C3000000_00
+F0000FBE CD7FFF04_01
+00000009 41100000_00
+FFFFFFC0 C2800000_00
+0010801F 498400F8_00
+0001F238 47F91C00_00
+FFFFFFE0 C2000000_00
+F8000047 CCFFFFF7_01
+0002133C 4804CF00_00
+FFFFFFF0 C1800000_00
+003C001F 4A70007C_00
+000001F1 43F88000_00
+FFFFFFF8 C1000000_00
+FFDFBFFF CA010004_00
+FF5E507F CB21AF81_00
+FFFFFFFC C0800000_00
+037FFFDE 4C5FFFF7_01
+FFFD7C6F C820E440_00
+FFFFFFFE C0000000_00
+000000FD 437D0000_00
+FFFFF42A C53D6000_00
+FFFFFFFF BF800000_00
+021FFF7D 4C07FFDF_01
+0000000A 41200000_00
+FFFFFFFD C0400000_00
+4010FFFF 4E8021FF_01
+FFFFFFD3 C2340000_00
+FFFFFFFB C0A00000_00
+FFFF800B C6FFEA00_00
+000000B8 43380000_00
+FFFFFFF7 C1100000_00
+FF800803 CAFFEFFA_00
+FFFFFFFE C0000000_00
+FFFFFFEF C1880000_00
+00803FFB 4B003FFB_00
+00000308 44420000_00
+FFFFFFDF C2040000_00
+2107FFFE 4E041FFF_01
+FFE15D4F C9F51588_00
+FFFFFFBF C2820000_00
+400087FD 4E80010F_01
+0000000F 41700000_00
+FFFFFF7F C3010000_00
+FDFC007E CC00FFE0_01
+00000006 40C00000_00
+FFFFFEFF C3808000_00
+FFF80100 C8FFE000_00
+FFFFFE99 C3B38000_00
+FFFFFDFF C4004000_00
+03000002 4C400000_01
+FFF716EA C90E9160_00
+FFFFFBFF C4802000_00
+C7FDFFFF CE600800_01
+FFFFE327 C5E6C800_00
+FFFFF7FF C5001000_00
+0103DFFE 4B81EFFF_00
+07661FD8 4CECC3FB_00
+FFFFEFFF C5800800_00
+83FFFFFE CEF80000_01
+FCD956DB CC49AA49_01
+FFFFDFFF C6000400_00
+FF2001FD CB5FFE03_00
+E4D35BBF CDD96522_01
+FFFFBFFF C6800200_00
+DFEFEFFE CE004040_01
+05DA4300 4CBB4860_00
+FFFF7FFF C7000100_00
+40001040 4E800020_01
+812EDF40 CEFDA241_01
+FFFEFFFF C7800080_00
+FFFFC007 C67FE400_00
+00B6FCC9 4B36FCC9_00
+FFFDFFFF C8000040_00
+000007FE 44FFC000_00
+FC3DE950 CC7085AC_00
+FFFBFFFF C8800020_00
+7FFFFE03 4EFFFFFC_01
+FEB02B59 CBA7EA53_01
+FFF7FFFF C9000010_00
+10FF7FFF 4D87FBFF_01
+00008D5E 470D5E00_00
+FFEFFFFF C9800008_00
+FFFF007E C77F8200_00
+001C2108 49E10840_00
+FFDFFFFF CA000004_00
+00FFC001 4B7FC001_00
+F01C6B36 CD7E394C_01
+FFBFFFFF CA800002_00
+FFFF7FFF C7000100_00
+FFFFD055 C63EAC00_00
+FF7FFFFF CB000001_00
+027BFFFE 4C1EFFFF_01
+FF3090D0 CB4F6F30_00
+FEFFFFFF CB800000_01
+00082040 49020400_00
+0000006E 42DC0000_00
+FDFFFFFF CC000000_01
+FDFFFF87 CC00001E_01
+04C3764D 4C986EC9_01
+FBFFFFFF CC800000_01
+0006007E 48C00FC0_00
+000001EF 43F78000_00
+F7FFFFFF CD000000_01
+FFBF7FFE CA810004_00
+FF1C4E5A CB63B1A6_00
+EFFFFFFF CD800000_01
+FFF97FFD C8D00060_00
+000001D1 43E88000_00
+DFFFFFFF CE000000_01
+2FFFFFFE 4E3FFFFF_01
+00136721 499B3908_00
+BFFFFFFF CE800000_01
+00004BFF 4697FE00_00
+00000544 44A88000_00
+7FFFFFFF 4EFFFFFF_01
+007FDFFB 4AFFBFF6_00
+FFF8BD5E C8E85440_00
+3FFFFFFF 4E7FFFFF_01
+FFBF8003 CA80FFFA_00
+FFFE45D2 C7DD1700_00
+1FFFFFFF 4DFFFFFF_01
+FFFFFDBF C4104000_00
+FFFFF189 C5677000_00
+0FFFFFFF 4D7FFFFF_01
+FFFE6FFE C7C80100_00
+FC8672A0 CC5E6358_00
+07FFFFFF 4CFFFFFF_01
+00000107 43838000_00
+FFFCCA70 C84D6400_00
+03FFFFFF 4C7FFFFF_01
+002107FE 4A041FF8_00
+FFFF48E7 C7371900_00
+01FFFFFF 4BFFFFFF_01
+F7FDFFEE CD002001_01
+00000010 41800000_00
+00FFFFFF 4B7FFFFF_00
+FFFF01FD C77E0300_00
+0000FAEF 477AEF00_00
+007FFFFF 4AFFFFFE_00
+00FC0001 4B7C0001_00
+000000F5 43750000_00
+003FFFFF 4A7FFFFC_00
+FFE07FC0 C9FC0200_00
+001AFFFB 49D7FFD8_00
+001FFFFF 49FFFFF8_00
+00101FFD 4980FFE8_00
+FF4613B2 CB39EC4E_00
+000FFFFF 497FFFF0_00
+F00005FE CD7FFFA0_01
+00036402 48590080_00
+0007FFFF 48FFFFE0_00
+0404FFFF 4C809FFF_01
+021C2358 4C0708D6_00
+0003FFFF 487FFFC0_00
+FFFFFD02 C43F8000_00
+FFFF41C6 C73E3A00_00
+0001FFFF 47FFFF80_00
+00000007 40E00000_00
+27F174DE 4E1FC5D3_01
+0000FFFF 477FFF00_00
+000083F5 4703F500_00
+FFFFFFFB C0A00000_00
+00007FFF 46FFFE00_00
+FE7FDFFE CBC01001_00
+FFFFFFFD C0400000_00
+00003FFF 467FFC00_00
+DBBFFFFE CE110000_01
+00000404 44808000_00
+00001FFF 45FFF800_00
+FFFFC018 C67FA000_00
+00002853 46214C00_00
+00000FFF 457FF000_00
+03FE007F 4C7F801F_01
+FFFFF124 C56DC000_00
+000007FF 44FFE000_00
+FFFFEFBE C5821000_00
+FFFB9AD8 C88CA500_00
+000003FF 447FC000_00
+DFFFFDFE CE000008_01
+FFFFFD95 C41AC000_00
+000001FF 43FF8000_00
+FDFFFFFF CC000000_01
+FFFFFFD0 C2400000_00
+000000FF 437F0000_00
+0037FFE0 4A5FFF80_00
+010EC496 4B87624B_00
+0000007F 42FE0000_00
+B8007FFF CE8FFF00_01
+00000012 41900000_00
+0000003F 427C0000_00
+02003FFC 4C000FFF_00
+FFFFFFEF C1880000_00
+0000001F 41F80000_00
+FF7FFF02 CB0000FE_00
+FFFFE2CE C5E99000_00
+0000000F 41700000_00
+0000A00D 47200D00_00
+FFFFFE44 C3DE0000_00
+00000007 40E00000_00
+0003FFFA 487FFE80_00
+000038E7 46639C00_00
+00000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rd.tv b/wally-pipelined/testbench/fp/i32_f64_rd.tv
new file mode 100644
index 000000000..7f04b63fd
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f64_rd.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 41BFEFFFEF000000_00
+FFFFC48E C0CDB90000000000_00
+00000000 0000000000000000_00
+007FFFCD 415FFFF340000000_00
+00009E14 40E3C28000000000_00
+00000001 3FF0000000000000_00
+001FFFFB 413FFFFB00000000_00
+FFFFDE38 C0C0E40000000000_00
+00000002 4000000000000000_00
+FFDFFC02 C14001FF00000000_00
+FB794C79 C1921ACE1C000000_00
+00000004 4010000000000000_00
+F00FFFFE C1AFE00004000000_00
+00000A95 40A52A0000000000_00
+00000008 4020000000000000_00
+FFFFF97F C09A040000000000_00
+FFAE458D C1546E9CC0000000_00
+00000010 4030000000000000_00
+0101001E 41701001E0000000_00
+29EB4561 41C4F5A2B0800000_00
+00000020 4040000000000000_00
+8001FFEE C1DFFF8004800000_00
+FFFBDD08 C1108BE000000000_00
+00000040 4050000000000000_00
+FFF03FF9 C12F800E00000000_00
+FFCEDF36 C148906500000000_00
+00000080 4060000000000000_00
+0000F01F 40EE03E000000000_00
+00000279 4083C80000000000_00
+00000100 4070000000000000_00
+BFFFFFEF C1D0000004400000_00
+00000007 401C000000000000_00
+00000200 4080000000000000_00
+010BFFFD 4170BFFFD0000000_00
+FFFFF590 C0A4E00000000000_00
+00000400 4090000000000000_00
+F7FFFEFB C1A000020A000000_00
+2FEA335F 41C7F519AF800000_00
+00000800 40A0000000000000_00
+FFC07FFF C14FC00080000000_00
+177957FD 41B77957FD000000_00
+00001000 40B0000000000000_00
+01FBFFEE 417FBFFEE0000000_00
+FFFFFAC9 C094DC0000000000_00
+00002000 40C0000000000000_00
+FFFF8004 C0DFFF0000000000_00
+FFFBE0DE C1107C8800000000_00
+00004000 40D0000000000000_00
+3F00001E 41CF80000F000000_00
+00000000 0000000000000000_00
+00008000 40E0000000000000_00
+FF8201FF C15F7F8040000000_00
+FFFFD2F1 C0C6878000000000_00
+00010000 40F0000000000000_00
+0000047E 4091F80000000000_00
+0011B7E5 4131B7E500000000_00
+00020000 4100000000000000_00
+02200200 4181001000000000_00
+0013F7E6 4133F7E600000000_00
+00040000 4110000000000000_00
+FFFDC007 C101FFC800000000_00
+FD0ABD9A C187AA1330000000_00
+00080000 4120000000000000_00
+0000607F 40D81FC000000000_00
+00003CEE 40CE770000000000_00
+00100000 4130000000000000_00
+DFDFE000 C1C0101000000000_00
+FFFB1642 C113A6F800000000_00
+00200000 4140000000000000_00
+FC000078 C18FFFFC40000000_00
+5F70EEC1 41D7DC3BB0400000_00
+00400000 4150000000000000_00
+00100082 4130008200000000_00
+FFFFFE21 C07DF00000000000_00
+00800000 4160000000000000_00
+FF7BFF7F C160801020000000_00
+FFFF6393 C0E38DA000000000_00
+01000000 4170000000000000_00
+07EFFEFD 419FBFFBF4000000_00
+FFFFFDB4 C082600000000000_00
+02000000 4180000000000000_00
+8002FFFF C1DFFF4000400000_00
+FFFFC8E2 C0CB8F0000000000_00
+04000000 4190000000000000_00
+FFFC0DFE C10F901000000000_00
+FFFFFF1B C06CA00000000000_00
+08000000 41A0000000000000_00
+03FFFDBF 418FFFEDF8000000_00
+0001092B 40F092B000000000_00
+10000000 41B0000000000000_00
+007FBFFD 415FEFFF40000000_00
+00B4F3D1 41669E7A20000000_00
+20000000 41C0000000000000_00
+FEF801FF C1707FE010000000_00
+00000005 4014000000000000_00
+40000000 41D0000000000000_00
+BFF3FFFE C1D0030000800000_00
+0001806B 40F806B000000000_00
+80000000 C1E0000000000000_00
+0000A07E 40E40FC000000000_00
+FFFFA59F C0D6984000000000_00
+C0000000 C1D0000000000000_00
+E0007FDE C1BFFF8022000000_00
+FFF8343E C11F2F0800000000_00
+E0000000 C1C0000000000000_00
+0000FF7C 40EFEF8000000000_00
+FFFFFFF7 C022000000000000_00
+F0000000 C1B0000000000000_00
+BDFFFFFC C1D0800001000000_00
+FFFFE3C1 C0BC3F0000000000_00
+F8000000 C1A0000000000000_00
+28003FFE 41C4001FFF000000_00
+00000000 0000000000000000_00
+FC000000 C190000000000000_00
+00EEFFFF 416DDFFFE0000000_00
+00003EB0 40CF580000000000_00
+FE000000 C180000000000000_00
+00000F7D 40AEFA0000000000_00
+FFFFFF0F C06E200000000000_00
+FF000000 C170000000000000_00
+0000406D 40D01B4000000000_00
+0000001A 403A000000000000_00
+FF800000 C160000000000000_00
+203FFFFD 41C01FFFFE800000_00
+0000000A 4024000000000000_00
+FFC00000 C150000000000000_00
+FFFF007C C0EFF08000000000_00
+0000009B 4063600000000000_00
+FFE00000 C140000000000000_00
+00E00FFF 416C01FFE0000000_00
+00000006 4018000000000000_00
+FFF00000 C130000000000000_00
+00200FFC 414007FE00000000_00
+00000714 409C500000000000_00
+FFF80000 C120000000000000_00
+F800040E C19FFFEFC8000000_00
+00000013 4033000000000000_00
+FFFC0000 C110000000000000_00
+F83BFFFF C19F100004000000_00
+FFF3F584 C12814F800000000_00
+FFFE0000 C100000000000000_00
+F6FFFBFF C1A2000802000000_00
+FFFFFFF0 C030000000000000_00
+FFFF0000 C0F0000000000000_00
+80003FFD C1DFFFF000C00000_00
+FFFFFFAD C054C00000000000_00
+FFFF8000 C0E0000000000000_00
+004001FD 4150007F40000000_00
+000D734E 412AE69C00000000_00
+FFFFC000 C0D0000000000000_00
+006003FE 415800FF80000000_00
+FF9DBAA8 C158915600000000_00
+FFFFE000 C0C0000000000000_00
+000403EE 41100FB800000000_00
+00734668 415CD19A00000000_00
+FFFFF000 C0B0000000000000_00
+01200002 4172000020000000_00
+FF8874A5 C15DE2D6C0000000_00
+FFFFF800 C0A0000000000000_00
+00060001 4118000400000000_00
+FFFFFFF8 C020000000000000_00
+FFFFFC00 C090000000000000_00
+001FFEDD 413FFEDD00000000_00
+FFFC56DF C10D490800000000_00
+FFFFFE00 C080000000000000_00
+EFFFEFFD C1B0001003000000_00
+FECF5EC6 C1730A13A0000000_00
+FFFFFF00 C070000000000000_00
+1FF00002 41BFF00002000000_00
+F6DB786B C1A2490F2A000000_00
+FFFFFF80 C060000000000000_00
+F0000FBE C1AFFFE084000000_00
+00000009 4022000000000000_00
+FFFFFFC0 C050000000000000_00
+0010801F 4130801F00000000_00
+0001F238 40FF238000000000_00
+FFFFFFE0 C040000000000000_00
+F8000047 C19FFFFEE4000000_00
+0002133C 410099E000000000_00
+FFFFFFF0 C030000000000000_00
+003C001F 414E000F80000000_00
+000001F1 407F100000000000_00
+FFFFFFF8 C020000000000000_00
+FFDFBFFF C140200080000000_00
+FF5E507F C16435F020000000_00
+FFFFFFFC C010000000000000_00
+037FFFDE 418BFFFEF0000000_00
+FFFD7C6F C1041C8800000000_00
+FFFFFFFE C000000000000000_00
+000000FD 406FA00000000000_00
+FFFFF42A C0A7AC0000000000_00
+FFFFFFFF BFF0000000000000_00
+021FFF7D 4180FFFBE8000000_00
+0000000A 4024000000000000_00
+FFFFFFFD C008000000000000_00
+4010FFFF 41D0043FFFC00000_00
+FFFFFFD3 C046800000000000_00
+FFFFFFFB C014000000000000_00
+FFFF800B C0DFFD4000000000_00
+000000B8 4067000000000000_00
+FFFFFFF7 C022000000000000_00
+FF800803 C15FFDFF40000000_00
+FFFFFFFE C000000000000000_00
+FFFFFFEF C031000000000000_00
+00803FFB 416007FF60000000_00
+00000308 4088400000000000_00
+FFFFFFDF C040800000000000_00
+2107FFFE 41C083FFFF000000_00
+FFE15D4F C13EA2B100000000_00
+FFFFFFBF C050400000000000_00
+400087FD 41D00021FF400000_00
+0000000F 402E000000000000_00
+FFFFFF7F C060200000000000_00
+FDFC007E C1801FFC10000000_00
+00000006 4018000000000000_00
+FFFFFEFF C070100000000000_00
+FFF80100 C11FFC0000000000_00
+FFFFFE99 C076700000000000_00
+FFFFFDFF C080080000000000_00
+03000002 4188000010000000_00
+FFF716EA C121D22C00000000_00
+FFFFFBFF C090040000000000_00
+C7FDFFFF C1CC010000800000_00
+FFFFE327 C0BCD90000000000_00
+FFFFF7FF C0A0020000000000_00
+0103DFFE 41703DFFE0000000_00
+07661FD8 419D987F60000000_00
+FFFFEFFF C0B0010000000000_00
+83FFFFFE C1DF000000800000_00
+FCD956DB C189354928000000_00
+FFFFDFFF C0C0008000000000_00
+FF2001FD C16BFFC060000000_00
+E4D35BBF C1BB2CA441000000_00
+FFFFBFFF C0D0004000000000_00
+DFEFEFFE C1C0080801000000_00
+05DA4300 4197690C00000000_00
+FFFF7FFF C0E0002000000000_00
+40001040 41D0000410000000_00
+812EDF40 C1DFB44830000000_00
+FFFEFFFF C0F0001000000000_00
+FFFFC007 C0CFFC8000000000_00
+00B6FCC9 4166DF9920000000_00
+FFFDFFFF C100000800000000_00
+000007FE 409FF80000000000_00
+FC3DE950 C18E10B580000000_00
+FFFBFFFF C110000400000000_00
+7FFFFE03 41DFFFFF80C00000_00
+FEB02B59 C174FD4A70000000_00
+FFF7FFFF C120000200000000_00
+10FF7FFF 41B0FF7FFF000000_00
+00008D5E 40E1ABC000000000_00
+FFEFFFFF C130000100000000_00
+FFFF007E C0EFF04000000000_00
+001C2108 413C210800000000_00
+FFDFFFFF C140000080000000_00
+00FFC001 416FF80020000000_00
+F01C6B36 C1AFC72994000000_00
+FFBFFFFF C150000040000000_00
+FFFF7FFF C0E0002000000000_00
+FFFFD055 C0C7D58000000000_00
+FF7FFFFF C160000020000000_00
+027BFFFE 4183DFFFF0000000_00
+FF3090D0 C169EDE600000000_00
+FEFFFFFF C170000010000000_00
+00082040 4120408000000000_00
+0000006E 405B800000000000_00
+FDFFFFFF C180000008000000_00
+FDFFFF87 C1800003C8000000_00
+04C3764D 41930DD934000000_00
+FBFFFFFF C190000004000000_00
+0006007E 411801F800000000_00
+000001EF 407EF00000000000_00
+F7FFFFFF C1A0000002000000_00
+FFBF7FFE C150200080000000_00
+FF1C4E5A C16C7634C0000000_00
+EFFFFFFF C1B0000001000000_00
+FFF97FFD C11A000C00000000_00
+000001D1 407D100000000000_00
+DFFFFFFF C1C0000000800000_00
+2FFFFFFE 41C7FFFFFF000000_00
+00136721 4133672100000000_00
+BFFFFFFF C1D0000000400000_00
+00004BFF 40D2FFC000000000_00
+00000544 4095100000000000_00
+7FFFFFFF 41DFFFFFFFC00000_00
+007FDFFB 415FF7FEC0000000_00
+FFF8BD5E C11D0A8800000000_00
+3FFFFFFF 41CFFFFFFF800000_00
+FFBF8003 C1501FFF40000000_00
+FFFE45D2 C0FBA2E000000000_00
+1FFFFFFF 41BFFFFFFF000000_00
+FFFFFDBF C082080000000000_00
+FFFFF189 C0ACEE0000000000_00
+0FFFFFFF 41AFFFFFFE000000_00
+FFFE6FFE C0F9002000000000_00
+FC8672A0 C18BCC6B00000000_00
+07FFFFFF 419FFFFFFC000000_00
+00000107 4070700000000000_00
+FFFCCA70 C109AC8000000000_00
+03FFFFFF 418FFFFFF8000000_00
+002107FE 414083FF00000000_00
+FFFF48E7 C0E6E32000000000_00
+01FFFFFF 417FFFFFF0000000_00
+F7FDFFEE C1A0040024000000_00
+00000010 4030000000000000_00
+00FFFFFF 416FFFFFE0000000_00
+FFFF01FD C0EFC06000000000_00
+0000FAEF 40EF5DE000000000_00
+007FFFFF 415FFFFFC0000000_00
+00FC0001 416F800020000000_00
+000000F5 406EA00000000000_00
+003FFFFF 414FFFFF80000000_00
+FFE07FC0 C13F804000000000_00
+001AFFFB 413AFFFB00000000_00
+001FFFFF 413FFFFF00000000_00
+00101FFD 41301FFD00000000_00
+FF4613B2 C1673D89C0000000_00
+000FFFFF 412FFFFE00000000_00
+F00005FE C1AFFFF404000000_00
+00036402 410B201000000000_00
+0007FFFF 411FFFFC00000000_00
+0404FFFF 419013FFFC000000_00
+021C2358 4180E11AC0000000_00
+0003FFFF 410FFFF800000000_00
+FFFFFD02 C087F00000000000_00
+FFFF41C6 C0E7C74000000000_00
+0001FFFF 40FFFFF000000000_00
+00000007 401C000000000000_00
+27F174DE 41C3F8BA6F000000_00
+0000FFFF 40EFFFE000000000_00
+000083F5 40E07EA000000000_00
+FFFFFFFB C014000000000000_00
+00007FFF 40DFFFC000000000_00
+FE7FDFFE C178020020000000_00
+FFFFFFFD C008000000000000_00
+00003FFF 40CFFF8000000000_00
+DBBFFFFE C1C2200001000000_00
+00000404 4090100000000000_00
+00001FFF 40BFFF0000000000_00
+FFFFC018 C0CFF40000000000_00
+00002853 40C4298000000000_00
+00000FFF 40AFFE0000000000_00
+03FE007F 418FF003F8000000_00
+FFFFF124 C0ADB80000000000_00
+000007FF 409FFC0000000000_00
+FFFFEFBE C0B0420000000000_00
+FFFB9AD8 C11194A000000000_00
+000003FF 408FF80000000000_00
+DFFFFDFE C1C0000101000000_00
+FFFFFD95 C083580000000000_00
+000001FF 407FF00000000000_00
+FDFFFFFF C180000008000000_00
+FFFFFFD0 C048000000000000_00
+000000FF 406FE00000000000_00
+0037FFE0 414BFFF000000000_00
+010EC496 4170EC4960000000_00
+0000007F 405FC00000000000_00
+B8007FFF C1D1FFE000400000_00
+00000012 4032000000000000_00
+0000003F 404F800000000000_00
+02003FFC 418001FFE0000000_00
+FFFFFFEF C031000000000000_00
+0000001F 403F000000000000_00
+FF7FFF02 C160001FC0000000_00
+FFFFE2CE C0BD320000000000_00
+0000000F 402E000000000000_00
+0000A00D 40E401A000000000_00
+FFFFFE44 C07BC00000000000_00
+00000007 401C000000000000_00
+0003FFFA 410FFFD000000000_00
+000038E7 40CC738000000000_00
+00000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rne.tv b/wally-pipelined/testbench/fp/i32_f64_rne.tv
new file mode 100644
index 000000000..7f04b63fd
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f64_rne.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 41BFEFFFEF000000_00
+FFFFC48E C0CDB90000000000_00
+00000000 0000000000000000_00
+007FFFCD 415FFFF340000000_00
+00009E14 40E3C28000000000_00
+00000001 3FF0000000000000_00
+001FFFFB 413FFFFB00000000_00
+FFFFDE38 C0C0E40000000000_00
+00000002 4000000000000000_00
+FFDFFC02 C14001FF00000000_00
+FB794C79 C1921ACE1C000000_00
+00000004 4010000000000000_00
+F00FFFFE C1AFE00004000000_00
+00000A95 40A52A0000000000_00
+00000008 4020000000000000_00
+FFFFF97F C09A040000000000_00
+FFAE458D C1546E9CC0000000_00
+00000010 4030000000000000_00
+0101001E 41701001E0000000_00
+29EB4561 41C4F5A2B0800000_00
+00000020 4040000000000000_00
+8001FFEE C1DFFF8004800000_00
+FFFBDD08 C1108BE000000000_00
+00000040 4050000000000000_00
+FFF03FF9 C12F800E00000000_00
+FFCEDF36 C148906500000000_00
+00000080 4060000000000000_00
+0000F01F 40EE03E000000000_00
+00000279 4083C80000000000_00
+00000100 4070000000000000_00
+BFFFFFEF C1D0000004400000_00
+00000007 401C000000000000_00
+00000200 4080000000000000_00
+010BFFFD 4170BFFFD0000000_00
+FFFFF590 C0A4E00000000000_00
+00000400 4090000000000000_00
+F7FFFEFB C1A000020A000000_00
+2FEA335F 41C7F519AF800000_00
+00000800 40A0000000000000_00
+FFC07FFF C14FC00080000000_00
+177957FD 41B77957FD000000_00
+00001000 40B0000000000000_00
+01FBFFEE 417FBFFEE0000000_00
+FFFFFAC9 C094DC0000000000_00
+00002000 40C0000000000000_00
+FFFF8004 C0DFFF0000000000_00
+FFFBE0DE C1107C8800000000_00
+00004000 40D0000000000000_00
+3F00001E 41CF80000F000000_00
+00000000 0000000000000000_00
+00008000 40E0000000000000_00
+FF8201FF C15F7F8040000000_00
+FFFFD2F1 C0C6878000000000_00
+00010000 40F0000000000000_00
+0000047E 4091F80000000000_00
+0011B7E5 4131B7E500000000_00
+00020000 4100000000000000_00
+02200200 4181001000000000_00
+0013F7E6 4133F7E600000000_00
+00040000 4110000000000000_00
+FFFDC007 C101FFC800000000_00
+FD0ABD9A C187AA1330000000_00
+00080000 4120000000000000_00
+0000607F 40D81FC000000000_00
+00003CEE 40CE770000000000_00
+00100000 4130000000000000_00
+DFDFE000 C1C0101000000000_00
+FFFB1642 C113A6F800000000_00
+00200000 4140000000000000_00
+FC000078 C18FFFFC40000000_00
+5F70EEC1 41D7DC3BB0400000_00
+00400000 4150000000000000_00
+00100082 4130008200000000_00
+FFFFFE21 C07DF00000000000_00
+00800000 4160000000000000_00
+FF7BFF7F C160801020000000_00
+FFFF6393 C0E38DA000000000_00
+01000000 4170000000000000_00
+07EFFEFD 419FBFFBF4000000_00
+FFFFFDB4 C082600000000000_00
+02000000 4180000000000000_00
+8002FFFF C1DFFF4000400000_00
+FFFFC8E2 C0CB8F0000000000_00
+04000000 4190000000000000_00
+FFFC0DFE C10F901000000000_00
+FFFFFF1B C06CA00000000000_00
+08000000 41A0000000000000_00
+03FFFDBF 418FFFEDF8000000_00
+0001092B 40F092B000000000_00
+10000000 41B0000000000000_00
+007FBFFD 415FEFFF40000000_00
+00B4F3D1 41669E7A20000000_00
+20000000 41C0000000000000_00
+FEF801FF C1707FE010000000_00
+00000005 4014000000000000_00
+40000000 41D0000000000000_00
+BFF3FFFE C1D0030000800000_00
+0001806B 40F806B000000000_00
+80000000 C1E0000000000000_00
+0000A07E 40E40FC000000000_00
+FFFFA59F C0D6984000000000_00
+C0000000 C1D0000000000000_00
+E0007FDE C1BFFF8022000000_00
+FFF8343E C11F2F0800000000_00
+E0000000 C1C0000000000000_00
+0000FF7C 40EFEF8000000000_00
+FFFFFFF7 C022000000000000_00
+F0000000 C1B0000000000000_00
+BDFFFFFC C1D0800001000000_00
+FFFFE3C1 C0BC3F0000000000_00
+F8000000 C1A0000000000000_00
+28003FFE 41C4001FFF000000_00
+00000000 0000000000000000_00
+FC000000 C190000000000000_00
+00EEFFFF 416DDFFFE0000000_00
+00003EB0 40CF580000000000_00
+FE000000 C180000000000000_00
+00000F7D 40AEFA0000000000_00
+FFFFFF0F C06E200000000000_00
+FF000000 C170000000000000_00
+0000406D 40D01B4000000000_00
+0000001A 403A000000000000_00
+FF800000 C160000000000000_00
+203FFFFD 41C01FFFFE800000_00
+0000000A 4024000000000000_00
+FFC00000 C150000000000000_00
+FFFF007C C0EFF08000000000_00
+0000009B 4063600000000000_00
+FFE00000 C140000000000000_00
+00E00FFF 416C01FFE0000000_00
+00000006 4018000000000000_00
+FFF00000 C130000000000000_00
+00200FFC 414007FE00000000_00
+00000714 409C500000000000_00
+FFF80000 C120000000000000_00
+F800040E C19FFFEFC8000000_00
+00000013 4033000000000000_00
+FFFC0000 C110000000000000_00
+F83BFFFF C19F100004000000_00
+FFF3F584 C12814F800000000_00
+FFFE0000 C100000000000000_00
+F6FFFBFF C1A2000802000000_00
+FFFFFFF0 C030000000000000_00
+FFFF0000 C0F0000000000000_00
+80003FFD C1DFFFF000C00000_00
+FFFFFFAD C054C00000000000_00
+FFFF8000 C0E0000000000000_00
+004001FD 4150007F40000000_00
+000D734E 412AE69C00000000_00
+FFFFC000 C0D0000000000000_00
+006003FE 415800FF80000000_00
+FF9DBAA8 C158915600000000_00
+FFFFE000 C0C0000000000000_00
+000403EE 41100FB800000000_00
+00734668 415CD19A00000000_00
+FFFFF000 C0B0000000000000_00
+01200002 4172000020000000_00
+FF8874A5 C15DE2D6C0000000_00
+FFFFF800 C0A0000000000000_00
+00060001 4118000400000000_00
+FFFFFFF8 C020000000000000_00
+FFFFFC00 C090000000000000_00
+001FFEDD 413FFEDD00000000_00
+FFFC56DF C10D490800000000_00
+FFFFFE00 C080000000000000_00
+EFFFEFFD C1B0001003000000_00
+FECF5EC6 C1730A13A0000000_00
+FFFFFF00 C070000000000000_00
+1FF00002 41BFF00002000000_00
+F6DB786B C1A2490F2A000000_00
+FFFFFF80 C060000000000000_00
+F0000FBE C1AFFFE084000000_00
+00000009 4022000000000000_00
+FFFFFFC0 C050000000000000_00
+0010801F 4130801F00000000_00
+0001F238 40FF238000000000_00
+FFFFFFE0 C040000000000000_00
+F8000047 C19FFFFEE4000000_00
+0002133C 410099E000000000_00
+FFFFFFF0 C030000000000000_00
+003C001F 414E000F80000000_00
+000001F1 407F100000000000_00
+FFFFFFF8 C020000000000000_00
+FFDFBFFF C140200080000000_00
+FF5E507F C16435F020000000_00
+FFFFFFFC C010000000000000_00
+037FFFDE 418BFFFEF0000000_00
+FFFD7C6F C1041C8800000000_00
+FFFFFFFE C000000000000000_00
+000000FD 406FA00000000000_00
+FFFFF42A C0A7AC0000000000_00
+FFFFFFFF BFF0000000000000_00
+021FFF7D 4180FFFBE8000000_00
+0000000A 4024000000000000_00
+FFFFFFFD C008000000000000_00
+4010FFFF 41D0043FFFC00000_00
+FFFFFFD3 C046800000000000_00
+FFFFFFFB C014000000000000_00
+FFFF800B C0DFFD4000000000_00
+000000B8 4067000000000000_00
+FFFFFFF7 C022000000000000_00
+FF800803 C15FFDFF40000000_00
+FFFFFFFE C000000000000000_00
+FFFFFFEF C031000000000000_00
+00803FFB 416007FF60000000_00
+00000308 4088400000000000_00
+FFFFFFDF C040800000000000_00
+2107FFFE 41C083FFFF000000_00
+FFE15D4F C13EA2B100000000_00
+FFFFFFBF C050400000000000_00
+400087FD 41D00021FF400000_00
+0000000F 402E000000000000_00
+FFFFFF7F C060200000000000_00
+FDFC007E C1801FFC10000000_00
+00000006 4018000000000000_00
+FFFFFEFF C070100000000000_00
+FFF80100 C11FFC0000000000_00
+FFFFFE99 C076700000000000_00
+FFFFFDFF C080080000000000_00
+03000002 4188000010000000_00
+FFF716EA C121D22C00000000_00
+FFFFFBFF C090040000000000_00
+C7FDFFFF C1CC010000800000_00
+FFFFE327 C0BCD90000000000_00
+FFFFF7FF C0A0020000000000_00
+0103DFFE 41703DFFE0000000_00
+07661FD8 419D987F60000000_00
+FFFFEFFF C0B0010000000000_00
+83FFFFFE C1DF000000800000_00
+FCD956DB C189354928000000_00
+FFFFDFFF C0C0008000000000_00
+FF2001FD C16BFFC060000000_00
+E4D35BBF C1BB2CA441000000_00
+FFFFBFFF C0D0004000000000_00
+DFEFEFFE C1C0080801000000_00
+05DA4300 4197690C00000000_00
+FFFF7FFF C0E0002000000000_00
+40001040 41D0000410000000_00
+812EDF40 C1DFB44830000000_00
+FFFEFFFF C0F0001000000000_00
+FFFFC007 C0CFFC8000000000_00
+00B6FCC9 4166DF9920000000_00
+FFFDFFFF C100000800000000_00
+000007FE 409FF80000000000_00
+FC3DE950 C18E10B580000000_00
+FFFBFFFF C110000400000000_00
+7FFFFE03 41DFFFFF80C00000_00
+FEB02B59 C174FD4A70000000_00
+FFF7FFFF C120000200000000_00
+10FF7FFF 41B0FF7FFF000000_00
+00008D5E 40E1ABC000000000_00
+FFEFFFFF C130000100000000_00
+FFFF007E C0EFF04000000000_00
+001C2108 413C210800000000_00
+FFDFFFFF C140000080000000_00
+00FFC001 416FF80020000000_00
+F01C6B36 C1AFC72994000000_00
+FFBFFFFF C150000040000000_00
+FFFF7FFF C0E0002000000000_00
+FFFFD055 C0C7D58000000000_00
+FF7FFFFF C160000020000000_00
+027BFFFE 4183DFFFF0000000_00
+FF3090D0 C169EDE600000000_00
+FEFFFFFF C170000010000000_00
+00082040 4120408000000000_00
+0000006E 405B800000000000_00
+FDFFFFFF C180000008000000_00
+FDFFFF87 C1800003C8000000_00
+04C3764D 41930DD934000000_00
+FBFFFFFF C190000004000000_00
+0006007E 411801F800000000_00
+000001EF 407EF00000000000_00
+F7FFFFFF C1A0000002000000_00
+FFBF7FFE C150200080000000_00
+FF1C4E5A C16C7634C0000000_00
+EFFFFFFF C1B0000001000000_00
+FFF97FFD C11A000C00000000_00
+000001D1 407D100000000000_00
+DFFFFFFF C1C0000000800000_00
+2FFFFFFE 41C7FFFFFF000000_00
+00136721 4133672100000000_00
+BFFFFFFF C1D0000000400000_00
+00004BFF 40D2FFC000000000_00
+00000544 4095100000000000_00
+7FFFFFFF 41DFFFFFFFC00000_00
+007FDFFB 415FF7FEC0000000_00
+FFF8BD5E C11D0A8800000000_00
+3FFFFFFF 41CFFFFFFF800000_00
+FFBF8003 C1501FFF40000000_00
+FFFE45D2 C0FBA2E000000000_00
+1FFFFFFF 41BFFFFFFF000000_00
+FFFFFDBF C082080000000000_00
+FFFFF189 C0ACEE0000000000_00
+0FFFFFFF 41AFFFFFFE000000_00
+FFFE6FFE C0F9002000000000_00
+FC8672A0 C18BCC6B00000000_00
+07FFFFFF 419FFFFFFC000000_00
+00000107 4070700000000000_00
+FFFCCA70 C109AC8000000000_00
+03FFFFFF 418FFFFFF8000000_00
+002107FE 414083FF00000000_00
+FFFF48E7 C0E6E32000000000_00
+01FFFFFF 417FFFFFF0000000_00
+F7FDFFEE C1A0040024000000_00
+00000010 4030000000000000_00
+00FFFFFF 416FFFFFE0000000_00
+FFFF01FD C0EFC06000000000_00
+0000FAEF 40EF5DE000000000_00
+007FFFFF 415FFFFFC0000000_00
+00FC0001 416F800020000000_00
+000000F5 406EA00000000000_00
+003FFFFF 414FFFFF80000000_00
+FFE07FC0 C13F804000000000_00
+001AFFFB 413AFFFB00000000_00
+001FFFFF 413FFFFF00000000_00
+00101FFD 41301FFD00000000_00
+FF4613B2 C1673D89C0000000_00
+000FFFFF 412FFFFE00000000_00
+F00005FE C1AFFFF404000000_00
+00036402 410B201000000000_00
+0007FFFF 411FFFFC00000000_00
+0404FFFF 419013FFFC000000_00
+021C2358 4180E11AC0000000_00
+0003FFFF 410FFFF800000000_00
+FFFFFD02 C087F00000000000_00
+FFFF41C6 C0E7C74000000000_00
+0001FFFF 40FFFFF000000000_00
+00000007 401C000000000000_00
+27F174DE 41C3F8BA6F000000_00
+0000FFFF 40EFFFE000000000_00
+000083F5 40E07EA000000000_00
+FFFFFFFB C014000000000000_00
+00007FFF 40DFFFC000000000_00
+FE7FDFFE C178020020000000_00
+FFFFFFFD C008000000000000_00
+00003FFF 40CFFF8000000000_00
+DBBFFFFE C1C2200001000000_00
+00000404 4090100000000000_00
+00001FFF 40BFFF0000000000_00
+FFFFC018 C0CFF40000000000_00
+00002853 40C4298000000000_00
+00000FFF 40AFFE0000000000_00
+03FE007F 418FF003F8000000_00
+FFFFF124 C0ADB80000000000_00
+000007FF 409FFC0000000000_00
+FFFFEFBE C0B0420000000000_00
+FFFB9AD8 C11194A000000000_00
+000003FF 408FF80000000000_00
+DFFFFDFE C1C0000101000000_00
+FFFFFD95 C083580000000000_00
+000001FF 407FF00000000000_00
+FDFFFFFF C180000008000000_00
+FFFFFFD0 C048000000000000_00
+000000FF 406FE00000000000_00
+0037FFE0 414BFFF000000000_00
+010EC496 4170EC4960000000_00
+0000007F 405FC00000000000_00
+B8007FFF C1D1FFE000400000_00
+00000012 4032000000000000_00
+0000003F 404F800000000000_00
+02003FFC 418001FFE0000000_00
+FFFFFFEF C031000000000000_00
+0000001F 403F000000000000_00
+FF7FFF02 C160001FC0000000_00
+FFFFE2CE C0BD320000000000_00
+0000000F 402E000000000000_00
+0000A00D 40E401A000000000_00
+FFFFFE44 C07BC00000000000_00
+00000007 401C000000000000_00
+0003FFFA 410FFFD000000000_00
+000038E7 40CC738000000000_00
+00000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_ru.tv b/wally-pipelined/testbench/fp/i32_f64_ru.tv
new file mode 100644
index 000000000..7f04b63fd
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f64_ru.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 41BFEFFFEF000000_00
+FFFFC48E C0CDB90000000000_00
+00000000 0000000000000000_00
+007FFFCD 415FFFF340000000_00
+00009E14 40E3C28000000000_00
+00000001 3FF0000000000000_00
+001FFFFB 413FFFFB00000000_00
+FFFFDE38 C0C0E40000000000_00
+00000002 4000000000000000_00
+FFDFFC02 C14001FF00000000_00
+FB794C79 C1921ACE1C000000_00
+00000004 4010000000000000_00
+F00FFFFE C1AFE00004000000_00
+00000A95 40A52A0000000000_00
+00000008 4020000000000000_00
+FFFFF97F C09A040000000000_00
+FFAE458D C1546E9CC0000000_00
+00000010 4030000000000000_00
+0101001E 41701001E0000000_00
+29EB4561 41C4F5A2B0800000_00
+00000020 4040000000000000_00
+8001FFEE C1DFFF8004800000_00
+FFFBDD08 C1108BE000000000_00
+00000040 4050000000000000_00
+FFF03FF9 C12F800E00000000_00
+FFCEDF36 C148906500000000_00
+00000080 4060000000000000_00
+0000F01F 40EE03E000000000_00
+00000279 4083C80000000000_00
+00000100 4070000000000000_00
+BFFFFFEF C1D0000004400000_00
+00000007 401C000000000000_00
+00000200 4080000000000000_00
+010BFFFD 4170BFFFD0000000_00
+FFFFF590 C0A4E00000000000_00
+00000400 4090000000000000_00
+F7FFFEFB C1A000020A000000_00
+2FEA335F 41C7F519AF800000_00
+00000800 40A0000000000000_00
+FFC07FFF C14FC00080000000_00
+177957FD 41B77957FD000000_00
+00001000 40B0000000000000_00
+01FBFFEE 417FBFFEE0000000_00
+FFFFFAC9 C094DC0000000000_00
+00002000 40C0000000000000_00
+FFFF8004 C0DFFF0000000000_00
+FFFBE0DE C1107C8800000000_00
+00004000 40D0000000000000_00
+3F00001E 41CF80000F000000_00
+00000000 0000000000000000_00
+00008000 40E0000000000000_00
+FF8201FF C15F7F8040000000_00
+FFFFD2F1 C0C6878000000000_00
+00010000 40F0000000000000_00
+0000047E 4091F80000000000_00
+0011B7E5 4131B7E500000000_00
+00020000 4100000000000000_00
+02200200 4181001000000000_00
+0013F7E6 4133F7E600000000_00
+00040000 4110000000000000_00
+FFFDC007 C101FFC800000000_00
+FD0ABD9A C187AA1330000000_00
+00080000 4120000000000000_00
+0000607F 40D81FC000000000_00
+00003CEE 40CE770000000000_00
+00100000 4130000000000000_00
+DFDFE000 C1C0101000000000_00
+FFFB1642 C113A6F800000000_00
+00200000 4140000000000000_00
+FC000078 C18FFFFC40000000_00
+5F70EEC1 41D7DC3BB0400000_00
+00400000 4150000000000000_00
+00100082 4130008200000000_00
+FFFFFE21 C07DF00000000000_00
+00800000 4160000000000000_00
+FF7BFF7F C160801020000000_00
+FFFF6393 C0E38DA000000000_00
+01000000 4170000000000000_00
+07EFFEFD 419FBFFBF4000000_00
+FFFFFDB4 C082600000000000_00
+02000000 4180000000000000_00
+8002FFFF C1DFFF4000400000_00
+FFFFC8E2 C0CB8F0000000000_00
+04000000 4190000000000000_00
+FFFC0DFE C10F901000000000_00
+FFFFFF1B C06CA00000000000_00
+08000000 41A0000000000000_00
+03FFFDBF 418FFFEDF8000000_00
+0001092B 40F092B000000000_00
+10000000 41B0000000000000_00
+007FBFFD 415FEFFF40000000_00
+00B4F3D1 41669E7A20000000_00
+20000000 41C0000000000000_00
+FEF801FF C1707FE010000000_00
+00000005 4014000000000000_00
+40000000 41D0000000000000_00
+BFF3FFFE C1D0030000800000_00
+0001806B 40F806B000000000_00
+80000000 C1E0000000000000_00
+0000A07E 40E40FC000000000_00
+FFFFA59F C0D6984000000000_00
+C0000000 C1D0000000000000_00
+E0007FDE C1BFFF8022000000_00
+FFF8343E C11F2F0800000000_00
+E0000000 C1C0000000000000_00
+0000FF7C 40EFEF8000000000_00
+FFFFFFF7 C022000000000000_00
+F0000000 C1B0000000000000_00
+BDFFFFFC C1D0800001000000_00
+FFFFE3C1 C0BC3F0000000000_00
+F8000000 C1A0000000000000_00
+28003FFE 41C4001FFF000000_00
+00000000 0000000000000000_00
+FC000000 C190000000000000_00
+00EEFFFF 416DDFFFE0000000_00
+00003EB0 40CF580000000000_00
+FE000000 C180000000000000_00
+00000F7D 40AEFA0000000000_00
+FFFFFF0F C06E200000000000_00
+FF000000 C170000000000000_00
+0000406D 40D01B4000000000_00
+0000001A 403A000000000000_00
+FF800000 C160000000000000_00
+203FFFFD 41C01FFFFE800000_00
+0000000A 4024000000000000_00
+FFC00000 C150000000000000_00
+FFFF007C C0EFF08000000000_00
+0000009B 4063600000000000_00
+FFE00000 C140000000000000_00
+00E00FFF 416C01FFE0000000_00
+00000006 4018000000000000_00
+FFF00000 C130000000000000_00
+00200FFC 414007FE00000000_00
+00000714 409C500000000000_00
+FFF80000 C120000000000000_00
+F800040E C19FFFEFC8000000_00
+00000013 4033000000000000_00
+FFFC0000 C110000000000000_00
+F83BFFFF C19F100004000000_00
+FFF3F584 C12814F800000000_00
+FFFE0000 C100000000000000_00
+F6FFFBFF C1A2000802000000_00
+FFFFFFF0 C030000000000000_00
+FFFF0000 C0F0000000000000_00
+80003FFD C1DFFFF000C00000_00
+FFFFFFAD C054C00000000000_00
+FFFF8000 C0E0000000000000_00
+004001FD 4150007F40000000_00
+000D734E 412AE69C00000000_00
+FFFFC000 C0D0000000000000_00
+006003FE 415800FF80000000_00
+FF9DBAA8 C158915600000000_00
+FFFFE000 C0C0000000000000_00
+000403EE 41100FB800000000_00
+00734668 415CD19A00000000_00
+FFFFF000 C0B0000000000000_00
+01200002 4172000020000000_00
+FF8874A5 C15DE2D6C0000000_00
+FFFFF800 C0A0000000000000_00
+00060001 4118000400000000_00
+FFFFFFF8 C020000000000000_00
+FFFFFC00 C090000000000000_00
+001FFEDD 413FFEDD00000000_00
+FFFC56DF C10D490800000000_00
+FFFFFE00 C080000000000000_00
+EFFFEFFD C1B0001003000000_00
+FECF5EC6 C1730A13A0000000_00
+FFFFFF00 C070000000000000_00
+1FF00002 41BFF00002000000_00
+F6DB786B C1A2490F2A000000_00
+FFFFFF80 C060000000000000_00
+F0000FBE C1AFFFE084000000_00
+00000009 4022000000000000_00
+FFFFFFC0 C050000000000000_00
+0010801F 4130801F00000000_00
+0001F238 40FF238000000000_00
+FFFFFFE0 C040000000000000_00
+F8000047 C19FFFFEE4000000_00
+0002133C 410099E000000000_00
+FFFFFFF0 C030000000000000_00
+003C001F 414E000F80000000_00
+000001F1 407F100000000000_00
+FFFFFFF8 C020000000000000_00
+FFDFBFFF C140200080000000_00
+FF5E507F C16435F020000000_00
+FFFFFFFC C010000000000000_00
+037FFFDE 418BFFFEF0000000_00
+FFFD7C6F C1041C8800000000_00
+FFFFFFFE C000000000000000_00
+000000FD 406FA00000000000_00
+FFFFF42A C0A7AC0000000000_00
+FFFFFFFF BFF0000000000000_00
+021FFF7D 4180FFFBE8000000_00
+0000000A 4024000000000000_00
+FFFFFFFD C008000000000000_00
+4010FFFF 41D0043FFFC00000_00
+FFFFFFD3 C046800000000000_00
+FFFFFFFB C014000000000000_00
+FFFF800B C0DFFD4000000000_00
+000000B8 4067000000000000_00
+FFFFFFF7 C022000000000000_00
+FF800803 C15FFDFF40000000_00
+FFFFFFFE C000000000000000_00
+FFFFFFEF C031000000000000_00
+00803FFB 416007FF60000000_00
+00000308 4088400000000000_00
+FFFFFFDF C040800000000000_00
+2107FFFE 41C083FFFF000000_00
+FFE15D4F C13EA2B100000000_00
+FFFFFFBF C050400000000000_00
+400087FD 41D00021FF400000_00
+0000000F 402E000000000000_00
+FFFFFF7F C060200000000000_00
+FDFC007E C1801FFC10000000_00
+00000006 4018000000000000_00
+FFFFFEFF C070100000000000_00
+FFF80100 C11FFC0000000000_00
+FFFFFE99 C076700000000000_00
+FFFFFDFF C080080000000000_00
+03000002 4188000010000000_00
+FFF716EA C121D22C00000000_00
+FFFFFBFF C090040000000000_00
+C7FDFFFF C1CC010000800000_00
+FFFFE327 C0BCD90000000000_00
+FFFFF7FF C0A0020000000000_00
+0103DFFE 41703DFFE0000000_00
+07661FD8 419D987F60000000_00
+FFFFEFFF C0B0010000000000_00
+83FFFFFE C1DF000000800000_00
+FCD956DB C189354928000000_00
+FFFFDFFF C0C0008000000000_00
+FF2001FD C16BFFC060000000_00
+E4D35BBF C1BB2CA441000000_00
+FFFFBFFF C0D0004000000000_00
+DFEFEFFE C1C0080801000000_00
+05DA4300 4197690C00000000_00
+FFFF7FFF C0E0002000000000_00
+40001040 41D0000410000000_00
+812EDF40 C1DFB44830000000_00
+FFFEFFFF C0F0001000000000_00
+FFFFC007 C0CFFC8000000000_00
+00B6FCC9 4166DF9920000000_00
+FFFDFFFF C100000800000000_00
+000007FE 409FF80000000000_00
+FC3DE950 C18E10B580000000_00
+FFFBFFFF C110000400000000_00
+7FFFFE03 41DFFFFF80C00000_00
+FEB02B59 C174FD4A70000000_00
+FFF7FFFF C120000200000000_00
+10FF7FFF 41B0FF7FFF000000_00
+00008D5E 40E1ABC000000000_00
+FFEFFFFF C130000100000000_00
+FFFF007E C0EFF04000000000_00
+001C2108 413C210800000000_00
+FFDFFFFF C140000080000000_00
+00FFC001 416FF80020000000_00
+F01C6B36 C1AFC72994000000_00
+FFBFFFFF C150000040000000_00
+FFFF7FFF C0E0002000000000_00
+FFFFD055 C0C7D58000000000_00
+FF7FFFFF C160000020000000_00
+027BFFFE 4183DFFFF0000000_00
+FF3090D0 C169EDE600000000_00
+FEFFFFFF C170000010000000_00
+00082040 4120408000000000_00
+0000006E 405B800000000000_00
+FDFFFFFF C180000008000000_00
+FDFFFF87 C1800003C8000000_00
+04C3764D 41930DD934000000_00
+FBFFFFFF C190000004000000_00
+0006007E 411801F800000000_00
+000001EF 407EF00000000000_00
+F7FFFFFF C1A0000002000000_00
+FFBF7FFE C150200080000000_00
+FF1C4E5A C16C7634C0000000_00
+EFFFFFFF C1B0000001000000_00
+FFF97FFD C11A000C00000000_00
+000001D1 407D100000000000_00
+DFFFFFFF C1C0000000800000_00
+2FFFFFFE 41C7FFFFFF000000_00
+00136721 4133672100000000_00
+BFFFFFFF C1D0000000400000_00
+00004BFF 40D2FFC000000000_00
+00000544 4095100000000000_00
+7FFFFFFF 41DFFFFFFFC00000_00
+007FDFFB 415FF7FEC0000000_00
+FFF8BD5E C11D0A8800000000_00
+3FFFFFFF 41CFFFFFFF800000_00
+FFBF8003 C1501FFF40000000_00
+FFFE45D2 C0FBA2E000000000_00
+1FFFFFFF 41BFFFFFFF000000_00
+FFFFFDBF C082080000000000_00
+FFFFF189 C0ACEE0000000000_00
+0FFFFFFF 41AFFFFFFE000000_00
+FFFE6FFE C0F9002000000000_00
+FC8672A0 C18BCC6B00000000_00
+07FFFFFF 419FFFFFFC000000_00
+00000107 4070700000000000_00
+FFFCCA70 C109AC8000000000_00
+03FFFFFF 418FFFFFF8000000_00
+002107FE 414083FF00000000_00
+FFFF48E7 C0E6E32000000000_00
+01FFFFFF 417FFFFFF0000000_00
+F7FDFFEE C1A0040024000000_00
+00000010 4030000000000000_00
+00FFFFFF 416FFFFFE0000000_00
+FFFF01FD C0EFC06000000000_00
+0000FAEF 40EF5DE000000000_00
+007FFFFF 415FFFFFC0000000_00
+00FC0001 416F800020000000_00
+000000F5 406EA00000000000_00
+003FFFFF 414FFFFF80000000_00
+FFE07FC0 C13F804000000000_00
+001AFFFB 413AFFFB00000000_00
+001FFFFF 413FFFFF00000000_00
+00101FFD 41301FFD00000000_00
+FF4613B2 C1673D89C0000000_00
+000FFFFF 412FFFFE00000000_00
+F00005FE C1AFFFF404000000_00
+00036402 410B201000000000_00
+0007FFFF 411FFFFC00000000_00
+0404FFFF 419013FFFC000000_00
+021C2358 4180E11AC0000000_00
+0003FFFF 410FFFF800000000_00
+FFFFFD02 C087F00000000000_00
+FFFF41C6 C0E7C74000000000_00
+0001FFFF 40FFFFF000000000_00
+00000007 401C000000000000_00
+27F174DE 41C3F8BA6F000000_00
+0000FFFF 40EFFFE000000000_00
+000083F5 40E07EA000000000_00
+FFFFFFFB C014000000000000_00
+00007FFF 40DFFFC000000000_00
+FE7FDFFE C178020020000000_00
+FFFFFFFD C008000000000000_00
+00003FFF 40CFFF8000000000_00
+DBBFFFFE C1C2200001000000_00
+00000404 4090100000000000_00
+00001FFF 40BFFF0000000000_00
+FFFFC018 C0CFF40000000000_00
+00002853 40C4298000000000_00
+00000FFF 40AFFE0000000000_00
+03FE007F 418FF003F8000000_00
+FFFFF124 C0ADB80000000000_00
+000007FF 409FFC0000000000_00
+FFFFEFBE C0B0420000000000_00
+FFFB9AD8 C11194A000000000_00
+000003FF 408FF80000000000_00
+DFFFFDFE C1C0000101000000_00
+FFFFFD95 C083580000000000_00
+000001FF 407FF00000000000_00
+FDFFFFFF C180000008000000_00
+FFFFFFD0 C048000000000000_00
+000000FF 406FE00000000000_00
+0037FFE0 414BFFF000000000_00
+010EC496 4170EC4960000000_00
+0000007F 405FC00000000000_00
+B8007FFF C1D1FFE000400000_00
+00000012 4032000000000000_00
+0000003F 404F800000000000_00
+02003FFC 418001FFE0000000_00
+FFFFFFEF C031000000000000_00
+0000001F 403F000000000000_00
+FF7FFF02 C160001FC0000000_00
+FFFFE2CE C0BD320000000000_00
+0000000F 402E000000000000_00
+0000A00D 40E401A000000000_00
+FFFFFE44 C07BC00000000000_00
+00000007 401C000000000000_00
+0003FFFA 410FFFD000000000_00
+000038E7 40CC738000000000_00
+00000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rz.tv b/wally-pipelined/testbench/fp/i32_f64_rz.tv
new file mode 100644
index 000000000..7f04b63fd
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i32_f64_rz.tv
@@ -0,0 +1,372 @@
+1FEFFFEF 41BFEFFFEF000000_00
+FFFFC48E C0CDB90000000000_00
+00000000 0000000000000000_00
+007FFFCD 415FFFF340000000_00
+00009E14 40E3C28000000000_00
+00000001 3FF0000000000000_00
+001FFFFB 413FFFFB00000000_00
+FFFFDE38 C0C0E40000000000_00
+00000002 4000000000000000_00
+FFDFFC02 C14001FF00000000_00
+FB794C79 C1921ACE1C000000_00
+00000004 4010000000000000_00
+F00FFFFE C1AFE00004000000_00
+00000A95 40A52A0000000000_00
+00000008 4020000000000000_00
+FFFFF97F C09A040000000000_00
+FFAE458D C1546E9CC0000000_00
+00000010 4030000000000000_00
+0101001E 41701001E0000000_00
+29EB4561 41C4F5A2B0800000_00
+00000020 4040000000000000_00
+8001FFEE C1DFFF8004800000_00
+FFFBDD08 C1108BE000000000_00
+00000040 4050000000000000_00
+FFF03FF9 C12F800E00000000_00
+FFCEDF36 C148906500000000_00
+00000080 4060000000000000_00
+0000F01F 40EE03E000000000_00
+00000279 4083C80000000000_00
+00000100 4070000000000000_00
+BFFFFFEF C1D0000004400000_00
+00000007 401C000000000000_00
+00000200 4080000000000000_00
+010BFFFD 4170BFFFD0000000_00
+FFFFF590 C0A4E00000000000_00
+00000400 4090000000000000_00
+F7FFFEFB C1A000020A000000_00
+2FEA335F 41C7F519AF800000_00
+00000800 40A0000000000000_00
+FFC07FFF C14FC00080000000_00
+177957FD 41B77957FD000000_00
+00001000 40B0000000000000_00
+01FBFFEE 417FBFFEE0000000_00
+FFFFFAC9 C094DC0000000000_00
+00002000 40C0000000000000_00
+FFFF8004 C0DFFF0000000000_00
+FFFBE0DE C1107C8800000000_00
+00004000 40D0000000000000_00
+3F00001E 41CF80000F000000_00
+00000000 0000000000000000_00
+00008000 40E0000000000000_00
+FF8201FF C15F7F8040000000_00
+FFFFD2F1 C0C6878000000000_00
+00010000 40F0000000000000_00
+0000047E 4091F80000000000_00
+0011B7E5 4131B7E500000000_00
+00020000 4100000000000000_00
+02200200 4181001000000000_00
+0013F7E6 4133F7E600000000_00
+00040000 4110000000000000_00
+FFFDC007 C101FFC800000000_00
+FD0ABD9A C187AA1330000000_00
+00080000 4120000000000000_00
+0000607F 40D81FC000000000_00
+00003CEE 40CE770000000000_00
+00100000 4130000000000000_00
+DFDFE000 C1C0101000000000_00
+FFFB1642 C113A6F800000000_00
+00200000 4140000000000000_00
+FC000078 C18FFFFC40000000_00
+5F70EEC1 41D7DC3BB0400000_00
+00400000 4150000000000000_00
+00100082 4130008200000000_00
+FFFFFE21 C07DF00000000000_00
+00800000 4160000000000000_00
+FF7BFF7F C160801020000000_00
+FFFF6393 C0E38DA000000000_00
+01000000 4170000000000000_00
+07EFFEFD 419FBFFBF4000000_00
+FFFFFDB4 C082600000000000_00
+02000000 4180000000000000_00
+8002FFFF C1DFFF4000400000_00
+FFFFC8E2 C0CB8F0000000000_00
+04000000 4190000000000000_00
+FFFC0DFE C10F901000000000_00
+FFFFFF1B C06CA00000000000_00
+08000000 41A0000000000000_00
+03FFFDBF 418FFFEDF8000000_00
+0001092B 40F092B000000000_00
+10000000 41B0000000000000_00
+007FBFFD 415FEFFF40000000_00
+00B4F3D1 41669E7A20000000_00
+20000000 41C0000000000000_00
+FEF801FF C1707FE010000000_00
+00000005 4014000000000000_00
+40000000 41D0000000000000_00
+BFF3FFFE C1D0030000800000_00
+0001806B 40F806B000000000_00
+80000000 C1E0000000000000_00
+0000A07E 40E40FC000000000_00
+FFFFA59F C0D6984000000000_00
+C0000000 C1D0000000000000_00
+E0007FDE C1BFFF8022000000_00
+FFF8343E C11F2F0800000000_00
+E0000000 C1C0000000000000_00
+0000FF7C 40EFEF8000000000_00
+FFFFFFF7 C022000000000000_00
+F0000000 C1B0000000000000_00
+BDFFFFFC C1D0800001000000_00
+FFFFE3C1 C0BC3F0000000000_00
+F8000000 C1A0000000000000_00
+28003FFE 41C4001FFF000000_00
+00000000 0000000000000000_00
+FC000000 C190000000000000_00
+00EEFFFF 416DDFFFE0000000_00
+00003EB0 40CF580000000000_00
+FE000000 C180000000000000_00
+00000F7D 40AEFA0000000000_00
+FFFFFF0F C06E200000000000_00
+FF000000 C170000000000000_00
+0000406D 40D01B4000000000_00
+0000001A 403A000000000000_00
+FF800000 C160000000000000_00
+203FFFFD 41C01FFFFE800000_00
+0000000A 4024000000000000_00
+FFC00000 C150000000000000_00
+FFFF007C C0EFF08000000000_00
+0000009B 4063600000000000_00
+FFE00000 C140000000000000_00
+00E00FFF 416C01FFE0000000_00
+00000006 4018000000000000_00
+FFF00000 C130000000000000_00
+00200FFC 414007FE00000000_00
+00000714 409C500000000000_00
+FFF80000 C120000000000000_00
+F800040E C19FFFEFC8000000_00
+00000013 4033000000000000_00
+FFFC0000 C110000000000000_00
+F83BFFFF C19F100004000000_00
+FFF3F584 C12814F800000000_00
+FFFE0000 C100000000000000_00
+F6FFFBFF C1A2000802000000_00
+FFFFFFF0 C030000000000000_00
+FFFF0000 C0F0000000000000_00
+80003FFD C1DFFFF000C00000_00
+FFFFFFAD C054C00000000000_00
+FFFF8000 C0E0000000000000_00
+004001FD 4150007F40000000_00
+000D734E 412AE69C00000000_00
+FFFFC000 C0D0000000000000_00
+006003FE 415800FF80000000_00
+FF9DBAA8 C158915600000000_00
+FFFFE000 C0C0000000000000_00
+000403EE 41100FB800000000_00
+00734668 415CD19A00000000_00
+FFFFF000 C0B0000000000000_00
+01200002 4172000020000000_00
+FF8874A5 C15DE2D6C0000000_00
+FFFFF800 C0A0000000000000_00
+00060001 4118000400000000_00
+FFFFFFF8 C020000000000000_00
+FFFFFC00 C090000000000000_00
+001FFEDD 413FFEDD00000000_00
+FFFC56DF C10D490800000000_00
+FFFFFE00 C080000000000000_00
+EFFFEFFD C1B0001003000000_00
+FECF5EC6 C1730A13A0000000_00
+FFFFFF00 C070000000000000_00
+1FF00002 41BFF00002000000_00
+F6DB786B C1A2490F2A000000_00
+FFFFFF80 C060000000000000_00
+F0000FBE C1AFFFE084000000_00
+00000009 4022000000000000_00
+FFFFFFC0 C050000000000000_00
+0010801F 4130801F00000000_00
+0001F238 40FF238000000000_00
+FFFFFFE0 C040000000000000_00
+F8000047 C19FFFFEE4000000_00
+0002133C 410099E000000000_00
+FFFFFFF0 C030000000000000_00
+003C001F 414E000F80000000_00
+000001F1 407F100000000000_00
+FFFFFFF8 C020000000000000_00
+FFDFBFFF C140200080000000_00
+FF5E507F C16435F020000000_00
+FFFFFFFC C010000000000000_00
+037FFFDE 418BFFFEF0000000_00
+FFFD7C6F C1041C8800000000_00
+FFFFFFFE C000000000000000_00
+000000FD 406FA00000000000_00
+FFFFF42A C0A7AC0000000000_00
+FFFFFFFF BFF0000000000000_00
+021FFF7D 4180FFFBE8000000_00
+0000000A 4024000000000000_00
+FFFFFFFD C008000000000000_00
+4010FFFF 41D0043FFFC00000_00
+FFFFFFD3 C046800000000000_00
+FFFFFFFB C014000000000000_00
+FFFF800B C0DFFD4000000000_00
+000000B8 4067000000000000_00
+FFFFFFF7 C022000000000000_00
+FF800803 C15FFDFF40000000_00
+FFFFFFFE C000000000000000_00
+FFFFFFEF C031000000000000_00
+00803FFB 416007FF60000000_00
+00000308 4088400000000000_00
+FFFFFFDF C040800000000000_00
+2107FFFE 41C083FFFF000000_00
+FFE15D4F C13EA2B100000000_00
+FFFFFFBF C050400000000000_00
+400087FD 41D00021FF400000_00
+0000000F 402E000000000000_00
+FFFFFF7F C060200000000000_00
+FDFC007E C1801FFC10000000_00
+00000006 4018000000000000_00
+FFFFFEFF C070100000000000_00
+FFF80100 C11FFC0000000000_00
+FFFFFE99 C076700000000000_00
+FFFFFDFF C080080000000000_00
+03000002 4188000010000000_00
+FFF716EA C121D22C00000000_00
+FFFFFBFF C090040000000000_00
+C7FDFFFF C1CC010000800000_00
+FFFFE327 C0BCD90000000000_00
+FFFFF7FF C0A0020000000000_00
+0103DFFE 41703DFFE0000000_00
+07661FD8 419D987F60000000_00
+FFFFEFFF C0B0010000000000_00
+83FFFFFE C1DF000000800000_00
+FCD956DB C189354928000000_00
+FFFFDFFF C0C0008000000000_00
+FF2001FD C16BFFC060000000_00
+E4D35BBF C1BB2CA441000000_00
+FFFFBFFF C0D0004000000000_00
+DFEFEFFE C1C0080801000000_00
+05DA4300 4197690C00000000_00
+FFFF7FFF C0E0002000000000_00
+40001040 41D0000410000000_00
+812EDF40 C1DFB44830000000_00
+FFFEFFFF C0F0001000000000_00
+FFFFC007 C0CFFC8000000000_00
+00B6FCC9 4166DF9920000000_00
+FFFDFFFF C100000800000000_00
+000007FE 409FF80000000000_00
+FC3DE950 C18E10B580000000_00
+FFFBFFFF C110000400000000_00
+7FFFFE03 41DFFFFF80C00000_00
+FEB02B59 C174FD4A70000000_00
+FFF7FFFF C120000200000000_00
+10FF7FFF 41B0FF7FFF000000_00
+00008D5E 40E1ABC000000000_00
+FFEFFFFF C130000100000000_00
+FFFF007E C0EFF04000000000_00
+001C2108 413C210800000000_00
+FFDFFFFF C140000080000000_00
+00FFC001 416FF80020000000_00
+F01C6B36 C1AFC72994000000_00
+FFBFFFFF C150000040000000_00
+FFFF7FFF C0E0002000000000_00
+FFFFD055 C0C7D58000000000_00
+FF7FFFFF C160000020000000_00
+027BFFFE 4183DFFFF0000000_00
+FF3090D0 C169EDE600000000_00
+FEFFFFFF C170000010000000_00
+00082040 4120408000000000_00
+0000006E 405B800000000000_00
+FDFFFFFF C180000008000000_00
+FDFFFF87 C1800003C8000000_00
+04C3764D 41930DD934000000_00
+FBFFFFFF C190000004000000_00
+0006007E 411801F800000000_00
+000001EF 407EF00000000000_00
+F7FFFFFF C1A0000002000000_00
+FFBF7FFE C150200080000000_00
+FF1C4E5A C16C7634C0000000_00
+EFFFFFFF C1B0000001000000_00
+FFF97FFD C11A000C00000000_00
+000001D1 407D100000000000_00
+DFFFFFFF C1C0000000800000_00
+2FFFFFFE 41C7FFFFFF000000_00
+00136721 4133672100000000_00
+BFFFFFFF C1D0000000400000_00
+00004BFF 40D2FFC000000000_00
+00000544 4095100000000000_00
+7FFFFFFF 41DFFFFFFFC00000_00
+007FDFFB 415FF7FEC0000000_00
+FFF8BD5E C11D0A8800000000_00
+3FFFFFFF 41CFFFFFFF800000_00
+FFBF8003 C1501FFF40000000_00
+FFFE45D2 C0FBA2E000000000_00
+1FFFFFFF 41BFFFFFFF000000_00
+FFFFFDBF C082080000000000_00
+FFFFF189 C0ACEE0000000000_00
+0FFFFFFF 41AFFFFFFE000000_00
+FFFE6FFE C0F9002000000000_00
+FC8672A0 C18BCC6B00000000_00
+07FFFFFF 419FFFFFFC000000_00
+00000107 4070700000000000_00
+FFFCCA70 C109AC8000000000_00
+03FFFFFF 418FFFFFF8000000_00
+002107FE 414083FF00000000_00
+FFFF48E7 C0E6E32000000000_00
+01FFFFFF 417FFFFFF0000000_00
+F7FDFFEE C1A0040024000000_00
+00000010 4030000000000000_00
+00FFFFFF 416FFFFFE0000000_00
+FFFF01FD C0EFC06000000000_00
+0000FAEF 40EF5DE000000000_00
+007FFFFF 415FFFFFC0000000_00
+00FC0001 416F800020000000_00
+000000F5 406EA00000000000_00
+003FFFFF 414FFFFF80000000_00
+FFE07FC0 C13F804000000000_00
+001AFFFB 413AFFFB00000000_00
+001FFFFF 413FFFFF00000000_00
+00101FFD 41301FFD00000000_00
+FF4613B2 C1673D89C0000000_00
+000FFFFF 412FFFFE00000000_00
+F00005FE C1AFFFF404000000_00
+00036402 410B201000000000_00
+0007FFFF 411FFFFC00000000_00
+0404FFFF 419013FFFC000000_00
+021C2358 4180E11AC0000000_00
+0003FFFF 410FFFF800000000_00
+FFFFFD02 C087F00000000000_00
+FFFF41C6 C0E7C74000000000_00
+0001FFFF 40FFFFF000000000_00
+00000007 401C000000000000_00
+27F174DE 41C3F8BA6F000000_00
+0000FFFF 40EFFFE000000000_00
+000083F5 40E07EA000000000_00
+FFFFFFFB C014000000000000_00
+00007FFF 40DFFFC000000000_00
+FE7FDFFE C178020020000000_00
+FFFFFFFD C008000000000000_00
+00003FFF 40CFFF8000000000_00
+DBBFFFFE C1C2200001000000_00
+00000404 4090100000000000_00
+00001FFF 40BFFF0000000000_00
+FFFFC018 C0CFF40000000000_00
+00002853 40C4298000000000_00
+00000FFF 40AFFE0000000000_00
+03FE007F 418FF003F8000000_00
+FFFFF124 C0ADB80000000000_00
+000007FF 409FFC0000000000_00
+FFFFEFBE C0B0420000000000_00
+FFFB9AD8 C11194A000000000_00
+000003FF 408FF80000000000_00
+DFFFFDFE C1C0000101000000_00
+FFFFFD95 C083580000000000_00
+000001FF 407FF00000000000_00
+FDFFFFFF C180000008000000_00
+FFFFFFD0 C048000000000000_00
+000000FF 406FE00000000000_00
+0037FFE0 414BFFF000000000_00
+010EC496 4170EC4960000000_00
+0000007F 405FC00000000000_00
+B8007FFF C1D1FFE000400000_00
+00000012 4032000000000000_00
+0000003F 404F800000000000_00
+02003FFC 418001FFE0000000_00
+FFFFFFEF C031000000000000_00
+0000001F 403F000000000000_00
+FF7FFF02 C160001FC0000000_00
+FFFFE2CE C0BD320000000000_00
+0000000F 402E000000000000_00
+0000A00D 40E401A000000000_00
+FFFFFE44 C07BC00000000000_00
+00000007 401C000000000000_00
+0003FFFA 410FFFD000000000_00
+000038E7 40CC738000000000_00
+00000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rd.tv b/wally-pipelined/testbench/fp/i64_f32_rd.tv
new file mode 100644
index 000000000..9e003f1c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f32_rd.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 5CFFFFBF_01
+0000000032CC8B7A 4E4B322D_01
+0000000000000000 00000000_00
+FFFFFFFFC0003FFE CE7FFF01_01
+032C857F319EDE38 5C4B215F_01
+0000000000000001 3F800000_00
+FFFFFBFFFFF8003E D4800001_01
+00394C79B6D3007B 5A6531E6_01
+0000000000000002 40000000_00
+FBFFFFF0000001FF DC800002_01
+0000000001AE458D 4BD722C6_01
+0000000000000004 40800000_00
+00040008000007FE 58800100_01
+F9EB456140D88764 DCC29754_01
+0000000000000008 41000000_00
+FFFFE400FFFFFFFE D5DFF801_01
+07DE834A248EDF36 5CFBD069_01
+0000000000000010 41800000_00
+00000003FF001FFF 507FC007_01
+FFFFFFFFFFE385E2 C9E3D0F0_00
+0000000000000020 42000000_00
+F0041FFFFFFFFFFF DD7FBE01_01
+000000059EB1FD45 50B3D63F_01
+0000000000000040 42800000_00
+FFFFFFFFFFFCFFF9 C84001C0_00
+FFFFFFFFFFFEDDFE C7910100_00
+0000000000000080 43000000_00
+000000000003FF00 487FC000_00
+00000000C89FF56B 4F489FF5_01
+0000000000000100 43800000_00
+000FFFFF7FDFFFFF 597FFFF7_01
+1B5E4F0BE0DEBFF0 5DDAF278_01
+0000000000000200 44000000_00
+FFFDF803FFFFFFFF D801FF01_01
+FFFFFFFFFFF4766B C9389950_00
+0000000000000400 44800000_00
+0000080100000FFE 55001000_01
+000000000000000C 41400000_00
+0000000000000800 45000000_00
+0048000000100000 5A900000_01
+FFE662A109109D0A D9CCEAF8_01
+0000000000001000 45800000_00
+C000000037FFFFFE DE800000_01
+FFFFFFFFFFFFFFE4 C1E00000_00
+0000000000002000 46000000_00
+F801000000100000 DCFFE000_01
+FE114B79075F70EE DBF75A44_01
+0000000000004000 46800000_00
+100000000001003E 5D800000_01
+00000000000003AC 446B0000_00
+0000000000008000 47000000_00
+200000FFFFFFF800 5E000003_01
+00000044A3A3DBE5 52894747_01
+0000000000010000 47800000_00
+FFE0003EFFFFFFFF D9FFFE09_01
+FFFFFFFFFFFF1A91 C7656F00_00
+0000000000020000 48000000_00
+FFFFF7C3FFFFFFFD D503C001_01
+0000000000003309 464C2400_00
+0000000000040000 48800000_00
+000083FFF7FFFFFE 5703FFF7_01
+FFFFFFFFFFFFFF58 C3280000_00
+0000000000080000 49000000_00
+FFFFFFDE01FFFFFE D207F801_01
+0000000000002980 46260000_00
+0000000000100000 49800000_00
+00000000FFF07FFF 4F7FF07F_01
+000000000000005D 42BA0000_00
+0000000000200000 4A000000_00
+000020FFDFFFFFFF 5603FF7F_01
+FFFC8C23DA2CEAD8 D85CF70A_01
+0000000000400000 4A800000_00
+E0000000003FFFDF DE000000_01
+FFFFFDE3C1DEC43C D4070F89_01
+0000000000800000 4B000000_00
+FFFF00000BFFFFFD D77FFFF5_01
+000000000030FFBE 4A43FEF8_00
+0000000001000000 4B800000_00
+FFFE000007FFEFFD D7FFFFFD_01
+FFFFFFFFEFDEED86 CD810894_01
+0000000002000000 4C000000_00
+F3FFFFFFFFBFFFFE DD400001_01
+000000001DA3FF45 4DED1FFA_01
+0000000004000000 4C800000_00
+FFFFFFFF00010007 CF7FFF00_01
+FFFFFFFE9B1BCB54 CFB2721B_01
+0000000008000000 4D000000_00
+00004000004001FE 56800000_01
+F27DD19DE6563714 DD5822E7_01
+0000000010000000 4D800000_00
+FFC00000004007FE DA800000_01
+000000000001A359 47D1AC80_00
+0000000020000000 4E000000_00
+0000000003C000FE 4C70003F_01
+FFFFFFFFFE62EC20 CBCE89F0_00
+0000000040000000 4E800000_00
+000000003FFFFFFD 4E7FFFFF_01
+000000000000285F 46217C00_00
+0000000080000000 4F000000_00
+FFFFFFFFBFFFF00F CE800020_01
+FFFFF836F99DBAA8 D4F920CD_01
+0000000100000000 4F800000_00
+00000020003FFEFE 520000FF_01
+0033466832042D47 5A4D19A0_01
+0000000200000000 50000000_00
+FFFFFFFFFFFFF887 C4EF2000_00
+00000000003829C8 4A60A720_00
+0000000400000000 50800000_00
+00000FFFFFFF7DFD 557FFFFF_01
+0000000FB77C672B 517B77C6_01
+0000000800000000 51000000_00
+08003FFDFFFFFFFE 5D0003FF_01
+0000000000001B78 45DBC000_00
+0000001000000000 51800000_00
+FF7FFFFFFFEFDFFF DB000001_01
+0000000000000071 42E20000_00
+0000002000000000 52000000_00
+000013FFFFFFFDFF 559FFFFF_01
+FFFFFFFFFFFFFF86 C2F40000_00
+0000004000000000 52800000_00
+0800000000040800 5D000000_01
+FFF8A60D9E19F17E D8EB3E4D_01
+0000008000000000 53000000_00
+000077FFF0000000 56EFFFE0_00
+FFFFFFFFF7506DBA CD0AF925_01
+0000010000000000 53800000_00
+FFFFFFFFFFFEFBF7 C7820480_00
+FFFFFFFFFEA42AC9 CBADEA9C_01
+0000020000000000 54000000_00
+0000107FFFFFDFFD 5583FFFF_01
+FFE7AA3F2BDACC89 D9C2AE07_01
+0000040000000000 54800000_00
+FFF8040000040000 D8FF8000_01
+FFFFFFFFFFFFFFFD C0400000_00
+0000080000000000 55000000_00
+FFFF80000800001F D6FFFFF0_01
+FFFDF681DECDADC9 D8025F89_01
+0000100000000000 55800000_00
+FFFFFEFFFFE0007F D3800010_01
+FFFFFFFFFFFFCFBE C6410800_00
+0000200000000000 56000000_00
+0000000901FFFFFD 51101FFF_01
+FEC01FECA24DE1B0 DB9FF00A_01
+0000400000000000 56800000_00
+F7FFFFFFDFFF7FFF DD000001_01
+F858A66761669936 DCF4EB34_01
+0000800000000000 57000000_00
+FFFEFF800000003E D7804000_01
+F716EA43FAC45C97 DD0E915C_01
+0001000000000000 57800000_00
+FFFFFFFFFFFFFFC6 C2680000_00
+0024D70EC7661FD8 5A135C3B_01
+0002000000000000 58000000_00
+C07FFFFFFFFFFFFE DE7E0001_01
+FFD956DBD0AEE817 DA1AA491_01
+0004000000000000 58800000_00
+020003EFFFFFFFFE 5C0000FB_01
+FFFFFFFFFFFF4300 C73D0000_00
+0008000000000000 59000000_00
+4000000004002000 5E800000_01
+C12EDF40F41F6021 DE7B4483_01
+0010000000000000 59800000_00
+FF9000000000001D DAE00000_01
+FFFFFFF83DE950F6 D0F842D6_01
+0020000000000000 5A000000_00
+800003FFFFFC0000 DEFFFFF9_01
+FE2B59CB3A604D69 DBEA531B_01
+0040000000000000 5A800000_00
+7FFFFFFDFFFFBFFF 5EFFFFFF_01
+000000A37C210862 53237C21_01
+0080000000000000 5B000000_00
+0002000002000002 58000000_01
+FFFFB65CD8617789 D6934650_01
+0100000000000000 5B800000_00
+00001BFFFFFFBFFE 55DFFFFF_01
+FFFFFFFFFFFFF01D C57E3000_00
+0200000000000000 5C000000_00
+1000008000003FFF 5D800004_01
+000000000D098D19 4D5098D1_01
+0400000000000000 5C800000_00
+03FFFFFFFFFFF5FF 5C7FFFFF_01
+000006B3BD2C7BEF 54D677A5_01
+0800000000000000 5D000000_00
+00003FFFBFFFFFFE 567FFEFF_01
+FFFF4E5ADDDAA4A8 D731A523_01
+1000000000000000 5D800000_00
+001FFFC000000FFD 59FFFE00_01
+FFFFFFFFFFFFFF21 C35F0000_00
+2000000000000000 5E000000_00
+0000000041DFFFFF 4E83BFFF_01
+FFFFFFFFFC648262 CC66DF68_01
+4000000000000000 5E800000_00
+C0001FFFFFFFFFFB DE7FFF81_01
+FFFFFF7353AC45D2 D30CAC54_01
+8000000000000000 DF000000_00
+FFFFFFFFFFE7EFFF C9C08008_00
+0000000000A1202D 4B21202D_00
+C000000000000000 DE800000_00
+FFFFFFFFFFFF5F7F C7208100_00
+000000000040CA70 4A8194E0_00
+E000000000000000 DE000000_00
+0000200201FFFFFE 56000807_01
+00000003B55D87D4 506D5761_01
+F000000000000000 DD800000_00
+FF80000DFFFFFFFF DAFFFFE5_01
+000000010510FAEF 4F82887D_01
+F800000000000000 DD000000_00
+0003FFF00000000F 587FFC00_01
+000000000000724A 46E49400_00
+FC00000000000000 DC800000_00
+FFFFFFDF80000002 D2020000_01
+0000000000000064 42C80000_00
+FE00000000000000 DC000000_00
+FEFFFFFFFFF800FE DB800001_01
+FFFFFFC2C6222702 D274E778_01
+FF00000000000000 DB800000_00
+0000000408000002 50810000_01
+000000E96DF1CB41 53696DF1_01
+FF80000000000000 DB000000_00
+007FFFFFFFFFF9FE 5AFFFFFF_01
+F727F174DEE7DC85 DD0D80E9_01
+FFC0000000000000 DA800000_00
+8000000003FFFEFE DF000000_01
+FFFFFFFFFFF0BD5B C9742A50_00
+FFE0000000000000 DA000000_00
+0BEFFFFFFFFFFFFF 5D3EFFFF_01
+000000000002790C 481E4300_00
+FFF0000000000000 D9800000_00
+FFFFFFFFFFEFFBFA C9802030_00
+000000169E75DF01 51B4F3AE_01
+FFF8000000000000 D9000000_00
+00000007FEFFDFFF 50FFDFFB_01
+000000000000000E 41600000_00
+FFFC000000000000 D8800000_00
+0003FFFE0007FFFE 587FFF80_01
+FFFFFFFFFFF28622 C9579DE0_00
+FFFE000000000000 D8000000_00
+FFFFFF7FFFFDF7FF D3000003_01
+00072F0EC496FE21 58E5E1D8_01
+FFFF000000000000 D7800000_00
+DFBFFFFFFFFFFFFE DE010001_01
+0000000000FC1FCA 4B7C1FCA_00
+FFFF800000000000 D7000000_00
+00000FFF800FFFFE 557FF800_01
+FFFF5194E4A9C2CE D72E6B1C_01
+FFFFC00000000000 D6800000_00
+00000002100007FD 50040001_01
+FFFFFFFFFFC2D8FE CA749C08_00
+FFFFE00000000000 D6000000_00
+000000000007FF6E 48FFEDC0_00
+000000000001766E 47BB3700_00
+FFFFF00000000000 D5800000_00
+0040000400000002 5A800008_01
+0000000000007841 46F08200_00
+FFFFF80000000000 D5000000_00
+3DFFFFFFFFFFFF7E 5E77FFFF_01
+FFFFFFE549E17E30 D1D5B0F5_01
+FFFFFC0000000000 D4800000_00
+FFFFFFFFFFFFFEE1 C38F8000_00
+FFFFFFFFFFFFFFE7 C1C80000_00
+FFFFFE0000000000 D4000000_00
+000000000EFFFFDF 4D6FFFFD_01
+FFFFFFFFFFFFFF73 C30D0000_00
+FFFFFF0000000000 D3800000_00
+FD00000008000000 DC400000_01
+000000000001DBB1 47EDD880_00
+FFFFFF8000000000 D3000000_00
+FFFFFFFFFFF8007F C8FFF020_00
+FFFFFFFEFD10A515 CF8177AE_01
+FFFFFFC000000000 D2800000_00
+FFEFFFFFFFFFFFFE D9800001_01
+FAB02984F6283B6C DCA9FAD0_01
+FFFFFFE000000000 D2000000_00
+FFFFFFBC000001FE D2880000_01
+FEB087C6B9FE7FE0 DBA7BC1D_01
+FFFFFFF000000000 D1800000_00
+FFF80001000007FE D8FFFFE0_01
+00F2762EA6837956 5B72762E_01
+FFFFFFF800000000 D1000000_00
+FFF7E0FFFFFFFFFE D901F001_01
+00002E1175484626 563845D5_01
+FFFFFFFC00000000 D0800000_00
+0000200020000FFE 56000080_01
+000000000000068F 44D1E000_00
+FFFFFFFE00000000 D0000000_00
+021FFFFFFFFBFFFF 5C07FFFF_01
+FFFFFFFFFFFFFFF9 C0E00000_00
+FFFFFFFF00000000 CF800000_00
+FFFFFFD0000FFFFD D23FFFC1_01
+000000BDF6658B83 533DF665_01
+FFFFFFFF80000000 CF000000_00
+1000001FFDFFFFFF 5D800000_01
+0000000000003B5B 466D6C00_00
+FFFFFFFFC0000000 CE800000_00
+FFFFFFBFFE0FFFFF D28003E1_01
+FFFFFFFFFFFFFFF0 C1800000_00
+FFFFFFFFE0000000 CE000000_00
+FFFFFFFBF00007FF D0820000_01
+01E986274F48EAAD 5BF4C313_01
+FFFFFFFFF0000000 CD800000_00
+1FFFFFFDFFFFFF7F 5DFFFFFF_01
+FFFFFFFFFFFFCB5A C6529800_00
+FFFFFFFFF8000000 CD000000_00
+7FF000000000FFFF 5EFFE000_01
+00000003C2717FC3 50709C5F_01
+FFFFFFFFFC000000 CC800000_00
+FFFFFFE00008001F D1FFFFC0_01
+FFFFFFFFFFEFABDA C982A130_00
+FFFFFFFFFE000000 CC000000_00
+0200000000000002 5C000000_01
+FFFFFFFFF8FDA53F CCE04B59_01
+FFFFFFFFFF000000 CB800000_00
+F6000003FFFFFFFE DD200000_01
+FFFFFFFFFFFFFFD0 C2400000_00
+FFFFFFFFFF800000 CB000000_00
+FFFFFFFFFFBFFF7E CA800104_00
+00000000EE0FEA62 4F6E0FEA_01
+FFFFFFFFFFC00000 CA800000_00
+0000007FFF9FFFFD 52FFFF3F_01
+00000037F35EDC1D 525FCD7B_01
+FFFFFFFFFFE00000 CA000000_00
+FFFFFFF7FDFFFF7D D1002001_01
+00000000000001AD 43D68000_00
+FFFFFFFFFFF00000 C9800000_00
+FFFFFF0000100020 D37FFFF0_01
+27F167FBC7FC5F9A 5E1FC59F_01
+FFFFFFFFFFF80000 C9000000_00
+003FFFFFFFFC0001 5A7FFFFF_01
+000E48F9F4EBD30E 59648F9F_01
+FFFFFFFFFFFC0000 C8800000_00
+DFFFFFFFFFFBFFFE DE000001_01
+FC91C23EE8C9424F DC5B8F71_01
+FFFFFFFFFFFE0000 C8000000_00
+F7DFFBFFFFFFFFFE DD020041_01
+000000002CAE080C 4E32B820_01
+FFFFFFFFFFFF0000 C7800000_00
+FFFFC00010000020 D67FFFC0_01
+04D921F917B20E40 5C9B243F_01
+FFFFFFFFFFFF8000 C7000000_00
+F8000FFFFFFFFFFD DCFFFE01_01
+FFF17C566BC7D811 D9683A9A_01
+FFFFFFFFFFFFC000 C6800000_00
+00000000000000FE 437E0000_00
+FFF82AC14930D386 D8FAA7D7_01
+FFFFFFFFFFFFE000 C6000000_00
+00000000000003FC 447F0000_00
+000E62EC60E119FC 59662EC6_01
+FFFFFFFFFFFFF000 C5800000_00
+FFFFEFF7FF7FFFFE D5804005_01
+0E2B1ECF210EEDC5 5D62B1EC_01
+FFFFFFFFFFFFF800 C5000000_00
+00000000007FFF1F 4AFFFE3E_00
+FFFFFE534F5676F7 D3D65855_01
+FFFFFFFFFFFFFC00 C4800000_00
+0000001004FFFFFD 518027FF_01
+0000035C939669F1 545724E5_01
+FFFFFFFFFFFFFE00 C4000000_00
+1FFFFFFFFFFFFDFD 5DFFFFFF_01
+FFFFFFFFFFFFFF91 C2DE0000_00
+FFFFFFFFFFFFFF00 C3800000_00
+01FFFFFFFBFFEFFE 5BFFFFFF_01
+000000000000016E 43B70000_00
+FFFFFFFFFFFFFF80 C3000000_00
+FFF7FFFFFFFFF7FD D9000001_01
+FFFFF8E2BCFAC553 D4E3A861_01
+FFFFFFFFFFFFFFC0 C2800000_00
+FFFFFBFFFFFE0FFE D4800001_01
+00000001A4E704BF 4FD27382_01
+FFFFFFFFFFFFFFE0 C2000000_00
+1400007FFFFFFFFD 5DA00003_01
+FFFFFFFC93B187B4 D05B139F_01
+FFFFFFFFFFFFFFF0 C1800000_00
+40000000007FFFFD 5E800000_01
+000000000067D468 4ACFA8D0_00
+FFFFFFFFFFFFFFF8 C1000000_00
+007FFEFFFFFBFFFE 5AFFFDFF_01
+FFFFFFE26CEC79F8 D1EC989D_01
+FFFFFFFFFFFFFFFC C0800000_00
+00FFFFFF000000FF 5B7FFFFF_01
+FFFFFFFFE0D3983A CDF9633F_01
+FFFFFFFFFFFFFFFE C0000000_00
+00007FFFBFFF7FFE 56FFFF7F_01
+FFFFFFFDF4A7088A D002D63E_01
+FFFFFFFFFFFFFFFF BF800000_00
+000008000000027E 55000000_01
+000000000000F4E8 4774E800_00
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFF83FFDF CAF80042_00
+00000E11407887B2 55611407_01
+FFFFFFFFFFFFFFFB C0A00000_00
+04000003FFFFFFF6 5C800000_01
+0000000000000513 44A26000_00
+FFFFFFFFFFFFFFF7 C1100000_00
+BFFC00000000003E DE800800_01
+00000008D7BBB75B 510D7BBB_01
+FFFFFFFFFFFFFFEF C1880000_00
+000FFFFBFFFC0000 597FFFBF_01
+FFFFFFFFFFCD5A23 CA4A9774_00
+FFFFFFFFFFFFFFDF C2040000_00
+FFBFDFFFBFFFFFFF DA804001_01
+000000000000007F 42FE0000_00
+FFFFFFFFFFFFFFBF C2820000_00
+00000007FF800003 50FFF000_01
+000000000002BB02 482EC080_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEE7FF C78C0080_00
+00264B2B9BAD0DA2 5A192CAE_01
+FFFFFFFFFFFFFEFF C3808000_00
+0000000000100803 49804018_00
+FF9B1DCB9F857D5E DAC9C469_01
+FFFFFFFFFFFFFDFF C4004000_00
+FFFFFFBFFFFFEFEE D2800001_01
+F6FD7542899C1C6F DD1028AC_01
+FFFFFFFFFFFFFBFF C4802000_00
+FF800000004001FF DB000000_01
+0000000002BE4932 4C2F924C_01
+FFFFFFFFFFFFF7FF C5001000_00
+00001004000FFFFE 55802000_01
+FFFFFF9DAA0123E0 D2C4ABFE_01
+FFFFFFFFFFFFEFFF C5800800_00
+00000001FDFFFDFE 4FFEFFFE_01
+FFFC1C8703B1DCB0 D878DE40_01
+FFFFFFFFFFFFDFFF C6000400_00
+FE0FE00000000000 DBF81000_00
+0779ED944A4E2779 5CEF3DB2_01
+FFFFFFFFFFFFBFFF C6800200_00
+FBFFFE0400000000 DC800040_01
+0000010127E03666 538093F0_01
+FFFFFFFFFFFF7FFF C7000100_00
+FFFFF0200000FFFE D57E0000_01
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEFFFF C7800080_00
+FFEFFE0000080000 D9801000_01
+FFFFFFFFFD3354EA CC332AC6_01
+FFFFFFFFFFFDFFFF C8000040_00
+003FF0000003FFFE 5A7FC000_01
+0000006375B23F7B 52C6EB64_01
+FFFFFFFFFFFBFFFF C8800020_00
+000407FFFFFFFFF6 5880FFFF_01
+0000000092117F38 4F12117F_01
+FFFFFFFFFFF7FFFF C9000010_00
+FFFFFFFFFFFF7FFF C7000100_00
+00000000000008BE 450BE000_00
+FFFFFFFFFFEFFFFF C9800008_00
+004000020FFFFFFF 5A800004_01
+FFFFB84C2D8BC9CB D68F67A5_01
+FFFFFFFFFFDFFFFF CA000004_00
+00FFFFFFFFFFFFFD 5B7FFFFF_01
+00000023C2C6F284 520F0B1B_01
+FFFFFFFFFFBFFFFF CA800002_00
+FFFDDFFFFFFFFFFD D8080001_01
+00000000746356C4 4EE8C6AD_01
+FFFFFFFFFF7FFFFF CB000001_00
+010000000000BFFF 5B800000_01
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFEFFFFFF CB800001_01
+FFFFBF7FFBFFFFFE D6810009_01
+00000006386CE889 50C70D9D_01
+FFFFFFFFFDFFFFFF CC000001_01
+F00000F7FFFFFFFF DD7FFFF1_01
+FFFDFC53090C46A4 D800EB3E_01
+FFFFFFFFFBFFFFFF CC800001_01
+0000000000800047 4B000047_00
+FFFFFFFFD693872E CE25B1E4_01
+FFFFFFFFF7FFFFFF CD000001_01
+000000007FBFFBFF 4EFF7FF7_01
+00000026A7845E35 521A9E11_01
+FFFFFFFFEFFFFFFF CD800001_01
+FFFFFFDFFFFFFBFD D2000001_01
+000000001433D14C 4DA19E8A_01
+FFFFFFFFDFFFFFFF CE000001_01
+0001FFFFFFE0000E 57FFFFFF_01
+F0F23E8068D3D84A DD70DC18_01
+FFFFFFFFBFFFFFFF CE800001_01
+F7FFBFFFFFFFBFFF DD000401_01
+FFFFBD29B7459087 D685AC92_01
+FFFFFFFF7FFFFFFF CF000001_01
+FFFFFFF8FFFFBFFF D0E00009_01
+FFFFFFFFFFEDDC06 C9911FD0_00
+FFFFFFFEFFFFFFFF CF800001_01
+FFFFFFF80001FFFF D0FFFFC1_01
+0000000000002FF9 463FE400_00
+FFFFFFFDFFFFFFFF D0000001_01
+004000040000FFFF 5A800008_01
+FFFFFFFFFFFFFFF1 C1700000_00
+FFFFFFFBFFFFFFFF D0800001_01
+C0000000007FFFFA DE800000_01
+FFFFFFFFFE053E2B CBFD60EB_01
+FFFFFFF7FFFFFFFF D1000001_01
+7FFE000007FFFFFF 5EFFFC00_01
+000000000000000D 41500000_00
+FFFFFFEFFFFFFFFF D1800001_01
+F80000000001007E DD000000_01
+FFFFED48424AD9D6 D595BDEE_01
+FFFFFFDFFFFFFFFF D2000001_01
+FFFFFE0001FEFFFF D3FFFF01_01
+000000000000013B 439D8000_00
+FFFFFFBFFFFFFFFF D2800001_01
+0007FBFFFFFDFFFE 58FF7FFF_01
+4A16BD4128090C83 5E942D7A_01
+FFFFFF7FFFFFFFFF D3000001_01
+00FFF7FFFF7FFFFE 5B7FF7FF_01
+0000000000000006 40C00000_00
+FFFFFEFFFFFFFFFF D3800001_01
+FBFFFFBFFFBFFFFF DC800009_01
+00000000000001BA 43DD0000_00
+FFFFFDFFFFFFFFFF D4000001_01
+0000000040000082 4E800001_01
+FF07A2BF5B689F89 DB785D41_01
+FFFFFBFFFFFFFFFF D4800001_01
+0000001FF8000008 51FFC000_01
+F87CAA7DE672DE8B DCF06AB1_01
+FFFFF7FFFFFFFFFF D5000001_01
+07FFF80000000002 5CFFFF00_01
+0000000010A1E5B8 4D850F2D_01
+FFFFEFFFFFFFFFFF D5800001_01
+F7FFFFE00007FFFF DD000002_01
+FFFFFFFFFFF6ADFC C9152040_00
+FFFFDFFFFFFFFFFF D6000001_01
+FFFFFF03FFFFFFC0 D37C0001_01
+EA579475948F0032 DDAD435D_01
+FFFFBFFFFFFFFFFF D6800001_01
+FC00000000003FF6 DC800000_01
+002E677AC313BF60 5A399DEB_01
+FFFF7FFFFFFFFFFF D7000001_01
+02000007FF7FFFFF 5C000001_01
+0000000E999639F1 51699963_01
+FFFEFFFFFFFFFFFF D7800001_01
+FFFF83FFFFFFFFBE D6F80001_01
+000000000001537D 47A9BE80_00
+FFFDFFFFFFFFFFFF D8000001_01
+EFFFFFC00000003D DD800002_01
+FFFFFFF21FEDFD35 D15E0121_01
+FFFBFFFFFFFFFFFF D8800001_01
+FFFFFFF0000007FE D1800000_01
+FFFFFFFFFFDE0839 CA07DF1C_00
+FFF7FFFFFFFFFFFF D9000001_01
+0000007FFFE000FF 52FFFFC0_01
+FFFFFFFF79F30F48 CF060CF1_01
+FFEFFFFFFFFFFFFF D9800001_01
+FFFFFC13FFFFFFFD D47B0001_01
+0000000000001B85 45DC2800_00
+FFDFFFFFFFFFFFFF DA000001_01
+000008000007FFFE 55000000_01
+12DB4409E5AE87E6 5D96DA20_01
+FFBFFFFFFFFFFFFF DA800001_01
+FFFFFFFFFFF7BFEE C9040120_00
+FFFFFFFFFFFFFFFD C0400000_00
+FF7FFFFFFFFFFFFF DB000001_01
+000000001040FFFE 4D8207FF_01
+00000909A09C13D3 55109A09_01
+FEFFFFFFFFFFFFFF DB800001_01
+FFFFFF01FFFFFF7F D37E0001_01
+FFFFFF72E7D2575D D30D182E_01
+FDFFFFFFFFFFFFFF DC000001_01
+FFFFFFFFFFFEFFDB C7801280_00
+0000000000000017 41B80000_00
+FBFFFFFFFFFFFFFF DC800001_01
+100000001FFFFFF6 5D800000_01
+000000114B12EF51 518A5897_01
+F7FFFFFFFFFFFFFF DD000001_01
+0407FFFFFFFFFEFF 5C80FFFF_01
+FFFFFF769F3A5C2C D30960C6_01
+EFFFFFFFFFFFFFFF DD800001_01
+FFFFFFFDF7FFFFFD D0020001_01
+FFFFFFFFFFFFFFF2 C1600000_00
+DFFFFFFFFFFFFFFF DE000001_01
+FFFFFFFFFE0007FF CBFFFC01_01
+000000000000001E 41F00000_00
+BFFFFFFFFFFFFFFF DE800001_01
+FFF800000009FFFF D9000000_01
+0000000000007AA4 46F54800_00
+7FFFFFFFFFFFFFFF 5EFFFFFF_01
+4080000000FFFFFF 5E810000_01
+000000000DE7601D 4D5E7601_01
+3FFFFFFFFFFFFFFF 5E7FFFFF_01
+FFCFFFFFFFBFFFFE DA400001_01
+FFFFFFFFFFFFFFCA C2580000_00
+1FFFFFFFFFFFFFFF 5DFFFFFF_01
+000080400000003F 57004000_01
+00000000001F75A5 49FBAD28_00
+0FFFFFFFFFFFFFFF 5D7FFFFF_01
+FFFFFFEFFFFFCFFE D1800002_01
+FFFFFEE775887420 D38C453C_01
+07FFFFFFFFFFFFFF 5CFFFFFF_01
+00000000000801FE 49001FE0_00
+0000000000213FF1 4A04FFC4_00
+03FFFFFFFFFFFFFF 5C7FFFFF_01
+07FEFFFFFFFFFFEE 5CFFDFFF_01
+0000000000000004 40800000_00
+01FFFFFFFFFFFFFF 5BFFFFFF_01
+0000000820000003 51020000_01
+FFFFFFF9AD105214 D0CA5DF6_01
+00FFFFFFFFFFFFFF 5B7FFFFF_01
+FFFFF00FFFFFFFBE D57F0001_01
+FFFFFFFFFFCC48E7 CA4EDC64_00
+007FFFFFFFFFFFFF 5AFFFFFF_01
+00000FFFEF7FFFFF 557FFEF7_01
+FFFFFFFFFF0BA6CB CB745935_00
+003FFFFFFFFFFFFF 5A7FFFFF_01
+FFFFFF7FBFFFFFBF D3004001_01
+FFFFFFFFFFF24425 C95BBDB0_00
+001FFFFFFFFFFFFF 59FFFFFF_01
+200000001FFBFFFF 5E000000_01
+FFFFFF4E7115EC53 D3318EEB_01
+000FFFFFFFFFFFFF 597FFFFF_01
+FFFFF803FFFFFFBF D4FF8001_01
+FFFFFC2E539ADCFE D4746B1A_01
+0007FFFFFFFFFFFF 58FFFFFF_01
+FFFFFFFFFBFFFFFF CC800001_01
+00000055084732F3 52AA108E_01
+0003FFFFFFFFFFFF 587FFFFF_01
+BFFF7FFFFFFFFE00 DE800101_01
+FFFFFFFFFFFF8543 C6F57A00_00
+0001FFFFFFFFFFFF 57FFFFFF_01
+0000001FFBFFE000 51FFDFFF_00
+FFFFFFFFFFFE491B C7DB7280_00
+0000FFFFFFFFFFFF 577FFFFF_01
+FC00200000001FFE DC7FF800_01
+FFFFF16898822A24 D5697678_01
+00007FFFFFFFFFFF 56FFFFFF_01
+3FFF03FFFFFFFFFE 5E7FFC0F_01
+FFFFFF8FFE18C7BF D2E003CF_01
+00003FFFFFFFFFFF 567FFFFF_01
+FFFFFEFFFEFFFFFD D3800081_01
+00F03620C1266ED9 5B703620_01
+00001FFFFFFFFFFF 55FFFFFF_01
+BF7EFFFFFFFFFFFF DE810201_01
+FFFFFFFFFFFFFFD5 C22C0000_00
+00000FFFFFFFFFFF 557FFFFF_01
+FFFBFFFFF803FFFE D8800001_01
+0000000000068684 48D0D080_00
+000007FFFFFFFFFF 54FFFFFF_01
+DFFFFFE00000001E DE000001_01
+FFFFFFFFFFFFECF5 C5985800_00
+000003FFFFFFFFFF 547FFFFF_01
+FFFF00400000FFFF D77FC000_01
+0000000000000002 40000000_00
+000001FFFFFFFFFF 53FFFFFF_01
+FBFFFFFFFFFFBDFE DC800001_01
+0000000000000BC9 453C9000_00
+000000FFFFFFFFFF 537FFFFF_01
+807FFFFFFFFFDFFE DEFF0001_01
+FFC274E35A70CD76 DA762C73_01
+0000007FFFFFFFFF 52FFFFFF_01
+0FFFFFFFFEFFFFFD 5D7FFFFF_01
+FFFFFFFF00E73AFC CF7F18C6_01
+0000003FFFFFFFFF 527FFFFF_01
+FFC000000001000E DA800000_01
+FFFFFFFFFFFE15E9 C7F50B80_00
+0000001FFFFFFFFF 51FFFFFF_01
+0001FFFFFFFFF3FD 57FFFFFF_01
+0000000000000033 424C0000_00
+0000000FFFFFFFFF 517FFFFF_01
+000000001FFFBFFF 4DFFFDFF_01
+FFFFFFEE6B141E1B D18CA760_01
+00000007FFFFFFFF 50FFFFFF_01
+FFFFFFFFF60007FF CD1FFF81_01
+00000001AB310BA6 4FD59885_01
+00000003FFFFFFFF 507FFFFF_01
+0003FFFFB7FFFFFF 587FFFED_01
+FFFFFFFFFFFFF195 C566B000_00
+00000001FFFFFFFF 4FFFFFFF_01
+FFFFFFFF8000000B CF000000_01
+00000019BA8D5559 51CDD46A_01
+00000000FFFFFFFF 4F7FFFFF_01
+FBFEFFFFFFFFFFF9 DC802001_01
+FFFFFFB6F062822D D2921F3B_01
+000000007FFFFFFF 4EFFFFFF_01
+0001000000000082 57800000_01
+01CEAD9E2FB104A4 5BE756CF_01
+000000003FFFFFFF 4E7FFFFF_01
+000003FFFFFFFF7C 547FFFFF_01
+FFFFFFFFFD681E78 CC25F862_00
+000000001FFFFFFF 4DFFFFFF_01
+00002000400001FF 56000100_01
+0000000000000018 41C00000_00
+000000000FFFFFFF 4D7FFFFF_01
+3FFF80000000003E 5E7FFE00_01
+FFFFFFFFFFFFFF95 C2D60000_00
+0000000007FFFFFF 4CFFFFFF_01
+010000BFFFFFFFFF 5B80005F_01
+0000001697087B19 51B4B843_01
+0000000003FFFFFF 4C7FFFFF_01
+FBFFFFFFFFEEFFFD DC800001_01
+0000000E64BDFC55 51664BDF_01
+0000000001FFFFFF 4BFFFFFF_01
+FC00000001FFFFFE DC800000_01
+FFFED156A62AB849 D79754AD_01
+0000000000FFFFFF 4B7FFFFF_00
+FFFFFFF83FEFFFFD D0F80201_01
+00015354EAE7C259 57A9AA75_01
+00000000007FFFFF 4AFFFFFE_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFF0F4DF3C75 D170B20D_01
+00000000003FFFFF 4A7FFFFC_00
+FFFA000000001FFF D8C00000_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000001FFFFF 49FFFFF8_00
+FFFFFFFFFF7FFE40 CB0001C0_00
+FFFFFFDB5433CB9B D212AF31_01
+00000000000FFFFF 497FFFF0_00
+FFFFFDFFDFFDFFFD D4000801_01
+FFFFFFFFFFDEAE1F CA054784_00
+000000000007FFFF 48FFFFE0_00
+FFFFFFFFF0080006 CD7F8000_01
+FFFFFFFE7735DEC7 CFC46511_01
+000000000003FFFF 487FFFC0_00
+00000001FBFFFFFF 4FFDFFFF_01
+000003757D8B12ED 545D5F62_01
+000000000001FFFF 47FFFF80_00
+FFFFFE07F7FFFFFF D3FC0401_01
+00000A654064E046 55265406_01
+000000000000FFFF 477FFF00_00
+08000000000017FF 5D000000_01
+FFFFFFFFFFFFFFE7 C1C80000_00
+0000000000007FFF 46FFFE00_00
+07FFFFFFFFFFFDF6 5CFFFFFF_01
+FFFFAD78B3D6C3B6 D6A50E99_01
+0000000000003FFF 467FFC00_00
+0000300004000000 56400010_00
+FFFFFFF70B77F34F D10F4881_01
+0000000000001FFF 45FFF800_00
+FFFFFF80006FFFFE D2FFFF21_01
+0000013EB4D67EC8 539F5A6B_01
+0000000000000FFF 457FF000_00
+BFFFDFFFFBFFFFFF DE800041_01
+0005CEAF34EA1DC7 58B9D5E6_01
+00000000000007FF 44FFE000_00
+00004800007FFFFD 56900000_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000000003FF 447FC000_00
+0000000200001000 50000004_00
+00000000000360D0 48583400_00
+00000000000001FF 43FF8000_00
+01003FFFFFFFFFFC 5B801FFF_01
+00C000708FF1BA51 5B400070_01
+00000000000000FF 437F0000_00
+F802000003FFFFFF DCFFC000_01
+0F9E07DCC0BDC061 5D79E07D_01
+000000000000007F 42FE0000_00
+03FF0000000000FF 5C7FC000_01
+FFFFFFE1B9B2A079 D1F2326B_01
+000000000000003F 427C0000_00
+FFF80000000080FF D9000000_01
+00000000001EB5B4 49F5ADA0_00
+000000000000001F 41F80000_00
+000000000077FBFE 4AEFF7FC_00
+00000000005AC607 4AB58C0E_00
+000000000000000F 41700000_00
+FFFFFFFEF80000FF CF840000_01
+000005C5B9D66984 54B8B73A_01
+0000000000000007 40E00000_00
+C001FFFFFFF00000 DE7FF801_01
+00001D06B372AA06 55E8359B_01
+0000000000000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rne.tv b/wally-pipelined/testbench/fp/i64_f32_rne.tv
new file mode 100644
index 000000000..e766e9aec
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f32_rne.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 5CFFFFC0_01
+0000000032CC8B7A 4E4B322E_01
+0000000000000000 00000000_00
+FFFFFFFFC0003FFE CE7FFF00_01
+032C857F319EDE38 5C4B2160_01
+0000000000000001 3F800000_00
+FFFFFBFFFFF8003E D4800001_01
+00394C79B6D3007B 5A6531E7_01
+0000000000000002 40000000_00
+FBFFFFF0000001FF DC800002_01
+0000000001AE458D 4BD722C6_01
+0000000000000004 40800000_00
+00040008000007FE 58800100_01
+F9EB456140D88764 DCC29754_01
+0000000000000008 41000000_00
+FFFFE400FFFFFFFE D5DFF800_01
+07DE834A248EDF36 5CFBD069_01
+0000000000000010 41800000_00
+00000003FF001FFF 507FC008_01
+FFFFFFFFFFE385E2 C9E3D0F0_00
+0000000000000020 42000000_00
+F0041FFFFFFFFFFF DD7FBE00_01
+000000059EB1FD45 50B3D640_01
+0000000000000040 42800000_00
+FFFFFFFFFFFCFFF9 C84001C0_00
+FFFFFFFFFFFEDDFE C7910100_00
+0000000000000080 43000000_00
+000000000003FF00 487FC000_00
+00000000C89FF56B 4F489FF5_01
+0000000000000100 43800000_00
+000FFFFF7FDFFFFF 597FFFF8_01
+1B5E4F0BE0DEBFF0 5DDAF278_01
+0000000000000200 44000000_00
+FFFDF803FFFFFFFF D801FF00_01
+FFFFFFFFFFF4766B C9389950_00
+0000000000000400 44800000_00
+0000080100000FFE 55001000_01
+000000000000000C 41400000_00
+0000000000000800 45000000_00
+0048000000100000 5A900000_01
+FFE662A109109D0A D9CCEAF8_01
+0000000000001000 45800000_00
+C000000037FFFFFE DE800000_01
+FFFFFFFFFFFFFFE4 C1E00000_00
+0000000000002000 46000000_00
+F801000000100000 DCFFE000_01
+FE114B79075F70EE DBF75A43_01
+0000000000004000 46800000_00
+100000000001003E 5D800000_01
+00000000000003AC 446B0000_00
+0000000000008000 47000000_00
+200000FFFFFFF800 5E000004_01
+00000044A3A3DBE5 52894748_01
+0000000000010000 47800000_00
+FFE0003EFFFFFFFF D9FFFE08_01
+FFFFFFFFFFFF1A91 C7656F00_00
+0000000000020000 48000000_00
+FFFFF7C3FFFFFFFD D503C000_01
+0000000000003309 464C2400_00
+0000000000040000 48800000_00
+000083FFF7FFFFFE 5703FFF8_01
+FFFFFFFFFFFFFF58 C3280000_00
+0000000000080000 49000000_00
+FFFFFFDE01FFFFFE D207F800_01
+0000000000002980 46260000_00
+0000000000100000 49800000_00
+00000000FFF07FFF 4F7FF080_01
+000000000000005D 42BA0000_00
+0000000000200000 4A000000_00
+000020FFDFFFFFFF 5603FF80_01
+FFFC8C23DA2CEAD8 D85CF709_01
+0000000000400000 4A800000_00
+E0000000003FFFDF DE000000_01
+FFFFFDE3C1DEC43C D4070F88_01
+0000000000800000 4B000000_00
+FFFF00000BFFFFFD D77FFFF4_01
+000000000030FFBE 4A43FEF8_00
+0000000001000000 4B800000_00
+FFFE000007FFEFFD D7FFFFFC_01
+FFFFFFFFEFDEED86 CD810894_01
+0000000002000000 4C000000_00
+F3FFFFFFFFBFFFFE DD400000_01
+000000001DA3FF45 4DED1FFA_01
+0000000004000000 4C800000_00
+FFFFFFFF00010007 CF7FFF00_01
+FFFFFFFE9B1BCB54 CFB2721A_01
+0000000008000000 4D000000_00
+00004000004001FE 56800001_01
+F27DD19DE6563714 DD5822E6_01
+0000000010000000 4D800000_00
+FFC00000004007FE DA800000_01
+000000000001A359 47D1AC80_00
+0000000020000000 4E000000_00
+0000000003C000FE 4C700040_01
+FFFFFFFFFE62EC20 CBCE89F0_00
+0000000040000000 4E800000_00
+000000003FFFFFFD 4E800000_01
+000000000000285F 46217C00_00
+0000000080000000 4F000000_00
+FFFFFFFFBFFFF00F CE800020_01
+FFFFF836F99DBAA8 D4F920CC_01
+0000000100000000 4F800000_00
+00000020003FFEFE 52000100_01
+0033466832042D47 5A4D19A1_01
+0000000200000000 50000000_00
+FFFFFFFFFFFFF887 C4EF2000_00
+00000000003829C8 4A60A720_00
+0000000400000000 50800000_00
+00000FFFFFFF7DFD 55800000_01
+0000000FB77C672B 517B77C6_01
+0000000800000000 51000000_00
+08003FFDFFFFFFFE 5D000400_01
+0000000000001B78 45DBC000_00
+0000001000000000 51800000_00
+FF7FFFFFFFEFDFFF DB000000_01
+0000000000000071 42E20000_00
+0000002000000000 52000000_00
+000013FFFFFFFDFF 55A00000_01
+FFFFFFFFFFFFFF86 C2F40000_00
+0000004000000000 52800000_00
+0800000000040800 5D000000_01
+FFF8A60D9E19F17E D8EB3E4C_01
+0000008000000000 53000000_00
+000077FFF0000000 56EFFFE0_00
+FFFFFFFFF7506DBA CD0AF924_01
+0000010000000000 53800000_00
+FFFFFFFFFFFEFBF7 C7820480_00
+FFFFFFFFFEA42AC9 CBADEA9C_01
+0000020000000000 54000000_00
+0000107FFFFFDFFD 55840000_01
+FFE7AA3F2BDACC89 D9C2AE07_01
+0000040000000000 54800000_00
+FFF8040000040000 D8FF8000_01
+FFFFFFFFFFFFFFFD C0400000_00
+0000080000000000 55000000_00
+FFFF80000800001F D6FFFFF0_01
+FFFDF681DECDADC9 D8025F88_01
+0000100000000000 55800000_00
+FFFFFEFFFFE0007F D3800010_01
+FFFFFFFFFFFFCFBE C6410800_00
+0000200000000000 56000000_00
+0000000901FFFFFD 51102000_01
+FEC01FECA24DE1B0 DB9FF00A_01
+0000400000000000 56800000_00
+F7FFFFFFDFFF7FFF DD000000_01
+F858A66761669936 DCF4EB33_01
+0000800000000000 57000000_00
+FFFEFF800000003E D7804000_01
+F716EA43FAC45C97 DD0E915C_01
+0001000000000000 57800000_00
+FFFFFFFFFFFFFFC6 C2680000_00
+0024D70EC7661FD8 5A135C3B_01
+0002000000000000 58000000_00
+C07FFFFFFFFFFFFE DE7E0000_01
+FFD956DBD0AEE817 DA1AA491_01
+0004000000000000 58800000_00
+020003EFFFFFFFFE 5C0000FC_01
+FFFFFFFFFFFF4300 C73D0000_00
+0008000000000000 59000000_00
+4000000004002000 5E800000_01
+C12EDF40F41F6021 DE7B4483_01
+0010000000000000 59800000_00
+FF9000000000001D DAE00000_01
+FFFFFFF83DE950F6 D0F842D6_01
+0020000000000000 5A000000_00
+800003FFFFFC0000 DEFFFFF8_01
+FE2B59CB3A604D69 DBEA531A_01
+0040000000000000 5A800000_00
+7FFFFFFDFFFFBFFF 5F000000_01
+000000A37C210862 53237C21_01
+0080000000000000 5B000000_00
+0002000002000002 58000001_01
+FFFFB65CD8617789 D693464F_01
+0100000000000000 5B800000_00
+00001BFFFFFFBFFE 55E00000_01
+FFFFFFFFFFFFF01D C57E3000_00
+0200000000000000 5C000000_00
+1000008000003FFF 5D800004_01
+000000000D098D19 4D5098D2_01
+0400000000000000 5C800000_00
+03FFFFFFFFFFF5FF 5C800000_01
+000006B3BD2C7BEF 54D677A6_01
+0800000000000000 5D000000_00
+00003FFFBFFFFFFE 567FFF00_01
+FFFF4E5ADDDAA4A8 D731A522_01
+1000000000000000 5D800000_00
+001FFFC000000FFD 59FFFE00_01
+FFFFFFFFFFFFFF21 C35F0000_00
+2000000000000000 5E000000_00
+0000000041DFFFFF 4E83C000_01
+FFFFFFFFFC648262 CC66DF68_01
+4000000000000000 5E800000_00
+C0001FFFFFFFFFFB DE7FFF80_01
+FFFFFF7353AC45D2 D30CAC54_01
+8000000000000000 DF000000_00
+FFFFFFFFFFE7EFFF C9C08008_00
+0000000000A1202D 4B21202D_00
+C000000000000000 DE800000_00
+FFFFFFFFFFFF5F7F C7208100_00
+000000000040CA70 4A8194E0_00
+E000000000000000 DE000000_00
+0000200201FFFFFE 56000808_01
+00000003B55D87D4 506D5762_01
+F000000000000000 DD800000_00
+FF80000DFFFFFFFF DAFFFFE4_01
+000000010510FAEF 4F82887D_01
+F800000000000000 DD000000_00
+0003FFF00000000F 587FFC00_01
+000000000000724A 46E49400_00
+FC00000000000000 DC800000_00
+FFFFFFDF80000002 D2020000_01
+0000000000000064 42C80000_00
+FE00000000000000 DC000000_00
+FEFFFFFFFFF800FE DB800000_01
+FFFFFFC2C6222702 D274E777_01
+FF00000000000000 DB800000_00
+0000000408000002 50810000_01
+000000E96DF1CB41 53696DF2_01
+FF80000000000000 DB000000_00
+007FFFFFFFFFF9FE 5B000000_01
+F727F174DEE7DC85 DD0D80E9_01
+FFC0000000000000 DA800000_00
+8000000003FFFEFE DF000000_01
+FFFFFFFFFFF0BD5B C9742A50_00
+FFE0000000000000 DA000000_00
+0BEFFFFFFFFFFFFF 5D3F0000_01
+000000000002790C 481E4300_00
+FFF0000000000000 D9800000_00
+FFFFFFFFFFEFFBFA C9802030_00
+000000169E75DF01 51B4F3AF_01
+FFF8000000000000 D9000000_00
+00000007FEFFDFFF 50FFDFFC_01
+000000000000000E 41600000_00
+FFFC000000000000 D8800000_00
+0003FFFE0007FFFE 587FFF80_01
+FFFFFFFFFFF28622 C9579DE0_00
+FFFE000000000000 D8000000_00
+FFFFFF7FFFFDF7FF D3000002_01
+00072F0EC496FE21 58E5E1D9_01
+FFFF000000000000 D7800000_00
+DFBFFFFFFFFFFFFE DE010000_01
+0000000000FC1FCA 4B7C1FCA_00
+FFFF800000000000 D7000000_00
+00000FFF800FFFFE 557FF801_01
+FFFF5194E4A9C2CE D72E6B1B_01
+FFFFC00000000000 D6800000_00
+00000002100007FD 50040002_01
+FFFFFFFFFFC2D8FE CA749C08_00
+FFFFE00000000000 D6000000_00
+000000000007FF6E 48FFEDC0_00
+000000000001766E 47BB3700_00
+FFFFF00000000000 D5800000_00
+0040000400000002 5A800008_01
+0000000000007841 46F08200_00
+FFFFF80000000000 D5000000_00
+3DFFFFFFFFFFFF7E 5E780000_01
+FFFFFFE549E17E30 D1D5B0F4_01
+FFFFFC0000000000 D4800000_00
+FFFFFFFFFFFFFEE1 C38F8000_00
+FFFFFFFFFFFFFFE7 C1C80000_00
+FFFFFE0000000000 D4000000_00
+000000000EFFFFDF 4D6FFFFE_01
+FFFFFFFFFFFFFF73 C30D0000_00
+FFFFFF0000000000 D3800000_00
+FD00000008000000 DC400000_01
+000000000001DBB1 47EDD880_00
+FFFFFF8000000000 D3000000_00
+FFFFFFFFFFF8007F C8FFF020_00
+FFFFFFFEFD10A515 CF8177AD_01
+FFFFFFC000000000 D2800000_00
+FFEFFFFFFFFFFFFE D9800000_01
+FAB02984F6283B6C DCA9FACF_01
+FFFFFFE000000000 D2000000_00
+FFFFFFBC000001FE D2880000_01
+FEB087C6B9FE7FE0 DBA7BC1D_01
+FFFFFFF000000000 D1800000_00
+FFF80001000007FE D8FFFFE0_01
+00F2762EA6837956 5B72762F_01
+FFFFFFF800000000 D1000000_00
+FFF7E0FFFFFFFFFE D901F000_01
+00002E1175484626 563845D5_01
+FFFFFFFC00000000 D0800000_00
+0000200020000FFE 56000080_01
+000000000000068F 44D1E000_00
+FFFFFFFE00000000 D0000000_00
+021FFFFFFFFBFFFF 5C080000_01
+FFFFFFFFFFFFFFF9 C0E00000_00
+FFFFFFFF00000000 CF800000_00
+FFFFFFD0000FFFFD D23FFFC0_01
+000000BDF6658B83 533DF666_01
+FFFFFFFF80000000 CF000000_00
+1000001FFDFFFFFF 5D800001_01
+0000000000003B5B 466D6C00_00
+FFFFFFFFC0000000 CE800000_00
+FFFFFFBFFE0FFFFF D28003E0_01
+FFFFFFFFFFFFFFF0 C1800000_00
+FFFFFFFFE0000000 CE000000_00
+FFFFFFFBF00007FF D081FFFF_01
+01E986274F48EAAD 5BF4C314_01
+FFFFFFFFF0000000 CD800000_00
+1FFFFFFDFFFFFF7F 5E000000_01
+FFFFFFFFFFFFCB5A C6529800_00
+FFFFFFFFF8000000 CD000000_00
+7FF000000000FFFF 5EFFE000_01
+00000003C2717FC3 50709C60_01
+FFFFFFFFFC000000 CC800000_00
+FFFFFFE00008001F D1FFFFC0_01
+FFFFFFFFFFEFABDA C982A130_00
+FFFFFFFFFE000000 CC000000_00
+0200000000000002 5C000000_01
+FFFFFFFFF8FDA53F CCE04B58_01
+FFFFFFFFFF000000 CB800000_00
+F6000003FFFFFFFE DD200000_01
+FFFFFFFFFFFFFFD0 C2400000_00
+FFFFFFFFFF800000 CB000000_00
+FFFFFFFFFFBFFF7E CA800104_00
+00000000EE0FEA62 4F6E0FEA_01
+FFFFFFFFFFC00000 CA800000_00
+0000007FFF9FFFFD 52FFFF40_01
+00000037F35EDC1D 525FCD7B_01
+FFFFFFFFFFE00000 CA000000_00
+FFFFFFF7FDFFFF7D D1002000_01
+00000000000001AD 43D68000_00
+FFFFFFFFFFF00000 C9800000_00
+FFFFFF0000100020 D37FFFF0_01
+27F167FBC7FC5F9A 5E1FC5A0_01
+FFFFFFFFFFF80000 C9000000_00
+003FFFFFFFFC0001 5A800000_01
+000E48F9F4EBD30E 59648F9F_01
+FFFFFFFFFFFC0000 C8800000_00
+DFFFFFFFFFFBFFFE DE000000_01
+FC91C23EE8C9424F DC5B8F70_01
+FFFFFFFFFFFE0000 C8000000_00
+F7DFFBFFFFFFFFFE DD020040_01
+000000002CAE080C 4E32B820_01
+FFFFFFFFFFFF0000 C7800000_00
+FFFFC00010000020 D67FFFC0_01
+04D921F917B20E40 5C9B243F_01
+FFFFFFFFFFFF8000 C7000000_00
+F8000FFFFFFFFFFD DCFFFE00_01
+FFF17C566BC7D811 D9683A99_01
+FFFFFFFFFFFFC000 C6800000_00
+00000000000000FE 437E0000_00
+FFF82AC14930D386 D8FAA7D7_01
+FFFFFFFFFFFFE000 C6000000_00
+00000000000003FC 447F0000_00
+000E62EC60E119FC 59662EC6_01
+FFFFFFFFFFFFF000 C5800000_00
+FFFFEFF7FF7FFFFE D5804004_01
+0E2B1ECF210EEDC5 5D62B1ED_01
+FFFFFFFFFFFFF800 C5000000_00
+00000000007FFF1F 4AFFFE3E_00
+FFFFFE534F5676F7 D3D65855_01
+FFFFFFFFFFFFFC00 C4800000_00
+0000001004FFFFFD 51802800_01
+0000035C939669F1 545724E6_01
+FFFFFFFFFFFFFE00 C4000000_00
+1FFFFFFFFFFFFDFD 5E000000_01
+FFFFFFFFFFFFFF91 C2DE0000_00
+FFFFFFFFFFFFFF00 C3800000_00
+01FFFFFFFBFFEFFE 5C000000_01
+000000000000016E 43B70000_00
+FFFFFFFFFFFFFF80 C3000000_00
+FFF7FFFFFFFFF7FD D9000000_01
+FFFFF8E2BCFAC553 D4E3A861_01
+FFFFFFFFFFFFFFC0 C2800000_00
+FFFFFBFFFFFE0FFE D4800000_01
+00000001A4E704BF 4FD27382_01
+FFFFFFFFFFFFFFE0 C2000000_00
+1400007FFFFFFFFD 5DA00004_01
+FFFFFFFC93B187B4 D05B139E_01
+FFFFFFFFFFFFFFF0 C1800000_00
+40000000007FFFFD 5E800000_01
+000000000067D468 4ACFA8D0_00
+FFFFFFFFFFFFFFF8 C1000000_00
+007FFEFFFFFBFFFE 5AFFFE00_01
+FFFFFFE26CEC79F8 D1EC989C_01
+FFFFFFFFFFFFFFFC C0800000_00
+00FFFFFF000000FF 5B7FFFFF_01
+FFFFFFFFE0D3983A CDF9633E_01
+FFFFFFFFFFFFFFFE C0000000_00
+00007FFFBFFF7FFE 56FFFF80_01
+FFFFFFFDF4A7088A D002D63E_01
+FFFFFFFFFFFFFFFF BF800000_00
+000008000000027E 55000000_01
+000000000000F4E8 4774E800_00
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFF83FFDF CAF80042_00
+00000E11407887B2 55611408_01
+FFFFFFFFFFFFFFFB C0A00000_00
+04000003FFFFFFF6 5C800000_01
+0000000000000513 44A26000_00
+FFFFFFFFFFFFFFF7 C1100000_00
+BFFC00000000003E DE800800_01
+00000008D7BBB75B 510D7BBB_01
+FFFFFFFFFFFFFFEF C1880000_00
+000FFFFBFFFC0000 597FFFC0_01
+FFFFFFFFFFCD5A23 CA4A9774_00
+FFFFFFFFFFFFFFDF C2040000_00
+FFBFDFFFBFFFFFFF DA804001_01
+000000000000007F 42FE0000_00
+FFFFFFFFFFFFFFBF C2820000_00
+00000007FF800003 50FFF000_01
+000000000002BB02 482EC080_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEE7FF C78C0080_00
+00264B2B9BAD0DA2 5A192CAE_01
+FFFFFFFFFFFFFEFF C3808000_00
+0000000000100803 49804018_00
+FF9B1DCB9F857D5E DAC9C469_01
+FFFFFFFFFFFFFDFF C4004000_00
+FFFFFFBFFFFFEFEE D2800000_01
+F6FD7542899C1C6F DD1028AC_01
+FFFFFFFFFFFFFBFF C4802000_00
+FF800000004001FF DB000000_01
+0000000002BE4932 4C2F924C_01
+FFFFFFFFFFFFF7FF C5001000_00
+00001004000FFFFE 55802000_01
+FFFFFF9DAA0123E0 D2C4ABFE_01
+FFFFFFFFFFFFEFFF C5800800_00
+00000001FDFFFDFE 4FFEFFFF_01
+FFFC1C8703B1DCB0 D878DE3F_01
+FFFFFFFFFFFFDFFF C6000400_00
+FE0FE00000000000 DBF81000_00
+0779ED944A4E2779 5CEF3DB3_01
+FFFFFFFFFFFFBFFF C6800200_00
+FBFFFE0400000000 DC800040_01
+0000010127E03666 538093F0_01
+FFFFFFFFFFFF7FFF C7000100_00
+FFFFF0200000FFFE D57E0000_01
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEFFFF C7800080_00
+FFEFFE0000080000 D9801000_01
+FFFFFFFFFD3354EA CC332AC6_01
+FFFFFFFFFFFDFFFF C8000040_00
+003FF0000003FFFE 5A7FC000_01
+0000006375B23F7B 52C6EB64_01
+FFFFFFFFFFFBFFFF C8800020_00
+000407FFFFFFFFF6 58810000_01
+0000000092117F38 4F12117F_01
+FFFFFFFFFFF7FFFF C9000010_00
+FFFFFFFFFFFF7FFF C7000100_00
+00000000000008BE 450BE000_00
+FFFFFFFFFFEFFFFF C9800008_00
+004000020FFFFFFF 5A800004_01
+FFFFB84C2D8BC9CB D68F67A5_01
+FFFFFFFFFFDFFFFF CA000004_00
+00FFFFFFFFFFFFFD 5B800000_01
+00000023C2C6F284 520F0B1C_01
+FFFFFFFFFFBFFFFF CA800002_00
+FFFDDFFFFFFFFFFD D8080000_01
+00000000746356C4 4EE8C6AE_01
+FFFFFFFFFF7FFFFF CB000001_00
+010000000000BFFF 5B800000_01
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFEFFFFFF CB800000_01
+FFFFBF7FFBFFFFFE D6810008_01
+00000006386CE889 50C70D9D_01
+FFFFFFFFFDFFFFFF CC000000_01
+F00000F7FFFFFFFF DD7FFFF1_01
+FFFDFC53090C46A4 D800EB3E_01
+FFFFFFFFFBFFFFFF CC800000_01
+0000000000800047 4B000047_00
+FFFFFFFFD693872E CE25B1E3_01
+FFFFFFFFF7FFFFFF CD000000_01
+000000007FBFFBFF 4EFF7FF8_01
+00000026A7845E35 521A9E11_01
+FFFFFFFFEFFFFFFF CD800000_01
+FFFFFFDFFFFFFBFD D2000000_01
+000000001433D14C 4DA19E8A_01
+FFFFFFFFDFFFFFFF CE000000_01
+0001FFFFFFE0000E 58000000_01
+F0F23E8068D3D84A DD70DC18_01
+FFFFFFFFBFFFFFFF CE800000_01
+F7FFBFFFFFFFBFFF DD000400_01
+FFFFBD29B7459087 D685AC91_01
+FFFFFFFF7FFFFFFF CF000000_01
+FFFFFFF8FFFFBFFF D0E00008_01
+FFFFFFFFFFEDDC06 C9911FD0_00
+FFFFFFFEFFFFFFFF CF800000_01
+FFFFFFF80001FFFF D0FFFFC0_01
+0000000000002FF9 463FE400_00
+FFFFFFFDFFFFFFFF D0000000_01
+004000040000FFFF 5A800008_01
+FFFFFFFFFFFFFFF1 C1700000_00
+FFFFFFFBFFFFFFFF D0800000_01
+C0000000007FFFFA DE800000_01
+FFFFFFFFFE053E2B CBFD60EA_01
+FFFFFFF7FFFFFFFF D1000000_01
+7FFE000007FFFFFF 5EFFFC00_01
+000000000000000D 41500000_00
+FFFFFFEFFFFFFFFF D1800000_01
+F80000000001007E DD000000_01
+FFFFED48424AD9D6 D595BDEE_01
+FFFFFFDFFFFFFFFF D2000000_01
+FFFFFE0001FEFFFF D3FFFF01_01
+000000000000013B 439D8000_00
+FFFFFFBFFFFFFFFF D2800000_01
+0007FBFFFFFDFFFE 58FF8000_01
+4A16BD4128090C83 5E942D7B_01
+FFFFFF7FFFFFFFFF D3000000_01
+00FFF7FFFF7FFFFE 5B7FF800_01
+0000000000000006 40C00000_00
+FFFFFEFFFFFFFFFF D3800000_01
+FBFFFFBFFFBFFFFF DC800008_01
+00000000000001BA 43DD0000_00
+FFFFFDFFFFFFFFFF D4000000_01
+0000000040000082 4E800001_01
+FF07A2BF5B689F89 DB785D41_01
+FFFFFBFFFFFFFFFF D4800000_01
+0000001FF8000008 51FFC000_01
+F87CAA7DE672DE8B DCF06AB0_01
+FFFFF7FFFFFFFFFF D5000000_01
+07FFF80000000002 5CFFFF00_01
+0000000010A1E5B8 4D850F2E_01
+FFFFEFFFFFFFFFFF D5800000_01
+F7FFFFE00007FFFF DD000002_01
+FFFFFFFFFFF6ADFC C9152040_00
+FFFFDFFFFFFFFFFF D6000000_01
+FFFFFF03FFFFFFC0 D37C0000_01
+EA579475948F0032 DDAD435C_01
+FFFFBFFFFFFFFFFF D6800000_01
+FC00000000003FF6 DC800000_01
+002E677AC313BF60 5A399DEB_01
+FFFF7FFFFFFFFFFF D7000000_01
+02000007FF7FFFFF 5C000002_01
+0000000E999639F1 51699964_01
+FFFEFFFFFFFFFFFF D7800000_01
+FFFF83FFFFFFFFBE D6F80000_01
+000000000001537D 47A9BE80_00
+FFFDFFFFFFFFFFFF D8000000_01
+EFFFFFC00000003D DD800002_01
+FFFFFFF21FEDFD35 D15E0120_01
+FFFBFFFFFFFFFFFF D8800000_01
+FFFFFFF0000007FE D1800000_01
+FFFFFFFFFFDE0839 CA07DF1C_00
+FFF7FFFFFFFFFFFF D9000000_01
+0000007FFFE000FF 52FFFFC0_01
+FFFFFFFF79F30F48 CF060CF1_01
+FFEFFFFFFFFFFFFF D9800000_01
+FFFFFC13FFFFFFFD D47B0000_01
+0000000000001B85 45DC2800_00
+FFDFFFFFFFFFFFFF DA000000_01
+000008000007FFFE 55000000_01
+12DB4409E5AE87E6 5D96DA20_01
+FFBFFFFFFFFFFFFF DA800000_01
+FFFFFFFFFFF7BFEE C9040120_00
+FFFFFFFFFFFFFFFD C0400000_00
+FF7FFFFFFFFFFFFF DB000000_01
+000000001040FFFE 4D820800_01
+00000909A09C13D3 55109A0A_01
+FEFFFFFFFFFFFFFF DB800000_01
+FFFFFF01FFFFFF7F D37E0000_01
+FFFFFF72E7D2575D D30D182E_01
+FDFFFFFFFFFFFFFF DC000000_01
+FFFFFFFFFFFEFFDB C7801280_00
+0000000000000017 41B80000_00
+FBFFFFFFFFFFFFFF DC800000_01
+100000001FFFFFF6 5D800000_01
+000000114B12EF51 518A5897_01
+F7FFFFFFFFFFFFFF DD000000_01
+0407FFFFFFFFFEFF 5C810000_01
+FFFFFF769F3A5C2C D30960C6_01
+EFFFFFFFFFFFFFFF DD800000_01
+FFFFFFFDF7FFFFFD D0020000_01
+FFFFFFFFFFFFFFF2 C1600000_00
+DFFFFFFFFFFFFFFF DE000000_01
+FFFFFFFFFE0007FF CBFFFC00_01
+000000000000001E 41F00000_00
+BFFFFFFFFFFFFFFF DE800000_01
+FFF800000009FFFF D9000000_01
+0000000000007AA4 46F54800_00
+7FFFFFFFFFFFFFFF 5F000000_01
+4080000000FFFFFF 5E810000_01
+000000000DE7601D 4D5E7602_01
+3FFFFFFFFFFFFFFF 5E800000_01
+FFCFFFFFFFBFFFFE DA400000_01
+FFFFFFFFFFFFFFCA C2580000_00
+1FFFFFFFFFFFFFFF 5E000000_01
+000080400000003F 57004000_01
+00000000001F75A5 49FBAD28_00
+0FFFFFFFFFFFFFFF 5D800000_01
+FFFFFFEFFFFFCFFE D1800002_01
+FFFFFEE775887420 D38C453C_01
+07FFFFFFFFFFFFFF 5D000000_01
+00000000000801FE 49001FE0_00
+0000000000213FF1 4A04FFC4_00
+03FFFFFFFFFFFFFF 5C800000_01
+07FEFFFFFFFFFFEE 5CFFE000_01
+0000000000000004 40800000_00
+01FFFFFFFFFFFFFF 5C000000_01
+0000000820000003 51020000_01
+FFFFFFF9AD105214 D0CA5DF6_01
+00FFFFFFFFFFFFFF 5B800000_01
+FFFFF00FFFFFFFBE D57F0000_01
+FFFFFFFFFFCC48E7 CA4EDC64_00
+007FFFFFFFFFFFFF 5B000000_01
+00000FFFEF7FFFFF 557FFEF8_01
+FFFFFFFFFF0BA6CB CB745935_00
+003FFFFFFFFFFFFF 5A800000_01
+FFFFFF7FBFFFFFBF D3004000_01
+FFFFFFFFFFF24425 C95BBDB0_00
+001FFFFFFFFFFFFF 5A000000_01
+200000001FFBFFFF 5E000000_01
+FFFFFF4E7115EC53 D3318EEA_01
+000FFFFFFFFFFFFF 59800000_01
+FFFFF803FFFFFFBF D4FF8000_01
+FFFFFC2E539ADCFE D4746B19_01
+0007FFFFFFFFFFFF 59000000_01
+FFFFFFFFFBFFFFFF CC800000_01
+00000055084732F3 52AA108E_01
+0003FFFFFFFFFFFF 58800000_01
+BFFF7FFFFFFFFE00 DE800100_01
+FFFFFFFFFFFF8543 C6F57A00_00
+0001FFFFFFFFFFFF 58000000_01
+0000001FFBFFE000 51FFDFFF_00
+FFFFFFFFFFFE491B C7DB7280_00
+0000FFFFFFFFFFFF 57800000_01
+FC00200000001FFE DC7FF800_01
+FFFFF16898822A24 D5697678_01
+00007FFFFFFFFFFF 57000000_01
+3FFF03FFFFFFFFFE 5E7FFC10_01
+FFFFFF8FFE18C7BF D2E003CE_01
+00003FFFFFFFFFFF 56800000_01
+FFFFFEFFFEFFFFFD D3800080_01
+00F03620C1266ED9 5B703621_01
+00001FFFFFFFFFFF 56000000_01
+BF7EFFFFFFFFFFFF DE810200_01
+FFFFFFFFFFFFFFD5 C22C0000_00
+00000FFFFFFFFFFF 55800000_01
+FFFBFFFFF803FFFE D8800001_01
+0000000000068684 48D0D080_00
+000007FFFFFFFFFF 55000000_01
+DFFFFFE00000001E DE000000_01
+FFFFFFFFFFFFECF5 C5985800_00
+000003FFFFFFFFFF 54800000_01
+FFFF00400000FFFF D77FC000_01
+0000000000000002 40000000_00
+000001FFFFFFFFFF 54000000_01
+FBFFFFFFFFFFBDFE DC800000_01
+0000000000000BC9 453C9000_00
+000000FFFFFFFFFF 53800000_01
+807FFFFFFFFFDFFE DEFF0000_01
+FFC274E35A70CD76 DA762C73_01
+0000007FFFFFFFFF 53000000_01
+0FFFFFFFFEFFFFFD 5D800000_01
+FFFFFFFF00E73AFC CF7F18C5_01
+0000003FFFFFFFFF 52800000_01
+FFC000000001000E DA800000_01
+FFFFFFFFFFFE15E9 C7F50B80_00
+0000001FFFFFFFFF 52000000_01
+0001FFFFFFFFF3FD 58000000_01
+0000000000000033 424C0000_00
+0000000FFFFFFFFF 51800000_01
+000000001FFFBFFF 4DFFFE00_01
+FFFFFFEE6B141E1B D18CA75F_01
+00000007FFFFFFFF 51000000_01
+FFFFFFFFF60007FF CD1FFF80_01
+00000001AB310BA6 4FD59886_01
+00000003FFFFFFFF 50800000_01
+0003FFFFB7FFFFFF 587FFFEE_01
+FFFFFFFFFFFFF195 C566B000_00
+00000001FFFFFFFF 50000000_01
+FFFFFFFF8000000B CF000000_01
+00000019BA8D5559 51CDD46B_01
+00000000FFFFFFFF 4F800000_01
+FBFEFFFFFFFFFFF9 DC802000_01
+FFFFFFB6F062822D D2921F3B_01
+000000007FFFFFFF 4F000000_01
+0001000000000082 57800000_01
+01CEAD9E2FB104A4 5BE756CF_01
+000000003FFFFFFF 4E800000_01
+000003FFFFFFFF7C 54800000_01
+FFFFFFFFFD681E78 CC25F862_00
+000000001FFFFFFF 4E000000_01
+00002000400001FF 56000100_01
+0000000000000018 41C00000_00
+000000000FFFFFFF 4D800000_01
+3FFF80000000003E 5E7FFE00_01
+FFFFFFFFFFFFFF95 C2D60000_00
+0000000007FFFFFF 4D000000_01
+010000BFFFFFFFFF 5B800060_01
+0000001697087B19 51B4B844_01
+0000000003FFFFFF 4C800000_01
+FBFFFFFFFFEEFFFD DC800000_01
+0000000E64BDFC55 51664BE0_01
+0000000001FFFFFF 4C000000_01
+FC00000001FFFFFE DC800000_01
+FFFED156A62AB849 D79754AD_01
+0000000000FFFFFF 4B7FFFFF_00
+FFFFFFF83FEFFFFD D0F80200_01
+00015354EAE7C259 57A9AA75_01
+00000000007FFFFF 4AFFFFFE_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFF0F4DF3C75 D170B20C_01
+00000000003FFFFF 4A7FFFFC_00
+FFFA000000001FFF D8C00000_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000001FFFFF 49FFFFF8_00
+FFFFFFFFFF7FFE40 CB0001C0_00
+FFFFFFDB5433CB9B D212AF31_01
+00000000000FFFFF 497FFFF0_00
+FFFFFDFFDFFDFFFD D4000801_01
+FFFFFFFFFFDEAE1F CA054784_00
+000000000007FFFF 48FFFFE0_00
+FFFFFFFFF0080006 CD7F8000_01
+FFFFFFFE7735DEC7 CFC46511_01
+000000000003FFFF 487FFFC0_00
+00000001FBFFFFFF 4FFE0000_01
+000003757D8B12ED 545D5F63_01
+000000000001FFFF 47FFFF80_00
+FFFFFE07F7FFFFFF D3FC0400_01
+00000A654064E046 55265406_01
+000000000000FFFF 477FFF00_00
+08000000000017FF 5D000000_01
+FFFFFFFFFFFFFFE7 C1C80000_00
+0000000000007FFF 46FFFE00_00
+07FFFFFFFFFFFDF6 5D000000_01
+FFFFAD78B3D6C3B6 D6A50E98_01
+0000000000003FFF 467FFC00_00
+0000300004000000 56400010_00
+FFFFFFF70B77F34F D10F4881_01
+0000000000001FFF 45FFF800_00
+FFFFFF80006FFFFE D2FFFF20_01
+0000013EB4D67EC8 539F5A6B_01
+0000000000000FFF 457FF000_00
+BFFFDFFFFBFFFFFF DE800040_01
+0005CEAF34EA1DC7 58B9D5E7_01
+00000000000007FF 44FFE000_00
+00004800007FFFFD 56900001_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000000003FF 447FC000_00
+0000000200001000 50000004_00
+00000000000360D0 48583400_00
+00000000000001FF 43FF8000_00
+01003FFFFFFFFFFC 5B802000_01
+00C000708FF1BA51 5B400071_01
+00000000000000FF 437F0000_00
+F802000003FFFFFF DCFFC000_01
+0F9E07DCC0BDC061 5D79E07E_01
+000000000000007F 42FE0000_00
+03FF0000000000FF 5C7FC000_01
+FFFFFFE1B9B2A079 D1F2326B_01
+000000000000003F 427C0000_00
+FFF80000000080FF D9000000_01
+00000000001EB5B4 49F5ADA0_00
+000000000000001F 41F80000_00
+000000000077FBFE 4AEFF7FC_00
+00000000005AC607 4AB58C0E_00
+000000000000000F 41700000_00
+FFFFFFFEF80000FF CF840000_01
+000005C5B9D66984 54B8B73B_01
+0000000000000007 40E00000_00
+C001FFFFFFF00000 DE7FF800_01
+00001D06B372AA06 55E8359C_01
+0000000000000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_ru.tv b/wally-pipelined/testbench/fp/i64_f32_ru.tv
new file mode 100644
index 000000000..b8828358f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f32_ru.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 5CFFFFC0_01
+0000000032CC8B7A 4E4B322E_01
+0000000000000000 00000000_00
+FFFFFFFFC0003FFE CE7FFF00_01
+032C857F319EDE38 5C4B2160_01
+0000000000000001 3F800000_00
+FFFFFBFFFFF8003E D4800000_01
+00394C79B6D3007B 5A6531E7_01
+0000000000000002 40000000_00
+FBFFFFF0000001FF DC800001_01
+0000000001AE458D 4BD722C7_01
+0000000000000004 40800000_00
+00040008000007FE 58800101_01
+F9EB456140D88764 DCC29753_01
+0000000000000008 41000000_00
+FFFFE400FFFFFFFE D5DFF800_01
+07DE834A248EDF36 5CFBD06A_01
+0000000000000010 41800000_00
+00000003FF001FFF 507FC008_01
+FFFFFFFFFFE385E2 C9E3D0F0_00
+0000000000000020 42000000_00
+F0041FFFFFFFFFFF DD7FBE00_01
+000000059EB1FD45 50B3D640_01
+0000000000000040 42800000_00
+FFFFFFFFFFFCFFF9 C84001C0_00
+FFFFFFFFFFFEDDFE C7910100_00
+0000000000000080 43000000_00
+000000000003FF00 487FC000_00
+00000000C89FF56B 4F489FF6_01
+0000000000000100 43800000_00
+000FFFFF7FDFFFFF 597FFFF8_01
+1B5E4F0BE0DEBFF0 5DDAF279_01
+0000000000000200 44000000_00
+FFFDF803FFFFFFFF D801FF00_01
+FFFFFFFFFFF4766B C9389950_00
+0000000000000400 44800000_00
+0000080100000FFE 55001001_01
+000000000000000C 41400000_00
+0000000000000800 45000000_00
+0048000000100000 5A900001_01
+FFE662A109109D0A D9CCEAF7_01
+0000000000001000 45800000_00
+C000000037FFFFFE DE7FFFFF_01
+FFFFFFFFFFFFFFE4 C1E00000_00
+0000000000002000 46000000_00
+F801000000100000 DCFFDFFF_01
+FE114B79075F70EE DBF75A43_01
+0000000000004000 46800000_00
+100000000001003E 5D800001_01
+00000000000003AC 446B0000_00
+0000000000008000 47000000_00
+200000FFFFFFF800 5E000004_01
+00000044A3A3DBE5 52894748_01
+0000000000010000 47800000_00
+FFE0003EFFFFFFFF D9FFFE08_01
+FFFFFFFFFFFF1A91 C7656F00_00
+0000000000020000 48000000_00
+FFFFF7C3FFFFFFFD D503C000_01
+0000000000003309 464C2400_00
+0000000000040000 48800000_00
+000083FFF7FFFFFE 5703FFF8_01
+FFFFFFFFFFFFFF58 C3280000_00
+0000000000080000 49000000_00
+FFFFFFDE01FFFFFE D207F800_01
+0000000000002980 46260000_00
+0000000000100000 49800000_00
+00000000FFF07FFF 4F7FF080_01
+000000000000005D 42BA0000_00
+0000000000200000 4A000000_00
+000020FFDFFFFFFF 5603FF80_01
+FFFC8C23DA2CEAD8 D85CF709_01
+0000000000400000 4A800000_00
+E0000000003FFFDF DDFFFFFF_01
+FFFFFDE3C1DEC43C D4070F88_01
+0000000000800000 4B000000_00
+FFFF00000BFFFFFD D77FFFF4_01
+000000000030FFBE 4A43FEF8_00
+0000000001000000 4B800000_00
+FFFE000007FFEFFD D7FFFFFC_01
+FFFFFFFFEFDEED86 CD810893_01
+0000000002000000 4C000000_00
+F3FFFFFFFFBFFFFE DD400000_01
+000000001DA3FF45 4DED1FFB_01
+0000000004000000 4C800000_00
+FFFFFFFF00010007 CF7FFEFF_01
+FFFFFFFE9B1BCB54 CFB2721A_01
+0000000008000000 4D000000_00
+00004000004001FE 56800001_01
+F27DD19DE6563714 DD5822E6_01
+0000000010000000 4D800000_00
+FFC00000004007FE DA7FFFFF_01
+000000000001A359 47D1AC80_00
+0000000020000000 4E000000_00
+0000000003C000FE 4C700040_01
+FFFFFFFFFE62EC20 CBCE89F0_00
+0000000040000000 4E800000_00
+000000003FFFFFFD 4E800000_01
+000000000000285F 46217C00_00
+0000000080000000 4F000000_00
+FFFFFFFFBFFFF00F CE80001F_01
+FFFFF836F99DBAA8 D4F920CC_01
+0000000100000000 4F800000_00
+00000020003FFEFE 52000100_01
+0033466832042D47 5A4D19A1_01
+0000000200000000 50000000_00
+FFFFFFFFFFFFF887 C4EF2000_00
+00000000003829C8 4A60A720_00
+0000000400000000 50800000_00
+00000FFFFFFF7DFD 55800000_01
+0000000FB77C672B 517B77C7_01
+0000000800000000 51000000_00
+08003FFDFFFFFFFE 5D000400_01
+0000000000001B78 45DBC000_00
+0000001000000000 51800000_00
+FF7FFFFFFFEFDFFF DB000000_01
+0000000000000071 42E20000_00
+0000002000000000 52000000_00
+000013FFFFFFFDFF 55A00000_01
+FFFFFFFFFFFFFF86 C2F40000_00
+0000004000000000 52800000_00
+0800000000040800 5D000001_01
+FFF8A60D9E19F17E D8EB3E4C_01
+0000008000000000 53000000_00
+000077FFF0000000 56EFFFE0_00
+FFFFFFFFF7506DBA CD0AF924_01
+0000010000000000 53800000_00
+FFFFFFFFFFFEFBF7 C7820480_00
+FFFFFFFFFEA42AC9 CBADEA9B_01
+0000020000000000 54000000_00
+0000107FFFFFDFFD 55840000_01
+FFE7AA3F2BDACC89 D9C2AE06_01
+0000040000000000 54800000_00
+FFF8040000040000 D8FF7FFF_01
+FFFFFFFFFFFFFFFD C0400000_00
+0000080000000000 55000000_00
+FFFF80000800001F D6FFFFEF_01
+FFFDF681DECDADC9 D8025F88_01
+0000100000000000 55800000_00
+FFFFFEFFFFE0007F D380000F_01
+FFFFFFFFFFFFCFBE C6410800_00
+0000200000000000 56000000_00
+0000000901FFFFFD 51102000_01
+FEC01FECA24DE1B0 DB9FF009_01
+0000400000000000 56800000_00
+F7FFFFFFDFFF7FFF DD000000_01
+F858A66761669936 DCF4EB33_01
+0000800000000000 57000000_00
+FFFEFF800000003E D7803FFF_01
+F716EA43FAC45C97 DD0E915B_01
+0001000000000000 57800000_00
+FFFFFFFFFFFFFFC6 C2680000_00
+0024D70EC7661FD8 5A135C3C_01
+0002000000000000 58000000_00
+C07FFFFFFFFFFFFE DE7E0000_01
+FFD956DBD0AEE817 DA1AA490_01
+0004000000000000 58800000_00
+020003EFFFFFFFFE 5C0000FC_01
+FFFFFFFFFFFF4300 C73D0000_00
+0008000000000000 59000000_00
+4000000004002000 5E800001_01
+C12EDF40F41F6021 DE7B4482_01
+0010000000000000 59800000_00
+FF9000000000001D DADFFFFF_01
+FFFFFFF83DE950F6 D0F842D5_01
+0020000000000000 5A000000_00
+800003FFFFFC0000 DEFFFFF8_01
+FE2B59CB3A604D69 DBEA531A_01
+0040000000000000 5A800000_00
+7FFFFFFDFFFFBFFF 5F000000_01
+000000A37C210862 53237C22_01
+0080000000000000 5B000000_00
+0002000002000002 58000001_01
+FFFFB65CD8617789 D693464F_01
+0100000000000000 5B800000_00
+00001BFFFFFFBFFE 55E00000_01
+FFFFFFFFFFFFF01D C57E3000_00
+0200000000000000 5C000000_00
+1000008000003FFF 5D800005_01
+000000000D098D19 4D5098D2_01
+0400000000000000 5C800000_00
+03FFFFFFFFFFF5FF 5C800000_01
+000006B3BD2C7BEF 54D677A6_01
+0800000000000000 5D000000_00
+00003FFFBFFFFFFE 567FFF00_01
+FFFF4E5ADDDAA4A8 D731A522_01
+1000000000000000 5D800000_00
+001FFFC000000FFD 59FFFE01_01
+FFFFFFFFFFFFFF21 C35F0000_00
+2000000000000000 5E000000_00
+0000000041DFFFFF 4E83C000_01
+FFFFFFFFFC648262 CC66DF67_01
+4000000000000000 5E800000_00
+C0001FFFFFFFFFFB DE7FFF80_01
+FFFFFF7353AC45D2 D30CAC53_01
+8000000000000000 DF000000_00
+FFFFFFFFFFE7EFFF C9C08008_00
+0000000000A1202D 4B21202D_00
+C000000000000000 DE800000_00
+FFFFFFFFFFFF5F7F C7208100_00
+000000000040CA70 4A8194E0_00
+E000000000000000 DE000000_00
+0000200201FFFFFE 56000808_01
+00000003B55D87D4 506D5762_01
+F000000000000000 DD800000_00
+FF80000DFFFFFFFF DAFFFFE4_01
+000000010510FAEF 4F82887E_01
+F800000000000000 DD000000_00
+0003FFF00000000F 587FFC01_01
+000000000000724A 46E49400_00
+FC00000000000000 DC800000_00
+FFFFFFDF80000002 D201FFFF_01
+0000000000000064 42C80000_00
+FE00000000000000 DC000000_00
+FEFFFFFFFFF800FE DB800000_01
+FFFFFFC2C6222702 D274E777_01
+FF00000000000000 DB800000_00
+0000000408000002 50810001_01
+000000E96DF1CB41 53696DF2_01
+FF80000000000000 DB000000_00
+007FFFFFFFFFF9FE 5B000000_01
+F727F174DEE7DC85 DD0D80E8_01
+FFC0000000000000 DA800000_00
+8000000003FFFEFE DEFFFFFF_01
+FFFFFFFFFFF0BD5B C9742A50_00
+FFE0000000000000 DA000000_00
+0BEFFFFFFFFFFFFF 5D3F0000_01
+000000000002790C 481E4300_00
+FFF0000000000000 D9800000_00
+FFFFFFFFFFEFFBFA C9802030_00
+000000169E75DF01 51B4F3AF_01
+FFF8000000000000 D9000000_00
+00000007FEFFDFFF 50FFDFFC_01
+000000000000000E 41600000_00
+FFFC000000000000 D8800000_00
+0003FFFE0007FFFE 587FFF81_01
+FFFFFFFFFFF28622 C9579DE0_00
+FFFE000000000000 D8000000_00
+FFFFFF7FFFFDF7FF D3000002_01
+00072F0EC496FE21 58E5E1D9_01
+FFFF000000000000 D7800000_00
+DFBFFFFFFFFFFFFE DE010000_01
+0000000000FC1FCA 4B7C1FCA_00
+FFFF800000000000 D7000000_00
+00000FFF800FFFFE 557FF801_01
+FFFF5194E4A9C2CE D72E6B1B_01
+FFFFC00000000000 D6800000_00
+00000002100007FD 50040002_01
+FFFFFFFFFFC2D8FE CA749C08_00
+FFFFE00000000000 D6000000_00
+000000000007FF6E 48FFEDC0_00
+000000000001766E 47BB3700_00
+FFFFF00000000000 D5800000_00
+0040000400000002 5A800009_01
+0000000000007841 46F08200_00
+FFFFF80000000000 D5000000_00
+3DFFFFFFFFFFFF7E 5E780000_01
+FFFFFFE549E17E30 D1D5B0F4_01
+FFFFFC0000000000 D4800000_00
+FFFFFFFFFFFFFEE1 C38F8000_00
+FFFFFFFFFFFFFFE7 C1C80000_00
+FFFFFE0000000000 D4000000_00
+000000000EFFFFDF 4D6FFFFE_01
+FFFFFFFFFFFFFF73 C30D0000_00
+FFFFFF0000000000 D3800000_00
+FD00000008000000 DC3FFFFF_01
+000000000001DBB1 47EDD880_00
+FFFFFF8000000000 D3000000_00
+FFFFFFFFFFF8007F C8FFF020_00
+FFFFFFFEFD10A515 CF8177AD_01
+FFFFFFC000000000 D2800000_00
+FFEFFFFFFFFFFFFE D9800000_01
+FAB02984F6283B6C DCA9FACF_01
+FFFFFFE000000000 D2000000_00
+FFFFFFBC000001FE D287FFFF_01
+FEB087C6B9FE7FE0 DBA7BC1C_01
+FFFFFFF000000000 D1800000_00
+FFF80001000007FE D8FFFFDF_01
+00F2762EA6837956 5B72762F_01
+FFFFFFF800000000 D1000000_00
+FFF7E0FFFFFFFFFE D901F000_01
+00002E1175484626 563845D6_01
+FFFFFFFC00000000 D0800000_00
+0000200020000FFE 56000081_01
+000000000000068F 44D1E000_00
+FFFFFFFE00000000 D0000000_00
+021FFFFFFFFBFFFF 5C080000_01
+FFFFFFFFFFFFFFF9 C0E00000_00
+FFFFFFFF00000000 CF800000_00
+FFFFFFD0000FFFFD D23FFFC0_01
+000000BDF6658B83 533DF666_01
+FFFFFFFF80000000 CF000000_00
+1000001FFDFFFFFF 5D800001_01
+0000000000003B5B 466D6C00_00
+FFFFFFFFC0000000 CE800000_00
+FFFFFFBFFE0FFFFF D28003E0_01
+FFFFFFFFFFFFFFF0 C1800000_00
+FFFFFFFFE0000000 CE000000_00
+FFFFFFFBF00007FF D081FFFF_01
+01E986274F48EAAD 5BF4C314_01
+FFFFFFFFF0000000 CD800000_00
+1FFFFFFDFFFFFF7F 5E000000_01
+FFFFFFFFFFFFCB5A C6529800_00
+FFFFFFFFF8000000 CD000000_00
+7FF000000000FFFF 5EFFE001_01
+00000003C2717FC3 50709C60_01
+FFFFFFFFFC000000 CC800000_00
+FFFFFFE00008001F D1FFFFBF_01
+FFFFFFFFFFEFABDA C982A130_00
+FFFFFFFFFE000000 CC000000_00
+0200000000000002 5C000001_01
+FFFFFFFFF8FDA53F CCE04B58_01
+FFFFFFFFFF000000 CB800000_00
+F6000003FFFFFFFE DD1FFFFF_01
+FFFFFFFFFFFFFFD0 C2400000_00
+FFFFFFFFFF800000 CB000000_00
+FFFFFFFFFFBFFF7E CA800104_00
+00000000EE0FEA62 4F6E0FEB_01
+FFFFFFFFFFC00000 CA800000_00
+0000007FFF9FFFFD 52FFFF40_01
+00000037F35EDC1D 525FCD7C_01
+FFFFFFFFFFE00000 CA000000_00
+FFFFFFF7FDFFFF7D D1002000_01
+00000000000001AD 43D68000_00
+FFFFFFFFFFF00000 C9800000_00
+FFFFFF0000100020 D37FFFEF_01
+27F167FBC7FC5F9A 5E1FC5A0_01
+FFFFFFFFFFF80000 C9000000_00
+003FFFFFFFFC0001 5A800000_01
+000E48F9F4EBD30E 59648FA0_01
+FFFFFFFFFFFC0000 C8800000_00
+DFFFFFFFFFFBFFFE DE000000_01
+FC91C23EE8C9424F DC5B8F70_01
+FFFFFFFFFFFE0000 C8000000_00
+F7DFFBFFFFFFFFFE DD020040_01
+000000002CAE080C 4E32B821_01
+FFFFFFFFFFFF0000 C7800000_00
+FFFFC00010000020 D67FFFBF_01
+04D921F917B20E40 5C9B2440_01
+FFFFFFFFFFFF8000 C7000000_00
+F8000FFFFFFFFFFD DCFFFE00_01
+FFF17C566BC7D811 D9683A99_01
+FFFFFFFFFFFFC000 C6800000_00
+00000000000000FE 437E0000_00
+FFF82AC14930D386 D8FAA7D6_01
+FFFFFFFFFFFFE000 C6000000_00
+00000000000003FC 447F0000_00
+000E62EC60E119FC 59662EC7_01
+FFFFFFFFFFFFF000 C5800000_00
+FFFFEFF7FF7FFFFE D5804004_01
+0E2B1ECF210EEDC5 5D62B1ED_01
+FFFFFFFFFFFFF800 C5000000_00
+00000000007FFF1F 4AFFFE3E_00
+FFFFFE534F5676F7 D3D65854_01
+FFFFFFFFFFFFFC00 C4800000_00
+0000001004FFFFFD 51802800_01
+0000035C939669F1 545724E6_01
+FFFFFFFFFFFFFE00 C4000000_00
+1FFFFFFFFFFFFDFD 5E000000_01
+FFFFFFFFFFFFFF91 C2DE0000_00
+FFFFFFFFFFFFFF00 C3800000_00
+01FFFFFFFBFFEFFE 5C000000_01
+000000000000016E 43B70000_00
+FFFFFFFFFFFFFF80 C3000000_00
+FFF7FFFFFFFFF7FD D9000000_01
+FFFFF8E2BCFAC553 D4E3A860_01
+FFFFFFFFFFFFFFC0 C2800000_00
+FFFFFBFFFFFE0FFE D4800000_01
+00000001A4E704BF 4FD27383_01
+FFFFFFFFFFFFFFE0 C2000000_00
+1400007FFFFFFFFD 5DA00004_01
+FFFFFFFC93B187B4 D05B139E_01
+FFFFFFFFFFFFFFF0 C1800000_00
+40000000007FFFFD 5E800001_01
+000000000067D468 4ACFA8D0_00
+FFFFFFFFFFFFFFF8 C1000000_00
+007FFEFFFFFBFFFE 5AFFFE00_01
+FFFFFFE26CEC79F8 D1EC989C_01
+FFFFFFFFFFFFFFFC C0800000_00
+00FFFFFF000000FF 5B800000_01
+FFFFFFFFE0D3983A CDF9633E_01
+FFFFFFFFFFFFFFFE C0000000_00
+00007FFFBFFF7FFE 56FFFF80_01
+FFFFFFFDF4A7088A D002D63D_01
+FFFFFFFFFFFFFFFF BF800000_00
+000008000000027E 55000001_01
+000000000000F4E8 4774E800_00
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFF83FFDF CAF80042_00
+00000E11407887B2 55611408_01
+FFFFFFFFFFFFFFFB C0A00000_00
+04000003FFFFFFF6 5C800001_01
+0000000000000513 44A26000_00
+FFFFFFFFFFFFFFF7 C1100000_00
+BFFC00000000003E DE8007FF_01
+00000008D7BBB75B 510D7BBC_01
+FFFFFFFFFFFFFFEF C1880000_00
+000FFFFBFFFC0000 597FFFC0_01
+FFFFFFFFFFCD5A23 CA4A9774_00
+FFFFFFFFFFFFFFDF C2040000_00
+FFBFDFFFBFFFFFFF DA804000_01
+000000000000007F 42FE0000_00
+FFFFFFFFFFFFFFBF C2820000_00
+00000007FF800003 50FFF001_01
+000000000002BB02 482EC080_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEE7FF C78C0080_00
+00264B2B9BAD0DA2 5A192CAF_01
+FFFFFFFFFFFFFEFF C3808000_00
+0000000000100803 49804018_00
+FF9B1DCB9F857D5E DAC9C468_01
+FFFFFFFFFFFFFDFF C4004000_00
+FFFFFFBFFFFFEFEE D2800000_01
+F6FD7542899C1C6F DD1028AB_01
+FFFFFFFFFFFFFBFF C4802000_00
+FF800000004001FF DAFFFFFF_01
+0000000002BE4932 4C2F924D_01
+FFFFFFFFFFFFF7FF C5001000_00
+00001004000FFFFE 55802001_01
+FFFFFF9DAA0123E0 D2C4ABFD_01
+FFFFFFFFFFFFEFFF C5800800_00
+00000001FDFFFDFE 4FFEFFFF_01
+FFFC1C8703B1DCB0 D878DE3F_01
+FFFFFFFFFFFFDFFF C6000400_00
+FE0FE00000000000 DBF81000_00
+0779ED944A4E2779 5CEF3DB3_01
+FFFFFFFFFFFFBFFF C6800200_00
+FBFFFE0400000000 DC80003F_01
+0000010127E03666 538093F1_01
+FFFFFFFFFFFF7FFF C7000100_00
+FFFFF0200000FFFE D57DFFFF_01
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEFFFF C7800080_00
+FFEFFE0000080000 D9800FFF_01
+FFFFFFFFFD3354EA CC332AC5_01
+FFFFFFFFFFFDFFFF C8000040_00
+003FF0000003FFFE 5A7FC001_01
+0000006375B23F7B 52C6EB65_01
+FFFFFFFFFFFBFFFF C8800020_00
+000407FFFFFFFFF6 58810000_01
+0000000092117F38 4F121180_01
+FFFFFFFFFFF7FFFF C9000010_00
+FFFFFFFFFFFF7FFF C7000100_00
+00000000000008BE 450BE000_00
+FFFFFFFFFFEFFFFF C9800008_00
+004000020FFFFFFF 5A800005_01
+FFFFB84C2D8BC9CB D68F67A4_01
+FFFFFFFFFFDFFFFF CA000004_00
+00FFFFFFFFFFFFFD 5B800000_01
+00000023C2C6F284 520F0B1C_01
+FFFFFFFFFFBFFFFF CA800002_00
+FFFDDFFFFFFFFFFD D8080000_01
+00000000746356C4 4EE8C6AE_01
+FFFFFFFFFF7FFFFF CB000001_00
+010000000000BFFF 5B800001_01
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFEFFFFFF CB800000_01
+FFFFBF7FFBFFFFFE D6810008_01
+00000006386CE889 50C70D9E_01
+FFFFFFFFFDFFFFFF CC000000_01
+F00000F7FFFFFFFF DD7FFFF0_01
+FFFDFC53090C46A4 D800EB3D_01
+FFFFFFFFFBFFFFFF CC800000_01
+0000000000800047 4B000047_00
+FFFFFFFFD693872E CE25B1E3_01
+FFFFFFFFF7FFFFFF CD000000_01
+000000007FBFFBFF 4EFF7FF8_01
+00000026A7845E35 521A9E12_01
+FFFFFFFFEFFFFFFF CD800000_01
+FFFFFFDFFFFFFBFD D2000000_01
+000000001433D14C 4DA19E8B_01
+FFFFFFFFDFFFFFFF CE000000_01
+0001FFFFFFE0000E 58000000_01
+F0F23E8068D3D84A DD70DC17_01
+FFFFFFFFBFFFFFFF CE800000_01
+F7FFBFFFFFFFBFFF DD000400_01
+FFFFBD29B7459087 D685AC91_01
+FFFFFFFF7FFFFFFF CF000000_01
+FFFFFFF8FFFFBFFF D0E00008_01
+FFFFFFFFFFEDDC06 C9911FD0_00
+FFFFFFFEFFFFFFFF CF800000_01
+FFFFFFF80001FFFF D0FFFFC0_01
+0000000000002FF9 463FE400_00
+FFFFFFFDFFFFFFFF D0000000_01
+004000040000FFFF 5A800009_01
+FFFFFFFFFFFFFFF1 C1700000_00
+FFFFFFFBFFFFFFFF D0800000_01
+C0000000007FFFFA DE7FFFFF_01
+FFFFFFFFFE053E2B CBFD60EA_01
+FFFFFFF7FFFFFFFF D1000000_01
+7FFE000007FFFFFF 5EFFFC01_01
+000000000000000D 41500000_00
+FFFFFFEFFFFFFFFF D1800000_01
+F80000000001007E DCFFFFFF_01
+FFFFED48424AD9D6 D595BDED_01
+FFFFFFDFFFFFFFFF D2000000_01
+FFFFFE0001FEFFFF D3FFFF00_01
+000000000000013B 439D8000_00
+FFFFFFBFFFFFFFFF D2800000_01
+0007FBFFFFFDFFFE 58FF8000_01
+4A16BD4128090C83 5E942D7B_01
+FFFFFF7FFFFFFFFF D3000000_01
+00FFF7FFFF7FFFFE 5B7FF800_01
+0000000000000006 40C00000_00
+FFFFFEFFFFFFFFFF D3800000_01
+FBFFFFBFFFBFFFFF DC800008_01
+00000000000001BA 43DD0000_00
+FFFFFDFFFFFFFFFF D4000000_01
+0000000040000082 4E800002_01
+FF07A2BF5B689F89 DB785D40_01
+FFFFFBFFFFFFFFFF D4800000_01
+0000001FF8000008 51FFC001_01
+F87CAA7DE672DE8B DCF06AB0_01
+FFFFF7FFFFFFFFFF D5000000_01
+07FFF80000000002 5CFFFF01_01
+0000000010A1E5B8 4D850F2E_01
+FFFFEFFFFFFFFFFF D5800000_01
+F7FFFFE00007FFFF DD000001_01
+FFFFFFFFFFF6ADFC C9152040_00
+FFFFDFFFFFFFFFFF D6000000_01
+FFFFFF03FFFFFFC0 D37C0000_01
+EA579475948F0032 DDAD435C_01
+FFFFBFFFFFFFFFFF D6800000_01
+FC00000000003FF6 DC7FFFFF_01
+002E677AC313BF60 5A399DEC_01
+FFFF7FFFFFFFFFFF D7000000_01
+02000007FF7FFFFF 5C000002_01
+0000000E999639F1 51699964_01
+FFFEFFFFFFFFFFFF D7800000_01
+FFFF83FFFFFFFFBE D6F80000_01
+000000000001537D 47A9BE80_00
+FFFDFFFFFFFFFFFF D8000000_01
+EFFFFFC00000003D DD800001_01
+FFFFFFF21FEDFD35 D15E0120_01
+FFFBFFFFFFFFFFFF D8800000_01
+FFFFFFF0000007FE D17FFFFF_01
+FFFFFFFFFFDE0839 CA07DF1C_00
+FFF7FFFFFFFFFFFF D9000000_01
+0000007FFFE000FF 52FFFFC1_01
+FFFFFFFF79F30F48 CF060CF0_01
+FFEFFFFFFFFFFFFF D9800000_01
+FFFFFC13FFFFFFFD D47B0000_01
+0000000000001B85 45DC2800_00
+FFDFFFFFFFFFFFFF DA000000_01
+000008000007FFFE 55000001_01
+12DB4409E5AE87E6 5D96DA21_01
+FFBFFFFFFFFFFFFF DA800000_01
+FFFFFFFFFFF7BFEE C9040120_00
+FFFFFFFFFFFFFFFD C0400000_00
+FF7FFFFFFFFFFFFF DB000000_01
+000000001040FFFE 4D820800_01
+00000909A09C13D3 55109A0A_01
+FEFFFFFFFFFFFFFF DB800000_01
+FFFFFF01FFFFFF7F D37E0000_01
+FFFFFF72E7D2575D D30D182D_01
+FDFFFFFFFFFFFFFF DC000000_01
+FFFFFFFFFFFEFFDB C7801280_00
+0000000000000017 41B80000_00
+FBFFFFFFFFFFFFFF DC800000_01
+100000001FFFFFF6 5D800001_01
+000000114B12EF51 518A5898_01
+F7FFFFFFFFFFFFFF DD000000_01
+0407FFFFFFFFFEFF 5C810000_01
+FFFFFF769F3A5C2C D30960C5_01
+EFFFFFFFFFFFFFFF DD800000_01
+FFFFFFFDF7FFFFFD D0020000_01
+FFFFFFFFFFFFFFF2 C1600000_00
+DFFFFFFFFFFFFFFF DE000000_01
+FFFFFFFFFE0007FF CBFFFC00_01
+000000000000001E 41F00000_00
+BFFFFFFFFFFFFFFF DE800000_01
+FFF800000009FFFF D8FFFFFF_01
+0000000000007AA4 46F54800_00
+7FFFFFFFFFFFFFFF 5F000000_01
+4080000000FFFFFF 5E810001_01
+000000000DE7601D 4D5E7602_01
+3FFFFFFFFFFFFFFF 5E800000_01
+FFCFFFFFFFBFFFFE DA400000_01
+FFFFFFFFFFFFFFCA C2580000_00
+1FFFFFFFFFFFFFFF 5E000000_01
+000080400000003F 57004001_01
+00000000001F75A5 49FBAD28_00
+0FFFFFFFFFFFFFFF 5D800000_01
+FFFFFFEFFFFFCFFE D1800001_01
+FFFFFEE775887420 D38C453B_01
+07FFFFFFFFFFFFFF 5D000000_01
+00000000000801FE 49001FE0_00
+0000000000213FF1 4A04FFC4_00
+03FFFFFFFFFFFFFF 5C800000_01
+07FEFFFFFFFFFFEE 5CFFE000_01
+0000000000000004 40800000_00
+01FFFFFFFFFFFFFF 5C000000_01
+0000000820000003 51020001_01
+FFFFFFF9AD105214 D0CA5DF5_01
+00FFFFFFFFFFFFFF 5B800000_01
+FFFFF00FFFFFFFBE D57F0000_01
+FFFFFFFFFFCC48E7 CA4EDC64_00
+007FFFFFFFFFFFFF 5B000000_01
+00000FFFEF7FFFFF 557FFEF8_01
+FFFFFFFFFF0BA6CB CB745935_00
+003FFFFFFFFFFFFF 5A800000_01
+FFFFFF7FBFFFFFBF D3004000_01
+FFFFFFFFFFF24425 C95BBDB0_00
+001FFFFFFFFFFFFF 5A000000_01
+200000001FFBFFFF 5E000001_01
+FFFFFF4E7115EC53 D3318EEA_01
+000FFFFFFFFFFFFF 59800000_01
+FFFFF803FFFFFFBF D4FF8000_01
+FFFFFC2E539ADCFE D4746B19_01
+0007FFFFFFFFFFFF 59000000_01
+FFFFFFFFFBFFFFFF CC800000_01
+00000055084732F3 52AA108F_01
+0003FFFFFFFFFFFF 58800000_01
+BFFF7FFFFFFFFE00 DE800100_01
+FFFFFFFFFFFF8543 C6F57A00_00
+0001FFFFFFFFFFFF 58000000_01
+0000001FFBFFE000 51FFDFFF_00
+FFFFFFFFFFFE491B C7DB7280_00
+0000FFFFFFFFFFFF 57800000_01
+FC00200000001FFE DC7FF7FF_01
+FFFFF16898822A24 D5697677_01
+00007FFFFFFFFFFF 57000000_01
+3FFF03FFFFFFFFFE 5E7FFC10_01
+FFFFFF8FFE18C7BF D2E003CE_01
+00003FFFFFFFFFFF 56800000_01
+FFFFFEFFFEFFFFFD D3800080_01
+00F03620C1266ED9 5B703621_01
+00001FFFFFFFFFFF 56000000_01
+BF7EFFFFFFFFFFFF DE810200_01
+FFFFFFFFFFFFFFD5 C22C0000_00
+00000FFFFFFFFFFF 55800000_01
+FFFBFFFFF803FFFE D8800000_01
+0000000000068684 48D0D080_00
+000007FFFFFFFFFF 55000000_01
+DFFFFFE00000001E DE000000_01
+FFFFFFFFFFFFECF5 C5985800_00
+000003FFFFFFFFFF 54800000_01
+FFFF00400000FFFF D77FBFFF_01
+0000000000000002 40000000_00
+000001FFFFFFFFFF 54000000_01
+FBFFFFFFFFFFBDFE DC800000_01
+0000000000000BC9 453C9000_00
+000000FFFFFFFFFF 53800000_01
+807FFFFFFFFFDFFE DEFF0000_01
+FFC274E35A70CD76 DA762C72_01
+0000007FFFFFFFFF 53000000_01
+0FFFFFFFFEFFFFFD 5D800000_01
+FFFFFFFF00E73AFC CF7F18C5_01
+0000003FFFFFFFFF 52800000_01
+FFC000000001000E DA7FFFFF_01
+FFFFFFFFFFFE15E9 C7F50B80_00
+0000001FFFFFFFFF 52000000_01
+0001FFFFFFFFF3FD 58000000_01
+0000000000000033 424C0000_00
+0000000FFFFFFFFF 51800000_01
+000000001FFFBFFF 4DFFFE00_01
+FFFFFFEE6B141E1B D18CA75F_01
+00000007FFFFFFFF 51000000_01
+FFFFFFFFF60007FF CD1FFF80_01
+00000001AB310BA6 4FD59886_01
+00000003FFFFFFFF 50800000_01
+0003FFFFB7FFFFFF 587FFFEE_01
+FFFFFFFFFFFFF195 C566B000_00
+00000001FFFFFFFF 50000000_01
+FFFFFFFF8000000B CEFFFFFF_01
+00000019BA8D5559 51CDD46B_01
+00000000FFFFFFFF 4F800000_01
+FBFEFFFFFFFFFFF9 DC802000_01
+FFFFFFB6F062822D D2921F3A_01
+000000007FFFFFFF 4F000000_01
+0001000000000082 57800001_01
+01CEAD9E2FB104A4 5BE756D0_01
+000000003FFFFFFF 4E800000_01
+000003FFFFFFFF7C 54800000_01
+FFFFFFFFFD681E78 CC25F862_00
+000000001FFFFFFF 4E000000_01
+00002000400001FF 56000101_01
+0000000000000018 41C00000_00
+000000000FFFFFFF 4D800000_01
+3FFF80000000003E 5E7FFE01_01
+FFFFFFFFFFFFFF95 C2D60000_00
+0000000007FFFFFF 4D000000_01
+010000BFFFFFFFFF 5B800060_01
+0000001697087B19 51B4B844_01
+0000000003FFFFFF 4C800000_01
+FBFFFFFFFFEEFFFD DC800000_01
+0000000E64BDFC55 51664BE0_01
+0000000001FFFFFF 4C000000_01
+FC00000001FFFFFE DC7FFFFF_01
+FFFED156A62AB849 D79754AC_01
+0000000000FFFFFF 4B7FFFFF_00
+FFFFFFF83FEFFFFD D0F80200_01
+00015354EAE7C259 57A9AA76_01
+00000000007FFFFF 4AFFFFFE_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFF0F4DF3C75 D170B20C_01
+00000000003FFFFF 4A7FFFFC_00
+FFFA000000001FFF D8BFFFFF_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000001FFFFF 49FFFFF8_00
+FFFFFFFFFF7FFE40 CB0001C0_00
+FFFFFFDB5433CB9B D212AF30_01
+00000000000FFFFF 497FFFF0_00
+FFFFFDFFDFFDFFFD D4000800_01
+FFFFFFFFFFDEAE1F CA054784_00
+000000000007FFFF 48FFFFE0_00
+FFFFFFFFF0080006 CD7F7FFF_01
+FFFFFFFE7735DEC7 CFC46510_01
+000000000003FFFF 487FFFC0_00
+00000001FBFFFFFF 4FFE0000_01
+000003757D8B12ED 545D5F63_01
+000000000001FFFF 47FFFF80_00
+FFFFFE07F7FFFFFF D3FC0400_01
+00000A654064E046 55265407_01
+000000000000FFFF 477FFF00_00
+08000000000017FF 5D000001_01
+FFFFFFFFFFFFFFE7 C1C80000_00
+0000000000007FFF 46FFFE00_00
+07FFFFFFFFFFFDF6 5D000000_01
+FFFFAD78B3D6C3B6 D6A50E98_01
+0000000000003FFF 467FFC00_00
+0000300004000000 56400010_00
+FFFFFFF70B77F34F D10F4880_01
+0000000000001FFF 45FFF800_00
+FFFFFF80006FFFFE D2FFFF20_01
+0000013EB4D67EC8 539F5A6C_01
+0000000000000FFF 457FF000_00
+BFFFDFFFFBFFFFFF DE800040_01
+0005CEAF34EA1DC7 58B9D5E7_01
+00000000000007FF 44FFE000_00
+00004800007FFFFD 56900001_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000000003FF 447FC000_00
+0000000200001000 50000004_00
+00000000000360D0 48583400_00
+00000000000001FF 43FF8000_00
+01003FFFFFFFFFFC 5B802000_01
+00C000708FF1BA51 5B400071_01
+00000000000000FF 437F0000_00
+F802000003FFFFFF DCFFBFFF_01
+0F9E07DCC0BDC061 5D79E07E_01
+000000000000007F 42FE0000_00
+03FF0000000000FF 5C7FC001_01
+FFFFFFE1B9B2A079 D1F2326A_01
+000000000000003F 427C0000_00
+FFF80000000080FF D8FFFFFF_01
+00000000001EB5B4 49F5ADA0_00
+000000000000001F 41F80000_00
+000000000077FBFE 4AEFF7FC_00
+00000000005AC607 4AB58C0E_00
+000000000000000F 41700000_00
+FFFFFFFEF80000FF CF83FFFF_01
+000005C5B9D66984 54B8B73B_01
+0000000000000007 40E00000_00
+C001FFFFFFF00000 DE7FF800_01
+00001D06B372AA06 55E8359C_01
+0000000000000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rz.tv b/wally-pipelined/testbench/fp/i64_f32_rz.tv
new file mode 100644
index 000000000..b996cbb7a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f32_rz.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 5CFFFFBF_01
+0000000032CC8B7A 4E4B322D_01
+0000000000000000 00000000_00
+FFFFFFFFC0003FFE CE7FFF00_01
+032C857F319EDE38 5C4B215F_01
+0000000000000001 3F800000_00
+FFFFFBFFFFF8003E D4800000_01
+00394C79B6D3007B 5A6531E6_01
+0000000000000002 40000000_00
+FBFFFFF0000001FF DC800001_01
+0000000001AE458D 4BD722C6_01
+0000000000000004 40800000_00
+00040008000007FE 58800100_01
+F9EB456140D88764 DCC29753_01
+0000000000000008 41000000_00
+FFFFE400FFFFFFFE D5DFF800_01
+07DE834A248EDF36 5CFBD069_01
+0000000000000010 41800000_00
+00000003FF001FFF 507FC007_01
+FFFFFFFFFFE385E2 C9E3D0F0_00
+0000000000000020 42000000_00
+F0041FFFFFFFFFFF DD7FBE00_01
+000000059EB1FD45 50B3D63F_01
+0000000000000040 42800000_00
+FFFFFFFFFFFCFFF9 C84001C0_00
+FFFFFFFFFFFEDDFE C7910100_00
+0000000000000080 43000000_00
+000000000003FF00 487FC000_00
+00000000C89FF56B 4F489FF5_01
+0000000000000100 43800000_00
+000FFFFF7FDFFFFF 597FFFF7_01
+1B5E4F0BE0DEBFF0 5DDAF278_01
+0000000000000200 44000000_00
+FFFDF803FFFFFFFF D801FF00_01
+FFFFFFFFFFF4766B C9389950_00
+0000000000000400 44800000_00
+0000080100000FFE 55001000_01
+000000000000000C 41400000_00
+0000000000000800 45000000_00
+0048000000100000 5A900000_01
+FFE662A109109D0A D9CCEAF7_01
+0000000000001000 45800000_00
+C000000037FFFFFE DE7FFFFF_01
+FFFFFFFFFFFFFFE4 C1E00000_00
+0000000000002000 46000000_00
+F801000000100000 DCFFDFFF_01
+FE114B79075F70EE DBF75A43_01
+0000000000004000 46800000_00
+100000000001003E 5D800000_01
+00000000000003AC 446B0000_00
+0000000000008000 47000000_00
+200000FFFFFFF800 5E000003_01
+00000044A3A3DBE5 52894747_01
+0000000000010000 47800000_00
+FFE0003EFFFFFFFF D9FFFE08_01
+FFFFFFFFFFFF1A91 C7656F00_00
+0000000000020000 48000000_00
+FFFFF7C3FFFFFFFD D503C000_01
+0000000000003309 464C2400_00
+0000000000040000 48800000_00
+000083FFF7FFFFFE 5703FFF7_01
+FFFFFFFFFFFFFF58 C3280000_00
+0000000000080000 49000000_00
+FFFFFFDE01FFFFFE D207F800_01
+0000000000002980 46260000_00
+0000000000100000 49800000_00
+00000000FFF07FFF 4F7FF07F_01
+000000000000005D 42BA0000_00
+0000000000200000 4A000000_00
+000020FFDFFFFFFF 5603FF7F_01
+FFFC8C23DA2CEAD8 D85CF709_01
+0000000000400000 4A800000_00
+E0000000003FFFDF DDFFFFFF_01
+FFFFFDE3C1DEC43C D4070F88_01
+0000000000800000 4B000000_00
+FFFF00000BFFFFFD D77FFFF4_01
+000000000030FFBE 4A43FEF8_00
+0000000001000000 4B800000_00
+FFFE000007FFEFFD D7FFFFFC_01
+FFFFFFFFEFDEED86 CD810893_01
+0000000002000000 4C000000_00
+F3FFFFFFFFBFFFFE DD400000_01
+000000001DA3FF45 4DED1FFA_01
+0000000004000000 4C800000_00
+FFFFFFFF00010007 CF7FFEFF_01
+FFFFFFFE9B1BCB54 CFB2721A_01
+0000000008000000 4D000000_00
+00004000004001FE 56800000_01
+F27DD19DE6563714 DD5822E6_01
+0000000010000000 4D800000_00
+FFC00000004007FE DA7FFFFF_01
+000000000001A359 47D1AC80_00
+0000000020000000 4E000000_00
+0000000003C000FE 4C70003F_01
+FFFFFFFFFE62EC20 CBCE89F0_00
+0000000040000000 4E800000_00
+000000003FFFFFFD 4E7FFFFF_01
+000000000000285F 46217C00_00
+0000000080000000 4F000000_00
+FFFFFFFFBFFFF00F CE80001F_01
+FFFFF836F99DBAA8 D4F920CC_01
+0000000100000000 4F800000_00
+00000020003FFEFE 520000FF_01
+0033466832042D47 5A4D19A0_01
+0000000200000000 50000000_00
+FFFFFFFFFFFFF887 C4EF2000_00
+00000000003829C8 4A60A720_00
+0000000400000000 50800000_00
+00000FFFFFFF7DFD 557FFFFF_01
+0000000FB77C672B 517B77C6_01
+0000000800000000 51000000_00
+08003FFDFFFFFFFE 5D0003FF_01
+0000000000001B78 45DBC000_00
+0000001000000000 51800000_00
+FF7FFFFFFFEFDFFF DB000000_01
+0000000000000071 42E20000_00
+0000002000000000 52000000_00
+000013FFFFFFFDFF 559FFFFF_01
+FFFFFFFFFFFFFF86 C2F40000_00
+0000004000000000 52800000_00
+0800000000040800 5D000000_01
+FFF8A60D9E19F17E D8EB3E4C_01
+0000008000000000 53000000_00
+000077FFF0000000 56EFFFE0_00
+FFFFFFFFF7506DBA CD0AF924_01
+0000010000000000 53800000_00
+FFFFFFFFFFFEFBF7 C7820480_00
+FFFFFFFFFEA42AC9 CBADEA9B_01
+0000020000000000 54000000_00
+0000107FFFFFDFFD 5583FFFF_01
+FFE7AA3F2BDACC89 D9C2AE06_01
+0000040000000000 54800000_00
+FFF8040000040000 D8FF7FFF_01
+FFFFFFFFFFFFFFFD C0400000_00
+0000080000000000 55000000_00
+FFFF80000800001F D6FFFFEF_01
+FFFDF681DECDADC9 D8025F88_01
+0000100000000000 55800000_00
+FFFFFEFFFFE0007F D380000F_01
+FFFFFFFFFFFFCFBE C6410800_00
+0000200000000000 56000000_00
+0000000901FFFFFD 51101FFF_01
+FEC01FECA24DE1B0 DB9FF009_01
+0000400000000000 56800000_00
+F7FFFFFFDFFF7FFF DD000000_01
+F858A66761669936 DCF4EB33_01
+0000800000000000 57000000_00
+FFFEFF800000003E D7803FFF_01
+F716EA43FAC45C97 DD0E915B_01
+0001000000000000 57800000_00
+FFFFFFFFFFFFFFC6 C2680000_00
+0024D70EC7661FD8 5A135C3B_01
+0002000000000000 58000000_00
+C07FFFFFFFFFFFFE DE7E0000_01
+FFD956DBD0AEE817 DA1AA490_01
+0004000000000000 58800000_00
+020003EFFFFFFFFE 5C0000FB_01
+FFFFFFFFFFFF4300 C73D0000_00
+0008000000000000 59000000_00
+4000000004002000 5E800000_01
+C12EDF40F41F6021 DE7B4482_01
+0010000000000000 59800000_00
+FF9000000000001D DADFFFFF_01
+FFFFFFF83DE950F6 D0F842D5_01
+0020000000000000 5A000000_00
+800003FFFFFC0000 DEFFFFF8_01
+FE2B59CB3A604D69 DBEA531A_01
+0040000000000000 5A800000_00
+7FFFFFFDFFFFBFFF 5EFFFFFF_01
+000000A37C210862 53237C21_01
+0080000000000000 5B000000_00
+0002000002000002 58000000_01
+FFFFB65CD8617789 D693464F_01
+0100000000000000 5B800000_00
+00001BFFFFFFBFFE 55DFFFFF_01
+FFFFFFFFFFFFF01D C57E3000_00
+0200000000000000 5C000000_00
+1000008000003FFF 5D800004_01
+000000000D098D19 4D5098D1_01
+0400000000000000 5C800000_00
+03FFFFFFFFFFF5FF 5C7FFFFF_01
+000006B3BD2C7BEF 54D677A5_01
+0800000000000000 5D000000_00
+00003FFFBFFFFFFE 567FFEFF_01
+FFFF4E5ADDDAA4A8 D731A522_01
+1000000000000000 5D800000_00
+001FFFC000000FFD 59FFFE00_01
+FFFFFFFFFFFFFF21 C35F0000_00
+2000000000000000 5E000000_00
+0000000041DFFFFF 4E83BFFF_01
+FFFFFFFFFC648262 CC66DF67_01
+4000000000000000 5E800000_00
+C0001FFFFFFFFFFB DE7FFF80_01
+FFFFFF7353AC45D2 D30CAC53_01
+8000000000000000 DF000000_00
+FFFFFFFFFFE7EFFF C9C08008_00
+0000000000A1202D 4B21202D_00
+C000000000000000 DE800000_00
+FFFFFFFFFFFF5F7F C7208100_00
+000000000040CA70 4A8194E0_00
+E000000000000000 DE000000_00
+0000200201FFFFFE 56000807_01
+00000003B55D87D4 506D5761_01
+F000000000000000 DD800000_00
+FF80000DFFFFFFFF DAFFFFE4_01
+000000010510FAEF 4F82887D_01
+F800000000000000 DD000000_00
+0003FFF00000000F 587FFC00_01
+000000000000724A 46E49400_00
+FC00000000000000 DC800000_00
+FFFFFFDF80000002 D201FFFF_01
+0000000000000064 42C80000_00
+FE00000000000000 DC000000_00
+FEFFFFFFFFF800FE DB800000_01
+FFFFFFC2C6222702 D274E777_01
+FF00000000000000 DB800000_00
+0000000408000002 50810000_01
+000000E96DF1CB41 53696DF1_01
+FF80000000000000 DB000000_00
+007FFFFFFFFFF9FE 5AFFFFFF_01
+F727F174DEE7DC85 DD0D80E8_01
+FFC0000000000000 DA800000_00
+8000000003FFFEFE DEFFFFFF_01
+FFFFFFFFFFF0BD5B C9742A50_00
+FFE0000000000000 DA000000_00
+0BEFFFFFFFFFFFFF 5D3EFFFF_01
+000000000002790C 481E4300_00
+FFF0000000000000 D9800000_00
+FFFFFFFFFFEFFBFA C9802030_00
+000000169E75DF01 51B4F3AE_01
+FFF8000000000000 D9000000_00
+00000007FEFFDFFF 50FFDFFB_01
+000000000000000E 41600000_00
+FFFC000000000000 D8800000_00
+0003FFFE0007FFFE 587FFF80_01
+FFFFFFFFFFF28622 C9579DE0_00
+FFFE000000000000 D8000000_00
+FFFFFF7FFFFDF7FF D3000002_01
+00072F0EC496FE21 58E5E1D8_01
+FFFF000000000000 D7800000_00
+DFBFFFFFFFFFFFFE DE010000_01
+0000000000FC1FCA 4B7C1FCA_00
+FFFF800000000000 D7000000_00
+00000FFF800FFFFE 557FF800_01
+FFFF5194E4A9C2CE D72E6B1B_01
+FFFFC00000000000 D6800000_00
+00000002100007FD 50040001_01
+FFFFFFFFFFC2D8FE CA749C08_00
+FFFFE00000000000 D6000000_00
+000000000007FF6E 48FFEDC0_00
+000000000001766E 47BB3700_00
+FFFFF00000000000 D5800000_00
+0040000400000002 5A800008_01
+0000000000007841 46F08200_00
+FFFFF80000000000 D5000000_00
+3DFFFFFFFFFFFF7E 5E77FFFF_01
+FFFFFFE549E17E30 D1D5B0F4_01
+FFFFFC0000000000 D4800000_00
+FFFFFFFFFFFFFEE1 C38F8000_00
+FFFFFFFFFFFFFFE7 C1C80000_00
+FFFFFE0000000000 D4000000_00
+000000000EFFFFDF 4D6FFFFD_01
+FFFFFFFFFFFFFF73 C30D0000_00
+FFFFFF0000000000 D3800000_00
+FD00000008000000 DC3FFFFF_01
+000000000001DBB1 47EDD880_00
+FFFFFF8000000000 D3000000_00
+FFFFFFFFFFF8007F C8FFF020_00
+FFFFFFFEFD10A515 CF8177AD_01
+FFFFFFC000000000 D2800000_00
+FFEFFFFFFFFFFFFE D9800000_01
+FAB02984F6283B6C DCA9FACF_01
+FFFFFFE000000000 D2000000_00
+FFFFFFBC000001FE D287FFFF_01
+FEB087C6B9FE7FE0 DBA7BC1C_01
+FFFFFFF000000000 D1800000_00
+FFF80001000007FE D8FFFFDF_01
+00F2762EA6837956 5B72762E_01
+FFFFFFF800000000 D1000000_00
+FFF7E0FFFFFFFFFE D901F000_01
+00002E1175484626 563845D5_01
+FFFFFFFC00000000 D0800000_00
+0000200020000FFE 56000080_01
+000000000000068F 44D1E000_00
+FFFFFFFE00000000 D0000000_00
+021FFFFFFFFBFFFF 5C07FFFF_01
+FFFFFFFFFFFFFFF9 C0E00000_00
+FFFFFFFF00000000 CF800000_00
+FFFFFFD0000FFFFD D23FFFC0_01
+000000BDF6658B83 533DF665_01
+FFFFFFFF80000000 CF000000_00
+1000001FFDFFFFFF 5D800000_01
+0000000000003B5B 466D6C00_00
+FFFFFFFFC0000000 CE800000_00
+FFFFFFBFFE0FFFFF D28003E0_01
+FFFFFFFFFFFFFFF0 C1800000_00
+FFFFFFFFE0000000 CE000000_00
+FFFFFFFBF00007FF D081FFFF_01
+01E986274F48EAAD 5BF4C313_01
+FFFFFFFFF0000000 CD800000_00
+1FFFFFFDFFFFFF7F 5DFFFFFF_01
+FFFFFFFFFFFFCB5A C6529800_00
+FFFFFFFFF8000000 CD000000_00
+7FF000000000FFFF 5EFFE000_01
+00000003C2717FC3 50709C5F_01
+FFFFFFFFFC000000 CC800000_00
+FFFFFFE00008001F D1FFFFBF_01
+FFFFFFFFFFEFABDA C982A130_00
+FFFFFFFFFE000000 CC000000_00
+0200000000000002 5C000000_01
+FFFFFFFFF8FDA53F CCE04B58_01
+FFFFFFFFFF000000 CB800000_00
+F6000003FFFFFFFE DD1FFFFF_01
+FFFFFFFFFFFFFFD0 C2400000_00
+FFFFFFFFFF800000 CB000000_00
+FFFFFFFFFFBFFF7E CA800104_00
+00000000EE0FEA62 4F6E0FEA_01
+FFFFFFFFFFC00000 CA800000_00
+0000007FFF9FFFFD 52FFFF3F_01
+00000037F35EDC1D 525FCD7B_01
+FFFFFFFFFFE00000 CA000000_00
+FFFFFFF7FDFFFF7D D1002000_01
+00000000000001AD 43D68000_00
+FFFFFFFFFFF00000 C9800000_00
+FFFFFF0000100020 D37FFFEF_01
+27F167FBC7FC5F9A 5E1FC59F_01
+FFFFFFFFFFF80000 C9000000_00
+003FFFFFFFFC0001 5A7FFFFF_01
+000E48F9F4EBD30E 59648F9F_01
+FFFFFFFFFFFC0000 C8800000_00
+DFFFFFFFFFFBFFFE DE000000_01
+FC91C23EE8C9424F DC5B8F70_01
+FFFFFFFFFFFE0000 C8000000_00
+F7DFFBFFFFFFFFFE DD020040_01
+000000002CAE080C 4E32B820_01
+FFFFFFFFFFFF0000 C7800000_00
+FFFFC00010000020 D67FFFBF_01
+04D921F917B20E40 5C9B243F_01
+FFFFFFFFFFFF8000 C7000000_00
+F8000FFFFFFFFFFD DCFFFE00_01
+FFF17C566BC7D811 D9683A99_01
+FFFFFFFFFFFFC000 C6800000_00
+00000000000000FE 437E0000_00
+FFF82AC14930D386 D8FAA7D6_01
+FFFFFFFFFFFFE000 C6000000_00
+00000000000003FC 447F0000_00
+000E62EC60E119FC 59662EC6_01
+FFFFFFFFFFFFF000 C5800000_00
+FFFFEFF7FF7FFFFE D5804004_01
+0E2B1ECF210EEDC5 5D62B1EC_01
+FFFFFFFFFFFFF800 C5000000_00
+00000000007FFF1F 4AFFFE3E_00
+FFFFFE534F5676F7 D3D65854_01
+FFFFFFFFFFFFFC00 C4800000_00
+0000001004FFFFFD 518027FF_01
+0000035C939669F1 545724E5_01
+FFFFFFFFFFFFFE00 C4000000_00
+1FFFFFFFFFFFFDFD 5DFFFFFF_01
+FFFFFFFFFFFFFF91 C2DE0000_00
+FFFFFFFFFFFFFF00 C3800000_00
+01FFFFFFFBFFEFFE 5BFFFFFF_01
+000000000000016E 43B70000_00
+FFFFFFFFFFFFFF80 C3000000_00
+FFF7FFFFFFFFF7FD D9000000_01
+FFFFF8E2BCFAC553 D4E3A860_01
+FFFFFFFFFFFFFFC0 C2800000_00
+FFFFFBFFFFFE0FFE D4800000_01
+00000001A4E704BF 4FD27382_01
+FFFFFFFFFFFFFFE0 C2000000_00
+1400007FFFFFFFFD 5DA00003_01
+FFFFFFFC93B187B4 D05B139E_01
+FFFFFFFFFFFFFFF0 C1800000_00
+40000000007FFFFD 5E800000_01
+000000000067D468 4ACFA8D0_00
+FFFFFFFFFFFFFFF8 C1000000_00
+007FFEFFFFFBFFFE 5AFFFDFF_01
+FFFFFFE26CEC79F8 D1EC989C_01
+FFFFFFFFFFFFFFFC C0800000_00
+00FFFFFF000000FF 5B7FFFFF_01
+FFFFFFFFE0D3983A CDF9633E_01
+FFFFFFFFFFFFFFFE C0000000_00
+00007FFFBFFF7FFE 56FFFF7F_01
+FFFFFFFDF4A7088A D002D63D_01
+FFFFFFFFFFFFFFFF BF800000_00
+000008000000027E 55000000_01
+000000000000F4E8 4774E800_00
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFF83FFDF CAF80042_00
+00000E11407887B2 55611407_01
+FFFFFFFFFFFFFFFB C0A00000_00
+04000003FFFFFFF6 5C800000_01
+0000000000000513 44A26000_00
+FFFFFFFFFFFFFFF7 C1100000_00
+BFFC00000000003E DE8007FF_01
+00000008D7BBB75B 510D7BBB_01
+FFFFFFFFFFFFFFEF C1880000_00
+000FFFFBFFFC0000 597FFFBF_01
+FFFFFFFFFFCD5A23 CA4A9774_00
+FFFFFFFFFFFFFFDF C2040000_00
+FFBFDFFFBFFFFFFF DA804000_01
+000000000000007F 42FE0000_00
+FFFFFFFFFFFFFFBF C2820000_00
+00000007FF800003 50FFF000_01
+000000000002BB02 482EC080_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEE7FF C78C0080_00
+00264B2B9BAD0DA2 5A192CAE_01
+FFFFFFFFFFFFFEFF C3808000_00
+0000000000100803 49804018_00
+FF9B1DCB9F857D5E DAC9C468_01
+FFFFFFFFFFFFFDFF C4004000_00
+FFFFFFBFFFFFEFEE D2800000_01
+F6FD7542899C1C6F DD1028AB_01
+FFFFFFFFFFFFFBFF C4802000_00
+FF800000004001FF DAFFFFFF_01
+0000000002BE4932 4C2F924C_01
+FFFFFFFFFFFFF7FF C5001000_00
+00001004000FFFFE 55802000_01
+FFFFFF9DAA0123E0 D2C4ABFD_01
+FFFFFFFFFFFFEFFF C5800800_00
+00000001FDFFFDFE 4FFEFFFE_01
+FFFC1C8703B1DCB0 D878DE3F_01
+FFFFFFFFFFFFDFFF C6000400_00
+FE0FE00000000000 DBF81000_00
+0779ED944A4E2779 5CEF3DB2_01
+FFFFFFFFFFFFBFFF C6800200_00
+FBFFFE0400000000 DC80003F_01
+0000010127E03666 538093F0_01
+FFFFFFFFFFFF7FFF C7000100_00
+FFFFF0200000FFFE D57DFFFF_01
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFFFFFFEFFFF C7800080_00
+FFEFFE0000080000 D9800FFF_01
+FFFFFFFFFD3354EA CC332AC5_01
+FFFFFFFFFFFDFFFF C8000040_00
+003FF0000003FFFE 5A7FC000_01
+0000006375B23F7B 52C6EB64_01
+FFFFFFFFFFFBFFFF C8800020_00
+000407FFFFFFFFF6 5880FFFF_01
+0000000092117F38 4F12117F_01
+FFFFFFFFFFF7FFFF C9000010_00
+FFFFFFFFFFFF7FFF C7000100_00
+00000000000008BE 450BE000_00
+FFFFFFFFFFEFFFFF C9800008_00
+004000020FFFFFFF 5A800004_01
+FFFFB84C2D8BC9CB D68F67A4_01
+FFFFFFFFFFDFFFFF CA000004_00
+00FFFFFFFFFFFFFD 5B7FFFFF_01
+00000023C2C6F284 520F0B1B_01
+FFFFFFFFFFBFFFFF CA800002_00
+FFFDDFFFFFFFFFFD D8080000_01
+00000000746356C4 4EE8C6AD_01
+FFFFFFFFFF7FFFFF CB000001_00
+010000000000BFFF 5B800000_01
+FFFFFFFFFFFFFFFD C0400000_00
+FFFFFFFFFEFFFFFF CB800000_01
+FFFFBF7FFBFFFFFE D6810008_01
+00000006386CE889 50C70D9D_01
+FFFFFFFFFDFFFFFF CC000000_01
+F00000F7FFFFFFFF DD7FFFF0_01
+FFFDFC53090C46A4 D800EB3D_01
+FFFFFFFFFBFFFFFF CC800000_01
+0000000000800047 4B000047_00
+FFFFFFFFD693872E CE25B1E3_01
+FFFFFFFFF7FFFFFF CD000000_01
+000000007FBFFBFF 4EFF7FF7_01
+00000026A7845E35 521A9E11_01
+FFFFFFFFEFFFFFFF CD800000_01
+FFFFFFDFFFFFFBFD D2000000_01
+000000001433D14C 4DA19E8A_01
+FFFFFFFFDFFFFFFF CE000000_01
+0001FFFFFFE0000E 57FFFFFF_01
+F0F23E8068D3D84A DD70DC17_01
+FFFFFFFFBFFFFFFF CE800000_01
+F7FFBFFFFFFFBFFF DD000400_01
+FFFFBD29B7459087 D685AC91_01
+FFFFFFFF7FFFFFFF CF000000_01
+FFFFFFF8FFFFBFFF D0E00008_01
+FFFFFFFFFFEDDC06 C9911FD0_00
+FFFFFFFEFFFFFFFF CF800000_01
+FFFFFFF80001FFFF D0FFFFC0_01
+0000000000002FF9 463FE400_00
+FFFFFFFDFFFFFFFF D0000000_01
+004000040000FFFF 5A800008_01
+FFFFFFFFFFFFFFF1 C1700000_00
+FFFFFFFBFFFFFFFF D0800000_01
+C0000000007FFFFA DE7FFFFF_01
+FFFFFFFFFE053E2B CBFD60EA_01
+FFFFFFF7FFFFFFFF D1000000_01
+7FFE000007FFFFFF 5EFFFC00_01
+000000000000000D 41500000_00
+FFFFFFEFFFFFFFFF D1800000_01
+F80000000001007E DCFFFFFF_01
+FFFFED48424AD9D6 D595BDED_01
+FFFFFFDFFFFFFFFF D2000000_01
+FFFFFE0001FEFFFF D3FFFF00_01
+000000000000013B 439D8000_00
+FFFFFFBFFFFFFFFF D2800000_01
+0007FBFFFFFDFFFE 58FF7FFF_01
+4A16BD4128090C83 5E942D7A_01
+FFFFFF7FFFFFFFFF D3000000_01
+00FFF7FFFF7FFFFE 5B7FF7FF_01
+0000000000000006 40C00000_00
+FFFFFEFFFFFFFFFF D3800000_01
+FBFFFFBFFFBFFFFF DC800008_01
+00000000000001BA 43DD0000_00
+FFFFFDFFFFFFFFFF D4000000_01
+0000000040000082 4E800001_01
+FF07A2BF5B689F89 DB785D40_01
+FFFFFBFFFFFFFFFF D4800000_01
+0000001FF8000008 51FFC000_01
+F87CAA7DE672DE8B DCF06AB0_01
+FFFFF7FFFFFFFFFF D5000000_01
+07FFF80000000002 5CFFFF00_01
+0000000010A1E5B8 4D850F2D_01
+FFFFEFFFFFFFFFFF D5800000_01
+F7FFFFE00007FFFF DD000001_01
+FFFFFFFFFFF6ADFC C9152040_00
+FFFFDFFFFFFFFFFF D6000000_01
+FFFFFF03FFFFFFC0 D37C0000_01
+EA579475948F0032 DDAD435C_01
+FFFFBFFFFFFFFFFF D6800000_01
+FC00000000003FF6 DC7FFFFF_01
+002E677AC313BF60 5A399DEB_01
+FFFF7FFFFFFFFFFF D7000000_01
+02000007FF7FFFFF 5C000001_01
+0000000E999639F1 51699963_01
+FFFEFFFFFFFFFFFF D7800000_01
+FFFF83FFFFFFFFBE D6F80000_01
+000000000001537D 47A9BE80_00
+FFFDFFFFFFFFFFFF D8000000_01
+EFFFFFC00000003D DD800001_01
+FFFFFFF21FEDFD35 D15E0120_01
+FFFBFFFFFFFFFFFF D8800000_01
+FFFFFFF0000007FE D17FFFFF_01
+FFFFFFFFFFDE0839 CA07DF1C_00
+FFF7FFFFFFFFFFFF D9000000_01
+0000007FFFE000FF 52FFFFC0_01
+FFFFFFFF79F30F48 CF060CF0_01
+FFEFFFFFFFFFFFFF D9800000_01
+FFFFFC13FFFFFFFD D47B0000_01
+0000000000001B85 45DC2800_00
+FFDFFFFFFFFFFFFF DA000000_01
+000008000007FFFE 55000000_01
+12DB4409E5AE87E6 5D96DA20_01
+FFBFFFFFFFFFFFFF DA800000_01
+FFFFFFFFFFF7BFEE C9040120_00
+FFFFFFFFFFFFFFFD C0400000_00
+FF7FFFFFFFFFFFFF DB000000_01
+000000001040FFFE 4D8207FF_01
+00000909A09C13D3 55109A09_01
+FEFFFFFFFFFFFFFF DB800000_01
+FFFFFF01FFFFFF7F D37E0000_01
+FFFFFF72E7D2575D D30D182D_01
+FDFFFFFFFFFFFFFF DC000000_01
+FFFFFFFFFFFEFFDB C7801280_00
+0000000000000017 41B80000_00
+FBFFFFFFFFFFFFFF DC800000_01
+100000001FFFFFF6 5D800000_01
+000000114B12EF51 518A5897_01
+F7FFFFFFFFFFFFFF DD000000_01
+0407FFFFFFFFFEFF 5C80FFFF_01
+FFFFFF769F3A5C2C D30960C5_01
+EFFFFFFFFFFFFFFF DD800000_01
+FFFFFFFDF7FFFFFD D0020000_01
+FFFFFFFFFFFFFFF2 C1600000_00
+DFFFFFFFFFFFFFFF DE000000_01
+FFFFFFFFFE0007FF CBFFFC00_01
+000000000000001E 41F00000_00
+BFFFFFFFFFFFFFFF DE800000_01
+FFF800000009FFFF D8FFFFFF_01
+0000000000007AA4 46F54800_00
+7FFFFFFFFFFFFFFF 5EFFFFFF_01
+4080000000FFFFFF 5E810000_01
+000000000DE7601D 4D5E7601_01
+3FFFFFFFFFFFFFFF 5E7FFFFF_01
+FFCFFFFFFFBFFFFE DA400000_01
+FFFFFFFFFFFFFFCA C2580000_00
+1FFFFFFFFFFFFFFF 5DFFFFFF_01
+000080400000003F 57004000_01
+00000000001F75A5 49FBAD28_00
+0FFFFFFFFFFFFFFF 5D7FFFFF_01
+FFFFFFEFFFFFCFFE D1800001_01
+FFFFFEE775887420 D38C453B_01
+07FFFFFFFFFFFFFF 5CFFFFFF_01
+00000000000801FE 49001FE0_00
+0000000000213FF1 4A04FFC4_00
+03FFFFFFFFFFFFFF 5C7FFFFF_01
+07FEFFFFFFFFFFEE 5CFFDFFF_01
+0000000000000004 40800000_00
+01FFFFFFFFFFFFFF 5BFFFFFF_01
+0000000820000003 51020000_01
+FFFFFFF9AD105214 D0CA5DF5_01
+00FFFFFFFFFFFFFF 5B7FFFFF_01
+FFFFF00FFFFFFFBE D57F0000_01
+FFFFFFFFFFCC48E7 CA4EDC64_00
+007FFFFFFFFFFFFF 5AFFFFFF_01
+00000FFFEF7FFFFF 557FFEF7_01
+FFFFFFFFFF0BA6CB CB745935_00
+003FFFFFFFFFFFFF 5A7FFFFF_01
+FFFFFF7FBFFFFFBF D3004000_01
+FFFFFFFFFFF24425 C95BBDB0_00
+001FFFFFFFFFFFFF 59FFFFFF_01
+200000001FFBFFFF 5E000000_01
+FFFFFF4E7115EC53 D3318EEA_01
+000FFFFFFFFFFFFF 597FFFFF_01
+FFFFF803FFFFFFBF D4FF8000_01
+FFFFFC2E539ADCFE D4746B19_01
+0007FFFFFFFFFFFF 58FFFFFF_01
+FFFFFFFFFBFFFFFF CC800000_01
+00000055084732F3 52AA108E_01
+0003FFFFFFFFFFFF 587FFFFF_01
+BFFF7FFFFFFFFE00 DE800100_01
+FFFFFFFFFFFF8543 C6F57A00_00
+0001FFFFFFFFFFFF 57FFFFFF_01
+0000001FFBFFE000 51FFDFFF_00
+FFFFFFFFFFFE491B C7DB7280_00
+0000FFFFFFFFFFFF 577FFFFF_01
+FC00200000001FFE DC7FF7FF_01
+FFFFF16898822A24 D5697677_01
+00007FFFFFFFFFFF 56FFFFFF_01
+3FFF03FFFFFFFFFE 5E7FFC0F_01
+FFFFFF8FFE18C7BF D2E003CE_01
+00003FFFFFFFFFFF 567FFFFF_01
+FFFFFEFFFEFFFFFD D3800080_01
+00F03620C1266ED9 5B703620_01
+00001FFFFFFFFFFF 55FFFFFF_01
+BF7EFFFFFFFFFFFF DE810200_01
+FFFFFFFFFFFFFFD5 C22C0000_00
+00000FFFFFFFFFFF 557FFFFF_01
+FFFBFFFFF803FFFE D8800000_01
+0000000000068684 48D0D080_00
+000007FFFFFFFFFF 54FFFFFF_01
+DFFFFFE00000001E DE000000_01
+FFFFFFFFFFFFECF5 C5985800_00
+000003FFFFFFFFFF 547FFFFF_01
+FFFF00400000FFFF D77FBFFF_01
+0000000000000002 40000000_00
+000001FFFFFFFFFF 53FFFFFF_01
+FBFFFFFFFFFFBDFE DC800000_01
+0000000000000BC9 453C9000_00
+000000FFFFFFFFFF 537FFFFF_01
+807FFFFFFFFFDFFE DEFF0000_01
+FFC274E35A70CD76 DA762C72_01
+0000007FFFFFFFFF 52FFFFFF_01
+0FFFFFFFFEFFFFFD 5D7FFFFF_01
+FFFFFFFF00E73AFC CF7F18C5_01
+0000003FFFFFFFFF 527FFFFF_01
+FFC000000001000E DA7FFFFF_01
+FFFFFFFFFFFE15E9 C7F50B80_00
+0000001FFFFFFFFF 51FFFFFF_01
+0001FFFFFFFFF3FD 57FFFFFF_01
+0000000000000033 424C0000_00
+0000000FFFFFFFFF 517FFFFF_01
+000000001FFFBFFF 4DFFFDFF_01
+FFFFFFEE6B141E1B D18CA75F_01
+00000007FFFFFFFF 50FFFFFF_01
+FFFFFFFFF60007FF CD1FFF80_01
+00000001AB310BA6 4FD59885_01
+00000003FFFFFFFF 507FFFFF_01
+0003FFFFB7FFFFFF 587FFFED_01
+FFFFFFFFFFFFF195 C566B000_00
+00000001FFFFFFFF 4FFFFFFF_01
+FFFFFFFF8000000B CEFFFFFF_01
+00000019BA8D5559 51CDD46A_01
+00000000FFFFFFFF 4F7FFFFF_01
+FBFEFFFFFFFFFFF9 DC802000_01
+FFFFFFB6F062822D D2921F3A_01
+000000007FFFFFFF 4EFFFFFF_01
+0001000000000082 57800000_01
+01CEAD9E2FB104A4 5BE756CF_01
+000000003FFFFFFF 4E7FFFFF_01
+000003FFFFFFFF7C 547FFFFF_01
+FFFFFFFFFD681E78 CC25F862_00
+000000001FFFFFFF 4DFFFFFF_01
+00002000400001FF 56000100_01
+0000000000000018 41C00000_00
+000000000FFFFFFF 4D7FFFFF_01
+3FFF80000000003E 5E7FFE00_01
+FFFFFFFFFFFFFF95 C2D60000_00
+0000000007FFFFFF 4CFFFFFF_01
+010000BFFFFFFFFF 5B80005F_01
+0000001697087B19 51B4B843_01
+0000000003FFFFFF 4C7FFFFF_01
+FBFFFFFFFFEEFFFD DC800000_01
+0000000E64BDFC55 51664BDF_01
+0000000001FFFFFF 4BFFFFFF_01
+FC00000001FFFFFE DC7FFFFF_01
+FFFED156A62AB849 D79754AC_01
+0000000000FFFFFF 4B7FFFFF_00
+FFFFFFF83FEFFFFD D0F80200_01
+00015354EAE7C259 57A9AA75_01
+00000000007FFFFF 4AFFFFFE_00
+FFFFFFFFFFFFFF7F C3010000_00
+FFFFFFF0F4DF3C75 D170B20C_01
+00000000003FFFFF 4A7FFFFC_00
+FFFA000000001FFF D8BFFFFF_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000001FFFFF 49FFFFF8_00
+FFFFFFFFFF7FFE40 CB0001C0_00
+FFFFFFDB5433CB9B D212AF30_01
+00000000000FFFFF 497FFFF0_00
+FFFFFDFFDFFDFFFD D4000800_01
+FFFFFFFFFFDEAE1F CA054784_00
+000000000007FFFF 48FFFFE0_00
+FFFFFFFFF0080006 CD7F7FFF_01
+FFFFFFFE7735DEC7 CFC46510_01
+000000000003FFFF 487FFFC0_00
+00000001FBFFFFFF 4FFDFFFF_01
+000003757D8B12ED 545D5F62_01
+000000000001FFFF 47FFFF80_00
+FFFFFE07F7FFFFFF D3FC0400_01
+00000A654064E046 55265406_01
+000000000000FFFF 477FFF00_00
+08000000000017FF 5D000000_01
+FFFFFFFFFFFFFFE7 C1C80000_00
+0000000000007FFF 46FFFE00_00
+07FFFFFFFFFFFDF6 5CFFFFFF_01
+FFFFAD78B3D6C3B6 D6A50E98_01
+0000000000003FFF 467FFC00_00
+0000300004000000 56400010_00
+FFFFFFF70B77F34F D10F4880_01
+0000000000001FFF 45FFF800_00
+FFFFFF80006FFFFE D2FFFF20_01
+0000013EB4D67EC8 539F5A6B_01
+0000000000000FFF 457FF000_00
+BFFFDFFFFBFFFFFF DE800040_01
+0005CEAF34EA1DC7 58B9D5E6_01
+00000000000007FF 44FFE000_00
+00004800007FFFFD 56900000_01
+FFFFFFFFFFFFFFFB C0A00000_00
+00000000000003FF 447FC000_00
+0000000200001000 50000004_00
+00000000000360D0 48583400_00
+00000000000001FF 43FF8000_00
+01003FFFFFFFFFFC 5B801FFF_01
+00C000708FF1BA51 5B400070_01
+00000000000000FF 437F0000_00
+F802000003FFFFFF DCFFBFFF_01
+0F9E07DCC0BDC061 5D79E07D_01
+000000000000007F 42FE0000_00
+03FF0000000000FF 5C7FC000_01
+FFFFFFE1B9B2A079 D1F2326A_01
+000000000000003F 427C0000_00
+FFF80000000080FF D8FFFFFF_01
+00000000001EB5B4 49F5ADA0_00
+000000000000001F 41F80000_00
+000000000077FBFE 4AEFF7FC_00
+00000000005AC607 4AB58C0E_00
+000000000000000F 41700000_00
+FFFFFFFEF80000FF CF83FFFF_01
+000005C5B9D66984 54B8B73A_01
+0000000000000007 40E00000_00
+C001FFFFFFF00000 DE7FF800_01
+00001D06B372AA06 55E8359B_01
+0000000000000003 40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rd.tv b/wally-pipelined/testbench/fp/i64_f64_rd.tv
new file mode 100644
index 000000000..eaab9a1ee
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f64_rd.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 439FFFF7FFFFFFFD_01
+0000000032CC8B7A 41C96645BD000000_00
+0000000000000000 0000000000000000_00
+FFFFFFFFC0003FFE C1CFFFE001000000_00
+032C857F319EDE38 4389642BF98CF6F1_01
+0000000000000001 3FF0000000000000_00
+FFFFFBFFFFF8003E C29000001FFF0800_00
+00394C79B6D3007B 434CA63CDB69803D_01
+0000000000000002 4000000000000000_00
+FBFFFFF0000001FF C39000003FFFFFF9_01
+0000000001AE458D 417AE458D0000000_00
+0000000000000004 4010000000000000_00
+00040008000007FE 4310002000001FF8_00
+F9EB456140D88764 C39852EA7AFC9DE3_01
+0000000000000008 4020000000000000_00
+FFFFE400FFFFFFFE C2BBFF0000000200_00
+07DE834A248EDF36 439F7A0D28923B7C_01
+0000000000000010 4030000000000000_00
+00000003FF001FFF 420FF800FFF80000_00
+FFFFFFFFFFE385E2 C13C7A1E00000000_00
+0000000000000020 4040000000000000_00
+F0041FFFFFFFFFFF C3AFF7C000000001_01
+000000059EB1FD45 42167AC7F5140000_00
+0000000000000040 4050000000000000_00
+FFFFFFFFFFFCFFF9 C108003800000000_00
+FFFFFFFFFFFEDDFE C0F2202000000000_00
+0000000000000080 4060000000000000_00
+000000000003FF00 410FF80000000000_00
+00000000C89FF56B 41E913FEAD600000_00
+0000000000000100 4070000000000000_00
+000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEBF_01
+0000000000000200 4080000000000000_00
+FFFDF803FFFFFFFF C3003FE000000008_00
+FFFFFFFFFFF4766B C127132A00000000_00
+0000000000000400 4090000000000000_00
+0000080100000FFE 42A00200001FFC00_00
+000000000000000C 4028000000000000_00
+0000000000000800 40A0000000000000_00
+0048000000100000 4352000000040000_00
+FFE662A109109D0A C3399D5EF6EF62F6_00
+0000000000001000 40B0000000000000_00
+C000000037FFFFFE C3CFFFFFFFE40001_01
+FFFFFFFFFFFFFFE4 C03C000000000000_00
+0000000000002000 40C0000000000000_00
+F801000000100000 C39FFBFFFFFFC000_00
+FE114B79075F70EE C37EEB486F8A08F2_01
+0000000000004000 40D0000000000000_00
+100000000001003E 43B0000000000100_01
+00000000000003AC 408D600000000000_00
+0000000000008000 40E0000000000000_00
+200000FFFFFFF800 43C000007FFFFFFC_00
+00000044A3A3DBE5 425128E8F6F94000_00
+0000000000010000 40F0000000000000_00
+FFE0003EFFFFFFFF C33FFFC100000001_00
+FFFFFFFFFFFF1A91 C0ECADE000000000_00
+0000000000020000 4100000000000000_00
+FFFFF7C3FFFFFFFD C2A0780000000600_00
+0000000000003309 40C9848000000000_00
+0000000000040000 4110000000000000_00
+000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58 C065000000000000_00
+0000000000080000 4120000000000000_00
+FFFFFFDE01FFFFFE C240FF0000010000_00
+0000000000002980 40C4C00000000000_00
+0000000000100000 4130000000000000_00
+00000000FFF07FFF 41EFFE0FFFE00000_00
+000000000000005D 4057400000000000_00
+0000000000200000 4140000000000000_00
+000020FFDFFFFFFF 42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
+0000000000400000 4150000000000000_00
+E0000000003FFFDF C3BFFFFFFFFFC001_01
+FFFFFDE3C1DEC43C C280E1F109DE2000_00
+0000000000800000 4160000000000000_00
+FFFF00000BFFFFFD C2EFFFFE80000060_00
+000000000030FFBE 41487FDF00000000_00
+0000000001000000 4170000000000000_00
+FFFE000007FFEFFD C2FFFFFF80010030_00
+FFFFFFFFEFDEED86 C1B021127A000000_00
+0000000002000000 4180000000000000_00
+F3FFFFFFFFBFFFFE C3A8000000008001_01
+000000001DA3FF45 41BDA3FF45000000_00
+0000000004000000 4190000000000000_00
+FFFFFFFF00010007 C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54 C1F64E434AC00000_00
+0000000008000000 41A0000000000000_00
+00004000004001FE 42D0000010007F80_00
+F27DD19DE6563714 C3AB045CC4335392_01
+0000000010000000 41B0000000000000_00
+FFC00000004007FE C34FFFFFFFDFFC01_00
+000000000001A359 40FA359000000000_00
+0000000020000000 41C0000000000000_00
+0000000003C000FE 418E0007F0000000_00
+FFFFFFFFFE62EC20 C179D13E00000000_00
+0000000040000000 41D0000000000000_00
+000000003FFFFFFD 41CFFFFFFE800000_00
+000000000000285F 40C42F8000000000_00
+0000000080000000 41E0000000000000_00
+FFFFFFFFBFFFF00F C1D00003FC400000_00
+FFFFF836F99DBAA8 C29F241989156000_00
+0000000100000000 41F0000000000000_00
+00000020003FFEFE 4240001FFF7F0000_00
+0033466832042D47 4349A334190216A3_01
+0000000200000000 4200000000000000_00
+FFFFFFFFFFFFF887 C09DE40000000000_00
+00000000003829C8 414C14E400000000_00
+0000000400000000 4210000000000000_00
+00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
+0000000FB77C672B 422F6EF8CE560000_00
+0000000800000000 4220000000000000_00
+08003FFDFFFFFFFE 43A0007FFBFFFFFF_01
+0000000000001B78 40BB780000000000_00
+0000001000000000 4230000000000000_00
+FF7FFFFFFFEFDFFF C360000000020401_01
+0000000000000071 405C400000000000_00
+0000002000000000 4240000000000000_00
+000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86 C05E800000000000_00
+0000004000000000 4250000000000000_00
+0800000000040800 43A0000000000810_00
+FFF8A60D9E19F17E C31D67C987983A08_00
+0000008000000000 4260000000000000_00
+000077FFF0000000 42DDFFFC00000000_00
+FFFFFFFFF7506DBA C1A15F248C000000_00
+0000010000000000 4270000000000000_00
+FFFFFFFFFFFEFBF7 C0F0409000000000_00
+FFFFFFFFFEA42AC9 C175BD5370000000_00
+0000020000000000 4280000000000000_00
+0000107FFFFFDFFD 42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89 C33855C0D4253377_00
+0000040000000000 4290000000000000_00
+FFF8040000040000 C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+0000080000000000 42A0000000000000_00
+FFFF80000800001F C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9 C3004BF1099291B8_00
+0000100000000000 42B0000000000000_00
+FFFFFEFFFFE0007F C2700001FFF81000_00
+FFFFFFFFFFFFCFBE C0C8210000000000_00
+0000200000000000 42C0000000000000_00
+0000000901FFFFFD 422203FFFFFA0000_00
+FEC01FECA24DE1B0 C373FE0135DB21E5_00
+0000400000000000 42D0000000000000_00
+F7FFFFFFDFFF7FFF C3A0000000400101_01
+F858A66761669936 C39E9D66627A659C_01
+0000800000000000 42E0000000000000_00
+FFFEFF800000003E C2F007FFFFFFFC20_00
+F716EA43FAC45C97 C3A1D22B780A7747_01
+0001000000000000 42F0000000000000_00
+FFFFFFFFFFFFFFC6 C04D000000000000_00
+0024D70EC7661FD8 43426B8763B30FEC_00
+0002000000000000 4300000000000000_00
+C07FFFFFFFFFFFFE C3CFC00000000001_01
+FFD956DBD0AEE817 C343549217A88BF5_01
+0004000000000000 4310000000000000_00
+020003EFFFFFFFFE 4380001F7FFFFFFF_01
+FFFFFFFFFFFF4300 C0E7A00000000000_00
+0008000000000000 4320000000000000_00
+4000000004002000 43D0000000010008_00
+C12EDF40F41F6021 C3CF68905F85F050_01
+0010000000000000 4330000000000000_00
+FF9000000000001D C35BFFFFFFFFFFF9_01
+FFFFFFF83DE950F6 C21F085ABC280000_00
+0020000000000000 4340000000000000_00
+800003FFFFFC0000 C3DFFFFF00000100_00
+FE2B59CB3A604D69 C37D4A634C59FB2A_01
+0040000000000000 4350000000000000_00
+7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFEF_01
+000000A37C210862 42646F84210C4000_00
+0080000000000000 4360000000000000_00
+0002000002000002 4300000010000010_00
+FFFFB65CD8617789 C2D268C9E7A21DC0_00
+0100000000000000 4370000000000000_00
+00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D C0AFC60000000000_00
+0200000000000000 4380000000000000_00
+1000008000003FFF 43B000008000003F_01
+000000000D098D19 41AA131A32000000_00
+0400000000000000 4390000000000000_00
+03FFFFFFFFFFF5FF 438FFFFFFFFFFFAF_01
+000006B3BD2C7BEF 429ACEF4B1EFBC00_00
+0800000000000000 43A0000000000000_00
+00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
+1000000000000000 43B0000000000000_00
+001FFFC000000FFD 433FFFC000000FFD_00
+FFFFFFFFFFFFFF21 C06BE00000000000_00
+2000000000000000 43C0000000000000_00
+0000000041DFFFFF 41D077FFFFC00000_00
+FFFFFFFFFC648262 C18CDBECF0000000_00
+4000000000000000 43D0000000000000_00
+C0001FFFFFFFFFFB C3CFFFF000000001_01
+FFFFFF7353AC45D2 C261958A7745C000_00
+8000000000000000 C3E0000000000000_00
+FFFFFFFFFFE7EFFF C138100100000000_00
+0000000000A1202D 41642405A0000000_00
+C000000000000000 C3D0000000000000_00
+FFFFFFFFFFFF5F7F C0E4102000000000_00
+000000000040CA70 4150329C00000000_00
+E000000000000000 C3C0000000000000_00
+0000200201FFFFFE 42C00100FFFFFF00_00
+00000003B55D87D4 420DAAEC3EA00000_00
+F000000000000000 C3B0000000000000_00
+FF80000DFFFFFFFF C35FFFFC80000001_01
+000000010510FAEF 41F0510FAEF00000_00
+F800000000000000 C3A0000000000000_00
+0003FFF00000000F 430FFF8000000078_00
+000000000000724A 40DC928000000000_00
+FC00000000000000 C390000000000000_00
+FFFFFFDF80000002 C2403FFFFFFF0000_00
+0000000000000064 4059000000000000_00
+FE00000000000000 C380000000000000_00
+FEFFFFFFFFF800FE C370000000007FF1_01
+FFFFFFC2C6222702 C24E9CEEEC7F0000_00
+FF00000000000000 C370000000000000_00
+0000000408000002 4210200000080000_00
+000000E96DF1CB41 426D2DBE39682000_00
+FF80000000000000 C360000000000000_00
+007FFFFFFFFFF9FE 435FFFFFFFFFFE7F_01
+F727F174DEE7DC85 C3A1B01D16423047_01
+FFC0000000000000 C350000000000000_00
+8000000003FFFEFE C3DFFFFFFFFF0001_01
+FFFFFFFFFFF0BD5B C12E854A00000000_00
+FFE0000000000000 C340000000000000_00
+0BEFFFFFFFFFFFFF 43A7DFFFFFFFFFFF_01
+000000000002790C 4103C86000000000_00
+FFF0000000000000 C330000000000000_00
+FFFFFFFFFFEFFBFA C130040600000000_00
+000000169E75DF01 42369E75DF010000_00
+FFF8000000000000 C320000000000000_00
+00000007FEFFDFFF 421FFBFF7FFC0000_00
+000000000000000E 402C000000000000_00
+FFFC000000000000 C310000000000000_00
+0003FFFE0007FFFE 430FFFF0003FFFF0_00
+FFFFFFFFFFF28622 C12AF3BC00000000_00
+FFFE000000000000 C300000000000000_00
+FFFFFF7FFFFDF7FF C260000041002000_00
+00072F0EC496FE21 431CBC3B125BF884_00
+FFFF000000000000 C2F0000000000000_00
+DFBFFFFFFFFFFFFE C3C0200000000001_01
+0000000000FC1FCA 416F83F940000000_00
+FFFF800000000000 C2E0000000000000_00
+00000FFF800FFFFE 42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE C2E5CD636AC7A640_00
+FFFFC00000000000 C2D0000000000000_00
+00000002100007FD 420080003FE80000_00
+FFFFFFFFFFC2D8FE C14E938100000000_00
+FFFFE00000000000 C2C0000000000000_00
+000000000007FF6E 411FFDB800000000_00
+000000000001766E 40F766E000000000_00
+FFFFF00000000000 C2B0000000000000_00
+0040000400000002 4350000100000000_01
+0000000000007841 40DE104000000000_00
+FFFFF80000000000 C2A0000000000000_00
+3DFFFFFFFFFFFF7E 43CEFFFFFFFFFFFF_01
+FFFFFFE549E17E30 C23AB61E81D00000_00
+FFFFFC0000000000 C290000000000000_00
+FFFFFFFFFFFFFEE1 C071F00000000000_00
+FFFFFFFFFFFFFFE7 C039000000000000_00
+FFFFFE0000000000 C280000000000000_00
+000000000EFFFFDF 41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73 C061A00000000000_00
+FFFFFF0000000000 C270000000000000_00
+FD00000008000000 C387FFFFFFC00000_00
+000000000001DBB1 40FDBB1000000000_00
+FFFFFF8000000000 C260000000000000_00
+FFFFFFFFFFF8007F C11FFE0400000000_00
+FFFFFFFEFD10A515 C1F02EF5AEB00000_00
+FFFFFFC000000000 C250000000000000_00
+FFEFFFFFFFFFFFFE C330000000000002_00
+FAB02984F6283B6C C3953F59EC275F13_01
+FFFFFFE000000000 C240000000000000_00
+FFFFFFBC000001FE C250FFFFFF808000_00
+FEB087C6B9FE7FE0 C374F78394601802_00
+FFFFFFF000000000 C230000000000000_00
+FFF80001000007FE C31FFFFBFFFFE008_00
+00F2762EA6837956 436E4EC5D4D06F2A_01
+FFFFFFF800000000 C220000000000000_00
+FFF7E0FFFFFFFFFE C3203E0000000004_00
+00002E1175484626 42C708BAA4231300_00
+FFFFFFFC00000000 C210000000000000_00
+0000200020000FFE 42C000100007FF00_00
+000000000000068F 409A3C0000000000_00
+FFFFFFFE00000000 C200000000000000_00
+021FFFFFFFFBFFFF 4380FFFFFFFFDFFF_01
+FFFFFFFFFFFFFFF9 C01C000000000000_00
+FFFFFFFF00000000 C1F0000000000000_00
+FFFFFFD0000FFFFD C247FFF800018000_00
+000000BDF6658B83 4267BECCB1706000_00
+FFFFFFFF80000000 C1E0000000000000_00
+1000001FFDFFFFFF 43B000001FFDFFFF_01
+0000000000003B5B 40CDAD8000000000_00
+FFFFFFFFC0000000 C1D0000000000000_00
+FFFFFFBFFE0FFFFF C250007C00004000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+FFFFFFFFE0000000 C1C0000000000000_00
+FFFFFFFBF00007FF C2103FFFE0040000_00
+01E986274F48EAAD 437E986274F48EAA_01
+FFFFFFFFF0000000 C1B0000000000000_00
+1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A C0CA530000000000_00
+FFFFFFFFF8000000 C1A0000000000000_00
+7FF000000000FFFF 43DFFC000000003F_01
+00000003C2717FC3 420E138BFE180000_00
+FFFFFFFFFC000000 C190000000000000_00
+FFFFFFE00008001F C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA C130542600000000_00
+FFFFFFFFFE000000 C180000000000000_00
+0200000000000002 4380000000000000_01
+FFFFFFFFF8FDA53F C19C096B04000000_00
+FFFFFFFFFF000000 C170000000000000_00
+F6000003FFFFFFFE C3A3FFFFF8000001_01
+FFFFFFFFFFFFFFD0 C048000000000000_00
+FFFFFFFFFF800000 C160000000000000_00
+FFFFFFFFFFBFFF7E C150002080000000_00
+00000000EE0FEA62 41EDC1FD4C400000_00
+FFFFFFFFFFC00000 C150000000000000_00
+0000007FFF9FFFFD 425FFFE7FFFF4000_00
+00000037F35EDC1D 424BF9AF6E0E8000_00
+FFFFFFFFFFE00000 C140000000000000_00
+FFFFFFF7FDFFFF7D C220040001060000_00
+00000000000001AD 407AD00000000000_00
+FFFFFFFFFFF00000 C130000000000000_00
+FFFFFF0000100020 C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A 43C3F8B3FDE3FE2F_01
+FFFFFFFFFFF80000 C120000000000000_00
+003FFFFFFFFC0001 434FFFFFFFFE0000_01
+000E48F9F4EBD30E 432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000 C110000000000000_00
+DFFFFFFFFFFBFFFE C3C0000000000201_01
+FC91C23EE8C9424F C38B71EE08B9B5EE_01
+FFFFFFFFFFFE0000 C100000000000000_00
+F7DFFBFFFFFFFFFE C3A0400800000001_01
+000000002CAE080C 41C6570406000000_00
+FFFFFFFFFFFF0000 C0F0000000000000_00
+FFFFC00010000020 C2CFFFF7FFFFF000_00
+04D921F917B20E40 43936487E45EC839_00
+FFFFFFFFFFFF8000 C0E0000000000000_00
+F8000FFFFFFFFFFD C39FFFC000000001_01
+FFF17C566BC7D811 C32D075328704FDE_00
+FFFFFFFFFFFFC000 C0D0000000000000_00
+00000000000000FE 406FC00000000000_00
+FFF82AC14930D386 C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000 C0C0000000000000_00
+00000000000003FC 408FE00000000000_00
+000E62EC60E119FC 432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000 C0B0000000000000_00
+FFFFEFF7FF7FFFFE C2B0080080000200_00
+0E2B1ECF210EEDC5 43AC563D9E421DDB_01
+FFFFFFFFFFFFF800 C0A0000000000000_00
+00000000007FFF1F 415FFFC7C0000000_00
+FFFFFE534F5676F7 C27ACB0A98909000_00
+FFFFFFFFFFFFFC00 C090000000000000_00
+0000001004FFFFFD 423004FFFFFD0000_00
+0000035C939669F1 428AE49CB34F8800_00
+FFFFFFFFFFFFFE00 C080000000000000_00
+1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFD_01
+FFFFFFFFFFFFFF91 C05BC00000000000_00
+FFFFFFFFFFFFFF00 C070000000000000_00
+01FFFFFFFBFFEFFE 437FFFFFFFBFFEFF_01
+000000000000016E 4076E00000000000_00
+FFFFFFFFFFFFFF80 C060000000000000_00
+FFF7FFFFFFFFF7FD C320000000001006_00
+FFFFF8E2BCFAC553 C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0 C050000000000000_00
+FFFFFBFFFFFE0FFE C290000007C00800_00
+00000001A4E704BF 41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0 C040000000000000_00
+1400007FFFFFFFFD 43B400007FFFFFFF_01
+FFFFFFFC93B187B4 C20B6273C2600000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+40000000007FFFFD 43D0000000001FFF_01
+000000000067D468 4159F51A00000000_00
+FFFFFFFFFFFFFFF8 C020000000000000_00
+007FFEFFFFFBFFFE 435FFFBFFFFEFFFF_01
+FFFFFFE26CEC79F8 C23D931386080000_00
+FFFFFFFFFFFFFFFC C010000000000000_00
+00FFFFFF000000FF 436FFFFFE000001F_01
+FFFFFFFFE0D3983A C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE C000000000000000_00
+00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF BFF0000000000000_00
+000008000000027E 42A000000004FC00_00
+000000000000F4E8 40EE9D0000000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFF83FFDF C15F000840000000_00
+00000E11407887B2 42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+04000003FFFFFFF6 439000000FFFFFFF_01
+0000000000000513 40944C0000000000_00
+FFFFFFFFFFFFFFF7 C022000000000000_00
+BFFC00000000003E C3D0010000000000_01
+00000008D7BBB75B 4221AF776EB60000_00
+FFFFFFFFFFFFFFEF C031000000000000_00
+000FFFFBFFFC0000 432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23 C14952EE80000000_00
+FFFFFFFFFFFFFFDF C040800000000000_00
+FFBFDFFFBFFFFFFF C350080010000001_01
+000000000000007F 405FC00000000000_00
+FFFFFFFFFFFFFFBF C050400000000000_00
+00000007FF800003 421FFE00000C0000_00
+000000000002BB02 4105D81000000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEE7FF C0F1801000000000_00
+00264B2B9BAD0DA2 43432595CDD686D1_00
+FFFFFFFFFFFFFEFF C070100000000000_00
+0000000000100803 4130080300000000_00
+FF9B1DCB9F857D5E C359388D181EA0A9_01
+FFFFFFFFFFFFFDFF C080080000000000_00
+FFFFFFBFFFFFEFEE C250000004048000_00
+F6FD7542899C1C6F C3A205157AECC7C8_01
+FFFFFFFFFFFFFBFF C090040000000000_00
+FF800000004001FF C35FFFFFFFEFFF81_01
+0000000002BE4932 4185F24990000000_00
+FFFFFFFFFFFFF7FF C0A0020000000000_00
+00001004000FFFFE 42B004000FFFFE00_00
+FFFFFF9DAA0123E0 C258957FB7080000_00
+FFFFFFFFFFFFEFFF C0B0010000000000_00
+00000001FDFFFDFE 41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF C0C0008000000000_00
+FE0FE00000000000 C37F020000000000_00
+0779ED944A4E2779 439DE7B65129389D_01
+FFFFFFFFFFFFBFFF C0D0004000000000_00
+FBFFFE0400000000 C3900007F0000000_00
+0000010127E03666 4270127E03666000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+FFFFF0200000FFFE C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEFFFF C0F0001000000000_00
+FFEFFE0000080000 C33001FFFFF80000_00
+FFFFFFFFFD3354EA C1866558B0000000_00
+FFFFFFFFFFFDFFFF C100000800000000_00
+003FF0000003FFFE 434FF8000001FFFF_00
+0000006375B23F7B 4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF C110000400000000_00
+000407FFFFFFFFF6 43101FFFFFFFFFD8_00
+0000000092117F38 41E2422FE7000000_00
+FFFFFFFFFFF7FFFF C120000200000000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+00000000000008BE 40A17C0000000000_00
+FFFFFFFFFFEFFFFF C130000100000000_00
+004000020FFFFFFF 4350000083FFFFFF_01
+FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF C140000080000000_00
+00FFFFFFFFFFFFFD 436FFFFFFFFFFFFF_01
+00000023C2C6F284 4241E16379420000_00
+FFFFFFFFFFBFFFFF C150000040000000_00
+FFFDDFFFFFFFFFFD C301000000000018_00
+00000000746356C4 41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF C160000020000000_00
+010000000000BFFF 4370000000000BFF_01
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFEFFFFFF C170000010000000_00
+FFFFBF7FFBFFFFFE C2D0200100000080_00
+00000006386CE889 4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF C180000008000000_00
+F00000F7FFFFFFFF C3AFFFFE10000001_01
+FFFDFC53090C46A4 C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+0000000000800047 41600008E0000000_00
+FFFFFFFFD693872E C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF C1A0000002000000_00
+000000007FBFFBFF 41DFEFFEFFC00000_00
+00000026A7845E35 424353C22F1A8000_00
+FFFFFFFFEFFFFFFF C1B0000001000000_00
+FFFFFFDFFFFFFBFD C240000002018000_00
+000000001433D14C 41B433D14C000000_00
+FFFFFFFFDFFFFFFF C1C0000000800000_00
+0001FFFFFFE0000E 42FFFFFFFE0000E0_00
+F0F23E8068D3D84A C3AE1B82FF2E5850_01
+FFFFFFFFBFFFFFFF C1D0000000400000_00
+F7FFBFFFFFFFBFFF C3A0008000000081_01
+FFFFBD29B7459087 C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF C1E0000000200000_00
+FFFFFFF8FFFFBFFF C21C000100040000_00
+FFFFFFFFFFEDDC06 C13223FA00000000_00
+FFFFFFFEFFFFFFFF C1F0000000100000_00
+FFFFFFF80001FFFF C21FFFF800040000_00
+0000000000002FF9 40C7FC8000000000_00
+FFFFFFFDFFFFFFFF C200000000080000_00
+004000040000FFFF 4350000100003FFF_01
+FFFFFFFFFFFFFFF1 C02E000000000000_00
+FFFFFFFBFFFFFFFF C210000000040000_00
+C0000000007FFFFA C3CFFFFFFFFFC001_01
+FFFFFFFFFE053E2B C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF C220000000020000_00
+7FFE000007FFFFFF 43DFFF800001FFFF_01
+000000000000000D 402A000000000000_00
+FFFFFFEFFFFFFFFF C230000000010000_00
+F80000000001007E C39FFFFFFFFFFBFF_01
+FFFFED48424AD9D6 C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF C240000000008000_00
+FFFFFE0001FEFFFF C27FFFE010001000_00
+000000000000013B 4073B00000000000_00
+FFFFFFBFFFFFFFFF C250000000004000_00
+0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
+4A16BD4128090C83 43D285AF504A0243_01
+FFFFFF7FFFFFFFFF C260000000002000_00
+00FFF7FFFF7FFFFE 436FFEFFFFEFFFFF_01
+0000000000000006 4018000000000000_00
+FFFFFEFFFFFFFFFF C270000000001000_00
+FBFFFFBFFFBFFFFF C390000100010001_01
+00000000000001BA 407BA00000000000_00
+FFFFFDFFFFFFFFFF C280000000000800_00
+0000000040000082 41D0000020800000_00
+FF07A2BF5B689F89 C36F0BA81492EC0F_01
+FFFFFBFFFFFFFFFF C290000000000400_00
+0000001FF8000008 423FF80000080000_00
+F87CAA7DE672DE8B C39E0D5608663486_01
+FFFFF7FFFFFFFFFF C2A0000000000200_00
+07FFF80000000002 439FFFE000000000_01
+0000000010A1E5B8 41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF C2B0000000000100_00
+F7FFFFE00007FFFF C3A000003FFFF001_01
+FFFFFFFFFFF6ADFC C122A40800000000_00
+FFFFDFFFFFFFFFFF C2C0000000000080_00
+FFFFFF03FFFFFFC0 C26F800000080000_00
+EA579475948F0032 C3B5A86B8A6B7100_01
+FFFFBFFFFFFFFFFF C2D0000000000040_00
+FC00000000003FF6 C38FFFFFFFFFFE01_01
+002E677AC313BF60 434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF C2E0000000000020_00
+02000007FF7FFFFF 438000003FFBFFFF_01
+0000000E999639F1 422D332C73E20000_00
+FFFEFFFFFFFFFFFF C2F0000000000010_00
+FFFF83FFFFFFFFBE C2DF000000001080_00
+000000000001537D 40F537D000000000_00
+FFFDFFFFFFFFFFFF C300000000000008_00
+EFFFFFC00000003D C3B0000040000000_01
+FFFFFFF21FEDFD35 C22BC02405960000_00
+FFFBFFFFFFFFFFFF C310000000000004_00
+FFFFFFF0000007FE C22FFFFFF0040000_00
+FFFFFFFFFFDE0839 C140FBE380000000_00
+FFF7FFFFFFFFFFFF C320000000000002_00
+0000007FFFE000FF 425FFFF8003FC000_00
+FFFFFFFF79F30F48 C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF C330000000000001_00
+FFFFFC13FFFFFFFD C28F600000001800_00
+0000000000001B85 40BB850000000000_00
+FFDFFFFFFFFFFFFF C340000000000001_01
+000008000007FFFE 42A000000FFFFC00_00
+12DB4409E5AE87E6 43B2DB4409E5AE87_01
+FFBFFFFFFFFFFFFF C350000000000001_01
+FFFFFFFFFFF7BFEE C120802400000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FF7FFFFFFFFFFFFF C360000000000001_01
+000000001040FFFE 41B040FFFE000000_00
+00000909A09C13D3 42A213413827A600_00
+FEFFFFFFFFFFFFFF C370000000000001_01
+FFFFFF01FFFFFF7F C26FC00000102000_00
+FFFFFF72E7D2575D C261A305B5146000_00
+FDFFFFFFFFFFFFFF C380000000000001_01
+FFFFFFFFFFFEFFDB C0F0025000000000_00
+0000000000000017 4037000000000000_00
+FBFFFFFFFFFFFFFF C390000000000001_01
+100000001FFFFFF6 43B00000001FFFFF_01
+000000114B12EF51 42314B12EF510000_00
+F7FFFFFFFFFFFFFF C3A0000000000001_01
+0407FFFFFFFFFEFF 43901FFFFFFFFFFB_01
+FFFFFF769F3A5C2C C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF C3B0000000000001_01
+FFFFFFFDF7FFFFFD C200400000180000_00
+FFFFFFFFFFFFFFF2 C02C000000000000_00
+DFFFFFFFFFFFFFFF C3C0000000000001_01
+FFFFFFFFFE0007FF C17FFF8010000000_00
+000000000000001E 403E000000000000_00
+BFFFFFFFFFFFFFFF C3D0000000000001_01
+FFF800000009FFFF C31FFFFFFFD80004_00
+0000000000007AA4 40DEA90000000000_00
+7FFFFFFFFFFFFFFF 43DFFFFFFFFFFFFF_01
+4080000000FFFFFF 43D0200000003FFF_01
+000000000DE7601D 41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF 43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE C348000000200001_00
+FFFFFFFFFFFFFFCA C04B000000000000_00
+1FFFFFFFFFFFFFFF 43BFFFFFFFFFFFFF_01
+000080400000003F 42E00800000007E0_00
+00000000001F75A5 413F75A500000000_00
+0FFFFFFFFFFFFFFF 43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE C230000030020000_00
+FFFFFEE775887420 C27188A778BE0000_00
+07FFFFFFFFFFFFFF 439FFFFFFFFFFFFF_01
+00000000000801FE 412003FC00000000_00
+0000000000213FF1 41409FF880000000_00
+03FFFFFFFFFFFFFF 438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE 439FFBFFFFFFFFFF_01
+0000000000000004 4010000000000000_00
+01FFFFFFFFFFFFFF 437FFFFFFFFFFFFF_01
+0000000820000003 4220400000060000_00
+FFFFFFF9AD105214 C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF 436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE C2AFE00000008400_00
+FFFFFFFFFFCC48E7 C149DB8C80000000_00
+007FFFFFFFFFFFFF 435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB C16E8B26A0000000_00
+003FFFFFFFFFFFFF 434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF C260080000082000_00
+FFFFFFFFFFF24425 C12B77B600000000_00
+001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
+200000001FFBFFFF 43C00000000FFDFF_01
+FFFFFF4E7115EC53 C26631DD4275A000_00
+000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF C29FF00000010400_00
+FFFFFC2E539ADCFE C28E8D6329181000_00
+0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+00000055084732F3 42554211CCBCC000_00
+0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00 C3D0002000000001_01
+FFFFFFFFFFFF8543 C0DEAF4000000000_00
+0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
+0000001FFBFFE000 423FFBFFE0000000_00
+FFFFFFFFFFFE491B C0FB6E5000000000_00
+0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
+FC00200000001FFE C38FFEFFFFFFFF01_01
+FFFFF16898822A24 C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE 43CFFF81FFFFFFFF_01
+FFFFFF8FFE18C7BF C25C0079CE104000_00
+00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD C270001000003000_00
+00F03620C1266ED9 436E06C41824CDDB_01
+00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF C3D0204000000001_01
+FFFFFFFFFFFFFFD5 C045800000000000_00
+00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE C31000001FF00008_00
+0000000000068684 411A1A1000000000_00
+000007FFFFFFFFFF 429FFFFFFFFFFC00_00
+DFFFFFE00000001E C3C0000010000000_01
+FFFFFFFFFFFFECF5 C0B30B0000000000_00
+000003FFFFFFFFFF 428FFFFFFFFFF800_00
+FFFF00400000FFFF C2EFF7FFFFE00020_00
+0000000000000002 4000000000000000_00
+000001FFFFFFFFFF 427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE C390000000000109_01
+0000000000000BC9 40A7920000000000_00
+000000FFFFFFFFFF 426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE C3DFE00000000009_01
+FFC274E35A70CD76 C34EC58E52C79945_00
+0000007FFFFFFFFF 425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD 43AFFFFFFFFDFFFF_01
+FFFFFFFF00E73AFC C1EFE318A0800000_00
+0000003FFFFFFFFF 424FFFFFFFFF8000_00
+FFC000000001000E C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9 C0FEA17000000000_00
+0000001FFFFFFFFF 423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
+0000000000000033 4049800000000000_00
+0000000FFFFFFFFF 422FFFFFFFFE0000_00
+000000001FFFBFFF 41BFFFBFFF000000_00
+FFFFFFEE6B141E1B C23194EBE1E50000_00
+00000007FFFFFFFF 421FFFFFFFFC0000_00
+FFFFFFFFF60007FF C1A3FFF002000000_00
+00000001AB310BA6 41FAB310BA600000_00
+00000003FFFFFFFF 420FFFFFFFF80000_00
+0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195 C0ACD60000000000_00
+00000001FFFFFFFF 41FFFFFFFFF00000_00
+FFFFFFFF8000000B C1DFFFFFFD400000_00
+00000019BA8D5559 4239BA8D55590000_00
+00000000FFFFFFFF 41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9 C390040000000001_01
+FFFFFFB6F062822D C25243E75F74C000_00
+000000007FFFFFFF 41DFFFFFFFC00000_00
+0001000000000082 42F0000000000820_00
+01CEAD9E2FB104A4 437CEAD9E2FB104A_01
+000000003FFFFFFF 41CFFFFFFF800000_00
+000003FFFFFFFF7C 428FFFFFFFFBE000_00
+FFFFFFFFFD681E78 C184BF0C40000000_00
+000000001FFFFFFF 41BFFFFFFF000000_00
+00002000400001FF 42C000200000FF80_00
+0000000000000018 4038000000000000_00
+000000000FFFFFFF 41AFFFFFFE000000_00
+3FFF80000000003E 43CFFFC000000000_01
+FFFFFFFFFFFFFF95 C05AC00000000000_00
+0000000007FFFFFF 419FFFFFFC000000_00
+010000BFFFFFFFFF 4370000BFFFFFFFF_01
+0000001697087B19 423697087B190000_00
+0000000003FFFFFF 418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD C390000000004401_01
+0000000E64BDFC55 422CC97BF8AA0000_00
+0000000001FFFFFF 417FFFFFF0000000_00
+FC00000001FFFFFE C38FFFFFFFF00001_01
+FFFED156A62AB849 C2F2EA959D547B70_00
+0000000000FFFFFF 416FFFFFE0000000_00
+FFFFFFF83FEFFFFD C21F0040000C0000_00
+00015354EAE7C259 42F5354EAE7C2590_00
+00000000007FFFFF 415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFF0F4DF3C75 C22E164187160000_00
+00000000003FFFFF 414FFFFF80000000_00
+FFFA000000001FFF C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000001FFFFF 413FFFFF00000000_00
+FFFFFFFFFF7FFE40 C160003800000000_00
+FFFFFFDB5433CB9B C24255E61A328000_00
+00000000000FFFFF 412FFFFE00000000_00
+FFFFFDFFDFFDFFFD C280010010001800_00
+FFFFFFFFFFDEAE1F C140A8F080000000_00
+000000000007FFFF 411FFFFC00000000_00
+FFFFFFFFF0080006 C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7 C1F88CA213900000_00
+000000000003FFFF 410FFFF800000000_00
+00000001FBFFFFFF 41FFBFFFFFF00000_00
+000003757D8B12ED 428BABEC58976800_00
+000000000001FFFF 40FFFFF000000000_00
+FFFFFE07F7FFFFFF C27F808000001000_00
+00000A654064E046 42A4CA80C9C08C00_00
+000000000000FFFF 40EFFFE000000000_00
+08000000000017FF 43A000000000002F_01
+FFFFFFFFFFFFFFE7 C039000000000000_00
+0000000000007FFF 40DFFFC000000000_00
+07FFFFFFFFFFFDF6 439FFFFFFFFFFFF7_01
+FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
+0000000000003FFF 40CFFF8000000000_00
+0000300004000000 42C8000200000000_00
+FFFFFFF70B77F34F C221E91019620000_00
+0000000000001FFF 40BFFF0000000000_00
+FFFFFF80006FFFFE C25FFFE400008000_00
+0000013EB4D67EC8 4273EB4D67EC8000_00
+0000000000000FFF 40AFFE0000000000_00
+BFFFDFFFFBFFFFFF C3D0000800010001_01
+0005CEAF34EA1DC7 43173ABCD3A8771C_00
+00000000000007FF 409FFC0000000000_00
+00004800007FFFFD 42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000000003FF 408FF80000000000_00
+0000000200001000 4200000080000000_00
+00000000000360D0 410B068000000000_00
+00000000000001FF 407FF00000000000_00
+01003FFFFFFFFFFC 437003FFFFFFFFFF_01
+00C000708FF1BA51 4368000E11FE374A_01
+00000000000000FF 406FE00000000000_00
+F802000003FFFFFF C39FF7FFFFF00001_01
+0F9E07DCC0BDC061 43AF3C0FB9817B80_01
+000000000000007F 405FC00000000000_00
+03FF0000000000FF 438FF80000000007_01
+FFFFFFE1B9B2A079 C23E464D5F870000_00
+000000000000003F 404F800000000000_00
+FFF80000000080FF C31FFFFFFFFDFC04_00
+00000000001EB5B4 413EB5B400000000_00
+000000000000001F 403F000000000000_00
+000000000077FBFE 415DFEFF80000000_00
+00000000005AC607 4156B181C0000000_00
+000000000000000F 402E000000000000_00
+FFFFFFFEF80000FF C1F07FFFF0100000_00
+000005C5B9D66984 429716E759A61000_00
+0000000000000007 401C000000000000_00
+C001FFFFFFF00000 C3CFFF0000000800_00
+00001D06B372AA06 42BD06B372AA0600_00
+0000000000000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rne.tv b/wally-pipelined/testbench/fp/i64_f64_rne.tv
new file mode 100644
index 000000000..ed6b0a3ac
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f64_rne.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 439FFFF7FFFFFFFE_01
+0000000032CC8B7A 41C96645BD000000_00
+0000000000000000 0000000000000000_00
+FFFFFFFFC0003FFE C1CFFFE001000000_00
+032C857F319EDE38 4389642BF98CF6F2_01
+0000000000000001 3FF0000000000000_00
+FFFFFBFFFFF8003E C29000001FFF0800_00
+00394C79B6D3007B 434CA63CDB69803E_01
+0000000000000002 4000000000000000_00
+FBFFFFF0000001FF C39000003FFFFFF8_01
+0000000001AE458D 417AE458D0000000_00
+0000000000000004 4010000000000000_00
+00040008000007FE 4310002000001FF8_00
+F9EB456140D88764 C39852EA7AFC9DE2_01
+0000000000000008 4020000000000000_00
+FFFFE400FFFFFFFE C2BBFF0000000200_00
+07DE834A248EDF36 439F7A0D28923B7D_01
+0000000000000010 4030000000000000_00
+00000003FF001FFF 420FF800FFF80000_00
+FFFFFFFFFFE385E2 C13C7A1E00000000_00
+0000000000000020 4040000000000000_00
+F0041FFFFFFFFFFF C3AFF7C000000000_01
+000000059EB1FD45 42167AC7F5140000_00
+0000000000000040 4050000000000000_00
+FFFFFFFFFFFCFFF9 C108003800000000_00
+FFFFFFFFFFFEDDFE C0F2202000000000_00
+0000000000000080 4060000000000000_00
+000000000003FF00 410FF80000000000_00
+00000000C89FF56B 41E913FEAD600000_00
+0000000000000100 4070000000000000_00
+000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEC0_01
+0000000000000200 4080000000000000_00
+FFFDF803FFFFFFFF C3003FE000000008_00
+FFFFFFFFFFF4766B C127132A00000000_00
+0000000000000400 4090000000000000_00
+0000080100000FFE 42A00200001FFC00_00
+000000000000000C 4028000000000000_00
+0000000000000800 40A0000000000000_00
+0048000000100000 4352000000040000_00
+FFE662A109109D0A C3399D5EF6EF62F6_00
+0000000000001000 40B0000000000000_00
+C000000037FFFFFE C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4 C03C000000000000_00
+0000000000002000 40C0000000000000_00
+F801000000100000 C39FFBFFFFFFC000_00
+FE114B79075F70EE C37EEB486F8A08F1_01
+0000000000004000 40D0000000000000_00
+100000000001003E 43B0000000000100_01
+00000000000003AC 408D600000000000_00
+0000000000008000 40E0000000000000_00
+200000FFFFFFF800 43C000007FFFFFFC_00
+00000044A3A3DBE5 425128E8F6F94000_00
+0000000000010000 40F0000000000000_00
+FFE0003EFFFFFFFF C33FFFC100000001_00
+FFFFFFFFFFFF1A91 C0ECADE000000000_00
+0000000000020000 4100000000000000_00
+FFFFF7C3FFFFFFFD C2A0780000000600_00
+0000000000003309 40C9848000000000_00
+0000000000040000 4110000000000000_00
+000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58 C065000000000000_00
+0000000000080000 4120000000000000_00
+FFFFFFDE01FFFFFE C240FF0000010000_00
+0000000000002980 40C4C00000000000_00
+0000000000100000 4130000000000000_00
+00000000FFF07FFF 41EFFE0FFFE00000_00
+000000000000005D 4057400000000000_00
+0000000000200000 4140000000000000_00
+000020FFDFFFFFFF 42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
+0000000000400000 4150000000000000_00
+E0000000003FFFDF C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C C280E1F109DE2000_00
+0000000000800000 4160000000000000_00
+FFFF00000BFFFFFD C2EFFFFE80000060_00
+000000000030FFBE 41487FDF00000000_00
+0000000001000000 4170000000000000_00
+FFFE000007FFEFFD C2FFFFFF80010030_00
+FFFFFFFFEFDEED86 C1B021127A000000_00
+0000000002000000 4180000000000000_00
+F3FFFFFFFFBFFFFE C3A8000000008000_01
+000000001DA3FF45 41BDA3FF45000000_00
+0000000004000000 4190000000000000_00
+FFFFFFFF00010007 C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54 C1F64E434AC00000_00
+0000000008000000 41A0000000000000_00
+00004000004001FE 42D0000010007F80_00
+F27DD19DE6563714 C3AB045CC4335392_01
+0000000010000000 41B0000000000000_00
+FFC00000004007FE C34FFFFFFFDFFC01_00
+000000000001A359 40FA359000000000_00
+0000000020000000 41C0000000000000_00
+0000000003C000FE 418E0007F0000000_00
+FFFFFFFFFE62EC20 C179D13E00000000_00
+0000000040000000 41D0000000000000_00
+000000003FFFFFFD 41CFFFFFFE800000_00
+000000000000285F 40C42F8000000000_00
+0000000080000000 41E0000000000000_00
+FFFFFFFFBFFFF00F C1D00003FC400000_00
+FFFFF836F99DBAA8 C29F241989156000_00
+0000000100000000 41F0000000000000_00
+00000020003FFEFE 4240001FFF7F0000_00
+0033466832042D47 4349A334190216A4_01
+0000000200000000 4200000000000000_00
+FFFFFFFFFFFFF887 C09DE40000000000_00
+00000000003829C8 414C14E400000000_00
+0000000400000000 4210000000000000_00
+00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
+0000000FB77C672B 422F6EF8CE560000_00
+0000000800000000 4220000000000000_00
+08003FFDFFFFFFFE 43A0007FFC000000_01
+0000000000001B78 40BB780000000000_00
+0000001000000000 4230000000000000_00
+FF7FFFFFFFEFDFFF C360000000020400_01
+0000000000000071 405C400000000000_00
+0000002000000000 4240000000000000_00
+000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86 C05E800000000000_00
+0000004000000000 4250000000000000_00
+0800000000040800 43A0000000000810_00
+FFF8A60D9E19F17E C31D67C987983A08_00
+0000008000000000 4260000000000000_00
+000077FFF0000000 42DDFFFC00000000_00
+FFFFFFFFF7506DBA C1A15F248C000000_00
+0000010000000000 4270000000000000_00
+FFFFFFFFFFFEFBF7 C0F0409000000000_00
+FFFFFFFFFEA42AC9 C175BD5370000000_00
+0000020000000000 4280000000000000_00
+0000107FFFFFDFFD 42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89 C33855C0D4253377_00
+0000040000000000 4290000000000000_00
+FFF8040000040000 C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+0000080000000000 42A0000000000000_00
+FFFF80000800001F C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9 C3004BF1099291B8_00
+0000100000000000 42B0000000000000_00
+FFFFFEFFFFE0007F C2700001FFF81000_00
+FFFFFFFFFFFFCFBE C0C8210000000000_00
+0000200000000000 42C0000000000000_00
+0000000901FFFFFD 422203FFFFFA0000_00
+FEC01FECA24DE1B0 C373FE0135DB21E5_00
+0000400000000000 42D0000000000000_00
+F7FFFFFFDFFF7FFF C3A0000000400100_01
+F858A66761669936 C39E9D66627A659B_01
+0000800000000000 42E0000000000000_00
+FFFEFF800000003E C2F007FFFFFFFC20_00
+F716EA43FAC45C97 C3A1D22B780A7747_01
+0001000000000000 42F0000000000000_00
+FFFFFFFFFFFFFFC6 C04D000000000000_00
+0024D70EC7661FD8 43426B8763B30FEC_00
+0002000000000000 4300000000000000_00
+C07FFFFFFFFFFFFE C3CFC00000000000_01
+FFD956DBD0AEE817 C343549217A88BF4_01
+0004000000000000 4310000000000000_00
+020003EFFFFFFFFE 4380001F80000000_01
+FFFFFFFFFFFF4300 C0E7A00000000000_00
+0008000000000000 4320000000000000_00
+4000000004002000 43D0000000010008_00
+C12EDF40F41F6021 C3CF68905F85F050_01
+0010000000000000 4330000000000000_00
+FF9000000000001D C35BFFFFFFFFFFF9_01
+FFFFFFF83DE950F6 C21F085ABC280000_00
+0020000000000000 4340000000000000_00
+800003FFFFFC0000 C3DFFFFF00000100_00
+FE2B59CB3A604D69 C37D4A634C59FB29_01
+0040000000000000 4350000000000000_00
+7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFF0_01
+000000A37C210862 42646F84210C4000_00
+0080000000000000 4360000000000000_00
+0002000002000002 4300000010000010_00
+FFFFB65CD8617789 C2D268C9E7A21DC0_00
+0100000000000000 4370000000000000_00
+00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D C0AFC60000000000_00
+0200000000000000 4380000000000000_00
+1000008000003FFF 43B0000080000040_01
+000000000D098D19 41AA131A32000000_00
+0400000000000000 4390000000000000_00
+03FFFFFFFFFFF5FF 438FFFFFFFFFFFB0_01
+000006B3BD2C7BEF 429ACEF4B1EFBC00_00
+0800000000000000 43A0000000000000_00
+00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
+1000000000000000 43B0000000000000_00
+001FFFC000000FFD 433FFFC000000FFD_00
+FFFFFFFFFFFFFF21 C06BE00000000000_00
+2000000000000000 43C0000000000000_00
+0000000041DFFFFF 41D077FFFFC00000_00
+FFFFFFFFFC648262 C18CDBECF0000000_00
+4000000000000000 43D0000000000000_00
+C0001FFFFFFFFFFB C3CFFFF000000000_01
+FFFFFF7353AC45D2 C261958A7745C000_00
+8000000000000000 C3E0000000000000_00
+FFFFFFFFFFE7EFFF C138100100000000_00
+0000000000A1202D 41642405A0000000_00
+C000000000000000 C3D0000000000000_00
+FFFFFFFFFFFF5F7F C0E4102000000000_00
+000000000040CA70 4150329C00000000_00
+E000000000000000 C3C0000000000000_00
+0000200201FFFFFE 42C00100FFFFFF00_00
+00000003B55D87D4 420DAAEC3EA00000_00
+F000000000000000 C3B0000000000000_00
+FF80000DFFFFFFFF C35FFFFC80000000_01
+000000010510FAEF 41F0510FAEF00000_00
+F800000000000000 C3A0000000000000_00
+0003FFF00000000F 430FFF8000000078_00
+000000000000724A 40DC928000000000_00
+FC00000000000000 C390000000000000_00
+FFFFFFDF80000002 C2403FFFFFFF0000_00
+0000000000000064 4059000000000000_00
+FE00000000000000 C380000000000000_00
+FEFFFFFFFFF800FE C370000000007FF0_01
+FFFFFFC2C6222702 C24E9CEEEC7F0000_00
+FF00000000000000 C370000000000000_00
+0000000408000002 4210200000080000_00
+000000E96DF1CB41 426D2DBE39682000_00
+FF80000000000000 C360000000000000_00
+007FFFFFFFFFF9FE 435FFFFFFFFFFE80_01
+F727F174DEE7DC85 C3A1B01D16423047_01
+FFC0000000000000 C350000000000000_00
+8000000003FFFEFE C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B C12E854A00000000_00
+FFE0000000000000 C340000000000000_00
+0BEFFFFFFFFFFFFF 43A7E00000000000_01
+000000000002790C 4103C86000000000_00
+FFF0000000000000 C330000000000000_00
+FFFFFFFFFFEFFBFA C130040600000000_00
+000000169E75DF01 42369E75DF010000_00
+FFF8000000000000 C320000000000000_00
+00000007FEFFDFFF 421FFBFF7FFC0000_00
+000000000000000E 402C000000000000_00
+FFFC000000000000 C310000000000000_00
+0003FFFE0007FFFE 430FFFF0003FFFF0_00
+FFFFFFFFFFF28622 C12AF3BC00000000_00
+FFFE000000000000 C300000000000000_00
+FFFFFF7FFFFDF7FF C260000041002000_00
+00072F0EC496FE21 431CBC3B125BF884_00
+FFFF000000000000 C2F0000000000000_00
+DFBFFFFFFFFFFFFE C3C0200000000000_01
+0000000000FC1FCA 416F83F940000000_00
+FFFF800000000000 C2E0000000000000_00
+00000FFF800FFFFE 42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE C2E5CD636AC7A640_00
+FFFFC00000000000 C2D0000000000000_00
+00000002100007FD 420080003FE80000_00
+FFFFFFFFFFC2D8FE C14E938100000000_00
+FFFFE00000000000 C2C0000000000000_00
+000000000007FF6E 411FFDB800000000_00
+000000000001766E 40F766E000000000_00
+FFFFF00000000000 C2B0000000000000_00
+0040000400000002 4350000100000000_01
+0000000000007841 40DE104000000000_00
+FFFFF80000000000 C2A0000000000000_00
+3DFFFFFFFFFFFF7E 43CF000000000000_01
+FFFFFFE549E17E30 C23AB61E81D00000_00
+FFFFFC0000000000 C290000000000000_00
+FFFFFFFFFFFFFEE1 C071F00000000000_00
+FFFFFFFFFFFFFFE7 C039000000000000_00
+FFFFFE0000000000 C280000000000000_00
+000000000EFFFFDF 41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73 C061A00000000000_00
+FFFFFF0000000000 C270000000000000_00
+FD00000008000000 C387FFFFFFC00000_00
+000000000001DBB1 40FDBB1000000000_00
+FFFFFF8000000000 C260000000000000_00
+FFFFFFFFFFF8007F C11FFE0400000000_00
+FFFFFFFEFD10A515 C1F02EF5AEB00000_00
+FFFFFFC000000000 C250000000000000_00
+FFEFFFFFFFFFFFFE C330000000000002_00
+FAB02984F6283B6C C3953F59EC275F12_01
+FFFFFFE000000000 C240000000000000_00
+FFFFFFBC000001FE C250FFFFFF808000_00
+FEB087C6B9FE7FE0 C374F78394601802_00
+FFFFFFF000000000 C230000000000000_00
+FFF80001000007FE C31FFFFBFFFFE008_00
+00F2762EA6837956 436E4EC5D4D06F2B_01
+FFFFFFF800000000 C220000000000000_00
+FFF7E0FFFFFFFFFE C3203E0000000004_00
+00002E1175484626 42C708BAA4231300_00
+FFFFFFFC00000000 C210000000000000_00
+0000200020000FFE 42C000100007FF00_00
+000000000000068F 409A3C0000000000_00
+FFFFFFFE00000000 C200000000000000_00
+021FFFFFFFFBFFFF 4380FFFFFFFFE000_01
+FFFFFFFFFFFFFFF9 C01C000000000000_00
+FFFFFFFF00000000 C1F0000000000000_00
+FFFFFFD0000FFFFD C247FFF800018000_00
+000000BDF6658B83 4267BECCB1706000_00
+FFFFFFFF80000000 C1E0000000000000_00
+1000001FFDFFFFFF 43B000001FFE0000_01
+0000000000003B5B 40CDAD8000000000_00
+FFFFFFFFC0000000 C1D0000000000000_00
+FFFFFFBFFE0FFFFF C250007C00004000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+FFFFFFFFE0000000 C1C0000000000000_00
+FFFFFFFBF00007FF C2103FFFE0040000_00
+01E986274F48EAAD 437E986274F48EAB_01
+FFFFFFFFF0000000 C1B0000000000000_00
+1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A C0CA530000000000_00
+FFFFFFFFF8000000 C1A0000000000000_00
+7FF000000000FFFF 43DFFC0000000040_01
+00000003C2717FC3 420E138BFE180000_00
+FFFFFFFFFC000000 C190000000000000_00
+FFFFFFE00008001F C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA C130542600000000_00
+FFFFFFFFFE000000 C180000000000000_00
+0200000000000002 4380000000000000_01
+FFFFFFFFF8FDA53F C19C096B04000000_00
+FFFFFFFFFF000000 C170000000000000_00
+F6000003FFFFFFFE C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0 C048000000000000_00
+FFFFFFFFFF800000 C160000000000000_00
+FFFFFFFFFFBFFF7E C150002080000000_00
+00000000EE0FEA62 41EDC1FD4C400000_00
+FFFFFFFFFFC00000 C150000000000000_00
+0000007FFF9FFFFD 425FFFE7FFFF4000_00
+00000037F35EDC1D 424BF9AF6E0E8000_00
+FFFFFFFFFFE00000 C140000000000000_00
+FFFFFFF7FDFFFF7D C220040001060000_00
+00000000000001AD 407AD00000000000_00
+FFFFFFFFFFF00000 C130000000000000_00
+FFFFFF0000100020 C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A 43C3F8B3FDE3FE30_01
+FFFFFFFFFFF80000 C120000000000000_00
+003FFFFFFFFC0001 434FFFFFFFFE0000_01
+000E48F9F4EBD30E 432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000 C110000000000000_00
+DFFFFFFFFFFBFFFE C3C0000000000200_01
+FC91C23EE8C9424F C38B71EE08B9B5EE_01
+FFFFFFFFFFFE0000 C100000000000000_00
+F7DFFBFFFFFFFFFE C3A0400800000000_01
+000000002CAE080C 41C6570406000000_00
+FFFFFFFFFFFF0000 C0F0000000000000_00
+FFFFC00010000020 C2CFFFF7FFFFF000_00
+04D921F917B20E40 43936487E45EC839_00
+FFFFFFFFFFFF8000 C0E0000000000000_00
+F8000FFFFFFFFFFD C39FFFC000000000_01
+FFF17C566BC7D811 C32D075328704FDE_00
+FFFFFFFFFFFFC000 C0D0000000000000_00
+00000000000000FE 406FC00000000000_00
+FFF82AC14930D386 C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000 C0C0000000000000_00
+00000000000003FC 408FE00000000000_00
+000E62EC60E119FC 432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000 C0B0000000000000_00
+FFFFEFF7FF7FFFFE C2B0080080000200_00
+0E2B1ECF210EEDC5 43AC563D9E421DDC_01
+FFFFFFFFFFFFF800 C0A0000000000000_00
+00000000007FFF1F 415FFFC7C0000000_00
+FFFFFE534F5676F7 C27ACB0A98909000_00
+FFFFFFFFFFFFFC00 C090000000000000_00
+0000001004FFFFFD 423004FFFFFD0000_00
+0000035C939669F1 428AE49CB34F8800_00
+FFFFFFFFFFFFFE00 C080000000000000_00
+1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFE_01
+FFFFFFFFFFFFFF91 C05BC00000000000_00
+FFFFFFFFFFFFFF00 C070000000000000_00
+01FFFFFFFBFFEFFE 437FFFFFFFBFFF00_01
+000000000000016E 4076E00000000000_00
+FFFFFFFFFFFFFF80 C060000000000000_00
+FFF7FFFFFFFFF7FD C320000000001006_00
+FFFFF8E2BCFAC553 C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0 C050000000000000_00
+FFFFFBFFFFFE0FFE C290000007C00800_00
+00000001A4E704BF 41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0 C040000000000000_00
+1400007FFFFFFFFD 43B4000080000000_01
+FFFFFFFC93B187B4 C20B6273C2600000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+40000000007FFFFD 43D0000000002000_01
+000000000067D468 4159F51A00000000_00
+FFFFFFFFFFFFFFF8 C020000000000000_00
+007FFEFFFFFBFFFE 435FFFBFFFFF0000_01
+FFFFFFE26CEC79F8 C23D931386080000_00
+FFFFFFFFFFFFFFFC C010000000000000_00
+00FFFFFF000000FF 436FFFFFE0000020_01
+FFFFFFFFE0D3983A C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE C000000000000000_00
+00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF BFF0000000000000_00
+000008000000027E 42A000000004FC00_00
+000000000000F4E8 40EE9D0000000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFF83FFDF C15F000840000000_00
+00000E11407887B2 42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+04000003FFFFFFF6 4390000010000000_01
+0000000000000513 40944C0000000000_00
+FFFFFFFFFFFFFFF7 C022000000000000_00
+BFFC00000000003E C3D0010000000000_01
+00000008D7BBB75B 4221AF776EB60000_00
+FFFFFFFFFFFFFFEF C031000000000000_00
+000FFFFBFFFC0000 432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23 C14952EE80000000_00
+FFFFFFFFFFFFFFDF C040800000000000_00
+FFBFDFFFBFFFFFFF C350080010000000_01
+000000000000007F 405FC00000000000_00
+FFFFFFFFFFFFFFBF C050400000000000_00
+00000007FF800003 421FFE00000C0000_00
+000000000002BB02 4105D81000000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEE7FF C0F1801000000000_00
+00264B2B9BAD0DA2 43432595CDD686D1_00
+FFFFFFFFFFFFFEFF C070100000000000_00
+0000000000100803 4130080300000000_00
+FF9B1DCB9F857D5E C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF C080080000000000_00
+FFFFFFBFFFFFEFEE C250000004048000_00
+F6FD7542899C1C6F C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF C090040000000000_00
+FF800000004001FF C35FFFFFFFEFFF80_01
+0000000002BE4932 4185F24990000000_00
+FFFFFFFFFFFFF7FF C0A0020000000000_00
+00001004000FFFFE 42B004000FFFFE00_00
+FFFFFF9DAA0123E0 C258957FB7080000_00
+FFFFFFFFFFFFEFFF C0B0010000000000_00
+00000001FDFFFDFE 41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF C0C0008000000000_00
+FE0FE00000000000 C37F020000000000_00
+0779ED944A4E2779 439DE7B65129389E_01
+FFFFFFFFFFFFBFFF C0D0004000000000_00
+FBFFFE0400000000 C3900007F0000000_00
+0000010127E03666 4270127E03666000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+FFFFF0200000FFFE C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEFFFF C0F0001000000000_00
+FFEFFE0000080000 C33001FFFFF80000_00
+FFFFFFFFFD3354EA C1866558B0000000_00
+FFFFFFFFFFFDFFFF C100000800000000_00
+003FF0000003FFFE 434FF8000001FFFF_00
+0000006375B23F7B 4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF C110000400000000_00
+000407FFFFFFFFF6 43101FFFFFFFFFD8_00
+0000000092117F38 41E2422FE7000000_00
+FFFFFFFFFFF7FFFF C120000200000000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+00000000000008BE 40A17C0000000000_00
+FFFFFFFFFFEFFFFF C130000100000000_00
+004000020FFFFFFF 4350000084000000_01
+FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF C140000080000000_00
+00FFFFFFFFFFFFFD 4370000000000000_01
+00000023C2C6F284 4241E16379420000_00
+FFFFFFFFFFBFFFFF C150000040000000_00
+FFFDDFFFFFFFFFFD C301000000000018_00
+00000000746356C4 41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF C160000020000000_00
+010000000000BFFF 4370000000000C00_01
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFEFFFFFF C170000010000000_00
+FFFFBF7FFBFFFFFE C2D0200100000080_00
+00000006386CE889 4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF C180000008000000_00
+F00000F7FFFFFFFF C3AFFFFE10000000_01
+FFFDFC53090C46A4 C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+0000000000800047 41600008E0000000_00
+FFFFFFFFD693872E C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF C1A0000002000000_00
+000000007FBFFBFF 41DFEFFEFFC00000_00
+00000026A7845E35 424353C22F1A8000_00
+FFFFFFFFEFFFFFFF C1B0000001000000_00
+FFFFFFDFFFFFFBFD C240000002018000_00
+000000001433D14C 41B433D14C000000_00
+FFFFFFFFDFFFFFFF C1C0000000800000_00
+0001FFFFFFE0000E 42FFFFFFFE0000E0_00
+F0F23E8068D3D84A C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF C1D0000000400000_00
+F7FFBFFFFFFFBFFF C3A0008000000080_01
+FFFFBD29B7459087 C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF C1E0000000200000_00
+FFFFFFF8FFFFBFFF C21C000100040000_00
+FFFFFFFFFFEDDC06 C13223FA00000000_00
+FFFFFFFEFFFFFFFF C1F0000000100000_00
+FFFFFFF80001FFFF C21FFFF800040000_00
+0000000000002FF9 40C7FC8000000000_00
+FFFFFFFDFFFFFFFF C200000000080000_00
+004000040000FFFF 4350000100004000_01
+FFFFFFFFFFFFFFF1 C02E000000000000_00
+FFFFFFFBFFFFFFFF C210000000040000_00
+C0000000007FFFFA C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF C220000000020000_00
+7FFE000007FFFFFF 43DFFF8000020000_01
+000000000000000D 402A000000000000_00
+FFFFFFEFFFFFFFFF C230000000010000_00
+F80000000001007E C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6 C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF C240000000008000_00
+FFFFFE0001FEFFFF C27FFFE010001000_00
+000000000000013B 4073B00000000000_00
+FFFFFFBFFFFFFFFF C250000000004000_00
+0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
+4A16BD4128090C83 43D285AF504A0243_01
+FFFFFF7FFFFFFFFF C260000000002000_00
+00FFF7FFFF7FFFFE 436FFEFFFFF00000_01
+0000000000000006 4018000000000000_00
+FFFFFEFFFFFFFFFF C270000000001000_00
+FBFFFFBFFFBFFFFF C390000100010000_01
+00000000000001BA 407BA00000000000_00
+FFFFFDFFFFFFFFFF C280000000000800_00
+0000000040000082 41D0000020800000_00
+FF07A2BF5B689F89 C36F0BA81492EC0F_01
+FFFFFBFFFFFFFFFF C290000000000400_00
+0000001FF8000008 423FF80000080000_00
+F87CAA7DE672DE8B C39E0D5608663486_01
+FFFFF7FFFFFFFFFF C2A0000000000200_00
+07FFF80000000002 439FFFE000000000_01
+0000000010A1E5B8 41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF C2B0000000000100_00
+F7FFFFE00007FFFF C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC C122A40800000000_00
+FFFFDFFFFFFFFFFF C2C0000000000080_00
+FFFFFF03FFFFFFC0 C26F800000080000_00
+EA579475948F0032 C3B5A86B8A6B7100_01
+FFFFBFFFFFFFFFFF C2D0000000000040_00
+FC00000000003FF6 C38FFFFFFFFFFE00_01
+002E677AC313BF60 434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF C2E0000000000020_00
+02000007FF7FFFFF 438000003FFC0000_01
+0000000E999639F1 422D332C73E20000_00
+FFFEFFFFFFFFFFFF C2F0000000000010_00
+FFFF83FFFFFFFFBE C2DF000000001080_00
+000000000001537D 40F537D000000000_00
+FFFDFFFFFFFFFFFF C300000000000008_00
+EFFFFFC00000003D C3B0000040000000_01
+FFFFFFF21FEDFD35 C22BC02405960000_00
+FFFBFFFFFFFFFFFF C310000000000004_00
+FFFFFFF0000007FE C22FFFFFF0040000_00
+FFFFFFFFFFDE0839 C140FBE380000000_00
+FFF7FFFFFFFFFFFF C320000000000002_00
+0000007FFFE000FF 425FFFF8003FC000_00
+FFFFFFFF79F30F48 C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF C330000000000001_00
+FFFFFC13FFFFFFFD C28F600000001800_00
+0000000000001B85 40BB850000000000_00
+FFDFFFFFFFFFFFFF C340000000000000_01
+000008000007FFFE 42A000000FFFFC00_00
+12DB4409E5AE87E6 43B2DB4409E5AE88_01
+FFBFFFFFFFFFFFFF C350000000000000_01
+FFFFFFFFFFF7BFEE C120802400000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FF7FFFFFFFFFFFFF C360000000000000_01
+000000001040FFFE 41B040FFFE000000_00
+00000909A09C13D3 42A213413827A600_00
+FEFFFFFFFFFFFFFF C370000000000000_01
+FFFFFF01FFFFFF7F C26FC00000102000_00
+FFFFFF72E7D2575D C261A305B5146000_00
+FDFFFFFFFFFFFFFF C380000000000000_01
+FFFFFFFFFFFEFFDB C0F0025000000000_00
+0000000000000017 4037000000000000_00
+FBFFFFFFFFFFFFFF C390000000000000_01
+100000001FFFFFF6 43B0000000200000_01
+000000114B12EF51 42314B12EF510000_00
+F7FFFFFFFFFFFFFF C3A0000000000000_01
+0407FFFFFFFFFEFF 43901FFFFFFFFFFC_01
+FFFFFF769F3A5C2C C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF C3B0000000000000_01
+FFFFFFFDF7FFFFFD C200400000180000_00
+FFFFFFFFFFFFFFF2 C02C000000000000_00
+DFFFFFFFFFFFFFFF C3C0000000000000_01
+FFFFFFFFFE0007FF C17FFF8010000000_00
+000000000000001E 403E000000000000_00
+BFFFFFFFFFFFFFFF C3D0000000000000_01
+FFF800000009FFFF C31FFFFFFFD80004_00
+0000000000007AA4 40DEA90000000000_00
+7FFFFFFFFFFFFFFF 43E0000000000000_01
+4080000000FFFFFF 43D0200000004000_01
+000000000DE7601D 41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF 43D0000000000000_01
+FFCFFFFFFFBFFFFE C348000000200001_00
+FFFFFFFFFFFFFFCA C04B000000000000_00
+1FFFFFFFFFFFFFFF 43C0000000000000_01
+000080400000003F 42E00800000007E0_00
+00000000001F75A5 413F75A500000000_00
+0FFFFFFFFFFFFFFF 43B0000000000000_01
+FFFFFFEFFFFFCFFE C230000030020000_00
+FFFFFEE775887420 C27188A778BE0000_00
+07FFFFFFFFFFFFFF 43A0000000000000_01
+00000000000801FE 412003FC00000000_00
+0000000000213FF1 41409FF880000000_00
+03FFFFFFFFFFFFFF 4390000000000000_01
+07FEFFFFFFFFFFEE 439FFC0000000000_01
+0000000000000004 4010000000000000_00
+01FFFFFFFFFFFFFF 4380000000000000_01
+0000000820000003 4220400000060000_00
+FFFFFFF9AD105214 C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF 4370000000000000_01
+FFFFF00FFFFFFFBE C2AFE00000008400_00
+FFFFFFFFFFCC48E7 C149DB8C80000000_00
+007FFFFFFFFFFFFF 4360000000000000_01
+00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB C16E8B26A0000000_00
+003FFFFFFFFFFFFF 4350000000000000_01
+FFFFFF7FBFFFFFBF C260080000082000_00
+FFFFFFFFFFF24425 C12B77B600000000_00
+001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
+200000001FFBFFFF 43C00000000FFE00_01
+FFFFFF4E7115EC53 C26631DD4275A000_00
+000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF C29FF00000010400_00
+FFFFFC2E539ADCFE C28E8D6329181000_00
+0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+00000055084732F3 42554211CCBCC000_00
+0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00 C3D0002000000000_01
+FFFFFFFFFFFF8543 C0DEAF4000000000_00
+0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
+0000001FFBFFE000 423FFBFFE0000000_00
+FFFFFFFFFFFE491B C0FB6E5000000000_00
+0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
+FC00200000001FFE C38FFEFFFFFFFF00_01
+FFFFF16898822A24 C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE 43CFFF8200000000_01
+FFFFFF8FFE18C7BF C25C0079CE104000_00
+00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD C270001000003000_00
+00F03620C1266ED9 436E06C41824CDDB_01
+00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF C3D0204000000000_01
+FFFFFFFFFFFFFFD5 C045800000000000_00
+00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE C31000001FF00008_00
+0000000000068684 411A1A1000000000_00
+000007FFFFFFFFFF 429FFFFFFFFFFC00_00
+DFFFFFE00000001E C3C0000010000000_01
+FFFFFFFFFFFFECF5 C0B30B0000000000_00
+000003FFFFFFFFFF 428FFFFFFFFFF800_00
+FFFF00400000FFFF C2EFF7FFFFE00020_00
+0000000000000002 4000000000000000_00
+000001FFFFFFFFFF 427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE C390000000000108_01
+0000000000000BC9 40A7920000000000_00
+000000FFFFFFFFFF 426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE C3DFE00000000008_01
+FFC274E35A70CD76 C34EC58E52C79945_00
+0000007FFFFFFFFF 425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD 43AFFFFFFFFE0000_01
+FFFFFFFF00E73AFC C1EFE318A0800000_00
+0000003FFFFFFFFF 424FFFFFFFFF8000_00
+FFC000000001000E C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9 C0FEA17000000000_00
+0000001FFFFFFFFF 423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
+0000000000000033 4049800000000000_00
+0000000FFFFFFFFF 422FFFFFFFFE0000_00
+000000001FFFBFFF 41BFFFBFFF000000_00
+FFFFFFEE6B141E1B C23194EBE1E50000_00
+00000007FFFFFFFF 421FFFFFFFFC0000_00
+FFFFFFFFF60007FF C1A3FFF002000000_00
+00000001AB310BA6 41FAB310BA600000_00
+00000003FFFFFFFF 420FFFFFFFF80000_00
+0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195 C0ACD60000000000_00
+00000001FFFFFFFF 41FFFFFFFFF00000_00
+FFFFFFFF8000000B C1DFFFFFFD400000_00
+00000019BA8D5559 4239BA8D55590000_00
+00000000FFFFFFFF 41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9 C390040000000000_01
+FFFFFFB6F062822D C25243E75F74C000_00
+000000007FFFFFFF 41DFFFFFFFC00000_00
+0001000000000082 42F0000000000820_00
+01CEAD9E2FB104A4 437CEAD9E2FB104A_01
+000000003FFFFFFF 41CFFFFFFF800000_00
+000003FFFFFFFF7C 428FFFFFFFFBE000_00
+FFFFFFFFFD681E78 C184BF0C40000000_00
+000000001FFFFFFF 41BFFFFFFF000000_00
+00002000400001FF 42C000200000FF80_00
+0000000000000018 4038000000000000_00
+000000000FFFFFFF 41AFFFFFFE000000_00
+3FFF80000000003E 43CFFFC000000000_01
+FFFFFFFFFFFFFF95 C05AC00000000000_00
+0000000007FFFFFF 419FFFFFFC000000_00
+010000BFFFFFFFFF 4370000C00000000_01
+0000001697087B19 423697087B190000_00
+0000000003FFFFFF 418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD C390000000004400_01
+0000000E64BDFC55 422CC97BF8AA0000_00
+0000000001FFFFFF 417FFFFFF0000000_00
+FC00000001FFFFFE C38FFFFFFFF00000_01
+FFFED156A62AB849 C2F2EA959D547B70_00
+0000000000FFFFFF 416FFFFFE0000000_00
+FFFFFFF83FEFFFFD C21F0040000C0000_00
+00015354EAE7C259 42F5354EAE7C2590_00
+00000000007FFFFF 415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFF0F4DF3C75 C22E164187160000_00
+00000000003FFFFF 414FFFFF80000000_00
+FFFA000000001FFF C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000001FFFFF 413FFFFF00000000_00
+FFFFFFFFFF7FFE40 C160003800000000_00
+FFFFFFDB5433CB9B C24255E61A328000_00
+00000000000FFFFF 412FFFFE00000000_00
+FFFFFDFFDFFDFFFD C280010010001800_00
+FFFFFFFFFFDEAE1F C140A8F080000000_00
+000000000007FFFF 411FFFFC00000000_00
+FFFFFFFFF0080006 C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7 C1F88CA213900000_00
+000000000003FFFF 410FFFF800000000_00
+00000001FBFFFFFF 41FFBFFFFFF00000_00
+000003757D8B12ED 428BABEC58976800_00
+000000000001FFFF 40FFFFF000000000_00
+FFFFFE07F7FFFFFF C27F808000001000_00
+00000A654064E046 42A4CA80C9C08C00_00
+000000000000FFFF 40EFFFE000000000_00
+08000000000017FF 43A0000000000030_01
+FFFFFFFFFFFFFFE7 C039000000000000_00
+0000000000007FFF 40DFFFC000000000_00
+07FFFFFFFFFFFDF6 439FFFFFFFFFFFF8_01
+FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
+0000000000003FFF 40CFFF8000000000_00
+0000300004000000 42C8000200000000_00
+FFFFFFF70B77F34F C221E91019620000_00
+0000000000001FFF 40BFFF0000000000_00
+FFFFFF80006FFFFE C25FFFE400008000_00
+0000013EB4D67EC8 4273EB4D67EC8000_00
+0000000000000FFF 40AFFE0000000000_00
+BFFFDFFFFBFFFFFF C3D0000800010000_01
+0005CEAF34EA1DC7 43173ABCD3A8771C_00
+00000000000007FF 409FFC0000000000_00
+00004800007FFFFD 42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000000003FF 408FF80000000000_00
+0000000200001000 4200000080000000_00
+00000000000360D0 410B068000000000_00
+00000000000001FF 407FF00000000000_00
+01003FFFFFFFFFFC 4370040000000000_01
+00C000708FF1BA51 4368000E11FE374A_01
+00000000000000FF 406FE00000000000_00
+F802000003FFFFFF C39FF7FFFFF00000_01
+0F9E07DCC0BDC061 43AF3C0FB9817B81_01
+000000000000007F 405FC00000000000_00
+03FF0000000000FF 438FF80000000008_01
+FFFFFFE1B9B2A079 C23E464D5F870000_00
+000000000000003F 404F800000000000_00
+FFF80000000080FF C31FFFFFFFFDFC04_00
+00000000001EB5B4 413EB5B400000000_00
+000000000000001F 403F000000000000_00
+000000000077FBFE 415DFEFF80000000_00
+00000000005AC607 4156B181C0000000_00
+000000000000000F 402E000000000000_00
+FFFFFFFEF80000FF C1F07FFFF0100000_00
+000005C5B9D66984 429716E759A61000_00
+0000000000000007 401C000000000000_00
+C001FFFFFFF00000 C3CFFF0000000800_00
+00001D06B372AA06 42BD06B372AA0600_00
+0000000000000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_ru.tv b/wally-pipelined/testbench/fp/i64_f64_ru.tv
new file mode 100644
index 000000000..eca72d40b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f64_ru.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 439FFFF7FFFFFFFE_01
+0000000032CC8B7A 41C96645BD000000_00
+0000000000000000 0000000000000000_00
+FFFFFFFFC0003FFE C1CFFFE001000000_00
+032C857F319EDE38 4389642BF98CF6F2_01
+0000000000000001 3FF0000000000000_00
+FFFFFBFFFFF8003E C29000001FFF0800_00
+00394C79B6D3007B 434CA63CDB69803E_01
+0000000000000002 4000000000000000_00
+FBFFFFF0000001FF C39000003FFFFFF8_01
+0000000001AE458D 417AE458D0000000_00
+0000000000000004 4010000000000000_00
+00040008000007FE 4310002000001FF8_00
+F9EB456140D88764 C39852EA7AFC9DE2_01
+0000000000000008 4020000000000000_00
+FFFFE400FFFFFFFE C2BBFF0000000200_00
+07DE834A248EDF36 439F7A0D28923B7D_01
+0000000000000010 4030000000000000_00
+00000003FF001FFF 420FF800FFF80000_00
+FFFFFFFFFFE385E2 C13C7A1E00000000_00
+0000000000000020 4040000000000000_00
+F0041FFFFFFFFFFF C3AFF7C000000000_01
+000000059EB1FD45 42167AC7F5140000_00
+0000000000000040 4050000000000000_00
+FFFFFFFFFFFCFFF9 C108003800000000_00
+FFFFFFFFFFFEDDFE C0F2202000000000_00
+0000000000000080 4060000000000000_00
+000000000003FF00 410FF80000000000_00
+00000000C89FF56B 41E913FEAD600000_00
+0000000000000100 4070000000000000_00
+000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEC0_01
+0000000000000200 4080000000000000_00
+FFFDF803FFFFFFFF C3003FE000000008_00
+FFFFFFFFFFF4766B C127132A00000000_00
+0000000000000400 4090000000000000_00
+0000080100000FFE 42A00200001FFC00_00
+000000000000000C 4028000000000000_00
+0000000000000800 40A0000000000000_00
+0048000000100000 4352000000040000_00
+FFE662A109109D0A C3399D5EF6EF62F6_00
+0000000000001000 40B0000000000000_00
+C000000037FFFFFE C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4 C03C000000000000_00
+0000000000002000 40C0000000000000_00
+F801000000100000 C39FFBFFFFFFC000_00
+FE114B79075F70EE C37EEB486F8A08F1_01
+0000000000004000 40D0000000000000_00
+100000000001003E 43B0000000000101_01
+00000000000003AC 408D600000000000_00
+0000000000008000 40E0000000000000_00
+200000FFFFFFF800 43C000007FFFFFFC_00
+00000044A3A3DBE5 425128E8F6F94000_00
+0000000000010000 40F0000000000000_00
+FFE0003EFFFFFFFF C33FFFC100000001_00
+FFFFFFFFFFFF1A91 C0ECADE000000000_00
+0000000000020000 4100000000000000_00
+FFFFF7C3FFFFFFFD C2A0780000000600_00
+0000000000003309 40C9848000000000_00
+0000000000040000 4110000000000000_00
+000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58 C065000000000000_00
+0000000000080000 4120000000000000_00
+FFFFFFDE01FFFFFE C240FF0000010000_00
+0000000000002980 40C4C00000000000_00
+0000000000100000 4130000000000000_00
+00000000FFF07FFF 41EFFE0FFFE00000_00
+000000000000005D 4057400000000000_00
+0000000000200000 4140000000000000_00
+000020FFDFFFFFFF 42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
+0000000000400000 4150000000000000_00
+E0000000003FFFDF C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C C280E1F109DE2000_00
+0000000000800000 4160000000000000_00
+FFFF00000BFFFFFD C2EFFFFE80000060_00
+000000000030FFBE 41487FDF00000000_00
+0000000001000000 4170000000000000_00
+FFFE000007FFEFFD C2FFFFFF80010030_00
+FFFFFFFFEFDEED86 C1B021127A000000_00
+0000000002000000 4180000000000000_00
+F3FFFFFFFFBFFFFE C3A8000000008000_01
+000000001DA3FF45 41BDA3FF45000000_00
+0000000004000000 4190000000000000_00
+FFFFFFFF00010007 C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54 C1F64E434AC00000_00
+0000000008000000 41A0000000000000_00
+00004000004001FE 42D0000010007F80_00
+F27DD19DE6563714 C3AB045CC4335391_01
+0000000010000000 41B0000000000000_00
+FFC00000004007FE C34FFFFFFFDFFC01_00
+000000000001A359 40FA359000000000_00
+0000000020000000 41C0000000000000_00
+0000000003C000FE 418E0007F0000000_00
+FFFFFFFFFE62EC20 C179D13E00000000_00
+0000000040000000 41D0000000000000_00
+000000003FFFFFFD 41CFFFFFFE800000_00
+000000000000285F 40C42F8000000000_00
+0000000080000000 41E0000000000000_00
+FFFFFFFFBFFFF00F C1D00003FC400000_00
+FFFFF836F99DBAA8 C29F241989156000_00
+0000000100000000 41F0000000000000_00
+00000020003FFEFE 4240001FFF7F0000_00
+0033466832042D47 4349A334190216A4_01
+0000000200000000 4200000000000000_00
+FFFFFFFFFFFFF887 C09DE40000000000_00
+00000000003829C8 414C14E400000000_00
+0000000400000000 4210000000000000_00
+00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
+0000000FB77C672B 422F6EF8CE560000_00
+0000000800000000 4220000000000000_00
+08003FFDFFFFFFFE 43A0007FFC000000_01
+0000000000001B78 40BB780000000000_00
+0000001000000000 4230000000000000_00
+FF7FFFFFFFEFDFFF C360000000020400_01
+0000000000000071 405C400000000000_00
+0000002000000000 4240000000000000_00
+000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86 C05E800000000000_00
+0000004000000000 4250000000000000_00
+0800000000040800 43A0000000000810_00
+FFF8A60D9E19F17E C31D67C987983A08_00
+0000008000000000 4260000000000000_00
+000077FFF0000000 42DDFFFC00000000_00
+FFFFFFFFF7506DBA C1A15F248C000000_00
+0000010000000000 4270000000000000_00
+FFFFFFFFFFFEFBF7 C0F0409000000000_00
+FFFFFFFFFEA42AC9 C175BD5370000000_00
+0000020000000000 4280000000000000_00
+0000107FFFFFDFFD 42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89 C33855C0D4253377_00
+0000040000000000 4290000000000000_00
+FFF8040000040000 C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+0000080000000000 42A0000000000000_00
+FFFF80000800001F C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9 C3004BF1099291B8_00
+0000100000000000 42B0000000000000_00
+FFFFFEFFFFE0007F C2700001FFF81000_00
+FFFFFFFFFFFFCFBE C0C8210000000000_00
+0000200000000000 42C0000000000000_00
+0000000901FFFFFD 422203FFFFFA0000_00
+FEC01FECA24DE1B0 C373FE0135DB21E5_00
+0000400000000000 42D0000000000000_00
+F7FFFFFFDFFF7FFF C3A0000000400100_01
+F858A66761669936 C39E9D66627A659B_01
+0000800000000000 42E0000000000000_00
+FFFEFF800000003E C2F007FFFFFFFC20_00
+F716EA43FAC45C97 C3A1D22B780A7746_01
+0001000000000000 42F0000000000000_00
+FFFFFFFFFFFFFFC6 C04D000000000000_00
+0024D70EC7661FD8 43426B8763B30FEC_00
+0002000000000000 4300000000000000_00
+C07FFFFFFFFFFFFE C3CFC00000000000_01
+FFD956DBD0AEE817 C343549217A88BF4_01
+0004000000000000 4310000000000000_00
+020003EFFFFFFFFE 4380001F80000000_01
+FFFFFFFFFFFF4300 C0E7A00000000000_00
+0008000000000000 4320000000000000_00
+4000000004002000 43D0000000010008_00
+C12EDF40F41F6021 C3CF68905F85F04F_01
+0010000000000000 4330000000000000_00
+FF9000000000001D C35BFFFFFFFFFFF8_01
+FFFFFFF83DE950F6 C21F085ABC280000_00
+0020000000000000 4340000000000000_00
+800003FFFFFC0000 C3DFFFFF00000100_00
+FE2B59CB3A604D69 C37D4A634C59FB29_01
+0040000000000000 4350000000000000_00
+7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFF0_01
+000000A37C210862 42646F84210C4000_00
+0080000000000000 4360000000000000_00
+0002000002000002 4300000010000010_00
+FFFFB65CD8617789 C2D268C9E7A21DC0_00
+0100000000000000 4370000000000000_00
+00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D C0AFC60000000000_00
+0200000000000000 4380000000000000_00
+1000008000003FFF 43B0000080000040_01
+000000000D098D19 41AA131A32000000_00
+0400000000000000 4390000000000000_00
+03FFFFFFFFFFF5FF 438FFFFFFFFFFFB0_01
+000006B3BD2C7BEF 429ACEF4B1EFBC00_00
+0800000000000000 43A0000000000000_00
+00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
+1000000000000000 43B0000000000000_00
+001FFFC000000FFD 433FFFC000000FFD_00
+FFFFFFFFFFFFFF21 C06BE00000000000_00
+2000000000000000 43C0000000000000_00
+0000000041DFFFFF 41D077FFFFC00000_00
+FFFFFFFFFC648262 C18CDBECF0000000_00
+4000000000000000 43D0000000000000_00
+C0001FFFFFFFFFFB C3CFFFF000000000_01
+FFFFFF7353AC45D2 C261958A7745C000_00
+8000000000000000 C3E0000000000000_00
+FFFFFFFFFFE7EFFF C138100100000000_00
+0000000000A1202D 41642405A0000000_00
+C000000000000000 C3D0000000000000_00
+FFFFFFFFFFFF5F7F C0E4102000000000_00
+000000000040CA70 4150329C00000000_00
+E000000000000000 C3C0000000000000_00
+0000200201FFFFFE 42C00100FFFFFF00_00
+00000003B55D87D4 420DAAEC3EA00000_00
+F000000000000000 C3B0000000000000_00
+FF80000DFFFFFFFF C35FFFFC80000000_01
+000000010510FAEF 41F0510FAEF00000_00
+F800000000000000 C3A0000000000000_00
+0003FFF00000000F 430FFF8000000078_00
+000000000000724A 40DC928000000000_00
+FC00000000000000 C390000000000000_00
+FFFFFFDF80000002 C2403FFFFFFF0000_00
+0000000000000064 4059000000000000_00
+FE00000000000000 C380000000000000_00
+FEFFFFFFFFF800FE C370000000007FF0_01
+FFFFFFC2C6222702 C24E9CEEEC7F0000_00
+FF00000000000000 C370000000000000_00
+0000000408000002 4210200000080000_00
+000000E96DF1CB41 426D2DBE39682000_00
+FF80000000000000 C360000000000000_00
+007FFFFFFFFFF9FE 435FFFFFFFFFFE80_01
+F727F174DEE7DC85 C3A1B01D16423046_01
+FFC0000000000000 C350000000000000_00
+8000000003FFFEFE C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B C12E854A00000000_00
+FFE0000000000000 C340000000000000_00
+0BEFFFFFFFFFFFFF 43A7E00000000000_01
+000000000002790C 4103C86000000000_00
+FFF0000000000000 C330000000000000_00
+FFFFFFFFFFEFFBFA C130040600000000_00
+000000169E75DF01 42369E75DF010000_00
+FFF8000000000000 C320000000000000_00
+00000007FEFFDFFF 421FFBFF7FFC0000_00
+000000000000000E 402C000000000000_00
+FFFC000000000000 C310000000000000_00
+0003FFFE0007FFFE 430FFFF0003FFFF0_00
+FFFFFFFFFFF28622 C12AF3BC00000000_00
+FFFE000000000000 C300000000000000_00
+FFFFFF7FFFFDF7FF C260000041002000_00
+00072F0EC496FE21 431CBC3B125BF884_00
+FFFF000000000000 C2F0000000000000_00
+DFBFFFFFFFFFFFFE C3C0200000000000_01
+0000000000FC1FCA 416F83F940000000_00
+FFFF800000000000 C2E0000000000000_00
+00000FFF800FFFFE 42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE C2E5CD636AC7A640_00
+FFFFC00000000000 C2D0000000000000_00
+00000002100007FD 420080003FE80000_00
+FFFFFFFFFFC2D8FE C14E938100000000_00
+FFFFE00000000000 C2C0000000000000_00
+000000000007FF6E 411FFDB800000000_00
+000000000001766E 40F766E000000000_00
+FFFFF00000000000 C2B0000000000000_00
+0040000400000002 4350000100000001_01
+0000000000007841 40DE104000000000_00
+FFFFF80000000000 C2A0000000000000_00
+3DFFFFFFFFFFFF7E 43CF000000000000_01
+FFFFFFE549E17E30 C23AB61E81D00000_00
+FFFFFC0000000000 C290000000000000_00
+FFFFFFFFFFFFFEE1 C071F00000000000_00
+FFFFFFFFFFFFFFE7 C039000000000000_00
+FFFFFE0000000000 C280000000000000_00
+000000000EFFFFDF 41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73 C061A00000000000_00
+FFFFFF0000000000 C270000000000000_00
+FD00000008000000 C387FFFFFFC00000_00
+000000000001DBB1 40FDBB1000000000_00
+FFFFFF8000000000 C260000000000000_00
+FFFFFFFFFFF8007F C11FFE0400000000_00
+FFFFFFFEFD10A515 C1F02EF5AEB00000_00
+FFFFFFC000000000 C250000000000000_00
+FFEFFFFFFFFFFFFE C330000000000002_00
+FAB02984F6283B6C C3953F59EC275F12_01
+FFFFFFE000000000 C240000000000000_00
+FFFFFFBC000001FE C250FFFFFF808000_00
+FEB087C6B9FE7FE0 C374F78394601802_00
+FFFFFFF000000000 C230000000000000_00
+FFF80001000007FE C31FFFFBFFFFE008_00
+00F2762EA6837956 436E4EC5D4D06F2B_01
+FFFFFFF800000000 C220000000000000_00
+FFF7E0FFFFFFFFFE C3203E0000000004_00
+00002E1175484626 42C708BAA4231300_00
+FFFFFFFC00000000 C210000000000000_00
+0000200020000FFE 42C000100007FF00_00
+000000000000068F 409A3C0000000000_00
+FFFFFFFE00000000 C200000000000000_00
+021FFFFFFFFBFFFF 4380FFFFFFFFE000_01
+FFFFFFFFFFFFFFF9 C01C000000000000_00
+FFFFFFFF00000000 C1F0000000000000_00
+FFFFFFD0000FFFFD C247FFF800018000_00
+000000BDF6658B83 4267BECCB1706000_00
+FFFFFFFF80000000 C1E0000000000000_00
+1000001FFDFFFFFF 43B000001FFE0000_01
+0000000000003B5B 40CDAD8000000000_00
+FFFFFFFFC0000000 C1D0000000000000_00
+FFFFFFBFFE0FFFFF C250007C00004000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+FFFFFFFFE0000000 C1C0000000000000_00
+FFFFFFFBF00007FF C2103FFFE0040000_00
+01E986274F48EAAD 437E986274F48EAB_01
+FFFFFFFFF0000000 C1B0000000000000_00
+1FFFFFFDFFFFFF7F 43BFFFFFFE000000_01
+FFFFFFFFFFFFCB5A C0CA530000000000_00
+FFFFFFFFF8000000 C1A0000000000000_00
+7FF000000000FFFF 43DFFC0000000040_01
+00000003C2717FC3 420E138BFE180000_00
+FFFFFFFFFC000000 C190000000000000_00
+FFFFFFE00008001F C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA C130542600000000_00
+FFFFFFFFFE000000 C180000000000000_00
+0200000000000002 4380000000000001_01
+FFFFFFFFF8FDA53F C19C096B04000000_00
+FFFFFFFFFF000000 C170000000000000_00
+F6000003FFFFFFFE C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0 C048000000000000_00
+FFFFFFFFFF800000 C160000000000000_00
+FFFFFFFFFFBFFF7E C150002080000000_00
+00000000EE0FEA62 41EDC1FD4C400000_00
+FFFFFFFFFFC00000 C150000000000000_00
+0000007FFF9FFFFD 425FFFE7FFFF4000_00
+00000037F35EDC1D 424BF9AF6E0E8000_00
+FFFFFFFFFFE00000 C140000000000000_00
+FFFFFFF7FDFFFF7D C220040001060000_00
+00000000000001AD 407AD00000000000_00
+FFFFFFFFFFF00000 C130000000000000_00
+FFFFFF0000100020 C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A 43C3F8B3FDE3FE30_01
+FFFFFFFFFFF80000 C120000000000000_00
+003FFFFFFFFC0001 434FFFFFFFFE0001_01
+000E48F9F4EBD30E 432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000 C110000000000000_00
+DFFFFFFFFFFBFFFE C3C0000000000200_01
+FC91C23EE8C9424F C38B71EE08B9B5ED_01
+FFFFFFFFFFFE0000 C100000000000000_00
+F7DFFBFFFFFFFFFE C3A0400800000000_01
+000000002CAE080C 41C6570406000000_00
+FFFFFFFFFFFF0000 C0F0000000000000_00
+FFFFC00010000020 C2CFFFF7FFFFF000_00
+04D921F917B20E40 43936487E45EC839_00
+FFFFFFFFFFFF8000 C0E0000000000000_00
+F8000FFFFFFFFFFD C39FFFC000000000_01
+FFF17C566BC7D811 C32D075328704FDE_00
+FFFFFFFFFFFFC000 C0D0000000000000_00
+00000000000000FE 406FC00000000000_00
+FFF82AC14930D386 C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000 C0C0000000000000_00
+00000000000003FC 408FE00000000000_00
+000E62EC60E119FC 432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000 C0B0000000000000_00
+FFFFEFF7FF7FFFFE C2B0080080000200_00
+0E2B1ECF210EEDC5 43AC563D9E421DDC_01
+FFFFFFFFFFFFF800 C0A0000000000000_00
+00000000007FFF1F 415FFFC7C0000000_00
+FFFFFE534F5676F7 C27ACB0A98909000_00
+FFFFFFFFFFFFFC00 C090000000000000_00
+0000001004FFFFFD 423004FFFFFD0000_00
+0000035C939669F1 428AE49CB34F8800_00
+FFFFFFFFFFFFFE00 C080000000000000_00
+1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFE_01
+FFFFFFFFFFFFFF91 C05BC00000000000_00
+FFFFFFFFFFFFFF00 C070000000000000_00
+01FFFFFFFBFFEFFE 437FFFFFFFBFFF00_01
+000000000000016E 4076E00000000000_00
+FFFFFFFFFFFFFF80 C060000000000000_00
+FFF7FFFFFFFFF7FD C320000000001006_00
+FFFFF8E2BCFAC553 C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0 C050000000000000_00
+FFFFFBFFFFFE0FFE C290000007C00800_00
+00000001A4E704BF 41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0 C040000000000000_00
+1400007FFFFFFFFD 43B4000080000000_01
+FFFFFFFC93B187B4 C20B6273C2600000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+40000000007FFFFD 43D0000000002000_01
+000000000067D468 4159F51A00000000_00
+FFFFFFFFFFFFFFF8 C020000000000000_00
+007FFEFFFFFBFFFE 435FFFBFFFFF0000_01
+FFFFFFE26CEC79F8 C23D931386080000_00
+FFFFFFFFFFFFFFFC C010000000000000_00
+00FFFFFF000000FF 436FFFFFE0000020_01
+FFFFFFFFE0D3983A C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE C000000000000000_00
+00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF BFF0000000000000_00
+000008000000027E 42A000000004FC00_00
+000000000000F4E8 40EE9D0000000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFF83FFDF C15F000840000000_00
+00000E11407887B2 42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+04000003FFFFFFF6 4390000010000000_01
+0000000000000513 40944C0000000000_00
+FFFFFFFFFFFFFFF7 C022000000000000_00
+BFFC00000000003E C3D000FFFFFFFFFF_01
+00000008D7BBB75B 4221AF776EB60000_00
+FFFFFFFFFFFFFFEF C031000000000000_00
+000FFFFBFFFC0000 432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23 C14952EE80000000_00
+FFFFFFFFFFFFFFDF C040800000000000_00
+FFBFDFFFBFFFFFFF C350080010000000_01
+000000000000007F 405FC00000000000_00
+FFFFFFFFFFFFFFBF C050400000000000_00
+00000007FF800003 421FFE00000C0000_00
+000000000002BB02 4105D81000000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEE7FF C0F1801000000000_00
+00264B2B9BAD0DA2 43432595CDD686D1_00
+FFFFFFFFFFFFFEFF C070100000000000_00
+0000000000100803 4130080300000000_00
+FF9B1DCB9F857D5E C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF C080080000000000_00
+FFFFFFBFFFFFEFEE C250000004048000_00
+F6FD7542899C1C6F C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF C090040000000000_00
+FF800000004001FF C35FFFFFFFEFFF80_01
+0000000002BE4932 4185F24990000000_00
+FFFFFFFFFFFFF7FF C0A0020000000000_00
+00001004000FFFFE 42B004000FFFFE00_00
+FFFFFF9DAA0123E0 C258957FB7080000_00
+FFFFFFFFFFFFEFFF C0B0010000000000_00
+00000001FDFFFDFE 41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF C0C0008000000000_00
+FE0FE00000000000 C37F020000000000_00
+0779ED944A4E2779 439DE7B65129389E_01
+FFFFFFFFFFFFBFFF C0D0004000000000_00
+FBFFFE0400000000 C3900007F0000000_00
+0000010127E03666 4270127E03666000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+FFFFF0200000FFFE C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEFFFF C0F0001000000000_00
+FFEFFE0000080000 C33001FFFFF80000_00
+FFFFFFFFFD3354EA C1866558B0000000_00
+FFFFFFFFFFFDFFFF C100000800000000_00
+003FF0000003FFFE 434FF8000001FFFF_00
+0000006375B23F7B 4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF C110000400000000_00
+000407FFFFFFFFF6 43101FFFFFFFFFD8_00
+0000000092117F38 41E2422FE7000000_00
+FFFFFFFFFFF7FFFF C120000200000000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+00000000000008BE 40A17C0000000000_00
+FFFFFFFFFFEFFFFF C130000100000000_00
+004000020FFFFFFF 4350000084000000_01
+FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF C140000080000000_00
+00FFFFFFFFFFFFFD 4370000000000000_01
+00000023C2C6F284 4241E16379420000_00
+FFFFFFFFFFBFFFFF C150000040000000_00
+FFFDDFFFFFFFFFFD C301000000000018_00
+00000000746356C4 41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF C160000020000000_00
+010000000000BFFF 4370000000000C00_01
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFEFFFFFF C170000010000000_00
+FFFFBF7FFBFFFFFE C2D0200100000080_00
+00000006386CE889 4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF C180000008000000_00
+F00000F7FFFFFFFF C3AFFFFE10000000_01
+FFFDFC53090C46A4 C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+0000000000800047 41600008E0000000_00
+FFFFFFFFD693872E C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF C1A0000002000000_00
+000000007FBFFBFF 41DFEFFEFFC00000_00
+00000026A7845E35 424353C22F1A8000_00
+FFFFFFFFEFFFFFFF C1B0000001000000_00
+FFFFFFDFFFFFFBFD C240000002018000_00
+000000001433D14C 41B433D14C000000_00
+FFFFFFFFDFFFFFFF C1C0000000800000_00
+0001FFFFFFE0000E 42FFFFFFFE0000E0_00
+F0F23E8068D3D84A C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF C1D0000000400000_00
+F7FFBFFFFFFFBFFF C3A0008000000080_01
+FFFFBD29B7459087 C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF C1E0000000200000_00
+FFFFFFF8FFFFBFFF C21C000100040000_00
+FFFFFFFFFFEDDC06 C13223FA00000000_00
+FFFFFFFEFFFFFFFF C1F0000000100000_00
+FFFFFFF80001FFFF C21FFFF800040000_00
+0000000000002FF9 40C7FC8000000000_00
+FFFFFFFDFFFFFFFF C200000000080000_00
+004000040000FFFF 4350000100004000_01
+FFFFFFFFFFFFFFF1 C02E000000000000_00
+FFFFFFFBFFFFFFFF C210000000040000_00
+C0000000007FFFFA C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF C220000000020000_00
+7FFE000007FFFFFF 43DFFF8000020000_01
+000000000000000D 402A000000000000_00
+FFFFFFEFFFFFFFFF C230000000010000_00
+F80000000001007E C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6 C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF C240000000008000_00
+FFFFFE0001FEFFFF C27FFFE010001000_00
+000000000000013B 4073B00000000000_00
+FFFFFFBFFFFFFFFF C250000000004000_00
+0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
+4A16BD4128090C83 43D285AF504A0244_01
+FFFFFF7FFFFFFFFF C260000000002000_00
+00FFF7FFFF7FFFFE 436FFEFFFFF00000_01
+0000000000000006 4018000000000000_00
+FFFFFEFFFFFFFFFF C270000000001000_00
+FBFFFFBFFFBFFFFF C390000100010000_01
+00000000000001BA 407BA00000000000_00
+FFFFFDFFFFFFFFFF C280000000000800_00
+0000000040000082 41D0000020800000_00
+FF07A2BF5B689F89 C36F0BA81492EC0E_01
+FFFFFBFFFFFFFFFF C290000000000400_00
+0000001FF8000008 423FF80000080000_00
+F87CAA7DE672DE8B C39E0D5608663485_01
+FFFFF7FFFFFFFFFF C2A0000000000200_00
+07FFF80000000002 439FFFE000000001_01
+0000000010A1E5B8 41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF C2B0000000000100_00
+F7FFFFE00007FFFF C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC C122A40800000000_00
+FFFFDFFFFFFFFFFF C2C0000000000080_00
+FFFFFF03FFFFFFC0 C26F800000080000_00
+EA579475948F0032 C3B5A86B8A6B70FF_01
+FFFFBFFFFFFFFFFF C2D0000000000040_00
+FC00000000003FF6 C38FFFFFFFFFFE00_01
+002E677AC313BF60 434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF C2E0000000000020_00
+02000007FF7FFFFF 438000003FFC0000_01
+0000000E999639F1 422D332C73E20000_00
+FFFEFFFFFFFFFFFF C2F0000000000010_00
+FFFF83FFFFFFFFBE C2DF000000001080_00
+000000000001537D 40F537D000000000_00
+FFFDFFFFFFFFFFFF C300000000000008_00
+EFFFFFC00000003D C3B000003FFFFFFF_01
+FFFFFFF21FEDFD35 C22BC02405960000_00
+FFFBFFFFFFFFFFFF C310000000000004_00
+FFFFFFF0000007FE C22FFFFFF0040000_00
+FFFFFFFFFFDE0839 C140FBE380000000_00
+FFF7FFFFFFFFFFFF C320000000000002_00
+0000007FFFE000FF 425FFFF8003FC000_00
+FFFFFFFF79F30F48 C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF C330000000000001_00
+FFFFFC13FFFFFFFD C28F600000001800_00
+0000000000001B85 40BB850000000000_00
+FFDFFFFFFFFFFFFF C340000000000000_01
+000008000007FFFE 42A000000FFFFC00_00
+12DB4409E5AE87E6 43B2DB4409E5AE88_01
+FFBFFFFFFFFFFFFF C350000000000000_01
+FFFFFFFFFFF7BFEE C120802400000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FF7FFFFFFFFFFFFF C360000000000000_01
+000000001040FFFE 41B040FFFE000000_00
+00000909A09C13D3 42A213413827A600_00
+FEFFFFFFFFFFFFFF C370000000000000_01
+FFFFFF01FFFFFF7F C26FC00000102000_00
+FFFFFF72E7D2575D C261A305B5146000_00
+FDFFFFFFFFFFFFFF C380000000000000_01
+FFFFFFFFFFFEFFDB C0F0025000000000_00
+0000000000000017 4037000000000000_00
+FBFFFFFFFFFFFFFF C390000000000000_01
+100000001FFFFFF6 43B0000000200000_01
+000000114B12EF51 42314B12EF510000_00
+F7FFFFFFFFFFFFFF C3A0000000000000_01
+0407FFFFFFFFFEFF 43901FFFFFFFFFFC_01
+FFFFFF769F3A5C2C C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF C3B0000000000000_01
+FFFFFFFDF7FFFFFD C200400000180000_00
+FFFFFFFFFFFFFFF2 C02C000000000000_00
+DFFFFFFFFFFFFFFF C3C0000000000000_01
+FFFFFFFFFE0007FF C17FFF8010000000_00
+000000000000001E 403E000000000000_00
+BFFFFFFFFFFFFFFF C3D0000000000000_01
+FFF800000009FFFF C31FFFFFFFD80004_00
+0000000000007AA4 40DEA90000000000_00
+7FFFFFFFFFFFFFFF 43E0000000000000_01
+4080000000FFFFFF 43D0200000004000_01
+000000000DE7601D 41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF 43D0000000000000_01
+FFCFFFFFFFBFFFFE C348000000200001_00
+FFFFFFFFFFFFFFCA C04B000000000000_00
+1FFFFFFFFFFFFFFF 43C0000000000000_01
+000080400000003F 42E00800000007E0_00
+00000000001F75A5 413F75A500000000_00
+0FFFFFFFFFFFFFFF 43B0000000000000_01
+FFFFFFEFFFFFCFFE C230000030020000_00
+FFFFFEE775887420 C27188A778BE0000_00
+07FFFFFFFFFFFFFF 43A0000000000000_01
+00000000000801FE 412003FC00000000_00
+0000000000213FF1 41409FF880000000_00
+03FFFFFFFFFFFFFF 4390000000000000_01
+07FEFFFFFFFFFFEE 439FFC0000000000_01
+0000000000000004 4010000000000000_00
+01FFFFFFFFFFFFFF 4380000000000000_01
+0000000820000003 4220400000060000_00
+FFFFFFF9AD105214 C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF 4370000000000000_01
+FFFFF00FFFFFFFBE C2AFE00000008400_00
+FFFFFFFFFFCC48E7 C149DB8C80000000_00
+007FFFFFFFFFFFFF 4360000000000000_01
+00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB C16E8B26A0000000_00
+003FFFFFFFFFFFFF 4350000000000000_01
+FFFFFF7FBFFFFFBF C260080000082000_00
+FFFFFFFFFFF24425 C12B77B600000000_00
+001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
+200000001FFBFFFF 43C00000000FFE00_01
+FFFFFF4E7115EC53 C26631DD4275A000_00
+000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF C29FF00000010400_00
+FFFFFC2E539ADCFE C28E8D6329181000_00
+0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+00000055084732F3 42554211CCBCC000_00
+0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00 C3D0002000000000_01
+FFFFFFFFFFFF8543 C0DEAF4000000000_00
+0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
+0000001FFBFFE000 423FFBFFE0000000_00
+FFFFFFFFFFFE491B C0FB6E5000000000_00
+0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
+FC00200000001FFE C38FFEFFFFFFFF00_01
+FFFFF16898822A24 C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE 43CFFF8200000000_01
+FFFFFF8FFE18C7BF C25C0079CE104000_00
+00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD C270001000003000_00
+00F03620C1266ED9 436E06C41824CDDC_01
+00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF C3D0204000000000_01
+FFFFFFFFFFFFFFD5 C045800000000000_00
+00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE C31000001FF00008_00
+0000000000068684 411A1A1000000000_00
+000007FFFFFFFFFF 429FFFFFFFFFFC00_00
+DFFFFFE00000001E C3C000000FFFFFFF_01
+FFFFFFFFFFFFECF5 C0B30B0000000000_00
+000003FFFFFFFFFF 428FFFFFFFFFF800_00
+FFFF00400000FFFF C2EFF7FFFFE00020_00
+0000000000000002 4000000000000000_00
+000001FFFFFFFFFF 427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE C390000000000108_01
+0000000000000BC9 40A7920000000000_00
+000000FFFFFFFFFF 426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE C3DFE00000000008_01
+FFC274E35A70CD76 C34EC58E52C79945_00
+0000007FFFFFFFFF 425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD 43AFFFFFFFFE0000_01
+FFFFFFFF00E73AFC C1EFE318A0800000_00
+0000003FFFFFFFFF 424FFFFFFFFF8000_00
+FFC000000001000E C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9 C0FEA17000000000_00
+0000001FFFFFFFFF 423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
+0000000000000033 4049800000000000_00
+0000000FFFFFFFFF 422FFFFFFFFE0000_00
+000000001FFFBFFF 41BFFFBFFF000000_00
+FFFFFFEE6B141E1B C23194EBE1E50000_00
+00000007FFFFFFFF 421FFFFFFFFC0000_00
+FFFFFFFFF60007FF C1A3FFF002000000_00
+00000001AB310BA6 41FAB310BA600000_00
+00000003FFFFFFFF 420FFFFFFFF80000_00
+0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195 C0ACD60000000000_00
+00000001FFFFFFFF 41FFFFFFFFF00000_00
+FFFFFFFF8000000B C1DFFFFFFD400000_00
+00000019BA8D5559 4239BA8D55590000_00
+00000000FFFFFFFF 41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9 C390040000000000_01
+FFFFFFB6F062822D C25243E75F74C000_00
+000000007FFFFFFF 41DFFFFFFFC00000_00
+0001000000000082 42F0000000000820_00
+01CEAD9E2FB104A4 437CEAD9E2FB104B_01
+000000003FFFFFFF 41CFFFFFFF800000_00
+000003FFFFFFFF7C 428FFFFFFFFBE000_00
+FFFFFFFFFD681E78 C184BF0C40000000_00
+000000001FFFFFFF 41BFFFFFFF000000_00
+00002000400001FF 42C000200000FF80_00
+0000000000000018 4038000000000000_00
+000000000FFFFFFF 41AFFFFFFE000000_00
+3FFF80000000003E 43CFFFC000000001_01
+FFFFFFFFFFFFFF95 C05AC00000000000_00
+0000000007FFFFFF 419FFFFFFC000000_00
+010000BFFFFFFFFF 4370000C00000000_01
+0000001697087B19 423697087B190000_00
+0000000003FFFFFF 418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD C390000000004400_01
+0000000E64BDFC55 422CC97BF8AA0000_00
+0000000001FFFFFF 417FFFFFF0000000_00
+FC00000001FFFFFE C38FFFFFFFF00000_01
+FFFED156A62AB849 C2F2EA959D547B70_00
+0000000000FFFFFF 416FFFFFE0000000_00
+FFFFFFF83FEFFFFD C21F0040000C0000_00
+00015354EAE7C259 42F5354EAE7C2590_00
+00000000007FFFFF 415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFF0F4DF3C75 C22E164187160000_00
+00000000003FFFFF 414FFFFF80000000_00
+FFFA000000001FFF C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000001FFFFF 413FFFFF00000000_00
+FFFFFFFFFF7FFE40 C160003800000000_00
+FFFFFFDB5433CB9B C24255E61A328000_00
+00000000000FFFFF 412FFFFE00000000_00
+FFFFFDFFDFFDFFFD C280010010001800_00
+FFFFFFFFFFDEAE1F C140A8F080000000_00
+000000000007FFFF 411FFFFC00000000_00
+FFFFFFFFF0080006 C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7 C1F88CA213900000_00
+000000000003FFFF 410FFFF800000000_00
+00000001FBFFFFFF 41FFBFFFFFF00000_00
+000003757D8B12ED 428BABEC58976800_00
+000000000001FFFF 40FFFFF000000000_00
+FFFFFE07F7FFFFFF C27F808000001000_00
+00000A654064E046 42A4CA80C9C08C00_00
+000000000000FFFF 40EFFFE000000000_00
+08000000000017FF 43A0000000000030_01
+FFFFFFFFFFFFFFE7 C039000000000000_00
+0000000000007FFF 40DFFFC000000000_00
+07FFFFFFFFFFFDF6 439FFFFFFFFFFFF8_01
+FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
+0000000000003FFF 40CFFF8000000000_00
+0000300004000000 42C8000200000000_00
+FFFFFFF70B77F34F C221E91019620000_00
+0000000000001FFF 40BFFF0000000000_00
+FFFFFF80006FFFFE C25FFFE400008000_00
+0000013EB4D67EC8 4273EB4D67EC8000_00
+0000000000000FFF 40AFFE0000000000_00
+BFFFDFFFFBFFFFFF C3D0000800010000_01
+0005CEAF34EA1DC7 43173ABCD3A8771C_00
+00000000000007FF 409FFC0000000000_00
+00004800007FFFFD 42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000000003FF 408FF80000000000_00
+0000000200001000 4200000080000000_00
+00000000000360D0 410B068000000000_00
+00000000000001FF 407FF00000000000_00
+01003FFFFFFFFFFC 4370040000000000_01
+00C000708FF1BA51 4368000E11FE374B_01
+00000000000000FF 406FE00000000000_00
+F802000003FFFFFF C39FF7FFFFF00000_01
+0F9E07DCC0BDC061 43AF3C0FB9817B81_01
+000000000000007F 405FC00000000000_00
+03FF0000000000FF 438FF80000000008_01
+FFFFFFE1B9B2A079 C23E464D5F870000_00
+000000000000003F 404F800000000000_00
+FFF80000000080FF C31FFFFFFFFDFC04_00
+00000000001EB5B4 413EB5B400000000_00
+000000000000001F 403F000000000000_00
+000000000077FBFE 415DFEFF80000000_00
+00000000005AC607 4156B181C0000000_00
+000000000000000F 402E000000000000_00
+FFFFFFFEF80000FF C1F07FFFF0100000_00
+000005C5B9D66984 429716E759A61000_00
+0000000000000007 401C000000000000_00
+C001FFFFFFF00000 C3CFFF0000000800_00
+00001D06B372AA06 42BD06B372AA0600_00
+0000000000000003 4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rz.tv b/wally-pipelined/testbench/fp/i64_f64_rz.tv
new file mode 100644
index 000000000..315fa3fe4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/i64_f64_rz.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F 439FFFF7FFFFFFFD_01
+0000000032CC8B7A 41C96645BD000000_00
+0000000000000000 0000000000000000_00
+FFFFFFFFC0003FFE C1CFFFE001000000_00
+032C857F319EDE38 4389642BF98CF6F1_01
+0000000000000001 3FF0000000000000_00
+FFFFFBFFFFF8003E C29000001FFF0800_00
+00394C79B6D3007B 434CA63CDB69803D_01
+0000000000000002 4000000000000000_00
+FBFFFFF0000001FF C39000003FFFFFF8_01
+0000000001AE458D 417AE458D0000000_00
+0000000000000004 4010000000000000_00
+00040008000007FE 4310002000001FF8_00
+F9EB456140D88764 C39852EA7AFC9DE2_01
+0000000000000008 4020000000000000_00
+FFFFE400FFFFFFFE C2BBFF0000000200_00
+07DE834A248EDF36 439F7A0D28923B7C_01
+0000000000000010 4030000000000000_00
+00000003FF001FFF 420FF800FFF80000_00
+FFFFFFFFFFE385E2 C13C7A1E00000000_00
+0000000000000020 4040000000000000_00
+F0041FFFFFFFFFFF C3AFF7C000000000_01
+000000059EB1FD45 42167AC7F5140000_00
+0000000000000040 4050000000000000_00
+FFFFFFFFFFFCFFF9 C108003800000000_00
+FFFFFFFFFFFEDDFE C0F2202000000000_00
+0000000000000080 4060000000000000_00
+000000000003FF00 410FF80000000000_00
+00000000C89FF56B 41E913FEAD600000_00
+0000000000000100 4070000000000000_00
+000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEBF_01
+0000000000000200 4080000000000000_00
+FFFDF803FFFFFFFF C3003FE000000008_00
+FFFFFFFFFFF4766B C127132A00000000_00
+0000000000000400 4090000000000000_00
+0000080100000FFE 42A00200001FFC00_00
+000000000000000C 4028000000000000_00
+0000000000000800 40A0000000000000_00
+0048000000100000 4352000000040000_00
+FFE662A109109D0A C3399D5EF6EF62F6_00
+0000000000001000 40B0000000000000_00
+C000000037FFFFFE C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4 C03C000000000000_00
+0000000000002000 40C0000000000000_00
+F801000000100000 C39FFBFFFFFFC000_00
+FE114B79075F70EE C37EEB486F8A08F1_01
+0000000000004000 40D0000000000000_00
+100000000001003E 43B0000000000100_01
+00000000000003AC 408D600000000000_00
+0000000000008000 40E0000000000000_00
+200000FFFFFFF800 43C000007FFFFFFC_00
+00000044A3A3DBE5 425128E8F6F94000_00
+0000000000010000 40F0000000000000_00
+FFE0003EFFFFFFFF C33FFFC100000001_00
+FFFFFFFFFFFF1A91 C0ECADE000000000_00
+0000000000020000 4100000000000000_00
+FFFFF7C3FFFFFFFD C2A0780000000600_00
+0000000000003309 40C9848000000000_00
+0000000000040000 4110000000000000_00
+000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58 C065000000000000_00
+0000000000080000 4120000000000000_00
+FFFFFFDE01FFFFFE C240FF0000010000_00
+0000000000002980 40C4C00000000000_00
+0000000000100000 4130000000000000_00
+00000000FFF07FFF 41EFFE0FFFE00000_00
+000000000000005D 4057400000000000_00
+0000000000200000 4140000000000000_00
+000020FFDFFFFFFF 42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
+0000000000400000 4150000000000000_00
+E0000000003FFFDF C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C C280E1F109DE2000_00
+0000000000800000 4160000000000000_00
+FFFF00000BFFFFFD C2EFFFFE80000060_00
+000000000030FFBE 41487FDF00000000_00
+0000000001000000 4170000000000000_00
+FFFE000007FFEFFD C2FFFFFF80010030_00
+FFFFFFFFEFDEED86 C1B021127A000000_00
+0000000002000000 4180000000000000_00
+F3FFFFFFFFBFFFFE C3A8000000008000_01
+000000001DA3FF45 41BDA3FF45000000_00
+0000000004000000 4190000000000000_00
+FFFFFFFF00010007 C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54 C1F64E434AC00000_00
+0000000008000000 41A0000000000000_00
+00004000004001FE 42D0000010007F80_00
+F27DD19DE6563714 C3AB045CC4335391_01
+0000000010000000 41B0000000000000_00
+FFC00000004007FE C34FFFFFFFDFFC01_00
+000000000001A359 40FA359000000000_00
+0000000020000000 41C0000000000000_00
+0000000003C000FE 418E0007F0000000_00
+FFFFFFFFFE62EC20 C179D13E00000000_00
+0000000040000000 41D0000000000000_00
+000000003FFFFFFD 41CFFFFFFE800000_00
+000000000000285F 40C42F8000000000_00
+0000000080000000 41E0000000000000_00
+FFFFFFFFBFFFF00F C1D00003FC400000_00
+FFFFF836F99DBAA8 C29F241989156000_00
+0000000100000000 41F0000000000000_00
+00000020003FFEFE 4240001FFF7F0000_00
+0033466832042D47 4349A334190216A3_01
+0000000200000000 4200000000000000_00
+FFFFFFFFFFFFF887 C09DE40000000000_00
+00000000003829C8 414C14E400000000_00
+0000000400000000 4210000000000000_00
+00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
+0000000FB77C672B 422F6EF8CE560000_00
+0000000800000000 4220000000000000_00
+08003FFDFFFFFFFE 43A0007FFBFFFFFF_01
+0000000000001B78 40BB780000000000_00
+0000001000000000 4230000000000000_00
+FF7FFFFFFFEFDFFF C360000000020400_01
+0000000000000071 405C400000000000_00
+0000002000000000 4240000000000000_00
+000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86 C05E800000000000_00
+0000004000000000 4250000000000000_00
+0800000000040800 43A0000000000810_00
+FFF8A60D9E19F17E C31D67C987983A08_00
+0000008000000000 4260000000000000_00
+000077FFF0000000 42DDFFFC00000000_00
+FFFFFFFFF7506DBA C1A15F248C000000_00
+0000010000000000 4270000000000000_00
+FFFFFFFFFFFEFBF7 C0F0409000000000_00
+FFFFFFFFFEA42AC9 C175BD5370000000_00
+0000020000000000 4280000000000000_00
+0000107FFFFFDFFD 42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89 C33855C0D4253377_00
+0000040000000000 4290000000000000_00
+FFF8040000040000 C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+0000080000000000 42A0000000000000_00
+FFFF80000800001F C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9 C3004BF1099291B8_00
+0000100000000000 42B0000000000000_00
+FFFFFEFFFFE0007F C2700001FFF81000_00
+FFFFFFFFFFFFCFBE C0C8210000000000_00
+0000200000000000 42C0000000000000_00
+0000000901FFFFFD 422203FFFFFA0000_00
+FEC01FECA24DE1B0 C373FE0135DB21E5_00
+0000400000000000 42D0000000000000_00
+F7FFFFFFDFFF7FFF C3A0000000400100_01
+F858A66761669936 C39E9D66627A659B_01
+0000800000000000 42E0000000000000_00
+FFFEFF800000003E C2F007FFFFFFFC20_00
+F716EA43FAC45C97 C3A1D22B780A7746_01
+0001000000000000 42F0000000000000_00
+FFFFFFFFFFFFFFC6 C04D000000000000_00
+0024D70EC7661FD8 43426B8763B30FEC_00
+0002000000000000 4300000000000000_00
+C07FFFFFFFFFFFFE C3CFC00000000000_01
+FFD956DBD0AEE817 C343549217A88BF4_01
+0004000000000000 4310000000000000_00
+020003EFFFFFFFFE 4380001F7FFFFFFF_01
+FFFFFFFFFFFF4300 C0E7A00000000000_00
+0008000000000000 4320000000000000_00
+4000000004002000 43D0000000010008_00
+C12EDF40F41F6021 C3CF68905F85F04F_01
+0010000000000000 4330000000000000_00
+FF9000000000001D C35BFFFFFFFFFFF8_01
+FFFFFFF83DE950F6 C21F085ABC280000_00
+0020000000000000 4340000000000000_00
+800003FFFFFC0000 C3DFFFFF00000100_00
+FE2B59CB3A604D69 C37D4A634C59FB29_01
+0040000000000000 4350000000000000_00
+7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFEF_01
+000000A37C210862 42646F84210C4000_00
+0080000000000000 4360000000000000_00
+0002000002000002 4300000010000010_00
+FFFFB65CD8617789 C2D268C9E7A21DC0_00
+0100000000000000 4370000000000000_00
+00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D C0AFC60000000000_00
+0200000000000000 4380000000000000_00
+1000008000003FFF 43B000008000003F_01
+000000000D098D19 41AA131A32000000_00
+0400000000000000 4390000000000000_00
+03FFFFFFFFFFF5FF 438FFFFFFFFFFFAF_01
+000006B3BD2C7BEF 429ACEF4B1EFBC00_00
+0800000000000000 43A0000000000000_00
+00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
+1000000000000000 43B0000000000000_00
+001FFFC000000FFD 433FFFC000000FFD_00
+FFFFFFFFFFFFFF21 C06BE00000000000_00
+2000000000000000 43C0000000000000_00
+0000000041DFFFFF 41D077FFFFC00000_00
+FFFFFFFFFC648262 C18CDBECF0000000_00
+4000000000000000 43D0000000000000_00
+C0001FFFFFFFFFFB C3CFFFF000000000_01
+FFFFFF7353AC45D2 C261958A7745C000_00
+8000000000000000 C3E0000000000000_00
+FFFFFFFFFFE7EFFF C138100100000000_00
+0000000000A1202D 41642405A0000000_00
+C000000000000000 C3D0000000000000_00
+FFFFFFFFFFFF5F7F C0E4102000000000_00
+000000000040CA70 4150329C00000000_00
+E000000000000000 C3C0000000000000_00
+0000200201FFFFFE 42C00100FFFFFF00_00
+00000003B55D87D4 420DAAEC3EA00000_00
+F000000000000000 C3B0000000000000_00
+FF80000DFFFFFFFF C35FFFFC80000000_01
+000000010510FAEF 41F0510FAEF00000_00
+F800000000000000 C3A0000000000000_00
+0003FFF00000000F 430FFF8000000078_00
+000000000000724A 40DC928000000000_00
+FC00000000000000 C390000000000000_00
+FFFFFFDF80000002 C2403FFFFFFF0000_00
+0000000000000064 4059000000000000_00
+FE00000000000000 C380000000000000_00
+FEFFFFFFFFF800FE C370000000007FF0_01
+FFFFFFC2C6222702 C24E9CEEEC7F0000_00
+FF00000000000000 C370000000000000_00
+0000000408000002 4210200000080000_00
+000000E96DF1CB41 426D2DBE39682000_00
+FF80000000000000 C360000000000000_00
+007FFFFFFFFFF9FE 435FFFFFFFFFFE7F_01
+F727F174DEE7DC85 C3A1B01D16423046_01
+FFC0000000000000 C350000000000000_00
+8000000003FFFEFE C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B C12E854A00000000_00
+FFE0000000000000 C340000000000000_00
+0BEFFFFFFFFFFFFF 43A7DFFFFFFFFFFF_01
+000000000002790C 4103C86000000000_00
+FFF0000000000000 C330000000000000_00
+FFFFFFFFFFEFFBFA C130040600000000_00
+000000169E75DF01 42369E75DF010000_00
+FFF8000000000000 C320000000000000_00
+00000007FEFFDFFF 421FFBFF7FFC0000_00
+000000000000000E 402C000000000000_00
+FFFC000000000000 C310000000000000_00
+0003FFFE0007FFFE 430FFFF0003FFFF0_00
+FFFFFFFFFFF28622 C12AF3BC00000000_00
+FFFE000000000000 C300000000000000_00
+FFFFFF7FFFFDF7FF C260000041002000_00
+00072F0EC496FE21 431CBC3B125BF884_00
+FFFF000000000000 C2F0000000000000_00
+DFBFFFFFFFFFFFFE C3C0200000000000_01
+0000000000FC1FCA 416F83F940000000_00
+FFFF800000000000 C2E0000000000000_00
+00000FFF800FFFFE 42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE C2E5CD636AC7A640_00
+FFFFC00000000000 C2D0000000000000_00
+00000002100007FD 420080003FE80000_00
+FFFFFFFFFFC2D8FE C14E938100000000_00
+FFFFE00000000000 C2C0000000000000_00
+000000000007FF6E 411FFDB800000000_00
+000000000001766E 40F766E000000000_00
+FFFFF00000000000 C2B0000000000000_00
+0040000400000002 4350000100000000_01
+0000000000007841 40DE104000000000_00
+FFFFF80000000000 C2A0000000000000_00
+3DFFFFFFFFFFFF7E 43CEFFFFFFFFFFFF_01
+FFFFFFE549E17E30 C23AB61E81D00000_00
+FFFFFC0000000000 C290000000000000_00
+FFFFFFFFFFFFFEE1 C071F00000000000_00
+FFFFFFFFFFFFFFE7 C039000000000000_00
+FFFFFE0000000000 C280000000000000_00
+000000000EFFFFDF 41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73 C061A00000000000_00
+FFFFFF0000000000 C270000000000000_00
+FD00000008000000 C387FFFFFFC00000_00
+000000000001DBB1 40FDBB1000000000_00
+FFFFFF8000000000 C260000000000000_00
+FFFFFFFFFFF8007F C11FFE0400000000_00
+FFFFFFFEFD10A515 C1F02EF5AEB00000_00
+FFFFFFC000000000 C250000000000000_00
+FFEFFFFFFFFFFFFE C330000000000002_00
+FAB02984F6283B6C C3953F59EC275F12_01
+FFFFFFE000000000 C240000000000000_00
+FFFFFFBC000001FE C250FFFFFF808000_00
+FEB087C6B9FE7FE0 C374F78394601802_00
+FFFFFFF000000000 C230000000000000_00
+FFF80001000007FE C31FFFFBFFFFE008_00
+00F2762EA6837956 436E4EC5D4D06F2A_01
+FFFFFFF800000000 C220000000000000_00
+FFF7E0FFFFFFFFFE C3203E0000000004_00
+00002E1175484626 42C708BAA4231300_00
+FFFFFFFC00000000 C210000000000000_00
+0000200020000FFE 42C000100007FF00_00
+000000000000068F 409A3C0000000000_00
+FFFFFFFE00000000 C200000000000000_00
+021FFFFFFFFBFFFF 4380FFFFFFFFDFFF_01
+FFFFFFFFFFFFFFF9 C01C000000000000_00
+FFFFFFFF00000000 C1F0000000000000_00
+FFFFFFD0000FFFFD C247FFF800018000_00
+000000BDF6658B83 4267BECCB1706000_00
+FFFFFFFF80000000 C1E0000000000000_00
+1000001FFDFFFFFF 43B000001FFDFFFF_01
+0000000000003B5B 40CDAD8000000000_00
+FFFFFFFFC0000000 C1D0000000000000_00
+FFFFFFBFFE0FFFFF C250007C00004000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+FFFFFFFFE0000000 C1C0000000000000_00
+FFFFFFFBF00007FF C2103FFFE0040000_00
+01E986274F48EAAD 437E986274F48EAA_01
+FFFFFFFFF0000000 C1B0000000000000_00
+1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A C0CA530000000000_00
+FFFFFFFFF8000000 C1A0000000000000_00
+7FF000000000FFFF 43DFFC000000003F_01
+00000003C2717FC3 420E138BFE180000_00
+FFFFFFFFFC000000 C190000000000000_00
+FFFFFFE00008001F C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA C130542600000000_00
+FFFFFFFFFE000000 C180000000000000_00
+0200000000000002 4380000000000000_01
+FFFFFFFFF8FDA53F C19C096B04000000_00
+FFFFFFFFFF000000 C170000000000000_00
+F6000003FFFFFFFE C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0 C048000000000000_00
+FFFFFFFFFF800000 C160000000000000_00
+FFFFFFFFFFBFFF7E C150002080000000_00
+00000000EE0FEA62 41EDC1FD4C400000_00
+FFFFFFFFFFC00000 C150000000000000_00
+0000007FFF9FFFFD 425FFFE7FFFF4000_00
+00000037F35EDC1D 424BF9AF6E0E8000_00
+FFFFFFFFFFE00000 C140000000000000_00
+FFFFFFF7FDFFFF7D C220040001060000_00
+00000000000001AD 407AD00000000000_00
+FFFFFFFFFFF00000 C130000000000000_00
+FFFFFF0000100020 C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A 43C3F8B3FDE3FE2F_01
+FFFFFFFFFFF80000 C120000000000000_00
+003FFFFFFFFC0001 434FFFFFFFFE0000_01
+000E48F9F4EBD30E 432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000 C110000000000000_00
+DFFFFFFFFFFBFFFE C3C0000000000200_01
+FC91C23EE8C9424F C38B71EE08B9B5ED_01
+FFFFFFFFFFFE0000 C100000000000000_00
+F7DFFBFFFFFFFFFE C3A0400800000000_01
+000000002CAE080C 41C6570406000000_00
+FFFFFFFFFFFF0000 C0F0000000000000_00
+FFFFC00010000020 C2CFFFF7FFFFF000_00
+04D921F917B20E40 43936487E45EC839_00
+FFFFFFFFFFFF8000 C0E0000000000000_00
+F8000FFFFFFFFFFD C39FFFC000000000_01
+FFF17C566BC7D811 C32D075328704FDE_00
+FFFFFFFFFFFFC000 C0D0000000000000_00
+00000000000000FE 406FC00000000000_00
+FFF82AC14930D386 C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000 C0C0000000000000_00
+00000000000003FC 408FE00000000000_00
+000E62EC60E119FC 432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000 C0B0000000000000_00
+FFFFEFF7FF7FFFFE C2B0080080000200_00
+0E2B1ECF210EEDC5 43AC563D9E421DDB_01
+FFFFFFFFFFFFF800 C0A0000000000000_00
+00000000007FFF1F 415FFFC7C0000000_00
+FFFFFE534F5676F7 C27ACB0A98909000_00
+FFFFFFFFFFFFFC00 C090000000000000_00
+0000001004FFFFFD 423004FFFFFD0000_00
+0000035C939669F1 428AE49CB34F8800_00
+FFFFFFFFFFFFFE00 C080000000000000_00
+1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFD_01
+FFFFFFFFFFFFFF91 C05BC00000000000_00
+FFFFFFFFFFFFFF00 C070000000000000_00
+01FFFFFFFBFFEFFE 437FFFFFFFBFFEFF_01
+000000000000016E 4076E00000000000_00
+FFFFFFFFFFFFFF80 C060000000000000_00
+FFF7FFFFFFFFF7FD C320000000001006_00
+FFFFF8E2BCFAC553 C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0 C050000000000000_00
+FFFFFBFFFFFE0FFE C290000007C00800_00
+00000001A4E704BF 41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0 C040000000000000_00
+1400007FFFFFFFFD 43B400007FFFFFFF_01
+FFFFFFFC93B187B4 C20B6273C2600000_00
+FFFFFFFFFFFFFFF0 C030000000000000_00
+40000000007FFFFD 43D0000000001FFF_01
+000000000067D468 4159F51A00000000_00
+FFFFFFFFFFFFFFF8 C020000000000000_00
+007FFEFFFFFBFFFE 435FFFBFFFFEFFFF_01
+FFFFFFE26CEC79F8 C23D931386080000_00
+FFFFFFFFFFFFFFFC C010000000000000_00
+00FFFFFF000000FF 436FFFFFE000001F_01
+FFFFFFFFE0D3983A C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE C000000000000000_00
+00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF BFF0000000000000_00
+000008000000027E 42A000000004FC00_00
+000000000000F4E8 40EE9D0000000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFF83FFDF C15F000840000000_00
+00000E11407887B2 42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+04000003FFFFFFF6 439000000FFFFFFF_01
+0000000000000513 40944C0000000000_00
+FFFFFFFFFFFFFFF7 C022000000000000_00
+BFFC00000000003E C3D000FFFFFFFFFF_01
+00000008D7BBB75B 4221AF776EB60000_00
+FFFFFFFFFFFFFFEF C031000000000000_00
+000FFFFBFFFC0000 432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23 C14952EE80000000_00
+FFFFFFFFFFFFFFDF C040800000000000_00
+FFBFDFFFBFFFFFFF C350080010000000_01
+000000000000007F 405FC00000000000_00
+FFFFFFFFFFFFFFBF C050400000000000_00
+00000007FF800003 421FFE00000C0000_00
+000000000002BB02 4105D81000000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEE7FF C0F1801000000000_00
+00264B2B9BAD0DA2 43432595CDD686D1_00
+FFFFFFFFFFFFFEFF C070100000000000_00
+0000000000100803 4130080300000000_00
+FF9B1DCB9F857D5E C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF C080080000000000_00
+FFFFFFBFFFFFEFEE C250000004048000_00
+F6FD7542899C1C6F C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF C090040000000000_00
+FF800000004001FF C35FFFFFFFEFFF80_01
+0000000002BE4932 4185F24990000000_00
+FFFFFFFFFFFFF7FF C0A0020000000000_00
+00001004000FFFFE 42B004000FFFFE00_00
+FFFFFF9DAA0123E0 C258957FB7080000_00
+FFFFFFFFFFFFEFFF C0B0010000000000_00
+00000001FDFFFDFE 41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF C0C0008000000000_00
+FE0FE00000000000 C37F020000000000_00
+0779ED944A4E2779 439DE7B65129389D_01
+FFFFFFFFFFFFBFFF C0D0004000000000_00
+FBFFFE0400000000 C3900007F0000000_00
+0000010127E03666 4270127E03666000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+FFFFF0200000FFFE C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFFFFFFEFFFF C0F0001000000000_00
+FFEFFE0000080000 C33001FFFFF80000_00
+FFFFFFFFFD3354EA C1866558B0000000_00
+FFFFFFFFFFFDFFFF C100000800000000_00
+003FF0000003FFFE 434FF8000001FFFF_00
+0000006375B23F7B 4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF C110000400000000_00
+000407FFFFFFFFF6 43101FFFFFFFFFD8_00
+0000000092117F38 41E2422FE7000000_00
+FFFFFFFFFFF7FFFF C120000200000000_00
+FFFFFFFFFFFF7FFF C0E0002000000000_00
+00000000000008BE 40A17C0000000000_00
+FFFFFFFFFFEFFFFF C130000100000000_00
+004000020FFFFFFF 4350000083FFFFFF_01
+FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF C140000080000000_00
+00FFFFFFFFFFFFFD 436FFFFFFFFFFFFF_01
+00000023C2C6F284 4241E16379420000_00
+FFFFFFFFFFBFFFFF C150000040000000_00
+FFFDDFFFFFFFFFFD C301000000000018_00
+00000000746356C4 41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF C160000020000000_00
+010000000000BFFF 4370000000000BFF_01
+FFFFFFFFFFFFFFFD C008000000000000_00
+FFFFFFFFFEFFFFFF C170000010000000_00
+FFFFBF7FFBFFFFFE C2D0200100000080_00
+00000006386CE889 4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF C180000008000000_00
+F00000F7FFFFFFFF C3AFFFFE10000000_01
+FFFDFC53090C46A4 C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+0000000000800047 41600008E0000000_00
+FFFFFFFFD693872E C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF C1A0000002000000_00
+000000007FBFFBFF 41DFEFFEFFC00000_00
+00000026A7845E35 424353C22F1A8000_00
+FFFFFFFFEFFFFFFF C1B0000001000000_00
+FFFFFFDFFFFFFBFD C240000002018000_00
+000000001433D14C 41B433D14C000000_00
+FFFFFFFFDFFFFFFF C1C0000000800000_00
+0001FFFFFFE0000E 42FFFFFFFE0000E0_00
+F0F23E8068D3D84A C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF C1D0000000400000_00
+F7FFBFFFFFFFBFFF C3A0008000000080_01
+FFFFBD29B7459087 C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF C1E0000000200000_00
+FFFFFFF8FFFFBFFF C21C000100040000_00
+FFFFFFFFFFEDDC06 C13223FA00000000_00
+FFFFFFFEFFFFFFFF C1F0000000100000_00
+FFFFFFF80001FFFF C21FFFF800040000_00
+0000000000002FF9 40C7FC8000000000_00
+FFFFFFFDFFFFFFFF C200000000080000_00
+004000040000FFFF 4350000100003FFF_01
+FFFFFFFFFFFFFFF1 C02E000000000000_00
+FFFFFFFBFFFFFFFF C210000000040000_00
+C0000000007FFFFA C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF C220000000020000_00
+7FFE000007FFFFFF 43DFFF800001FFFF_01
+000000000000000D 402A000000000000_00
+FFFFFFEFFFFFFFFF C230000000010000_00
+F80000000001007E C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6 C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF C240000000008000_00
+FFFFFE0001FEFFFF C27FFFE010001000_00
+000000000000013B 4073B00000000000_00
+FFFFFFBFFFFFFFFF C250000000004000_00
+0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
+4A16BD4128090C83 43D285AF504A0243_01
+FFFFFF7FFFFFFFFF C260000000002000_00
+00FFF7FFFF7FFFFE 436FFEFFFFEFFFFF_01
+0000000000000006 4018000000000000_00
+FFFFFEFFFFFFFFFF C270000000001000_00
+FBFFFFBFFFBFFFFF C390000100010000_01
+00000000000001BA 407BA00000000000_00
+FFFFFDFFFFFFFFFF C280000000000800_00
+0000000040000082 41D0000020800000_00
+FF07A2BF5B689F89 C36F0BA81492EC0E_01
+FFFFFBFFFFFFFFFF C290000000000400_00
+0000001FF8000008 423FF80000080000_00
+F87CAA7DE672DE8B C39E0D5608663485_01
+FFFFF7FFFFFFFFFF C2A0000000000200_00
+07FFF80000000002 439FFFE000000000_01
+0000000010A1E5B8 41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF C2B0000000000100_00
+F7FFFFE00007FFFF C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC C122A40800000000_00
+FFFFDFFFFFFFFFFF C2C0000000000080_00
+FFFFFF03FFFFFFC0 C26F800000080000_00
+EA579475948F0032 C3B5A86B8A6B70FF_01
+FFFFBFFFFFFFFFFF C2D0000000000040_00
+FC00000000003FF6 C38FFFFFFFFFFE00_01
+002E677AC313BF60 434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF C2E0000000000020_00
+02000007FF7FFFFF 438000003FFBFFFF_01
+0000000E999639F1 422D332C73E20000_00
+FFFEFFFFFFFFFFFF C2F0000000000010_00
+FFFF83FFFFFFFFBE C2DF000000001080_00
+000000000001537D 40F537D000000000_00
+FFFDFFFFFFFFFFFF C300000000000008_00
+EFFFFFC00000003D C3B000003FFFFFFF_01
+FFFFFFF21FEDFD35 C22BC02405960000_00
+FFFBFFFFFFFFFFFF C310000000000004_00
+FFFFFFF0000007FE C22FFFFFF0040000_00
+FFFFFFFFFFDE0839 C140FBE380000000_00
+FFF7FFFFFFFFFFFF C320000000000002_00
+0000007FFFE000FF 425FFFF8003FC000_00
+FFFFFFFF79F30F48 C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF C330000000000001_00
+FFFFFC13FFFFFFFD C28F600000001800_00
+0000000000001B85 40BB850000000000_00
+FFDFFFFFFFFFFFFF C340000000000000_01
+000008000007FFFE 42A000000FFFFC00_00
+12DB4409E5AE87E6 43B2DB4409E5AE87_01
+FFBFFFFFFFFFFFFF C350000000000000_01
+FFFFFFFFFFF7BFEE C120802400000000_00
+FFFFFFFFFFFFFFFD C008000000000000_00
+FF7FFFFFFFFFFFFF C360000000000000_01
+000000001040FFFE 41B040FFFE000000_00
+00000909A09C13D3 42A213413827A600_00
+FEFFFFFFFFFFFFFF C370000000000000_01
+FFFFFF01FFFFFF7F C26FC00000102000_00
+FFFFFF72E7D2575D C261A305B5146000_00
+FDFFFFFFFFFFFFFF C380000000000000_01
+FFFFFFFFFFFEFFDB C0F0025000000000_00
+0000000000000017 4037000000000000_00
+FBFFFFFFFFFFFFFF C390000000000000_01
+100000001FFFFFF6 43B00000001FFFFF_01
+000000114B12EF51 42314B12EF510000_00
+F7FFFFFFFFFFFFFF C3A0000000000000_01
+0407FFFFFFFFFEFF 43901FFFFFFFFFFB_01
+FFFFFF769F3A5C2C C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF C3B0000000000000_01
+FFFFFFFDF7FFFFFD C200400000180000_00
+FFFFFFFFFFFFFFF2 C02C000000000000_00
+DFFFFFFFFFFFFFFF C3C0000000000000_01
+FFFFFFFFFE0007FF C17FFF8010000000_00
+000000000000001E 403E000000000000_00
+BFFFFFFFFFFFFFFF C3D0000000000000_01
+FFF800000009FFFF C31FFFFFFFD80004_00
+0000000000007AA4 40DEA90000000000_00
+7FFFFFFFFFFFFFFF 43DFFFFFFFFFFFFF_01
+4080000000FFFFFF 43D0200000003FFF_01
+000000000DE7601D 41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF 43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE C348000000200001_00
+FFFFFFFFFFFFFFCA C04B000000000000_00
+1FFFFFFFFFFFFFFF 43BFFFFFFFFFFFFF_01
+000080400000003F 42E00800000007E0_00
+00000000001F75A5 413F75A500000000_00
+0FFFFFFFFFFFFFFF 43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE C230000030020000_00
+FFFFFEE775887420 C27188A778BE0000_00
+07FFFFFFFFFFFFFF 439FFFFFFFFFFFFF_01
+00000000000801FE 412003FC00000000_00
+0000000000213FF1 41409FF880000000_00
+03FFFFFFFFFFFFFF 438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE 439FFBFFFFFFFFFF_01
+0000000000000004 4010000000000000_00
+01FFFFFFFFFFFFFF 437FFFFFFFFFFFFF_01
+0000000820000003 4220400000060000_00
+FFFFFFF9AD105214 C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF 436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE C2AFE00000008400_00
+FFFFFFFFFFCC48E7 C149DB8C80000000_00
+007FFFFFFFFFFFFF 435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB C16E8B26A0000000_00
+003FFFFFFFFFFFFF 434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF C260080000082000_00
+FFFFFFFFFFF24425 C12B77B600000000_00
+001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
+200000001FFBFFFF 43C00000000FFDFF_01
+FFFFFF4E7115EC53 C26631DD4275A000_00
+000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF C29FF00000010400_00
+FFFFFC2E539ADCFE C28E8D6329181000_00
+0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF C190000004000000_00
+00000055084732F3 42554211CCBCC000_00
+0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00 C3D0002000000000_01
+FFFFFFFFFFFF8543 C0DEAF4000000000_00
+0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
+0000001FFBFFE000 423FFBFFE0000000_00
+FFFFFFFFFFFE491B C0FB6E5000000000_00
+0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
+FC00200000001FFE C38FFEFFFFFFFF00_01
+FFFFF16898822A24 C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE 43CFFF81FFFFFFFF_01
+FFFFFF8FFE18C7BF C25C0079CE104000_00
+00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD C270001000003000_00
+00F03620C1266ED9 436E06C41824CDDB_01
+00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF C3D0204000000000_01
+FFFFFFFFFFFFFFD5 C045800000000000_00
+00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE C31000001FF00008_00
+0000000000068684 411A1A1000000000_00
+000007FFFFFFFFFF 429FFFFFFFFFFC00_00
+DFFFFFE00000001E C3C000000FFFFFFF_01
+FFFFFFFFFFFFECF5 C0B30B0000000000_00
+000003FFFFFFFFFF 428FFFFFFFFFF800_00
+FFFF00400000FFFF C2EFF7FFFFE00020_00
+0000000000000002 4000000000000000_00
+000001FFFFFFFFFF 427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE C390000000000108_01
+0000000000000BC9 40A7920000000000_00
+000000FFFFFFFFFF 426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE C3DFE00000000008_01
+FFC274E35A70CD76 C34EC58E52C79945_00
+0000007FFFFFFFFF 425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD 43AFFFFFFFFDFFFF_01
+FFFFFFFF00E73AFC C1EFE318A0800000_00
+0000003FFFFFFFFF 424FFFFFFFFF8000_00
+FFC000000001000E C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9 C0FEA17000000000_00
+0000001FFFFFFFFF 423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
+0000000000000033 4049800000000000_00
+0000000FFFFFFFFF 422FFFFFFFFE0000_00
+000000001FFFBFFF 41BFFFBFFF000000_00
+FFFFFFEE6B141E1B C23194EBE1E50000_00
+00000007FFFFFFFF 421FFFFFFFFC0000_00
+FFFFFFFFF60007FF C1A3FFF002000000_00
+00000001AB310BA6 41FAB310BA600000_00
+00000003FFFFFFFF 420FFFFFFFF80000_00
+0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195 C0ACD60000000000_00
+00000001FFFFFFFF 41FFFFFFFFF00000_00
+FFFFFFFF8000000B C1DFFFFFFD400000_00
+00000019BA8D5559 4239BA8D55590000_00
+00000000FFFFFFFF 41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9 C390040000000000_01
+FFFFFFB6F062822D C25243E75F74C000_00
+000000007FFFFFFF 41DFFFFFFFC00000_00
+0001000000000082 42F0000000000820_00
+01CEAD9E2FB104A4 437CEAD9E2FB104A_01
+000000003FFFFFFF 41CFFFFFFF800000_00
+000003FFFFFFFF7C 428FFFFFFFFBE000_00
+FFFFFFFFFD681E78 C184BF0C40000000_00
+000000001FFFFFFF 41BFFFFFFF000000_00
+00002000400001FF 42C000200000FF80_00
+0000000000000018 4038000000000000_00
+000000000FFFFFFF 41AFFFFFFE000000_00
+3FFF80000000003E 43CFFFC000000000_01
+FFFFFFFFFFFFFF95 C05AC00000000000_00
+0000000007FFFFFF 419FFFFFFC000000_00
+010000BFFFFFFFFF 4370000BFFFFFFFF_01
+0000001697087B19 423697087B190000_00
+0000000003FFFFFF 418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD C390000000004400_01
+0000000E64BDFC55 422CC97BF8AA0000_00
+0000000001FFFFFF 417FFFFFF0000000_00
+FC00000001FFFFFE C38FFFFFFFF00000_01
+FFFED156A62AB849 C2F2EA959D547B70_00
+0000000000FFFFFF 416FFFFFE0000000_00
+FFFFFFF83FEFFFFD C21F0040000C0000_00
+00015354EAE7C259 42F5354EAE7C2590_00
+00000000007FFFFF 415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F C060200000000000_00
+FFFFFFF0F4DF3C75 C22E164187160000_00
+00000000003FFFFF 414FFFFF80000000_00
+FFFA000000001FFF C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000001FFFFF 413FFFFF00000000_00
+FFFFFFFFFF7FFE40 C160003800000000_00
+FFFFFFDB5433CB9B C24255E61A328000_00
+00000000000FFFFF 412FFFFE00000000_00
+FFFFFDFFDFFDFFFD C280010010001800_00
+FFFFFFFFFFDEAE1F C140A8F080000000_00
+000000000007FFFF 411FFFFC00000000_00
+FFFFFFFFF0080006 C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7 C1F88CA213900000_00
+000000000003FFFF 410FFFF800000000_00
+00000001FBFFFFFF 41FFBFFFFFF00000_00
+000003757D8B12ED 428BABEC58976800_00
+000000000001FFFF 40FFFFF000000000_00
+FFFFFE07F7FFFFFF C27F808000001000_00
+00000A654064E046 42A4CA80C9C08C00_00
+000000000000FFFF 40EFFFE000000000_00
+08000000000017FF 43A000000000002F_01
+FFFFFFFFFFFFFFE7 C039000000000000_00
+0000000000007FFF 40DFFFC000000000_00
+07FFFFFFFFFFFDF6 439FFFFFFFFFFFF7_01
+FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
+0000000000003FFF 40CFFF8000000000_00
+0000300004000000 42C8000200000000_00
+FFFFFFF70B77F34F C221E91019620000_00
+0000000000001FFF 40BFFF0000000000_00
+FFFFFF80006FFFFE C25FFFE400008000_00
+0000013EB4D67EC8 4273EB4D67EC8000_00
+0000000000000FFF 40AFFE0000000000_00
+BFFFDFFFFBFFFFFF C3D0000800010000_01
+0005CEAF34EA1DC7 43173ABCD3A8771C_00
+00000000000007FF 409FFC0000000000_00
+00004800007FFFFD 42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB C014000000000000_00
+00000000000003FF 408FF80000000000_00
+0000000200001000 4200000080000000_00
+00000000000360D0 410B068000000000_00
+00000000000001FF 407FF00000000000_00
+01003FFFFFFFFFFC 437003FFFFFFFFFF_01
+00C000708FF1BA51 4368000E11FE374A_01
+00000000000000FF 406FE00000000000_00
+F802000003FFFFFF C39FF7FFFFF00000_01
+0F9E07DCC0BDC061 43AF3C0FB9817B80_01
+000000000000007F 405FC00000000000_00
+03FF0000000000FF 438FF80000000007_01
+FFFFFFE1B9B2A079 C23E464D5F870000_00
+000000000000003F 404F800000000000_00
+FFF80000000080FF C31FFFFFFFFDFC04_00
+00000000001EB5B4 413EB5B400000000_00
+000000000000001F 403F000000000000_00
+000000000077FBFE 415DFEFF80000000_00
+00000000005AC607 4156B181C0000000_00
+000000000000000F 402E000000000000_00
+FFFFFFFEF80000FF C1F07FFFF0100000_00
+000005C5B9D66984 429716E759A61000_00
+0000000000000007 401C000000000000_00
+C001FFFFFFF00000 C3CFFF0000000800_00
+00001D06B372AA06 42BD06B372AA0600_00
+0000000000000003 4008000000000000_00
From 91d9b6800bd240967b0c15b7160853088f469d29 Mon Sep 17 00:00:00 2001
From: bbracker
Date: Wed, 6 Oct 2021 16:55:38 -0400
Subject: [PATCH 05/10] update linker scripts to look for vmlinux files
---
wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh | 3 +++
wally-pipelined/linux-testgen/linux-testvectors/tvUnlinker.sh | 3 +++
2 files changed, 6 insertions(+)
diff --git a/wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh b/wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh
index f694b112a..70ef47109 100755
--- a/wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh
+++ b/wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh
@@ -2,4 +2,7 @@ echo "Warning: this script will only work if your repo is on Tera"
ln -s /courses/e190ax/buildroot_boot/all.txt all.txt
ln -s /courses/e190ax/buildroot_boot/bootmem.txt bootmem.txt
ln -s /courses/e190ax/buildroot_boot/ram.txt ram.txt
+ln -s /courses/e190ax/buildroot_boot/vmlinux.objdump vmlinux.objdump
+ln -s /courses/e190ax/buildroot_boot/vmlinux.objdump.addr vmlinux.objdump.addr
+ln -s /courses/e190ax/buildroot_boot/vmlinux.objdump.lab vmlinux.objdump.lab
echo "Done!"
diff --git a/wally-pipelined/linux-testgen/linux-testvectors/tvUnlinker.sh b/wally-pipelined/linux-testgen/linux-testvectors/tvUnlinker.sh
index bded8a16e..acf155c00 100755
--- a/wally-pipelined/linux-testgen/linux-testvectors/tvUnlinker.sh
+++ b/wally-pipelined/linux-testgen/linux-testvectors/tvUnlinker.sh
@@ -3,4 +3,7 @@
unlink all.txt
unlink bootmem.txt
unlink ram.txt
+unlink vmlinux.objdump
+unlink vmlinux.objdump.addr
+unlink vmlinux.objdump.lab
echo "Done!"
From 28e147bb1969897b3114f37e20459e90bb263439 Mon Sep 17 00:00:00 2001
From: "James E. Stine"
Date: Thu, 7 Oct 2021 15:14:54 -0500
Subject: [PATCH 06/10] update scripts
---
wally-pipelined/testbench/fp/README.md | 115 ++
.../testbench/fp/create_vectors32_64.csh | 11 +
.../testbench/fp/create_vectors64_32.csh | 13 +
.../testbench/fp/create_vectorsi.csh | 18 +
wally-pipelined/testbench/fp/i32_f32_rd.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f32_rne.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f32_ru.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f32_rz.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f64_rd.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f64_rne.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f64_ru.tv | 744 ++++----
wally-pipelined/testbench/fp/i32_f64_rz.tv | 744 ++++----
wally-pipelined/testbench/fp/i64_f32_rd.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f32_rne.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f32_ru.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f32_rz.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f64_rd.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f64_rne.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f64_ru.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/i64_f64_rz.tv | 1512 ++++++++---------
wally-pipelined/testbench/fp/ui32_f32_rd.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f32_rne.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f32_ru.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f32_rz.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f64_rd.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f64_rne.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f64_ru.tv | 372 ++++
wally-pipelined/testbench/fp/ui32_f64_rz.tv | 372 ++++
wally-pipelined/testbench/fp/ui64_f32_rd.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f32_rne.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f32_ru.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f32_rz.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f64_rd.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f64_rne.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f64_ru.tv | 756 +++++++++
wally-pipelined/testbench/fp/ui64_f64_rz.tv | 756 +++++++++
wally-pipelined/testbench/fp/undy.sh | 2 +
37 files changed, 18207 insertions(+), 9024 deletions(-)
create mode 100644 wally-pipelined/testbench/fp/README.md
create mode 100644 wally-pipelined/testbench/fp/ui32_f32_rd.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f32_rne.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f32_ru.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f32_rz.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f64_rd.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f64_rne.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f64_ru.tv
create mode 100644 wally-pipelined/testbench/fp/ui32_f64_rz.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f32_rd.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f32_rne.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f32_ru.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f32_rz.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f64_rd.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f64_rne.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f64_ru.tv
create mode 100644 wally-pipelined/testbench/fp/ui64_f64_rz.tv
create mode 100755 wally-pipelined/testbench/fp/undy.sh
diff --git a/wally-pipelined/testbench/fp/README.md b/wally-pipelined/testbench/fp/README.md
new file mode 100644
index 000000000..f8dcfeb63
--- /dev/null
+++ b/wally-pipelined/testbench/fp/README.md
@@ -0,0 +1,115 @@
+These are the testvectors (TV) to test the floating-point units using
+Berkeley TestFloat written originally by John Hauser. TestFloat
+requires both TestFloat and SoftFloat.
+
+The locations at time of this README is found here:
+TestFloat-3e: http://www.jhauser.us/arithmetic/TestFloat.html
+SoftFloat-3e: http://www.jhauser.us/arithmetic/SoftFloat.html
+
+These files have been compiled on a x86_64 environment by going into
+the build/Linux-x86_64-GCC directory and typing make. A script
+createX.sh (e.g., create_vectors32.sh) has been included that create
+the TV for each rounding mode and operation. These scripts must be
+run in the build directory of TestFloat.
+
+After each TV has been created a script (included) is run called
+undy.sh that puts an underscore between vector to allow SystemVerilog
+readmemh to read correctly.
+
+./undy.sh file.tv
+
+To remove all the underscores from all the TV files, one can run the
+command that will add underscores appropriately to all the files.
+
+sed -i 's/ /_/g' *.tv
+
+Note: due to size, the fxx_fma_xx.tv vectors are not included.
+However, they can easily be created with the create scripts.
+
+James Stine
+10/7/2021
+
+
+File Sizes
+ 600 1800 17400 f32_f64_rd.tv
+ 600 1800 17400 f32_f64_rne.tv
+ 600 1800 17400 f32_f64_ru.tv
+ 600 1800 17400 f32_f64_rz.tv
+ 600 1800 17400 f32_i64_rd.tv
+ 600 1800 17400 f32_i64_rne.tv
+ 600 1800 17400 f32_i64_ru.tv
+ 600 1800 17400 f32_i64_rz.tv
+ 600 1800 17400 f32_ui64_rd.tv
+ 600 1800 17400 f32_ui64_rne.tv
+ 600 1800 17400 f32_ui64_ru.tv
+ 600 1800 17400 f32_ui64_rz.tv
+ 46464 185856 2509056 f64_add_rd.tv
+ 46464 185856 2509056 f64_add_rne.tv
+ 46464 185856 2509056 f64_add_ru.tv
+ 46464 185856 2509056 f64_add_rz.tv
+ 46464 185856 2509056 f64_div_rd.tv
+ 46464 185856 2509056 f64_div_rne.tv
+ 46464 185856 2509056 f64_div_ru.tv
+ 46464 185856 2509056 f64_div_rz.tv
+ 768 2304 22272 f64_f32_rd.tv
+ 768 2304 22272 f64_f32_rne.tv
+ 768 2304 22272 f64_f32_ru.tv
+ 768 2304 22272 f64_f32_rz.tv
+ 6133248 30666240 435460608 f64_fma_rd.tv
+ 6133248 30666240 435460608 f64_fma_rne.tv
+ 6133248 30666240 435460608 f64_fma_ru.tv
+ 6133248 30666240 435460608 f64_fma_rz.tv
+ 768 2304 22272 f64_i32_rd.tv
+ 768 2304 22272 f64_i32_rne.tv
+ 768 2304 22272 f64_i32_ru.tv
+ 768 2304 22272 f64_i32_rz.tv
+ 46464 185856 2509056 f64_mul_rd.tv
+ 46464 185856 2509056 f64_mul_rne.tv
+ 46464 185856 2509056 f64_mul_ru.tv
+ 46464 185856 2509056 f64_mul_rz.tv
+ 768 2304 28416 f64_sqrt_rd.tv
+ 768 2304 28416 f64_sqrt_rne.tv
+ 768 2304 28416 f64_sqrt_ru.tv
+ 768 2304 28416 f64_sqrt_rz.tv
+ 46464 185856 2509056 f64_sub_rd.tv
+ 46464 185856 2509056 f64_sub_rne.tv
+ 46464 185856 2509056 f64_sub_ru.tv
+ 46464 185856 2509056 f64_sub_rz.tv
+ 768 2304 22272 f64_ui32_rd.tv
+ 768 2304 22272 f64_ui32_rne.tv
+ 768 2304 22272 f64_ui32_ru.tv
+ 768 2304 22272 f64_ui32_rz.tv
+ 372 1116 7812 i32_f32_rd.tv
+ 372 1116 7812 i32_f32_rne.tv
+ 372 1116 7812 i32_f32_ru.tv
+ 372 1116 7812 i32_f32_rz.tv
+ 372 1116 10788 i32_f64_rd.tv
+ 372 1116 10788 i32_f64_rne.tv
+ 372 1116 10788 i32_f64_ru.tv
+ 372 1116 10788 i32_f64_rz.tv
+ 756 2268 21924 i64_f32_rd.tv
+ 756 2268 21924 i64_f32_rne.tv
+ 756 2268 21924 i64_f32_ru.tv
+ 756 2268 21924 i64_f32_rz.tv
+ 756 2268 27972 i64_f64_rd.tv
+ 756 2268 27972 i64_f64_rne.tv
+ 756 2268 27972 i64_f64_ru.tv
+ 756 2268 27972 i64_f64_rz.tv
+ 372 1116 7812 ui32_f32_rd.tv
+ 372 1116 7812 ui32_f32_rne.tv
+ 372 1116 7812 ui32_f32_ru.tv
+ 372 1116 7812 ui32_f32_rz.tv
+ 372 1116 10788 ui32_f64_rd.tv
+ 372 1116 10788 ui32_f64_rne.tv
+ 372 1116 10788 ui32_f64_ru.tv
+ 372 1116 10788 ui32_f64_rz.tv
+ 756 2268 21924 ui64_f32_rd.tv
+ 756 2268 21924 ui64_f32_rne.tv
+ 756 2268 21924 ui64_f32_ru.tv
+ 756 2268 21924 ui64_f32_rz.tv
+ 756 2268 27972 ui64_f64_rd.tv
+ 756 2268 27972 ui64_f64_rne.tv
+ 756 2268 27972 ui64_f64_ru.tv
+ 756 2268 27972 ui64_f64_rz.tv
+ 25313952 125751264 1783125024 total
+
diff --git a/wally-pipelined/testbench/fp/create_vectors32_64.csh b/wally-pipelined/testbench/fp/create_vectors32_64.csh
index 13f4c7bed..63ba70d13 100755
--- a/wally-pipelined/testbench/fp/create_vectors32_64.csh
+++ b/wally-pipelined/testbench/fp/create_vectors32_64.csh
@@ -3,3 +3,14 @@
./testfloat_gen -rminMag f32_to_f64 > f32_f64_rz.tv
./testfloat_gen -rmax f32_to_f64 > f32_f64_ru.tv
./testfloat_gen -rmin f32_to_f64 > f32_f64_rd.tv
+
+./testfloat_gen -rnear_even f32_to_i64 > f32_i64_rne.tv
+./testfloat_gen -rminMag f32_to_i64 > f32_i64_rz.tv
+./testfloat_gen -rmax f32_to_i64 > f32_i64_ru.tv
+./testfloat_gen -rmin f32_to_i64 > f32_i64_rd.tv
+
+./testfloat_gen -rnear_even f32_to_ui64 > f32_ui64_rne.tv
+./testfloat_gen -rminMag f32_to_ui64 > f32_ui64_rz.tv
+./testfloat_gen -rmax f32_to_ui64 > f32_ui64_ru.tv
+./testfloat_gen -rmin f32_to_ui64 > f32_ui64_rd.tv
+
diff --git a/wally-pipelined/testbench/fp/create_vectors64_32.csh b/wally-pipelined/testbench/fp/create_vectors64_32.csh
index 3448d9c42..45f054054 100755
--- a/wally-pipelined/testbench/fp/create_vectors64_32.csh
+++ b/wally-pipelined/testbench/fp/create_vectors64_32.csh
@@ -3,3 +3,16 @@
./testfloat_gen -rminMag f64_to_f32 > f64_f32_rz.tv
./testfloat_gen -rmax f64_to_f32 > f64_f32_ru.tv
./testfloat_gen -rmin f64_to_f32 > f64_f32_rd.tv
+
+./testfloat_gen -rnear_even f64_to_i32 > f64_i32_rne.tv
+./testfloat_gen -rminMag f64_to_i32 > f64_i32_rz.tv
+./testfloat_gen -rmax f64_to_i32 > f64_i32_ru.tv
+./testfloat_gen -rmin f64_to_i32 > f64_i32_rd.tv
+
+./testfloat_gen -rnear_even f64_to_ui32 > f64_ui32_rne.tv
+./testfloat_gen -rminMag f64_to_ui32 > f64_ui32_rz.tv
+./testfloat_gen -rmax f64_to_ui32 > f64_ui32_ru.tv
+./testfloat_gen -rmin f64_to_ui32 > f64_ui32_rd.tv
+
+
+
diff --git a/wally-pipelined/testbench/fp/create_vectorsi.csh b/wally-pipelined/testbench/fp/create_vectorsi.csh
index 7a342e9fa..f6c249839 100755
--- a/wally-pipelined/testbench/fp/create_vectorsi.csh
+++ b/wally-pipelined/testbench/fp/create_vectorsi.csh
@@ -19,5 +19,23 @@
./testfloat_gen -rmax -i64_to_f32 > i64_f32_ru.tv
./testfloat_gen -rmin -i64_to_f32 > i64_f32_rd.tv
+./testfloat_gen -rnear_even -ui32_to_f64 > ui32_f64_rne.tv
+./testfloat_gen -rminMag -ui32_to_f64 > ui32_f64_rz.tv
+./testfloat_gen -rmax -ui32_to_f64 > ui32_f64_ru.tv
+./testfloat_gen -rmin -ui32_to_f64 > ui32_f64_rd.tv
+./testfloat_gen -rnear_even -ui64_to_f64 > ui64_f64_rne.tv
+./testfloat_gen -rminMag -ui64_to_f64 > ui64_f64_rz.tv
+./testfloat_gen -rmax -ui64_to_f64 > ui64_f64_ru.tv
+./testfloat_gen -rmin -ui64_to_f64 > ui64_f64_rd.tv
+
+./testfloat_gen -rnear_even -ui32_to_f32 > ui32_f32_rne.tv
+./testfloat_gen -rminMag -ui32_to_f32 > ui32_f32_rz.tv
+./testfloat_gen -rmax -ui32_to_f32 > ui32_f32_ru.tv
+./testfloat_gen -rmin -ui32_to_f32 > ui32_f32_rd.tv
+
+./testfloat_gen -rnear_even -ui64_to_f32 > ui64_f32_rne.tv
+./testfloat_gen -rminMag -ui64_to_f32 > ui64_f32_rz.tv
+./testfloat_gen -rmax -ui64_to_f32 > ui64_f32_ru.tv
+./testfloat_gen -rmin -ui64_to_f32 > ui64_f32_rd.tv
diff --git a/wally-pipelined/testbench/fp/i32_f32_rd.tv b/wally-pipelined/testbench/fp/i32_f32_rd.tv
index e065d28ac..816f83ef2 100644
--- a/wally-pipelined/testbench/fp/i32_f32_rd.tv
+++ b/wally-pipelined/testbench/fp/i32_f32_rd.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 4DFF7FFF_01
-FFFFC48E C66DC800_00
-00000000 00000000_00
-007FFFCD 4AFFFF9A_00
-00009E14 471E1400_00
-00000001 3F800000_00
-001FFFFB 49FFFFD8_00
-FFFFDE38 C6072000_00
-00000002 40000000_00
-FFDFFC02 CA000FF8_00
-FB794C79 CC90D671_01
-00000004 40800000_00
-F00FFFFE CD7F0001_01
-00000A95 45295000_00
-00000008 41000000_00
-FFFFF97F C4D02000_00
-FFAE458D CAA374E6_00
-00000010 41800000_00
-0101001E 4B80800F_00
-29EB4561 4E27AD15_01
-00000020 42000000_00
-8001FFEE CEFFFC01_01
-FFFBDD08 C8845F00_00
-00000040 42800000_00
-FFF03FF9 C97C0070_00
-FFCEDF36 CA448328_00
-00000080 43000000_00
-0000F01F 47701F00_00
-00000279 441E4000_00
-00000100 43800000_00
-BFFFFFEF CE800001_01
-00000007 40E00000_00
-00000200 44000000_00
-010BFFFD 4B85FFFE_01
-FFFFF590 C5270000_00
-00000400 44800000_00
-F7FFFEFB CD000011_01
-2FEA335F 4E3FA8CD_01
-00000800 45000000_00
-FFC07FFF CA7E0004_00
-177957FD 4DBBCABF_01
-00001000 45800000_00
-01FBFFEE 4BFDFFF7_00
-FFFFFAC9 C4A6E000_00
-00002000 46000000_00
-FFFF8004 C6FFF800_00
-FFFBE0DE C883E440_00
-00004000 46800000_00
-3F00001E 4E7C0000_01
-00000000 00000000_00
-00008000 47000000_00
-FF8201FF CAFBFC02_00
-FFFFD2F1 C6343C00_00
-00010000 47800000_00
-0000047E 448FC000_00
-0011B7E5 498DBF28_00
-00020000 48000000_00
-02200200 4C080080_00
-0013F7E6 499FBF30_00
-00040000 48800000_00
-FFFDC007 C80FFE40_00
-FD0ABD9A CC3D509A_01
-00080000 49000000_00
-0000607F 46C0FE00_00
-00003CEE 4673B800_00
-00100000 49800000_00
-DFDFE000 CE008080_00
-FFFB1642 C89D37C0_00
-00200000 4A000000_00
-FC000078 CC7FFFE2_00
-5F70EEC1 4EBEE1DD_01
-00400000 4A800000_00
-00100082 49800410_00
-FFFFFE21 C3EF8000_00
-00800000 4B000000_00
-FF7BFF7F CB040081_00
-FFFF6393 C71C6D00_00
-01000000 4B800000_00
-07EFFEFD 4CFDFFDF_01
-FFFFFDB4 C4130000_00
-02000000 4C000000_00
-8002FFFF CEFFFA01_01
-FFFFC8E2 C65C7800_00
-04000000 4C800000_00
-FFFC0DFE C87C8080_00
-FFFFFF1B C3650000_00
-08000000 4D000000_00
-03FFFDBF 4C7FFF6F_01
-0001092B 47849580_00
-10000000 4D800000_00
-007FBFFD 4AFF7FFA_00
-00B4F3D1 4B34F3D1_00
-20000000 4E000000_00
-FEF801FF CB83FF01_01
-00000005 40A00000_00
-40000000 4E800000_00
-BFF3FFFE CE801801_01
-0001806B 47C03580_00
-80000000 CF000000_00
-0000A07E 47207E00_00
-FFFFA59F C6B4C200_00
-C0000000 CE800000_00
-E0007FDE CDFFFC02_01
-FFF8343E C8F97840_00
-E0000000 CE000000_00
-0000FF7C 477F7C00_00
-FFFFFFF7 C1100000_00
-F0000000 CD800000_00
-BDFFFFFC CE840001_01
-FFFFE3C1 C5E1F800_00
-F8000000 CD000000_00
-28003FFE 4E2000FF_01
-00000000 00000000_00
-FC000000 CC800000_00
-00EEFFFF 4B6EFFFF_00
-00003EB0 467AC000_00
-FE000000 CC000000_00
-00000F7D 4577D000_00
-FFFFFF0F C3710000_00
-FF000000 CB800000_00
-0000406D 4680DA00_00
-0000001A 41D00000_00
-FF800000 CB000000_00
-203FFFFD 4E00FFFF_01
-0000000A 41200000_00
-FFC00000 CA800000_00
-FFFF007C C77F8400_00
-0000009B 431B0000_00
-FFE00000 CA000000_00
-00E00FFF 4B600FFF_00
-00000006 40C00000_00
-FFF00000 C9800000_00
-00200FFC 4A003FF0_00
-00000714 44E28000_00
-FFF80000 C9000000_00
-F800040E CCFFFF7F_01
-00000013 41980000_00
-FFFC0000 C8800000_00
-F83BFFFF CCF88001_01
-FFF3F584 C940A7C0_00
-FFFE0000 C8000000_00
-F6FFFBFF CD100041_01
-FFFFFFF0 C1800000_00
-FFFF0000 C7800000_00
-80003FFD CEFFFF81_01
-FFFFFFAD C2A60000_00
-FFFF8000 C7000000_00
-004001FD 4A8003FA_00
-000D734E 495734E0_00
-FFFFC000 C6800000_00
-006003FE 4AC007FC_00
-FF9DBAA8 CAC48AB0_00
-FFFFE000 C6000000_00
-000403EE 48807DC0_00
-00734668 4AE68CD0_00
-FFFFF000 C5800000_00
-01200002 4B900001_00
-FF8874A5 CAEF16B6_00
-FFFFF800 C5000000_00
-00060001 48C00020_00
-FFFFFFF8 C1000000_00
-FFFFFC00 C4800000_00
-001FFEDD 49FFF6E8_00
-FFFC56DF C86A4840_00
-FFFFFE00 C4000000_00
-EFFFEFFD CD800081_01
-FECF5EC6 CB98509D_00
-FFFFFF00 C3800000_00
-1FF00002 4DFF8000_01
-F6DB786B CD12487A_01
-FFFFFF80 C3000000_00
-F0000FBE CD7FFF05_01
-00000009 41100000_00
-FFFFFFC0 C2800000_00
-0010801F 498400F8_00
-0001F238 47F91C00_00
-FFFFFFE0 C2000000_00
-F8000047 CCFFFFF8_01
-0002133C 4804CF00_00
-FFFFFFF0 C1800000_00
-003C001F 4A70007C_00
-000001F1 43F88000_00
-FFFFFFF8 C1000000_00
-FFDFBFFF CA010004_00
-FF5E507F CB21AF81_00
-FFFFFFFC C0800000_00
-037FFFDE 4C5FFFF7_01
-FFFD7C6F C820E440_00
-FFFFFFFE C0000000_00
-000000FD 437D0000_00
-FFFFF42A C53D6000_00
-FFFFFFFF BF800000_00
-021FFF7D 4C07FFDF_01
-0000000A 41200000_00
-FFFFFFFD C0400000_00
-4010FFFF 4E8021FF_01
-FFFFFFD3 C2340000_00
-FFFFFFFB C0A00000_00
-FFFF800B C6FFEA00_00
-000000B8 43380000_00
-FFFFFFF7 C1100000_00
-FF800803 CAFFEFFA_00
-FFFFFFFE C0000000_00
-FFFFFFEF C1880000_00
-00803FFB 4B003FFB_00
-00000308 44420000_00
-FFFFFFDF C2040000_00
-2107FFFE 4E041FFF_01
-FFE15D4F C9F51588_00
-FFFFFFBF C2820000_00
-400087FD 4E80010F_01
-0000000F 41700000_00
-FFFFFF7F C3010000_00
-FDFC007E CC00FFE1_01
-00000006 40C00000_00
-FFFFFEFF C3808000_00
-FFF80100 C8FFE000_00
-FFFFFE99 C3B38000_00
-FFFFFDFF C4004000_00
-03000002 4C400000_01
-FFF716EA C90E9160_00
-FFFFFBFF C4802000_00
-C7FDFFFF CE600801_01
-FFFFE327 C5E6C800_00
-FFFFF7FF C5001000_00
-0103DFFE 4B81EFFF_00
-07661FD8 4CECC3FB_00
-FFFFEFFF C5800800_00
-83FFFFFE CEF80001_01
-FCD956DB CC49AA4A_01
-FFFFDFFF C6000400_00
-FF2001FD CB5FFE03_00
-E4D35BBF CDD96523_01
-FFFFBFFF C6800200_00
-DFEFEFFE CE004041_01
-05DA4300 4CBB4860_00
-FFFF7FFF C7000100_00
-40001040 4E800020_01
-812EDF40 CEFDA242_01
-FFFEFFFF C7800080_00
-FFFFC007 C67FE400_00
-00B6FCC9 4B36FCC9_00
-FFFDFFFF C8000040_00
-000007FE 44FFC000_00
-FC3DE950 CC7085AC_00
-FFFBFFFF C8800020_00
-7FFFFE03 4EFFFFFC_01
-FEB02B59 CBA7EA54_01
-FFF7FFFF C9000010_00
-10FF7FFF 4D87FBFF_01
-00008D5E 470D5E00_00
-FFEFFFFF C9800008_00
-FFFF007E C77F8200_00
-001C2108 49E10840_00
-FFDFFFFF CA000004_00
-00FFC001 4B7FC001_00
-F01C6B36 CD7E394D_01
-FFBFFFFF CA800002_00
-FFFF7FFF C7000100_00
-FFFFD055 C63EAC00_00
-FF7FFFFF CB000001_00
-027BFFFE 4C1EFFFF_01
-FF3090D0 CB4F6F30_00
-FEFFFFFF CB800001_01
-00082040 49020400_00
-0000006E 42DC0000_00
-FDFFFFFF CC000001_01
-FDFFFF87 CC00001F_01
-04C3764D 4C986EC9_01
-FBFFFFFF CC800001_01
-0006007E 48C00FC0_00
-000001EF 43F78000_00
-F7FFFFFF CD000001_01
-FFBF7FFE CA810004_00
-FF1C4E5A CB63B1A6_00
-EFFFFFFF CD800001_01
-FFF97FFD C8D00060_00
-000001D1 43E88000_00
-DFFFFFFF CE000001_01
-2FFFFFFE 4E3FFFFF_01
-00136721 499B3908_00
-BFFFFFFF CE800001_01
-00004BFF 4697FE00_00
-00000544 44A88000_00
-7FFFFFFF 4EFFFFFF_01
-007FDFFB 4AFFBFF6_00
-FFF8BD5E C8E85440_00
-3FFFFFFF 4E7FFFFF_01
-FFBF8003 CA80FFFA_00
-FFFE45D2 C7DD1700_00
-1FFFFFFF 4DFFFFFF_01
-FFFFFDBF C4104000_00
-FFFFF189 C5677000_00
-0FFFFFFF 4D7FFFFF_01
-FFFE6FFE C7C80100_00
-FC8672A0 CC5E6358_00
-07FFFFFF 4CFFFFFF_01
-00000107 43838000_00
-FFFCCA70 C84D6400_00
-03FFFFFF 4C7FFFFF_01
-002107FE 4A041FF8_00
-FFFF48E7 C7371900_00
-01FFFFFF 4BFFFFFF_01
-F7FDFFEE CD002002_01
-00000010 41800000_00
-00FFFFFF 4B7FFFFF_00
-FFFF01FD C77E0300_00
-0000FAEF 477AEF00_00
-007FFFFF 4AFFFFFE_00
-00FC0001 4B7C0001_00
-000000F5 43750000_00
-003FFFFF 4A7FFFFC_00
-FFE07FC0 C9FC0200_00
-001AFFFB 49D7FFD8_00
-001FFFFF 49FFFFF8_00
-00101FFD 4980FFE8_00
-FF4613B2 CB39EC4E_00
-000FFFFF 497FFFF0_00
-F00005FE CD7FFFA1_01
-00036402 48590080_00
-0007FFFF 48FFFFE0_00
-0404FFFF 4C809FFF_01
-021C2358 4C0708D6_00
-0003FFFF 487FFFC0_00
-FFFFFD02 C43F8000_00
-FFFF41C6 C73E3A00_00
-0001FFFF 47FFFF80_00
-00000007 40E00000_00
-27F174DE 4E1FC5D3_01
-0000FFFF 477FFF00_00
-000083F5 4703F500_00
-FFFFFFFB C0A00000_00
-00007FFF 46FFFE00_00
-FE7FDFFE CBC01001_00
-FFFFFFFD C0400000_00
-00003FFF 467FFC00_00
-DBBFFFFE CE110001_01
-00000404 44808000_00
-00001FFF 45FFF800_00
-FFFFC018 C67FA000_00
-00002853 46214C00_00
-00000FFF 457FF000_00
-03FE007F 4C7F801F_01
-FFFFF124 C56DC000_00
-000007FF 44FFE000_00
-FFFFEFBE C5821000_00
-FFFB9AD8 C88CA500_00
-000003FF 447FC000_00
-DFFFFDFE CE000009_01
-FFFFFD95 C41AC000_00
-000001FF 43FF8000_00
-FDFFFFFF CC000001_01
-FFFFFFD0 C2400000_00
-000000FF 437F0000_00
-0037FFE0 4A5FFF80_00
-010EC496 4B87624B_00
-0000007F 42FE0000_00
-B8007FFF CE8FFF01_01
-00000012 41900000_00
-0000003F 427C0000_00
-02003FFC 4C000FFF_00
-FFFFFFEF C1880000_00
-0000001F 41F80000_00
-FF7FFF02 CB0000FE_00
-FFFFE2CE C5E99000_00
-0000000F 41700000_00
-0000A00D 47200D00_00
-FFFFFE44 C3DE0000_00
-00000007 40E00000_00
-0003FFFA 487FFE80_00
-000038E7 46639C00_00
-00000003 40400000_00
+1FEFFFEF_4DFF7FFF_01
+FFFFC48E_C66DC800_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00009E14_471E1400_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+FFFFDE38_C6072000_00
+00000002_40000000_00
+FFDFFC02_CA000FF8_00
+FB794C79_CC90D671_01
+00000004_40800000_00
+F00FFFFE_CD7F0001_01
+00000A95_45295000_00
+00000008_41000000_00
+FFFFF97F_C4D02000_00
+FFAE458D_CAA374E6_00
+00000010_41800000_00
+0101001E_4B80800F_00
+29EB4561_4E27AD15_01
+00000020_42000000_00
+8001FFEE_CEFFFC01_01
+FFFBDD08_C8845F00_00
+00000040_42800000_00
+FFF03FF9_C97C0070_00
+FFCEDF36_CA448328_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000279_441E4000_00
+00000100_43800000_00
+BFFFFFEF_CE800001_01
+00000007_40E00000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+FFFFF590_C5270000_00
+00000400_44800000_00
+F7FFFEFB_CD000011_01
+2FEA335F_4E3FA8CD_01
+00000800_45000000_00
+FFC07FFF_CA7E0004_00
+177957FD_4DBBCABF_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+FFFFFAC9_C4A6E000_00
+00002000_46000000_00
+FFFF8004_C6FFF800_00
+FFFBE0DE_C883E440_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000000_00000000_00
+00008000_47000000_00
+FF8201FF_CAFBFC02_00
+FFFFD2F1_C6343C00_00
+00010000_47800000_00
+0000047E_448FC000_00
+0011B7E5_498DBF28_00
+00020000_48000000_00
+02200200_4C080080_00
+0013F7E6_499FBF30_00
+00040000_48800000_00
+FFFDC007_C80FFE40_00
+FD0ABD9A_CC3D509A_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00003CEE_4673B800_00
+00100000_49800000_00
+DFDFE000_CE008080_00
+FFFB1642_C89D37C0_00
+00200000_4A000000_00
+FC000078_CC7FFFE2_00
+5F70EEC1_4EBEE1DD_01
+00400000_4A800000_00
+00100082_49800410_00
+FFFFFE21_C3EF8000_00
+00800000_4B000000_00
+FF7BFF7F_CB040081_00
+FFFF6393_C71C6D00_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFDF_01
+FFFFFDB4_C4130000_00
+02000000_4C000000_00
+8002FFFF_CEFFFA01_01
+FFFFC8E2_C65C7800_00
+04000000_4C800000_00
+FFFC0DFE_C87C8080_00
+FFFFFF1B_C3650000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF6F_01
+0001092B_47849580_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+00B4F3D1_4B34F3D1_00
+20000000_4E000000_00
+FEF801FF_CB83FF01_01
+00000005_40A00000_00
+40000000_4E800000_00
+BFF3FFFE_CE801801_01
+0001806B_47C03580_00
+80000000_CF000000_00
+0000A07E_47207E00_00
+FFFFA59F_C6B4C200_00
+C0000000_CE800000_00
+E0007FDE_CDFFFC02_01
+FFF8343E_C8F97840_00
+E0000000_CE000000_00
+0000FF7C_477F7C00_00
+FFFFFFF7_C1100000_00
+F0000000_CD800000_00
+BDFFFFFC_CE840001_01
+FFFFE3C1_C5E1F800_00
+F8000000_CD000000_00
+28003FFE_4E2000FF_01
+00000000_00000000_00
+FC000000_CC800000_00
+00EEFFFF_4B6EFFFF_00
+00003EB0_467AC000_00
+FE000000_CC000000_00
+00000F7D_4577D000_00
+FFFFFF0F_C3710000_00
+FF000000_CB800000_00
+0000406D_4680DA00_00
+0000001A_41D00000_00
+FF800000_CB000000_00
+203FFFFD_4E00FFFF_01
+0000000A_41200000_00
+FFC00000_CA800000_00
+FFFF007C_C77F8400_00
+0000009B_431B0000_00
+FFE00000_CA000000_00
+00E00FFF_4B600FFF_00
+00000006_40C00000_00
+FFF00000_C9800000_00
+00200FFC_4A003FF0_00
+00000714_44E28000_00
+FFF80000_C9000000_00
+F800040E_CCFFFF7F_01
+00000013_41980000_00
+FFFC0000_C8800000_00
+F83BFFFF_CCF88001_01
+FFF3F584_C940A7C0_00
+FFFE0000_C8000000_00
+F6FFFBFF_CD100041_01
+FFFFFFF0_C1800000_00
+FFFF0000_C7800000_00
+80003FFD_CEFFFF81_01
+FFFFFFAD_C2A60000_00
+FFFF8000_C7000000_00
+004001FD_4A8003FA_00
+000D734E_495734E0_00
+FFFFC000_C6800000_00
+006003FE_4AC007FC_00
+FF9DBAA8_CAC48AB0_00
+FFFFE000_C6000000_00
+000403EE_48807DC0_00
+00734668_4AE68CD0_00
+FFFFF000_C5800000_00
+01200002_4B900001_00
+FF8874A5_CAEF16B6_00
+FFFFF800_C5000000_00
+00060001_48C00020_00
+FFFFFFF8_C1000000_00
+FFFFFC00_C4800000_00
+001FFEDD_49FFF6E8_00
+FFFC56DF_C86A4840_00
+FFFFFE00_C4000000_00
+EFFFEFFD_CD800081_01
+FECF5EC6_CB98509D_00
+FFFFFF00_C3800000_00
+1FF00002_4DFF8000_01
+F6DB786B_CD12487A_01
+FFFFFF80_C3000000_00
+F0000FBE_CD7FFF05_01
+00000009_41100000_00
+FFFFFFC0_C2800000_00
+0010801F_498400F8_00
+0001F238_47F91C00_00
+FFFFFFE0_C2000000_00
+F8000047_CCFFFFF8_01
+0002133C_4804CF00_00
+FFFFFFF0_C1800000_00
+003C001F_4A70007C_00
+000001F1_43F88000_00
+FFFFFFF8_C1000000_00
+FFDFBFFF_CA010004_00
+FF5E507F_CB21AF81_00
+FFFFFFFC_C0800000_00
+037FFFDE_4C5FFFF7_01
+FFFD7C6F_C820E440_00
+FFFFFFFE_C0000000_00
+000000FD_437D0000_00
+FFFFF42A_C53D6000_00
+FFFFFFFF_BF800000_00
+021FFF7D_4C07FFDF_01
+0000000A_41200000_00
+FFFFFFFD_C0400000_00
+4010FFFF_4E8021FF_01
+FFFFFFD3_C2340000_00
+FFFFFFFB_C0A00000_00
+FFFF800B_C6FFEA00_00
+000000B8_43380000_00
+FFFFFFF7_C1100000_00
+FF800803_CAFFEFFA_00
+FFFFFFFE_C0000000_00
+FFFFFFEF_C1880000_00
+00803FFB_4B003FFB_00
+00000308_44420000_00
+FFFFFFDF_C2040000_00
+2107FFFE_4E041FFF_01
+FFE15D4F_C9F51588_00
+FFFFFFBF_C2820000_00
+400087FD_4E80010F_01
+0000000F_41700000_00
+FFFFFF7F_C3010000_00
+FDFC007E_CC00FFE1_01
+00000006_40C00000_00
+FFFFFEFF_C3808000_00
+FFF80100_C8FFE000_00
+FFFFFE99_C3B38000_00
+FFFFFDFF_C4004000_00
+03000002_4C400000_01
+FFF716EA_C90E9160_00
+FFFFFBFF_C4802000_00
+C7FDFFFF_CE600801_01
+FFFFE327_C5E6C800_00
+FFFFF7FF_C5001000_00
+0103DFFE_4B81EFFF_00
+07661FD8_4CECC3FB_00
+FFFFEFFF_C5800800_00
+83FFFFFE_CEF80001_01
+FCD956DB_CC49AA4A_01
+FFFFDFFF_C6000400_00
+FF2001FD_CB5FFE03_00
+E4D35BBF_CDD96523_01
+FFFFBFFF_C6800200_00
+DFEFEFFE_CE004041_01
+05DA4300_4CBB4860_00
+FFFF7FFF_C7000100_00
+40001040_4E800020_01
+812EDF40_CEFDA242_01
+FFFEFFFF_C7800080_00
+FFFFC007_C67FE400_00
+00B6FCC9_4B36FCC9_00
+FFFDFFFF_C8000040_00
+000007FE_44FFC000_00
+FC3DE950_CC7085AC_00
+FFFBFFFF_C8800020_00
+7FFFFE03_4EFFFFFC_01
+FEB02B59_CBA7EA54_01
+FFF7FFFF_C9000010_00
+10FF7FFF_4D87FBFF_01
+00008D5E_470D5E00_00
+FFEFFFFF_C9800008_00
+FFFF007E_C77F8200_00
+001C2108_49E10840_00
+FFDFFFFF_CA000004_00
+00FFC001_4B7FC001_00
+F01C6B36_CD7E394D_01
+FFBFFFFF_CA800002_00
+FFFF7FFF_C7000100_00
+FFFFD055_C63EAC00_00
+FF7FFFFF_CB000001_00
+027BFFFE_4C1EFFFF_01
+FF3090D0_CB4F6F30_00
+FEFFFFFF_CB800001_01
+00082040_49020400_00
+0000006E_42DC0000_00
+FDFFFFFF_CC000001_01
+FDFFFF87_CC00001F_01
+04C3764D_4C986EC9_01
+FBFFFFFF_CC800001_01
+0006007E_48C00FC0_00
+000001EF_43F78000_00
+F7FFFFFF_CD000001_01
+FFBF7FFE_CA810004_00
+FF1C4E5A_CB63B1A6_00
+EFFFFFFF_CD800001_01
+FFF97FFD_C8D00060_00
+000001D1_43E88000_00
+DFFFFFFF_CE000001_01
+2FFFFFFE_4E3FFFFF_01
+00136721_499B3908_00
+BFFFFFFF_CE800001_01
+00004BFF_4697FE00_00
+00000544_44A88000_00
+7FFFFFFF_4EFFFFFF_01
+007FDFFB_4AFFBFF6_00
+FFF8BD5E_C8E85440_00
+3FFFFFFF_4E7FFFFF_01
+FFBF8003_CA80FFFA_00
+FFFE45D2_C7DD1700_00
+1FFFFFFF_4DFFFFFF_01
+FFFFFDBF_C4104000_00
+FFFFF189_C5677000_00
+0FFFFFFF_4D7FFFFF_01
+FFFE6FFE_C7C80100_00
+FC8672A0_CC5E6358_00
+07FFFFFF_4CFFFFFF_01
+00000107_43838000_00
+FFFCCA70_C84D6400_00
+03FFFFFF_4C7FFFFF_01
+002107FE_4A041FF8_00
+FFFF48E7_C7371900_00
+01FFFFFF_4BFFFFFF_01
+F7FDFFEE_CD002002_01
+00000010_41800000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_C77E0300_00
+0000FAEF_477AEF00_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000000F5_43750000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_C9FC0200_00
+001AFFFB_49D7FFD8_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+FF4613B2_CB39EC4E_00
+000FFFFF_497FFFF0_00
+F00005FE_CD7FFFA1_01
+00036402_48590080_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C809FFF_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_C43F8000_00
+FFFF41C6_C73E3A00_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+FFFFFFFB_C0A00000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_CBC01001_00
+FFFFFFFD_C0400000_00
+00003FFF_467FFC00_00
+DBBFFFFE_CE110001_01
+00000404_44808000_00
+00001FFF_45FFF800_00
+FFFFC018_C67FA000_00
+00002853_46214C00_00
+00000FFF_457FF000_00
+03FE007F_4C7F801F_01
+FFFFF124_C56DC000_00
+000007FF_44FFE000_00
+FFFFEFBE_C5821000_00
+FFFB9AD8_C88CA500_00
+000003FF_447FC000_00
+DFFFFDFE_CE000009_01
+FFFFFD95_C41AC000_00
+000001FF_43FF8000_00
+FDFFFFFF_CC000001_01
+FFFFFFD0_C2400000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+010EC496_4B87624B_00
+0000007F_42FE0000_00
+B8007FFF_CE8FFF01_01
+00000012_41900000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+FFFFFFEF_C1880000_00
+0000001F_41F80000_00
+FF7FFF02_CB0000FE_00
+FFFFE2CE_C5E99000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+FFFFFE44_C3DE0000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+000038E7_46639C00_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_rne.tv b/wally-pipelined/testbench/fp/i32_f32_rne.tv
index 47d0f04bb..ddf40de77 100644
--- a/wally-pipelined/testbench/fp/i32_f32_rne.tv
+++ b/wally-pipelined/testbench/fp/i32_f32_rne.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 4DFF7FFF_01
-FFFFC48E C66DC800_00
-00000000 00000000_00
-007FFFCD 4AFFFF9A_00
-00009E14 471E1400_00
-00000001 3F800000_00
-001FFFFB 49FFFFD8_00
-FFFFDE38 C6072000_00
-00000002 40000000_00
-FFDFFC02 CA000FF8_00
-FB794C79 CC90D671_01
-00000004 40800000_00
-F00FFFFE CD7F0000_01
-00000A95 45295000_00
-00000008 41000000_00
-FFFFF97F C4D02000_00
-FFAE458D CAA374E6_00
-00000010 41800000_00
-0101001E 4B80800F_00
-29EB4561 4E27AD16_01
-00000020 42000000_00
-8001FFEE CEFFFC00_01
-FFFBDD08 C8845F00_00
-00000040 42800000_00
-FFF03FF9 C97C0070_00
-FFCEDF36 CA448328_00
-00000080 43000000_00
-0000F01F 47701F00_00
-00000279 441E4000_00
-00000100 43800000_00
-BFFFFFEF CE800000_01
-00000007 40E00000_00
-00000200 44000000_00
-010BFFFD 4B85FFFE_01
-FFFFF590 C5270000_00
-00000400 44800000_00
-F7FFFEFB CD000010_01
-2FEA335F 4E3FA8CD_01
-00000800 45000000_00
-FFC07FFF CA7E0004_00
-177957FD 4DBBCAC0_01
-00001000 45800000_00
-01FBFFEE 4BFDFFF7_00
-FFFFFAC9 C4A6E000_00
-00002000 46000000_00
-FFFF8004 C6FFF800_00
-FFFBE0DE C883E440_00
-00004000 46800000_00
-3F00001E 4E7C0000_01
-00000000 00000000_00
-00008000 47000000_00
-FF8201FF CAFBFC02_00
-FFFFD2F1 C6343C00_00
-00010000 47800000_00
-0000047E 448FC000_00
-0011B7E5 498DBF28_00
-00020000 48000000_00
-02200200 4C080080_00
-0013F7E6 499FBF30_00
-00040000 48800000_00
-FFFDC007 C80FFE40_00
-FD0ABD9A CC3D509A_01
-00080000 49000000_00
-0000607F 46C0FE00_00
-00003CEE 4673B800_00
-00100000 49800000_00
-DFDFE000 CE008080_00
-FFFB1642 C89D37C0_00
-00200000 4A000000_00
-FC000078 CC7FFFE2_00
-5F70EEC1 4EBEE1DE_01
-00400000 4A800000_00
-00100082 49800410_00
-FFFFFE21 C3EF8000_00
-00800000 4B000000_00
-FF7BFF7F CB040081_00
-FFFF6393 C71C6D00_00
-01000000 4B800000_00
-07EFFEFD 4CFDFFE0_01
-FFFFFDB4 C4130000_00
-02000000 4C000000_00
-8002FFFF CEFFFA00_01
-FFFFC8E2 C65C7800_00
-04000000 4C800000_00
-FFFC0DFE C87C8080_00
-FFFFFF1B C3650000_00
-08000000 4D000000_00
-03FFFDBF 4C7FFF70_01
-0001092B 47849580_00
-10000000 4D800000_00
-007FBFFD 4AFF7FFA_00
-00B4F3D1 4B34F3D1_00
-20000000 4E000000_00
-FEF801FF CB83FF00_01
-00000005 40A00000_00
-40000000 4E800000_00
-BFF3FFFE CE801800_01
-0001806B 47C03580_00
-80000000 CF000000_00
-0000A07E 47207E00_00
-FFFFA59F C6B4C200_00
-C0000000 CE800000_00
-E0007FDE CDFFFC01_01
-FFF8343E C8F97840_00
-E0000000 CE000000_00
-0000FF7C 477F7C00_00
-FFFFFFF7 C1100000_00
-F0000000 CD800000_00
-BDFFFFFC CE840000_01
-FFFFE3C1 C5E1F800_00
-F8000000 CD000000_00
-28003FFE 4E200100_01
-00000000 00000000_00
-FC000000 CC800000_00
-00EEFFFF 4B6EFFFF_00
-00003EB0 467AC000_00
-FE000000 CC000000_00
-00000F7D 4577D000_00
-FFFFFF0F C3710000_00
-FF000000 CB800000_00
-0000406D 4680DA00_00
-0000001A 41D00000_00
-FF800000 CB000000_00
-203FFFFD 4E010000_01
-0000000A 41200000_00
-FFC00000 CA800000_00
-FFFF007C C77F8400_00
-0000009B 431B0000_00
-FFE00000 CA000000_00
-00E00FFF 4B600FFF_00
-00000006 40C00000_00
-FFF00000 C9800000_00
-00200FFC 4A003FF0_00
-00000714 44E28000_00
-FFF80000 C9000000_00
-F800040E CCFFFF7E_01
-00000013 41980000_00
-FFFC0000 C8800000_00
-F83BFFFF CCF88000_01
-FFF3F584 C940A7C0_00
-FFFE0000 C8000000_00
-F6FFFBFF CD100040_01
-FFFFFFF0 C1800000_00
-FFFF0000 C7800000_00
-80003FFD CEFFFF80_01
-FFFFFFAD C2A60000_00
-FFFF8000 C7000000_00
-004001FD 4A8003FA_00
-000D734E 495734E0_00
-FFFFC000 C6800000_00
-006003FE 4AC007FC_00
-FF9DBAA8 CAC48AB0_00
-FFFFE000 C6000000_00
-000403EE 48807DC0_00
-00734668 4AE68CD0_00
-FFFFF000 C5800000_00
-01200002 4B900001_00
-FF8874A5 CAEF16B6_00
-FFFFF800 C5000000_00
-00060001 48C00020_00
-FFFFFFF8 C1000000_00
-FFFFFC00 C4800000_00
-001FFEDD 49FFF6E8_00
-FFFC56DF C86A4840_00
-FFFFFE00 C4000000_00
-EFFFEFFD CD800080_01
-FECF5EC6 CB98509D_00
-FFFFFF00 C3800000_00
-1FF00002 4DFF8000_01
-F6DB786B CD124879_01
-FFFFFF80 C3000000_00
-F0000FBE CD7FFF04_01
-00000009 41100000_00
-FFFFFFC0 C2800000_00
-0010801F 498400F8_00
-0001F238 47F91C00_00
-FFFFFFE0 C2000000_00
-F8000047 CCFFFFF7_01
-0002133C 4804CF00_00
-FFFFFFF0 C1800000_00
-003C001F 4A70007C_00
-000001F1 43F88000_00
-FFFFFFF8 C1000000_00
-FFDFBFFF CA010004_00
-FF5E507F CB21AF81_00
-FFFFFFFC C0800000_00
-037FFFDE 4C5FFFF8_01
-FFFD7C6F C820E440_00
-FFFFFFFE C0000000_00
-000000FD 437D0000_00
-FFFFF42A C53D6000_00
-FFFFFFFF BF800000_00
-021FFF7D 4C07FFDF_01
-0000000A 41200000_00
-FFFFFFFD C0400000_00
-4010FFFF 4E802200_01
-FFFFFFD3 C2340000_00
-FFFFFFFB C0A00000_00
-FFFF800B C6FFEA00_00
-000000B8 43380000_00
-FFFFFFF7 C1100000_00
-FF800803 CAFFEFFA_00
-FFFFFFFE C0000000_00
-FFFFFFEF C1880000_00
-00803FFB 4B003FFB_00
-00000308 44420000_00
-FFFFFFDF C2040000_00
-2107FFFE 4E042000_01
-FFE15D4F C9F51588_00
-FFFFFFBF C2820000_00
-400087FD 4E800110_01
-0000000F 41700000_00
-FFFFFF7F C3010000_00
-FDFC007E CC00FFE0_01
-00000006 40C00000_00
-FFFFFEFF C3808000_00
-FFF80100 C8FFE000_00
-FFFFFE99 C3B38000_00
-FFFFFDFF C4004000_00
-03000002 4C400000_01
-FFF716EA C90E9160_00
-FFFFFBFF C4802000_00
-C7FDFFFF CE600800_01
-FFFFE327 C5E6C800_00
-FFFFF7FF C5001000_00
-0103DFFE 4B81EFFF_00
-07661FD8 4CECC3FB_00
-FFFFEFFF C5800800_00
-83FFFFFE CEF80000_01
-FCD956DB CC49AA49_01
-FFFFDFFF C6000400_00
-FF2001FD CB5FFE03_00
-E4D35BBF CDD96522_01
-FFFFBFFF C6800200_00
-DFEFEFFE CE004040_01
-05DA4300 4CBB4860_00
-FFFF7FFF C7000100_00
-40001040 4E800020_01
-812EDF40 CEFDA242_01
-FFFEFFFF C7800080_00
-FFFFC007 C67FE400_00
-00B6FCC9 4B36FCC9_00
-FFFDFFFF C8000040_00
-000007FE 44FFC000_00
-FC3DE950 CC7085AC_00
-FFFBFFFF C8800020_00
-7FFFFE03 4EFFFFFC_01
-FEB02B59 CBA7EA54_01
-FFF7FFFF C9000010_00
-10FF7FFF 4D87FC00_01
-00008D5E 470D5E00_00
-FFEFFFFF C9800008_00
-FFFF007E C77F8200_00
-001C2108 49E10840_00
-FFDFFFFF CA000004_00
-00FFC001 4B7FC001_00
-F01C6B36 CD7E394D_01
-FFBFFFFF CA800002_00
-FFFF7FFF C7000100_00
-FFFFD055 C63EAC00_00
-FF7FFFFF CB000001_00
-027BFFFE 4C1F0000_01
-FF3090D0 CB4F6F30_00
-FEFFFFFF CB800000_01
-00082040 49020400_00
-0000006E 42DC0000_00
-FDFFFFFF CC000000_01
-FDFFFF87 CC00001E_01
-04C3764D 4C986ECA_01
-FBFFFFFF CC800000_01
-0006007E 48C00FC0_00
-000001EF 43F78000_00
-F7FFFFFF CD000000_01
-FFBF7FFE CA810004_00
-FF1C4E5A CB63B1A6_00
-EFFFFFFF CD800000_01
-FFF97FFD C8D00060_00
-000001D1 43E88000_00
-DFFFFFFF CE000000_01
-2FFFFFFE 4E400000_01
-00136721 499B3908_00
-BFFFFFFF CE800000_01
-00004BFF 4697FE00_00
-00000544 44A88000_00
-7FFFFFFF 4F000000_01
-007FDFFB 4AFFBFF6_00
-FFF8BD5E C8E85440_00
-3FFFFFFF 4E800000_01
-FFBF8003 CA80FFFA_00
-FFFE45D2 C7DD1700_00
-1FFFFFFF 4E000000_01
-FFFFFDBF C4104000_00
-FFFFF189 C5677000_00
-0FFFFFFF 4D800000_01
-FFFE6FFE C7C80100_00
-FC8672A0 CC5E6358_00
-07FFFFFF 4D000000_01
-00000107 43838000_00
-FFFCCA70 C84D6400_00
-03FFFFFF 4C800000_01
-002107FE 4A041FF8_00
-FFFF48E7 C7371900_00
-01FFFFFF 4C000000_01
-F7FDFFEE CD002001_01
-00000010 41800000_00
-00FFFFFF 4B7FFFFF_00
-FFFF01FD C77E0300_00
-0000FAEF 477AEF00_00
-007FFFFF 4AFFFFFE_00
-00FC0001 4B7C0001_00
-000000F5 43750000_00
-003FFFFF 4A7FFFFC_00
-FFE07FC0 C9FC0200_00
-001AFFFB 49D7FFD8_00
-001FFFFF 49FFFFF8_00
-00101FFD 4980FFE8_00
-FF4613B2 CB39EC4E_00
-000FFFFF 497FFFF0_00
-F00005FE CD7FFFA0_01
-00036402 48590080_00
-0007FFFF 48FFFFE0_00
-0404FFFF 4C80A000_01
-021C2358 4C0708D6_00
-0003FFFF 487FFFC0_00
-FFFFFD02 C43F8000_00
-FFFF41C6 C73E3A00_00
-0001FFFF 47FFFF80_00
-00000007 40E00000_00
-27F174DE 4E1FC5D3_01
-0000FFFF 477FFF00_00
-000083F5 4703F500_00
-FFFFFFFB C0A00000_00
-00007FFF 46FFFE00_00
-FE7FDFFE CBC01001_00
-FFFFFFFD C0400000_00
-00003FFF 467FFC00_00
-DBBFFFFE CE110000_01
-00000404 44808000_00
-00001FFF 45FFF800_00
-FFFFC018 C67FA000_00
-00002853 46214C00_00
-00000FFF 457FF000_00
-03FE007F 4C7F8020_01
-FFFFF124 C56DC000_00
-000007FF 44FFE000_00
-FFFFEFBE C5821000_00
-FFFB9AD8 C88CA500_00
-000003FF 447FC000_00
-DFFFFDFE CE000008_01
-FFFFFD95 C41AC000_00
-000001FF 43FF8000_00
-FDFFFFFF CC000000_01
-FFFFFFD0 C2400000_00
-000000FF 437F0000_00
-0037FFE0 4A5FFF80_00
-010EC496 4B87624B_00
-0000007F 42FE0000_00
-B8007FFF CE8FFF00_01
-00000012 41900000_00
-0000003F 427C0000_00
-02003FFC 4C000FFF_00
-FFFFFFEF C1880000_00
-0000001F 41F80000_00
-FF7FFF02 CB0000FE_00
-FFFFE2CE C5E99000_00
-0000000F 41700000_00
-0000A00D 47200D00_00
-FFFFFE44 C3DE0000_00
-00000007 40E00000_00
-0003FFFA 487FFE80_00
-000038E7 46639C00_00
-00000003 40400000_00
+1FEFFFEF_4DFF7FFF_01
+FFFFC48E_C66DC800_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00009E14_471E1400_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+FFFFDE38_C6072000_00
+00000002_40000000_00
+FFDFFC02_CA000FF8_00
+FB794C79_CC90D671_01
+00000004_40800000_00
+F00FFFFE_CD7F0000_01
+00000A95_45295000_00
+00000008_41000000_00
+FFFFF97F_C4D02000_00
+FFAE458D_CAA374E6_00
+00000010_41800000_00
+0101001E_4B80800F_00
+29EB4561_4E27AD16_01
+00000020_42000000_00
+8001FFEE_CEFFFC00_01
+FFFBDD08_C8845F00_00
+00000040_42800000_00
+FFF03FF9_C97C0070_00
+FFCEDF36_CA448328_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000279_441E4000_00
+00000100_43800000_00
+BFFFFFEF_CE800000_01
+00000007_40E00000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+FFFFF590_C5270000_00
+00000400_44800000_00
+F7FFFEFB_CD000010_01
+2FEA335F_4E3FA8CD_01
+00000800_45000000_00
+FFC07FFF_CA7E0004_00
+177957FD_4DBBCAC0_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+FFFFFAC9_C4A6E000_00
+00002000_46000000_00
+FFFF8004_C6FFF800_00
+FFFBE0DE_C883E440_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000000_00000000_00
+00008000_47000000_00
+FF8201FF_CAFBFC02_00
+FFFFD2F1_C6343C00_00
+00010000_47800000_00
+0000047E_448FC000_00
+0011B7E5_498DBF28_00
+00020000_48000000_00
+02200200_4C080080_00
+0013F7E6_499FBF30_00
+00040000_48800000_00
+FFFDC007_C80FFE40_00
+FD0ABD9A_CC3D509A_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00003CEE_4673B800_00
+00100000_49800000_00
+DFDFE000_CE008080_00
+FFFB1642_C89D37C0_00
+00200000_4A000000_00
+FC000078_CC7FFFE2_00
+5F70EEC1_4EBEE1DE_01
+00400000_4A800000_00
+00100082_49800410_00
+FFFFFE21_C3EF8000_00
+00800000_4B000000_00
+FF7BFF7F_CB040081_00
+FFFF6393_C71C6D00_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFE0_01
+FFFFFDB4_C4130000_00
+02000000_4C000000_00
+8002FFFF_CEFFFA00_01
+FFFFC8E2_C65C7800_00
+04000000_4C800000_00
+FFFC0DFE_C87C8080_00
+FFFFFF1B_C3650000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF70_01
+0001092B_47849580_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+00B4F3D1_4B34F3D1_00
+20000000_4E000000_00
+FEF801FF_CB83FF00_01
+00000005_40A00000_00
+40000000_4E800000_00
+BFF3FFFE_CE801800_01
+0001806B_47C03580_00
+80000000_CF000000_00
+0000A07E_47207E00_00
+FFFFA59F_C6B4C200_00
+C0000000_CE800000_00
+E0007FDE_CDFFFC01_01
+FFF8343E_C8F97840_00
+E0000000_CE000000_00
+0000FF7C_477F7C00_00
+FFFFFFF7_C1100000_00
+F0000000_CD800000_00
+BDFFFFFC_CE840000_01
+FFFFE3C1_C5E1F800_00
+F8000000_CD000000_00
+28003FFE_4E200100_01
+00000000_00000000_00
+FC000000_CC800000_00
+00EEFFFF_4B6EFFFF_00
+00003EB0_467AC000_00
+FE000000_CC000000_00
+00000F7D_4577D000_00
+FFFFFF0F_C3710000_00
+FF000000_CB800000_00
+0000406D_4680DA00_00
+0000001A_41D00000_00
+FF800000_CB000000_00
+203FFFFD_4E010000_01
+0000000A_41200000_00
+FFC00000_CA800000_00
+FFFF007C_C77F8400_00
+0000009B_431B0000_00
+FFE00000_CA000000_00
+00E00FFF_4B600FFF_00
+00000006_40C00000_00
+FFF00000_C9800000_00
+00200FFC_4A003FF0_00
+00000714_44E28000_00
+FFF80000_C9000000_00
+F800040E_CCFFFF7E_01
+00000013_41980000_00
+FFFC0000_C8800000_00
+F83BFFFF_CCF88000_01
+FFF3F584_C940A7C0_00
+FFFE0000_C8000000_00
+F6FFFBFF_CD100040_01
+FFFFFFF0_C1800000_00
+FFFF0000_C7800000_00
+80003FFD_CEFFFF80_01
+FFFFFFAD_C2A60000_00
+FFFF8000_C7000000_00
+004001FD_4A8003FA_00
+000D734E_495734E0_00
+FFFFC000_C6800000_00
+006003FE_4AC007FC_00
+FF9DBAA8_CAC48AB0_00
+FFFFE000_C6000000_00
+000403EE_48807DC0_00
+00734668_4AE68CD0_00
+FFFFF000_C5800000_00
+01200002_4B900001_00
+FF8874A5_CAEF16B6_00
+FFFFF800_C5000000_00
+00060001_48C00020_00
+FFFFFFF8_C1000000_00
+FFFFFC00_C4800000_00
+001FFEDD_49FFF6E8_00
+FFFC56DF_C86A4840_00
+FFFFFE00_C4000000_00
+EFFFEFFD_CD800080_01
+FECF5EC6_CB98509D_00
+FFFFFF00_C3800000_00
+1FF00002_4DFF8000_01
+F6DB786B_CD124879_01
+FFFFFF80_C3000000_00
+F0000FBE_CD7FFF04_01
+00000009_41100000_00
+FFFFFFC0_C2800000_00
+0010801F_498400F8_00
+0001F238_47F91C00_00
+FFFFFFE0_C2000000_00
+F8000047_CCFFFFF7_01
+0002133C_4804CF00_00
+FFFFFFF0_C1800000_00
+003C001F_4A70007C_00
+000001F1_43F88000_00
+FFFFFFF8_C1000000_00
+FFDFBFFF_CA010004_00
+FF5E507F_CB21AF81_00
+FFFFFFFC_C0800000_00
+037FFFDE_4C5FFFF8_01
+FFFD7C6F_C820E440_00
+FFFFFFFE_C0000000_00
+000000FD_437D0000_00
+FFFFF42A_C53D6000_00
+FFFFFFFF_BF800000_00
+021FFF7D_4C07FFDF_01
+0000000A_41200000_00
+FFFFFFFD_C0400000_00
+4010FFFF_4E802200_01
+FFFFFFD3_C2340000_00
+FFFFFFFB_C0A00000_00
+FFFF800B_C6FFEA00_00
+000000B8_43380000_00
+FFFFFFF7_C1100000_00
+FF800803_CAFFEFFA_00
+FFFFFFFE_C0000000_00
+FFFFFFEF_C1880000_00
+00803FFB_4B003FFB_00
+00000308_44420000_00
+FFFFFFDF_C2040000_00
+2107FFFE_4E042000_01
+FFE15D4F_C9F51588_00
+FFFFFFBF_C2820000_00
+400087FD_4E800110_01
+0000000F_41700000_00
+FFFFFF7F_C3010000_00
+FDFC007E_CC00FFE0_01
+00000006_40C00000_00
+FFFFFEFF_C3808000_00
+FFF80100_C8FFE000_00
+FFFFFE99_C3B38000_00
+FFFFFDFF_C4004000_00
+03000002_4C400000_01
+FFF716EA_C90E9160_00
+FFFFFBFF_C4802000_00
+C7FDFFFF_CE600800_01
+FFFFE327_C5E6C800_00
+FFFFF7FF_C5001000_00
+0103DFFE_4B81EFFF_00
+07661FD8_4CECC3FB_00
+FFFFEFFF_C5800800_00
+83FFFFFE_CEF80000_01
+FCD956DB_CC49AA49_01
+FFFFDFFF_C6000400_00
+FF2001FD_CB5FFE03_00
+E4D35BBF_CDD96522_01
+FFFFBFFF_C6800200_00
+DFEFEFFE_CE004040_01
+05DA4300_4CBB4860_00
+FFFF7FFF_C7000100_00
+40001040_4E800020_01
+812EDF40_CEFDA242_01
+FFFEFFFF_C7800080_00
+FFFFC007_C67FE400_00
+00B6FCC9_4B36FCC9_00
+FFFDFFFF_C8000040_00
+000007FE_44FFC000_00
+FC3DE950_CC7085AC_00
+FFFBFFFF_C8800020_00
+7FFFFE03_4EFFFFFC_01
+FEB02B59_CBA7EA54_01
+FFF7FFFF_C9000010_00
+10FF7FFF_4D87FC00_01
+00008D5E_470D5E00_00
+FFEFFFFF_C9800008_00
+FFFF007E_C77F8200_00
+001C2108_49E10840_00
+FFDFFFFF_CA000004_00
+00FFC001_4B7FC001_00
+F01C6B36_CD7E394D_01
+FFBFFFFF_CA800002_00
+FFFF7FFF_C7000100_00
+FFFFD055_C63EAC00_00
+FF7FFFFF_CB000001_00
+027BFFFE_4C1F0000_01
+FF3090D0_CB4F6F30_00
+FEFFFFFF_CB800000_01
+00082040_49020400_00
+0000006E_42DC0000_00
+FDFFFFFF_CC000000_01
+FDFFFF87_CC00001E_01
+04C3764D_4C986ECA_01
+FBFFFFFF_CC800000_01
+0006007E_48C00FC0_00
+000001EF_43F78000_00
+F7FFFFFF_CD000000_01
+FFBF7FFE_CA810004_00
+FF1C4E5A_CB63B1A6_00
+EFFFFFFF_CD800000_01
+FFF97FFD_C8D00060_00
+000001D1_43E88000_00
+DFFFFFFF_CE000000_01
+2FFFFFFE_4E400000_01
+00136721_499B3908_00
+BFFFFFFF_CE800000_01
+00004BFF_4697FE00_00
+00000544_44A88000_00
+7FFFFFFF_4F000000_01
+007FDFFB_4AFFBFF6_00
+FFF8BD5E_C8E85440_00
+3FFFFFFF_4E800000_01
+FFBF8003_CA80FFFA_00
+FFFE45D2_C7DD1700_00
+1FFFFFFF_4E000000_01
+FFFFFDBF_C4104000_00
+FFFFF189_C5677000_00
+0FFFFFFF_4D800000_01
+FFFE6FFE_C7C80100_00
+FC8672A0_CC5E6358_00
+07FFFFFF_4D000000_01
+00000107_43838000_00
+FFFCCA70_C84D6400_00
+03FFFFFF_4C800000_01
+002107FE_4A041FF8_00
+FFFF48E7_C7371900_00
+01FFFFFF_4C000000_01
+F7FDFFEE_CD002001_01
+00000010_41800000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_C77E0300_00
+0000FAEF_477AEF00_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000000F5_43750000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_C9FC0200_00
+001AFFFB_49D7FFD8_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+FF4613B2_CB39EC4E_00
+000FFFFF_497FFFF0_00
+F00005FE_CD7FFFA0_01
+00036402_48590080_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C80A000_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_C43F8000_00
+FFFF41C6_C73E3A00_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+FFFFFFFB_C0A00000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_CBC01001_00
+FFFFFFFD_C0400000_00
+00003FFF_467FFC00_00
+DBBFFFFE_CE110000_01
+00000404_44808000_00
+00001FFF_45FFF800_00
+FFFFC018_C67FA000_00
+00002853_46214C00_00
+00000FFF_457FF000_00
+03FE007F_4C7F8020_01
+FFFFF124_C56DC000_00
+000007FF_44FFE000_00
+FFFFEFBE_C5821000_00
+FFFB9AD8_C88CA500_00
+000003FF_447FC000_00
+DFFFFDFE_CE000008_01
+FFFFFD95_C41AC000_00
+000001FF_43FF8000_00
+FDFFFFFF_CC000000_01
+FFFFFFD0_C2400000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+010EC496_4B87624B_00
+0000007F_42FE0000_00
+B8007FFF_CE8FFF00_01
+00000012_41900000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+FFFFFFEF_C1880000_00
+0000001F_41F80000_00
+FF7FFF02_CB0000FE_00
+FFFFE2CE_C5E99000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+FFFFFE44_C3DE0000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+000038E7_46639C00_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_ru.tv b/wally-pipelined/testbench/fp/i32_f32_ru.tv
index b13580f92..bb90896f2 100644
--- a/wally-pipelined/testbench/fp/i32_f32_ru.tv
+++ b/wally-pipelined/testbench/fp/i32_f32_ru.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 4DFF8000_01
-FFFFC48E C66DC800_00
-00000000 00000000_00
-007FFFCD 4AFFFF9A_00
-00009E14 471E1400_00
-00000001 3F800000_00
-001FFFFB 49FFFFD8_00
-FFFFDE38 C6072000_00
-00000002 40000000_00
-FFDFFC02 CA000FF8_00
-FB794C79 CC90D670_01
-00000004 40800000_00
-F00FFFFE CD7F0000_01
-00000A95 45295000_00
-00000008 41000000_00
-FFFFF97F C4D02000_00
-FFAE458D CAA374E6_00
-00000010 41800000_00
-0101001E 4B80800F_00
-29EB4561 4E27AD16_01
-00000020 42000000_00
-8001FFEE CEFFFC00_01
-FFFBDD08 C8845F00_00
-00000040 42800000_00
-FFF03FF9 C97C0070_00
-FFCEDF36 CA448328_00
-00000080 43000000_00
-0000F01F 47701F00_00
-00000279 441E4000_00
-00000100 43800000_00
-BFFFFFEF CE800000_01
-00000007 40E00000_00
-00000200 44000000_00
-010BFFFD 4B85FFFF_01
-FFFFF590 C5270000_00
-00000400 44800000_00
-F7FFFEFB CD000010_01
-2FEA335F 4E3FA8CE_01
-00000800 45000000_00
-FFC07FFF CA7E0004_00
-177957FD 4DBBCAC0_01
-00001000 45800000_00
-01FBFFEE 4BFDFFF7_00
-FFFFFAC9 C4A6E000_00
-00002000 46000000_00
-FFFF8004 C6FFF800_00
-FFFBE0DE C883E440_00
-00004000 46800000_00
-3F00001E 4E7C0001_01
-00000000 00000000_00
-00008000 47000000_00
-FF8201FF CAFBFC02_00
-FFFFD2F1 C6343C00_00
-00010000 47800000_00
-0000047E 448FC000_00
-0011B7E5 498DBF28_00
-00020000 48000000_00
-02200200 4C080080_00
-0013F7E6 499FBF30_00
-00040000 48800000_00
-FFFDC007 C80FFE40_00
-FD0ABD9A CC3D5099_01
-00080000 49000000_00
-0000607F 46C0FE00_00
-00003CEE 4673B800_00
-00100000 49800000_00
-DFDFE000 CE008080_00
-FFFB1642 C89D37C0_00
-00200000 4A000000_00
-FC000078 CC7FFFE2_00
-5F70EEC1 4EBEE1DE_01
-00400000 4A800000_00
-00100082 49800410_00
-FFFFFE21 C3EF8000_00
-00800000 4B000000_00
-FF7BFF7F CB040081_00
-FFFF6393 C71C6D00_00
-01000000 4B800000_00
-07EFFEFD 4CFDFFE0_01
-FFFFFDB4 C4130000_00
-02000000 4C000000_00
-8002FFFF CEFFFA00_01
-FFFFC8E2 C65C7800_00
-04000000 4C800000_00
-FFFC0DFE C87C8080_00
-FFFFFF1B C3650000_00
-08000000 4D000000_00
-03FFFDBF 4C7FFF70_01
-0001092B 47849580_00
-10000000 4D800000_00
-007FBFFD 4AFF7FFA_00
-00B4F3D1 4B34F3D1_00
-20000000 4E000000_00
-FEF801FF CB83FF00_01
-00000005 40A00000_00
-40000000 4E800000_00
-BFF3FFFE CE801800_01
-0001806B 47C03580_00
-80000000 CF000000_00
-0000A07E 47207E00_00
-FFFFA59F C6B4C200_00
-C0000000 CE800000_00
-E0007FDE CDFFFC01_01
-FFF8343E C8F97840_00
-E0000000 CE000000_00
-0000FF7C 477F7C00_00
-FFFFFFF7 C1100000_00
-F0000000 CD800000_00
-BDFFFFFC CE840000_01
-FFFFE3C1 C5E1F800_00
-F8000000 CD000000_00
-28003FFE 4E200100_01
-00000000 00000000_00
-FC000000 CC800000_00
-00EEFFFF 4B6EFFFF_00
-00003EB0 467AC000_00
-FE000000 CC000000_00
-00000F7D 4577D000_00
-FFFFFF0F C3710000_00
-FF000000 CB800000_00
-0000406D 4680DA00_00
-0000001A 41D00000_00
-FF800000 CB000000_00
-203FFFFD 4E010000_01
-0000000A 41200000_00
-FFC00000 CA800000_00
-FFFF007C C77F8400_00
-0000009B 431B0000_00
-FFE00000 CA000000_00
-00E00FFF 4B600FFF_00
-00000006 40C00000_00
-FFF00000 C9800000_00
-00200FFC 4A003FF0_00
-00000714 44E28000_00
-FFF80000 C9000000_00
-F800040E CCFFFF7E_01
-00000013 41980000_00
-FFFC0000 C8800000_00
-F83BFFFF CCF88000_01
-FFF3F584 C940A7C0_00
-FFFE0000 C8000000_00
-F6FFFBFF CD100040_01
-FFFFFFF0 C1800000_00
-FFFF0000 C7800000_00
-80003FFD CEFFFF80_01
-FFFFFFAD C2A60000_00
-FFFF8000 C7000000_00
-004001FD 4A8003FA_00
-000D734E 495734E0_00
-FFFFC000 C6800000_00
-006003FE 4AC007FC_00
-FF9DBAA8 CAC48AB0_00
-FFFFE000 C6000000_00
-000403EE 48807DC0_00
-00734668 4AE68CD0_00
-FFFFF000 C5800000_00
-01200002 4B900001_00
-FF8874A5 CAEF16B6_00
-FFFFF800 C5000000_00
-00060001 48C00020_00
-FFFFFFF8 C1000000_00
-FFFFFC00 C4800000_00
-001FFEDD 49FFF6E8_00
-FFFC56DF C86A4840_00
-FFFFFE00 C4000000_00
-EFFFEFFD CD800080_01
-FECF5EC6 CB98509D_00
-FFFFFF00 C3800000_00
-1FF00002 4DFF8001_01
-F6DB786B CD124879_01
-FFFFFF80 C3000000_00
-F0000FBE CD7FFF04_01
-00000009 41100000_00
-FFFFFFC0 C2800000_00
-0010801F 498400F8_00
-0001F238 47F91C00_00
-FFFFFFE0 C2000000_00
-F8000047 CCFFFFF7_01
-0002133C 4804CF00_00
-FFFFFFF0 C1800000_00
-003C001F 4A70007C_00
-000001F1 43F88000_00
-FFFFFFF8 C1000000_00
-FFDFBFFF CA010004_00
-FF5E507F CB21AF81_00
-FFFFFFFC C0800000_00
-037FFFDE 4C5FFFF8_01
-FFFD7C6F C820E440_00
-FFFFFFFE C0000000_00
-000000FD 437D0000_00
-FFFFF42A C53D6000_00
-FFFFFFFF BF800000_00
-021FFF7D 4C07FFE0_01
-0000000A 41200000_00
-FFFFFFFD C0400000_00
-4010FFFF 4E802200_01
-FFFFFFD3 C2340000_00
-FFFFFFFB C0A00000_00
-FFFF800B C6FFEA00_00
-000000B8 43380000_00
-FFFFFFF7 C1100000_00
-FF800803 CAFFEFFA_00
-FFFFFFFE C0000000_00
-FFFFFFEF C1880000_00
-00803FFB 4B003FFB_00
-00000308 44420000_00
-FFFFFFDF C2040000_00
-2107FFFE 4E042000_01
-FFE15D4F C9F51588_00
-FFFFFFBF C2820000_00
-400087FD 4E800110_01
-0000000F 41700000_00
-FFFFFF7F C3010000_00
-FDFC007E CC00FFE0_01
-00000006 40C00000_00
-FFFFFEFF C3808000_00
-FFF80100 C8FFE000_00
-FFFFFE99 C3B38000_00
-FFFFFDFF C4004000_00
-03000002 4C400001_01
-FFF716EA C90E9160_00
-FFFFFBFF C4802000_00
-C7FDFFFF CE600800_01
-FFFFE327 C5E6C800_00
-FFFFF7FF C5001000_00
-0103DFFE 4B81EFFF_00
-07661FD8 4CECC3FB_00
-FFFFEFFF C5800800_00
-83FFFFFE CEF80000_01
-FCD956DB CC49AA49_01
-FFFFDFFF C6000400_00
-FF2001FD CB5FFE03_00
-E4D35BBF CDD96522_01
-FFFFBFFF C6800200_00
-DFEFEFFE CE004040_01
-05DA4300 4CBB4860_00
-FFFF7FFF C7000100_00
-40001040 4E800021_01
-812EDF40 CEFDA241_01
-FFFEFFFF C7800080_00
-FFFFC007 C67FE400_00
-00B6FCC9 4B36FCC9_00
-FFFDFFFF C8000040_00
-000007FE 44FFC000_00
-FC3DE950 CC7085AC_00
-FFFBFFFF C8800020_00
-7FFFFE03 4EFFFFFD_01
-FEB02B59 CBA7EA53_01
-FFF7FFFF C9000010_00
-10FF7FFF 4D87FC00_01
-00008D5E 470D5E00_00
-FFEFFFFF C9800008_00
-FFFF007E C77F8200_00
-001C2108 49E10840_00
-FFDFFFFF CA000004_00
-00FFC001 4B7FC001_00
-F01C6B36 CD7E394C_01
-FFBFFFFF CA800002_00
-FFFF7FFF C7000100_00
-FFFFD055 C63EAC00_00
-FF7FFFFF CB000001_00
-027BFFFE 4C1F0000_01
-FF3090D0 CB4F6F30_00
-FEFFFFFF CB800000_01
-00082040 49020400_00
-0000006E 42DC0000_00
-FDFFFFFF CC000000_01
-FDFFFF87 CC00001E_01
-04C3764D 4C986ECA_01
-FBFFFFFF CC800000_01
-0006007E 48C00FC0_00
-000001EF 43F78000_00
-F7FFFFFF CD000000_01
-FFBF7FFE CA810004_00
-FF1C4E5A CB63B1A6_00
-EFFFFFFF CD800000_01
-FFF97FFD C8D00060_00
-000001D1 43E88000_00
-DFFFFFFF CE000000_01
-2FFFFFFE 4E400000_01
-00136721 499B3908_00
-BFFFFFFF CE800000_01
-00004BFF 4697FE00_00
-00000544 44A88000_00
-7FFFFFFF 4F000000_01
-007FDFFB 4AFFBFF6_00
-FFF8BD5E C8E85440_00
-3FFFFFFF 4E800000_01
-FFBF8003 CA80FFFA_00
-FFFE45D2 C7DD1700_00
-1FFFFFFF 4E000000_01
-FFFFFDBF C4104000_00
-FFFFF189 C5677000_00
-0FFFFFFF 4D800000_01
-FFFE6FFE C7C80100_00
-FC8672A0 CC5E6358_00
-07FFFFFF 4D000000_01
-00000107 43838000_00
-FFFCCA70 C84D6400_00
-03FFFFFF 4C800000_01
-002107FE 4A041FF8_00
-FFFF48E7 C7371900_00
-01FFFFFF 4C000000_01
-F7FDFFEE CD002001_01
-00000010 41800000_00
-00FFFFFF 4B7FFFFF_00
-FFFF01FD C77E0300_00
-0000FAEF 477AEF00_00
-007FFFFF 4AFFFFFE_00
-00FC0001 4B7C0001_00
-000000F5 43750000_00
-003FFFFF 4A7FFFFC_00
-FFE07FC0 C9FC0200_00
-001AFFFB 49D7FFD8_00
-001FFFFF 49FFFFF8_00
-00101FFD 4980FFE8_00
-FF4613B2 CB39EC4E_00
-000FFFFF 497FFFF0_00
-F00005FE CD7FFFA0_01
-00036402 48590080_00
-0007FFFF 48FFFFE0_00
-0404FFFF 4C80A000_01
-021C2358 4C0708D6_00
-0003FFFF 487FFFC0_00
-FFFFFD02 C43F8000_00
-FFFF41C6 C73E3A00_00
-0001FFFF 47FFFF80_00
-00000007 40E00000_00
-27F174DE 4E1FC5D4_01
-0000FFFF 477FFF00_00
-000083F5 4703F500_00
-FFFFFFFB C0A00000_00
-00007FFF 46FFFE00_00
-FE7FDFFE CBC01001_00
-FFFFFFFD C0400000_00
-00003FFF 467FFC00_00
-DBBFFFFE CE110000_01
-00000404 44808000_00
-00001FFF 45FFF800_00
-FFFFC018 C67FA000_00
-00002853 46214C00_00
-00000FFF 457FF000_00
-03FE007F 4C7F8020_01
-FFFFF124 C56DC000_00
-000007FF 44FFE000_00
-FFFFEFBE C5821000_00
-FFFB9AD8 C88CA500_00
-000003FF 447FC000_00
-DFFFFDFE CE000008_01
-FFFFFD95 C41AC000_00
-000001FF 43FF8000_00
-FDFFFFFF CC000000_01
-FFFFFFD0 C2400000_00
-000000FF 437F0000_00
-0037FFE0 4A5FFF80_00
-010EC496 4B87624B_00
-0000007F 42FE0000_00
-B8007FFF CE8FFF00_01
-00000012 41900000_00
-0000003F 427C0000_00
-02003FFC 4C000FFF_00
-FFFFFFEF C1880000_00
-0000001F 41F80000_00
-FF7FFF02 CB0000FE_00
-FFFFE2CE C5E99000_00
-0000000F 41700000_00
-0000A00D 47200D00_00
-FFFFFE44 C3DE0000_00
-00000007 40E00000_00
-0003FFFA 487FFE80_00
-000038E7 46639C00_00
-00000003 40400000_00
+1FEFFFEF_4DFF8000_01
+FFFFC48E_C66DC800_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00009E14_471E1400_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+FFFFDE38_C6072000_00
+00000002_40000000_00
+FFDFFC02_CA000FF8_00
+FB794C79_CC90D670_01
+00000004_40800000_00
+F00FFFFE_CD7F0000_01
+00000A95_45295000_00
+00000008_41000000_00
+FFFFF97F_C4D02000_00
+FFAE458D_CAA374E6_00
+00000010_41800000_00
+0101001E_4B80800F_00
+29EB4561_4E27AD16_01
+00000020_42000000_00
+8001FFEE_CEFFFC00_01
+FFFBDD08_C8845F00_00
+00000040_42800000_00
+FFF03FF9_C97C0070_00
+FFCEDF36_CA448328_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000279_441E4000_00
+00000100_43800000_00
+BFFFFFEF_CE800000_01
+00000007_40E00000_00
+00000200_44000000_00
+010BFFFD_4B85FFFF_01
+FFFFF590_C5270000_00
+00000400_44800000_00
+F7FFFEFB_CD000010_01
+2FEA335F_4E3FA8CE_01
+00000800_45000000_00
+FFC07FFF_CA7E0004_00
+177957FD_4DBBCAC0_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+FFFFFAC9_C4A6E000_00
+00002000_46000000_00
+FFFF8004_C6FFF800_00
+FFFBE0DE_C883E440_00
+00004000_46800000_00
+3F00001E_4E7C0001_01
+00000000_00000000_00
+00008000_47000000_00
+FF8201FF_CAFBFC02_00
+FFFFD2F1_C6343C00_00
+00010000_47800000_00
+0000047E_448FC000_00
+0011B7E5_498DBF28_00
+00020000_48000000_00
+02200200_4C080080_00
+0013F7E6_499FBF30_00
+00040000_48800000_00
+FFFDC007_C80FFE40_00
+FD0ABD9A_CC3D5099_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00003CEE_4673B800_00
+00100000_49800000_00
+DFDFE000_CE008080_00
+FFFB1642_C89D37C0_00
+00200000_4A000000_00
+FC000078_CC7FFFE2_00
+5F70EEC1_4EBEE1DE_01
+00400000_4A800000_00
+00100082_49800410_00
+FFFFFE21_C3EF8000_00
+00800000_4B000000_00
+FF7BFF7F_CB040081_00
+FFFF6393_C71C6D00_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFE0_01
+FFFFFDB4_C4130000_00
+02000000_4C000000_00
+8002FFFF_CEFFFA00_01
+FFFFC8E2_C65C7800_00
+04000000_4C800000_00
+FFFC0DFE_C87C8080_00
+FFFFFF1B_C3650000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF70_01
+0001092B_47849580_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+00B4F3D1_4B34F3D1_00
+20000000_4E000000_00
+FEF801FF_CB83FF00_01
+00000005_40A00000_00
+40000000_4E800000_00
+BFF3FFFE_CE801800_01
+0001806B_47C03580_00
+80000000_CF000000_00
+0000A07E_47207E00_00
+FFFFA59F_C6B4C200_00
+C0000000_CE800000_00
+E0007FDE_CDFFFC01_01
+FFF8343E_C8F97840_00
+E0000000_CE000000_00
+0000FF7C_477F7C00_00
+FFFFFFF7_C1100000_00
+F0000000_CD800000_00
+BDFFFFFC_CE840000_01
+FFFFE3C1_C5E1F800_00
+F8000000_CD000000_00
+28003FFE_4E200100_01
+00000000_00000000_00
+FC000000_CC800000_00
+00EEFFFF_4B6EFFFF_00
+00003EB0_467AC000_00
+FE000000_CC000000_00
+00000F7D_4577D000_00
+FFFFFF0F_C3710000_00
+FF000000_CB800000_00
+0000406D_4680DA00_00
+0000001A_41D00000_00
+FF800000_CB000000_00
+203FFFFD_4E010000_01
+0000000A_41200000_00
+FFC00000_CA800000_00
+FFFF007C_C77F8400_00
+0000009B_431B0000_00
+FFE00000_CA000000_00
+00E00FFF_4B600FFF_00
+00000006_40C00000_00
+FFF00000_C9800000_00
+00200FFC_4A003FF0_00
+00000714_44E28000_00
+FFF80000_C9000000_00
+F800040E_CCFFFF7E_01
+00000013_41980000_00
+FFFC0000_C8800000_00
+F83BFFFF_CCF88000_01
+FFF3F584_C940A7C0_00
+FFFE0000_C8000000_00
+F6FFFBFF_CD100040_01
+FFFFFFF0_C1800000_00
+FFFF0000_C7800000_00
+80003FFD_CEFFFF80_01
+FFFFFFAD_C2A60000_00
+FFFF8000_C7000000_00
+004001FD_4A8003FA_00
+000D734E_495734E0_00
+FFFFC000_C6800000_00
+006003FE_4AC007FC_00
+FF9DBAA8_CAC48AB0_00
+FFFFE000_C6000000_00
+000403EE_48807DC0_00
+00734668_4AE68CD0_00
+FFFFF000_C5800000_00
+01200002_4B900001_00
+FF8874A5_CAEF16B6_00
+FFFFF800_C5000000_00
+00060001_48C00020_00
+FFFFFFF8_C1000000_00
+FFFFFC00_C4800000_00
+001FFEDD_49FFF6E8_00
+FFFC56DF_C86A4840_00
+FFFFFE00_C4000000_00
+EFFFEFFD_CD800080_01
+FECF5EC6_CB98509D_00
+FFFFFF00_C3800000_00
+1FF00002_4DFF8001_01
+F6DB786B_CD124879_01
+FFFFFF80_C3000000_00
+F0000FBE_CD7FFF04_01
+00000009_41100000_00
+FFFFFFC0_C2800000_00
+0010801F_498400F8_00
+0001F238_47F91C00_00
+FFFFFFE0_C2000000_00
+F8000047_CCFFFFF7_01
+0002133C_4804CF00_00
+FFFFFFF0_C1800000_00
+003C001F_4A70007C_00
+000001F1_43F88000_00
+FFFFFFF8_C1000000_00
+FFDFBFFF_CA010004_00
+FF5E507F_CB21AF81_00
+FFFFFFFC_C0800000_00
+037FFFDE_4C5FFFF8_01
+FFFD7C6F_C820E440_00
+FFFFFFFE_C0000000_00
+000000FD_437D0000_00
+FFFFF42A_C53D6000_00
+FFFFFFFF_BF800000_00
+021FFF7D_4C07FFE0_01
+0000000A_41200000_00
+FFFFFFFD_C0400000_00
+4010FFFF_4E802200_01
+FFFFFFD3_C2340000_00
+FFFFFFFB_C0A00000_00
+FFFF800B_C6FFEA00_00
+000000B8_43380000_00
+FFFFFFF7_C1100000_00
+FF800803_CAFFEFFA_00
+FFFFFFFE_C0000000_00
+FFFFFFEF_C1880000_00
+00803FFB_4B003FFB_00
+00000308_44420000_00
+FFFFFFDF_C2040000_00
+2107FFFE_4E042000_01
+FFE15D4F_C9F51588_00
+FFFFFFBF_C2820000_00
+400087FD_4E800110_01
+0000000F_41700000_00
+FFFFFF7F_C3010000_00
+FDFC007E_CC00FFE0_01
+00000006_40C00000_00
+FFFFFEFF_C3808000_00
+FFF80100_C8FFE000_00
+FFFFFE99_C3B38000_00
+FFFFFDFF_C4004000_00
+03000002_4C400001_01
+FFF716EA_C90E9160_00
+FFFFFBFF_C4802000_00
+C7FDFFFF_CE600800_01
+FFFFE327_C5E6C800_00
+FFFFF7FF_C5001000_00
+0103DFFE_4B81EFFF_00
+07661FD8_4CECC3FB_00
+FFFFEFFF_C5800800_00
+83FFFFFE_CEF80000_01
+FCD956DB_CC49AA49_01
+FFFFDFFF_C6000400_00
+FF2001FD_CB5FFE03_00
+E4D35BBF_CDD96522_01
+FFFFBFFF_C6800200_00
+DFEFEFFE_CE004040_01
+05DA4300_4CBB4860_00
+FFFF7FFF_C7000100_00
+40001040_4E800021_01
+812EDF40_CEFDA241_01
+FFFEFFFF_C7800080_00
+FFFFC007_C67FE400_00
+00B6FCC9_4B36FCC9_00
+FFFDFFFF_C8000040_00
+000007FE_44FFC000_00
+FC3DE950_CC7085AC_00
+FFFBFFFF_C8800020_00
+7FFFFE03_4EFFFFFD_01
+FEB02B59_CBA7EA53_01
+FFF7FFFF_C9000010_00
+10FF7FFF_4D87FC00_01
+00008D5E_470D5E00_00
+FFEFFFFF_C9800008_00
+FFFF007E_C77F8200_00
+001C2108_49E10840_00
+FFDFFFFF_CA000004_00
+00FFC001_4B7FC001_00
+F01C6B36_CD7E394C_01
+FFBFFFFF_CA800002_00
+FFFF7FFF_C7000100_00
+FFFFD055_C63EAC00_00
+FF7FFFFF_CB000001_00
+027BFFFE_4C1F0000_01
+FF3090D0_CB4F6F30_00
+FEFFFFFF_CB800000_01
+00082040_49020400_00
+0000006E_42DC0000_00
+FDFFFFFF_CC000000_01
+FDFFFF87_CC00001E_01
+04C3764D_4C986ECA_01
+FBFFFFFF_CC800000_01
+0006007E_48C00FC0_00
+000001EF_43F78000_00
+F7FFFFFF_CD000000_01
+FFBF7FFE_CA810004_00
+FF1C4E5A_CB63B1A6_00
+EFFFFFFF_CD800000_01
+FFF97FFD_C8D00060_00
+000001D1_43E88000_00
+DFFFFFFF_CE000000_01
+2FFFFFFE_4E400000_01
+00136721_499B3908_00
+BFFFFFFF_CE800000_01
+00004BFF_4697FE00_00
+00000544_44A88000_00
+7FFFFFFF_4F000000_01
+007FDFFB_4AFFBFF6_00
+FFF8BD5E_C8E85440_00
+3FFFFFFF_4E800000_01
+FFBF8003_CA80FFFA_00
+FFFE45D2_C7DD1700_00
+1FFFFFFF_4E000000_01
+FFFFFDBF_C4104000_00
+FFFFF189_C5677000_00
+0FFFFFFF_4D800000_01
+FFFE6FFE_C7C80100_00
+FC8672A0_CC5E6358_00
+07FFFFFF_4D000000_01
+00000107_43838000_00
+FFFCCA70_C84D6400_00
+03FFFFFF_4C800000_01
+002107FE_4A041FF8_00
+FFFF48E7_C7371900_00
+01FFFFFF_4C000000_01
+F7FDFFEE_CD002001_01
+00000010_41800000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_C77E0300_00
+0000FAEF_477AEF00_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000000F5_43750000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_C9FC0200_00
+001AFFFB_49D7FFD8_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+FF4613B2_CB39EC4E_00
+000FFFFF_497FFFF0_00
+F00005FE_CD7FFFA0_01
+00036402_48590080_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C80A000_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_C43F8000_00
+FFFF41C6_C73E3A00_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D4_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+FFFFFFFB_C0A00000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_CBC01001_00
+FFFFFFFD_C0400000_00
+00003FFF_467FFC00_00
+DBBFFFFE_CE110000_01
+00000404_44808000_00
+00001FFF_45FFF800_00
+FFFFC018_C67FA000_00
+00002853_46214C00_00
+00000FFF_457FF000_00
+03FE007F_4C7F8020_01
+FFFFF124_C56DC000_00
+000007FF_44FFE000_00
+FFFFEFBE_C5821000_00
+FFFB9AD8_C88CA500_00
+000003FF_447FC000_00
+DFFFFDFE_CE000008_01
+FFFFFD95_C41AC000_00
+000001FF_43FF8000_00
+FDFFFFFF_CC000000_01
+FFFFFFD0_C2400000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+010EC496_4B87624B_00
+0000007F_42FE0000_00
+B8007FFF_CE8FFF00_01
+00000012_41900000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+FFFFFFEF_C1880000_00
+0000001F_41F80000_00
+FF7FFF02_CB0000FE_00
+FFFFE2CE_C5E99000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+FFFFFE44_C3DE0000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+000038E7_46639C00_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f32_rz.tv b/wally-pipelined/testbench/fp/i32_f32_rz.tv
index 7aa7eb823..ff8a0518c 100644
--- a/wally-pipelined/testbench/fp/i32_f32_rz.tv
+++ b/wally-pipelined/testbench/fp/i32_f32_rz.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 4DFF7FFF_01
-FFFFC48E C66DC800_00
-00000000 00000000_00
-007FFFCD 4AFFFF9A_00
-00009E14 471E1400_00
-00000001 3F800000_00
-001FFFFB 49FFFFD8_00
-FFFFDE38 C6072000_00
-00000002 40000000_00
-FFDFFC02 CA000FF8_00
-FB794C79 CC90D670_01
-00000004 40800000_00
-F00FFFFE CD7F0000_01
-00000A95 45295000_00
-00000008 41000000_00
-FFFFF97F C4D02000_00
-FFAE458D CAA374E6_00
-00000010 41800000_00
-0101001E 4B80800F_00
-29EB4561 4E27AD15_01
-00000020 42000000_00
-8001FFEE CEFFFC00_01
-FFFBDD08 C8845F00_00
-00000040 42800000_00
-FFF03FF9 C97C0070_00
-FFCEDF36 CA448328_00
-00000080 43000000_00
-0000F01F 47701F00_00
-00000279 441E4000_00
-00000100 43800000_00
-BFFFFFEF CE800000_01
-00000007 40E00000_00
-00000200 44000000_00
-010BFFFD 4B85FFFE_01
-FFFFF590 C5270000_00
-00000400 44800000_00
-F7FFFEFB CD000010_01
-2FEA335F 4E3FA8CD_01
-00000800 45000000_00
-FFC07FFF CA7E0004_00
-177957FD 4DBBCABF_01
-00001000 45800000_00
-01FBFFEE 4BFDFFF7_00
-FFFFFAC9 C4A6E000_00
-00002000 46000000_00
-FFFF8004 C6FFF800_00
-FFFBE0DE C883E440_00
-00004000 46800000_00
-3F00001E 4E7C0000_01
-00000000 00000000_00
-00008000 47000000_00
-FF8201FF CAFBFC02_00
-FFFFD2F1 C6343C00_00
-00010000 47800000_00
-0000047E 448FC000_00
-0011B7E5 498DBF28_00
-00020000 48000000_00
-02200200 4C080080_00
-0013F7E6 499FBF30_00
-00040000 48800000_00
-FFFDC007 C80FFE40_00
-FD0ABD9A CC3D5099_01
-00080000 49000000_00
-0000607F 46C0FE00_00
-00003CEE 4673B800_00
-00100000 49800000_00
-DFDFE000 CE008080_00
-FFFB1642 C89D37C0_00
-00200000 4A000000_00
-FC000078 CC7FFFE2_00
-5F70EEC1 4EBEE1DD_01
-00400000 4A800000_00
-00100082 49800410_00
-FFFFFE21 C3EF8000_00
-00800000 4B000000_00
-FF7BFF7F CB040081_00
-FFFF6393 C71C6D00_00
-01000000 4B800000_00
-07EFFEFD 4CFDFFDF_01
-FFFFFDB4 C4130000_00
-02000000 4C000000_00
-8002FFFF CEFFFA00_01
-FFFFC8E2 C65C7800_00
-04000000 4C800000_00
-FFFC0DFE C87C8080_00
-FFFFFF1B C3650000_00
-08000000 4D000000_00
-03FFFDBF 4C7FFF6F_01
-0001092B 47849580_00
-10000000 4D800000_00
-007FBFFD 4AFF7FFA_00
-00B4F3D1 4B34F3D1_00
-20000000 4E000000_00
-FEF801FF CB83FF00_01
-00000005 40A00000_00
-40000000 4E800000_00
-BFF3FFFE CE801800_01
-0001806B 47C03580_00
-80000000 CF000000_00
-0000A07E 47207E00_00
-FFFFA59F C6B4C200_00
-C0000000 CE800000_00
-E0007FDE CDFFFC01_01
-FFF8343E C8F97840_00
-E0000000 CE000000_00
-0000FF7C 477F7C00_00
-FFFFFFF7 C1100000_00
-F0000000 CD800000_00
-BDFFFFFC CE840000_01
-FFFFE3C1 C5E1F800_00
-F8000000 CD000000_00
-28003FFE 4E2000FF_01
-00000000 00000000_00
-FC000000 CC800000_00
-00EEFFFF 4B6EFFFF_00
-00003EB0 467AC000_00
-FE000000 CC000000_00
-00000F7D 4577D000_00
-FFFFFF0F C3710000_00
-FF000000 CB800000_00
-0000406D 4680DA00_00
-0000001A 41D00000_00
-FF800000 CB000000_00
-203FFFFD 4E00FFFF_01
-0000000A 41200000_00
-FFC00000 CA800000_00
-FFFF007C C77F8400_00
-0000009B 431B0000_00
-FFE00000 CA000000_00
-00E00FFF 4B600FFF_00
-00000006 40C00000_00
-FFF00000 C9800000_00
-00200FFC 4A003FF0_00
-00000714 44E28000_00
-FFF80000 C9000000_00
-F800040E CCFFFF7E_01
-00000013 41980000_00
-FFFC0000 C8800000_00
-F83BFFFF CCF88000_01
-FFF3F584 C940A7C0_00
-FFFE0000 C8000000_00
-F6FFFBFF CD100040_01
-FFFFFFF0 C1800000_00
-FFFF0000 C7800000_00
-80003FFD CEFFFF80_01
-FFFFFFAD C2A60000_00
-FFFF8000 C7000000_00
-004001FD 4A8003FA_00
-000D734E 495734E0_00
-FFFFC000 C6800000_00
-006003FE 4AC007FC_00
-FF9DBAA8 CAC48AB0_00
-FFFFE000 C6000000_00
-000403EE 48807DC0_00
-00734668 4AE68CD0_00
-FFFFF000 C5800000_00
-01200002 4B900001_00
-FF8874A5 CAEF16B6_00
-FFFFF800 C5000000_00
-00060001 48C00020_00
-FFFFFFF8 C1000000_00
-FFFFFC00 C4800000_00
-001FFEDD 49FFF6E8_00
-FFFC56DF C86A4840_00
-FFFFFE00 C4000000_00
-EFFFEFFD CD800080_01
-FECF5EC6 CB98509D_00
-FFFFFF00 C3800000_00
-1FF00002 4DFF8000_01
-F6DB786B CD124879_01
-FFFFFF80 C3000000_00
-F0000FBE CD7FFF04_01
-00000009 41100000_00
-FFFFFFC0 C2800000_00
-0010801F 498400F8_00
-0001F238 47F91C00_00
-FFFFFFE0 C2000000_00
-F8000047 CCFFFFF7_01
-0002133C 4804CF00_00
-FFFFFFF0 C1800000_00
-003C001F 4A70007C_00
-000001F1 43F88000_00
-FFFFFFF8 C1000000_00
-FFDFBFFF CA010004_00
-FF5E507F CB21AF81_00
-FFFFFFFC C0800000_00
-037FFFDE 4C5FFFF7_01
-FFFD7C6F C820E440_00
-FFFFFFFE C0000000_00
-000000FD 437D0000_00
-FFFFF42A C53D6000_00
-FFFFFFFF BF800000_00
-021FFF7D 4C07FFDF_01
-0000000A 41200000_00
-FFFFFFFD C0400000_00
-4010FFFF 4E8021FF_01
-FFFFFFD3 C2340000_00
-FFFFFFFB C0A00000_00
-FFFF800B C6FFEA00_00
-000000B8 43380000_00
-FFFFFFF7 C1100000_00
-FF800803 CAFFEFFA_00
-FFFFFFFE C0000000_00
-FFFFFFEF C1880000_00
-00803FFB 4B003FFB_00
-00000308 44420000_00
-FFFFFFDF C2040000_00
-2107FFFE 4E041FFF_01
-FFE15D4F C9F51588_00
-FFFFFFBF C2820000_00
-400087FD 4E80010F_01
-0000000F 41700000_00
-FFFFFF7F C3010000_00
-FDFC007E CC00FFE0_01
-00000006 40C00000_00
-FFFFFEFF C3808000_00
-FFF80100 C8FFE000_00
-FFFFFE99 C3B38000_00
-FFFFFDFF C4004000_00
-03000002 4C400000_01
-FFF716EA C90E9160_00
-FFFFFBFF C4802000_00
-C7FDFFFF CE600800_01
-FFFFE327 C5E6C800_00
-FFFFF7FF C5001000_00
-0103DFFE 4B81EFFF_00
-07661FD8 4CECC3FB_00
-FFFFEFFF C5800800_00
-83FFFFFE CEF80000_01
-FCD956DB CC49AA49_01
-FFFFDFFF C6000400_00
-FF2001FD CB5FFE03_00
-E4D35BBF CDD96522_01
-FFFFBFFF C6800200_00
-DFEFEFFE CE004040_01
-05DA4300 4CBB4860_00
-FFFF7FFF C7000100_00
-40001040 4E800020_01
-812EDF40 CEFDA241_01
-FFFEFFFF C7800080_00
-FFFFC007 C67FE400_00
-00B6FCC9 4B36FCC9_00
-FFFDFFFF C8000040_00
-000007FE 44FFC000_00
-FC3DE950 CC7085AC_00
-FFFBFFFF C8800020_00
-7FFFFE03 4EFFFFFC_01
-FEB02B59 CBA7EA53_01
-FFF7FFFF C9000010_00
-10FF7FFF 4D87FBFF_01
-00008D5E 470D5E00_00
-FFEFFFFF C9800008_00
-FFFF007E C77F8200_00
-001C2108 49E10840_00
-FFDFFFFF CA000004_00
-00FFC001 4B7FC001_00
-F01C6B36 CD7E394C_01
-FFBFFFFF CA800002_00
-FFFF7FFF C7000100_00
-FFFFD055 C63EAC00_00
-FF7FFFFF CB000001_00
-027BFFFE 4C1EFFFF_01
-FF3090D0 CB4F6F30_00
-FEFFFFFF CB800000_01
-00082040 49020400_00
-0000006E 42DC0000_00
-FDFFFFFF CC000000_01
-FDFFFF87 CC00001E_01
-04C3764D 4C986EC9_01
-FBFFFFFF CC800000_01
-0006007E 48C00FC0_00
-000001EF 43F78000_00
-F7FFFFFF CD000000_01
-FFBF7FFE CA810004_00
-FF1C4E5A CB63B1A6_00
-EFFFFFFF CD800000_01
-FFF97FFD C8D00060_00
-000001D1 43E88000_00
-DFFFFFFF CE000000_01
-2FFFFFFE 4E3FFFFF_01
-00136721 499B3908_00
-BFFFFFFF CE800000_01
-00004BFF 4697FE00_00
-00000544 44A88000_00
-7FFFFFFF 4EFFFFFF_01
-007FDFFB 4AFFBFF6_00
-FFF8BD5E C8E85440_00
-3FFFFFFF 4E7FFFFF_01
-FFBF8003 CA80FFFA_00
-FFFE45D2 C7DD1700_00
-1FFFFFFF 4DFFFFFF_01
-FFFFFDBF C4104000_00
-FFFFF189 C5677000_00
-0FFFFFFF 4D7FFFFF_01
-FFFE6FFE C7C80100_00
-FC8672A0 CC5E6358_00
-07FFFFFF 4CFFFFFF_01
-00000107 43838000_00
-FFFCCA70 C84D6400_00
-03FFFFFF 4C7FFFFF_01
-002107FE 4A041FF8_00
-FFFF48E7 C7371900_00
-01FFFFFF 4BFFFFFF_01
-F7FDFFEE CD002001_01
-00000010 41800000_00
-00FFFFFF 4B7FFFFF_00
-FFFF01FD C77E0300_00
-0000FAEF 477AEF00_00
-007FFFFF 4AFFFFFE_00
-00FC0001 4B7C0001_00
-000000F5 43750000_00
-003FFFFF 4A7FFFFC_00
-FFE07FC0 C9FC0200_00
-001AFFFB 49D7FFD8_00
-001FFFFF 49FFFFF8_00
-00101FFD 4980FFE8_00
-FF4613B2 CB39EC4E_00
-000FFFFF 497FFFF0_00
-F00005FE CD7FFFA0_01
-00036402 48590080_00
-0007FFFF 48FFFFE0_00
-0404FFFF 4C809FFF_01
-021C2358 4C0708D6_00
-0003FFFF 487FFFC0_00
-FFFFFD02 C43F8000_00
-FFFF41C6 C73E3A00_00
-0001FFFF 47FFFF80_00
-00000007 40E00000_00
-27F174DE 4E1FC5D3_01
-0000FFFF 477FFF00_00
-000083F5 4703F500_00
-FFFFFFFB C0A00000_00
-00007FFF 46FFFE00_00
-FE7FDFFE CBC01001_00
-FFFFFFFD C0400000_00
-00003FFF 467FFC00_00
-DBBFFFFE CE110000_01
-00000404 44808000_00
-00001FFF 45FFF800_00
-FFFFC018 C67FA000_00
-00002853 46214C00_00
-00000FFF 457FF000_00
-03FE007F 4C7F801F_01
-FFFFF124 C56DC000_00
-000007FF 44FFE000_00
-FFFFEFBE C5821000_00
-FFFB9AD8 C88CA500_00
-000003FF 447FC000_00
-DFFFFDFE CE000008_01
-FFFFFD95 C41AC000_00
-000001FF 43FF8000_00
-FDFFFFFF CC000000_01
-FFFFFFD0 C2400000_00
-000000FF 437F0000_00
-0037FFE0 4A5FFF80_00
-010EC496 4B87624B_00
-0000007F 42FE0000_00
-B8007FFF CE8FFF00_01
-00000012 41900000_00
-0000003F 427C0000_00
-02003FFC 4C000FFF_00
-FFFFFFEF C1880000_00
-0000001F 41F80000_00
-FF7FFF02 CB0000FE_00
-FFFFE2CE C5E99000_00
-0000000F 41700000_00
-0000A00D 47200D00_00
-FFFFFE44 C3DE0000_00
-00000007 40E00000_00
-0003FFFA 487FFE80_00
-000038E7 46639C00_00
-00000003 40400000_00
+1FEFFFEF_4DFF7FFF_01
+FFFFC48E_C66DC800_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00009E14_471E1400_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+FFFFDE38_C6072000_00
+00000002_40000000_00
+FFDFFC02_CA000FF8_00
+FB794C79_CC90D670_01
+00000004_40800000_00
+F00FFFFE_CD7F0000_01
+00000A95_45295000_00
+00000008_41000000_00
+FFFFF97F_C4D02000_00
+FFAE458D_CAA374E6_00
+00000010_41800000_00
+0101001E_4B80800F_00
+29EB4561_4E27AD15_01
+00000020_42000000_00
+8001FFEE_CEFFFC00_01
+FFFBDD08_C8845F00_00
+00000040_42800000_00
+FFF03FF9_C97C0070_00
+FFCEDF36_CA448328_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000279_441E4000_00
+00000100_43800000_00
+BFFFFFEF_CE800000_01
+00000007_40E00000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+FFFFF590_C5270000_00
+00000400_44800000_00
+F7FFFEFB_CD000010_01
+2FEA335F_4E3FA8CD_01
+00000800_45000000_00
+FFC07FFF_CA7E0004_00
+177957FD_4DBBCABF_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+FFFFFAC9_C4A6E000_00
+00002000_46000000_00
+FFFF8004_C6FFF800_00
+FFFBE0DE_C883E440_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000000_00000000_00
+00008000_47000000_00
+FF8201FF_CAFBFC02_00
+FFFFD2F1_C6343C00_00
+00010000_47800000_00
+0000047E_448FC000_00
+0011B7E5_498DBF28_00
+00020000_48000000_00
+02200200_4C080080_00
+0013F7E6_499FBF30_00
+00040000_48800000_00
+FFFDC007_C80FFE40_00
+FD0ABD9A_CC3D5099_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00003CEE_4673B800_00
+00100000_49800000_00
+DFDFE000_CE008080_00
+FFFB1642_C89D37C0_00
+00200000_4A000000_00
+FC000078_CC7FFFE2_00
+5F70EEC1_4EBEE1DD_01
+00400000_4A800000_00
+00100082_49800410_00
+FFFFFE21_C3EF8000_00
+00800000_4B000000_00
+FF7BFF7F_CB040081_00
+FFFF6393_C71C6D00_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFDF_01
+FFFFFDB4_C4130000_00
+02000000_4C000000_00
+8002FFFF_CEFFFA00_01
+FFFFC8E2_C65C7800_00
+04000000_4C800000_00
+FFFC0DFE_C87C8080_00
+FFFFFF1B_C3650000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF6F_01
+0001092B_47849580_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+00B4F3D1_4B34F3D1_00
+20000000_4E000000_00
+FEF801FF_CB83FF00_01
+00000005_40A00000_00
+40000000_4E800000_00
+BFF3FFFE_CE801800_01
+0001806B_47C03580_00
+80000000_CF000000_00
+0000A07E_47207E00_00
+FFFFA59F_C6B4C200_00
+C0000000_CE800000_00
+E0007FDE_CDFFFC01_01
+FFF8343E_C8F97840_00
+E0000000_CE000000_00
+0000FF7C_477F7C00_00
+FFFFFFF7_C1100000_00
+F0000000_CD800000_00
+BDFFFFFC_CE840000_01
+FFFFE3C1_C5E1F800_00
+F8000000_CD000000_00
+28003FFE_4E2000FF_01
+00000000_00000000_00
+FC000000_CC800000_00
+00EEFFFF_4B6EFFFF_00
+00003EB0_467AC000_00
+FE000000_CC000000_00
+00000F7D_4577D000_00
+FFFFFF0F_C3710000_00
+FF000000_CB800000_00
+0000406D_4680DA00_00
+0000001A_41D00000_00
+FF800000_CB000000_00
+203FFFFD_4E00FFFF_01
+0000000A_41200000_00
+FFC00000_CA800000_00
+FFFF007C_C77F8400_00
+0000009B_431B0000_00
+FFE00000_CA000000_00
+00E00FFF_4B600FFF_00
+00000006_40C00000_00
+FFF00000_C9800000_00
+00200FFC_4A003FF0_00
+00000714_44E28000_00
+FFF80000_C9000000_00
+F800040E_CCFFFF7E_01
+00000013_41980000_00
+FFFC0000_C8800000_00
+F83BFFFF_CCF88000_01
+FFF3F584_C940A7C0_00
+FFFE0000_C8000000_00
+F6FFFBFF_CD100040_01
+FFFFFFF0_C1800000_00
+FFFF0000_C7800000_00
+80003FFD_CEFFFF80_01
+FFFFFFAD_C2A60000_00
+FFFF8000_C7000000_00
+004001FD_4A8003FA_00
+000D734E_495734E0_00
+FFFFC000_C6800000_00
+006003FE_4AC007FC_00
+FF9DBAA8_CAC48AB0_00
+FFFFE000_C6000000_00
+000403EE_48807DC0_00
+00734668_4AE68CD0_00
+FFFFF000_C5800000_00
+01200002_4B900001_00
+FF8874A5_CAEF16B6_00
+FFFFF800_C5000000_00
+00060001_48C00020_00
+FFFFFFF8_C1000000_00
+FFFFFC00_C4800000_00
+001FFEDD_49FFF6E8_00
+FFFC56DF_C86A4840_00
+FFFFFE00_C4000000_00
+EFFFEFFD_CD800080_01
+FECF5EC6_CB98509D_00
+FFFFFF00_C3800000_00
+1FF00002_4DFF8000_01
+F6DB786B_CD124879_01
+FFFFFF80_C3000000_00
+F0000FBE_CD7FFF04_01
+00000009_41100000_00
+FFFFFFC0_C2800000_00
+0010801F_498400F8_00
+0001F238_47F91C00_00
+FFFFFFE0_C2000000_00
+F8000047_CCFFFFF7_01
+0002133C_4804CF00_00
+FFFFFFF0_C1800000_00
+003C001F_4A70007C_00
+000001F1_43F88000_00
+FFFFFFF8_C1000000_00
+FFDFBFFF_CA010004_00
+FF5E507F_CB21AF81_00
+FFFFFFFC_C0800000_00
+037FFFDE_4C5FFFF7_01
+FFFD7C6F_C820E440_00
+FFFFFFFE_C0000000_00
+000000FD_437D0000_00
+FFFFF42A_C53D6000_00
+FFFFFFFF_BF800000_00
+021FFF7D_4C07FFDF_01
+0000000A_41200000_00
+FFFFFFFD_C0400000_00
+4010FFFF_4E8021FF_01
+FFFFFFD3_C2340000_00
+FFFFFFFB_C0A00000_00
+FFFF800B_C6FFEA00_00
+000000B8_43380000_00
+FFFFFFF7_C1100000_00
+FF800803_CAFFEFFA_00
+FFFFFFFE_C0000000_00
+FFFFFFEF_C1880000_00
+00803FFB_4B003FFB_00
+00000308_44420000_00
+FFFFFFDF_C2040000_00
+2107FFFE_4E041FFF_01
+FFE15D4F_C9F51588_00
+FFFFFFBF_C2820000_00
+400087FD_4E80010F_01
+0000000F_41700000_00
+FFFFFF7F_C3010000_00
+FDFC007E_CC00FFE0_01
+00000006_40C00000_00
+FFFFFEFF_C3808000_00
+FFF80100_C8FFE000_00
+FFFFFE99_C3B38000_00
+FFFFFDFF_C4004000_00
+03000002_4C400000_01
+FFF716EA_C90E9160_00
+FFFFFBFF_C4802000_00
+C7FDFFFF_CE600800_01
+FFFFE327_C5E6C800_00
+FFFFF7FF_C5001000_00
+0103DFFE_4B81EFFF_00
+07661FD8_4CECC3FB_00
+FFFFEFFF_C5800800_00
+83FFFFFE_CEF80000_01
+FCD956DB_CC49AA49_01
+FFFFDFFF_C6000400_00
+FF2001FD_CB5FFE03_00
+E4D35BBF_CDD96522_01
+FFFFBFFF_C6800200_00
+DFEFEFFE_CE004040_01
+05DA4300_4CBB4860_00
+FFFF7FFF_C7000100_00
+40001040_4E800020_01
+812EDF40_CEFDA241_01
+FFFEFFFF_C7800080_00
+FFFFC007_C67FE400_00
+00B6FCC9_4B36FCC9_00
+FFFDFFFF_C8000040_00
+000007FE_44FFC000_00
+FC3DE950_CC7085AC_00
+FFFBFFFF_C8800020_00
+7FFFFE03_4EFFFFFC_01
+FEB02B59_CBA7EA53_01
+FFF7FFFF_C9000010_00
+10FF7FFF_4D87FBFF_01
+00008D5E_470D5E00_00
+FFEFFFFF_C9800008_00
+FFFF007E_C77F8200_00
+001C2108_49E10840_00
+FFDFFFFF_CA000004_00
+00FFC001_4B7FC001_00
+F01C6B36_CD7E394C_01
+FFBFFFFF_CA800002_00
+FFFF7FFF_C7000100_00
+FFFFD055_C63EAC00_00
+FF7FFFFF_CB000001_00
+027BFFFE_4C1EFFFF_01
+FF3090D0_CB4F6F30_00
+FEFFFFFF_CB800000_01
+00082040_49020400_00
+0000006E_42DC0000_00
+FDFFFFFF_CC000000_01
+FDFFFF87_CC00001E_01
+04C3764D_4C986EC9_01
+FBFFFFFF_CC800000_01
+0006007E_48C00FC0_00
+000001EF_43F78000_00
+F7FFFFFF_CD000000_01
+FFBF7FFE_CA810004_00
+FF1C4E5A_CB63B1A6_00
+EFFFFFFF_CD800000_01
+FFF97FFD_C8D00060_00
+000001D1_43E88000_00
+DFFFFFFF_CE000000_01
+2FFFFFFE_4E3FFFFF_01
+00136721_499B3908_00
+BFFFFFFF_CE800000_01
+00004BFF_4697FE00_00
+00000544_44A88000_00
+7FFFFFFF_4EFFFFFF_01
+007FDFFB_4AFFBFF6_00
+FFF8BD5E_C8E85440_00
+3FFFFFFF_4E7FFFFF_01
+FFBF8003_CA80FFFA_00
+FFFE45D2_C7DD1700_00
+1FFFFFFF_4DFFFFFF_01
+FFFFFDBF_C4104000_00
+FFFFF189_C5677000_00
+0FFFFFFF_4D7FFFFF_01
+FFFE6FFE_C7C80100_00
+FC8672A0_CC5E6358_00
+07FFFFFF_4CFFFFFF_01
+00000107_43838000_00
+FFFCCA70_C84D6400_00
+03FFFFFF_4C7FFFFF_01
+002107FE_4A041FF8_00
+FFFF48E7_C7371900_00
+01FFFFFF_4BFFFFFF_01
+F7FDFFEE_CD002001_01
+00000010_41800000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_C77E0300_00
+0000FAEF_477AEF00_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000000F5_43750000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_C9FC0200_00
+001AFFFB_49D7FFD8_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+FF4613B2_CB39EC4E_00
+000FFFFF_497FFFF0_00
+F00005FE_CD7FFFA0_01
+00036402_48590080_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C809FFF_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_C43F8000_00
+FFFF41C6_C73E3A00_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+FFFFFFFB_C0A00000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_CBC01001_00
+FFFFFFFD_C0400000_00
+00003FFF_467FFC00_00
+DBBFFFFE_CE110000_01
+00000404_44808000_00
+00001FFF_45FFF800_00
+FFFFC018_C67FA000_00
+00002853_46214C00_00
+00000FFF_457FF000_00
+03FE007F_4C7F801F_01
+FFFFF124_C56DC000_00
+000007FF_44FFE000_00
+FFFFEFBE_C5821000_00
+FFFB9AD8_C88CA500_00
+000003FF_447FC000_00
+DFFFFDFE_CE000008_01
+FFFFFD95_C41AC000_00
+000001FF_43FF8000_00
+FDFFFFFF_CC000000_01
+FFFFFFD0_C2400000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+010EC496_4B87624B_00
+0000007F_42FE0000_00
+B8007FFF_CE8FFF00_01
+00000012_41900000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+FFFFFFEF_C1880000_00
+0000001F_41F80000_00
+FF7FFF02_CB0000FE_00
+FFFFE2CE_C5E99000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+FFFFFE44_C3DE0000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+000038E7_46639C00_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rd.tv b/wally-pipelined/testbench/fp/i32_f64_rd.tv
index 7f04b63fd..3e4622082 100644
--- a/wally-pipelined/testbench/fp/i32_f64_rd.tv
+++ b/wally-pipelined/testbench/fp/i32_f64_rd.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 41BFEFFFEF000000_00
-FFFFC48E C0CDB90000000000_00
-00000000 0000000000000000_00
-007FFFCD 415FFFF340000000_00
-00009E14 40E3C28000000000_00
-00000001 3FF0000000000000_00
-001FFFFB 413FFFFB00000000_00
-FFFFDE38 C0C0E40000000000_00
-00000002 4000000000000000_00
-FFDFFC02 C14001FF00000000_00
-FB794C79 C1921ACE1C000000_00
-00000004 4010000000000000_00
-F00FFFFE C1AFE00004000000_00
-00000A95 40A52A0000000000_00
-00000008 4020000000000000_00
-FFFFF97F C09A040000000000_00
-FFAE458D C1546E9CC0000000_00
-00000010 4030000000000000_00
-0101001E 41701001E0000000_00
-29EB4561 41C4F5A2B0800000_00
-00000020 4040000000000000_00
-8001FFEE C1DFFF8004800000_00
-FFFBDD08 C1108BE000000000_00
-00000040 4050000000000000_00
-FFF03FF9 C12F800E00000000_00
-FFCEDF36 C148906500000000_00
-00000080 4060000000000000_00
-0000F01F 40EE03E000000000_00
-00000279 4083C80000000000_00
-00000100 4070000000000000_00
-BFFFFFEF C1D0000004400000_00
-00000007 401C000000000000_00
-00000200 4080000000000000_00
-010BFFFD 4170BFFFD0000000_00
-FFFFF590 C0A4E00000000000_00
-00000400 4090000000000000_00
-F7FFFEFB C1A000020A000000_00
-2FEA335F 41C7F519AF800000_00
-00000800 40A0000000000000_00
-FFC07FFF C14FC00080000000_00
-177957FD 41B77957FD000000_00
-00001000 40B0000000000000_00
-01FBFFEE 417FBFFEE0000000_00
-FFFFFAC9 C094DC0000000000_00
-00002000 40C0000000000000_00
-FFFF8004 C0DFFF0000000000_00
-FFFBE0DE C1107C8800000000_00
-00004000 40D0000000000000_00
-3F00001E 41CF80000F000000_00
-00000000 0000000000000000_00
-00008000 40E0000000000000_00
-FF8201FF C15F7F8040000000_00
-FFFFD2F1 C0C6878000000000_00
-00010000 40F0000000000000_00
-0000047E 4091F80000000000_00
-0011B7E5 4131B7E500000000_00
-00020000 4100000000000000_00
-02200200 4181001000000000_00
-0013F7E6 4133F7E600000000_00
-00040000 4110000000000000_00
-FFFDC007 C101FFC800000000_00
-FD0ABD9A C187AA1330000000_00
-00080000 4120000000000000_00
-0000607F 40D81FC000000000_00
-00003CEE 40CE770000000000_00
-00100000 4130000000000000_00
-DFDFE000 C1C0101000000000_00
-FFFB1642 C113A6F800000000_00
-00200000 4140000000000000_00
-FC000078 C18FFFFC40000000_00
-5F70EEC1 41D7DC3BB0400000_00
-00400000 4150000000000000_00
-00100082 4130008200000000_00
-FFFFFE21 C07DF00000000000_00
-00800000 4160000000000000_00
-FF7BFF7F C160801020000000_00
-FFFF6393 C0E38DA000000000_00
-01000000 4170000000000000_00
-07EFFEFD 419FBFFBF4000000_00
-FFFFFDB4 C082600000000000_00
-02000000 4180000000000000_00
-8002FFFF C1DFFF4000400000_00
-FFFFC8E2 C0CB8F0000000000_00
-04000000 4190000000000000_00
-FFFC0DFE C10F901000000000_00
-FFFFFF1B C06CA00000000000_00
-08000000 41A0000000000000_00
-03FFFDBF 418FFFEDF8000000_00
-0001092B 40F092B000000000_00
-10000000 41B0000000000000_00
-007FBFFD 415FEFFF40000000_00
-00B4F3D1 41669E7A20000000_00
-20000000 41C0000000000000_00
-FEF801FF C1707FE010000000_00
-00000005 4014000000000000_00
-40000000 41D0000000000000_00
-BFF3FFFE C1D0030000800000_00
-0001806B 40F806B000000000_00
-80000000 C1E0000000000000_00
-0000A07E 40E40FC000000000_00
-FFFFA59F C0D6984000000000_00
-C0000000 C1D0000000000000_00
-E0007FDE C1BFFF8022000000_00
-FFF8343E C11F2F0800000000_00
-E0000000 C1C0000000000000_00
-0000FF7C 40EFEF8000000000_00
-FFFFFFF7 C022000000000000_00
-F0000000 C1B0000000000000_00
-BDFFFFFC C1D0800001000000_00
-FFFFE3C1 C0BC3F0000000000_00
-F8000000 C1A0000000000000_00
-28003FFE 41C4001FFF000000_00
-00000000 0000000000000000_00
-FC000000 C190000000000000_00
-00EEFFFF 416DDFFFE0000000_00
-00003EB0 40CF580000000000_00
-FE000000 C180000000000000_00
-00000F7D 40AEFA0000000000_00
-FFFFFF0F C06E200000000000_00
-FF000000 C170000000000000_00
-0000406D 40D01B4000000000_00
-0000001A 403A000000000000_00
-FF800000 C160000000000000_00
-203FFFFD 41C01FFFFE800000_00
-0000000A 4024000000000000_00
-FFC00000 C150000000000000_00
-FFFF007C C0EFF08000000000_00
-0000009B 4063600000000000_00
-FFE00000 C140000000000000_00
-00E00FFF 416C01FFE0000000_00
-00000006 4018000000000000_00
-FFF00000 C130000000000000_00
-00200FFC 414007FE00000000_00
-00000714 409C500000000000_00
-FFF80000 C120000000000000_00
-F800040E C19FFFEFC8000000_00
-00000013 4033000000000000_00
-FFFC0000 C110000000000000_00
-F83BFFFF C19F100004000000_00
-FFF3F584 C12814F800000000_00
-FFFE0000 C100000000000000_00
-F6FFFBFF C1A2000802000000_00
-FFFFFFF0 C030000000000000_00
-FFFF0000 C0F0000000000000_00
-80003FFD C1DFFFF000C00000_00
-FFFFFFAD C054C00000000000_00
-FFFF8000 C0E0000000000000_00
-004001FD 4150007F40000000_00
-000D734E 412AE69C00000000_00
-FFFFC000 C0D0000000000000_00
-006003FE 415800FF80000000_00
-FF9DBAA8 C158915600000000_00
-FFFFE000 C0C0000000000000_00
-000403EE 41100FB800000000_00
-00734668 415CD19A00000000_00
-FFFFF000 C0B0000000000000_00
-01200002 4172000020000000_00
-FF8874A5 C15DE2D6C0000000_00
-FFFFF800 C0A0000000000000_00
-00060001 4118000400000000_00
-FFFFFFF8 C020000000000000_00
-FFFFFC00 C090000000000000_00
-001FFEDD 413FFEDD00000000_00
-FFFC56DF C10D490800000000_00
-FFFFFE00 C080000000000000_00
-EFFFEFFD C1B0001003000000_00
-FECF5EC6 C1730A13A0000000_00
-FFFFFF00 C070000000000000_00
-1FF00002 41BFF00002000000_00
-F6DB786B C1A2490F2A000000_00
-FFFFFF80 C060000000000000_00
-F0000FBE C1AFFFE084000000_00
-00000009 4022000000000000_00
-FFFFFFC0 C050000000000000_00
-0010801F 4130801F00000000_00
-0001F238 40FF238000000000_00
-FFFFFFE0 C040000000000000_00
-F8000047 C19FFFFEE4000000_00
-0002133C 410099E000000000_00
-FFFFFFF0 C030000000000000_00
-003C001F 414E000F80000000_00
-000001F1 407F100000000000_00
-FFFFFFF8 C020000000000000_00
-FFDFBFFF C140200080000000_00
-FF5E507F C16435F020000000_00
-FFFFFFFC C010000000000000_00
-037FFFDE 418BFFFEF0000000_00
-FFFD7C6F C1041C8800000000_00
-FFFFFFFE C000000000000000_00
-000000FD 406FA00000000000_00
-FFFFF42A C0A7AC0000000000_00
-FFFFFFFF BFF0000000000000_00
-021FFF7D 4180FFFBE8000000_00
-0000000A 4024000000000000_00
-FFFFFFFD C008000000000000_00
-4010FFFF 41D0043FFFC00000_00
-FFFFFFD3 C046800000000000_00
-FFFFFFFB C014000000000000_00
-FFFF800B C0DFFD4000000000_00
-000000B8 4067000000000000_00
-FFFFFFF7 C022000000000000_00
-FF800803 C15FFDFF40000000_00
-FFFFFFFE C000000000000000_00
-FFFFFFEF C031000000000000_00
-00803FFB 416007FF60000000_00
-00000308 4088400000000000_00
-FFFFFFDF C040800000000000_00
-2107FFFE 41C083FFFF000000_00
-FFE15D4F C13EA2B100000000_00
-FFFFFFBF C050400000000000_00
-400087FD 41D00021FF400000_00
-0000000F 402E000000000000_00
-FFFFFF7F C060200000000000_00
-FDFC007E C1801FFC10000000_00
-00000006 4018000000000000_00
-FFFFFEFF C070100000000000_00
-FFF80100 C11FFC0000000000_00
-FFFFFE99 C076700000000000_00
-FFFFFDFF C080080000000000_00
-03000002 4188000010000000_00
-FFF716EA C121D22C00000000_00
-FFFFFBFF C090040000000000_00
-C7FDFFFF C1CC010000800000_00
-FFFFE327 C0BCD90000000000_00
-FFFFF7FF C0A0020000000000_00
-0103DFFE 41703DFFE0000000_00
-07661FD8 419D987F60000000_00
-FFFFEFFF C0B0010000000000_00
-83FFFFFE C1DF000000800000_00
-FCD956DB C189354928000000_00
-FFFFDFFF C0C0008000000000_00
-FF2001FD C16BFFC060000000_00
-E4D35BBF C1BB2CA441000000_00
-FFFFBFFF C0D0004000000000_00
-DFEFEFFE C1C0080801000000_00
-05DA4300 4197690C00000000_00
-FFFF7FFF C0E0002000000000_00
-40001040 41D0000410000000_00
-812EDF40 C1DFB44830000000_00
-FFFEFFFF C0F0001000000000_00
-FFFFC007 C0CFFC8000000000_00
-00B6FCC9 4166DF9920000000_00
-FFFDFFFF C100000800000000_00
-000007FE 409FF80000000000_00
-FC3DE950 C18E10B580000000_00
-FFFBFFFF C110000400000000_00
-7FFFFE03 41DFFFFF80C00000_00
-FEB02B59 C174FD4A70000000_00
-FFF7FFFF C120000200000000_00
-10FF7FFF 41B0FF7FFF000000_00
-00008D5E 40E1ABC000000000_00
-FFEFFFFF C130000100000000_00
-FFFF007E C0EFF04000000000_00
-001C2108 413C210800000000_00
-FFDFFFFF C140000080000000_00
-00FFC001 416FF80020000000_00
-F01C6B36 C1AFC72994000000_00
-FFBFFFFF C150000040000000_00
-FFFF7FFF C0E0002000000000_00
-FFFFD055 C0C7D58000000000_00
-FF7FFFFF C160000020000000_00
-027BFFFE 4183DFFFF0000000_00
-FF3090D0 C169EDE600000000_00
-FEFFFFFF C170000010000000_00
-00082040 4120408000000000_00
-0000006E 405B800000000000_00
-FDFFFFFF C180000008000000_00
-FDFFFF87 C1800003C8000000_00
-04C3764D 41930DD934000000_00
-FBFFFFFF C190000004000000_00
-0006007E 411801F800000000_00
-000001EF 407EF00000000000_00
-F7FFFFFF C1A0000002000000_00
-FFBF7FFE C150200080000000_00
-FF1C4E5A C16C7634C0000000_00
-EFFFFFFF C1B0000001000000_00
-FFF97FFD C11A000C00000000_00
-000001D1 407D100000000000_00
-DFFFFFFF C1C0000000800000_00
-2FFFFFFE 41C7FFFFFF000000_00
-00136721 4133672100000000_00
-BFFFFFFF C1D0000000400000_00
-00004BFF 40D2FFC000000000_00
-00000544 4095100000000000_00
-7FFFFFFF 41DFFFFFFFC00000_00
-007FDFFB 415FF7FEC0000000_00
-FFF8BD5E C11D0A8800000000_00
-3FFFFFFF 41CFFFFFFF800000_00
-FFBF8003 C1501FFF40000000_00
-FFFE45D2 C0FBA2E000000000_00
-1FFFFFFF 41BFFFFFFF000000_00
-FFFFFDBF C082080000000000_00
-FFFFF189 C0ACEE0000000000_00
-0FFFFFFF 41AFFFFFFE000000_00
-FFFE6FFE C0F9002000000000_00
-FC8672A0 C18BCC6B00000000_00
-07FFFFFF 419FFFFFFC000000_00
-00000107 4070700000000000_00
-FFFCCA70 C109AC8000000000_00
-03FFFFFF 418FFFFFF8000000_00
-002107FE 414083FF00000000_00
-FFFF48E7 C0E6E32000000000_00
-01FFFFFF 417FFFFFF0000000_00
-F7FDFFEE C1A0040024000000_00
-00000010 4030000000000000_00
-00FFFFFF 416FFFFFE0000000_00
-FFFF01FD C0EFC06000000000_00
-0000FAEF 40EF5DE000000000_00
-007FFFFF 415FFFFFC0000000_00
-00FC0001 416F800020000000_00
-000000F5 406EA00000000000_00
-003FFFFF 414FFFFF80000000_00
-FFE07FC0 C13F804000000000_00
-001AFFFB 413AFFFB00000000_00
-001FFFFF 413FFFFF00000000_00
-00101FFD 41301FFD00000000_00
-FF4613B2 C1673D89C0000000_00
-000FFFFF 412FFFFE00000000_00
-F00005FE C1AFFFF404000000_00
-00036402 410B201000000000_00
-0007FFFF 411FFFFC00000000_00
-0404FFFF 419013FFFC000000_00
-021C2358 4180E11AC0000000_00
-0003FFFF 410FFFF800000000_00
-FFFFFD02 C087F00000000000_00
-FFFF41C6 C0E7C74000000000_00
-0001FFFF 40FFFFF000000000_00
-00000007 401C000000000000_00
-27F174DE 41C3F8BA6F000000_00
-0000FFFF 40EFFFE000000000_00
-000083F5 40E07EA000000000_00
-FFFFFFFB C014000000000000_00
-00007FFF 40DFFFC000000000_00
-FE7FDFFE C178020020000000_00
-FFFFFFFD C008000000000000_00
-00003FFF 40CFFF8000000000_00
-DBBFFFFE C1C2200001000000_00
-00000404 4090100000000000_00
-00001FFF 40BFFF0000000000_00
-FFFFC018 C0CFF40000000000_00
-00002853 40C4298000000000_00
-00000FFF 40AFFE0000000000_00
-03FE007F 418FF003F8000000_00
-FFFFF124 C0ADB80000000000_00
-000007FF 409FFC0000000000_00
-FFFFEFBE C0B0420000000000_00
-FFFB9AD8 C11194A000000000_00
-000003FF 408FF80000000000_00
-DFFFFDFE C1C0000101000000_00
-FFFFFD95 C083580000000000_00
-000001FF 407FF00000000000_00
-FDFFFFFF C180000008000000_00
-FFFFFFD0 C048000000000000_00
-000000FF 406FE00000000000_00
-0037FFE0 414BFFF000000000_00
-010EC496 4170EC4960000000_00
-0000007F 405FC00000000000_00
-B8007FFF C1D1FFE000400000_00
-00000012 4032000000000000_00
-0000003F 404F800000000000_00
-02003FFC 418001FFE0000000_00
-FFFFFFEF C031000000000000_00
-0000001F 403F000000000000_00
-FF7FFF02 C160001FC0000000_00
-FFFFE2CE C0BD320000000000_00
-0000000F 402E000000000000_00
-0000A00D 40E401A000000000_00
-FFFFFE44 C07BC00000000000_00
-00000007 401C000000000000_00
-0003FFFA 410FFFD000000000_00
-000038E7 40CC738000000000_00
-00000003 4008000000000000_00
+1FEFFFEF_41BFEFFFEF000000_00
+FFFFC48E_C0CDB90000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00009E14_40E3C28000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+FFFFDE38_C0C0E40000000000_00
+00000002_4000000000000000_00
+FFDFFC02_C14001FF00000000_00
+FB794C79_C1921ACE1C000000_00
+00000004_4010000000000000_00
+F00FFFFE_C1AFE00004000000_00
+00000A95_40A52A0000000000_00
+00000008_4020000000000000_00
+FFFFF97F_C09A040000000000_00
+FFAE458D_C1546E9CC0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+29EB4561_41C4F5A2B0800000_00
+00000020_4040000000000000_00
+8001FFEE_C1DFFF8004800000_00
+FFFBDD08_C1108BE000000000_00
+00000040_4050000000000000_00
+FFF03FF9_C12F800E00000000_00
+FFCEDF36_C148906500000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000279_4083C80000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_C1D0000004400000_00
+00000007_401C000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+FFFFF590_C0A4E00000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_C1A000020A000000_00
+2FEA335F_41C7F519AF800000_00
+00000800_40A0000000000000_00
+FFC07FFF_C14FC00080000000_00
+177957FD_41B77957FD000000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+FFFFFAC9_C094DC0000000000_00
+00002000_40C0000000000000_00
+FFFF8004_C0DFFF0000000000_00
+FFFBE0DE_C1107C8800000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000000_0000000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_C15F7F8040000000_00
+FFFFD2F1_C0C6878000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0011B7E5_4131B7E500000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0013F7E6_4133F7E600000000_00
+00040000_4110000000000000_00
+FFFDC007_C101FFC800000000_00
+FD0ABD9A_C187AA1330000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00003CEE_40CE770000000000_00
+00100000_4130000000000000_00
+DFDFE000_C1C0101000000000_00
+FFFB1642_C113A6F800000000_00
+00200000_4140000000000000_00
+FC000078_C18FFFFC40000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+FFFFFE21_C07DF00000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_C160801020000000_00
+FFFF6393_C0E38DA000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+FFFFFDB4_C082600000000000_00
+02000000_4180000000000000_00
+8002FFFF_C1DFFF4000400000_00
+FFFFC8E2_C0CB8F0000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_C10F901000000000_00
+FFFFFF1B_C06CA00000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0001092B_40F092B000000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+00B4F3D1_41669E7A20000000_00
+20000000_41C0000000000000_00
+FEF801FF_C1707FE010000000_00
+00000005_4014000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_C1D0030000800000_00
+0001806B_40F806B000000000_00
+80000000_C1E0000000000000_00
+0000A07E_40E40FC000000000_00
+FFFFA59F_C0D6984000000000_00
+C0000000_C1D0000000000000_00
+E0007FDE_C1BFFF8022000000_00
+FFF8343E_C11F2F0800000000_00
+E0000000_C1C0000000000000_00
+0000FF7C_40EFEF8000000000_00
+FFFFFFF7_C022000000000000_00
+F0000000_C1B0000000000000_00
+BDFFFFFC_C1D0800001000000_00
+FFFFE3C1_C0BC3F0000000000_00
+F8000000_C1A0000000000000_00
+28003FFE_41C4001FFF000000_00
+00000000_0000000000000000_00
+FC000000_C190000000000000_00
+00EEFFFF_416DDFFFE0000000_00
+00003EB0_40CF580000000000_00
+FE000000_C180000000000000_00
+00000F7D_40AEFA0000000000_00
+FFFFFF0F_C06E200000000000_00
+FF000000_C170000000000000_00
+0000406D_40D01B4000000000_00
+0000001A_403A000000000000_00
+FF800000_C160000000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000000A_4024000000000000_00
+FFC00000_C150000000000000_00
+FFFF007C_C0EFF08000000000_00
+0000009B_4063600000000000_00
+FFE00000_C140000000000000_00
+00E00FFF_416C01FFE0000000_00
+00000006_4018000000000000_00
+FFF00000_C130000000000000_00
+00200FFC_414007FE00000000_00
+00000714_409C500000000000_00
+FFF80000_C120000000000000_00
+F800040E_C19FFFEFC8000000_00
+00000013_4033000000000000_00
+FFFC0000_C110000000000000_00
+F83BFFFF_C19F100004000000_00
+FFF3F584_C12814F800000000_00
+FFFE0000_C100000000000000_00
+F6FFFBFF_C1A2000802000000_00
+FFFFFFF0_C030000000000000_00
+FFFF0000_C0F0000000000000_00
+80003FFD_C1DFFFF000C00000_00
+FFFFFFAD_C054C00000000000_00
+FFFF8000_C0E0000000000000_00
+004001FD_4150007F40000000_00
+000D734E_412AE69C00000000_00
+FFFFC000_C0D0000000000000_00
+006003FE_415800FF80000000_00
+FF9DBAA8_C158915600000000_00
+FFFFE000_C0C0000000000000_00
+000403EE_41100FB800000000_00
+00734668_415CD19A00000000_00
+FFFFF000_C0B0000000000000_00
+01200002_4172000020000000_00
+FF8874A5_C15DE2D6C0000000_00
+FFFFF800_C0A0000000000000_00
+00060001_4118000400000000_00
+FFFFFFF8_C020000000000000_00
+FFFFFC00_C090000000000000_00
+001FFEDD_413FFEDD00000000_00
+FFFC56DF_C10D490800000000_00
+FFFFFE00_C080000000000000_00
+EFFFEFFD_C1B0001003000000_00
+FECF5EC6_C1730A13A0000000_00
+FFFFFF00_C070000000000000_00
+1FF00002_41BFF00002000000_00
+F6DB786B_C1A2490F2A000000_00
+FFFFFF80_C060000000000000_00
+F0000FBE_C1AFFFE084000000_00
+00000009_4022000000000000_00
+FFFFFFC0_C050000000000000_00
+0010801F_4130801F00000000_00
+0001F238_40FF238000000000_00
+FFFFFFE0_C040000000000000_00
+F8000047_C19FFFFEE4000000_00
+0002133C_410099E000000000_00
+FFFFFFF0_C030000000000000_00
+003C001F_414E000F80000000_00
+000001F1_407F100000000000_00
+FFFFFFF8_C020000000000000_00
+FFDFBFFF_C140200080000000_00
+FF5E507F_C16435F020000000_00
+FFFFFFFC_C010000000000000_00
+037FFFDE_418BFFFEF0000000_00
+FFFD7C6F_C1041C8800000000_00
+FFFFFFFE_C000000000000000_00
+000000FD_406FA00000000000_00
+FFFFF42A_C0A7AC0000000000_00
+FFFFFFFF_BFF0000000000000_00
+021FFF7D_4180FFFBE8000000_00
+0000000A_4024000000000000_00
+FFFFFFFD_C008000000000000_00
+4010FFFF_41D0043FFFC00000_00
+FFFFFFD3_C046800000000000_00
+FFFFFFFB_C014000000000000_00
+FFFF800B_C0DFFD4000000000_00
+000000B8_4067000000000000_00
+FFFFFFF7_C022000000000000_00
+FF800803_C15FFDFF40000000_00
+FFFFFFFE_C000000000000000_00
+FFFFFFEF_C031000000000000_00
+00803FFB_416007FF60000000_00
+00000308_4088400000000000_00
+FFFFFFDF_C040800000000000_00
+2107FFFE_41C083FFFF000000_00
+FFE15D4F_C13EA2B100000000_00
+FFFFFFBF_C050400000000000_00
+400087FD_41D00021FF400000_00
+0000000F_402E000000000000_00
+FFFFFF7F_C060200000000000_00
+FDFC007E_C1801FFC10000000_00
+00000006_4018000000000000_00
+FFFFFEFF_C070100000000000_00
+FFF80100_C11FFC0000000000_00
+FFFFFE99_C076700000000000_00
+FFFFFDFF_C080080000000000_00
+03000002_4188000010000000_00
+FFF716EA_C121D22C00000000_00
+FFFFFBFF_C090040000000000_00
+C7FDFFFF_C1CC010000800000_00
+FFFFE327_C0BCD90000000000_00
+FFFFF7FF_C0A0020000000000_00
+0103DFFE_41703DFFE0000000_00
+07661FD8_419D987F60000000_00
+FFFFEFFF_C0B0010000000000_00
+83FFFFFE_C1DF000000800000_00
+FCD956DB_C189354928000000_00
+FFFFDFFF_C0C0008000000000_00
+FF2001FD_C16BFFC060000000_00
+E4D35BBF_C1BB2CA441000000_00
+FFFFBFFF_C0D0004000000000_00
+DFEFEFFE_C1C0080801000000_00
+05DA4300_4197690C00000000_00
+FFFF7FFF_C0E0002000000000_00
+40001040_41D0000410000000_00
+812EDF40_C1DFB44830000000_00
+FFFEFFFF_C0F0001000000000_00
+FFFFC007_C0CFFC8000000000_00
+00B6FCC9_4166DF9920000000_00
+FFFDFFFF_C100000800000000_00
+000007FE_409FF80000000000_00
+FC3DE950_C18E10B580000000_00
+FFFBFFFF_C110000400000000_00
+7FFFFE03_41DFFFFF80C00000_00
+FEB02B59_C174FD4A70000000_00
+FFF7FFFF_C120000200000000_00
+10FF7FFF_41B0FF7FFF000000_00
+00008D5E_40E1ABC000000000_00
+FFEFFFFF_C130000100000000_00
+FFFF007E_C0EFF04000000000_00
+001C2108_413C210800000000_00
+FFDFFFFF_C140000080000000_00
+00FFC001_416FF80020000000_00
+F01C6B36_C1AFC72994000000_00
+FFBFFFFF_C150000040000000_00
+FFFF7FFF_C0E0002000000000_00
+FFFFD055_C0C7D58000000000_00
+FF7FFFFF_C160000020000000_00
+027BFFFE_4183DFFFF0000000_00
+FF3090D0_C169EDE600000000_00
+FEFFFFFF_C170000010000000_00
+00082040_4120408000000000_00
+0000006E_405B800000000000_00
+FDFFFFFF_C180000008000000_00
+FDFFFF87_C1800003C8000000_00
+04C3764D_41930DD934000000_00
+FBFFFFFF_C190000004000000_00
+0006007E_411801F800000000_00
+000001EF_407EF00000000000_00
+F7FFFFFF_C1A0000002000000_00
+FFBF7FFE_C150200080000000_00
+FF1C4E5A_C16C7634C0000000_00
+EFFFFFFF_C1B0000001000000_00
+FFF97FFD_C11A000C00000000_00
+000001D1_407D100000000000_00
+DFFFFFFF_C1C0000000800000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00136721_4133672100000000_00
+BFFFFFFF_C1D0000000400000_00
+00004BFF_40D2FFC000000000_00
+00000544_4095100000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+FFF8BD5E_C11D0A8800000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_C1501FFF40000000_00
+FFFE45D2_C0FBA2E000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_C082080000000000_00
+FFFFF189_C0ACEE0000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_C0F9002000000000_00
+FC8672A0_C18BCC6B00000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+FFFCCA70_C109AC8000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+FFFF48E7_C0E6E32000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_C1A0040024000000_00
+00000010_4030000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_C0EFC06000000000_00
+0000FAEF_40EF5DE000000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000000F5_406EA00000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_C13F804000000000_00
+001AFFFB_413AFFFB00000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+FF4613B2_C1673D89C0000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_C1AFFFF404000000_00
+00036402_410B201000000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_C087F00000000000_00
+FFFF41C6_C0E7C74000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+FFFFFFFB_C014000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_C178020020000000_00
+FFFFFFFD_C008000000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_C1C2200001000000_00
+00000404_4090100000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_C0CFF40000000000_00
+00002853_40C4298000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+FFFFF124_C0ADB80000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_C0B0420000000000_00
+FFFB9AD8_C11194A000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_C1C0000101000000_00
+FFFFFD95_C083580000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_C180000008000000_00
+FFFFFFD0_C048000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+010EC496_4170EC4960000000_00
+0000007F_405FC00000000000_00
+B8007FFF_C1D1FFE000400000_00
+00000012_4032000000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+FFFFFFEF_C031000000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_C160001FC0000000_00
+FFFFE2CE_C0BD320000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+FFFFFE44_C07BC00000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+000038E7_40CC738000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rne.tv b/wally-pipelined/testbench/fp/i32_f64_rne.tv
index 7f04b63fd..3e4622082 100644
--- a/wally-pipelined/testbench/fp/i32_f64_rne.tv
+++ b/wally-pipelined/testbench/fp/i32_f64_rne.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 41BFEFFFEF000000_00
-FFFFC48E C0CDB90000000000_00
-00000000 0000000000000000_00
-007FFFCD 415FFFF340000000_00
-00009E14 40E3C28000000000_00
-00000001 3FF0000000000000_00
-001FFFFB 413FFFFB00000000_00
-FFFFDE38 C0C0E40000000000_00
-00000002 4000000000000000_00
-FFDFFC02 C14001FF00000000_00
-FB794C79 C1921ACE1C000000_00
-00000004 4010000000000000_00
-F00FFFFE C1AFE00004000000_00
-00000A95 40A52A0000000000_00
-00000008 4020000000000000_00
-FFFFF97F C09A040000000000_00
-FFAE458D C1546E9CC0000000_00
-00000010 4030000000000000_00
-0101001E 41701001E0000000_00
-29EB4561 41C4F5A2B0800000_00
-00000020 4040000000000000_00
-8001FFEE C1DFFF8004800000_00
-FFFBDD08 C1108BE000000000_00
-00000040 4050000000000000_00
-FFF03FF9 C12F800E00000000_00
-FFCEDF36 C148906500000000_00
-00000080 4060000000000000_00
-0000F01F 40EE03E000000000_00
-00000279 4083C80000000000_00
-00000100 4070000000000000_00
-BFFFFFEF C1D0000004400000_00
-00000007 401C000000000000_00
-00000200 4080000000000000_00
-010BFFFD 4170BFFFD0000000_00
-FFFFF590 C0A4E00000000000_00
-00000400 4090000000000000_00
-F7FFFEFB C1A000020A000000_00
-2FEA335F 41C7F519AF800000_00
-00000800 40A0000000000000_00
-FFC07FFF C14FC00080000000_00
-177957FD 41B77957FD000000_00
-00001000 40B0000000000000_00
-01FBFFEE 417FBFFEE0000000_00
-FFFFFAC9 C094DC0000000000_00
-00002000 40C0000000000000_00
-FFFF8004 C0DFFF0000000000_00
-FFFBE0DE C1107C8800000000_00
-00004000 40D0000000000000_00
-3F00001E 41CF80000F000000_00
-00000000 0000000000000000_00
-00008000 40E0000000000000_00
-FF8201FF C15F7F8040000000_00
-FFFFD2F1 C0C6878000000000_00
-00010000 40F0000000000000_00
-0000047E 4091F80000000000_00
-0011B7E5 4131B7E500000000_00
-00020000 4100000000000000_00
-02200200 4181001000000000_00
-0013F7E6 4133F7E600000000_00
-00040000 4110000000000000_00
-FFFDC007 C101FFC800000000_00
-FD0ABD9A C187AA1330000000_00
-00080000 4120000000000000_00
-0000607F 40D81FC000000000_00
-00003CEE 40CE770000000000_00
-00100000 4130000000000000_00
-DFDFE000 C1C0101000000000_00
-FFFB1642 C113A6F800000000_00
-00200000 4140000000000000_00
-FC000078 C18FFFFC40000000_00
-5F70EEC1 41D7DC3BB0400000_00
-00400000 4150000000000000_00
-00100082 4130008200000000_00
-FFFFFE21 C07DF00000000000_00
-00800000 4160000000000000_00
-FF7BFF7F C160801020000000_00
-FFFF6393 C0E38DA000000000_00
-01000000 4170000000000000_00
-07EFFEFD 419FBFFBF4000000_00
-FFFFFDB4 C082600000000000_00
-02000000 4180000000000000_00
-8002FFFF C1DFFF4000400000_00
-FFFFC8E2 C0CB8F0000000000_00
-04000000 4190000000000000_00
-FFFC0DFE C10F901000000000_00
-FFFFFF1B C06CA00000000000_00
-08000000 41A0000000000000_00
-03FFFDBF 418FFFEDF8000000_00
-0001092B 40F092B000000000_00
-10000000 41B0000000000000_00
-007FBFFD 415FEFFF40000000_00
-00B4F3D1 41669E7A20000000_00
-20000000 41C0000000000000_00
-FEF801FF C1707FE010000000_00
-00000005 4014000000000000_00
-40000000 41D0000000000000_00
-BFF3FFFE C1D0030000800000_00
-0001806B 40F806B000000000_00
-80000000 C1E0000000000000_00
-0000A07E 40E40FC000000000_00
-FFFFA59F C0D6984000000000_00
-C0000000 C1D0000000000000_00
-E0007FDE C1BFFF8022000000_00
-FFF8343E C11F2F0800000000_00
-E0000000 C1C0000000000000_00
-0000FF7C 40EFEF8000000000_00
-FFFFFFF7 C022000000000000_00
-F0000000 C1B0000000000000_00
-BDFFFFFC C1D0800001000000_00
-FFFFE3C1 C0BC3F0000000000_00
-F8000000 C1A0000000000000_00
-28003FFE 41C4001FFF000000_00
-00000000 0000000000000000_00
-FC000000 C190000000000000_00
-00EEFFFF 416DDFFFE0000000_00
-00003EB0 40CF580000000000_00
-FE000000 C180000000000000_00
-00000F7D 40AEFA0000000000_00
-FFFFFF0F C06E200000000000_00
-FF000000 C170000000000000_00
-0000406D 40D01B4000000000_00
-0000001A 403A000000000000_00
-FF800000 C160000000000000_00
-203FFFFD 41C01FFFFE800000_00
-0000000A 4024000000000000_00
-FFC00000 C150000000000000_00
-FFFF007C C0EFF08000000000_00
-0000009B 4063600000000000_00
-FFE00000 C140000000000000_00
-00E00FFF 416C01FFE0000000_00
-00000006 4018000000000000_00
-FFF00000 C130000000000000_00
-00200FFC 414007FE00000000_00
-00000714 409C500000000000_00
-FFF80000 C120000000000000_00
-F800040E C19FFFEFC8000000_00
-00000013 4033000000000000_00
-FFFC0000 C110000000000000_00
-F83BFFFF C19F100004000000_00
-FFF3F584 C12814F800000000_00
-FFFE0000 C100000000000000_00
-F6FFFBFF C1A2000802000000_00
-FFFFFFF0 C030000000000000_00
-FFFF0000 C0F0000000000000_00
-80003FFD C1DFFFF000C00000_00
-FFFFFFAD C054C00000000000_00
-FFFF8000 C0E0000000000000_00
-004001FD 4150007F40000000_00
-000D734E 412AE69C00000000_00
-FFFFC000 C0D0000000000000_00
-006003FE 415800FF80000000_00
-FF9DBAA8 C158915600000000_00
-FFFFE000 C0C0000000000000_00
-000403EE 41100FB800000000_00
-00734668 415CD19A00000000_00
-FFFFF000 C0B0000000000000_00
-01200002 4172000020000000_00
-FF8874A5 C15DE2D6C0000000_00
-FFFFF800 C0A0000000000000_00
-00060001 4118000400000000_00
-FFFFFFF8 C020000000000000_00
-FFFFFC00 C090000000000000_00
-001FFEDD 413FFEDD00000000_00
-FFFC56DF C10D490800000000_00
-FFFFFE00 C080000000000000_00
-EFFFEFFD C1B0001003000000_00
-FECF5EC6 C1730A13A0000000_00
-FFFFFF00 C070000000000000_00
-1FF00002 41BFF00002000000_00
-F6DB786B C1A2490F2A000000_00
-FFFFFF80 C060000000000000_00
-F0000FBE C1AFFFE084000000_00
-00000009 4022000000000000_00
-FFFFFFC0 C050000000000000_00
-0010801F 4130801F00000000_00
-0001F238 40FF238000000000_00
-FFFFFFE0 C040000000000000_00
-F8000047 C19FFFFEE4000000_00
-0002133C 410099E000000000_00
-FFFFFFF0 C030000000000000_00
-003C001F 414E000F80000000_00
-000001F1 407F100000000000_00
-FFFFFFF8 C020000000000000_00
-FFDFBFFF C140200080000000_00
-FF5E507F C16435F020000000_00
-FFFFFFFC C010000000000000_00
-037FFFDE 418BFFFEF0000000_00
-FFFD7C6F C1041C8800000000_00
-FFFFFFFE C000000000000000_00
-000000FD 406FA00000000000_00
-FFFFF42A C0A7AC0000000000_00
-FFFFFFFF BFF0000000000000_00
-021FFF7D 4180FFFBE8000000_00
-0000000A 4024000000000000_00
-FFFFFFFD C008000000000000_00
-4010FFFF 41D0043FFFC00000_00
-FFFFFFD3 C046800000000000_00
-FFFFFFFB C014000000000000_00
-FFFF800B C0DFFD4000000000_00
-000000B8 4067000000000000_00
-FFFFFFF7 C022000000000000_00
-FF800803 C15FFDFF40000000_00
-FFFFFFFE C000000000000000_00
-FFFFFFEF C031000000000000_00
-00803FFB 416007FF60000000_00
-00000308 4088400000000000_00
-FFFFFFDF C040800000000000_00
-2107FFFE 41C083FFFF000000_00
-FFE15D4F C13EA2B100000000_00
-FFFFFFBF C050400000000000_00
-400087FD 41D00021FF400000_00
-0000000F 402E000000000000_00
-FFFFFF7F C060200000000000_00
-FDFC007E C1801FFC10000000_00
-00000006 4018000000000000_00
-FFFFFEFF C070100000000000_00
-FFF80100 C11FFC0000000000_00
-FFFFFE99 C076700000000000_00
-FFFFFDFF C080080000000000_00
-03000002 4188000010000000_00
-FFF716EA C121D22C00000000_00
-FFFFFBFF C090040000000000_00
-C7FDFFFF C1CC010000800000_00
-FFFFE327 C0BCD90000000000_00
-FFFFF7FF C0A0020000000000_00
-0103DFFE 41703DFFE0000000_00
-07661FD8 419D987F60000000_00
-FFFFEFFF C0B0010000000000_00
-83FFFFFE C1DF000000800000_00
-FCD956DB C189354928000000_00
-FFFFDFFF C0C0008000000000_00
-FF2001FD C16BFFC060000000_00
-E4D35BBF C1BB2CA441000000_00
-FFFFBFFF C0D0004000000000_00
-DFEFEFFE C1C0080801000000_00
-05DA4300 4197690C00000000_00
-FFFF7FFF C0E0002000000000_00
-40001040 41D0000410000000_00
-812EDF40 C1DFB44830000000_00
-FFFEFFFF C0F0001000000000_00
-FFFFC007 C0CFFC8000000000_00
-00B6FCC9 4166DF9920000000_00
-FFFDFFFF C100000800000000_00
-000007FE 409FF80000000000_00
-FC3DE950 C18E10B580000000_00
-FFFBFFFF C110000400000000_00
-7FFFFE03 41DFFFFF80C00000_00
-FEB02B59 C174FD4A70000000_00
-FFF7FFFF C120000200000000_00
-10FF7FFF 41B0FF7FFF000000_00
-00008D5E 40E1ABC000000000_00
-FFEFFFFF C130000100000000_00
-FFFF007E C0EFF04000000000_00
-001C2108 413C210800000000_00
-FFDFFFFF C140000080000000_00
-00FFC001 416FF80020000000_00
-F01C6B36 C1AFC72994000000_00
-FFBFFFFF C150000040000000_00
-FFFF7FFF C0E0002000000000_00
-FFFFD055 C0C7D58000000000_00
-FF7FFFFF C160000020000000_00
-027BFFFE 4183DFFFF0000000_00
-FF3090D0 C169EDE600000000_00
-FEFFFFFF C170000010000000_00
-00082040 4120408000000000_00
-0000006E 405B800000000000_00
-FDFFFFFF C180000008000000_00
-FDFFFF87 C1800003C8000000_00
-04C3764D 41930DD934000000_00
-FBFFFFFF C190000004000000_00
-0006007E 411801F800000000_00
-000001EF 407EF00000000000_00
-F7FFFFFF C1A0000002000000_00
-FFBF7FFE C150200080000000_00
-FF1C4E5A C16C7634C0000000_00
-EFFFFFFF C1B0000001000000_00
-FFF97FFD C11A000C00000000_00
-000001D1 407D100000000000_00
-DFFFFFFF C1C0000000800000_00
-2FFFFFFE 41C7FFFFFF000000_00
-00136721 4133672100000000_00
-BFFFFFFF C1D0000000400000_00
-00004BFF 40D2FFC000000000_00
-00000544 4095100000000000_00
-7FFFFFFF 41DFFFFFFFC00000_00
-007FDFFB 415FF7FEC0000000_00
-FFF8BD5E C11D0A8800000000_00
-3FFFFFFF 41CFFFFFFF800000_00
-FFBF8003 C1501FFF40000000_00
-FFFE45D2 C0FBA2E000000000_00
-1FFFFFFF 41BFFFFFFF000000_00
-FFFFFDBF C082080000000000_00
-FFFFF189 C0ACEE0000000000_00
-0FFFFFFF 41AFFFFFFE000000_00
-FFFE6FFE C0F9002000000000_00
-FC8672A0 C18BCC6B00000000_00
-07FFFFFF 419FFFFFFC000000_00
-00000107 4070700000000000_00
-FFFCCA70 C109AC8000000000_00
-03FFFFFF 418FFFFFF8000000_00
-002107FE 414083FF00000000_00
-FFFF48E7 C0E6E32000000000_00
-01FFFFFF 417FFFFFF0000000_00
-F7FDFFEE C1A0040024000000_00
-00000010 4030000000000000_00
-00FFFFFF 416FFFFFE0000000_00
-FFFF01FD C0EFC06000000000_00
-0000FAEF 40EF5DE000000000_00
-007FFFFF 415FFFFFC0000000_00
-00FC0001 416F800020000000_00
-000000F5 406EA00000000000_00
-003FFFFF 414FFFFF80000000_00
-FFE07FC0 C13F804000000000_00
-001AFFFB 413AFFFB00000000_00
-001FFFFF 413FFFFF00000000_00
-00101FFD 41301FFD00000000_00
-FF4613B2 C1673D89C0000000_00
-000FFFFF 412FFFFE00000000_00
-F00005FE C1AFFFF404000000_00
-00036402 410B201000000000_00
-0007FFFF 411FFFFC00000000_00
-0404FFFF 419013FFFC000000_00
-021C2358 4180E11AC0000000_00
-0003FFFF 410FFFF800000000_00
-FFFFFD02 C087F00000000000_00
-FFFF41C6 C0E7C74000000000_00
-0001FFFF 40FFFFF000000000_00
-00000007 401C000000000000_00
-27F174DE 41C3F8BA6F000000_00
-0000FFFF 40EFFFE000000000_00
-000083F5 40E07EA000000000_00
-FFFFFFFB C014000000000000_00
-00007FFF 40DFFFC000000000_00
-FE7FDFFE C178020020000000_00
-FFFFFFFD C008000000000000_00
-00003FFF 40CFFF8000000000_00
-DBBFFFFE C1C2200001000000_00
-00000404 4090100000000000_00
-00001FFF 40BFFF0000000000_00
-FFFFC018 C0CFF40000000000_00
-00002853 40C4298000000000_00
-00000FFF 40AFFE0000000000_00
-03FE007F 418FF003F8000000_00
-FFFFF124 C0ADB80000000000_00
-000007FF 409FFC0000000000_00
-FFFFEFBE C0B0420000000000_00
-FFFB9AD8 C11194A000000000_00
-000003FF 408FF80000000000_00
-DFFFFDFE C1C0000101000000_00
-FFFFFD95 C083580000000000_00
-000001FF 407FF00000000000_00
-FDFFFFFF C180000008000000_00
-FFFFFFD0 C048000000000000_00
-000000FF 406FE00000000000_00
-0037FFE0 414BFFF000000000_00
-010EC496 4170EC4960000000_00
-0000007F 405FC00000000000_00
-B8007FFF C1D1FFE000400000_00
-00000012 4032000000000000_00
-0000003F 404F800000000000_00
-02003FFC 418001FFE0000000_00
-FFFFFFEF C031000000000000_00
-0000001F 403F000000000000_00
-FF7FFF02 C160001FC0000000_00
-FFFFE2CE C0BD320000000000_00
-0000000F 402E000000000000_00
-0000A00D 40E401A000000000_00
-FFFFFE44 C07BC00000000000_00
-00000007 401C000000000000_00
-0003FFFA 410FFFD000000000_00
-000038E7 40CC738000000000_00
-00000003 4008000000000000_00
+1FEFFFEF_41BFEFFFEF000000_00
+FFFFC48E_C0CDB90000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00009E14_40E3C28000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+FFFFDE38_C0C0E40000000000_00
+00000002_4000000000000000_00
+FFDFFC02_C14001FF00000000_00
+FB794C79_C1921ACE1C000000_00
+00000004_4010000000000000_00
+F00FFFFE_C1AFE00004000000_00
+00000A95_40A52A0000000000_00
+00000008_4020000000000000_00
+FFFFF97F_C09A040000000000_00
+FFAE458D_C1546E9CC0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+29EB4561_41C4F5A2B0800000_00
+00000020_4040000000000000_00
+8001FFEE_C1DFFF8004800000_00
+FFFBDD08_C1108BE000000000_00
+00000040_4050000000000000_00
+FFF03FF9_C12F800E00000000_00
+FFCEDF36_C148906500000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000279_4083C80000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_C1D0000004400000_00
+00000007_401C000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+FFFFF590_C0A4E00000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_C1A000020A000000_00
+2FEA335F_41C7F519AF800000_00
+00000800_40A0000000000000_00
+FFC07FFF_C14FC00080000000_00
+177957FD_41B77957FD000000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+FFFFFAC9_C094DC0000000000_00
+00002000_40C0000000000000_00
+FFFF8004_C0DFFF0000000000_00
+FFFBE0DE_C1107C8800000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000000_0000000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_C15F7F8040000000_00
+FFFFD2F1_C0C6878000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0011B7E5_4131B7E500000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0013F7E6_4133F7E600000000_00
+00040000_4110000000000000_00
+FFFDC007_C101FFC800000000_00
+FD0ABD9A_C187AA1330000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00003CEE_40CE770000000000_00
+00100000_4130000000000000_00
+DFDFE000_C1C0101000000000_00
+FFFB1642_C113A6F800000000_00
+00200000_4140000000000000_00
+FC000078_C18FFFFC40000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+FFFFFE21_C07DF00000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_C160801020000000_00
+FFFF6393_C0E38DA000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+FFFFFDB4_C082600000000000_00
+02000000_4180000000000000_00
+8002FFFF_C1DFFF4000400000_00
+FFFFC8E2_C0CB8F0000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_C10F901000000000_00
+FFFFFF1B_C06CA00000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0001092B_40F092B000000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+00B4F3D1_41669E7A20000000_00
+20000000_41C0000000000000_00
+FEF801FF_C1707FE010000000_00
+00000005_4014000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_C1D0030000800000_00
+0001806B_40F806B000000000_00
+80000000_C1E0000000000000_00
+0000A07E_40E40FC000000000_00
+FFFFA59F_C0D6984000000000_00
+C0000000_C1D0000000000000_00
+E0007FDE_C1BFFF8022000000_00
+FFF8343E_C11F2F0800000000_00
+E0000000_C1C0000000000000_00
+0000FF7C_40EFEF8000000000_00
+FFFFFFF7_C022000000000000_00
+F0000000_C1B0000000000000_00
+BDFFFFFC_C1D0800001000000_00
+FFFFE3C1_C0BC3F0000000000_00
+F8000000_C1A0000000000000_00
+28003FFE_41C4001FFF000000_00
+00000000_0000000000000000_00
+FC000000_C190000000000000_00
+00EEFFFF_416DDFFFE0000000_00
+00003EB0_40CF580000000000_00
+FE000000_C180000000000000_00
+00000F7D_40AEFA0000000000_00
+FFFFFF0F_C06E200000000000_00
+FF000000_C170000000000000_00
+0000406D_40D01B4000000000_00
+0000001A_403A000000000000_00
+FF800000_C160000000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000000A_4024000000000000_00
+FFC00000_C150000000000000_00
+FFFF007C_C0EFF08000000000_00
+0000009B_4063600000000000_00
+FFE00000_C140000000000000_00
+00E00FFF_416C01FFE0000000_00
+00000006_4018000000000000_00
+FFF00000_C130000000000000_00
+00200FFC_414007FE00000000_00
+00000714_409C500000000000_00
+FFF80000_C120000000000000_00
+F800040E_C19FFFEFC8000000_00
+00000013_4033000000000000_00
+FFFC0000_C110000000000000_00
+F83BFFFF_C19F100004000000_00
+FFF3F584_C12814F800000000_00
+FFFE0000_C100000000000000_00
+F6FFFBFF_C1A2000802000000_00
+FFFFFFF0_C030000000000000_00
+FFFF0000_C0F0000000000000_00
+80003FFD_C1DFFFF000C00000_00
+FFFFFFAD_C054C00000000000_00
+FFFF8000_C0E0000000000000_00
+004001FD_4150007F40000000_00
+000D734E_412AE69C00000000_00
+FFFFC000_C0D0000000000000_00
+006003FE_415800FF80000000_00
+FF9DBAA8_C158915600000000_00
+FFFFE000_C0C0000000000000_00
+000403EE_41100FB800000000_00
+00734668_415CD19A00000000_00
+FFFFF000_C0B0000000000000_00
+01200002_4172000020000000_00
+FF8874A5_C15DE2D6C0000000_00
+FFFFF800_C0A0000000000000_00
+00060001_4118000400000000_00
+FFFFFFF8_C020000000000000_00
+FFFFFC00_C090000000000000_00
+001FFEDD_413FFEDD00000000_00
+FFFC56DF_C10D490800000000_00
+FFFFFE00_C080000000000000_00
+EFFFEFFD_C1B0001003000000_00
+FECF5EC6_C1730A13A0000000_00
+FFFFFF00_C070000000000000_00
+1FF00002_41BFF00002000000_00
+F6DB786B_C1A2490F2A000000_00
+FFFFFF80_C060000000000000_00
+F0000FBE_C1AFFFE084000000_00
+00000009_4022000000000000_00
+FFFFFFC0_C050000000000000_00
+0010801F_4130801F00000000_00
+0001F238_40FF238000000000_00
+FFFFFFE0_C040000000000000_00
+F8000047_C19FFFFEE4000000_00
+0002133C_410099E000000000_00
+FFFFFFF0_C030000000000000_00
+003C001F_414E000F80000000_00
+000001F1_407F100000000000_00
+FFFFFFF8_C020000000000000_00
+FFDFBFFF_C140200080000000_00
+FF5E507F_C16435F020000000_00
+FFFFFFFC_C010000000000000_00
+037FFFDE_418BFFFEF0000000_00
+FFFD7C6F_C1041C8800000000_00
+FFFFFFFE_C000000000000000_00
+000000FD_406FA00000000000_00
+FFFFF42A_C0A7AC0000000000_00
+FFFFFFFF_BFF0000000000000_00
+021FFF7D_4180FFFBE8000000_00
+0000000A_4024000000000000_00
+FFFFFFFD_C008000000000000_00
+4010FFFF_41D0043FFFC00000_00
+FFFFFFD3_C046800000000000_00
+FFFFFFFB_C014000000000000_00
+FFFF800B_C0DFFD4000000000_00
+000000B8_4067000000000000_00
+FFFFFFF7_C022000000000000_00
+FF800803_C15FFDFF40000000_00
+FFFFFFFE_C000000000000000_00
+FFFFFFEF_C031000000000000_00
+00803FFB_416007FF60000000_00
+00000308_4088400000000000_00
+FFFFFFDF_C040800000000000_00
+2107FFFE_41C083FFFF000000_00
+FFE15D4F_C13EA2B100000000_00
+FFFFFFBF_C050400000000000_00
+400087FD_41D00021FF400000_00
+0000000F_402E000000000000_00
+FFFFFF7F_C060200000000000_00
+FDFC007E_C1801FFC10000000_00
+00000006_4018000000000000_00
+FFFFFEFF_C070100000000000_00
+FFF80100_C11FFC0000000000_00
+FFFFFE99_C076700000000000_00
+FFFFFDFF_C080080000000000_00
+03000002_4188000010000000_00
+FFF716EA_C121D22C00000000_00
+FFFFFBFF_C090040000000000_00
+C7FDFFFF_C1CC010000800000_00
+FFFFE327_C0BCD90000000000_00
+FFFFF7FF_C0A0020000000000_00
+0103DFFE_41703DFFE0000000_00
+07661FD8_419D987F60000000_00
+FFFFEFFF_C0B0010000000000_00
+83FFFFFE_C1DF000000800000_00
+FCD956DB_C189354928000000_00
+FFFFDFFF_C0C0008000000000_00
+FF2001FD_C16BFFC060000000_00
+E4D35BBF_C1BB2CA441000000_00
+FFFFBFFF_C0D0004000000000_00
+DFEFEFFE_C1C0080801000000_00
+05DA4300_4197690C00000000_00
+FFFF7FFF_C0E0002000000000_00
+40001040_41D0000410000000_00
+812EDF40_C1DFB44830000000_00
+FFFEFFFF_C0F0001000000000_00
+FFFFC007_C0CFFC8000000000_00
+00B6FCC9_4166DF9920000000_00
+FFFDFFFF_C100000800000000_00
+000007FE_409FF80000000000_00
+FC3DE950_C18E10B580000000_00
+FFFBFFFF_C110000400000000_00
+7FFFFE03_41DFFFFF80C00000_00
+FEB02B59_C174FD4A70000000_00
+FFF7FFFF_C120000200000000_00
+10FF7FFF_41B0FF7FFF000000_00
+00008D5E_40E1ABC000000000_00
+FFEFFFFF_C130000100000000_00
+FFFF007E_C0EFF04000000000_00
+001C2108_413C210800000000_00
+FFDFFFFF_C140000080000000_00
+00FFC001_416FF80020000000_00
+F01C6B36_C1AFC72994000000_00
+FFBFFFFF_C150000040000000_00
+FFFF7FFF_C0E0002000000000_00
+FFFFD055_C0C7D58000000000_00
+FF7FFFFF_C160000020000000_00
+027BFFFE_4183DFFFF0000000_00
+FF3090D0_C169EDE600000000_00
+FEFFFFFF_C170000010000000_00
+00082040_4120408000000000_00
+0000006E_405B800000000000_00
+FDFFFFFF_C180000008000000_00
+FDFFFF87_C1800003C8000000_00
+04C3764D_41930DD934000000_00
+FBFFFFFF_C190000004000000_00
+0006007E_411801F800000000_00
+000001EF_407EF00000000000_00
+F7FFFFFF_C1A0000002000000_00
+FFBF7FFE_C150200080000000_00
+FF1C4E5A_C16C7634C0000000_00
+EFFFFFFF_C1B0000001000000_00
+FFF97FFD_C11A000C00000000_00
+000001D1_407D100000000000_00
+DFFFFFFF_C1C0000000800000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00136721_4133672100000000_00
+BFFFFFFF_C1D0000000400000_00
+00004BFF_40D2FFC000000000_00
+00000544_4095100000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+FFF8BD5E_C11D0A8800000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_C1501FFF40000000_00
+FFFE45D2_C0FBA2E000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_C082080000000000_00
+FFFFF189_C0ACEE0000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_C0F9002000000000_00
+FC8672A0_C18BCC6B00000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+FFFCCA70_C109AC8000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+FFFF48E7_C0E6E32000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_C1A0040024000000_00
+00000010_4030000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_C0EFC06000000000_00
+0000FAEF_40EF5DE000000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000000F5_406EA00000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_C13F804000000000_00
+001AFFFB_413AFFFB00000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+FF4613B2_C1673D89C0000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_C1AFFFF404000000_00
+00036402_410B201000000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_C087F00000000000_00
+FFFF41C6_C0E7C74000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+FFFFFFFB_C014000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_C178020020000000_00
+FFFFFFFD_C008000000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_C1C2200001000000_00
+00000404_4090100000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_C0CFF40000000000_00
+00002853_40C4298000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+FFFFF124_C0ADB80000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_C0B0420000000000_00
+FFFB9AD8_C11194A000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_C1C0000101000000_00
+FFFFFD95_C083580000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_C180000008000000_00
+FFFFFFD0_C048000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+010EC496_4170EC4960000000_00
+0000007F_405FC00000000000_00
+B8007FFF_C1D1FFE000400000_00
+00000012_4032000000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+FFFFFFEF_C031000000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_C160001FC0000000_00
+FFFFE2CE_C0BD320000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+FFFFFE44_C07BC00000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+000038E7_40CC738000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_ru.tv b/wally-pipelined/testbench/fp/i32_f64_ru.tv
index 7f04b63fd..3e4622082 100644
--- a/wally-pipelined/testbench/fp/i32_f64_ru.tv
+++ b/wally-pipelined/testbench/fp/i32_f64_ru.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 41BFEFFFEF000000_00
-FFFFC48E C0CDB90000000000_00
-00000000 0000000000000000_00
-007FFFCD 415FFFF340000000_00
-00009E14 40E3C28000000000_00
-00000001 3FF0000000000000_00
-001FFFFB 413FFFFB00000000_00
-FFFFDE38 C0C0E40000000000_00
-00000002 4000000000000000_00
-FFDFFC02 C14001FF00000000_00
-FB794C79 C1921ACE1C000000_00
-00000004 4010000000000000_00
-F00FFFFE C1AFE00004000000_00
-00000A95 40A52A0000000000_00
-00000008 4020000000000000_00
-FFFFF97F C09A040000000000_00
-FFAE458D C1546E9CC0000000_00
-00000010 4030000000000000_00
-0101001E 41701001E0000000_00
-29EB4561 41C4F5A2B0800000_00
-00000020 4040000000000000_00
-8001FFEE C1DFFF8004800000_00
-FFFBDD08 C1108BE000000000_00
-00000040 4050000000000000_00
-FFF03FF9 C12F800E00000000_00
-FFCEDF36 C148906500000000_00
-00000080 4060000000000000_00
-0000F01F 40EE03E000000000_00
-00000279 4083C80000000000_00
-00000100 4070000000000000_00
-BFFFFFEF C1D0000004400000_00
-00000007 401C000000000000_00
-00000200 4080000000000000_00
-010BFFFD 4170BFFFD0000000_00
-FFFFF590 C0A4E00000000000_00
-00000400 4090000000000000_00
-F7FFFEFB C1A000020A000000_00
-2FEA335F 41C7F519AF800000_00
-00000800 40A0000000000000_00
-FFC07FFF C14FC00080000000_00
-177957FD 41B77957FD000000_00
-00001000 40B0000000000000_00
-01FBFFEE 417FBFFEE0000000_00
-FFFFFAC9 C094DC0000000000_00
-00002000 40C0000000000000_00
-FFFF8004 C0DFFF0000000000_00
-FFFBE0DE C1107C8800000000_00
-00004000 40D0000000000000_00
-3F00001E 41CF80000F000000_00
-00000000 0000000000000000_00
-00008000 40E0000000000000_00
-FF8201FF C15F7F8040000000_00
-FFFFD2F1 C0C6878000000000_00
-00010000 40F0000000000000_00
-0000047E 4091F80000000000_00
-0011B7E5 4131B7E500000000_00
-00020000 4100000000000000_00
-02200200 4181001000000000_00
-0013F7E6 4133F7E600000000_00
-00040000 4110000000000000_00
-FFFDC007 C101FFC800000000_00
-FD0ABD9A C187AA1330000000_00
-00080000 4120000000000000_00
-0000607F 40D81FC000000000_00
-00003CEE 40CE770000000000_00
-00100000 4130000000000000_00
-DFDFE000 C1C0101000000000_00
-FFFB1642 C113A6F800000000_00
-00200000 4140000000000000_00
-FC000078 C18FFFFC40000000_00
-5F70EEC1 41D7DC3BB0400000_00
-00400000 4150000000000000_00
-00100082 4130008200000000_00
-FFFFFE21 C07DF00000000000_00
-00800000 4160000000000000_00
-FF7BFF7F C160801020000000_00
-FFFF6393 C0E38DA000000000_00
-01000000 4170000000000000_00
-07EFFEFD 419FBFFBF4000000_00
-FFFFFDB4 C082600000000000_00
-02000000 4180000000000000_00
-8002FFFF C1DFFF4000400000_00
-FFFFC8E2 C0CB8F0000000000_00
-04000000 4190000000000000_00
-FFFC0DFE C10F901000000000_00
-FFFFFF1B C06CA00000000000_00
-08000000 41A0000000000000_00
-03FFFDBF 418FFFEDF8000000_00
-0001092B 40F092B000000000_00
-10000000 41B0000000000000_00
-007FBFFD 415FEFFF40000000_00
-00B4F3D1 41669E7A20000000_00
-20000000 41C0000000000000_00
-FEF801FF C1707FE010000000_00
-00000005 4014000000000000_00
-40000000 41D0000000000000_00
-BFF3FFFE C1D0030000800000_00
-0001806B 40F806B000000000_00
-80000000 C1E0000000000000_00
-0000A07E 40E40FC000000000_00
-FFFFA59F C0D6984000000000_00
-C0000000 C1D0000000000000_00
-E0007FDE C1BFFF8022000000_00
-FFF8343E C11F2F0800000000_00
-E0000000 C1C0000000000000_00
-0000FF7C 40EFEF8000000000_00
-FFFFFFF7 C022000000000000_00
-F0000000 C1B0000000000000_00
-BDFFFFFC C1D0800001000000_00
-FFFFE3C1 C0BC3F0000000000_00
-F8000000 C1A0000000000000_00
-28003FFE 41C4001FFF000000_00
-00000000 0000000000000000_00
-FC000000 C190000000000000_00
-00EEFFFF 416DDFFFE0000000_00
-00003EB0 40CF580000000000_00
-FE000000 C180000000000000_00
-00000F7D 40AEFA0000000000_00
-FFFFFF0F C06E200000000000_00
-FF000000 C170000000000000_00
-0000406D 40D01B4000000000_00
-0000001A 403A000000000000_00
-FF800000 C160000000000000_00
-203FFFFD 41C01FFFFE800000_00
-0000000A 4024000000000000_00
-FFC00000 C150000000000000_00
-FFFF007C C0EFF08000000000_00
-0000009B 4063600000000000_00
-FFE00000 C140000000000000_00
-00E00FFF 416C01FFE0000000_00
-00000006 4018000000000000_00
-FFF00000 C130000000000000_00
-00200FFC 414007FE00000000_00
-00000714 409C500000000000_00
-FFF80000 C120000000000000_00
-F800040E C19FFFEFC8000000_00
-00000013 4033000000000000_00
-FFFC0000 C110000000000000_00
-F83BFFFF C19F100004000000_00
-FFF3F584 C12814F800000000_00
-FFFE0000 C100000000000000_00
-F6FFFBFF C1A2000802000000_00
-FFFFFFF0 C030000000000000_00
-FFFF0000 C0F0000000000000_00
-80003FFD C1DFFFF000C00000_00
-FFFFFFAD C054C00000000000_00
-FFFF8000 C0E0000000000000_00
-004001FD 4150007F40000000_00
-000D734E 412AE69C00000000_00
-FFFFC000 C0D0000000000000_00
-006003FE 415800FF80000000_00
-FF9DBAA8 C158915600000000_00
-FFFFE000 C0C0000000000000_00
-000403EE 41100FB800000000_00
-00734668 415CD19A00000000_00
-FFFFF000 C0B0000000000000_00
-01200002 4172000020000000_00
-FF8874A5 C15DE2D6C0000000_00
-FFFFF800 C0A0000000000000_00
-00060001 4118000400000000_00
-FFFFFFF8 C020000000000000_00
-FFFFFC00 C090000000000000_00
-001FFEDD 413FFEDD00000000_00
-FFFC56DF C10D490800000000_00
-FFFFFE00 C080000000000000_00
-EFFFEFFD C1B0001003000000_00
-FECF5EC6 C1730A13A0000000_00
-FFFFFF00 C070000000000000_00
-1FF00002 41BFF00002000000_00
-F6DB786B C1A2490F2A000000_00
-FFFFFF80 C060000000000000_00
-F0000FBE C1AFFFE084000000_00
-00000009 4022000000000000_00
-FFFFFFC0 C050000000000000_00
-0010801F 4130801F00000000_00
-0001F238 40FF238000000000_00
-FFFFFFE0 C040000000000000_00
-F8000047 C19FFFFEE4000000_00
-0002133C 410099E000000000_00
-FFFFFFF0 C030000000000000_00
-003C001F 414E000F80000000_00
-000001F1 407F100000000000_00
-FFFFFFF8 C020000000000000_00
-FFDFBFFF C140200080000000_00
-FF5E507F C16435F020000000_00
-FFFFFFFC C010000000000000_00
-037FFFDE 418BFFFEF0000000_00
-FFFD7C6F C1041C8800000000_00
-FFFFFFFE C000000000000000_00
-000000FD 406FA00000000000_00
-FFFFF42A C0A7AC0000000000_00
-FFFFFFFF BFF0000000000000_00
-021FFF7D 4180FFFBE8000000_00
-0000000A 4024000000000000_00
-FFFFFFFD C008000000000000_00
-4010FFFF 41D0043FFFC00000_00
-FFFFFFD3 C046800000000000_00
-FFFFFFFB C014000000000000_00
-FFFF800B C0DFFD4000000000_00
-000000B8 4067000000000000_00
-FFFFFFF7 C022000000000000_00
-FF800803 C15FFDFF40000000_00
-FFFFFFFE C000000000000000_00
-FFFFFFEF C031000000000000_00
-00803FFB 416007FF60000000_00
-00000308 4088400000000000_00
-FFFFFFDF C040800000000000_00
-2107FFFE 41C083FFFF000000_00
-FFE15D4F C13EA2B100000000_00
-FFFFFFBF C050400000000000_00
-400087FD 41D00021FF400000_00
-0000000F 402E000000000000_00
-FFFFFF7F C060200000000000_00
-FDFC007E C1801FFC10000000_00
-00000006 4018000000000000_00
-FFFFFEFF C070100000000000_00
-FFF80100 C11FFC0000000000_00
-FFFFFE99 C076700000000000_00
-FFFFFDFF C080080000000000_00
-03000002 4188000010000000_00
-FFF716EA C121D22C00000000_00
-FFFFFBFF C090040000000000_00
-C7FDFFFF C1CC010000800000_00
-FFFFE327 C0BCD90000000000_00
-FFFFF7FF C0A0020000000000_00
-0103DFFE 41703DFFE0000000_00
-07661FD8 419D987F60000000_00
-FFFFEFFF C0B0010000000000_00
-83FFFFFE C1DF000000800000_00
-FCD956DB C189354928000000_00
-FFFFDFFF C0C0008000000000_00
-FF2001FD C16BFFC060000000_00
-E4D35BBF C1BB2CA441000000_00
-FFFFBFFF C0D0004000000000_00
-DFEFEFFE C1C0080801000000_00
-05DA4300 4197690C00000000_00
-FFFF7FFF C0E0002000000000_00
-40001040 41D0000410000000_00
-812EDF40 C1DFB44830000000_00
-FFFEFFFF C0F0001000000000_00
-FFFFC007 C0CFFC8000000000_00
-00B6FCC9 4166DF9920000000_00
-FFFDFFFF C100000800000000_00
-000007FE 409FF80000000000_00
-FC3DE950 C18E10B580000000_00
-FFFBFFFF C110000400000000_00
-7FFFFE03 41DFFFFF80C00000_00
-FEB02B59 C174FD4A70000000_00
-FFF7FFFF C120000200000000_00
-10FF7FFF 41B0FF7FFF000000_00
-00008D5E 40E1ABC000000000_00
-FFEFFFFF C130000100000000_00
-FFFF007E C0EFF04000000000_00
-001C2108 413C210800000000_00
-FFDFFFFF C140000080000000_00
-00FFC001 416FF80020000000_00
-F01C6B36 C1AFC72994000000_00
-FFBFFFFF C150000040000000_00
-FFFF7FFF C0E0002000000000_00
-FFFFD055 C0C7D58000000000_00
-FF7FFFFF C160000020000000_00
-027BFFFE 4183DFFFF0000000_00
-FF3090D0 C169EDE600000000_00
-FEFFFFFF C170000010000000_00
-00082040 4120408000000000_00
-0000006E 405B800000000000_00
-FDFFFFFF C180000008000000_00
-FDFFFF87 C1800003C8000000_00
-04C3764D 41930DD934000000_00
-FBFFFFFF C190000004000000_00
-0006007E 411801F800000000_00
-000001EF 407EF00000000000_00
-F7FFFFFF C1A0000002000000_00
-FFBF7FFE C150200080000000_00
-FF1C4E5A C16C7634C0000000_00
-EFFFFFFF C1B0000001000000_00
-FFF97FFD C11A000C00000000_00
-000001D1 407D100000000000_00
-DFFFFFFF C1C0000000800000_00
-2FFFFFFE 41C7FFFFFF000000_00
-00136721 4133672100000000_00
-BFFFFFFF C1D0000000400000_00
-00004BFF 40D2FFC000000000_00
-00000544 4095100000000000_00
-7FFFFFFF 41DFFFFFFFC00000_00
-007FDFFB 415FF7FEC0000000_00
-FFF8BD5E C11D0A8800000000_00
-3FFFFFFF 41CFFFFFFF800000_00
-FFBF8003 C1501FFF40000000_00
-FFFE45D2 C0FBA2E000000000_00
-1FFFFFFF 41BFFFFFFF000000_00
-FFFFFDBF C082080000000000_00
-FFFFF189 C0ACEE0000000000_00
-0FFFFFFF 41AFFFFFFE000000_00
-FFFE6FFE C0F9002000000000_00
-FC8672A0 C18BCC6B00000000_00
-07FFFFFF 419FFFFFFC000000_00
-00000107 4070700000000000_00
-FFFCCA70 C109AC8000000000_00
-03FFFFFF 418FFFFFF8000000_00
-002107FE 414083FF00000000_00
-FFFF48E7 C0E6E32000000000_00
-01FFFFFF 417FFFFFF0000000_00
-F7FDFFEE C1A0040024000000_00
-00000010 4030000000000000_00
-00FFFFFF 416FFFFFE0000000_00
-FFFF01FD C0EFC06000000000_00
-0000FAEF 40EF5DE000000000_00
-007FFFFF 415FFFFFC0000000_00
-00FC0001 416F800020000000_00
-000000F5 406EA00000000000_00
-003FFFFF 414FFFFF80000000_00
-FFE07FC0 C13F804000000000_00
-001AFFFB 413AFFFB00000000_00
-001FFFFF 413FFFFF00000000_00
-00101FFD 41301FFD00000000_00
-FF4613B2 C1673D89C0000000_00
-000FFFFF 412FFFFE00000000_00
-F00005FE C1AFFFF404000000_00
-00036402 410B201000000000_00
-0007FFFF 411FFFFC00000000_00
-0404FFFF 419013FFFC000000_00
-021C2358 4180E11AC0000000_00
-0003FFFF 410FFFF800000000_00
-FFFFFD02 C087F00000000000_00
-FFFF41C6 C0E7C74000000000_00
-0001FFFF 40FFFFF000000000_00
-00000007 401C000000000000_00
-27F174DE 41C3F8BA6F000000_00
-0000FFFF 40EFFFE000000000_00
-000083F5 40E07EA000000000_00
-FFFFFFFB C014000000000000_00
-00007FFF 40DFFFC000000000_00
-FE7FDFFE C178020020000000_00
-FFFFFFFD C008000000000000_00
-00003FFF 40CFFF8000000000_00
-DBBFFFFE C1C2200001000000_00
-00000404 4090100000000000_00
-00001FFF 40BFFF0000000000_00
-FFFFC018 C0CFF40000000000_00
-00002853 40C4298000000000_00
-00000FFF 40AFFE0000000000_00
-03FE007F 418FF003F8000000_00
-FFFFF124 C0ADB80000000000_00
-000007FF 409FFC0000000000_00
-FFFFEFBE C0B0420000000000_00
-FFFB9AD8 C11194A000000000_00
-000003FF 408FF80000000000_00
-DFFFFDFE C1C0000101000000_00
-FFFFFD95 C083580000000000_00
-000001FF 407FF00000000000_00
-FDFFFFFF C180000008000000_00
-FFFFFFD0 C048000000000000_00
-000000FF 406FE00000000000_00
-0037FFE0 414BFFF000000000_00
-010EC496 4170EC4960000000_00
-0000007F 405FC00000000000_00
-B8007FFF C1D1FFE000400000_00
-00000012 4032000000000000_00
-0000003F 404F800000000000_00
-02003FFC 418001FFE0000000_00
-FFFFFFEF C031000000000000_00
-0000001F 403F000000000000_00
-FF7FFF02 C160001FC0000000_00
-FFFFE2CE C0BD320000000000_00
-0000000F 402E000000000000_00
-0000A00D 40E401A000000000_00
-FFFFFE44 C07BC00000000000_00
-00000007 401C000000000000_00
-0003FFFA 410FFFD000000000_00
-000038E7 40CC738000000000_00
-00000003 4008000000000000_00
+1FEFFFEF_41BFEFFFEF000000_00
+FFFFC48E_C0CDB90000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00009E14_40E3C28000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+FFFFDE38_C0C0E40000000000_00
+00000002_4000000000000000_00
+FFDFFC02_C14001FF00000000_00
+FB794C79_C1921ACE1C000000_00
+00000004_4010000000000000_00
+F00FFFFE_C1AFE00004000000_00
+00000A95_40A52A0000000000_00
+00000008_4020000000000000_00
+FFFFF97F_C09A040000000000_00
+FFAE458D_C1546E9CC0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+29EB4561_41C4F5A2B0800000_00
+00000020_4040000000000000_00
+8001FFEE_C1DFFF8004800000_00
+FFFBDD08_C1108BE000000000_00
+00000040_4050000000000000_00
+FFF03FF9_C12F800E00000000_00
+FFCEDF36_C148906500000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000279_4083C80000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_C1D0000004400000_00
+00000007_401C000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+FFFFF590_C0A4E00000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_C1A000020A000000_00
+2FEA335F_41C7F519AF800000_00
+00000800_40A0000000000000_00
+FFC07FFF_C14FC00080000000_00
+177957FD_41B77957FD000000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+FFFFFAC9_C094DC0000000000_00
+00002000_40C0000000000000_00
+FFFF8004_C0DFFF0000000000_00
+FFFBE0DE_C1107C8800000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000000_0000000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_C15F7F8040000000_00
+FFFFD2F1_C0C6878000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0011B7E5_4131B7E500000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0013F7E6_4133F7E600000000_00
+00040000_4110000000000000_00
+FFFDC007_C101FFC800000000_00
+FD0ABD9A_C187AA1330000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00003CEE_40CE770000000000_00
+00100000_4130000000000000_00
+DFDFE000_C1C0101000000000_00
+FFFB1642_C113A6F800000000_00
+00200000_4140000000000000_00
+FC000078_C18FFFFC40000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+FFFFFE21_C07DF00000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_C160801020000000_00
+FFFF6393_C0E38DA000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+FFFFFDB4_C082600000000000_00
+02000000_4180000000000000_00
+8002FFFF_C1DFFF4000400000_00
+FFFFC8E2_C0CB8F0000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_C10F901000000000_00
+FFFFFF1B_C06CA00000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0001092B_40F092B000000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+00B4F3D1_41669E7A20000000_00
+20000000_41C0000000000000_00
+FEF801FF_C1707FE010000000_00
+00000005_4014000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_C1D0030000800000_00
+0001806B_40F806B000000000_00
+80000000_C1E0000000000000_00
+0000A07E_40E40FC000000000_00
+FFFFA59F_C0D6984000000000_00
+C0000000_C1D0000000000000_00
+E0007FDE_C1BFFF8022000000_00
+FFF8343E_C11F2F0800000000_00
+E0000000_C1C0000000000000_00
+0000FF7C_40EFEF8000000000_00
+FFFFFFF7_C022000000000000_00
+F0000000_C1B0000000000000_00
+BDFFFFFC_C1D0800001000000_00
+FFFFE3C1_C0BC3F0000000000_00
+F8000000_C1A0000000000000_00
+28003FFE_41C4001FFF000000_00
+00000000_0000000000000000_00
+FC000000_C190000000000000_00
+00EEFFFF_416DDFFFE0000000_00
+00003EB0_40CF580000000000_00
+FE000000_C180000000000000_00
+00000F7D_40AEFA0000000000_00
+FFFFFF0F_C06E200000000000_00
+FF000000_C170000000000000_00
+0000406D_40D01B4000000000_00
+0000001A_403A000000000000_00
+FF800000_C160000000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000000A_4024000000000000_00
+FFC00000_C150000000000000_00
+FFFF007C_C0EFF08000000000_00
+0000009B_4063600000000000_00
+FFE00000_C140000000000000_00
+00E00FFF_416C01FFE0000000_00
+00000006_4018000000000000_00
+FFF00000_C130000000000000_00
+00200FFC_414007FE00000000_00
+00000714_409C500000000000_00
+FFF80000_C120000000000000_00
+F800040E_C19FFFEFC8000000_00
+00000013_4033000000000000_00
+FFFC0000_C110000000000000_00
+F83BFFFF_C19F100004000000_00
+FFF3F584_C12814F800000000_00
+FFFE0000_C100000000000000_00
+F6FFFBFF_C1A2000802000000_00
+FFFFFFF0_C030000000000000_00
+FFFF0000_C0F0000000000000_00
+80003FFD_C1DFFFF000C00000_00
+FFFFFFAD_C054C00000000000_00
+FFFF8000_C0E0000000000000_00
+004001FD_4150007F40000000_00
+000D734E_412AE69C00000000_00
+FFFFC000_C0D0000000000000_00
+006003FE_415800FF80000000_00
+FF9DBAA8_C158915600000000_00
+FFFFE000_C0C0000000000000_00
+000403EE_41100FB800000000_00
+00734668_415CD19A00000000_00
+FFFFF000_C0B0000000000000_00
+01200002_4172000020000000_00
+FF8874A5_C15DE2D6C0000000_00
+FFFFF800_C0A0000000000000_00
+00060001_4118000400000000_00
+FFFFFFF8_C020000000000000_00
+FFFFFC00_C090000000000000_00
+001FFEDD_413FFEDD00000000_00
+FFFC56DF_C10D490800000000_00
+FFFFFE00_C080000000000000_00
+EFFFEFFD_C1B0001003000000_00
+FECF5EC6_C1730A13A0000000_00
+FFFFFF00_C070000000000000_00
+1FF00002_41BFF00002000000_00
+F6DB786B_C1A2490F2A000000_00
+FFFFFF80_C060000000000000_00
+F0000FBE_C1AFFFE084000000_00
+00000009_4022000000000000_00
+FFFFFFC0_C050000000000000_00
+0010801F_4130801F00000000_00
+0001F238_40FF238000000000_00
+FFFFFFE0_C040000000000000_00
+F8000047_C19FFFFEE4000000_00
+0002133C_410099E000000000_00
+FFFFFFF0_C030000000000000_00
+003C001F_414E000F80000000_00
+000001F1_407F100000000000_00
+FFFFFFF8_C020000000000000_00
+FFDFBFFF_C140200080000000_00
+FF5E507F_C16435F020000000_00
+FFFFFFFC_C010000000000000_00
+037FFFDE_418BFFFEF0000000_00
+FFFD7C6F_C1041C8800000000_00
+FFFFFFFE_C000000000000000_00
+000000FD_406FA00000000000_00
+FFFFF42A_C0A7AC0000000000_00
+FFFFFFFF_BFF0000000000000_00
+021FFF7D_4180FFFBE8000000_00
+0000000A_4024000000000000_00
+FFFFFFFD_C008000000000000_00
+4010FFFF_41D0043FFFC00000_00
+FFFFFFD3_C046800000000000_00
+FFFFFFFB_C014000000000000_00
+FFFF800B_C0DFFD4000000000_00
+000000B8_4067000000000000_00
+FFFFFFF7_C022000000000000_00
+FF800803_C15FFDFF40000000_00
+FFFFFFFE_C000000000000000_00
+FFFFFFEF_C031000000000000_00
+00803FFB_416007FF60000000_00
+00000308_4088400000000000_00
+FFFFFFDF_C040800000000000_00
+2107FFFE_41C083FFFF000000_00
+FFE15D4F_C13EA2B100000000_00
+FFFFFFBF_C050400000000000_00
+400087FD_41D00021FF400000_00
+0000000F_402E000000000000_00
+FFFFFF7F_C060200000000000_00
+FDFC007E_C1801FFC10000000_00
+00000006_4018000000000000_00
+FFFFFEFF_C070100000000000_00
+FFF80100_C11FFC0000000000_00
+FFFFFE99_C076700000000000_00
+FFFFFDFF_C080080000000000_00
+03000002_4188000010000000_00
+FFF716EA_C121D22C00000000_00
+FFFFFBFF_C090040000000000_00
+C7FDFFFF_C1CC010000800000_00
+FFFFE327_C0BCD90000000000_00
+FFFFF7FF_C0A0020000000000_00
+0103DFFE_41703DFFE0000000_00
+07661FD8_419D987F60000000_00
+FFFFEFFF_C0B0010000000000_00
+83FFFFFE_C1DF000000800000_00
+FCD956DB_C189354928000000_00
+FFFFDFFF_C0C0008000000000_00
+FF2001FD_C16BFFC060000000_00
+E4D35BBF_C1BB2CA441000000_00
+FFFFBFFF_C0D0004000000000_00
+DFEFEFFE_C1C0080801000000_00
+05DA4300_4197690C00000000_00
+FFFF7FFF_C0E0002000000000_00
+40001040_41D0000410000000_00
+812EDF40_C1DFB44830000000_00
+FFFEFFFF_C0F0001000000000_00
+FFFFC007_C0CFFC8000000000_00
+00B6FCC9_4166DF9920000000_00
+FFFDFFFF_C100000800000000_00
+000007FE_409FF80000000000_00
+FC3DE950_C18E10B580000000_00
+FFFBFFFF_C110000400000000_00
+7FFFFE03_41DFFFFF80C00000_00
+FEB02B59_C174FD4A70000000_00
+FFF7FFFF_C120000200000000_00
+10FF7FFF_41B0FF7FFF000000_00
+00008D5E_40E1ABC000000000_00
+FFEFFFFF_C130000100000000_00
+FFFF007E_C0EFF04000000000_00
+001C2108_413C210800000000_00
+FFDFFFFF_C140000080000000_00
+00FFC001_416FF80020000000_00
+F01C6B36_C1AFC72994000000_00
+FFBFFFFF_C150000040000000_00
+FFFF7FFF_C0E0002000000000_00
+FFFFD055_C0C7D58000000000_00
+FF7FFFFF_C160000020000000_00
+027BFFFE_4183DFFFF0000000_00
+FF3090D0_C169EDE600000000_00
+FEFFFFFF_C170000010000000_00
+00082040_4120408000000000_00
+0000006E_405B800000000000_00
+FDFFFFFF_C180000008000000_00
+FDFFFF87_C1800003C8000000_00
+04C3764D_41930DD934000000_00
+FBFFFFFF_C190000004000000_00
+0006007E_411801F800000000_00
+000001EF_407EF00000000000_00
+F7FFFFFF_C1A0000002000000_00
+FFBF7FFE_C150200080000000_00
+FF1C4E5A_C16C7634C0000000_00
+EFFFFFFF_C1B0000001000000_00
+FFF97FFD_C11A000C00000000_00
+000001D1_407D100000000000_00
+DFFFFFFF_C1C0000000800000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00136721_4133672100000000_00
+BFFFFFFF_C1D0000000400000_00
+00004BFF_40D2FFC000000000_00
+00000544_4095100000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+FFF8BD5E_C11D0A8800000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_C1501FFF40000000_00
+FFFE45D2_C0FBA2E000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_C082080000000000_00
+FFFFF189_C0ACEE0000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_C0F9002000000000_00
+FC8672A0_C18BCC6B00000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+FFFCCA70_C109AC8000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+FFFF48E7_C0E6E32000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_C1A0040024000000_00
+00000010_4030000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_C0EFC06000000000_00
+0000FAEF_40EF5DE000000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000000F5_406EA00000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_C13F804000000000_00
+001AFFFB_413AFFFB00000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+FF4613B2_C1673D89C0000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_C1AFFFF404000000_00
+00036402_410B201000000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_C087F00000000000_00
+FFFF41C6_C0E7C74000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+FFFFFFFB_C014000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_C178020020000000_00
+FFFFFFFD_C008000000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_C1C2200001000000_00
+00000404_4090100000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_C0CFF40000000000_00
+00002853_40C4298000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+FFFFF124_C0ADB80000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_C0B0420000000000_00
+FFFB9AD8_C11194A000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_C1C0000101000000_00
+FFFFFD95_C083580000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_C180000008000000_00
+FFFFFFD0_C048000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+010EC496_4170EC4960000000_00
+0000007F_405FC00000000000_00
+B8007FFF_C1D1FFE000400000_00
+00000012_4032000000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+FFFFFFEF_C031000000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_C160001FC0000000_00
+FFFFE2CE_C0BD320000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+FFFFFE44_C07BC00000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+000038E7_40CC738000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i32_f64_rz.tv b/wally-pipelined/testbench/fp/i32_f64_rz.tv
index 7f04b63fd..3e4622082 100644
--- a/wally-pipelined/testbench/fp/i32_f64_rz.tv
+++ b/wally-pipelined/testbench/fp/i32_f64_rz.tv
@@ -1,372 +1,372 @@
-1FEFFFEF 41BFEFFFEF000000_00
-FFFFC48E C0CDB90000000000_00
-00000000 0000000000000000_00
-007FFFCD 415FFFF340000000_00
-00009E14 40E3C28000000000_00
-00000001 3FF0000000000000_00
-001FFFFB 413FFFFB00000000_00
-FFFFDE38 C0C0E40000000000_00
-00000002 4000000000000000_00
-FFDFFC02 C14001FF00000000_00
-FB794C79 C1921ACE1C000000_00
-00000004 4010000000000000_00
-F00FFFFE C1AFE00004000000_00
-00000A95 40A52A0000000000_00
-00000008 4020000000000000_00
-FFFFF97F C09A040000000000_00
-FFAE458D C1546E9CC0000000_00
-00000010 4030000000000000_00
-0101001E 41701001E0000000_00
-29EB4561 41C4F5A2B0800000_00
-00000020 4040000000000000_00
-8001FFEE C1DFFF8004800000_00
-FFFBDD08 C1108BE000000000_00
-00000040 4050000000000000_00
-FFF03FF9 C12F800E00000000_00
-FFCEDF36 C148906500000000_00
-00000080 4060000000000000_00
-0000F01F 40EE03E000000000_00
-00000279 4083C80000000000_00
-00000100 4070000000000000_00
-BFFFFFEF C1D0000004400000_00
-00000007 401C000000000000_00
-00000200 4080000000000000_00
-010BFFFD 4170BFFFD0000000_00
-FFFFF590 C0A4E00000000000_00
-00000400 4090000000000000_00
-F7FFFEFB C1A000020A000000_00
-2FEA335F 41C7F519AF800000_00
-00000800 40A0000000000000_00
-FFC07FFF C14FC00080000000_00
-177957FD 41B77957FD000000_00
-00001000 40B0000000000000_00
-01FBFFEE 417FBFFEE0000000_00
-FFFFFAC9 C094DC0000000000_00
-00002000 40C0000000000000_00
-FFFF8004 C0DFFF0000000000_00
-FFFBE0DE C1107C8800000000_00
-00004000 40D0000000000000_00
-3F00001E 41CF80000F000000_00
-00000000 0000000000000000_00
-00008000 40E0000000000000_00
-FF8201FF C15F7F8040000000_00
-FFFFD2F1 C0C6878000000000_00
-00010000 40F0000000000000_00
-0000047E 4091F80000000000_00
-0011B7E5 4131B7E500000000_00
-00020000 4100000000000000_00
-02200200 4181001000000000_00
-0013F7E6 4133F7E600000000_00
-00040000 4110000000000000_00
-FFFDC007 C101FFC800000000_00
-FD0ABD9A C187AA1330000000_00
-00080000 4120000000000000_00
-0000607F 40D81FC000000000_00
-00003CEE 40CE770000000000_00
-00100000 4130000000000000_00
-DFDFE000 C1C0101000000000_00
-FFFB1642 C113A6F800000000_00
-00200000 4140000000000000_00
-FC000078 C18FFFFC40000000_00
-5F70EEC1 41D7DC3BB0400000_00
-00400000 4150000000000000_00
-00100082 4130008200000000_00
-FFFFFE21 C07DF00000000000_00
-00800000 4160000000000000_00
-FF7BFF7F C160801020000000_00
-FFFF6393 C0E38DA000000000_00
-01000000 4170000000000000_00
-07EFFEFD 419FBFFBF4000000_00
-FFFFFDB4 C082600000000000_00
-02000000 4180000000000000_00
-8002FFFF C1DFFF4000400000_00
-FFFFC8E2 C0CB8F0000000000_00
-04000000 4190000000000000_00
-FFFC0DFE C10F901000000000_00
-FFFFFF1B C06CA00000000000_00
-08000000 41A0000000000000_00
-03FFFDBF 418FFFEDF8000000_00
-0001092B 40F092B000000000_00
-10000000 41B0000000000000_00
-007FBFFD 415FEFFF40000000_00
-00B4F3D1 41669E7A20000000_00
-20000000 41C0000000000000_00
-FEF801FF C1707FE010000000_00
-00000005 4014000000000000_00
-40000000 41D0000000000000_00
-BFF3FFFE C1D0030000800000_00
-0001806B 40F806B000000000_00
-80000000 C1E0000000000000_00
-0000A07E 40E40FC000000000_00
-FFFFA59F C0D6984000000000_00
-C0000000 C1D0000000000000_00
-E0007FDE C1BFFF8022000000_00
-FFF8343E C11F2F0800000000_00
-E0000000 C1C0000000000000_00
-0000FF7C 40EFEF8000000000_00
-FFFFFFF7 C022000000000000_00
-F0000000 C1B0000000000000_00
-BDFFFFFC C1D0800001000000_00
-FFFFE3C1 C0BC3F0000000000_00
-F8000000 C1A0000000000000_00
-28003FFE 41C4001FFF000000_00
-00000000 0000000000000000_00
-FC000000 C190000000000000_00
-00EEFFFF 416DDFFFE0000000_00
-00003EB0 40CF580000000000_00
-FE000000 C180000000000000_00
-00000F7D 40AEFA0000000000_00
-FFFFFF0F C06E200000000000_00
-FF000000 C170000000000000_00
-0000406D 40D01B4000000000_00
-0000001A 403A000000000000_00
-FF800000 C160000000000000_00
-203FFFFD 41C01FFFFE800000_00
-0000000A 4024000000000000_00
-FFC00000 C150000000000000_00
-FFFF007C C0EFF08000000000_00
-0000009B 4063600000000000_00
-FFE00000 C140000000000000_00
-00E00FFF 416C01FFE0000000_00
-00000006 4018000000000000_00
-FFF00000 C130000000000000_00
-00200FFC 414007FE00000000_00
-00000714 409C500000000000_00
-FFF80000 C120000000000000_00
-F800040E C19FFFEFC8000000_00
-00000013 4033000000000000_00
-FFFC0000 C110000000000000_00
-F83BFFFF C19F100004000000_00
-FFF3F584 C12814F800000000_00
-FFFE0000 C100000000000000_00
-F6FFFBFF C1A2000802000000_00
-FFFFFFF0 C030000000000000_00
-FFFF0000 C0F0000000000000_00
-80003FFD C1DFFFF000C00000_00
-FFFFFFAD C054C00000000000_00
-FFFF8000 C0E0000000000000_00
-004001FD 4150007F40000000_00
-000D734E 412AE69C00000000_00
-FFFFC000 C0D0000000000000_00
-006003FE 415800FF80000000_00
-FF9DBAA8 C158915600000000_00
-FFFFE000 C0C0000000000000_00
-000403EE 41100FB800000000_00
-00734668 415CD19A00000000_00
-FFFFF000 C0B0000000000000_00
-01200002 4172000020000000_00
-FF8874A5 C15DE2D6C0000000_00
-FFFFF800 C0A0000000000000_00
-00060001 4118000400000000_00
-FFFFFFF8 C020000000000000_00
-FFFFFC00 C090000000000000_00
-001FFEDD 413FFEDD00000000_00
-FFFC56DF C10D490800000000_00
-FFFFFE00 C080000000000000_00
-EFFFEFFD C1B0001003000000_00
-FECF5EC6 C1730A13A0000000_00
-FFFFFF00 C070000000000000_00
-1FF00002 41BFF00002000000_00
-F6DB786B C1A2490F2A000000_00
-FFFFFF80 C060000000000000_00
-F0000FBE C1AFFFE084000000_00
-00000009 4022000000000000_00
-FFFFFFC0 C050000000000000_00
-0010801F 4130801F00000000_00
-0001F238 40FF238000000000_00
-FFFFFFE0 C040000000000000_00
-F8000047 C19FFFFEE4000000_00
-0002133C 410099E000000000_00
-FFFFFFF0 C030000000000000_00
-003C001F 414E000F80000000_00
-000001F1 407F100000000000_00
-FFFFFFF8 C020000000000000_00
-FFDFBFFF C140200080000000_00
-FF5E507F C16435F020000000_00
-FFFFFFFC C010000000000000_00
-037FFFDE 418BFFFEF0000000_00
-FFFD7C6F C1041C8800000000_00
-FFFFFFFE C000000000000000_00
-000000FD 406FA00000000000_00
-FFFFF42A C0A7AC0000000000_00
-FFFFFFFF BFF0000000000000_00
-021FFF7D 4180FFFBE8000000_00
-0000000A 4024000000000000_00
-FFFFFFFD C008000000000000_00
-4010FFFF 41D0043FFFC00000_00
-FFFFFFD3 C046800000000000_00
-FFFFFFFB C014000000000000_00
-FFFF800B C0DFFD4000000000_00
-000000B8 4067000000000000_00
-FFFFFFF7 C022000000000000_00
-FF800803 C15FFDFF40000000_00
-FFFFFFFE C000000000000000_00
-FFFFFFEF C031000000000000_00
-00803FFB 416007FF60000000_00
-00000308 4088400000000000_00
-FFFFFFDF C040800000000000_00
-2107FFFE 41C083FFFF000000_00
-FFE15D4F C13EA2B100000000_00
-FFFFFFBF C050400000000000_00
-400087FD 41D00021FF400000_00
-0000000F 402E000000000000_00
-FFFFFF7F C060200000000000_00
-FDFC007E C1801FFC10000000_00
-00000006 4018000000000000_00
-FFFFFEFF C070100000000000_00
-FFF80100 C11FFC0000000000_00
-FFFFFE99 C076700000000000_00
-FFFFFDFF C080080000000000_00
-03000002 4188000010000000_00
-FFF716EA C121D22C00000000_00
-FFFFFBFF C090040000000000_00
-C7FDFFFF C1CC010000800000_00
-FFFFE327 C0BCD90000000000_00
-FFFFF7FF C0A0020000000000_00
-0103DFFE 41703DFFE0000000_00
-07661FD8 419D987F60000000_00
-FFFFEFFF C0B0010000000000_00
-83FFFFFE C1DF000000800000_00
-FCD956DB C189354928000000_00
-FFFFDFFF C0C0008000000000_00
-FF2001FD C16BFFC060000000_00
-E4D35BBF C1BB2CA441000000_00
-FFFFBFFF C0D0004000000000_00
-DFEFEFFE C1C0080801000000_00
-05DA4300 4197690C00000000_00
-FFFF7FFF C0E0002000000000_00
-40001040 41D0000410000000_00
-812EDF40 C1DFB44830000000_00
-FFFEFFFF C0F0001000000000_00
-FFFFC007 C0CFFC8000000000_00
-00B6FCC9 4166DF9920000000_00
-FFFDFFFF C100000800000000_00
-000007FE 409FF80000000000_00
-FC3DE950 C18E10B580000000_00
-FFFBFFFF C110000400000000_00
-7FFFFE03 41DFFFFF80C00000_00
-FEB02B59 C174FD4A70000000_00
-FFF7FFFF C120000200000000_00
-10FF7FFF 41B0FF7FFF000000_00
-00008D5E 40E1ABC000000000_00
-FFEFFFFF C130000100000000_00
-FFFF007E C0EFF04000000000_00
-001C2108 413C210800000000_00
-FFDFFFFF C140000080000000_00
-00FFC001 416FF80020000000_00
-F01C6B36 C1AFC72994000000_00
-FFBFFFFF C150000040000000_00
-FFFF7FFF C0E0002000000000_00
-FFFFD055 C0C7D58000000000_00
-FF7FFFFF C160000020000000_00
-027BFFFE 4183DFFFF0000000_00
-FF3090D0 C169EDE600000000_00
-FEFFFFFF C170000010000000_00
-00082040 4120408000000000_00
-0000006E 405B800000000000_00
-FDFFFFFF C180000008000000_00
-FDFFFF87 C1800003C8000000_00
-04C3764D 41930DD934000000_00
-FBFFFFFF C190000004000000_00
-0006007E 411801F800000000_00
-000001EF 407EF00000000000_00
-F7FFFFFF C1A0000002000000_00
-FFBF7FFE C150200080000000_00
-FF1C4E5A C16C7634C0000000_00
-EFFFFFFF C1B0000001000000_00
-FFF97FFD C11A000C00000000_00
-000001D1 407D100000000000_00
-DFFFFFFF C1C0000000800000_00
-2FFFFFFE 41C7FFFFFF000000_00
-00136721 4133672100000000_00
-BFFFFFFF C1D0000000400000_00
-00004BFF 40D2FFC000000000_00
-00000544 4095100000000000_00
-7FFFFFFF 41DFFFFFFFC00000_00
-007FDFFB 415FF7FEC0000000_00
-FFF8BD5E C11D0A8800000000_00
-3FFFFFFF 41CFFFFFFF800000_00
-FFBF8003 C1501FFF40000000_00
-FFFE45D2 C0FBA2E000000000_00
-1FFFFFFF 41BFFFFFFF000000_00
-FFFFFDBF C082080000000000_00
-FFFFF189 C0ACEE0000000000_00
-0FFFFFFF 41AFFFFFFE000000_00
-FFFE6FFE C0F9002000000000_00
-FC8672A0 C18BCC6B00000000_00
-07FFFFFF 419FFFFFFC000000_00
-00000107 4070700000000000_00
-FFFCCA70 C109AC8000000000_00
-03FFFFFF 418FFFFFF8000000_00
-002107FE 414083FF00000000_00
-FFFF48E7 C0E6E32000000000_00
-01FFFFFF 417FFFFFF0000000_00
-F7FDFFEE C1A0040024000000_00
-00000010 4030000000000000_00
-00FFFFFF 416FFFFFE0000000_00
-FFFF01FD C0EFC06000000000_00
-0000FAEF 40EF5DE000000000_00
-007FFFFF 415FFFFFC0000000_00
-00FC0001 416F800020000000_00
-000000F5 406EA00000000000_00
-003FFFFF 414FFFFF80000000_00
-FFE07FC0 C13F804000000000_00
-001AFFFB 413AFFFB00000000_00
-001FFFFF 413FFFFF00000000_00
-00101FFD 41301FFD00000000_00
-FF4613B2 C1673D89C0000000_00
-000FFFFF 412FFFFE00000000_00
-F00005FE C1AFFFF404000000_00
-00036402 410B201000000000_00
-0007FFFF 411FFFFC00000000_00
-0404FFFF 419013FFFC000000_00
-021C2358 4180E11AC0000000_00
-0003FFFF 410FFFF800000000_00
-FFFFFD02 C087F00000000000_00
-FFFF41C6 C0E7C74000000000_00
-0001FFFF 40FFFFF000000000_00
-00000007 401C000000000000_00
-27F174DE 41C3F8BA6F000000_00
-0000FFFF 40EFFFE000000000_00
-000083F5 40E07EA000000000_00
-FFFFFFFB C014000000000000_00
-00007FFF 40DFFFC000000000_00
-FE7FDFFE C178020020000000_00
-FFFFFFFD C008000000000000_00
-00003FFF 40CFFF8000000000_00
-DBBFFFFE C1C2200001000000_00
-00000404 4090100000000000_00
-00001FFF 40BFFF0000000000_00
-FFFFC018 C0CFF40000000000_00
-00002853 40C4298000000000_00
-00000FFF 40AFFE0000000000_00
-03FE007F 418FF003F8000000_00
-FFFFF124 C0ADB80000000000_00
-000007FF 409FFC0000000000_00
-FFFFEFBE C0B0420000000000_00
-FFFB9AD8 C11194A000000000_00
-000003FF 408FF80000000000_00
-DFFFFDFE C1C0000101000000_00
-FFFFFD95 C083580000000000_00
-000001FF 407FF00000000000_00
-FDFFFFFF C180000008000000_00
-FFFFFFD0 C048000000000000_00
-000000FF 406FE00000000000_00
-0037FFE0 414BFFF000000000_00
-010EC496 4170EC4960000000_00
-0000007F 405FC00000000000_00
-B8007FFF C1D1FFE000400000_00
-00000012 4032000000000000_00
-0000003F 404F800000000000_00
-02003FFC 418001FFE0000000_00
-FFFFFFEF C031000000000000_00
-0000001F 403F000000000000_00
-FF7FFF02 C160001FC0000000_00
-FFFFE2CE C0BD320000000000_00
-0000000F 402E000000000000_00
-0000A00D 40E401A000000000_00
-FFFFFE44 C07BC00000000000_00
-00000007 401C000000000000_00
-0003FFFA 410FFFD000000000_00
-000038E7 40CC738000000000_00
-00000003 4008000000000000_00
+1FEFFFEF_41BFEFFFEF000000_00
+FFFFC48E_C0CDB90000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00009E14_40E3C28000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+FFFFDE38_C0C0E40000000000_00
+00000002_4000000000000000_00
+FFDFFC02_C14001FF00000000_00
+FB794C79_C1921ACE1C000000_00
+00000004_4010000000000000_00
+F00FFFFE_C1AFE00004000000_00
+00000A95_40A52A0000000000_00
+00000008_4020000000000000_00
+FFFFF97F_C09A040000000000_00
+FFAE458D_C1546E9CC0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+29EB4561_41C4F5A2B0800000_00
+00000020_4040000000000000_00
+8001FFEE_C1DFFF8004800000_00
+FFFBDD08_C1108BE000000000_00
+00000040_4050000000000000_00
+FFF03FF9_C12F800E00000000_00
+FFCEDF36_C148906500000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000279_4083C80000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_C1D0000004400000_00
+00000007_401C000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+FFFFF590_C0A4E00000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_C1A000020A000000_00
+2FEA335F_41C7F519AF800000_00
+00000800_40A0000000000000_00
+FFC07FFF_C14FC00080000000_00
+177957FD_41B77957FD000000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+FFFFFAC9_C094DC0000000000_00
+00002000_40C0000000000000_00
+FFFF8004_C0DFFF0000000000_00
+FFFBE0DE_C1107C8800000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000000_0000000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_C15F7F8040000000_00
+FFFFD2F1_C0C6878000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0011B7E5_4131B7E500000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0013F7E6_4133F7E600000000_00
+00040000_4110000000000000_00
+FFFDC007_C101FFC800000000_00
+FD0ABD9A_C187AA1330000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00003CEE_40CE770000000000_00
+00100000_4130000000000000_00
+DFDFE000_C1C0101000000000_00
+FFFB1642_C113A6F800000000_00
+00200000_4140000000000000_00
+FC000078_C18FFFFC40000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+FFFFFE21_C07DF00000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_C160801020000000_00
+FFFF6393_C0E38DA000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+FFFFFDB4_C082600000000000_00
+02000000_4180000000000000_00
+8002FFFF_C1DFFF4000400000_00
+FFFFC8E2_C0CB8F0000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_C10F901000000000_00
+FFFFFF1B_C06CA00000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0001092B_40F092B000000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+00B4F3D1_41669E7A20000000_00
+20000000_41C0000000000000_00
+FEF801FF_C1707FE010000000_00
+00000005_4014000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_C1D0030000800000_00
+0001806B_40F806B000000000_00
+80000000_C1E0000000000000_00
+0000A07E_40E40FC000000000_00
+FFFFA59F_C0D6984000000000_00
+C0000000_C1D0000000000000_00
+E0007FDE_C1BFFF8022000000_00
+FFF8343E_C11F2F0800000000_00
+E0000000_C1C0000000000000_00
+0000FF7C_40EFEF8000000000_00
+FFFFFFF7_C022000000000000_00
+F0000000_C1B0000000000000_00
+BDFFFFFC_C1D0800001000000_00
+FFFFE3C1_C0BC3F0000000000_00
+F8000000_C1A0000000000000_00
+28003FFE_41C4001FFF000000_00
+00000000_0000000000000000_00
+FC000000_C190000000000000_00
+00EEFFFF_416DDFFFE0000000_00
+00003EB0_40CF580000000000_00
+FE000000_C180000000000000_00
+00000F7D_40AEFA0000000000_00
+FFFFFF0F_C06E200000000000_00
+FF000000_C170000000000000_00
+0000406D_40D01B4000000000_00
+0000001A_403A000000000000_00
+FF800000_C160000000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000000A_4024000000000000_00
+FFC00000_C150000000000000_00
+FFFF007C_C0EFF08000000000_00
+0000009B_4063600000000000_00
+FFE00000_C140000000000000_00
+00E00FFF_416C01FFE0000000_00
+00000006_4018000000000000_00
+FFF00000_C130000000000000_00
+00200FFC_414007FE00000000_00
+00000714_409C500000000000_00
+FFF80000_C120000000000000_00
+F800040E_C19FFFEFC8000000_00
+00000013_4033000000000000_00
+FFFC0000_C110000000000000_00
+F83BFFFF_C19F100004000000_00
+FFF3F584_C12814F800000000_00
+FFFE0000_C100000000000000_00
+F6FFFBFF_C1A2000802000000_00
+FFFFFFF0_C030000000000000_00
+FFFF0000_C0F0000000000000_00
+80003FFD_C1DFFFF000C00000_00
+FFFFFFAD_C054C00000000000_00
+FFFF8000_C0E0000000000000_00
+004001FD_4150007F40000000_00
+000D734E_412AE69C00000000_00
+FFFFC000_C0D0000000000000_00
+006003FE_415800FF80000000_00
+FF9DBAA8_C158915600000000_00
+FFFFE000_C0C0000000000000_00
+000403EE_41100FB800000000_00
+00734668_415CD19A00000000_00
+FFFFF000_C0B0000000000000_00
+01200002_4172000020000000_00
+FF8874A5_C15DE2D6C0000000_00
+FFFFF800_C0A0000000000000_00
+00060001_4118000400000000_00
+FFFFFFF8_C020000000000000_00
+FFFFFC00_C090000000000000_00
+001FFEDD_413FFEDD00000000_00
+FFFC56DF_C10D490800000000_00
+FFFFFE00_C080000000000000_00
+EFFFEFFD_C1B0001003000000_00
+FECF5EC6_C1730A13A0000000_00
+FFFFFF00_C070000000000000_00
+1FF00002_41BFF00002000000_00
+F6DB786B_C1A2490F2A000000_00
+FFFFFF80_C060000000000000_00
+F0000FBE_C1AFFFE084000000_00
+00000009_4022000000000000_00
+FFFFFFC0_C050000000000000_00
+0010801F_4130801F00000000_00
+0001F238_40FF238000000000_00
+FFFFFFE0_C040000000000000_00
+F8000047_C19FFFFEE4000000_00
+0002133C_410099E000000000_00
+FFFFFFF0_C030000000000000_00
+003C001F_414E000F80000000_00
+000001F1_407F100000000000_00
+FFFFFFF8_C020000000000000_00
+FFDFBFFF_C140200080000000_00
+FF5E507F_C16435F020000000_00
+FFFFFFFC_C010000000000000_00
+037FFFDE_418BFFFEF0000000_00
+FFFD7C6F_C1041C8800000000_00
+FFFFFFFE_C000000000000000_00
+000000FD_406FA00000000000_00
+FFFFF42A_C0A7AC0000000000_00
+FFFFFFFF_BFF0000000000000_00
+021FFF7D_4180FFFBE8000000_00
+0000000A_4024000000000000_00
+FFFFFFFD_C008000000000000_00
+4010FFFF_41D0043FFFC00000_00
+FFFFFFD3_C046800000000000_00
+FFFFFFFB_C014000000000000_00
+FFFF800B_C0DFFD4000000000_00
+000000B8_4067000000000000_00
+FFFFFFF7_C022000000000000_00
+FF800803_C15FFDFF40000000_00
+FFFFFFFE_C000000000000000_00
+FFFFFFEF_C031000000000000_00
+00803FFB_416007FF60000000_00
+00000308_4088400000000000_00
+FFFFFFDF_C040800000000000_00
+2107FFFE_41C083FFFF000000_00
+FFE15D4F_C13EA2B100000000_00
+FFFFFFBF_C050400000000000_00
+400087FD_41D00021FF400000_00
+0000000F_402E000000000000_00
+FFFFFF7F_C060200000000000_00
+FDFC007E_C1801FFC10000000_00
+00000006_4018000000000000_00
+FFFFFEFF_C070100000000000_00
+FFF80100_C11FFC0000000000_00
+FFFFFE99_C076700000000000_00
+FFFFFDFF_C080080000000000_00
+03000002_4188000010000000_00
+FFF716EA_C121D22C00000000_00
+FFFFFBFF_C090040000000000_00
+C7FDFFFF_C1CC010000800000_00
+FFFFE327_C0BCD90000000000_00
+FFFFF7FF_C0A0020000000000_00
+0103DFFE_41703DFFE0000000_00
+07661FD8_419D987F60000000_00
+FFFFEFFF_C0B0010000000000_00
+83FFFFFE_C1DF000000800000_00
+FCD956DB_C189354928000000_00
+FFFFDFFF_C0C0008000000000_00
+FF2001FD_C16BFFC060000000_00
+E4D35BBF_C1BB2CA441000000_00
+FFFFBFFF_C0D0004000000000_00
+DFEFEFFE_C1C0080801000000_00
+05DA4300_4197690C00000000_00
+FFFF7FFF_C0E0002000000000_00
+40001040_41D0000410000000_00
+812EDF40_C1DFB44830000000_00
+FFFEFFFF_C0F0001000000000_00
+FFFFC007_C0CFFC8000000000_00
+00B6FCC9_4166DF9920000000_00
+FFFDFFFF_C100000800000000_00
+000007FE_409FF80000000000_00
+FC3DE950_C18E10B580000000_00
+FFFBFFFF_C110000400000000_00
+7FFFFE03_41DFFFFF80C00000_00
+FEB02B59_C174FD4A70000000_00
+FFF7FFFF_C120000200000000_00
+10FF7FFF_41B0FF7FFF000000_00
+00008D5E_40E1ABC000000000_00
+FFEFFFFF_C130000100000000_00
+FFFF007E_C0EFF04000000000_00
+001C2108_413C210800000000_00
+FFDFFFFF_C140000080000000_00
+00FFC001_416FF80020000000_00
+F01C6B36_C1AFC72994000000_00
+FFBFFFFF_C150000040000000_00
+FFFF7FFF_C0E0002000000000_00
+FFFFD055_C0C7D58000000000_00
+FF7FFFFF_C160000020000000_00
+027BFFFE_4183DFFFF0000000_00
+FF3090D0_C169EDE600000000_00
+FEFFFFFF_C170000010000000_00
+00082040_4120408000000000_00
+0000006E_405B800000000000_00
+FDFFFFFF_C180000008000000_00
+FDFFFF87_C1800003C8000000_00
+04C3764D_41930DD934000000_00
+FBFFFFFF_C190000004000000_00
+0006007E_411801F800000000_00
+000001EF_407EF00000000000_00
+F7FFFFFF_C1A0000002000000_00
+FFBF7FFE_C150200080000000_00
+FF1C4E5A_C16C7634C0000000_00
+EFFFFFFF_C1B0000001000000_00
+FFF97FFD_C11A000C00000000_00
+000001D1_407D100000000000_00
+DFFFFFFF_C1C0000000800000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00136721_4133672100000000_00
+BFFFFFFF_C1D0000000400000_00
+00004BFF_40D2FFC000000000_00
+00000544_4095100000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+FFF8BD5E_C11D0A8800000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_C1501FFF40000000_00
+FFFE45D2_C0FBA2E000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_C082080000000000_00
+FFFFF189_C0ACEE0000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_C0F9002000000000_00
+FC8672A0_C18BCC6B00000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+FFFCCA70_C109AC8000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+FFFF48E7_C0E6E32000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_C1A0040024000000_00
+00000010_4030000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_C0EFC06000000000_00
+0000FAEF_40EF5DE000000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000000F5_406EA00000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_C13F804000000000_00
+001AFFFB_413AFFFB00000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+FF4613B2_C1673D89C0000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_C1AFFFF404000000_00
+00036402_410B201000000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_C087F00000000000_00
+FFFF41C6_C0E7C74000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+FFFFFFFB_C014000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_C178020020000000_00
+FFFFFFFD_C008000000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_C1C2200001000000_00
+00000404_4090100000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_C0CFF40000000000_00
+00002853_40C4298000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+FFFFF124_C0ADB80000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_C0B0420000000000_00
+FFFB9AD8_C11194A000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_C1C0000101000000_00
+FFFFFD95_C083580000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_C180000008000000_00
+FFFFFFD0_C048000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+010EC496_4170EC4960000000_00
+0000007F_405FC00000000000_00
+B8007FFF_C1D1FFE000400000_00
+00000012_4032000000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+FFFFFFEF_C031000000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_C160001FC0000000_00
+FFFFE2CE_C0BD320000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+FFFFFE44_C07BC00000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+000038E7_40CC738000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rd.tv b/wally-pipelined/testbench/fp/i64_f32_rd.tv
index 9e003f1c2..acfef2bdd 100644
--- a/wally-pipelined/testbench/fp/i64_f32_rd.tv
+++ b/wally-pipelined/testbench/fp/i64_f32_rd.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 5CFFFFBF_01
-0000000032CC8B7A 4E4B322D_01
-0000000000000000 00000000_00
-FFFFFFFFC0003FFE CE7FFF01_01
-032C857F319EDE38 5C4B215F_01
-0000000000000001 3F800000_00
-FFFFFBFFFFF8003E D4800001_01
-00394C79B6D3007B 5A6531E6_01
-0000000000000002 40000000_00
-FBFFFFF0000001FF DC800002_01
-0000000001AE458D 4BD722C6_01
-0000000000000004 40800000_00
-00040008000007FE 58800100_01
-F9EB456140D88764 DCC29754_01
-0000000000000008 41000000_00
-FFFFE400FFFFFFFE D5DFF801_01
-07DE834A248EDF36 5CFBD069_01
-0000000000000010 41800000_00
-00000003FF001FFF 507FC007_01
-FFFFFFFFFFE385E2 C9E3D0F0_00
-0000000000000020 42000000_00
-F0041FFFFFFFFFFF DD7FBE01_01
-000000059EB1FD45 50B3D63F_01
-0000000000000040 42800000_00
-FFFFFFFFFFFCFFF9 C84001C0_00
-FFFFFFFFFFFEDDFE C7910100_00
-0000000000000080 43000000_00
-000000000003FF00 487FC000_00
-00000000C89FF56B 4F489FF5_01
-0000000000000100 43800000_00
-000FFFFF7FDFFFFF 597FFFF7_01
-1B5E4F0BE0DEBFF0 5DDAF278_01
-0000000000000200 44000000_00
-FFFDF803FFFFFFFF D801FF01_01
-FFFFFFFFFFF4766B C9389950_00
-0000000000000400 44800000_00
-0000080100000FFE 55001000_01
-000000000000000C 41400000_00
-0000000000000800 45000000_00
-0048000000100000 5A900000_01
-FFE662A109109D0A D9CCEAF8_01
-0000000000001000 45800000_00
-C000000037FFFFFE DE800000_01
-FFFFFFFFFFFFFFE4 C1E00000_00
-0000000000002000 46000000_00
-F801000000100000 DCFFE000_01
-FE114B79075F70EE DBF75A44_01
-0000000000004000 46800000_00
-100000000001003E 5D800000_01
-00000000000003AC 446B0000_00
-0000000000008000 47000000_00
-200000FFFFFFF800 5E000003_01
-00000044A3A3DBE5 52894747_01
-0000000000010000 47800000_00
-FFE0003EFFFFFFFF D9FFFE09_01
-FFFFFFFFFFFF1A91 C7656F00_00
-0000000000020000 48000000_00
-FFFFF7C3FFFFFFFD D503C001_01
-0000000000003309 464C2400_00
-0000000000040000 48800000_00
-000083FFF7FFFFFE 5703FFF7_01
-FFFFFFFFFFFFFF58 C3280000_00
-0000000000080000 49000000_00
-FFFFFFDE01FFFFFE D207F801_01
-0000000000002980 46260000_00
-0000000000100000 49800000_00
-00000000FFF07FFF 4F7FF07F_01
-000000000000005D 42BA0000_00
-0000000000200000 4A000000_00
-000020FFDFFFFFFF 5603FF7F_01
-FFFC8C23DA2CEAD8 D85CF70A_01
-0000000000400000 4A800000_00
-E0000000003FFFDF DE000000_01
-FFFFFDE3C1DEC43C D4070F89_01
-0000000000800000 4B000000_00
-FFFF00000BFFFFFD D77FFFF5_01
-000000000030FFBE 4A43FEF8_00
-0000000001000000 4B800000_00
-FFFE000007FFEFFD D7FFFFFD_01
-FFFFFFFFEFDEED86 CD810894_01
-0000000002000000 4C000000_00
-F3FFFFFFFFBFFFFE DD400001_01
-000000001DA3FF45 4DED1FFA_01
-0000000004000000 4C800000_00
-FFFFFFFF00010007 CF7FFF00_01
-FFFFFFFE9B1BCB54 CFB2721B_01
-0000000008000000 4D000000_00
-00004000004001FE 56800000_01
-F27DD19DE6563714 DD5822E7_01
-0000000010000000 4D800000_00
-FFC00000004007FE DA800000_01
-000000000001A359 47D1AC80_00
-0000000020000000 4E000000_00
-0000000003C000FE 4C70003F_01
-FFFFFFFFFE62EC20 CBCE89F0_00
-0000000040000000 4E800000_00
-000000003FFFFFFD 4E7FFFFF_01
-000000000000285F 46217C00_00
-0000000080000000 4F000000_00
-FFFFFFFFBFFFF00F CE800020_01
-FFFFF836F99DBAA8 D4F920CD_01
-0000000100000000 4F800000_00
-00000020003FFEFE 520000FF_01
-0033466832042D47 5A4D19A0_01
-0000000200000000 50000000_00
-FFFFFFFFFFFFF887 C4EF2000_00
-00000000003829C8 4A60A720_00
-0000000400000000 50800000_00
-00000FFFFFFF7DFD 557FFFFF_01
-0000000FB77C672B 517B77C6_01
-0000000800000000 51000000_00
-08003FFDFFFFFFFE 5D0003FF_01
-0000000000001B78 45DBC000_00
-0000001000000000 51800000_00
-FF7FFFFFFFEFDFFF DB000001_01
-0000000000000071 42E20000_00
-0000002000000000 52000000_00
-000013FFFFFFFDFF 559FFFFF_01
-FFFFFFFFFFFFFF86 C2F40000_00
-0000004000000000 52800000_00
-0800000000040800 5D000000_01
-FFF8A60D9E19F17E D8EB3E4D_01
-0000008000000000 53000000_00
-000077FFF0000000 56EFFFE0_00
-FFFFFFFFF7506DBA CD0AF925_01
-0000010000000000 53800000_00
-FFFFFFFFFFFEFBF7 C7820480_00
-FFFFFFFFFEA42AC9 CBADEA9C_01
-0000020000000000 54000000_00
-0000107FFFFFDFFD 5583FFFF_01
-FFE7AA3F2BDACC89 D9C2AE07_01
-0000040000000000 54800000_00
-FFF8040000040000 D8FF8000_01
-FFFFFFFFFFFFFFFD C0400000_00
-0000080000000000 55000000_00
-FFFF80000800001F D6FFFFF0_01
-FFFDF681DECDADC9 D8025F89_01
-0000100000000000 55800000_00
-FFFFFEFFFFE0007F D3800010_01
-FFFFFFFFFFFFCFBE C6410800_00
-0000200000000000 56000000_00
-0000000901FFFFFD 51101FFF_01
-FEC01FECA24DE1B0 DB9FF00A_01
-0000400000000000 56800000_00
-F7FFFFFFDFFF7FFF DD000001_01
-F858A66761669936 DCF4EB34_01
-0000800000000000 57000000_00
-FFFEFF800000003E D7804000_01
-F716EA43FAC45C97 DD0E915C_01
-0001000000000000 57800000_00
-FFFFFFFFFFFFFFC6 C2680000_00
-0024D70EC7661FD8 5A135C3B_01
-0002000000000000 58000000_00
-C07FFFFFFFFFFFFE DE7E0001_01
-FFD956DBD0AEE817 DA1AA491_01
-0004000000000000 58800000_00
-020003EFFFFFFFFE 5C0000FB_01
-FFFFFFFFFFFF4300 C73D0000_00
-0008000000000000 59000000_00
-4000000004002000 5E800000_01
-C12EDF40F41F6021 DE7B4483_01
-0010000000000000 59800000_00
-FF9000000000001D DAE00000_01
-FFFFFFF83DE950F6 D0F842D6_01
-0020000000000000 5A000000_00
-800003FFFFFC0000 DEFFFFF9_01
-FE2B59CB3A604D69 DBEA531B_01
-0040000000000000 5A800000_00
-7FFFFFFDFFFFBFFF 5EFFFFFF_01
-000000A37C210862 53237C21_01
-0080000000000000 5B000000_00
-0002000002000002 58000000_01
-FFFFB65CD8617789 D6934650_01
-0100000000000000 5B800000_00
-00001BFFFFFFBFFE 55DFFFFF_01
-FFFFFFFFFFFFF01D C57E3000_00
-0200000000000000 5C000000_00
-1000008000003FFF 5D800004_01
-000000000D098D19 4D5098D1_01
-0400000000000000 5C800000_00
-03FFFFFFFFFFF5FF 5C7FFFFF_01
-000006B3BD2C7BEF 54D677A5_01
-0800000000000000 5D000000_00
-00003FFFBFFFFFFE 567FFEFF_01
-FFFF4E5ADDDAA4A8 D731A523_01
-1000000000000000 5D800000_00
-001FFFC000000FFD 59FFFE00_01
-FFFFFFFFFFFFFF21 C35F0000_00
-2000000000000000 5E000000_00
-0000000041DFFFFF 4E83BFFF_01
-FFFFFFFFFC648262 CC66DF68_01
-4000000000000000 5E800000_00
-C0001FFFFFFFFFFB DE7FFF81_01
-FFFFFF7353AC45D2 D30CAC54_01
-8000000000000000 DF000000_00
-FFFFFFFFFFE7EFFF C9C08008_00
-0000000000A1202D 4B21202D_00
-C000000000000000 DE800000_00
-FFFFFFFFFFFF5F7F C7208100_00
-000000000040CA70 4A8194E0_00
-E000000000000000 DE000000_00
-0000200201FFFFFE 56000807_01
-00000003B55D87D4 506D5761_01
-F000000000000000 DD800000_00
-FF80000DFFFFFFFF DAFFFFE5_01
-000000010510FAEF 4F82887D_01
-F800000000000000 DD000000_00
-0003FFF00000000F 587FFC00_01
-000000000000724A 46E49400_00
-FC00000000000000 DC800000_00
-FFFFFFDF80000002 D2020000_01
-0000000000000064 42C80000_00
-FE00000000000000 DC000000_00
-FEFFFFFFFFF800FE DB800001_01
-FFFFFFC2C6222702 D274E778_01
-FF00000000000000 DB800000_00
-0000000408000002 50810000_01
-000000E96DF1CB41 53696DF1_01
-FF80000000000000 DB000000_00
-007FFFFFFFFFF9FE 5AFFFFFF_01
-F727F174DEE7DC85 DD0D80E9_01
-FFC0000000000000 DA800000_00
-8000000003FFFEFE DF000000_01
-FFFFFFFFFFF0BD5B C9742A50_00
-FFE0000000000000 DA000000_00
-0BEFFFFFFFFFFFFF 5D3EFFFF_01
-000000000002790C 481E4300_00
-FFF0000000000000 D9800000_00
-FFFFFFFFFFEFFBFA C9802030_00
-000000169E75DF01 51B4F3AE_01
-FFF8000000000000 D9000000_00
-00000007FEFFDFFF 50FFDFFB_01
-000000000000000E 41600000_00
-FFFC000000000000 D8800000_00
-0003FFFE0007FFFE 587FFF80_01
-FFFFFFFFFFF28622 C9579DE0_00
-FFFE000000000000 D8000000_00
-FFFFFF7FFFFDF7FF D3000003_01
-00072F0EC496FE21 58E5E1D8_01
-FFFF000000000000 D7800000_00
-DFBFFFFFFFFFFFFE DE010001_01
-0000000000FC1FCA 4B7C1FCA_00
-FFFF800000000000 D7000000_00
-00000FFF800FFFFE 557FF800_01
-FFFF5194E4A9C2CE D72E6B1C_01
-FFFFC00000000000 D6800000_00
-00000002100007FD 50040001_01
-FFFFFFFFFFC2D8FE CA749C08_00
-FFFFE00000000000 D6000000_00
-000000000007FF6E 48FFEDC0_00
-000000000001766E 47BB3700_00
-FFFFF00000000000 D5800000_00
-0040000400000002 5A800008_01
-0000000000007841 46F08200_00
-FFFFF80000000000 D5000000_00
-3DFFFFFFFFFFFF7E 5E77FFFF_01
-FFFFFFE549E17E30 D1D5B0F5_01
-FFFFFC0000000000 D4800000_00
-FFFFFFFFFFFFFEE1 C38F8000_00
-FFFFFFFFFFFFFFE7 C1C80000_00
-FFFFFE0000000000 D4000000_00
-000000000EFFFFDF 4D6FFFFD_01
-FFFFFFFFFFFFFF73 C30D0000_00
-FFFFFF0000000000 D3800000_00
-FD00000008000000 DC400000_01
-000000000001DBB1 47EDD880_00
-FFFFFF8000000000 D3000000_00
-FFFFFFFFFFF8007F C8FFF020_00
-FFFFFFFEFD10A515 CF8177AE_01
-FFFFFFC000000000 D2800000_00
-FFEFFFFFFFFFFFFE D9800001_01
-FAB02984F6283B6C DCA9FAD0_01
-FFFFFFE000000000 D2000000_00
-FFFFFFBC000001FE D2880000_01
-FEB087C6B9FE7FE0 DBA7BC1D_01
-FFFFFFF000000000 D1800000_00
-FFF80001000007FE D8FFFFE0_01
-00F2762EA6837956 5B72762E_01
-FFFFFFF800000000 D1000000_00
-FFF7E0FFFFFFFFFE D901F001_01
-00002E1175484626 563845D5_01
-FFFFFFFC00000000 D0800000_00
-0000200020000FFE 56000080_01
-000000000000068F 44D1E000_00
-FFFFFFFE00000000 D0000000_00
-021FFFFFFFFBFFFF 5C07FFFF_01
-FFFFFFFFFFFFFFF9 C0E00000_00
-FFFFFFFF00000000 CF800000_00
-FFFFFFD0000FFFFD D23FFFC1_01
-000000BDF6658B83 533DF665_01
-FFFFFFFF80000000 CF000000_00
-1000001FFDFFFFFF 5D800000_01
-0000000000003B5B 466D6C00_00
-FFFFFFFFC0000000 CE800000_00
-FFFFFFBFFE0FFFFF D28003E1_01
-FFFFFFFFFFFFFFF0 C1800000_00
-FFFFFFFFE0000000 CE000000_00
-FFFFFFFBF00007FF D0820000_01
-01E986274F48EAAD 5BF4C313_01
-FFFFFFFFF0000000 CD800000_00
-1FFFFFFDFFFFFF7F 5DFFFFFF_01
-FFFFFFFFFFFFCB5A C6529800_00
-FFFFFFFFF8000000 CD000000_00
-7FF000000000FFFF 5EFFE000_01
-00000003C2717FC3 50709C5F_01
-FFFFFFFFFC000000 CC800000_00
-FFFFFFE00008001F D1FFFFC0_01
-FFFFFFFFFFEFABDA C982A130_00
-FFFFFFFFFE000000 CC000000_00
-0200000000000002 5C000000_01
-FFFFFFFFF8FDA53F CCE04B59_01
-FFFFFFFFFF000000 CB800000_00
-F6000003FFFFFFFE DD200000_01
-FFFFFFFFFFFFFFD0 C2400000_00
-FFFFFFFFFF800000 CB000000_00
-FFFFFFFFFFBFFF7E CA800104_00
-00000000EE0FEA62 4F6E0FEA_01
-FFFFFFFFFFC00000 CA800000_00
-0000007FFF9FFFFD 52FFFF3F_01
-00000037F35EDC1D 525FCD7B_01
-FFFFFFFFFFE00000 CA000000_00
-FFFFFFF7FDFFFF7D D1002001_01
-00000000000001AD 43D68000_00
-FFFFFFFFFFF00000 C9800000_00
-FFFFFF0000100020 D37FFFF0_01
-27F167FBC7FC5F9A 5E1FC59F_01
-FFFFFFFFFFF80000 C9000000_00
-003FFFFFFFFC0001 5A7FFFFF_01
-000E48F9F4EBD30E 59648F9F_01
-FFFFFFFFFFFC0000 C8800000_00
-DFFFFFFFFFFBFFFE DE000001_01
-FC91C23EE8C9424F DC5B8F71_01
-FFFFFFFFFFFE0000 C8000000_00
-F7DFFBFFFFFFFFFE DD020041_01
-000000002CAE080C 4E32B820_01
-FFFFFFFFFFFF0000 C7800000_00
-FFFFC00010000020 D67FFFC0_01
-04D921F917B20E40 5C9B243F_01
-FFFFFFFFFFFF8000 C7000000_00
-F8000FFFFFFFFFFD DCFFFE01_01
-FFF17C566BC7D811 D9683A9A_01
-FFFFFFFFFFFFC000 C6800000_00
-00000000000000FE 437E0000_00
-FFF82AC14930D386 D8FAA7D7_01
-FFFFFFFFFFFFE000 C6000000_00
-00000000000003FC 447F0000_00
-000E62EC60E119FC 59662EC6_01
-FFFFFFFFFFFFF000 C5800000_00
-FFFFEFF7FF7FFFFE D5804005_01
-0E2B1ECF210EEDC5 5D62B1EC_01
-FFFFFFFFFFFFF800 C5000000_00
-00000000007FFF1F 4AFFFE3E_00
-FFFFFE534F5676F7 D3D65855_01
-FFFFFFFFFFFFFC00 C4800000_00
-0000001004FFFFFD 518027FF_01
-0000035C939669F1 545724E5_01
-FFFFFFFFFFFFFE00 C4000000_00
-1FFFFFFFFFFFFDFD 5DFFFFFF_01
-FFFFFFFFFFFFFF91 C2DE0000_00
-FFFFFFFFFFFFFF00 C3800000_00
-01FFFFFFFBFFEFFE 5BFFFFFF_01
-000000000000016E 43B70000_00
-FFFFFFFFFFFFFF80 C3000000_00
-FFF7FFFFFFFFF7FD D9000001_01
-FFFFF8E2BCFAC553 D4E3A861_01
-FFFFFFFFFFFFFFC0 C2800000_00
-FFFFFBFFFFFE0FFE D4800001_01
-00000001A4E704BF 4FD27382_01
-FFFFFFFFFFFFFFE0 C2000000_00
-1400007FFFFFFFFD 5DA00003_01
-FFFFFFFC93B187B4 D05B139F_01
-FFFFFFFFFFFFFFF0 C1800000_00
-40000000007FFFFD 5E800000_01
-000000000067D468 4ACFA8D0_00
-FFFFFFFFFFFFFFF8 C1000000_00
-007FFEFFFFFBFFFE 5AFFFDFF_01
-FFFFFFE26CEC79F8 D1EC989D_01
-FFFFFFFFFFFFFFFC C0800000_00
-00FFFFFF000000FF 5B7FFFFF_01
-FFFFFFFFE0D3983A CDF9633F_01
-FFFFFFFFFFFFFFFE C0000000_00
-00007FFFBFFF7FFE 56FFFF7F_01
-FFFFFFFDF4A7088A D002D63E_01
-FFFFFFFFFFFFFFFF BF800000_00
-000008000000027E 55000000_01
-000000000000F4E8 4774E800_00
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFF83FFDF CAF80042_00
-00000E11407887B2 55611407_01
-FFFFFFFFFFFFFFFB C0A00000_00
-04000003FFFFFFF6 5C800000_01
-0000000000000513 44A26000_00
-FFFFFFFFFFFFFFF7 C1100000_00
-BFFC00000000003E DE800800_01
-00000008D7BBB75B 510D7BBB_01
-FFFFFFFFFFFFFFEF C1880000_00
-000FFFFBFFFC0000 597FFFBF_01
-FFFFFFFFFFCD5A23 CA4A9774_00
-FFFFFFFFFFFFFFDF C2040000_00
-FFBFDFFFBFFFFFFF DA804001_01
-000000000000007F 42FE0000_00
-FFFFFFFFFFFFFFBF C2820000_00
-00000007FF800003 50FFF000_01
-000000000002BB02 482EC080_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEE7FF C78C0080_00
-00264B2B9BAD0DA2 5A192CAE_01
-FFFFFFFFFFFFFEFF C3808000_00
-0000000000100803 49804018_00
-FF9B1DCB9F857D5E DAC9C469_01
-FFFFFFFFFFFFFDFF C4004000_00
-FFFFFFBFFFFFEFEE D2800001_01
-F6FD7542899C1C6F DD1028AC_01
-FFFFFFFFFFFFFBFF C4802000_00
-FF800000004001FF DB000000_01
-0000000002BE4932 4C2F924C_01
-FFFFFFFFFFFFF7FF C5001000_00
-00001004000FFFFE 55802000_01
-FFFFFF9DAA0123E0 D2C4ABFE_01
-FFFFFFFFFFFFEFFF C5800800_00
-00000001FDFFFDFE 4FFEFFFE_01
-FFFC1C8703B1DCB0 D878DE40_01
-FFFFFFFFFFFFDFFF C6000400_00
-FE0FE00000000000 DBF81000_00
-0779ED944A4E2779 5CEF3DB2_01
-FFFFFFFFFFFFBFFF C6800200_00
-FBFFFE0400000000 DC800040_01
-0000010127E03666 538093F0_01
-FFFFFFFFFFFF7FFF C7000100_00
-FFFFF0200000FFFE D57E0000_01
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEFFFF C7800080_00
-FFEFFE0000080000 D9801000_01
-FFFFFFFFFD3354EA CC332AC6_01
-FFFFFFFFFFFDFFFF C8000040_00
-003FF0000003FFFE 5A7FC000_01
-0000006375B23F7B 52C6EB64_01
-FFFFFFFFFFFBFFFF C8800020_00
-000407FFFFFFFFF6 5880FFFF_01
-0000000092117F38 4F12117F_01
-FFFFFFFFFFF7FFFF C9000010_00
-FFFFFFFFFFFF7FFF C7000100_00
-00000000000008BE 450BE000_00
-FFFFFFFFFFEFFFFF C9800008_00
-004000020FFFFFFF 5A800004_01
-FFFFB84C2D8BC9CB D68F67A5_01
-FFFFFFFFFFDFFFFF CA000004_00
-00FFFFFFFFFFFFFD 5B7FFFFF_01
-00000023C2C6F284 520F0B1B_01
-FFFFFFFFFFBFFFFF CA800002_00
-FFFDDFFFFFFFFFFD D8080001_01
-00000000746356C4 4EE8C6AD_01
-FFFFFFFFFF7FFFFF CB000001_00
-010000000000BFFF 5B800000_01
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFEFFFFFF CB800001_01
-FFFFBF7FFBFFFFFE D6810009_01
-00000006386CE889 50C70D9D_01
-FFFFFFFFFDFFFFFF CC000001_01
-F00000F7FFFFFFFF DD7FFFF1_01
-FFFDFC53090C46A4 D800EB3E_01
-FFFFFFFFFBFFFFFF CC800001_01
-0000000000800047 4B000047_00
-FFFFFFFFD693872E CE25B1E4_01
-FFFFFFFFF7FFFFFF CD000001_01
-000000007FBFFBFF 4EFF7FF7_01
-00000026A7845E35 521A9E11_01
-FFFFFFFFEFFFFFFF CD800001_01
-FFFFFFDFFFFFFBFD D2000001_01
-000000001433D14C 4DA19E8A_01
-FFFFFFFFDFFFFFFF CE000001_01
-0001FFFFFFE0000E 57FFFFFF_01
-F0F23E8068D3D84A DD70DC18_01
-FFFFFFFFBFFFFFFF CE800001_01
-F7FFBFFFFFFFBFFF DD000401_01
-FFFFBD29B7459087 D685AC92_01
-FFFFFFFF7FFFFFFF CF000001_01
-FFFFFFF8FFFFBFFF D0E00009_01
-FFFFFFFFFFEDDC06 C9911FD0_00
-FFFFFFFEFFFFFFFF CF800001_01
-FFFFFFF80001FFFF D0FFFFC1_01
-0000000000002FF9 463FE400_00
-FFFFFFFDFFFFFFFF D0000001_01
-004000040000FFFF 5A800008_01
-FFFFFFFFFFFFFFF1 C1700000_00
-FFFFFFFBFFFFFFFF D0800001_01
-C0000000007FFFFA DE800000_01
-FFFFFFFFFE053E2B CBFD60EB_01
-FFFFFFF7FFFFFFFF D1000001_01
-7FFE000007FFFFFF 5EFFFC00_01
-000000000000000D 41500000_00
-FFFFFFEFFFFFFFFF D1800001_01
-F80000000001007E DD000000_01
-FFFFED48424AD9D6 D595BDEE_01
-FFFFFFDFFFFFFFFF D2000001_01
-FFFFFE0001FEFFFF D3FFFF01_01
-000000000000013B 439D8000_00
-FFFFFFBFFFFFFFFF D2800001_01
-0007FBFFFFFDFFFE 58FF7FFF_01
-4A16BD4128090C83 5E942D7A_01
-FFFFFF7FFFFFFFFF D3000001_01
-00FFF7FFFF7FFFFE 5B7FF7FF_01
-0000000000000006 40C00000_00
-FFFFFEFFFFFFFFFF D3800001_01
-FBFFFFBFFFBFFFFF DC800009_01
-00000000000001BA 43DD0000_00
-FFFFFDFFFFFFFFFF D4000001_01
-0000000040000082 4E800001_01
-FF07A2BF5B689F89 DB785D41_01
-FFFFFBFFFFFFFFFF D4800001_01
-0000001FF8000008 51FFC000_01
-F87CAA7DE672DE8B DCF06AB1_01
-FFFFF7FFFFFFFFFF D5000001_01
-07FFF80000000002 5CFFFF00_01
-0000000010A1E5B8 4D850F2D_01
-FFFFEFFFFFFFFFFF D5800001_01
-F7FFFFE00007FFFF DD000002_01
-FFFFFFFFFFF6ADFC C9152040_00
-FFFFDFFFFFFFFFFF D6000001_01
-FFFFFF03FFFFFFC0 D37C0001_01
-EA579475948F0032 DDAD435D_01
-FFFFBFFFFFFFFFFF D6800001_01
-FC00000000003FF6 DC800000_01
-002E677AC313BF60 5A399DEB_01
-FFFF7FFFFFFFFFFF D7000001_01
-02000007FF7FFFFF 5C000001_01
-0000000E999639F1 51699963_01
-FFFEFFFFFFFFFFFF D7800001_01
-FFFF83FFFFFFFFBE D6F80001_01
-000000000001537D 47A9BE80_00
-FFFDFFFFFFFFFFFF D8000001_01
-EFFFFFC00000003D DD800002_01
-FFFFFFF21FEDFD35 D15E0121_01
-FFFBFFFFFFFFFFFF D8800001_01
-FFFFFFF0000007FE D1800000_01
-FFFFFFFFFFDE0839 CA07DF1C_00
-FFF7FFFFFFFFFFFF D9000001_01
-0000007FFFE000FF 52FFFFC0_01
-FFFFFFFF79F30F48 CF060CF1_01
-FFEFFFFFFFFFFFFF D9800001_01
-FFFFFC13FFFFFFFD D47B0001_01
-0000000000001B85 45DC2800_00
-FFDFFFFFFFFFFFFF DA000001_01
-000008000007FFFE 55000000_01
-12DB4409E5AE87E6 5D96DA20_01
-FFBFFFFFFFFFFFFF DA800001_01
-FFFFFFFFFFF7BFEE C9040120_00
-FFFFFFFFFFFFFFFD C0400000_00
-FF7FFFFFFFFFFFFF DB000001_01
-000000001040FFFE 4D8207FF_01
-00000909A09C13D3 55109A09_01
-FEFFFFFFFFFFFFFF DB800001_01
-FFFFFF01FFFFFF7F D37E0001_01
-FFFFFF72E7D2575D D30D182E_01
-FDFFFFFFFFFFFFFF DC000001_01
-FFFFFFFFFFFEFFDB C7801280_00
-0000000000000017 41B80000_00
-FBFFFFFFFFFFFFFF DC800001_01
-100000001FFFFFF6 5D800000_01
-000000114B12EF51 518A5897_01
-F7FFFFFFFFFFFFFF DD000001_01
-0407FFFFFFFFFEFF 5C80FFFF_01
-FFFFFF769F3A5C2C D30960C6_01
-EFFFFFFFFFFFFFFF DD800001_01
-FFFFFFFDF7FFFFFD D0020001_01
-FFFFFFFFFFFFFFF2 C1600000_00
-DFFFFFFFFFFFFFFF DE000001_01
-FFFFFFFFFE0007FF CBFFFC01_01
-000000000000001E 41F00000_00
-BFFFFFFFFFFFFFFF DE800001_01
-FFF800000009FFFF D9000000_01
-0000000000007AA4 46F54800_00
-7FFFFFFFFFFFFFFF 5EFFFFFF_01
-4080000000FFFFFF 5E810000_01
-000000000DE7601D 4D5E7601_01
-3FFFFFFFFFFFFFFF 5E7FFFFF_01
-FFCFFFFFFFBFFFFE DA400001_01
-FFFFFFFFFFFFFFCA C2580000_00
-1FFFFFFFFFFFFFFF 5DFFFFFF_01
-000080400000003F 57004000_01
-00000000001F75A5 49FBAD28_00
-0FFFFFFFFFFFFFFF 5D7FFFFF_01
-FFFFFFEFFFFFCFFE D1800002_01
-FFFFFEE775887420 D38C453C_01
-07FFFFFFFFFFFFFF 5CFFFFFF_01
-00000000000801FE 49001FE0_00
-0000000000213FF1 4A04FFC4_00
-03FFFFFFFFFFFFFF 5C7FFFFF_01
-07FEFFFFFFFFFFEE 5CFFDFFF_01
-0000000000000004 40800000_00
-01FFFFFFFFFFFFFF 5BFFFFFF_01
-0000000820000003 51020000_01
-FFFFFFF9AD105214 D0CA5DF6_01
-00FFFFFFFFFFFFFF 5B7FFFFF_01
-FFFFF00FFFFFFFBE D57F0001_01
-FFFFFFFFFFCC48E7 CA4EDC64_00
-007FFFFFFFFFFFFF 5AFFFFFF_01
-00000FFFEF7FFFFF 557FFEF7_01
-FFFFFFFFFF0BA6CB CB745935_00
-003FFFFFFFFFFFFF 5A7FFFFF_01
-FFFFFF7FBFFFFFBF D3004001_01
-FFFFFFFFFFF24425 C95BBDB0_00
-001FFFFFFFFFFFFF 59FFFFFF_01
-200000001FFBFFFF 5E000000_01
-FFFFFF4E7115EC53 D3318EEB_01
-000FFFFFFFFFFFFF 597FFFFF_01
-FFFFF803FFFFFFBF D4FF8001_01
-FFFFFC2E539ADCFE D4746B1A_01
-0007FFFFFFFFFFFF 58FFFFFF_01
-FFFFFFFFFBFFFFFF CC800001_01
-00000055084732F3 52AA108E_01
-0003FFFFFFFFFFFF 587FFFFF_01
-BFFF7FFFFFFFFE00 DE800101_01
-FFFFFFFFFFFF8543 C6F57A00_00
-0001FFFFFFFFFFFF 57FFFFFF_01
-0000001FFBFFE000 51FFDFFF_00
-FFFFFFFFFFFE491B C7DB7280_00
-0000FFFFFFFFFFFF 577FFFFF_01
-FC00200000001FFE DC7FF800_01
-FFFFF16898822A24 D5697678_01
-00007FFFFFFFFFFF 56FFFFFF_01
-3FFF03FFFFFFFFFE 5E7FFC0F_01
-FFFFFF8FFE18C7BF D2E003CF_01
-00003FFFFFFFFFFF 567FFFFF_01
-FFFFFEFFFEFFFFFD D3800081_01
-00F03620C1266ED9 5B703620_01
-00001FFFFFFFFFFF 55FFFFFF_01
-BF7EFFFFFFFFFFFF DE810201_01
-FFFFFFFFFFFFFFD5 C22C0000_00
-00000FFFFFFFFFFF 557FFFFF_01
-FFFBFFFFF803FFFE D8800001_01
-0000000000068684 48D0D080_00
-000007FFFFFFFFFF 54FFFFFF_01
-DFFFFFE00000001E DE000001_01
-FFFFFFFFFFFFECF5 C5985800_00
-000003FFFFFFFFFF 547FFFFF_01
-FFFF00400000FFFF D77FC000_01
-0000000000000002 40000000_00
-000001FFFFFFFFFF 53FFFFFF_01
-FBFFFFFFFFFFBDFE DC800001_01
-0000000000000BC9 453C9000_00
-000000FFFFFFFFFF 537FFFFF_01
-807FFFFFFFFFDFFE DEFF0001_01
-FFC274E35A70CD76 DA762C73_01
-0000007FFFFFFFFF 52FFFFFF_01
-0FFFFFFFFEFFFFFD 5D7FFFFF_01
-FFFFFFFF00E73AFC CF7F18C6_01
-0000003FFFFFFFFF 527FFFFF_01
-FFC000000001000E DA800000_01
-FFFFFFFFFFFE15E9 C7F50B80_00
-0000001FFFFFFFFF 51FFFFFF_01
-0001FFFFFFFFF3FD 57FFFFFF_01
-0000000000000033 424C0000_00
-0000000FFFFFFFFF 517FFFFF_01
-000000001FFFBFFF 4DFFFDFF_01
-FFFFFFEE6B141E1B D18CA760_01
-00000007FFFFFFFF 50FFFFFF_01
-FFFFFFFFF60007FF CD1FFF81_01
-00000001AB310BA6 4FD59885_01
-00000003FFFFFFFF 507FFFFF_01
-0003FFFFB7FFFFFF 587FFFED_01
-FFFFFFFFFFFFF195 C566B000_00
-00000001FFFFFFFF 4FFFFFFF_01
-FFFFFFFF8000000B CF000000_01
-00000019BA8D5559 51CDD46A_01
-00000000FFFFFFFF 4F7FFFFF_01
-FBFEFFFFFFFFFFF9 DC802001_01
-FFFFFFB6F062822D D2921F3B_01
-000000007FFFFFFF 4EFFFFFF_01
-0001000000000082 57800000_01
-01CEAD9E2FB104A4 5BE756CF_01
-000000003FFFFFFF 4E7FFFFF_01
-000003FFFFFFFF7C 547FFFFF_01
-FFFFFFFFFD681E78 CC25F862_00
-000000001FFFFFFF 4DFFFFFF_01
-00002000400001FF 56000100_01
-0000000000000018 41C00000_00
-000000000FFFFFFF 4D7FFFFF_01
-3FFF80000000003E 5E7FFE00_01
-FFFFFFFFFFFFFF95 C2D60000_00
-0000000007FFFFFF 4CFFFFFF_01
-010000BFFFFFFFFF 5B80005F_01
-0000001697087B19 51B4B843_01
-0000000003FFFFFF 4C7FFFFF_01
-FBFFFFFFFFEEFFFD DC800001_01
-0000000E64BDFC55 51664BDF_01
-0000000001FFFFFF 4BFFFFFF_01
-FC00000001FFFFFE DC800000_01
-FFFED156A62AB849 D79754AD_01
-0000000000FFFFFF 4B7FFFFF_00
-FFFFFFF83FEFFFFD D0F80201_01
-00015354EAE7C259 57A9AA75_01
-00000000007FFFFF 4AFFFFFE_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFF0F4DF3C75 D170B20D_01
-00000000003FFFFF 4A7FFFFC_00
-FFFA000000001FFF D8C00000_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000001FFFFF 49FFFFF8_00
-FFFFFFFFFF7FFE40 CB0001C0_00
-FFFFFFDB5433CB9B D212AF31_01
-00000000000FFFFF 497FFFF0_00
-FFFFFDFFDFFDFFFD D4000801_01
-FFFFFFFFFFDEAE1F CA054784_00
-000000000007FFFF 48FFFFE0_00
-FFFFFFFFF0080006 CD7F8000_01
-FFFFFFFE7735DEC7 CFC46511_01
-000000000003FFFF 487FFFC0_00
-00000001FBFFFFFF 4FFDFFFF_01
-000003757D8B12ED 545D5F62_01
-000000000001FFFF 47FFFF80_00
-FFFFFE07F7FFFFFF D3FC0401_01
-00000A654064E046 55265406_01
-000000000000FFFF 477FFF00_00
-08000000000017FF 5D000000_01
-FFFFFFFFFFFFFFE7 C1C80000_00
-0000000000007FFF 46FFFE00_00
-07FFFFFFFFFFFDF6 5CFFFFFF_01
-FFFFAD78B3D6C3B6 D6A50E99_01
-0000000000003FFF 467FFC00_00
-0000300004000000 56400010_00
-FFFFFFF70B77F34F D10F4881_01
-0000000000001FFF 45FFF800_00
-FFFFFF80006FFFFE D2FFFF21_01
-0000013EB4D67EC8 539F5A6B_01
-0000000000000FFF 457FF000_00
-BFFFDFFFFBFFFFFF DE800041_01
-0005CEAF34EA1DC7 58B9D5E6_01
-00000000000007FF 44FFE000_00
-00004800007FFFFD 56900000_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000000003FF 447FC000_00
-0000000200001000 50000004_00
-00000000000360D0 48583400_00
-00000000000001FF 43FF8000_00
-01003FFFFFFFFFFC 5B801FFF_01
-00C000708FF1BA51 5B400070_01
-00000000000000FF 437F0000_00
-F802000003FFFFFF DCFFC000_01
-0F9E07DCC0BDC061 5D79E07D_01
-000000000000007F 42FE0000_00
-03FF0000000000FF 5C7FC000_01
-FFFFFFE1B9B2A079 D1F2326B_01
-000000000000003F 427C0000_00
-FFF80000000080FF D9000000_01
-00000000001EB5B4 49F5ADA0_00
-000000000000001F 41F80000_00
-000000000077FBFE 4AEFF7FC_00
-00000000005AC607 4AB58C0E_00
-000000000000000F 41700000_00
-FFFFFFFEF80000FF CF840000_01
-000005C5B9D66984 54B8B73A_01
-0000000000000007 40E00000_00
-C001FFFFFFF00000 DE7FF801_01
-00001D06B372AA06 55E8359B_01
-0000000000000003 40400000_00
+07FFFDFFFFFFFF7F_5CFFFFBF_01
+0000000032CC8B7A_4E4B322D_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_CE7FFF01_01
+032C857F319EDE38_5C4B215F_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_D4800001_01
+00394C79B6D3007B_5A6531E6_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_DC800002_01
+0000000001AE458D_4BD722C6_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+F9EB456140D88764_DCC29754_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_D5DFF801_01
+07DE834A248EDF36_5CFBD069_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC007_01
+FFFFFFFFFFE385E2_C9E3D0F0_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_DD7FBE01_01
+000000059EB1FD45_50B3D63F_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_C84001C0_00
+FFFFFFFFFFFEDDFE_C7910100_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000000C89FF56B_4F489FF5_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF7_01
+1B5E4F0BE0DEBFF0_5DDAF278_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_D801FF01_01
+FFFFFFFFFFF4766B_C9389950_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000000C_41400000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+FFE662A109109D0A_D9CCEAF8_01
+0000000000001000_45800000_00
+C000000037FFFFFE_DE800000_01
+FFFFFFFFFFFFFFE4_C1E00000_00
+0000000000002000_46000000_00
+F801000000100000_DCFFE000_01
+FE114B79075F70EE_DBF75A44_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+00000000000003AC_446B0000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000003_01
+00000044A3A3DBE5_52894747_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_D9FFFE09_01
+FFFFFFFFFFFF1A91_C7656F00_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_D503C001_01
+0000000000003309_464C2400_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF7_01
+FFFFFFFFFFFFFF58_C3280000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_D207F801_01
+0000000000002980_46260000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF07F_01
+000000000000005D_42BA0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF7F_01
+FFFC8C23DA2CEAD8_D85CF70A_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_DE000000_01
+FFFFFDE3C1DEC43C_D4070F89_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_D77FFFF5_01
+000000000030FFBE_4A43FEF8_00
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_D7FFFFFD_01
+FFFFFFFFEFDEED86_CD810894_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_DD400001_01
+000000001DA3FF45_4DED1FFA_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_CF7FFF00_01
+FFFFFFFE9B1BCB54_CFB2721B_01
+0000000008000000_4D000000_00
+00004000004001FE_56800000_01
+F27DD19DE6563714_DD5822E7_01
+0000000010000000_4D800000_00
+FFC00000004007FE_DA800000_01
+000000000001A359_47D1AC80_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C70003F_01
+FFFFFFFFFE62EC20_CBCE89F0_00
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E7FFFFF_01
+000000000000285F_46217C00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_CE800020_01
+FFFFF836F99DBAA8_D4F920CD_01
+0000000100000000_4F800000_00
+00000020003FFEFE_520000FF_01
+0033466832042D47_5A4D19A0_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_C4EF2000_00
+00000000003829C8_4A60A720_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_557FFFFF_01
+0000000FB77C672B_517B77C6_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D0003FF_01
+0000000000001B78_45DBC000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_DB000001_01
+0000000000000071_42E20000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_559FFFFF_01
+FFFFFFFFFFFFFF86_C2F40000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+FFF8A60D9E19F17E_D8EB3E4D_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+FFFFFFFFF7506DBA_CD0AF925_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_C7820480_00
+FFFFFFFFFEA42AC9_CBADEA9C_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_5583FFFF_01
+FFE7AA3F2BDACC89_D9C2AE07_01
+0000040000000000_54800000_00
+FFF8040000040000_D8FF8000_01
+FFFFFFFFFFFFFFFD_C0400000_00
+0000080000000000_55000000_00
+FFFF80000800001F_D6FFFFF0_01
+FFFDF681DECDADC9_D8025F89_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_D3800010_01
+FFFFFFFFFFFFCFBE_C6410800_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51101FFF_01
+FEC01FECA24DE1B0_DB9FF00A_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_DD000001_01
+F858A66761669936_DCF4EB34_01
+0000800000000000_57000000_00
+FFFEFF800000003E_D7804000_01
+F716EA43FAC45C97_DD0E915C_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_C2680000_00
+0024D70EC7661FD8_5A135C3B_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_DE7E0001_01
+FFD956DBD0AEE817_DA1AA491_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FB_01
+FFFFFFFFFFFF4300_C73D0000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+C12EDF40F41F6021_DE7B4483_01
+0010000000000000_59800000_00
+FF9000000000001D_DAE00000_01
+FFFFFFF83DE950F6_D0F842D6_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_DEFFFFF9_01
+FE2B59CB3A604D69_DBEA531B_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5EFFFFFF_01
+000000A37C210862_53237C21_01
+0080000000000000_5B000000_00
+0002000002000002_58000000_01
+FFFFB65CD8617789_D6934650_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55DFFFFF_01
+FFFFFFFFFFFFF01D_C57E3000_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000000D098D19_4D5098D1_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C7FFFFF_01
+000006B3BD2C7BEF_54D677A5_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFEFF_01
+FFFF4E5ADDDAA4A8_D731A523_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+FFFFFFFFFFFFFF21_C35F0000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83BFFF_01
+FFFFFFFFFC648262_CC66DF68_01
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_DE7FFF81_01
+FFFFFF7353AC45D2_D30CAC54_01
+8000000000000000_DF000000_00
+FFFFFFFFFFE7EFFF_C9C08008_00
+0000000000A1202D_4B21202D_00
+C000000000000000_DE800000_00
+FFFFFFFFFFFF5F7F_C7208100_00
+000000000040CA70_4A8194E0_00
+E000000000000000_DE000000_00
+0000200201FFFFFE_56000807_01
+00000003B55D87D4_506D5761_01
+F000000000000000_DD800000_00
+FF80000DFFFFFFFF_DAFFFFE5_01
+000000010510FAEF_4F82887D_01
+F800000000000000_DD000000_00
+0003FFF00000000F_587FFC00_01
+000000000000724A_46E49400_00
+FC00000000000000_DC800000_00
+FFFFFFDF80000002_D2020000_01
+0000000000000064_42C80000_00
+FE00000000000000_DC000000_00
+FEFFFFFFFFF800FE_DB800001_01
+FFFFFFC2C6222702_D274E778_01
+FF00000000000000_DB800000_00
+0000000408000002_50810000_01
+000000E96DF1CB41_53696DF1_01
+FF80000000000000_DB000000_00
+007FFFFFFFFFF9FE_5AFFFFFF_01
+F727F174DEE7DC85_DD0D80E9_01
+FFC0000000000000_DA800000_00
+8000000003FFFEFE_DF000000_01
+FFFFFFFFFFF0BD5B_C9742A50_00
+FFE0000000000000_DA000000_00
+0BEFFFFFFFFFFFFF_5D3EFFFF_01
+000000000002790C_481E4300_00
+FFF0000000000000_D9800000_00
+FFFFFFFFFFEFFBFA_C9802030_00
+000000169E75DF01_51B4F3AE_01
+FFF8000000000000_D9000000_00
+00000007FEFFDFFF_50FFDFFB_01
+000000000000000E_41600000_00
+FFFC000000000000_D8800000_00
+0003FFFE0007FFFE_587FFF80_01
+FFFFFFFFFFF28622_C9579DE0_00
+FFFE000000000000_D8000000_00
+FFFFFF7FFFFDF7FF_D3000003_01
+00072F0EC496FE21_58E5E1D8_01
+FFFF000000000000_D7800000_00
+DFBFFFFFFFFFFFFE_DE010001_01
+0000000000FC1FCA_4B7C1FCA_00
+FFFF800000000000_D7000000_00
+00000FFF800FFFFE_557FF800_01
+FFFF5194E4A9C2CE_D72E6B1C_01
+FFFFC00000000000_D6800000_00
+00000002100007FD_50040001_01
+FFFFFFFFFFC2D8FE_CA749C08_00
+FFFFE00000000000_D6000000_00
+000000000007FF6E_48FFEDC0_00
+000000000001766E_47BB3700_00
+FFFFF00000000000_D5800000_00
+0040000400000002_5A800008_01
+0000000000007841_46F08200_00
+FFFFF80000000000_D5000000_00
+3DFFFFFFFFFFFF7E_5E77FFFF_01
+FFFFFFE549E17E30_D1D5B0F5_01
+FFFFFC0000000000_D4800000_00
+FFFFFFFFFFFFFEE1_C38F8000_00
+FFFFFFFFFFFFFFE7_C1C80000_00
+FFFFFE0000000000_D4000000_00
+000000000EFFFFDF_4D6FFFFD_01
+FFFFFFFFFFFFFF73_C30D0000_00
+FFFFFF0000000000_D3800000_00
+FD00000008000000_DC400000_01
+000000000001DBB1_47EDD880_00
+FFFFFF8000000000_D3000000_00
+FFFFFFFFFFF8007F_C8FFF020_00
+FFFFFFFEFD10A515_CF8177AE_01
+FFFFFFC000000000_D2800000_00
+FFEFFFFFFFFFFFFE_D9800001_01
+FAB02984F6283B6C_DCA9FAD0_01
+FFFFFFE000000000_D2000000_00
+FFFFFFBC000001FE_D2880000_01
+FEB087C6B9FE7FE0_DBA7BC1D_01
+FFFFFFF000000000_D1800000_00
+FFF80001000007FE_D8FFFFE0_01
+00F2762EA6837956_5B72762E_01
+FFFFFFF800000000_D1000000_00
+FFF7E0FFFFFFFFFE_D901F001_01
+00002E1175484626_563845D5_01
+FFFFFFFC00000000_D0800000_00
+0000200020000FFE_56000080_01
+000000000000068F_44D1E000_00
+FFFFFFFE00000000_D0000000_00
+021FFFFFFFFBFFFF_5C07FFFF_01
+FFFFFFFFFFFFFFF9_C0E00000_00
+FFFFFFFF00000000_CF800000_00
+FFFFFFD0000FFFFD_D23FFFC1_01
+000000BDF6658B83_533DF665_01
+FFFFFFFF80000000_CF000000_00
+1000001FFDFFFFFF_5D800000_01
+0000000000003B5B_466D6C00_00
+FFFFFFFFC0000000_CE800000_00
+FFFFFFBFFE0FFFFF_D28003E1_01
+FFFFFFFFFFFFFFF0_C1800000_00
+FFFFFFFFE0000000_CE000000_00
+FFFFFFFBF00007FF_D0820000_01
+01E986274F48EAAD_5BF4C313_01
+FFFFFFFFF0000000_CD800000_00
+1FFFFFFDFFFFFF7F_5DFFFFFF_01
+FFFFFFFFFFFFCB5A_C6529800_00
+FFFFFFFFF8000000_CD000000_00
+7FF000000000FFFF_5EFFE000_01
+00000003C2717FC3_50709C5F_01
+FFFFFFFFFC000000_CC800000_00
+FFFFFFE00008001F_D1FFFFC0_01
+FFFFFFFFFFEFABDA_C982A130_00
+FFFFFFFFFE000000_CC000000_00
+0200000000000002_5C000000_01
+FFFFFFFFF8FDA53F_CCE04B59_01
+FFFFFFFFFF000000_CB800000_00
+F6000003FFFFFFFE_DD200000_01
+FFFFFFFFFFFFFFD0_C2400000_00
+FFFFFFFFFF800000_CB000000_00
+FFFFFFFFFFBFFF7E_CA800104_00
+00000000EE0FEA62_4F6E0FEA_01
+FFFFFFFFFFC00000_CA800000_00
+0000007FFF9FFFFD_52FFFF3F_01
+00000037F35EDC1D_525FCD7B_01
+FFFFFFFFFFE00000_CA000000_00
+FFFFFFF7FDFFFF7D_D1002001_01
+00000000000001AD_43D68000_00
+FFFFFFFFFFF00000_C9800000_00
+FFFFFF0000100020_D37FFFF0_01
+27F167FBC7FC5F9A_5E1FC59F_01
+FFFFFFFFFFF80000_C9000000_00
+003FFFFFFFFC0001_5A7FFFFF_01
+000E48F9F4EBD30E_59648F9F_01
+FFFFFFFFFFFC0000_C8800000_00
+DFFFFFFFFFFBFFFE_DE000001_01
+FC91C23EE8C9424F_DC5B8F71_01
+FFFFFFFFFFFE0000_C8000000_00
+F7DFFBFFFFFFFFFE_DD020041_01
+000000002CAE080C_4E32B820_01
+FFFFFFFFFFFF0000_C7800000_00
+FFFFC00010000020_D67FFFC0_01
+04D921F917B20E40_5C9B243F_01
+FFFFFFFFFFFF8000_C7000000_00
+F8000FFFFFFFFFFD_DCFFFE01_01
+FFF17C566BC7D811_D9683A9A_01
+FFFFFFFFFFFFC000_C6800000_00
+00000000000000FE_437E0000_00
+FFF82AC14930D386_D8FAA7D7_01
+FFFFFFFFFFFFE000_C6000000_00
+00000000000003FC_447F0000_00
+000E62EC60E119FC_59662EC6_01
+FFFFFFFFFFFFF000_C5800000_00
+FFFFEFF7FF7FFFFE_D5804005_01
+0E2B1ECF210EEDC5_5D62B1EC_01
+FFFFFFFFFFFFF800_C5000000_00
+00000000007FFF1F_4AFFFE3E_00
+FFFFFE534F5676F7_D3D65855_01
+FFFFFFFFFFFFFC00_C4800000_00
+0000001004FFFFFD_518027FF_01
+0000035C939669F1_545724E5_01
+FFFFFFFFFFFFFE00_C4000000_00
+1FFFFFFFFFFFFDFD_5DFFFFFF_01
+FFFFFFFFFFFFFF91_C2DE0000_00
+FFFFFFFFFFFFFF00_C3800000_00
+01FFFFFFFBFFEFFE_5BFFFFFF_01
+000000000000016E_43B70000_00
+FFFFFFFFFFFFFF80_C3000000_00
+FFF7FFFFFFFFF7FD_D9000001_01
+FFFFF8E2BCFAC553_D4E3A861_01
+FFFFFFFFFFFFFFC0_C2800000_00
+FFFFFBFFFFFE0FFE_D4800001_01
+00000001A4E704BF_4FD27382_01
+FFFFFFFFFFFFFFE0_C2000000_00
+1400007FFFFFFFFD_5DA00003_01
+FFFFFFFC93B187B4_D05B139F_01
+FFFFFFFFFFFFFFF0_C1800000_00
+40000000007FFFFD_5E800000_01
+000000000067D468_4ACFA8D0_00
+FFFFFFFFFFFFFFF8_C1000000_00
+007FFEFFFFFBFFFE_5AFFFDFF_01
+FFFFFFE26CEC79F8_D1EC989D_01
+FFFFFFFFFFFFFFFC_C0800000_00
+00FFFFFF000000FF_5B7FFFFF_01
+FFFFFFFFE0D3983A_CDF9633F_01
+FFFFFFFFFFFFFFFE_C0000000_00
+00007FFFBFFF7FFE_56FFFF7F_01
+FFFFFFFDF4A7088A_D002D63E_01
+FFFFFFFFFFFFFFFF_BF800000_00
+000008000000027E_55000000_01
+000000000000F4E8_4774E800_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFF83FFDF_CAF80042_00
+00000E11407887B2_55611407_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+04000003FFFFFFF6_5C800000_01
+0000000000000513_44A26000_00
+FFFFFFFFFFFFFFF7_C1100000_00
+BFFC00000000003E_DE800800_01
+00000008D7BBB75B_510D7BBB_01
+FFFFFFFFFFFFFFEF_C1880000_00
+000FFFFBFFFC0000_597FFFBF_01
+FFFFFFFFFFCD5A23_CA4A9774_00
+FFFFFFFFFFFFFFDF_C2040000_00
+FFBFDFFFBFFFFFFF_DA804001_01
+000000000000007F_42FE0000_00
+FFFFFFFFFFFFFFBF_C2820000_00
+00000007FF800003_50FFF000_01
+000000000002BB02_482EC080_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEE7FF_C78C0080_00
+00264B2B9BAD0DA2_5A192CAE_01
+FFFFFFFFFFFFFEFF_C3808000_00
+0000000000100803_49804018_00
+FF9B1DCB9F857D5E_DAC9C469_01
+FFFFFFFFFFFFFDFF_C4004000_00
+FFFFFFBFFFFFEFEE_D2800001_01
+F6FD7542899C1C6F_DD1028AC_01
+FFFFFFFFFFFFFBFF_C4802000_00
+FF800000004001FF_DB000000_01
+0000000002BE4932_4C2F924C_01
+FFFFFFFFFFFFF7FF_C5001000_00
+00001004000FFFFE_55802000_01
+FFFFFF9DAA0123E0_D2C4ABFE_01
+FFFFFFFFFFFFEFFF_C5800800_00
+00000001FDFFFDFE_4FFEFFFE_01
+FFFC1C8703B1DCB0_D878DE40_01
+FFFFFFFFFFFFDFFF_C6000400_00
+FE0FE00000000000_DBF81000_00
+0779ED944A4E2779_5CEF3DB2_01
+FFFFFFFFFFFFBFFF_C6800200_00
+FBFFFE0400000000_DC800040_01
+0000010127E03666_538093F0_01
+FFFFFFFFFFFF7FFF_C7000100_00
+FFFFF0200000FFFE_D57E0000_01
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEFFFF_C7800080_00
+FFEFFE0000080000_D9801000_01
+FFFFFFFFFD3354EA_CC332AC6_01
+FFFFFFFFFFFDFFFF_C8000040_00
+003FF0000003FFFE_5A7FC000_01
+0000006375B23F7B_52C6EB64_01
+FFFFFFFFFFFBFFFF_C8800020_00
+000407FFFFFFFFF6_5880FFFF_01
+0000000092117F38_4F12117F_01
+FFFFFFFFFFF7FFFF_C9000010_00
+FFFFFFFFFFFF7FFF_C7000100_00
+00000000000008BE_450BE000_00
+FFFFFFFFFFEFFFFF_C9800008_00
+004000020FFFFFFF_5A800004_01
+FFFFB84C2D8BC9CB_D68F67A5_01
+FFFFFFFFFFDFFFFF_CA000004_00
+00FFFFFFFFFFFFFD_5B7FFFFF_01
+00000023C2C6F284_520F0B1B_01
+FFFFFFFFFFBFFFFF_CA800002_00
+FFFDDFFFFFFFFFFD_D8080001_01
+00000000746356C4_4EE8C6AD_01
+FFFFFFFFFF7FFFFF_CB000001_00
+010000000000BFFF_5B800000_01
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFEFFFFFF_CB800001_01
+FFFFBF7FFBFFFFFE_D6810009_01
+00000006386CE889_50C70D9D_01
+FFFFFFFFFDFFFFFF_CC000001_01
+F00000F7FFFFFFFF_DD7FFFF1_01
+FFFDFC53090C46A4_D800EB3E_01
+FFFFFFFFFBFFFFFF_CC800001_01
+0000000000800047_4B000047_00
+FFFFFFFFD693872E_CE25B1E4_01
+FFFFFFFFF7FFFFFF_CD000001_01
+000000007FBFFBFF_4EFF7FF7_01
+00000026A7845E35_521A9E11_01
+FFFFFFFFEFFFFFFF_CD800001_01
+FFFFFFDFFFFFFBFD_D2000001_01
+000000001433D14C_4DA19E8A_01
+FFFFFFFFDFFFFFFF_CE000001_01
+0001FFFFFFE0000E_57FFFFFF_01
+F0F23E8068D3D84A_DD70DC18_01
+FFFFFFFFBFFFFFFF_CE800001_01
+F7FFBFFFFFFFBFFF_DD000401_01
+FFFFBD29B7459087_D685AC92_01
+FFFFFFFF7FFFFFFF_CF000001_01
+FFFFFFF8FFFFBFFF_D0E00009_01
+FFFFFFFFFFEDDC06_C9911FD0_00
+FFFFFFFEFFFFFFFF_CF800001_01
+FFFFFFF80001FFFF_D0FFFFC1_01
+0000000000002FF9_463FE400_00
+FFFFFFFDFFFFFFFF_D0000001_01
+004000040000FFFF_5A800008_01
+FFFFFFFFFFFFFFF1_C1700000_00
+FFFFFFFBFFFFFFFF_D0800001_01
+C0000000007FFFFA_DE800000_01
+FFFFFFFFFE053E2B_CBFD60EB_01
+FFFFFFF7FFFFFFFF_D1000001_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000000D_41500000_00
+FFFFFFEFFFFFFFFF_D1800001_01
+F80000000001007E_DD000000_01
+FFFFED48424AD9D6_D595BDEE_01
+FFFFFFDFFFFFFFFF_D2000001_01
+FFFFFE0001FEFFFF_D3FFFF01_01
+000000000000013B_439D8000_00
+FFFFFFBFFFFFFFFF_D2800001_01
+0007FBFFFFFDFFFE_58FF7FFF_01
+4A16BD4128090C83_5E942D7A_01
+FFFFFF7FFFFFFFFF_D3000001_01
+00FFF7FFFF7FFFFE_5B7FF7FF_01
+0000000000000006_40C00000_00
+FFFFFEFFFFFFFFFF_D3800001_01
+FBFFFFBFFFBFFFFF_DC800009_01
+00000000000001BA_43DD0000_00
+FFFFFDFFFFFFFFFF_D4000001_01
+0000000040000082_4E800001_01
+FF07A2BF5B689F89_DB785D41_01
+FFFFFBFFFFFFFFFF_D4800001_01
+0000001FF8000008_51FFC000_01
+F87CAA7DE672DE8B_DCF06AB1_01
+FFFFF7FFFFFFFFFF_D5000001_01
+07FFF80000000002_5CFFFF00_01
+0000000010A1E5B8_4D850F2D_01
+FFFFEFFFFFFFFFFF_D5800001_01
+F7FFFFE00007FFFF_DD000002_01
+FFFFFFFFFFF6ADFC_C9152040_00
+FFFFDFFFFFFFFFFF_D6000001_01
+FFFFFF03FFFFFFC0_D37C0001_01
+EA579475948F0032_DDAD435D_01
+FFFFBFFFFFFFFFFF_D6800001_01
+FC00000000003FF6_DC800000_01
+002E677AC313BF60_5A399DEB_01
+FFFF7FFFFFFFFFFF_D7000001_01
+02000007FF7FFFFF_5C000001_01
+0000000E999639F1_51699963_01
+FFFEFFFFFFFFFFFF_D7800001_01
+FFFF83FFFFFFFFBE_D6F80001_01
+000000000001537D_47A9BE80_00
+FFFDFFFFFFFFFFFF_D8000001_01
+EFFFFFC00000003D_DD800002_01
+FFFFFFF21FEDFD35_D15E0121_01
+FFFBFFFFFFFFFFFF_D8800001_01
+FFFFFFF0000007FE_D1800000_01
+FFFFFFFFFFDE0839_CA07DF1C_00
+FFF7FFFFFFFFFFFF_D9000001_01
+0000007FFFE000FF_52FFFFC0_01
+FFFFFFFF79F30F48_CF060CF1_01
+FFEFFFFFFFFFFFFF_D9800001_01
+FFFFFC13FFFFFFFD_D47B0001_01
+0000000000001B85_45DC2800_00
+FFDFFFFFFFFFFFFF_DA000001_01
+000008000007FFFE_55000000_01
+12DB4409E5AE87E6_5D96DA20_01
+FFBFFFFFFFFFFFFF_DA800001_01
+FFFFFFFFFFF7BFEE_C9040120_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FF7FFFFFFFFFFFFF_DB000001_01
+000000001040FFFE_4D8207FF_01
+00000909A09C13D3_55109A09_01
+FEFFFFFFFFFFFFFF_DB800001_01
+FFFFFF01FFFFFF7F_D37E0001_01
+FFFFFF72E7D2575D_D30D182E_01
+FDFFFFFFFFFFFFFF_DC000001_01
+FFFFFFFFFFFEFFDB_C7801280_00
+0000000000000017_41B80000_00
+FBFFFFFFFFFFFFFF_DC800001_01
+100000001FFFFFF6_5D800000_01
+000000114B12EF51_518A5897_01
+F7FFFFFFFFFFFFFF_DD000001_01
+0407FFFFFFFFFEFF_5C80FFFF_01
+FFFFFF769F3A5C2C_D30960C6_01
+EFFFFFFFFFFFFFFF_DD800001_01
+FFFFFFFDF7FFFFFD_D0020001_01
+FFFFFFFFFFFFFFF2_C1600000_00
+DFFFFFFFFFFFFFFF_DE000001_01
+FFFFFFFFFE0007FF_CBFFFC01_01
+000000000000001E_41F00000_00
+BFFFFFFFFFFFFFFF_DE800001_01
+FFF800000009FFFF_D9000000_01
+0000000000007AA4_46F54800_00
+7FFFFFFFFFFFFFFF_5EFFFFFF_01
+4080000000FFFFFF_5E810000_01
+000000000DE7601D_4D5E7601_01
+3FFFFFFFFFFFFFFF_5E7FFFFF_01
+FFCFFFFFFFBFFFFE_DA400001_01
+FFFFFFFFFFFFFFCA_C2580000_00
+1FFFFFFFFFFFFFFF_5DFFFFFF_01
+000080400000003F_57004000_01
+00000000001F75A5_49FBAD28_00
+0FFFFFFFFFFFFFFF_5D7FFFFF_01
+FFFFFFEFFFFFCFFE_D1800002_01
+FFFFFEE775887420_D38C453C_01
+07FFFFFFFFFFFFFF_5CFFFFFF_01
+00000000000801FE_49001FE0_00
+0000000000213FF1_4A04FFC4_00
+03FFFFFFFFFFFFFF_5C7FFFFF_01
+07FEFFFFFFFFFFEE_5CFFDFFF_01
+0000000000000004_40800000_00
+01FFFFFFFFFFFFFF_5BFFFFFF_01
+0000000820000003_51020000_01
+FFFFFFF9AD105214_D0CA5DF6_01
+00FFFFFFFFFFFFFF_5B7FFFFF_01
+FFFFF00FFFFFFFBE_D57F0001_01
+FFFFFFFFFFCC48E7_CA4EDC64_00
+007FFFFFFFFFFFFF_5AFFFFFF_01
+00000FFFEF7FFFFF_557FFEF7_01
+FFFFFFFFFF0BA6CB_CB745935_00
+003FFFFFFFFFFFFF_5A7FFFFF_01
+FFFFFF7FBFFFFFBF_D3004001_01
+FFFFFFFFFFF24425_C95BBDB0_00
+001FFFFFFFFFFFFF_59FFFFFF_01
+200000001FFBFFFF_5E000000_01
+FFFFFF4E7115EC53_D3318EEB_01
+000FFFFFFFFFFFFF_597FFFFF_01
+FFFFF803FFFFFFBF_D4FF8001_01
+FFFFFC2E539ADCFE_D4746B1A_01
+0007FFFFFFFFFFFF_58FFFFFF_01
+FFFFFFFFFBFFFFFF_CC800001_01
+00000055084732F3_52AA108E_01
+0003FFFFFFFFFFFF_587FFFFF_01
+BFFF7FFFFFFFFE00_DE800101_01
+FFFFFFFFFFFF8543_C6F57A00_00
+0001FFFFFFFFFFFF_57FFFFFF_01
+0000001FFBFFE000_51FFDFFF_00
+FFFFFFFFFFFE491B_C7DB7280_00
+0000FFFFFFFFFFFF_577FFFFF_01
+FC00200000001FFE_DC7FF800_01
+FFFFF16898822A24_D5697678_01
+00007FFFFFFFFFFF_56FFFFFF_01
+3FFF03FFFFFFFFFE_5E7FFC0F_01
+FFFFFF8FFE18C7BF_D2E003CF_01
+00003FFFFFFFFFFF_567FFFFF_01
+FFFFFEFFFEFFFFFD_D3800081_01
+00F03620C1266ED9_5B703620_01
+00001FFFFFFFFFFF_55FFFFFF_01
+BF7EFFFFFFFFFFFF_DE810201_01
+FFFFFFFFFFFFFFD5_C22C0000_00
+00000FFFFFFFFFFF_557FFFFF_01
+FFFBFFFFF803FFFE_D8800001_01
+0000000000068684_48D0D080_00
+000007FFFFFFFFFF_54FFFFFF_01
+DFFFFFE00000001E_DE000001_01
+FFFFFFFFFFFFECF5_C5985800_00
+000003FFFFFFFFFF_547FFFFF_01
+FFFF00400000FFFF_D77FC000_01
+0000000000000002_40000000_00
+000001FFFFFFFFFF_53FFFFFF_01
+FBFFFFFFFFFFBDFE_DC800001_01
+0000000000000BC9_453C9000_00
+000000FFFFFFFFFF_537FFFFF_01
+807FFFFFFFFFDFFE_DEFF0001_01
+FFC274E35A70CD76_DA762C73_01
+0000007FFFFFFFFF_52FFFFFF_01
+0FFFFFFFFEFFFFFD_5D7FFFFF_01
+FFFFFFFF00E73AFC_CF7F18C6_01
+0000003FFFFFFFFF_527FFFFF_01
+FFC000000001000E_DA800000_01
+FFFFFFFFFFFE15E9_C7F50B80_00
+0000001FFFFFFFFF_51FFFFFF_01
+0001FFFFFFFFF3FD_57FFFFFF_01
+0000000000000033_424C0000_00
+0000000FFFFFFFFF_517FFFFF_01
+000000001FFFBFFF_4DFFFDFF_01
+FFFFFFEE6B141E1B_D18CA760_01
+00000007FFFFFFFF_50FFFFFF_01
+FFFFFFFFF60007FF_CD1FFF81_01
+00000001AB310BA6_4FD59885_01
+00000003FFFFFFFF_507FFFFF_01
+0003FFFFB7FFFFFF_587FFFED_01
+FFFFFFFFFFFFF195_C566B000_00
+00000001FFFFFFFF_4FFFFFFF_01
+FFFFFFFF8000000B_CF000000_01
+00000019BA8D5559_51CDD46A_01
+00000000FFFFFFFF_4F7FFFFF_01
+FBFEFFFFFFFFFFF9_DC802001_01
+FFFFFFB6F062822D_D2921F3B_01
+000000007FFFFFFF_4EFFFFFF_01
+0001000000000082_57800000_01
+01CEAD9E2FB104A4_5BE756CF_01
+000000003FFFFFFF_4E7FFFFF_01
+000003FFFFFFFF7C_547FFFFF_01
+FFFFFFFFFD681E78_CC25F862_00
+000000001FFFFFFF_4DFFFFFF_01
+00002000400001FF_56000100_01
+0000000000000018_41C00000_00
+000000000FFFFFFF_4D7FFFFF_01
+3FFF80000000003E_5E7FFE00_01
+FFFFFFFFFFFFFF95_C2D60000_00
+0000000007FFFFFF_4CFFFFFF_01
+010000BFFFFFFFFF_5B80005F_01
+0000001697087B19_51B4B843_01
+0000000003FFFFFF_4C7FFFFF_01
+FBFFFFFFFFEEFFFD_DC800001_01
+0000000E64BDFC55_51664BDF_01
+0000000001FFFFFF_4BFFFFFF_01
+FC00000001FFFFFE_DC800000_01
+FFFED156A62AB849_D79754AD_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_D0F80201_01
+00015354EAE7C259_57A9AA75_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFF0F4DF3C75_D170B20D_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_D8C00000_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_CB0001C0_00
+FFFFFFDB5433CB9B_D212AF31_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_D4000801_01
+FFFFFFFFFFDEAE1F_CA054784_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_CD7F8000_01
+FFFFFFFE7735DEC7_CFC46511_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFDFFFF_01
+000003757D8B12ED_545D5F62_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_D3FC0401_01
+00000A654064E046_55265406_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+FFFFFFFFFFFFFFE7_C1C80000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5CFFFFFF_01
+FFFFAD78B3D6C3B6_D6A50E99_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+FFFFFFF70B77F34F_D10F4881_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_D2FFFF21_01
+0000013EB4D67EC8_539F5A6B_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_DE800041_01
+0005CEAF34EA1DC7_58B9D5E6_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900000_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000360D0_48583400_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B801FFF_01
+00C000708FF1BA51_5B400070_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_DCFFC000_01
+0F9E07DCC0BDC061_5D79E07D_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+FFFFFFE1B9B2A079_D1F2326B_01
+000000000000003F_427C0000_00
+FFF80000000080FF_D9000000_01
+00000000001EB5B4_49F5ADA0_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+00000000005AC607_4AB58C0E_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_CF840000_01
+000005C5B9D66984_54B8B73A_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_DE7FF801_01
+00001D06B372AA06_55E8359B_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rne.tv b/wally-pipelined/testbench/fp/i64_f32_rne.tv
index e766e9aec..14a3a96af 100644
--- a/wally-pipelined/testbench/fp/i64_f32_rne.tv
+++ b/wally-pipelined/testbench/fp/i64_f32_rne.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 5CFFFFC0_01
-0000000032CC8B7A 4E4B322E_01
-0000000000000000 00000000_00
-FFFFFFFFC0003FFE CE7FFF00_01
-032C857F319EDE38 5C4B2160_01
-0000000000000001 3F800000_00
-FFFFFBFFFFF8003E D4800001_01
-00394C79B6D3007B 5A6531E7_01
-0000000000000002 40000000_00
-FBFFFFF0000001FF DC800002_01
-0000000001AE458D 4BD722C6_01
-0000000000000004 40800000_00
-00040008000007FE 58800100_01
-F9EB456140D88764 DCC29754_01
-0000000000000008 41000000_00
-FFFFE400FFFFFFFE D5DFF800_01
-07DE834A248EDF36 5CFBD069_01
-0000000000000010 41800000_00
-00000003FF001FFF 507FC008_01
-FFFFFFFFFFE385E2 C9E3D0F0_00
-0000000000000020 42000000_00
-F0041FFFFFFFFFFF DD7FBE00_01
-000000059EB1FD45 50B3D640_01
-0000000000000040 42800000_00
-FFFFFFFFFFFCFFF9 C84001C0_00
-FFFFFFFFFFFEDDFE C7910100_00
-0000000000000080 43000000_00
-000000000003FF00 487FC000_00
-00000000C89FF56B 4F489FF5_01
-0000000000000100 43800000_00
-000FFFFF7FDFFFFF 597FFFF8_01
-1B5E4F0BE0DEBFF0 5DDAF278_01
-0000000000000200 44000000_00
-FFFDF803FFFFFFFF D801FF00_01
-FFFFFFFFFFF4766B C9389950_00
-0000000000000400 44800000_00
-0000080100000FFE 55001000_01
-000000000000000C 41400000_00
-0000000000000800 45000000_00
-0048000000100000 5A900000_01
-FFE662A109109D0A D9CCEAF8_01
-0000000000001000 45800000_00
-C000000037FFFFFE DE800000_01
-FFFFFFFFFFFFFFE4 C1E00000_00
-0000000000002000 46000000_00
-F801000000100000 DCFFE000_01
-FE114B79075F70EE DBF75A43_01
-0000000000004000 46800000_00
-100000000001003E 5D800000_01
-00000000000003AC 446B0000_00
-0000000000008000 47000000_00
-200000FFFFFFF800 5E000004_01
-00000044A3A3DBE5 52894748_01
-0000000000010000 47800000_00
-FFE0003EFFFFFFFF D9FFFE08_01
-FFFFFFFFFFFF1A91 C7656F00_00
-0000000000020000 48000000_00
-FFFFF7C3FFFFFFFD D503C000_01
-0000000000003309 464C2400_00
-0000000000040000 48800000_00
-000083FFF7FFFFFE 5703FFF8_01
-FFFFFFFFFFFFFF58 C3280000_00
-0000000000080000 49000000_00
-FFFFFFDE01FFFFFE D207F800_01
-0000000000002980 46260000_00
-0000000000100000 49800000_00
-00000000FFF07FFF 4F7FF080_01
-000000000000005D 42BA0000_00
-0000000000200000 4A000000_00
-000020FFDFFFFFFF 5603FF80_01
-FFFC8C23DA2CEAD8 D85CF709_01
-0000000000400000 4A800000_00
-E0000000003FFFDF DE000000_01
-FFFFFDE3C1DEC43C D4070F88_01
-0000000000800000 4B000000_00
-FFFF00000BFFFFFD D77FFFF4_01
-000000000030FFBE 4A43FEF8_00
-0000000001000000 4B800000_00
-FFFE000007FFEFFD D7FFFFFC_01
-FFFFFFFFEFDEED86 CD810894_01
-0000000002000000 4C000000_00
-F3FFFFFFFFBFFFFE DD400000_01
-000000001DA3FF45 4DED1FFA_01
-0000000004000000 4C800000_00
-FFFFFFFF00010007 CF7FFF00_01
-FFFFFFFE9B1BCB54 CFB2721A_01
-0000000008000000 4D000000_00
-00004000004001FE 56800001_01
-F27DD19DE6563714 DD5822E6_01
-0000000010000000 4D800000_00
-FFC00000004007FE DA800000_01
-000000000001A359 47D1AC80_00
-0000000020000000 4E000000_00
-0000000003C000FE 4C700040_01
-FFFFFFFFFE62EC20 CBCE89F0_00
-0000000040000000 4E800000_00
-000000003FFFFFFD 4E800000_01
-000000000000285F 46217C00_00
-0000000080000000 4F000000_00
-FFFFFFFFBFFFF00F CE800020_01
-FFFFF836F99DBAA8 D4F920CC_01
-0000000100000000 4F800000_00
-00000020003FFEFE 52000100_01
-0033466832042D47 5A4D19A1_01
-0000000200000000 50000000_00
-FFFFFFFFFFFFF887 C4EF2000_00
-00000000003829C8 4A60A720_00
-0000000400000000 50800000_00
-00000FFFFFFF7DFD 55800000_01
-0000000FB77C672B 517B77C6_01
-0000000800000000 51000000_00
-08003FFDFFFFFFFE 5D000400_01
-0000000000001B78 45DBC000_00
-0000001000000000 51800000_00
-FF7FFFFFFFEFDFFF DB000000_01
-0000000000000071 42E20000_00
-0000002000000000 52000000_00
-000013FFFFFFFDFF 55A00000_01
-FFFFFFFFFFFFFF86 C2F40000_00
-0000004000000000 52800000_00
-0800000000040800 5D000000_01
-FFF8A60D9E19F17E D8EB3E4C_01
-0000008000000000 53000000_00
-000077FFF0000000 56EFFFE0_00
-FFFFFFFFF7506DBA CD0AF924_01
-0000010000000000 53800000_00
-FFFFFFFFFFFEFBF7 C7820480_00
-FFFFFFFFFEA42AC9 CBADEA9C_01
-0000020000000000 54000000_00
-0000107FFFFFDFFD 55840000_01
-FFE7AA3F2BDACC89 D9C2AE07_01
-0000040000000000 54800000_00
-FFF8040000040000 D8FF8000_01
-FFFFFFFFFFFFFFFD C0400000_00
-0000080000000000 55000000_00
-FFFF80000800001F D6FFFFF0_01
-FFFDF681DECDADC9 D8025F88_01
-0000100000000000 55800000_00
-FFFFFEFFFFE0007F D3800010_01
-FFFFFFFFFFFFCFBE C6410800_00
-0000200000000000 56000000_00
-0000000901FFFFFD 51102000_01
-FEC01FECA24DE1B0 DB9FF00A_01
-0000400000000000 56800000_00
-F7FFFFFFDFFF7FFF DD000000_01
-F858A66761669936 DCF4EB33_01
-0000800000000000 57000000_00
-FFFEFF800000003E D7804000_01
-F716EA43FAC45C97 DD0E915C_01
-0001000000000000 57800000_00
-FFFFFFFFFFFFFFC6 C2680000_00
-0024D70EC7661FD8 5A135C3B_01
-0002000000000000 58000000_00
-C07FFFFFFFFFFFFE DE7E0000_01
-FFD956DBD0AEE817 DA1AA491_01
-0004000000000000 58800000_00
-020003EFFFFFFFFE 5C0000FC_01
-FFFFFFFFFFFF4300 C73D0000_00
-0008000000000000 59000000_00
-4000000004002000 5E800000_01
-C12EDF40F41F6021 DE7B4483_01
-0010000000000000 59800000_00
-FF9000000000001D DAE00000_01
-FFFFFFF83DE950F6 D0F842D6_01
-0020000000000000 5A000000_00
-800003FFFFFC0000 DEFFFFF8_01
-FE2B59CB3A604D69 DBEA531A_01
-0040000000000000 5A800000_00
-7FFFFFFDFFFFBFFF 5F000000_01
-000000A37C210862 53237C21_01
-0080000000000000 5B000000_00
-0002000002000002 58000001_01
-FFFFB65CD8617789 D693464F_01
-0100000000000000 5B800000_00
-00001BFFFFFFBFFE 55E00000_01
-FFFFFFFFFFFFF01D C57E3000_00
-0200000000000000 5C000000_00
-1000008000003FFF 5D800004_01
-000000000D098D19 4D5098D2_01
-0400000000000000 5C800000_00
-03FFFFFFFFFFF5FF 5C800000_01
-000006B3BD2C7BEF 54D677A6_01
-0800000000000000 5D000000_00
-00003FFFBFFFFFFE 567FFF00_01
-FFFF4E5ADDDAA4A8 D731A522_01
-1000000000000000 5D800000_00
-001FFFC000000FFD 59FFFE00_01
-FFFFFFFFFFFFFF21 C35F0000_00
-2000000000000000 5E000000_00
-0000000041DFFFFF 4E83C000_01
-FFFFFFFFFC648262 CC66DF68_01
-4000000000000000 5E800000_00
-C0001FFFFFFFFFFB DE7FFF80_01
-FFFFFF7353AC45D2 D30CAC54_01
-8000000000000000 DF000000_00
-FFFFFFFFFFE7EFFF C9C08008_00
-0000000000A1202D 4B21202D_00
-C000000000000000 DE800000_00
-FFFFFFFFFFFF5F7F C7208100_00
-000000000040CA70 4A8194E0_00
-E000000000000000 DE000000_00
-0000200201FFFFFE 56000808_01
-00000003B55D87D4 506D5762_01
-F000000000000000 DD800000_00
-FF80000DFFFFFFFF DAFFFFE4_01
-000000010510FAEF 4F82887D_01
-F800000000000000 DD000000_00
-0003FFF00000000F 587FFC00_01
-000000000000724A 46E49400_00
-FC00000000000000 DC800000_00
-FFFFFFDF80000002 D2020000_01
-0000000000000064 42C80000_00
-FE00000000000000 DC000000_00
-FEFFFFFFFFF800FE DB800000_01
-FFFFFFC2C6222702 D274E777_01
-FF00000000000000 DB800000_00
-0000000408000002 50810000_01
-000000E96DF1CB41 53696DF2_01
-FF80000000000000 DB000000_00
-007FFFFFFFFFF9FE 5B000000_01
-F727F174DEE7DC85 DD0D80E9_01
-FFC0000000000000 DA800000_00
-8000000003FFFEFE DF000000_01
-FFFFFFFFFFF0BD5B C9742A50_00
-FFE0000000000000 DA000000_00
-0BEFFFFFFFFFFFFF 5D3F0000_01
-000000000002790C 481E4300_00
-FFF0000000000000 D9800000_00
-FFFFFFFFFFEFFBFA C9802030_00
-000000169E75DF01 51B4F3AF_01
-FFF8000000000000 D9000000_00
-00000007FEFFDFFF 50FFDFFC_01
-000000000000000E 41600000_00
-FFFC000000000000 D8800000_00
-0003FFFE0007FFFE 587FFF80_01
-FFFFFFFFFFF28622 C9579DE0_00
-FFFE000000000000 D8000000_00
-FFFFFF7FFFFDF7FF D3000002_01
-00072F0EC496FE21 58E5E1D9_01
-FFFF000000000000 D7800000_00
-DFBFFFFFFFFFFFFE DE010000_01
-0000000000FC1FCA 4B7C1FCA_00
-FFFF800000000000 D7000000_00
-00000FFF800FFFFE 557FF801_01
-FFFF5194E4A9C2CE D72E6B1B_01
-FFFFC00000000000 D6800000_00
-00000002100007FD 50040002_01
-FFFFFFFFFFC2D8FE CA749C08_00
-FFFFE00000000000 D6000000_00
-000000000007FF6E 48FFEDC0_00
-000000000001766E 47BB3700_00
-FFFFF00000000000 D5800000_00
-0040000400000002 5A800008_01
-0000000000007841 46F08200_00
-FFFFF80000000000 D5000000_00
-3DFFFFFFFFFFFF7E 5E780000_01
-FFFFFFE549E17E30 D1D5B0F4_01
-FFFFFC0000000000 D4800000_00
-FFFFFFFFFFFFFEE1 C38F8000_00
-FFFFFFFFFFFFFFE7 C1C80000_00
-FFFFFE0000000000 D4000000_00
-000000000EFFFFDF 4D6FFFFE_01
-FFFFFFFFFFFFFF73 C30D0000_00
-FFFFFF0000000000 D3800000_00
-FD00000008000000 DC400000_01
-000000000001DBB1 47EDD880_00
-FFFFFF8000000000 D3000000_00
-FFFFFFFFFFF8007F C8FFF020_00
-FFFFFFFEFD10A515 CF8177AD_01
-FFFFFFC000000000 D2800000_00
-FFEFFFFFFFFFFFFE D9800000_01
-FAB02984F6283B6C DCA9FACF_01
-FFFFFFE000000000 D2000000_00
-FFFFFFBC000001FE D2880000_01
-FEB087C6B9FE7FE0 DBA7BC1D_01
-FFFFFFF000000000 D1800000_00
-FFF80001000007FE D8FFFFE0_01
-00F2762EA6837956 5B72762F_01
-FFFFFFF800000000 D1000000_00
-FFF7E0FFFFFFFFFE D901F000_01
-00002E1175484626 563845D5_01
-FFFFFFFC00000000 D0800000_00
-0000200020000FFE 56000080_01
-000000000000068F 44D1E000_00
-FFFFFFFE00000000 D0000000_00
-021FFFFFFFFBFFFF 5C080000_01
-FFFFFFFFFFFFFFF9 C0E00000_00
-FFFFFFFF00000000 CF800000_00
-FFFFFFD0000FFFFD D23FFFC0_01
-000000BDF6658B83 533DF666_01
-FFFFFFFF80000000 CF000000_00
-1000001FFDFFFFFF 5D800001_01
-0000000000003B5B 466D6C00_00
-FFFFFFFFC0000000 CE800000_00
-FFFFFFBFFE0FFFFF D28003E0_01
-FFFFFFFFFFFFFFF0 C1800000_00
-FFFFFFFFE0000000 CE000000_00
-FFFFFFFBF00007FF D081FFFF_01
-01E986274F48EAAD 5BF4C314_01
-FFFFFFFFF0000000 CD800000_00
-1FFFFFFDFFFFFF7F 5E000000_01
-FFFFFFFFFFFFCB5A C6529800_00
-FFFFFFFFF8000000 CD000000_00
-7FF000000000FFFF 5EFFE000_01
-00000003C2717FC3 50709C60_01
-FFFFFFFFFC000000 CC800000_00
-FFFFFFE00008001F D1FFFFC0_01
-FFFFFFFFFFEFABDA C982A130_00
-FFFFFFFFFE000000 CC000000_00
-0200000000000002 5C000000_01
-FFFFFFFFF8FDA53F CCE04B58_01
-FFFFFFFFFF000000 CB800000_00
-F6000003FFFFFFFE DD200000_01
-FFFFFFFFFFFFFFD0 C2400000_00
-FFFFFFFFFF800000 CB000000_00
-FFFFFFFFFFBFFF7E CA800104_00
-00000000EE0FEA62 4F6E0FEA_01
-FFFFFFFFFFC00000 CA800000_00
-0000007FFF9FFFFD 52FFFF40_01
-00000037F35EDC1D 525FCD7B_01
-FFFFFFFFFFE00000 CA000000_00
-FFFFFFF7FDFFFF7D D1002000_01
-00000000000001AD 43D68000_00
-FFFFFFFFFFF00000 C9800000_00
-FFFFFF0000100020 D37FFFF0_01
-27F167FBC7FC5F9A 5E1FC5A0_01
-FFFFFFFFFFF80000 C9000000_00
-003FFFFFFFFC0001 5A800000_01
-000E48F9F4EBD30E 59648F9F_01
-FFFFFFFFFFFC0000 C8800000_00
-DFFFFFFFFFFBFFFE DE000000_01
-FC91C23EE8C9424F DC5B8F70_01
-FFFFFFFFFFFE0000 C8000000_00
-F7DFFBFFFFFFFFFE DD020040_01
-000000002CAE080C 4E32B820_01
-FFFFFFFFFFFF0000 C7800000_00
-FFFFC00010000020 D67FFFC0_01
-04D921F917B20E40 5C9B243F_01
-FFFFFFFFFFFF8000 C7000000_00
-F8000FFFFFFFFFFD DCFFFE00_01
-FFF17C566BC7D811 D9683A99_01
-FFFFFFFFFFFFC000 C6800000_00
-00000000000000FE 437E0000_00
-FFF82AC14930D386 D8FAA7D7_01
-FFFFFFFFFFFFE000 C6000000_00
-00000000000003FC 447F0000_00
-000E62EC60E119FC 59662EC6_01
-FFFFFFFFFFFFF000 C5800000_00
-FFFFEFF7FF7FFFFE D5804004_01
-0E2B1ECF210EEDC5 5D62B1ED_01
-FFFFFFFFFFFFF800 C5000000_00
-00000000007FFF1F 4AFFFE3E_00
-FFFFFE534F5676F7 D3D65855_01
-FFFFFFFFFFFFFC00 C4800000_00
-0000001004FFFFFD 51802800_01
-0000035C939669F1 545724E6_01
-FFFFFFFFFFFFFE00 C4000000_00
-1FFFFFFFFFFFFDFD 5E000000_01
-FFFFFFFFFFFFFF91 C2DE0000_00
-FFFFFFFFFFFFFF00 C3800000_00
-01FFFFFFFBFFEFFE 5C000000_01
-000000000000016E 43B70000_00
-FFFFFFFFFFFFFF80 C3000000_00
-FFF7FFFFFFFFF7FD D9000000_01
-FFFFF8E2BCFAC553 D4E3A861_01
-FFFFFFFFFFFFFFC0 C2800000_00
-FFFFFBFFFFFE0FFE D4800000_01
-00000001A4E704BF 4FD27382_01
-FFFFFFFFFFFFFFE0 C2000000_00
-1400007FFFFFFFFD 5DA00004_01
-FFFFFFFC93B187B4 D05B139E_01
-FFFFFFFFFFFFFFF0 C1800000_00
-40000000007FFFFD 5E800000_01
-000000000067D468 4ACFA8D0_00
-FFFFFFFFFFFFFFF8 C1000000_00
-007FFEFFFFFBFFFE 5AFFFE00_01
-FFFFFFE26CEC79F8 D1EC989C_01
-FFFFFFFFFFFFFFFC C0800000_00
-00FFFFFF000000FF 5B7FFFFF_01
-FFFFFFFFE0D3983A CDF9633E_01
-FFFFFFFFFFFFFFFE C0000000_00
-00007FFFBFFF7FFE 56FFFF80_01
-FFFFFFFDF4A7088A D002D63E_01
-FFFFFFFFFFFFFFFF BF800000_00
-000008000000027E 55000000_01
-000000000000F4E8 4774E800_00
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFF83FFDF CAF80042_00
-00000E11407887B2 55611408_01
-FFFFFFFFFFFFFFFB C0A00000_00
-04000003FFFFFFF6 5C800000_01
-0000000000000513 44A26000_00
-FFFFFFFFFFFFFFF7 C1100000_00
-BFFC00000000003E DE800800_01
-00000008D7BBB75B 510D7BBB_01
-FFFFFFFFFFFFFFEF C1880000_00
-000FFFFBFFFC0000 597FFFC0_01
-FFFFFFFFFFCD5A23 CA4A9774_00
-FFFFFFFFFFFFFFDF C2040000_00
-FFBFDFFFBFFFFFFF DA804001_01
-000000000000007F 42FE0000_00
-FFFFFFFFFFFFFFBF C2820000_00
-00000007FF800003 50FFF000_01
-000000000002BB02 482EC080_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEE7FF C78C0080_00
-00264B2B9BAD0DA2 5A192CAE_01
-FFFFFFFFFFFFFEFF C3808000_00
-0000000000100803 49804018_00
-FF9B1DCB9F857D5E DAC9C469_01
-FFFFFFFFFFFFFDFF C4004000_00
-FFFFFFBFFFFFEFEE D2800000_01
-F6FD7542899C1C6F DD1028AC_01
-FFFFFFFFFFFFFBFF C4802000_00
-FF800000004001FF DB000000_01
-0000000002BE4932 4C2F924C_01
-FFFFFFFFFFFFF7FF C5001000_00
-00001004000FFFFE 55802000_01
-FFFFFF9DAA0123E0 D2C4ABFE_01
-FFFFFFFFFFFFEFFF C5800800_00
-00000001FDFFFDFE 4FFEFFFF_01
-FFFC1C8703B1DCB0 D878DE3F_01
-FFFFFFFFFFFFDFFF C6000400_00
-FE0FE00000000000 DBF81000_00
-0779ED944A4E2779 5CEF3DB3_01
-FFFFFFFFFFFFBFFF C6800200_00
-FBFFFE0400000000 DC800040_01
-0000010127E03666 538093F0_01
-FFFFFFFFFFFF7FFF C7000100_00
-FFFFF0200000FFFE D57E0000_01
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEFFFF C7800080_00
-FFEFFE0000080000 D9801000_01
-FFFFFFFFFD3354EA CC332AC6_01
-FFFFFFFFFFFDFFFF C8000040_00
-003FF0000003FFFE 5A7FC000_01
-0000006375B23F7B 52C6EB64_01
-FFFFFFFFFFFBFFFF C8800020_00
-000407FFFFFFFFF6 58810000_01
-0000000092117F38 4F12117F_01
-FFFFFFFFFFF7FFFF C9000010_00
-FFFFFFFFFFFF7FFF C7000100_00
-00000000000008BE 450BE000_00
-FFFFFFFFFFEFFFFF C9800008_00
-004000020FFFFFFF 5A800004_01
-FFFFB84C2D8BC9CB D68F67A5_01
-FFFFFFFFFFDFFFFF CA000004_00
-00FFFFFFFFFFFFFD 5B800000_01
-00000023C2C6F284 520F0B1C_01
-FFFFFFFFFFBFFFFF CA800002_00
-FFFDDFFFFFFFFFFD D8080000_01
-00000000746356C4 4EE8C6AE_01
-FFFFFFFFFF7FFFFF CB000001_00
-010000000000BFFF 5B800000_01
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFEFFFFFF CB800000_01
-FFFFBF7FFBFFFFFE D6810008_01
-00000006386CE889 50C70D9D_01
-FFFFFFFFFDFFFFFF CC000000_01
-F00000F7FFFFFFFF DD7FFFF1_01
-FFFDFC53090C46A4 D800EB3E_01
-FFFFFFFFFBFFFFFF CC800000_01
-0000000000800047 4B000047_00
-FFFFFFFFD693872E CE25B1E3_01
-FFFFFFFFF7FFFFFF CD000000_01
-000000007FBFFBFF 4EFF7FF8_01
-00000026A7845E35 521A9E11_01
-FFFFFFFFEFFFFFFF CD800000_01
-FFFFFFDFFFFFFBFD D2000000_01
-000000001433D14C 4DA19E8A_01
-FFFFFFFFDFFFFFFF CE000000_01
-0001FFFFFFE0000E 58000000_01
-F0F23E8068D3D84A DD70DC18_01
-FFFFFFFFBFFFFFFF CE800000_01
-F7FFBFFFFFFFBFFF DD000400_01
-FFFFBD29B7459087 D685AC91_01
-FFFFFFFF7FFFFFFF CF000000_01
-FFFFFFF8FFFFBFFF D0E00008_01
-FFFFFFFFFFEDDC06 C9911FD0_00
-FFFFFFFEFFFFFFFF CF800000_01
-FFFFFFF80001FFFF D0FFFFC0_01
-0000000000002FF9 463FE400_00
-FFFFFFFDFFFFFFFF D0000000_01
-004000040000FFFF 5A800008_01
-FFFFFFFFFFFFFFF1 C1700000_00
-FFFFFFFBFFFFFFFF D0800000_01
-C0000000007FFFFA DE800000_01
-FFFFFFFFFE053E2B CBFD60EA_01
-FFFFFFF7FFFFFFFF D1000000_01
-7FFE000007FFFFFF 5EFFFC00_01
-000000000000000D 41500000_00
-FFFFFFEFFFFFFFFF D1800000_01
-F80000000001007E DD000000_01
-FFFFED48424AD9D6 D595BDEE_01
-FFFFFFDFFFFFFFFF D2000000_01
-FFFFFE0001FEFFFF D3FFFF01_01
-000000000000013B 439D8000_00
-FFFFFFBFFFFFFFFF D2800000_01
-0007FBFFFFFDFFFE 58FF8000_01
-4A16BD4128090C83 5E942D7B_01
-FFFFFF7FFFFFFFFF D3000000_01
-00FFF7FFFF7FFFFE 5B7FF800_01
-0000000000000006 40C00000_00
-FFFFFEFFFFFFFFFF D3800000_01
-FBFFFFBFFFBFFFFF DC800008_01
-00000000000001BA 43DD0000_00
-FFFFFDFFFFFFFFFF D4000000_01
-0000000040000082 4E800001_01
-FF07A2BF5B689F89 DB785D41_01
-FFFFFBFFFFFFFFFF D4800000_01
-0000001FF8000008 51FFC000_01
-F87CAA7DE672DE8B DCF06AB0_01
-FFFFF7FFFFFFFFFF D5000000_01
-07FFF80000000002 5CFFFF00_01
-0000000010A1E5B8 4D850F2E_01
-FFFFEFFFFFFFFFFF D5800000_01
-F7FFFFE00007FFFF DD000002_01
-FFFFFFFFFFF6ADFC C9152040_00
-FFFFDFFFFFFFFFFF D6000000_01
-FFFFFF03FFFFFFC0 D37C0000_01
-EA579475948F0032 DDAD435C_01
-FFFFBFFFFFFFFFFF D6800000_01
-FC00000000003FF6 DC800000_01
-002E677AC313BF60 5A399DEB_01
-FFFF7FFFFFFFFFFF D7000000_01
-02000007FF7FFFFF 5C000002_01
-0000000E999639F1 51699964_01
-FFFEFFFFFFFFFFFF D7800000_01
-FFFF83FFFFFFFFBE D6F80000_01
-000000000001537D 47A9BE80_00
-FFFDFFFFFFFFFFFF D8000000_01
-EFFFFFC00000003D DD800002_01
-FFFFFFF21FEDFD35 D15E0120_01
-FFFBFFFFFFFFFFFF D8800000_01
-FFFFFFF0000007FE D1800000_01
-FFFFFFFFFFDE0839 CA07DF1C_00
-FFF7FFFFFFFFFFFF D9000000_01
-0000007FFFE000FF 52FFFFC0_01
-FFFFFFFF79F30F48 CF060CF1_01
-FFEFFFFFFFFFFFFF D9800000_01
-FFFFFC13FFFFFFFD D47B0000_01
-0000000000001B85 45DC2800_00
-FFDFFFFFFFFFFFFF DA000000_01
-000008000007FFFE 55000000_01
-12DB4409E5AE87E6 5D96DA20_01
-FFBFFFFFFFFFFFFF DA800000_01
-FFFFFFFFFFF7BFEE C9040120_00
-FFFFFFFFFFFFFFFD C0400000_00
-FF7FFFFFFFFFFFFF DB000000_01
-000000001040FFFE 4D820800_01
-00000909A09C13D3 55109A0A_01
-FEFFFFFFFFFFFFFF DB800000_01
-FFFFFF01FFFFFF7F D37E0000_01
-FFFFFF72E7D2575D D30D182E_01
-FDFFFFFFFFFFFFFF DC000000_01
-FFFFFFFFFFFEFFDB C7801280_00
-0000000000000017 41B80000_00
-FBFFFFFFFFFFFFFF DC800000_01
-100000001FFFFFF6 5D800000_01
-000000114B12EF51 518A5897_01
-F7FFFFFFFFFFFFFF DD000000_01
-0407FFFFFFFFFEFF 5C810000_01
-FFFFFF769F3A5C2C D30960C6_01
-EFFFFFFFFFFFFFFF DD800000_01
-FFFFFFFDF7FFFFFD D0020000_01
-FFFFFFFFFFFFFFF2 C1600000_00
-DFFFFFFFFFFFFFFF DE000000_01
-FFFFFFFFFE0007FF CBFFFC00_01
-000000000000001E 41F00000_00
-BFFFFFFFFFFFFFFF DE800000_01
-FFF800000009FFFF D9000000_01
-0000000000007AA4 46F54800_00
-7FFFFFFFFFFFFFFF 5F000000_01
-4080000000FFFFFF 5E810000_01
-000000000DE7601D 4D5E7602_01
-3FFFFFFFFFFFFFFF 5E800000_01
-FFCFFFFFFFBFFFFE DA400000_01
-FFFFFFFFFFFFFFCA C2580000_00
-1FFFFFFFFFFFFFFF 5E000000_01
-000080400000003F 57004000_01
-00000000001F75A5 49FBAD28_00
-0FFFFFFFFFFFFFFF 5D800000_01
-FFFFFFEFFFFFCFFE D1800002_01
-FFFFFEE775887420 D38C453C_01
-07FFFFFFFFFFFFFF 5D000000_01
-00000000000801FE 49001FE0_00
-0000000000213FF1 4A04FFC4_00
-03FFFFFFFFFFFFFF 5C800000_01
-07FEFFFFFFFFFFEE 5CFFE000_01
-0000000000000004 40800000_00
-01FFFFFFFFFFFFFF 5C000000_01
-0000000820000003 51020000_01
-FFFFFFF9AD105214 D0CA5DF6_01
-00FFFFFFFFFFFFFF 5B800000_01
-FFFFF00FFFFFFFBE D57F0000_01
-FFFFFFFFFFCC48E7 CA4EDC64_00
-007FFFFFFFFFFFFF 5B000000_01
-00000FFFEF7FFFFF 557FFEF8_01
-FFFFFFFFFF0BA6CB CB745935_00
-003FFFFFFFFFFFFF 5A800000_01
-FFFFFF7FBFFFFFBF D3004000_01
-FFFFFFFFFFF24425 C95BBDB0_00
-001FFFFFFFFFFFFF 5A000000_01
-200000001FFBFFFF 5E000000_01
-FFFFFF4E7115EC53 D3318EEA_01
-000FFFFFFFFFFFFF 59800000_01
-FFFFF803FFFFFFBF D4FF8000_01
-FFFFFC2E539ADCFE D4746B19_01
-0007FFFFFFFFFFFF 59000000_01
-FFFFFFFFFBFFFFFF CC800000_01
-00000055084732F3 52AA108E_01
-0003FFFFFFFFFFFF 58800000_01
-BFFF7FFFFFFFFE00 DE800100_01
-FFFFFFFFFFFF8543 C6F57A00_00
-0001FFFFFFFFFFFF 58000000_01
-0000001FFBFFE000 51FFDFFF_00
-FFFFFFFFFFFE491B C7DB7280_00
-0000FFFFFFFFFFFF 57800000_01
-FC00200000001FFE DC7FF800_01
-FFFFF16898822A24 D5697678_01
-00007FFFFFFFFFFF 57000000_01
-3FFF03FFFFFFFFFE 5E7FFC10_01
-FFFFFF8FFE18C7BF D2E003CE_01
-00003FFFFFFFFFFF 56800000_01
-FFFFFEFFFEFFFFFD D3800080_01
-00F03620C1266ED9 5B703621_01
-00001FFFFFFFFFFF 56000000_01
-BF7EFFFFFFFFFFFF DE810200_01
-FFFFFFFFFFFFFFD5 C22C0000_00
-00000FFFFFFFFFFF 55800000_01
-FFFBFFFFF803FFFE D8800001_01
-0000000000068684 48D0D080_00
-000007FFFFFFFFFF 55000000_01
-DFFFFFE00000001E DE000000_01
-FFFFFFFFFFFFECF5 C5985800_00
-000003FFFFFFFFFF 54800000_01
-FFFF00400000FFFF D77FC000_01
-0000000000000002 40000000_00
-000001FFFFFFFFFF 54000000_01
-FBFFFFFFFFFFBDFE DC800000_01
-0000000000000BC9 453C9000_00
-000000FFFFFFFFFF 53800000_01
-807FFFFFFFFFDFFE DEFF0000_01
-FFC274E35A70CD76 DA762C73_01
-0000007FFFFFFFFF 53000000_01
-0FFFFFFFFEFFFFFD 5D800000_01
-FFFFFFFF00E73AFC CF7F18C5_01
-0000003FFFFFFFFF 52800000_01
-FFC000000001000E DA800000_01
-FFFFFFFFFFFE15E9 C7F50B80_00
-0000001FFFFFFFFF 52000000_01
-0001FFFFFFFFF3FD 58000000_01
-0000000000000033 424C0000_00
-0000000FFFFFFFFF 51800000_01
-000000001FFFBFFF 4DFFFE00_01
-FFFFFFEE6B141E1B D18CA75F_01
-00000007FFFFFFFF 51000000_01
-FFFFFFFFF60007FF CD1FFF80_01
-00000001AB310BA6 4FD59886_01
-00000003FFFFFFFF 50800000_01
-0003FFFFB7FFFFFF 587FFFEE_01
-FFFFFFFFFFFFF195 C566B000_00
-00000001FFFFFFFF 50000000_01
-FFFFFFFF8000000B CF000000_01
-00000019BA8D5559 51CDD46B_01
-00000000FFFFFFFF 4F800000_01
-FBFEFFFFFFFFFFF9 DC802000_01
-FFFFFFB6F062822D D2921F3B_01
-000000007FFFFFFF 4F000000_01
-0001000000000082 57800000_01
-01CEAD9E2FB104A4 5BE756CF_01
-000000003FFFFFFF 4E800000_01
-000003FFFFFFFF7C 54800000_01
-FFFFFFFFFD681E78 CC25F862_00
-000000001FFFFFFF 4E000000_01
-00002000400001FF 56000100_01
-0000000000000018 41C00000_00
-000000000FFFFFFF 4D800000_01
-3FFF80000000003E 5E7FFE00_01
-FFFFFFFFFFFFFF95 C2D60000_00
-0000000007FFFFFF 4D000000_01
-010000BFFFFFFFFF 5B800060_01
-0000001697087B19 51B4B844_01
-0000000003FFFFFF 4C800000_01
-FBFFFFFFFFEEFFFD DC800000_01
-0000000E64BDFC55 51664BE0_01
-0000000001FFFFFF 4C000000_01
-FC00000001FFFFFE DC800000_01
-FFFED156A62AB849 D79754AD_01
-0000000000FFFFFF 4B7FFFFF_00
-FFFFFFF83FEFFFFD D0F80200_01
-00015354EAE7C259 57A9AA75_01
-00000000007FFFFF 4AFFFFFE_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFF0F4DF3C75 D170B20C_01
-00000000003FFFFF 4A7FFFFC_00
-FFFA000000001FFF D8C00000_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000001FFFFF 49FFFFF8_00
-FFFFFFFFFF7FFE40 CB0001C0_00
-FFFFFFDB5433CB9B D212AF31_01
-00000000000FFFFF 497FFFF0_00
-FFFFFDFFDFFDFFFD D4000801_01
-FFFFFFFFFFDEAE1F CA054784_00
-000000000007FFFF 48FFFFE0_00
-FFFFFFFFF0080006 CD7F8000_01
-FFFFFFFE7735DEC7 CFC46511_01
-000000000003FFFF 487FFFC0_00
-00000001FBFFFFFF 4FFE0000_01
-000003757D8B12ED 545D5F63_01
-000000000001FFFF 47FFFF80_00
-FFFFFE07F7FFFFFF D3FC0400_01
-00000A654064E046 55265406_01
-000000000000FFFF 477FFF00_00
-08000000000017FF 5D000000_01
-FFFFFFFFFFFFFFE7 C1C80000_00
-0000000000007FFF 46FFFE00_00
-07FFFFFFFFFFFDF6 5D000000_01
-FFFFAD78B3D6C3B6 D6A50E98_01
-0000000000003FFF 467FFC00_00
-0000300004000000 56400010_00
-FFFFFFF70B77F34F D10F4881_01
-0000000000001FFF 45FFF800_00
-FFFFFF80006FFFFE D2FFFF20_01
-0000013EB4D67EC8 539F5A6B_01
-0000000000000FFF 457FF000_00
-BFFFDFFFFBFFFFFF DE800040_01
-0005CEAF34EA1DC7 58B9D5E7_01
-00000000000007FF 44FFE000_00
-00004800007FFFFD 56900001_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000000003FF 447FC000_00
-0000000200001000 50000004_00
-00000000000360D0 48583400_00
-00000000000001FF 43FF8000_00
-01003FFFFFFFFFFC 5B802000_01
-00C000708FF1BA51 5B400071_01
-00000000000000FF 437F0000_00
-F802000003FFFFFF DCFFC000_01
-0F9E07DCC0BDC061 5D79E07E_01
-000000000000007F 42FE0000_00
-03FF0000000000FF 5C7FC000_01
-FFFFFFE1B9B2A079 D1F2326B_01
-000000000000003F 427C0000_00
-FFF80000000080FF D9000000_01
-00000000001EB5B4 49F5ADA0_00
-000000000000001F 41F80000_00
-000000000077FBFE 4AEFF7FC_00
-00000000005AC607 4AB58C0E_00
-000000000000000F 41700000_00
-FFFFFFFEF80000FF CF840000_01
-000005C5B9D66984 54B8B73B_01
-0000000000000007 40E00000_00
-C001FFFFFFF00000 DE7FF800_01
-00001D06B372AA06 55E8359C_01
-0000000000000003 40400000_00
+07FFFDFFFFFFFF7F_5CFFFFC0_01
+0000000032CC8B7A_4E4B322E_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_CE7FFF00_01
+032C857F319EDE38_5C4B2160_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_D4800001_01
+00394C79B6D3007B_5A6531E7_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_DC800002_01
+0000000001AE458D_4BD722C6_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+F9EB456140D88764_DCC29754_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_D5DFF800_01
+07DE834A248EDF36_5CFBD069_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC008_01
+FFFFFFFFFFE385E2_C9E3D0F0_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_DD7FBE00_01
+000000059EB1FD45_50B3D640_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_C84001C0_00
+FFFFFFFFFFFEDDFE_C7910100_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000000C89FF56B_4F489FF5_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF8_01
+1B5E4F0BE0DEBFF0_5DDAF278_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_D801FF00_01
+FFFFFFFFFFF4766B_C9389950_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000000C_41400000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+FFE662A109109D0A_D9CCEAF8_01
+0000000000001000_45800000_00
+C000000037FFFFFE_DE800000_01
+FFFFFFFFFFFFFFE4_C1E00000_00
+0000000000002000_46000000_00
+F801000000100000_DCFFE000_01
+FE114B79075F70EE_DBF75A43_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+00000000000003AC_446B0000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000004_01
+00000044A3A3DBE5_52894748_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_D9FFFE08_01
+FFFFFFFFFFFF1A91_C7656F00_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_D503C000_01
+0000000000003309_464C2400_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF8_01
+FFFFFFFFFFFFFF58_C3280000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_D207F800_01
+0000000000002980_46260000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF080_01
+000000000000005D_42BA0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF80_01
+FFFC8C23DA2CEAD8_D85CF709_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_DE000000_01
+FFFFFDE3C1DEC43C_D4070F88_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_D77FFFF4_01
+000000000030FFBE_4A43FEF8_00
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_D7FFFFFC_01
+FFFFFFFFEFDEED86_CD810894_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_DD400000_01
+000000001DA3FF45_4DED1FFA_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_CF7FFF00_01
+FFFFFFFE9B1BCB54_CFB2721A_01
+0000000008000000_4D000000_00
+00004000004001FE_56800001_01
+F27DD19DE6563714_DD5822E6_01
+0000000010000000_4D800000_00
+FFC00000004007FE_DA800000_01
+000000000001A359_47D1AC80_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C700040_01
+FFFFFFFFFE62EC20_CBCE89F0_00
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E800000_01
+000000000000285F_46217C00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_CE800020_01
+FFFFF836F99DBAA8_D4F920CC_01
+0000000100000000_4F800000_00
+00000020003FFEFE_52000100_01
+0033466832042D47_5A4D19A1_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_C4EF2000_00
+00000000003829C8_4A60A720_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_55800000_01
+0000000FB77C672B_517B77C6_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D000400_01
+0000000000001B78_45DBC000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_DB000000_01
+0000000000000071_42E20000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_55A00000_01
+FFFFFFFFFFFFFF86_C2F40000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+FFF8A60D9E19F17E_D8EB3E4C_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+FFFFFFFFF7506DBA_CD0AF924_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_C7820480_00
+FFFFFFFFFEA42AC9_CBADEA9C_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_55840000_01
+FFE7AA3F2BDACC89_D9C2AE07_01
+0000040000000000_54800000_00
+FFF8040000040000_D8FF8000_01
+FFFFFFFFFFFFFFFD_C0400000_00
+0000080000000000_55000000_00
+FFFF80000800001F_D6FFFFF0_01
+FFFDF681DECDADC9_D8025F88_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_D3800010_01
+FFFFFFFFFFFFCFBE_C6410800_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51102000_01
+FEC01FECA24DE1B0_DB9FF00A_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_DD000000_01
+F858A66761669936_DCF4EB33_01
+0000800000000000_57000000_00
+FFFEFF800000003E_D7804000_01
+F716EA43FAC45C97_DD0E915C_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_C2680000_00
+0024D70EC7661FD8_5A135C3B_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_DE7E0000_01
+FFD956DBD0AEE817_DA1AA491_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FC_01
+FFFFFFFFFFFF4300_C73D0000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+C12EDF40F41F6021_DE7B4483_01
+0010000000000000_59800000_00
+FF9000000000001D_DAE00000_01
+FFFFFFF83DE950F6_D0F842D6_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_DEFFFFF8_01
+FE2B59CB3A604D69_DBEA531A_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5F000000_01
+000000A37C210862_53237C21_01
+0080000000000000_5B000000_00
+0002000002000002_58000001_01
+FFFFB65CD8617789_D693464F_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55E00000_01
+FFFFFFFFFFFFF01D_C57E3000_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000000D098D19_4D5098D2_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C800000_01
+000006B3BD2C7BEF_54D677A6_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFF00_01
+FFFF4E5ADDDAA4A8_D731A522_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+FFFFFFFFFFFFFF21_C35F0000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83C000_01
+FFFFFFFFFC648262_CC66DF68_01
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_DE7FFF80_01
+FFFFFF7353AC45D2_D30CAC54_01
+8000000000000000_DF000000_00
+FFFFFFFFFFE7EFFF_C9C08008_00
+0000000000A1202D_4B21202D_00
+C000000000000000_DE800000_00
+FFFFFFFFFFFF5F7F_C7208100_00
+000000000040CA70_4A8194E0_00
+E000000000000000_DE000000_00
+0000200201FFFFFE_56000808_01
+00000003B55D87D4_506D5762_01
+F000000000000000_DD800000_00
+FF80000DFFFFFFFF_DAFFFFE4_01
+000000010510FAEF_4F82887D_01
+F800000000000000_DD000000_00
+0003FFF00000000F_587FFC00_01
+000000000000724A_46E49400_00
+FC00000000000000_DC800000_00
+FFFFFFDF80000002_D2020000_01
+0000000000000064_42C80000_00
+FE00000000000000_DC000000_00
+FEFFFFFFFFF800FE_DB800000_01
+FFFFFFC2C6222702_D274E777_01
+FF00000000000000_DB800000_00
+0000000408000002_50810000_01
+000000E96DF1CB41_53696DF2_01
+FF80000000000000_DB000000_00
+007FFFFFFFFFF9FE_5B000000_01
+F727F174DEE7DC85_DD0D80E9_01
+FFC0000000000000_DA800000_00
+8000000003FFFEFE_DF000000_01
+FFFFFFFFFFF0BD5B_C9742A50_00
+FFE0000000000000_DA000000_00
+0BEFFFFFFFFFFFFF_5D3F0000_01
+000000000002790C_481E4300_00
+FFF0000000000000_D9800000_00
+FFFFFFFFFFEFFBFA_C9802030_00
+000000169E75DF01_51B4F3AF_01
+FFF8000000000000_D9000000_00
+00000007FEFFDFFF_50FFDFFC_01
+000000000000000E_41600000_00
+FFFC000000000000_D8800000_00
+0003FFFE0007FFFE_587FFF80_01
+FFFFFFFFFFF28622_C9579DE0_00
+FFFE000000000000_D8000000_00
+FFFFFF7FFFFDF7FF_D3000002_01
+00072F0EC496FE21_58E5E1D9_01
+FFFF000000000000_D7800000_00
+DFBFFFFFFFFFFFFE_DE010000_01
+0000000000FC1FCA_4B7C1FCA_00
+FFFF800000000000_D7000000_00
+00000FFF800FFFFE_557FF801_01
+FFFF5194E4A9C2CE_D72E6B1B_01
+FFFFC00000000000_D6800000_00
+00000002100007FD_50040002_01
+FFFFFFFFFFC2D8FE_CA749C08_00
+FFFFE00000000000_D6000000_00
+000000000007FF6E_48FFEDC0_00
+000000000001766E_47BB3700_00
+FFFFF00000000000_D5800000_00
+0040000400000002_5A800008_01
+0000000000007841_46F08200_00
+FFFFF80000000000_D5000000_00
+3DFFFFFFFFFFFF7E_5E780000_01
+FFFFFFE549E17E30_D1D5B0F4_01
+FFFFFC0000000000_D4800000_00
+FFFFFFFFFFFFFEE1_C38F8000_00
+FFFFFFFFFFFFFFE7_C1C80000_00
+FFFFFE0000000000_D4000000_00
+000000000EFFFFDF_4D6FFFFE_01
+FFFFFFFFFFFFFF73_C30D0000_00
+FFFFFF0000000000_D3800000_00
+FD00000008000000_DC400000_01
+000000000001DBB1_47EDD880_00
+FFFFFF8000000000_D3000000_00
+FFFFFFFFFFF8007F_C8FFF020_00
+FFFFFFFEFD10A515_CF8177AD_01
+FFFFFFC000000000_D2800000_00
+FFEFFFFFFFFFFFFE_D9800000_01
+FAB02984F6283B6C_DCA9FACF_01
+FFFFFFE000000000_D2000000_00
+FFFFFFBC000001FE_D2880000_01
+FEB087C6B9FE7FE0_DBA7BC1D_01
+FFFFFFF000000000_D1800000_00
+FFF80001000007FE_D8FFFFE0_01
+00F2762EA6837956_5B72762F_01
+FFFFFFF800000000_D1000000_00
+FFF7E0FFFFFFFFFE_D901F000_01
+00002E1175484626_563845D5_01
+FFFFFFFC00000000_D0800000_00
+0000200020000FFE_56000080_01
+000000000000068F_44D1E000_00
+FFFFFFFE00000000_D0000000_00
+021FFFFFFFFBFFFF_5C080000_01
+FFFFFFFFFFFFFFF9_C0E00000_00
+FFFFFFFF00000000_CF800000_00
+FFFFFFD0000FFFFD_D23FFFC0_01
+000000BDF6658B83_533DF666_01
+FFFFFFFF80000000_CF000000_00
+1000001FFDFFFFFF_5D800001_01
+0000000000003B5B_466D6C00_00
+FFFFFFFFC0000000_CE800000_00
+FFFFFFBFFE0FFFFF_D28003E0_01
+FFFFFFFFFFFFFFF0_C1800000_00
+FFFFFFFFE0000000_CE000000_00
+FFFFFFFBF00007FF_D081FFFF_01
+01E986274F48EAAD_5BF4C314_01
+FFFFFFFFF0000000_CD800000_00
+1FFFFFFDFFFFFF7F_5E000000_01
+FFFFFFFFFFFFCB5A_C6529800_00
+FFFFFFFFF8000000_CD000000_00
+7FF000000000FFFF_5EFFE000_01
+00000003C2717FC3_50709C60_01
+FFFFFFFFFC000000_CC800000_00
+FFFFFFE00008001F_D1FFFFC0_01
+FFFFFFFFFFEFABDA_C982A130_00
+FFFFFFFFFE000000_CC000000_00
+0200000000000002_5C000000_01
+FFFFFFFFF8FDA53F_CCE04B58_01
+FFFFFFFFFF000000_CB800000_00
+F6000003FFFFFFFE_DD200000_01
+FFFFFFFFFFFFFFD0_C2400000_00
+FFFFFFFFFF800000_CB000000_00
+FFFFFFFFFFBFFF7E_CA800104_00
+00000000EE0FEA62_4F6E0FEA_01
+FFFFFFFFFFC00000_CA800000_00
+0000007FFF9FFFFD_52FFFF40_01
+00000037F35EDC1D_525FCD7B_01
+FFFFFFFFFFE00000_CA000000_00
+FFFFFFF7FDFFFF7D_D1002000_01
+00000000000001AD_43D68000_00
+FFFFFFFFFFF00000_C9800000_00
+FFFFFF0000100020_D37FFFF0_01
+27F167FBC7FC5F9A_5E1FC5A0_01
+FFFFFFFFFFF80000_C9000000_00
+003FFFFFFFFC0001_5A800000_01
+000E48F9F4EBD30E_59648F9F_01
+FFFFFFFFFFFC0000_C8800000_00
+DFFFFFFFFFFBFFFE_DE000000_01
+FC91C23EE8C9424F_DC5B8F70_01
+FFFFFFFFFFFE0000_C8000000_00
+F7DFFBFFFFFFFFFE_DD020040_01
+000000002CAE080C_4E32B820_01
+FFFFFFFFFFFF0000_C7800000_00
+FFFFC00010000020_D67FFFC0_01
+04D921F917B20E40_5C9B243F_01
+FFFFFFFFFFFF8000_C7000000_00
+F8000FFFFFFFFFFD_DCFFFE00_01
+FFF17C566BC7D811_D9683A99_01
+FFFFFFFFFFFFC000_C6800000_00
+00000000000000FE_437E0000_00
+FFF82AC14930D386_D8FAA7D7_01
+FFFFFFFFFFFFE000_C6000000_00
+00000000000003FC_447F0000_00
+000E62EC60E119FC_59662EC6_01
+FFFFFFFFFFFFF000_C5800000_00
+FFFFEFF7FF7FFFFE_D5804004_01
+0E2B1ECF210EEDC5_5D62B1ED_01
+FFFFFFFFFFFFF800_C5000000_00
+00000000007FFF1F_4AFFFE3E_00
+FFFFFE534F5676F7_D3D65855_01
+FFFFFFFFFFFFFC00_C4800000_00
+0000001004FFFFFD_51802800_01
+0000035C939669F1_545724E6_01
+FFFFFFFFFFFFFE00_C4000000_00
+1FFFFFFFFFFFFDFD_5E000000_01
+FFFFFFFFFFFFFF91_C2DE0000_00
+FFFFFFFFFFFFFF00_C3800000_00
+01FFFFFFFBFFEFFE_5C000000_01
+000000000000016E_43B70000_00
+FFFFFFFFFFFFFF80_C3000000_00
+FFF7FFFFFFFFF7FD_D9000000_01
+FFFFF8E2BCFAC553_D4E3A861_01
+FFFFFFFFFFFFFFC0_C2800000_00
+FFFFFBFFFFFE0FFE_D4800000_01
+00000001A4E704BF_4FD27382_01
+FFFFFFFFFFFFFFE0_C2000000_00
+1400007FFFFFFFFD_5DA00004_01
+FFFFFFFC93B187B4_D05B139E_01
+FFFFFFFFFFFFFFF0_C1800000_00
+40000000007FFFFD_5E800000_01
+000000000067D468_4ACFA8D0_00
+FFFFFFFFFFFFFFF8_C1000000_00
+007FFEFFFFFBFFFE_5AFFFE00_01
+FFFFFFE26CEC79F8_D1EC989C_01
+FFFFFFFFFFFFFFFC_C0800000_00
+00FFFFFF000000FF_5B7FFFFF_01
+FFFFFFFFE0D3983A_CDF9633E_01
+FFFFFFFFFFFFFFFE_C0000000_00
+00007FFFBFFF7FFE_56FFFF80_01
+FFFFFFFDF4A7088A_D002D63E_01
+FFFFFFFFFFFFFFFF_BF800000_00
+000008000000027E_55000000_01
+000000000000F4E8_4774E800_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFF83FFDF_CAF80042_00
+00000E11407887B2_55611408_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+04000003FFFFFFF6_5C800000_01
+0000000000000513_44A26000_00
+FFFFFFFFFFFFFFF7_C1100000_00
+BFFC00000000003E_DE800800_01
+00000008D7BBB75B_510D7BBB_01
+FFFFFFFFFFFFFFEF_C1880000_00
+000FFFFBFFFC0000_597FFFC0_01
+FFFFFFFFFFCD5A23_CA4A9774_00
+FFFFFFFFFFFFFFDF_C2040000_00
+FFBFDFFFBFFFFFFF_DA804001_01
+000000000000007F_42FE0000_00
+FFFFFFFFFFFFFFBF_C2820000_00
+00000007FF800003_50FFF000_01
+000000000002BB02_482EC080_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEE7FF_C78C0080_00
+00264B2B9BAD0DA2_5A192CAE_01
+FFFFFFFFFFFFFEFF_C3808000_00
+0000000000100803_49804018_00
+FF9B1DCB9F857D5E_DAC9C469_01
+FFFFFFFFFFFFFDFF_C4004000_00
+FFFFFFBFFFFFEFEE_D2800000_01
+F6FD7542899C1C6F_DD1028AC_01
+FFFFFFFFFFFFFBFF_C4802000_00
+FF800000004001FF_DB000000_01
+0000000002BE4932_4C2F924C_01
+FFFFFFFFFFFFF7FF_C5001000_00
+00001004000FFFFE_55802000_01
+FFFFFF9DAA0123E0_D2C4ABFE_01
+FFFFFFFFFFFFEFFF_C5800800_00
+00000001FDFFFDFE_4FFEFFFF_01
+FFFC1C8703B1DCB0_D878DE3F_01
+FFFFFFFFFFFFDFFF_C6000400_00
+FE0FE00000000000_DBF81000_00
+0779ED944A4E2779_5CEF3DB3_01
+FFFFFFFFFFFFBFFF_C6800200_00
+FBFFFE0400000000_DC800040_01
+0000010127E03666_538093F0_01
+FFFFFFFFFFFF7FFF_C7000100_00
+FFFFF0200000FFFE_D57E0000_01
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEFFFF_C7800080_00
+FFEFFE0000080000_D9801000_01
+FFFFFFFFFD3354EA_CC332AC6_01
+FFFFFFFFFFFDFFFF_C8000040_00
+003FF0000003FFFE_5A7FC000_01
+0000006375B23F7B_52C6EB64_01
+FFFFFFFFFFFBFFFF_C8800020_00
+000407FFFFFFFFF6_58810000_01
+0000000092117F38_4F12117F_01
+FFFFFFFFFFF7FFFF_C9000010_00
+FFFFFFFFFFFF7FFF_C7000100_00
+00000000000008BE_450BE000_00
+FFFFFFFFFFEFFFFF_C9800008_00
+004000020FFFFFFF_5A800004_01
+FFFFB84C2D8BC9CB_D68F67A5_01
+FFFFFFFFFFDFFFFF_CA000004_00
+00FFFFFFFFFFFFFD_5B800000_01
+00000023C2C6F284_520F0B1C_01
+FFFFFFFFFFBFFFFF_CA800002_00
+FFFDDFFFFFFFFFFD_D8080000_01
+00000000746356C4_4EE8C6AE_01
+FFFFFFFFFF7FFFFF_CB000001_00
+010000000000BFFF_5B800000_01
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFEFFFFFF_CB800000_01
+FFFFBF7FFBFFFFFE_D6810008_01
+00000006386CE889_50C70D9D_01
+FFFFFFFFFDFFFFFF_CC000000_01
+F00000F7FFFFFFFF_DD7FFFF1_01
+FFFDFC53090C46A4_D800EB3E_01
+FFFFFFFFFBFFFFFF_CC800000_01
+0000000000800047_4B000047_00
+FFFFFFFFD693872E_CE25B1E3_01
+FFFFFFFFF7FFFFFF_CD000000_01
+000000007FBFFBFF_4EFF7FF8_01
+00000026A7845E35_521A9E11_01
+FFFFFFFFEFFFFFFF_CD800000_01
+FFFFFFDFFFFFFBFD_D2000000_01
+000000001433D14C_4DA19E8A_01
+FFFFFFFFDFFFFFFF_CE000000_01
+0001FFFFFFE0000E_58000000_01
+F0F23E8068D3D84A_DD70DC18_01
+FFFFFFFFBFFFFFFF_CE800000_01
+F7FFBFFFFFFFBFFF_DD000400_01
+FFFFBD29B7459087_D685AC91_01
+FFFFFFFF7FFFFFFF_CF000000_01
+FFFFFFF8FFFFBFFF_D0E00008_01
+FFFFFFFFFFEDDC06_C9911FD0_00
+FFFFFFFEFFFFFFFF_CF800000_01
+FFFFFFF80001FFFF_D0FFFFC0_01
+0000000000002FF9_463FE400_00
+FFFFFFFDFFFFFFFF_D0000000_01
+004000040000FFFF_5A800008_01
+FFFFFFFFFFFFFFF1_C1700000_00
+FFFFFFFBFFFFFFFF_D0800000_01
+C0000000007FFFFA_DE800000_01
+FFFFFFFFFE053E2B_CBFD60EA_01
+FFFFFFF7FFFFFFFF_D1000000_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000000D_41500000_00
+FFFFFFEFFFFFFFFF_D1800000_01
+F80000000001007E_DD000000_01
+FFFFED48424AD9D6_D595BDEE_01
+FFFFFFDFFFFFFFFF_D2000000_01
+FFFFFE0001FEFFFF_D3FFFF01_01
+000000000000013B_439D8000_00
+FFFFFFBFFFFFFFFF_D2800000_01
+0007FBFFFFFDFFFE_58FF8000_01
+4A16BD4128090C83_5E942D7B_01
+FFFFFF7FFFFFFFFF_D3000000_01
+00FFF7FFFF7FFFFE_5B7FF800_01
+0000000000000006_40C00000_00
+FFFFFEFFFFFFFFFF_D3800000_01
+FBFFFFBFFFBFFFFF_DC800008_01
+00000000000001BA_43DD0000_00
+FFFFFDFFFFFFFFFF_D4000000_01
+0000000040000082_4E800001_01
+FF07A2BF5B689F89_DB785D41_01
+FFFFFBFFFFFFFFFF_D4800000_01
+0000001FF8000008_51FFC000_01
+F87CAA7DE672DE8B_DCF06AB0_01
+FFFFF7FFFFFFFFFF_D5000000_01
+07FFF80000000002_5CFFFF00_01
+0000000010A1E5B8_4D850F2E_01
+FFFFEFFFFFFFFFFF_D5800000_01
+F7FFFFE00007FFFF_DD000002_01
+FFFFFFFFFFF6ADFC_C9152040_00
+FFFFDFFFFFFFFFFF_D6000000_01
+FFFFFF03FFFFFFC0_D37C0000_01
+EA579475948F0032_DDAD435C_01
+FFFFBFFFFFFFFFFF_D6800000_01
+FC00000000003FF6_DC800000_01
+002E677AC313BF60_5A399DEB_01
+FFFF7FFFFFFFFFFF_D7000000_01
+02000007FF7FFFFF_5C000002_01
+0000000E999639F1_51699964_01
+FFFEFFFFFFFFFFFF_D7800000_01
+FFFF83FFFFFFFFBE_D6F80000_01
+000000000001537D_47A9BE80_00
+FFFDFFFFFFFFFFFF_D8000000_01
+EFFFFFC00000003D_DD800002_01
+FFFFFFF21FEDFD35_D15E0120_01
+FFFBFFFFFFFFFFFF_D8800000_01
+FFFFFFF0000007FE_D1800000_01
+FFFFFFFFFFDE0839_CA07DF1C_00
+FFF7FFFFFFFFFFFF_D9000000_01
+0000007FFFE000FF_52FFFFC0_01
+FFFFFFFF79F30F48_CF060CF1_01
+FFEFFFFFFFFFFFFF_D9800000_01
+FFFFFC13FFFFFFFD_D47B0000_01
+0000000000001B85_45DC2800_00
+FFDFFFFFFFFFFFFF_DA000000_01
+000008000007FFFE_55000000_01
+12DB4409E5AE87E6_5D96DA20_01
+FFBFFFFFFFFFFFFF_DA800000_01
+FFFFFFFFFFF7BFEE_C9040120_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FF7FFFFFFFFFFFFF_DB000000_01
+000000001040FFFE_4D820800_01
+00000909A09C13D3_55109A0A_01
+FEFFFFFFFFFFFFFF_DB800000_01
+FFFFFF01FFFFFF7F_D37E0000_01
+FFFFFF72E7D2575D_D30D182E_01
+FDFFFFFFFFFFFFFF_DC000000_01
+FFFFFFFFFFFEFFDB_C7801280_00
+0000000000000017_41B80000_00
+FBFFFFFFFFFFFFFF_DC800000_01
+100000001FFFFFF6_5D800000_01
+000000114B12EF51_518A5897_01
+F7FFFFFFFFFFFFFF_DD000000_01
+0407FFFFFFFFFEFF_5C810000_01
+FFFFFF769F3A5C2C_D30960C6_01
+EFFFFFFFFFFFFFFF_DD800000_01
+FFFFFFFDF7FFFFFD_D0020000_01
+FFFFFFFFFFFFFFF2_C1600000_00
+DFFFFFFFFFFFFFFF_DE000000_01
+FFFFFFFFFE0007FF_CBFFFC00_01
+000000000000001E_41F00000_00
+BFFFFFFFFFFFFFFF_DE800000_01
+FFF800000009FFFF_D9000000_01
+0000000000007AA4_46F54800_00
+7FFFFFFFFFFFFFFF_5F000000_01
+4080000000FFFFFF_5E810000_01
+000000000DE7601D_4D5E7602_01
+3FFFFFFFFFFFFFFF_5E800000_01
+FFCFFFFFFFBFFFFE_DA400000_01
+FFFFFFFFFFFFFFCA_C2580000_00
+1FFFFFFFFFFFFFFF_5E000000_01
+000080400000003F_57004000_01
+00000000001F75A5_49FBAD28_00
+0FFFFFFFFFFFFFFF_5D800000_01
+FFFFFFEFFFFFCFFE_D1800002_01
+FFFFFEE775887420_D38C453C_01
+07FFFFFFFFFFFFFF_5D000000_01
+00000000000801FE_49001FE0_00
+0000000000213FF1_4A04FFC4_00
+03FFFFFFFFFFFFFF_5C800000_01
+07FEFFFFFFFFFFEE_5CFFE000_01
+0000000000000004_40800000_00
+01FFFFFFFFFFFFFF_5C000000_01
+0000000820000003_51020000_01
+FFFFFFF9AD105214_D0CA5DF6_01
+00FFFFFFFFFFFFFF_5B800000_01
+FFFFF00FFFFFFFBE_D57F0000_01
+FFFFFFFFFFCC48E7_CA4EDC64_00
+007FFFFFFFFFFFFF_5B000000_01
+00000FFFEF7FFFFF_557FFEF8_01
+FFFFFFFFFF0BA6CB_CB745935_00
+003FFFFFFFFFFFFF_5A800000_01
+FFFFFF7FBFFFFFBF_D3004000_01
+FFFFFFFFFFF24425_C95BBDB0_00
+001FFFFFFFFFFFFF_5A000000_01
+200000001FFBFFFF_5E000000_01
+FFFFFF4E7115EC53_D3318EEA_01
+000FFFFFFFFFFFFF_59800000_01
+FFFFF803FFFFFFBF_D4FF8000_01
+FFFFFC2E539ADCFE_D4746B19_01
+0007FFFFFFFFFFFF_59000000_01
+FFFFFFFFFBFFFFFF_CC800000_01
+00000055084732F3_52AA108E_01
+0003FFFFFFFFFFFF_58800000_01
+BFFF7FFFFFFFFE00_DE800100_01
+FFFFFFFFFFFF8543_C6F57A00_00
+0001FFFFFFFFFFFF_58000000_01
+0000001FFBFFE000_51FFDFFF_00
+FFFFFFFFFFFE491B_C7DB7280_00
+0000FFFFFFFFFFFF_57800000_01
+FC00200000001FFE_DC7FF800_01
+FFFFF16898822A24_D5697678_01
+00007FFFFFFFFFFF_57000000_01
+3FFF03FFFFFFFFFE_5E7FFC10_01
+FFFFFF8FFE18C7BF_D2E003CE_01
+00003FFFFFFFFFFF_56800000_01
+FFFFFEFFFEFFFFFD_D3800080_01
+00F03620C1266ED9_5B703621_01
+00001FFFFFFFFFFF_56000000_01
+BF7EFFFFFFFFFFFF_DE810200_01
+FFFFFFFFFFFFFFD5_C22C0000_00
+00000FFFFFFFFFFF_55800000_01
+FFFBFFFFF803FFFE_D8800001_01
+0000000000068684_48D0D080_00
+000007FFFFFFFFFF_55000000_01
+DFFFFFE00000001E_DE000000_01
+FFFFFFFFFFFFECF5_C5985800_00
+000003FFFFFFFFFF_54800000_01
+FFFF00400000FFFF_D77FC000_01
+0000000000000002_40000000_00
+000001FFFFFFFFFF_54000000_01
+FBFFFFFFFFFFBDFE_DC800000_01
+0000000000000BC9_453C9000_00
+000000FFFFFFFFFF_53800000_01
+807FFFFFFFFFDFFE_DEFF0000_01
+FFC274E35A70CD76_DA762C73_01
+0000007FFFFFFFFF_53000000_01
+0FFFFFFFFEFFFFFD_5D800000_01
+FFFFFFFF00E73AFC_CF7F18C5_01
+0000003FFFFFFFFF_52800000_01
+FFC000000001000E_DA800000_01
+FFFFFFFFFFFE15E9_C7F50B80_00
+0000001FFFFFFFFF_52000000_01
+0001FFFFFFFFF3FD_58000000_01
+0000000000000033_424C0000_00
+0000000FFFFFFFFF_51800000_01
+000000001FFFBFFF_4DFFFE00_01
+FFFFFFEE6B141E1B_D18CA75F_01
+00000007FFFFFFFF_51000000_01
+FFFFFFFFF60007FF_CD1FFF80_01
+00000001AB310BA6_4FD59886_01
+00000003FFFFFFFF_50800000_01
+0003FFFFB7FFFFFF_587FFFEE_01
+FFFFFFFFFFFFF195_C566B000_00
+00000001FFFFFFFF_50000000_01
+FFFFFFFF8000000B_CF000000_01
+00000019BA8D5559_51CDD46B_01
+00000000FFFFFFFF_4F800000_01
+FBFEFFFFFFFFFFF9_DC802000_01
+FFFFFFB6F062822D_D2921F3B_01
+000000007FFFFFFF_4F000000_01
+0001000000000082_57800000_01
+01CEAD9E2FB104A4_5BE756CF_01
+000000003FFFFFFF_4E800000_01
+000003FFFFFFFF7C_54800000_01
+FFFFFFFFFD681E78_CC25F862_00
+000000001FFFFFFF_4E000000_01
+00002000400001FF_56000100_01
+0000000000000018_41C00000_00
+000000000FFFFFFF_4D800000_01
+3FFF80000000003E_5E7FFE00_01
+FFFFFFFFFFFFFF95_C2D60000_00
+0000000007FFFFFF_4D000000_01
+010000BFFFFFFFFF_5B800060_01
+0000001697087B19_51B4B844_01
+0000000003FFFFFF_4C800000_01
+FBFFFFFFFFEEFFFD_DC800000_01
+0000000E64BDFC55_51664BE0_01
+0000000001FFFFFF_4C000000_01
+FC00000001FFFFFE_DC800000_01
+FFFED156A62AB849_D79754AD_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_D0F80200_01
+00015354EAE7C259_57A9AA75_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFF0F4DF3C75_D170B20C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_D8C00000_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_CB0001C0_00
+FFFFFFDB5433CB9B_D212AF31_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_D4000801_01
+FFFFFFFFFFDEAE1F_CA054784_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_CD7F8000_01
+FFFFFFFE7735DEC7_CFC46511_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFE0000_01
+000003757D8B12ED_545D5F63_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_D3FC0400_01
+00000A654064E046_55265406_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+FFFFFFFFFFFFFFE7_C1C80000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5D000000_01
+FFFFAD78B3D6C3B6_D6A50E98_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+FFFFFFF70B77F34F_D10F4881_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_D2FFFF20_01
+0000013EB4D67EC8_539F5A6B_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_DE800040_01
+0005CEAF34EA1DC7_58B9D5E7_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900001_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000360D0_48583400_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B802000_01
+00C000708FF1BA51_5B400071_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_DCFFC000_01
+0F9E07DCC0BDC061_5D79E07E_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+FFFFFFE1B9B2A079_D1F2326B_01
+000000000000003F_427C0000_00
+FFF80000000080FF_D9000000_01
+00000000001EB5B4_49F5ADA0_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+00000000005AC607_4AB58C0E_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_CF840000_01
+000005C5B9D66984_54B8B73B_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_DE7FF800_01
+00001D06B372AA06_55E8359C_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_ru.tv b/wally-pipelined/testbench/fp/i64_f32_ru.tv
index b8828358f..e5f4d5dc5 100644
--- a/wally-pipelined/testbench/fp/i64_f32_ru.tv
+++ b/wally-pipelined/testbench/fp/i64_f32_ru.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 5CFFFFC0_01
-0000000032CC8B7A 4E4B322E_01
-0000000000000000 00000000_00
-FFFFFFFFC0003FFE CE7FFF00_01
-032C857F319EDE38 5C4B2160_01
-0000000000000001 3F800000_00
-FFFFFBFFFFF8003E D4800000_01
-00394C79B6D3007B 5A6531E7_01
-0000000000000002 40000000_00
-FBFFFFF0000001FF DC800001_01
-0000000001AE458D 4BD722C7_01
-0000000000000004 40800000_00
-00040008000007FE 58800101_01
-F9EB456140D88764 DCC29753_01
-0000000000000008 41000000_00
-FFFFE400FFFFFFFE D5DFF800_01
-07DE834A248EDF36 5CFBD06A_01
-0000000000000010 41800000_00
-00000003FF001FFF 507FC008_01
-FFFFFFFFFFE385E2 C9E3D0F0_00
-0000000000000020 42000000_00
-F0041FFFFFFFFFFF DD7FBE00_01
-000000059EB1FD45 50B3D640_01
-0000000000000040 42800000_00
-FFFFFFFFFFFCFFF9 C84001C0_00
-FFFFFFFFFFFEDDFE C7910100_00
-0000000000000080 43000000_00
-000000000003FF00 487FC000_00
-00000000C89FF56B 4F489FF6_01
-0000000000000100 43800000_00
-000FFFFF7FDFFFFF 597FFFF8_01
-1B5E4F0BE0DEBFF0 5DDAF279_01
-0000000000000200 44000000_00
-FFFDF803FFFFFFFF D801FF00_01
-FFFFFFFFFFF4766B C9389950_00
-0000000000000400 44800000_00
-0000080100000FFE 55001001_01
-000000000000000C 41400000_00
-0000000000000800 45000000_00
-0048000000100000 5A900001_01
-FFE662A109109D0A D9CCEAF7_01
-0000000000001000 45800000_00
-C000000037FFFFFE DE7FFFFF_01
-FFFFFFFFFFFFFFE4 C1E00000_00
-0000000000002000 46000000_00
-F801000000100000 DCFFDFFF_01
-FE114B79075F70EE DBF75A43_01
-0000000000004000 46800000_00
-100000000001003E 5D800001_01
-00000000000003AC 446B0000_00
-0000000000008000 47000000_00
-200000FFFFFFF800 5E000004_01
-00000044A3A3DBE5 52894748_01
-0000000000010000 47800000_00
-FFE0003EFFFFFFFF D9FFFE08_01
-FFFFFFFFFFFF1A91 C7656F00_00
-0000000000020000 48000000_00
-FFFFF7C3FFFFFFFD D503C000_01
-0000000000003309 464C2400_00
-0000000000040000 48800000_00
-000083FFF7FFFFFE 5703FFF8_01
-FFFFFFFFFFFFFF58 C3280000_00
-0000000000080000 49000000_00
-FFFFFFDE01FFFFFE D207F800_01
-0000000000002980 46260000_00
-0000000000100000 49800000_00
-00000000FFF07FFF 4F7FF080_01
-000000000000005D 42BA0000_00
-0000000000200000 4A000000_00
-000020FFDFFFFFFF 5603FF80_01
-FFFC8C23DA2CEAD8 D85CF709_01
-0000000000400000 4A800000_00
-E0000000003FFFDF DDFFFFFF_01
-FFFFFDE3C1DEC43C D4070F88_01
-0000000000800000 4B000000_00
-FFFF00000BFFFFFD D77FFFF4_01
-000000000030FFBE 4A43FEF8_00
-0000000001000000 4B800000_00
-FFFE000007FFEFFD D7FFFFFC_01
-FFFFFFFFEFDEED86 CD810893_01
-0000000002000000 4C000000_00
-F3FFFFFFFFBFFFFE DD400000_01
-000000001DA3FF45 4DED1FFB_01
-0000000004000000 4C800000_00
-FFFFFFFF00010007 CF7FFEFF_01
-FFFFFFFE9B1BCB54 CFB2721A_01
-0000000008000000 4D000000_00
-00004000004001FE 56800001_01
-F27DD19DE6563714 DD5822E6_01
-0000000010000000 4D800000_00
-FFC00000004007FE DA7FFFFF_01
-000000000001A359 47D1AC80_00
-0000000020000000 4E000000_00
-0000000003C000FE 4C700040_01
-FFFFFFFFFE62EC20 CBCE89F0_00
-0000000040000000 4E800000_00
-000000003FFFFFFD 4E800000_01
-000000000000285F 46217C00_00
-0000000080000000 4F000000_00
-FFFFFFFFBFFFF00F CE80001F_01
-FFFFF836F99DBAA8 D4F920CC_01
-0000000100000000 4F800000_00
-00000020003FFEFE 52000100_01
-0033466832042D47 5A4D19A1_01
-0000000200000000 50000000_00
-FFFFFFFFFFFFF887 C4EF2000_00
-00000000003829C8 4A60A720_00
-0000000400000000 50800000_00
-00000FFFFFFF7DFD 55800000_01
-0000000FB77C672B 517B77C7_01
-0000000800000000 51000000_00
-08003FFDFFFFFFFE 5D000400_01
-0000000000001B78 45DBC000_00
-0000001000000000 51800000_00
-FF7FFFFFFFEFDFFF DB000000_01
-0000000000000071 42E20000_00
-0000002000000000 52000000_00
-000013FFFFFFFDFF 55A00000_01
-FFFFFFFFFFFFFF86 C2F40000_00
-0000004000000000 52800000_00
-0800000000040800 5D000001_01
-FFF8A60D9E19F17E D8EB3E4C_01
-0000008000000000 53000000_00
-000077FFF0000000 56EFFFE0_00
-FFFFFFFFF7506DBA CD0AF924_01
-0000010000000000 53800000_00
-FFFFFFFFFFFEFBF7 C7820480_00
-FFFFFFFFFEA42AC9 CBADEA9B_01
-0000020000000000 54000000_00
-0000107FFFFFDFFD 55840000_01
-FFE7AA3F2BDACC89 D9C2AE06_01
-0000040000000000 54800000_00
-FFF8040000040000 D8FF7FFF_01
-FFFFFFFFFFFFFFFD C0400000_00
-0000080000000000 55000000_00
-FFFF80000800001F D6FFFFEF_01
-FFFDF681DECDADC9 D8025F88_01
-0000100000000000 55800000_00
-FFFFFEFFFFE0007F D380000F_01
-FFFFFFFFFFFFCFBE C6410800_00
-0000200000000000 56000000_00
-0000000901FFFFFD 51102000_01
-FEC01FECA24DE1B0 DB9FF009_01
-0000400000000000 56800000_00
-F7FFFFFFDFFF7FFF DD000000_01
-F858A66761669936 DCF4EB33_01
-0000800000000000 57000000_00
-FFFEFF800000003E D7803FFF_01
-F716EA43FAC45C97 DD0E915B_01
-0001000000000000 57800000_00
-FFFFFFFFFFFFFFC6 C2680000_00
-0024D70EC7661FD8 5A135C3C_01
-0002000000000000 58000000_00
-C07FFFFFFFFFFFFE DE7E0000_01
-FFD956DBD0AEE817 DA1AA490_01
-0004000000000000 58800000_00
-020003EFFFFFFFFE 5C0000FC_01
-FFFFFFFFFFFF4300 C73D0000_00
-0008000000000000 59000000_00
-4000000004002000 5E800001_01
-C12EDF40F41F6021 DE7B4482_01
-0010000000000000 59800000_00
-FF9000000000001D DADFFFFF_01
-FFFFFFF83DE950F6 D0F842D5_01
-0020000000000000 5A000000_00
-800003FFFFFC0000 DEFFFFF8_01
-FE2B59CB3A604D69 DBEA531A_01
-0040000000000000 5A800000_00
-7FFFFFFDFFFFBFFF 5F000000_01
-000000A37C210862 53237C22_01
-0080000000000000 5B000000_00
-0002000002000002 58000001_01
-FFFFB65CD8617789 D693464F_01
-0100000000000000 5B800000_00
-00001BFFFFFFBFFE 55E00000_01
-FFFFFFFFFFFFF01D C57E3000_00
-0200000000000000 5C000000_00
-1000008000003FFF 5D800005_01
-000000000D098D19 4D5098D2_01
-0400000000000000 5C800000_00
-03FFFFFFFFFFF5FF 5C800000_01
-000006B3BD2C7BEF 54D677A6_01
-0800000000000000 5D000000_00
-00003FFFBFFFFFFE 567FFF00_01
-FFFF4E5ADDDAA4A8 D731A522_01
-1000000000000000 5D800000_00
-001FFFC000000FFD 59FFFE01_01
-FFFFFFFFFFFFFF21 C35F0000_00
-2000000000000000 5E000000_00
-0000000041DFFFFF 4E83C000_01
-FFFFFFFFFC648262 CC66DF67_01
-4000000000000000 5E800000_00
-C0001FFFFFFFFFFB DE7FFF80_01
-FFFFFF7353AC45D2 D30CAC53_01
-8000000000000000 DF000000_00
-FFFFFFFFFFE7EFFF C9C08008_00
-0000000000A1202D 4B21202D_00
-C000000000000000 DE800000_00
-FFFFFFFFFFFF5F7F C7208100_00
-000000000040CA70 4A8194E0_00
-E000000000000000 DE000000_00
-0000200201FFFFFE 56000808_01
-00000003B55D87D4 506D5762_01
-F000000000000000 DD800000_00
-FF80000DFFFFFFFF DAFFFFE4_01
-000000010510FAEF 4F82887E_01
-F800000000000000 DD000000_00
-0003FFF00000000F 587FFC01_01
-000000000000724A 46E49400_00
-FC00000000000000 DC800000_00
-FFFFFFDF80000002 D201FFFF_01
-0000000000000064 42C80000_00
-FE00000000000000 DC000000_00
-FEFFFFFFFFF800FE DB800000_01
-FFFFFFC2C6222702 D274E777_01
-FF00000000000000 DB800000_00
-0000000408000002 50810001_01
-000000E96DF1CB41 53696DF2_01
-FF80000000000000 DB000000_00
-007FFFFFFFFFF9FE 5B000000_01
-F727F174DEE7DC85 DD0D80E8_01
-FFC0000000000000 DA800000_00
-8000000003FFFEFE DEFFFFFF_01
-FFFFFFFFFFF0BD5B C9742A50_00
-FFE0000000000000 DA000000_00
-0BEFFFFFFFFFFFFF 5D3F0000_01
-000000000002790C 481E4300_00
-FFF0000000000000 D9800000_00
-FFFFFFFFFFEFFBFA C9802030_00
-000000169E75DF01 51B4F3AF_01
-FFF8000000000000 D9000000_00
-00000007FEFFDFFF 50FFDFFC_01
-000000000000000E 41600000_00
-FFFC000000000000 D8800000_00
-0003FFFE0007FFFE 587FFF81_01
-FFFFFFFFFFF28622 C9579DE0_00
-FFFE000000000000 D8000000_00
-FFFFFF7FFFFDF7FF D3000002_01
-00072F0EC496FE21 58E5E1D9_01
-FFFF000000000000 D7800000_00
-DFBFFFFFFFFFFFFE DE010000_01
-0000000000FC1FCA 4B7C1FCA_00
-FFFF800000000000 D7000000_00
-00000FFF800FFFFE 557FF801_01
-FFFF5194E4A9C2CE D72E6B1B_01
-FFFFC00000000000 D6800000_00
-00000002100007FD 50040002_01
-FFFFFFFFFFC2D8FE CA749C08_00
-FFFFE00000000000 D6000000_00
-000000000007FF6E 48FFEDC0_00
-000000000001766E 47BB3700_00
-FFFFF00000000000 D5800000_00
-0040000400000002 5A800009_01
-0000000000007841 46F08200_00
-FFFFF80000000000 D5000000_00
-3DFFFFFFFFFFFF7E 5E780000_01
-FFFFFFE549E17E30 D1D5B0F4_01
-FFFFFC0000000000 D4800000_00
-FFFFFFFFFFFFFEE1 C38F8000_00
-FFFFFFFFFFFFFFE7 C1C80000_00
-FFFFFE0000000000 D4000000_00
-000000000EFFFFDF 4D6FFFFE_01
-FFFFFFFFFFFFFF73 C30D0000_00
-FFFFFF0000000000 D3800000_00
-FD00000008000000 DC3FFFFF_01
-000000000001DBB1 47EDD880_00
-FFFFFF8000000000 D3000000_00
-FFFFFFFFFFF8007F C8FFF020_00
-FFFFFFFEFD10A515 CF8177AD_01
-FFFFFFC000000000 D2800000_00
-FFEFFFFFFFFFFFFE D9800000_01
-FAB02984F6283B6C DCA9FACF_01
-FFFFFFE000000000 D2000000_00
-FFFFFFBC000001FE D287FFFF_01
-FEB087C6B9FE7FE0 DBA7BC1C_01
-FFFFFFF000000000 D1800000_00
-FFF80001000007FE D8FFFFDF_01
-00F2762EA6837956 5B72762F_01
-FFFFFFF800000000 D1000000_00
-FFF7E0FFFFFFFFFE D901F000_01
-00002E1175484626 563845D6_01
-FFFFFFFC00000000 D0800000_00
-0000200020000FFE 56000081_01
-000000000000068F 44D1E000_00
-FFFFFFFE00000000 D0000000_00
-021FFFFFFFFBFFFF 5C080000_01
-FFFFFFFFFFFFFFF9 C0E00000_00
-FFFFFFFF00000000 CF800000_00
-FFFFFFD0000FFFFD D23FFFC0_01
-000000BDF6658B83 533DF666_01
-FFFFFFFF80000000 CF000000_00
-1000001FFDFFFFFF 5D800001_01
-0000000000003B5B 466D6C00_00
-FFFFFFFFC0000000 CE800000_00
-FFFFFFBFFE0FFFFF D28003E0_01
-FFFFFFFFFFFFFFF0 C1800000_00
-FFFFFFFFE0000000 CE000000_00
-FFFFFFFBF00007FF D081FFFF_01
-01E986274F48EAAD 5BF4C314_01
-FFFFFFFFF0000000 CD800000_00
-1FFFFFFDFFFFFF7F 5E000000_01
-FFFFFFFFFFFFCB5A C6529800_00
-FFFFFFFFF8000000 CD000000_00
-7FF000000000FFFF 5EFFE001_01
-00000003C2717FC3 50709C60_01
-FFFFFFFFFC000000 CC800000_00
-FFFFFFE00008001F D1FFFFBF_01
-FFFFFFFFFFEFABDA C982A130_00
-FFFFFFFFFE000000 CC000000_00
-0200000000000002 5C000001_01
-FFFFFFFFF8FDA53F CCE04B58_01
-FFFFFFFFFF000000 CB800000_00
-F6000003FFFFFFFE DD1FFFFF_01
-FFFFFFFFFFFFFFD0 C2400000_00
-FFFFFFFFFF800000 CB000000_00
-FFFFFFFFFFBFFF7E CA800104_00
-00000000EE0FEA62 4F6E0FEB_01
-FFFFFFFFFFC00000 CA800000_00
-0000007FFF9FFFFD 52FFFF40_01
-00000037F35EDC1D 525FCD7C_01
-FFFFFFFFFFE00000 CA000000_00
-FFFFFFF7FDFFFF7D D1002000_01
-00000000000001AD 43D68000_00
-FFFFFFFFFFF00000 C9800000_00
-FFFFFF0000100020 D37FFFEF_01
-27F167FBC7FC5F9A 5E1FC5A0_01
-FFFFFFFFFFF80000 C9000000_00
-003FFFFFFFFC0001 5A800000_01
-000E48F9F4EBD30E 59648FA0_01
-FFFFFFFFFFFC0000 C8800000_00
-DFFFFFFFFFFBFFFE DE000000_01
-FC91C23EE8C9424F DC5B8F70_01
-FFFFFFFFFFFE0000 C8000000_00
-F7DFFBFFFFFFFFFE DD020040_01
-000000002CAE080C 4E32B821_01
-FFFFFFFFFFFF0000 C7800000_00
-FFFFC00010000020 D67FFFBF_01
-04D921F917B20E40 5C9B2440_01
-FFFFFFFFFFFF8000 C7000000_00
-F8000FFFFFFFFFFD DCFFFE00_01
-FFF17C566BC7D811 D9683A99_01
-FFFFFFFFFFFFC000 C6800000_00
-00000000000000FE 437E0000_00
-FFF82AC14930D386 D8FAA7D6_01
-FFFFFFFFFFFFE000 C6000000_00
-00000000000003FC 447F0000_00
-000E62EC60E119FC 59662EC7_01
-FFFFFFFFFFFFF000 C5800000_00
-FFFFEFF7FF7FFFFE D5804004_01
-0E2B1ECF210EEDC5 5D62B1ED_01
-FFFFFFFFFFFFF800 C5000000_00
-00000000007FFF1F 4AFFFE3E_00
-FFFFFE534F5676F7 D3D65854_01
-FFFFFFFFFFFFFC00 C4800000_00
-0000001004FFFFFD 51802800_01
-0000035C939669F1 545724E6_01
-FFFFFFFFFFFFFE00 C4000000_00
-1FFFFFFFFFFFFDFD 5E000000_01
-FFFFFFFFFFFFFF91 C2DE0000_00
-FFFFFFFFFFFFFF00 C3800000_00
-01FFFFFFFBFFEFFE 5C000000_01
-000000000000016E 43B70000_00
-FFFFFFFFFFFFFF80 C3000000_00
-FFF7FFFFFFFFF7FD D9000000_01
-FFFFF8E2BCFAC553 D4E3A860_01
-FFFFFFFFFFFFFFC0 C2800000_00
-FFFFFBFFFFFE0FFE D4800000_01
-00000001A4E704BF 4FD27383_01
-FFFFFFFFFFFFFFE0 C2000000_00
-1400007FFFFFFFFD 5DA00004_01
-FFFFFFFC93B187B4 D05B139E_01
-FFFFFFFFFFFFFFF0 C1800000_00
-40000000007FFFFD 5E800001_01
-000000000067D468 4ACFA8D0_00
-FFFFFFFFFFFFFFF8 C1000000_00
-007FFEFFFFFBFFFE 5AFFFE00_01
-FFFFFFE26CEC79F8 D1EC989C_01
-FFFFFFFFFFFFFFFC C0800000_00
-00FFFFFF000000FF 5B800000_01
-FFFFFFFFE0D3983A CDF9633E_01
-FFFFFFFFFFFFFFFE C0000000_00
-00007FFFBFFF7FFE 56FFFF80_01
-FFFFFFFDF4A7088A D002D63D_01
-FFFFFFFFFFFFFFFF BF800000_00
-000008000000027E 55000001_01
-000000000000F4E8 4774E800_00
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFF83FFDF CAF80042_00
-00000E11407887B2 55611408_01
-FFFFFFFFFFFFFFFB C0A00000_00
-04000003FFFFFFF6 5C800001_01
-0000000000000513 44A26000_00
-FFFFFFFFFFFFFFF7 C1100000_00
-BFFC00000000003E DE8007FF_01
-00000008D7BBB75B 510D7BBC_01
-FFFFFFFFFFFFFFEF C1880000_00
-000FFFFBFFFC0000 597FFFC0_01
-FFFFFFFFFFCD5A23 CA4A9774_00
-FFFFFFFFFFFFFFDF C2040000_00
-FFBFDFFFBFFFFFFF DA804000_01
-000000000000007F 42FE0000_00
-FFFFFFFFFFFFFFBF C2820000_00
-00000007FF800003 50FFF001_01
-000000000002BB02 482EC080_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEE7FF C78C0080_00
-00264B2B9BAD0DA2 5A192CAF_01
-FFFFFFFFFFFFFEFF C3808000_00
-0000000000100803 49804018_00
-FF9B1DCB9F857D5E DAC9C468_01
-FFFFFFFFFFFFFDFF C4004000_00
-FFFFFFBFFFFFEFEE D2800000_01
-F6FD7542899C1C6F DD1028AB_01
-FFFFFFFFFFFFFBFF C4802000_00
-FF800000004001FF DAFFFFFF_01
-0000000002BE4932 4C2F924D_01
-FFFFFFFFFFFFF7FF C5001000_00
-00001004000FFFFE 55802001_01
-FFFFFF9DAA0123E0 D2C4ABFD_01
-FFFFFFFFFFFFEFFF C5800800_00
-00000001FDFFFDFE 4FFEFFFF_01
-FFFC1C8703B1DCB0 D878DE3F_01
-FFFFFFFFFFFFDFFF C6000400_00
-FE0FE00000000000 DBF81000_00
-0779ED944A4E2779 5CEF3DB3_01
-FFFFFFFFFFFFBFFF C6800200_00
-FBFFFE0400000000 DC80003F_01
-0000010127E03666 538093F1_01
-FFFFFFFFFFFF7FFF C7000100_00
-FFFFF0200000FFFE D57DFFFF_01
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEFFFF C7800080_00
-FFEFFE0000080000 D9800FFF_01
-FFFFFFFFFD3354EA CC332AC5_01
-FFFFFFFFFFFDFFFF C8000040_00
-003FF0000003FFFE 5A7FC001_01
-0000006375B23F7B 52C6EB65_01
-FFFFFFFFFFFBFFFF C8800020_00
-000407FFFFFFFFF6 58810000_01
-0000000092117F38 4F121180_01
-FFFFFFFFFFF7FFFF C9000010_00
-FFFFFFFFFFFF7FFF C7000100_00
-00000000000008BE 450BE000_00
-FFFFFFFFFFEFFFFF C9800008_00
-004000020FFFFFFF 5A800005_01
-FFFFB84C2D8BC9CB D68F67A4_01
-FFFFFFFFFFDFFFFF CA000004_00
-00FFFFFFFFFFFFFD 5B800000_01
-00000023C2C6F284 520F0B1C_01
-FFFFFFFFFFBFFFFF CA800002_00
-FFFDDFFFFFFFFFFD D8080000_01
-00000000746356C4 4EE8C6AE_01
-FFFFFFFFFF7FFFFF CB000001_00
-010000000000BFFF 5B800001_01
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFEFFFFFF CB800000_01
-FFFFBF7FFBFFFFFE D6810008_01
-00000006386CE889 50C70D9E_01
-FFFFFFFFFDFFFFFF CC000000_01
-F00000F7FFFFFFFF DD7FFFF0_01
-FFFDFC53090C46A4 D800EB3D_01
-FFFFFFFFFBFFFFFF CC800000_01
-0000000000800047 4B000047_00
-FFFFFFFFD693872E CE25B1E3_01
-FFFFFFFFF7FFFFFF CD000000_01
-000000007FBFFBFF 4EFF7FF8_01
-00000026A7845E35 521A9E12_01
-FFFFFFFFEFFFFFFF CD800000_01
-FFFFFFDFFFFFFBFD D2000000_01
-000000001433D14C 4DA19E8B_01
-FFFFFFFFDFFFFFFF CE000000_01
-0001FFFFFFE0000E 58000000_01
-F0F23E8068D3D84A DD70DC17_01
-FFFFFFFFBFFFFFFF CE800000_01
-F7FFBFFFFFFFBFFF DD000400_01
-FFFFBD29B7459087 D685AC91_01
-FFFFFFFF7FFFFFFF CF000000_01
-FFFFFFF8FFFFBFFF D0E00008_01
-FFFFFFFFFFEDDC06 C9911FD0_00
-FFFFFFFEFFFFFFFF CF800000_01
-FFFFFFF80001FFFF D0FFFFC0_01
-0000000000002FF9 463FE400_00
-FFFFFFFDFFFFFFFF D0000000_01
-004000040000FFFF 5A800009_01
-FFFFFFFFFFFFFFF1 C1700000_00
-FFFFFFFBFFFFFFFF D0800000_01
-C0000000007FFFFA DE7FFFFF_01
-FFFFFFFFFE053E2B CBFD60EA_01
-FFFFFFF7FFFFFFFF D1000000_01
-7FFE000007FFFFFF 5EFFFC01_01
-000000000000000D 41500000_00
-FFFFFFEFFFFFFFFF D1800000_01
-F80000000001007E DCFFFFFF_01
-FFFFED48424AD9D6 D595BDED_01
-FFFFFFDFFFFFFFFF D2000000_01
-FFFFFE0001FEFFFF D3FFFF00_01
-000000000000013B 439D8000_00
-FFFFFFBFFFFFFFFF D2800000_01
-0007FBFFFFFDFFFE 58FF8000_01
-4A16BD4128090C83 5E942D7B_01
-FFFFFF7FFFFFFFFF D3000000_01
-00FFF7FFFF7FFFFE 5B7FF800_01
-0000000000000006 40C00000_00
-FFFFFEFFFFFFFFFF D3800000_01
-FBFFFFBFFFBFFFFF DC800008_01
-00000000000001BA 43DD0000_00
-FFFFFDFFFFFFFFFF D4000000_01
-0000000040000082 4E800002_01
-FF07A2BF5B689F89 DB785D40_01
-FFFFFBFFFFFFFFFF D4800000_01
-0000001FF8000008 51FFC001_01
-F87CAA7DE672DE8B DCF06AB0_01
-FFFFF7FFFFFFFFFF D5000000_01
-07FFF80000000002 5CFFFF01_01
-0000000010A1E5B8 4D850F2E_01
-FFFFEFFFFFFFFFFF D5800000_01
-F7FFFFE00007FFFF DD000001_01
-FFFFFFFFFFF6ADFC C9152040_00
-FFFFDFFFFFFFFFFF D6000000_01
-FFFFFF03FFFFFFC0 D37C0000_01
-EA579475948F0032 DDAD435C_01
-FFFFBFFFFFFFFFFF D6800000_01
-FC00000000003FF6 DC7FFFFF_01
-002E677AC313BF60 5A399DEC_01
-FFFF7FFFFFFFFFFF D7000000_01
-02000007FF7FFFFF 5C000002_01
-0000000E999639F1 51699964_01
-FFFEFFFFFFFFFFFF D7800000_01
-FFFF83FFFFFFFFBE D6F80000_01
-000000000001537D 47A9BE80_00
-FFFDFFFFFFFFFFFF D8000000_01
-EFFFFFC00000003D DD800001_01
-FFFFFFF21FEDFD35 D15E0120_01
-FFFBFFFFFFFFFFFF D8800000_01
-FFFFFFF0000007FE D17FFFFF_01
-FFFFFFFFFFDE0839 CA07DF1C_00
-FFF7FFFFFFFFFFFF D9000000_01
-0000007FFFE000FF 52FFFFC1_01
-FFFFFFFF79F30F48 CF060CF0_01
-FFEFFFFFFFFFFFFF D9800000_01
-FFFFFC13FFFFFFFD D47B0000_01
-0000000000001B85 45DC2800_00
-FFDFFFFFFFFFFFFF DA000000_01
-000008000007FFFE 55000001_01
-12DB4409E5AE87E6 5D96DA21_01
-FFBFFFFFFFFFFFFF DA800000_01
-FFFFFFFFFFF7BFEE C9040120_00
-FFFFFFFFFFFFFFFD C0400000_00
-FF7FFFFFFFFFFFFF DB000000_01
-000000001040FFFE 4D820800_01
-00000909A09C13D3 55109A0A_01
-FEFFFFFFFFFFFFFF DB800000_01
-FFFFFF01FFFFFF7F D37E0000_01
-FFFFFF72E7D2575D D30D182D_01
-FDFFFFFFFFFFFFFF DC000000_01
-FFFFFFFFFFFEFFDB C7801280_00
-0000000000000017 41B80000_00
-FBFFFFFFFFFFFFFF DC800000_01
-100000001FFFFFF6 5D800001_01
-000000114B12EF51 518A5898_01
-F7FFFFFFFFFFFFFF DD000000_01
-0407FFFFFFFFFEFF 5C810000_01
-FFFFFF769F3A5C2C D30960C5_01
-EFFFFFFFFFFFFFFF DD800000_01
-FFFFFFFDF7FFFFFD D0020000_01
-FFFFFFFFFFFFFFF2 C1600000_00
-DFFFFFFFFFFFFFFF DE000000_01
-FFFFFFFFFE0007FF CBFFFC00_01
-000000000000001E 41F00000_00
-BFFFFFFFFFFFFFFF DE800000_01
-FFF800000009FFFF D8FFFFFF_01
-0000000000007AA4 46F54800_00
-7FFFFFFFFFFFFFFF 5F000000_01
-4080000000FFFFFF 5E810001_01
-000000000DE7601D 4D5E7602_01
-3FFFFFFFFFFFFFFF 5E800000_01
-FFCFFFFFFFBFFFFE DA400000_01
-FFFFFFFFFFFFFFCA C2580000_00
-1FFFFFFFFFFFFFFF 5E000000_01
-000080400000003F 57004001_01
-00000000001F75A5 49FBAD28_00
-0FFFFFFFFFFFFFFF 5D800000_01
-FFFFFFEFFFFFCFFE D1800001_01
-FFFFFEE775887420 D38C453B_01
-07FFFFFFFFFFFFFF 5D000000_01
-00000000000801FE 49001FE0_00
-0000000000213FF1 4A04FFC4_00
-03FFFFFFFFFFFFFF 5C800000_01
-07FEFFFFFFFFFFEE 5CFFE000_01
-0000000000000004 40800000_00
-01FFFFFFFFFFFFFF 5C000000_01
-0000000820000003 51020001_01
-FFFFFFF9AD105214 D0CA5DF5_01
-00FFFFFFFFFFFFFF 5B800000_01
-FFFFF00FFFFFFFBE D57F0000_01
-FFFFFFFFFFCC48E7 CA4EDC64_00
-007FFFFFFFFFFFFF 5B000000_01
-00000FFFEF7FFFFF 557FFEF8_01
-FFFFFFFFFF0BA6CB CB745935_00
-003FFFFFFFFFFFFF 5A800000_01
-FFFFFF7FBFFFFFBF D3004000_01
-FFFFFFFFFFF24425 C95BBDB0_00
-001FFFFFFFFFFFFF 5A000000_01
-200000001FFBFFFF 5E000001_01
-FFFFFF4E7115EC53 D3318EEA_01
-000FFFFFFFFFFFFF 59800000_01
-FFFFF803FFFFFFBF D4FF8000_01
-FFFFFC2E539ADCFE D4746B19_01
-0007FFFFFFFFFFFF 59000000_01
-FFFFFFFFFBFFFFFF CC800000_01
-00000055084732F3 52AA108F_01
-0003FFFFFFFFFFFF 58800000_01
-BFFF7FFFFFFFFE00 DE800100_01
-FFFFFFFFFFFF8543 C6F57A00_00
-0001FFFFFFFFFFFF 58000000_01
-0000001FFBFFE000 51FFDFFF_00
-FFFFFFFFFFFE491B C7DB7280_00
-0000FFFFFFFFFFFF 57800000_01
-FC00200000001FFE DC7FF7FF_01
-FFFFF16898822A24 D5697677_01
-00007FFFFFFFFFFF 57000000_01
-3FFF03FFFFFFFFFE 5E7FFC10_01
-FFFFFF8FFE18C7BF D2E003CE_01
-00003FFFFFFFFFFF 56800000_01
-FFFFFEFFFEFFFFFD D3800080_01
-00F03620C1266ED9 5B703621_01
-00001FFFFFFFFFFF 56000000_01
-BF7EFFFFFFFFFFFF DE810200_01
-FFFFFFFFFFFFFFD5 C22C0000_00
-00000FFFFFFFFFFF 55800000_01
-FFFBFFFFF803FFFE D8800000_01
-0000000000068684 48D0D080_00
-000007FFFFFFFFFF 55000000_01
-DFFFFFE00000001E DE000000_01
-FFFFFFFFFFFFECF5 C5985800_00
-000003FFFFFFFFFF 54800000_01
-FFFF00400000FFFF D77FBFFF_01
-0000000000000002 40000000_00
-000001FFFFFFFFFF 54000000_01
-FBFFFFFFFFFFBDFE DC800000_01
-0000000000000BC9 453C9000_00
-000000FFFFFFFFFF 53800000_01
-807FFFFFFFFFDFFE DEFF0000_01
-FFC274E35A70CD76 DA762C72_01
-0000007FFFFFFFFF 53000000_01
-0FFFFFFFFEFFFFFD 5D800000_01
-FFFFFFFF00E73AFC CF7F18C5_01
-0000003FFFFFFFFF 52800000_01
-FFC000000001000E DA7FFFFF_01
-FFFFFFFFFFFE15E9 C7F50B80_00
-0000001FFFFFFFFF 52000000_01
-0001FFFFFFFFF3FD 58000000_01
-0000000000000033 424C0000_00
-0000000FFFFFFFFF 51800000_01
-000000001FFFBFFF 4DFFFE00_01
-FFFFFFEE6B141E1B D18CA75F_01
-00000007FFFFFFFF 51000000_01
-FFFFFFFFF60007FF CD1FFF80_01
-00000001AB310BA6 4FD59886_01
-00000003FFFFFFFF 50800000_01
-0003FFFFB7FFFFFF 587FFFEE_01
-FFFFFFFFFFFFF195 C566B000_00
-00000001FFFFFFFF 50000000_01
-FFFFFFFF8000000B CEFFFFFF_01
-00000019BA8D5559 51CDD46B_01
-00000000FFFFFFFF 4F800000_01
-FBFEFFFFFFFFFFF9 DC802000_01
-FFFFFFB6F062822D D2921F3A_01
-000000007FFFFFFF 4F000000_01
-0001000000000082 57800001_01
-01CEAD9E2FB104A4 5BE756D0_01
-000000003FFFFFFF 4E800000_01
-000003FFFFFFFF7C 54800000_01
-FFFFFFFFFD681E78 CC25F862_00
-000000001FFFFFFF 4E000000_01
-00002000400001FF 56000101_01
-0000000000000018 41C00000_00
-000000000FFFFFFF 4D800000_01
-3FFF80000000003E 5E7FFE01_01
-FFFFFFFFFFFFFF95 C2D60000_00
-0000000007FFFFFF 4D000000_01
-010000BFFFFFFFFF 5B800060_01
-0000001697087B19 51B4B844_01
-0000000003FFFFFF 4C800000_01
-FBFFFFFFFFEEFFFD DC800000_01
-0000000E64BDFC55 51664BE0_01
-0000000001FFFFFF 4C000000_01
-FC00000001FFFFFE DC7FFFFF_01
-FFFED156A62AB849 D79754AC_01
-0000000000FFFFFF 4B7FFFFF_00
-FFFFFFF83FEFFFFD D0F80200_01
-00015354EAE7C259 57A9AA76_01
-00000000007FFFFF 4AFFFFFE_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFF0F4DF3C75 D170B20C_01
-00000000003FFFFF 4A7FFFFC_00
-FFFA000000001FFF D8BFFFFF_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000001FFFFF 49FFFFF8_00
-FFFFFFFFFF7FFE40 CB0001C0_00
-FFFFFFDB5433CB9B D212AF30_01
-00000000000FFFFF 497FFFF0_00
-FFFFFDFFDFFDFFFD D4000800_01
-FFFFFFFFFFDEAE1F CA054784_00
-000000000007FFFF 48FFFFE0_00
-FFFFFFFFF0080006 CD7F7FFF_01
-FFFFFFFE7735DEC7 CFC46510_01
-000000000003FFFF 487FFFC0_00
-00000001FBFFFFFF 4FFE0000_01
-000003757D8B12ED 545D5F63_01
-000000000001FFFF 47FFFF80_00
-FFFFFE07F7FFFFFF D3FC0400_01
-00000A654064E046 55265407_01
-000000000000FFFF 477FFF00_00
-08000000000017FF 5D000001_01
-FFFFFFFFFFFFFFE7 C1C80000_00
-0000000000007FFF 46FFFE00_00
-07FFFFFFFFFFFDF6 5D000000_01
-FFFFAD78B3D6C3B6 D6A50E98_01
-0000000000003FFF 467FFC00_00
-0000300004000000 56400010_00
-FFFFFFF70B77F34F D10F4880_01
-0000000000001FFF 45FFF800_00
-FFFFFF80006FFFFE D2FFFF20_01
-0000013EB4D67EC8 539F5A6C_01
-0000000000000FFF 457FF000_00
-BFFFDFFFFBFFFFFF DE800040_01
-0005CEAF34EA1DC7 58B9D5E7_01
-00000000000007FF 44FFE000_00
-00004800007FFFFD 56900001_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000000003FF 447FC000_00
-0000000200001000 50000004_00
-00000000000360D0 48583400_00
-00000000000001FF 43FF8000_00
-01003FFFFFFFFFFC 5B802000_01
-00C000708FF1BA51 5B400071_01
-00000000000000FF 437F0000_00
-F802000003FFFFFF DCFFBFFF_01
-0F9E07DCC0BDC061 5D79E07E_01
-000000000000007F 42FE0000_00
-03FF0000000000FF 5C7FC001_01
-FFFFFFE1B9B2A079 D1F2326A_01
-000000000000003F 427C0000_00
-FFF80000000080FF D8FFFFFF_01
-00000000001EB5B4 49F5ADA0_00
-000000000000001F 41F80000_00
-000000000077FBFE 4AEFF7FC_00
-00000000005AC607 4AB58C0E_00
-000000000000000F 41700000_00
-FFFFFFFEF80000FF CF83FFFF_01
-000005C5B9D66984 54B8B73B_01
-0000000000000007 40E00000_00
-C001FFFFFFF00000 DE7FF800_01
-00001D06B372AA06 55E8359C_01
-0000000000000003 40400000_00
+07FFFDFFFFFFFF7F_5CFFFFC0_01
+0000000032CC8B7A_4E4B322E_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_CE7FFF00_01
+032C857F319EDE38_5C4B2160_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_D4800000_01
+00394C79B6D3007B_5A6531E7_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_DC800001_01
+0000000001AE458D_4BD722C7_01
+0000000000000004_40800000_00
+00040008000007FE_58800101_01
+F9EB456140D88764_DCC29753_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_D5DFF800_01
+07DE834A248EDF36_5CFBD06A_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC008_01
+FFFFFFFFFFE385E2_C9E3D0F0_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_DD7FBE00_01
+000000059EB1FD45_50B3D640_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_C84001C0_00
+FFFFFFFFFFFEDDFE_C7910100_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000000C89FF56B_4F489FF6_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF8_01
+1B5E4F0BE0DEBFF0_5DDAF279_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_D801FF00_01
+FFFFFFFFFFF4766B_C9389950_00
+0000000000000400_44800000_00
+0000080100000FFE_55001001_01
+000000000000000C_41400000_00
+0000000000000800_45000000_00
+0048000000100000_5A900001_01
+FFE662A109109D0A_D9CCEAF7_01
+0000000000001000_45800000_00
+C000000037FFFFFE_DE7FFFFF_01
+FFFFFFFFFFFFFFE4_C1E00000_00
+0000000000002000_46000000_00
+F801000000100000_DCFFDFFF_01
+FE114B79075F70EE_DBF75A43_01
+0000000000004000_46800000_00
+100000000001003E_5D800001_01
+00000000000003AC_446B0000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000004_01
+00000044A3A3DBE5_52894748_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_D9FFFE08_01
+FFFFFFFFFFFF1A91_C7656F00_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_D503C000_01
+0000000000003309_464C2400_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF8_01
+FFFFFFFFFFFFFF58_C3280000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_D207F800_01
+0000000000002980_46260000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF080_01
+000000000000005D_42BA0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF80_01
+FFFC8C23DA2CEAD8_D85CF709_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_DDFFFFFF_01
+FFFFFDE3C1DEC43C_D4070F88_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_D77FFFF4_01
+000000000030FFBE_4A43FEF8_00
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_D7FFFFFC_01
+FFFFFFFFEFDEED86_CD810893_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_DD400000_01
+000000001DA3FF45_4DED1FFB_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_CF7FFEFF_01
+FFFFFFFE9B1BCB54_CFB2721A_01
+0000000008000000_4D000000_00
+00004000004001FE_56800001_01
+F27DD19DE6563714_DD5822E6_01
+0000000010000000_4D800000_00
+FFC00000004007FE_DA7FFFFF_01
+000000000001A359_47D1AC80_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C700040_01
+FFFFFFFFFE62EC20_CBCE89F0_00
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E800000_01
+000000000000285F_46217C00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_CE80001F_01
+FFFFF836F99DBAA8_D4F920CC_01
+0000000100000000_4F800000_00
+00000020003FFEFE_52000100_01
+0033466832042D47_5A4D19A1_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_C4EF2000_00
+00000000003829C8_4A60A720_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_55800000_01
+0000000FB77C672B_517B77C7_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D000400_01
+0000000000001B78_45DBC000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_DB000000_01
+0000000000000071_42E20000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_55A00000_01
+FFFFFFFFFFFFFF86_C2F40000_00
+0000004000000000_52800000_00
+0800000000040800_5D000001_01
+FFF8A60D9E19F17E_D8EB3E4C_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+FFFFFFFFF7506DBA_CD0AF924_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_C7820480_00
+FFFFFFFFFEA42AC9_CBADEA9B_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_55840000_01
+FFE7AA3F2BDACC89_D9C2AE06_01
+0000040000000000_54800000_00
+FFF8040000040000_D8FF7FFF_01
+FFFFFFFFFFFFFFFD_C0400000_00
+0000080000000000_55000000_00
+FFFF80000800001F_D6FFFFEF_01
+FFFDF681DECDADC9_D8025F88_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_D380000F_01
+FFFFFFFFFFFFCFBE_C6410800_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51102000_01
+FEC01FECA24DE1B0_DB9FF009_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_DD000000_01
+F858A66761669936_DCF4EB33_01
+0000800000000000_57000000_00
+FFFEFF800000003E_D7803FFF_01
+F716EA43FAC45C97_DD0E915B_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_C2680000_00
+0024D70EC7661FD8_5A135C3C_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_DE7E0000_01
+FFD956DBD0AEE817_DA1AA490_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FC_01
+FFFFFFFFFFFF4300_C73D0000_00
+0008000000000000_59000000_00
+4000000004002000_5E800001_01
+C12EDF40F41F6021_DE7B4482_01
+0010000000000000_59800000_00
+FF9000000000001D_DADFFFFF_01
+FFFFFFF83DE950F6_D0F842D5_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_DEFFFFF8_01
+FE2B59CB3A604D69_DBEA531A_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5F000000_01
+000000A37C210862_53237C22_01
+0080000000000000_5B000000_00
+0002000002000002_58000001_01
+FFFFB65CD8617789_D693464F_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55E00000_01
+FFFFFFFFFFFFF01D_C57E3000_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800005_01
+000000000D098D19_4D5098D2_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C800000_01
+000006B3BD2C7BEF_54D677A6_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFF00_01
+FFFF4E5ADDDAA4A8_D731A522_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE01_01
+FFFFFFFFFFFFFF21_C35F0000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83C000_01
+FFFFFFFFFC648262_CC66DF67_01
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_DE7FFF80_01
+FFFFFF7353AC45D2_D30CAC53_01
+8000000000000000_DF000000_00
+FFFFFFFFFFE7EFFF_C9C08008_00
+0000000000A1202D_4B21202D_00
+C000000000000000_DE800000_00
+FFFFFFFFFFFF5F7F_C7208100_00
+000000000040CA70_4A8194E0_00
+E000000000000000_DE000000_00
+0000200201FFFFFE_56000808_01
+00000003B55D87D4_506D5762_01
+F000000000000000_DD800000_00
+FF80000DFFFFFFFF_DAFFFFE4_01
+000000010510FAEF_4F82887E_01
+F800000000000000_DD000000_00
+0003FFF00000000F_587FFC01_01
+000000000000724A_46E49400_00
+FC00000000000000_DC800000_00
+FFFFFFDF80000002_D201FFFF_01
+0000000000000064_42C80000_00
+FE00000000000000_DC000000_00
+FEFFFFFFFFF800FE_DB800000_01
+FFFFFFC2C6222702_D274E777_01
+FF00000000000000_DB800000_00
+0000000408000002_50810001_01
+000000E96DF1CB41_53696DF2_01
+FF80000000000000_DB000000_00
+007FFFFFFFFFF9FE_5B000000_01
+F727F174DEE7DC85_DD0D80E8_01
+FFC0000000000000_DA800000_00
+8000000003FFFEFE_DEFFFFFF_01
+FFFFFFFFFFF0BD5B_C9742A50_00
+FFE0000000000000_DA000000_00
+0BEFFFFFFFFFFFFF_5D3F0000_01
+000000000002790C_481E4300_00
+FFF0000000000000_D9800000_00
+FFFFFFFFFFEFFBFA_C9802030_00
+000000169E75DF01_51B4F3AF_01
+FFF8000000000000_D9000000_00
+00000007FEFFDFFF_50FFDFFC_01
+000000000000000E_41600000_00
+FFFC000000000000_D8800000_00
+0003FFFE0007FFFE_587FFF81_01
+FFFFFFFFFFF28622_C9579DE0_00
+FFFE000000000000_D8000000_00
+FFFFFF7FFFFDF7FF_D3000002_01
+00072F0EC496FE21_58E5E1D9_01
+FFFF000000000000_D7800000_00
+DFBFFFFFFFFFFFFE_DE010000_01
+0000000000FC1FCA_4B7C1FCA_00
+FFFF800000000000_D7000000_00
+00000FFF800FFFFE_557FF801_01
+FFFF5194E4A9C2CE_D72E6B1B_01
+FFFFC00000000000_D6800000_00
+00000002100007FD_50040002_01
+FFFFFFFFFFC2D8FE_CA749C08_00
+FFFFE00000000000_D6000000_00
+000000000007FF6E_48FFEDC0_00
+000000000001766E_47BB3700_00
+FFFFF00000000000_D5800000_00
+0040000400000002_5A800009_01
+0000000000007841_46F08200_00
+FFFFF80000000000_D5000000_00
+3DFFFFFFFFFFFF7E_5E780000_01
+FFFFFFE549E17E30_D1D5B0F4_01
+FFFFFC0000000000_D4800000_00
+FFFFFFFFFFFFFEE1_C38F8000_00
+FFFFFFFFFFFFFFE7_C1C80000_00
+FFFFFE0000000000_D4000000_00
+000000000EFFFFDF_4D6FFFFE_01
+FFFFFFFFFFFFFF73_C30D0000_00
+FFFFFF0000000000_D3800000_00
+FD00000008000000_DC3FFFFF_01
+000000000001DBB1_47EDD880_00
+FFFFFF8000000000_D3000000_00
+FFFFFFFFFFF8007F_C8FFF020_00
+FFFFFFFEFD10A515_CF8177AD_01
+FFFFFFC000000000_D2800000_00
+FFEFFFFFFFFFFFFE_D9800000_01
+FAB02984F6283B6C_DCA9FACF_01
+FFFFFFE000000000_D2000000_00
+FFFFFFBC000001FE_D287FFFF_01
+FEB087C6B9FE7FE0_DBA7BC1C_01
+FFFFFFF000000000_D1800000_00
+FFF80001000007FE_D8FFFFDF_01
+00F2762EA6837956_5B72762F_01
+FFFFFFF800000000_D1000000_00
+FFF7E0FFFFFFFFFE_D901F000_01
+00002E1175484626_563845D6_01
+FFFFFFFC00000000_D0800000_00
+0000200020000FFE_56000081_01
+000000000000068F_44D1E000_00
+FFFFFFFE00000000_D0000000_00
+021FFFFFFFFBFFFF_5C080000_01
+FFFFFFFFFFFFFFF9_C0E00000_00
+FFFFFFFF00000000_CF800000_00
+FFFFFFD0000FFFFD_D23FFFC0_01
+000000BDF6658B83_533DF666_01
+FFFFFFFF80000000_CF000000_00
+1000001FFDFFFFFF_5D800001_01
+0000000000003B5B_466D6C00_00
+FFFFFFFFC0000000_CE800000_00
+FFFFFFBFFE0FFFFF_D28003E0_01
+FFFFFFFFFFFFFFF0_C1800000_00
+FFFFFFFFE0000000_CE000000_00
+FFFFFFFBF00007FF_D081FFFF_01
+01E986274F48EAAD_5BF4C314_01
+FFFFFFFFF0000000_CD800000_00
+1FFFFFFDFFFFFF7F_5E000000_01
+FFFFFFFFFFFFCB5A_C6529800_00
+FFFFFFFFF8000000_CD000000_00
+7FF000000000FFFF_5EFFE001_01
+00000003C2717FC3_50709C60_01
+FFFFFFFFFC000000_CC800000_00
+FFFFFFE00008001F_D1FFFFBF_01
+FFFFFFFFFFEFABDA_C982A130_00
+FFFFFFFFFE000000_CC000000_00
+0200000000000002_5C000001_01
+FFFFFFFFF8FDA53F_CCE04B58_01
+FFFFFFFFFF000000_CB800000_00
+F6000003FFFFFFFE_DD1FFFFF_01
+FFFFFFFFFFFFFFD0_C2400000_00
+FFFFFFFFFF800000_CB000000_00
+FFFFFFFFFFBFFF7E_CA800104_00
+00000000EE0FEA62_4F6E0FEB_01
+FFFFFFFFFFC00000_CA800000_00
+0000007FFF9FFFFD_52FFFF40_01
+00000037F35EDC1D_525FCD7C_01
+FFFFFFFFFFE00000_CA000000_00
+FFFFFFF7FDFFFF7D_D1002000_01
+00000000000001AD_43D68000_00
+FFFFFFFFFFF00000_C9800000_00
+FFFFFF0000100020_D37FFFEF_01
+27F167FBC7FC5F9A_5E1FC5A0_01
+FFFFFFFFFFF80000_C9000000_00
+003FFFFFFFFC0001_5A800000_01
+000E48F9F4EBD30E_59648FA0_01
+FFFFFFFFFFFC0000_C8800000_00
+DFFFFFFFFFFBFFFE_DE000000_01
+FC91C23EE8C9424F_DC5B8F70_01
+FFFFFFFFFFFE0000_C8000000_00
+F7DFFBFFFFFFFFFE_DD020040_01
+000000002CAE080C_4E32B821_01
+FFFFFFFFFFFF0000_C7800000_00
+FFFFC00010000020_D67FFFBF_01
+04D921F917B20E40_5C9B2440_01
+FFFFFFFFFFFF8000_C7000000_00
+F8000FFFFFFFFFFD_DCFFFE00_01
+FFF17C566BC7D811_D9683A99_01
+FFFFFFFFFFFFC000_C6800000_00
+00000000000000FE_437E0000_00
+FFF82AC14930D386_D8FAA7D6_01
+FFFFFFFFFFFFE000_C6000000_00
+00000000000003FC_447F0000_00
+000E62EC60E119FC_59662EC7_01
+FFFFFFFFFFFFF000_C5800000_00
+FFFFEFF7FF7FFFFE_D5804004_01
+0E2B1ECF210EEDC5_5D62B1ED_01
+FFFFFFFFFFFFF800_C5000000_00
+00000000007FFF1F_4AFFFE3E_00
+FFFFFE534F5676F7_D3D65854_01
+FFFFFFFFFFFFFC00_C4800000_00
+0000001004FFFFFD_51802800_01
+0000035C939669F1_545724E6_01
+FFFFFFFFFFFFFE00_C4000000_00
+1FFFFFFFFFFFFDFD_5E000000_01
+FFFFFFFFFFFFFF91_C2DE0000_00
+FFFFFFFFFFFFFF00_C3800000_00
+01FFFFFFFBFFEFFE_5C000000_01
+000000000000016E_43B70000_00
+FFFFFFFFFFFFFF80_C3000000_00
+FFF7FFFFFFFFF7FD_D9000000_01
+FFFFF8E2BCFAC553_D4E3A860_01
+FFFFFFFFFFFFFFC0_C2800000_00
+FFFFFBFFFFFE0FFE_D4800000_01
+00000001A4E704BF_4FD27383_01
+FFFFFFFFFFFFFFE0_C2000000_00
+1400007FFFFFFFFD_5DA00004_01
+FFFFFFFC93B187B4_D05B139E_01
+FFFFFFFFFFFFFFF0_C1800000_00
+40000000007FFFFD_5E800001_01
+000000000067D468_4ACFA8D0_00
+FFFFFFFFFFFFFFF8_C1000000_00
+007FFEFFFFFBFFFE_5AFFFE00_01
+FFFFFFE26CEC79F8_D1EC989C_01
+FFFFFFFFFFFFFFFC_C0800000_00
+00FFFFFF000000FF_5B800000_01
+FFFFFFFFE0D3983A_CDF9633E_01
+FFFFFFFFFFFFFFFE_C0000000_00
+00007FFFBFFF7FFE_56FFFF80_01
+FFFFFFFDF4A7088A_D002D63D_01
+FFFFFFFFFFFFFFFF_BF800000_00
+000008000000027E_55000001_01
+000000000000F4E8_4774E800_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFF83FFDF_CAF80042_00
+00000E11407887B2_55611408_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+04000003FFFFFFF6_5C800001_01
+0000000000000513_44A26000_00
+FFFFFFFFFFFFFFF7_C1100000_00
+BFFC00000000003E_DE8007FF_01
+00000008D7BBB75B_510D7BBC_01
+FFFFFFFFFFFFFFEF_C1880000_00
+000FFFFBFFFC0000_597FFFC0_01
+FFFFFFFFFFCD5A23_CA4A9774_00
+FFFFFFFFFFFFFFDF_C2040000_00
+FFBFDFFFBFFFFFFF_DA804000_01
+000000000000007F_42FE0000_00
+FFFFFFFFFFFFFFBF_C2820000_00
+00000007FF800003_50FFF001_01
+000000000002BB02_482EC080_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEE7FF_C78C0080_00
+00264B2B9BAD0DA2_5A192CAF_01
+FFFFFFFFFFFFFEFF_C3808000_00
+0000000000100803_49804018_00
+FF9B1DCB9F857D5E_DAC9C468_01
+FFFFFFFFFFFFFDFF_C4004000_00
+FFFFFFBFFFFFEFEE_D2800000_01
+F6FD7542899C1C6F_DD1028AB_01
+FFFFFFFFFFFFFBFF_C4802000_00
+FF800000004001FF_DAFFFFFF_01
+0000000002BE4932_4C2F924D_01
+FFFFFFFFFFFFF7FF_C5001000_00
+00001004000FFFFE_55802001_01
+FFFFFF9DAA0123E0_D2C4ABFD_01
+FFFFFFFFFFFFEFFF_C5800800_00
+00000001FDFFFDFE_4FFEFFFF_01
+FFFC1C8703B1DCB0_D878DE3F_01
+FFFFFFFFFFFFDFFF_C6000400_00
+FE0FE00000000000_DBF81000_00
+0779ED944A4E2779_5CEF3DB3_01
+FFFFFFFFFFFFBFFF_C6800200_00
+FBFFFE0400000000_DC80003F_01
+0000010127E03666_538093F1_01
+FFFFFFFFFFFF7FFF_C7000100_00
+FFFFF0200000FFFE_D57DFFFF_01
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEFFFF_C7800080_00
+FFEFFE0000080000_D9800FFF_01
+FFFFFFFFFD3354EA_CC332AC5_01
+FFFFFFFFFFFDFFFF_C8000040_00
+003FF0000003FFFE_5A7FC001_01
+0000006375B23F7B_52C6EB65_01
+FFFFFFFFFFFBFFFF_C8800020_00
+000407FFFFFFFFF6_58810000_01
+0000000092117F38_4F121180_01
+FFFFFFFFFFF7FFFF_C9000010_00
+FFFFFFFFFFFF7FFF_C7000100_00
+00000000000008BE_450BE000_00
+FFFFFFFFFFEFFFFF_C9800008_00
+004000020FFFFFFF_5A800005_01
+FFFFB84C2D8BC9CB_D68F67A4_01
+FFFFFFFFFFDFFFFF_CA000004_00
+00FFFFFFFFFFFFFD_5B800000_01
+00000023C2C6F284_520F0B1C_01
+FFFFFFFFFFBFFFFF_CA800002_00
+FFFDDFFFFFFFFFFD_D8080000_01
+00000000746356C4_4EE8C6AE_01
+FFFFFFFFFF7FFFFF_CB000001_00
+010000000000BFFF_5B800001_01
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFEFFFFFF_CB800000_01
+FFFFBF7FFBFFFFFE_D6810008_01
+00000006386CE889_50C70D9E_01
+FFFFFFFFFDFFFFFF_CC000000_01
+F00000F7FFFFFFFF_DD7FFFF0_01
+FFFDFC53090C46A4_D800EB3D_01
+FFFFFFFFFBFFFFFF_CC800000_01
+0000000000800047_4B000047_00
+FFFFFFFFD693872E_CE25B1E3_01
+FFFFFFFFF7FFFFFF_CD000000_01
+000000007FBFFBFF_4EFF7FF8_01
+00000026A7845E35_521A9E12_01
+FFFFFFFFEFFFFFFF_CD800000_01
+FFFFFFDFFFFFFBFD_D2000000_01
+000000001433D14C_4DA19E8B_01
+FFFFFFFFDFFFFFFF_CE000000_01
+0001FFFFFFE0000E_58000000_01
+F0F23E8068D3D84A_DD70DC17_01
+FFFFFFFFBFFFFFFF_CE800000_01
+F7FFBFFFFFFFBFFF_DD000400_01
+FFFFBD29B7459087_D685AC91_01
+FFFFFFFF7FFFFFFF_CF000000_01
+FFFFFFF8FFFFBFFF_D0E00008_01
+FFFFFFFFFFEDDC06_C9911FD0_00
+FFFFFFFEFFFFFFFF_CF800000_01
+FFFFFFF80001FFFF_D0FFFFC0_01
+0000000000002FF9_463FE400_00
+FFFFFFFDFFFFFFFF_D0000000_01
+004000040000FFFF_5A800009_01
+FFFFFFFFFFFFFFF1_C1700000_00
+FFFFFFFBFFFFFFFF_D0800000_01
+C0000000007FFFFA_DE7FFFFF_01
+FFFFFFFFFE053E2B_CBFD60EA_01
+FFFFFFF7FFFFFFFF_D1000000_01
+7FFE000007FFFFFF_5EFFFC01_01
+000000000000000D_41500000_00
+FFFFFFEFFFFFFFFF_D1800000_01
+F80000000001007E_DCFFFFFF_01
+FFFFED48424AD9D6_D595BDED_01
+FFFFFFDFFFFFFFFF_D2000000_01
+FFFFFE0001FEFFFF_D3FFFF00_01
+000000000000013B_439D8000_00
+FFFFFFBFFFFFFFFF_D2800000_01
+0007FBFFFFFDFFFE_58FF8000_01
+4A16BD4128090C83_5E942D7B_01
+FFFFFF7FFFFFFFFF_D3000000_01
+00FFF7FFFF7FFFFE_5B7FF800_01
+0000000000000006_40C00000_00
+FFFFFEFFFFFFFFFF_D3800000_01
+FBFFFFBFFFBFFFFF_DC800008_01
+00000000000001BA_43DD0000_00
+FFFFFDFFFFFFFFFF_D4000000_01
+0000000040000082_4E800002_01
+FF07A2BF5B689F89_DB785D40_01
+FFFFFBFFFFFFFFFF_D4800000_01
+0000001FF8000008_51FFC001_01
+F87CAA7DE672DE8B_DCF06AB0_01
+FFFFF7FFFFFFFFFF_D5000000_01
+07FFF80000000002_5CFFFF01_01
+0000000010A1E5B8_4D850F2E_01
+FFFFEFFFFFFFFFFF_D5800000_01
+F7FFFFE00007FFFF_DD000001_01
+FFFFFFFFFFF6ADFC_C9152040_00
+FFFFDFFFFFFFFFFF_D6000000_01
+FFFFFF03FFFFFFC0_D37C0000_01
+EA579475948F0032_DDAD435C_01
+FFFFBFFFFFFFFFFF_D6800000_01
+FC00000000003FF6_DC7FFFFF_01
+002E677AC313BF60_5A399DEC_01
+FFFF7FFFFFFFFFFF_D7000000_01
+02000007FF7FFFFF_5C000002_01
+0000000E999639F1_51699964_01
+FFFEFFFFFFFFFFFF_D7800000_01
+FFFF83FFFFFFFFBE_D6F80000_01
+000000000001537D_47A9BE80_00
+FFFDFFFFFFFFFFFF_D8000000_01
+EFFFFFC00000003D_DD800001_01
+FFFFFFF21FEDFD35_D15E0120_01
+FFFBFFFFFFFFFFFF_D8800000_01
+FFFFFFF0000007FE_D17FFFFF_01
+FFFFFFFFFFDE0839_CA07DF1C_00
+FFF7FFFFFFFFFFFF_D9000000_01
+0000007FFFE000FF_52FFFFC1_01
+FFFFFFFF79F30F48_CF060CF0_01
+FFEFFFFFFFFFFFFF_D9800000_01
+FFFFFC13FFFFFFFD_D47B0000_01
+0000000000001B85_45DC2800_00
+FFDFFFFFFFFFFFFF_DA000000_01
+000008000007FFFE_55000001_01
+12DB4409E5AE87E6_5D96DA21_01
+FFBFFFFFFFFFFFFF_DA800000_01
+FFFFFFFFFFF7BFEE_C9040120_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FF7FFFFFFFFFFFFF_DB000000_01
+000000001040FFFE_4D820800_01
+00000909A09C13D3_55109A0A_01
+FEFFFFFFFFFFFFFF_DB800000_01
+FFFFFF01FFFFFF7F_D37E0000_01
+FFFFFF72E7D2575D_D30D182D_01
+FDFFFFFFFFFFFFFF_DC000000_01
+FFFFFFFFFFFEFFDB_C7801280_00
+0000000000000017_41B80000_00
+FBFFFFFFFFFFFFFF_DC800000_01
+100000001FFFFFF6_5D800001_01
+000000114B12EF51_518A5898_01
+F7FFFFFFFFFFFFFF_DD000000_01
+0407FFFFFFFFFEFF_5C810000_01
+FFFFFF769F3A5C2C_D30960C5_01
+EFFFFFFFFFFFFFFF_DD800000_01
+FFFFFFFDF7FFFFFD_D0020000_01
+FFFFFFFFFFFFFFF2_C1600000_00
+DFFFFFFFFFFFFFFF_DE000000_01
+FFFFFFFFFE0007FF_CBFFFC00_01
+000000000000001E_41F00000_00
+BFFFFFFFFFFFFFFF_DE800000_01
+FFF800000009FFFF_D8FFFFFF_01
+0000000000007AA4_46F54800_00
+7FFFFFFFFFFFFFFF_5F000000_01
+4080000000FFFFFF_5E810001_01
+000000000DE7601D_4D5E7602_01
+3FFFFFFFFFFFFFFF_5E800000_01
+FFCFFFFFFFBFFFFE_DA400000_01
+FFFFFFFFFFFFFFCA_C2580000_00
+1FFFFFFFFFFFFFFF_5E000000_01
+000080400000003F_57004001_01
+00000000001F75A5_49FBAD28_00
+0FFFFFFFFFFFFFFF_5D800000_01
+FFFFFFEFFFFFCFFE_D1800001_01
+FFFFFEE775887420_D38C453B_01
+07FFFFFFFFFFFFFF_5D000000_01
+00000000000801FE_49001FE0_00
+0000000000213FF1_4A04FFC4_00
+03FFFFFFFFFFFFFF_5C800000_01
+07FEFFFFFFFFFFEE_5CFFE000_01
+0000000000000004_40800000_00
+01FFFFFFFFFFFFFF_5C000000_01
+0000000820000003_51020001_01
+FFFFFFF9AD105214_D0CA5DF5_01
+00FFFFFFFFFFFFFF_5B800000_01
+FFFFF00FFFFFFFBE_D57F0000_01
+FFFFFFFFFFCC48E7_CA4EDC64_00
+007FFFFFFFFFFFFF_5B000000_01
+00000FFFEF7FFFFF_557FFEF8_01
+FFFFFFFFFF0BA6CB_CB745935_00
+003FFFFFFFFFFFFF_5A800000_01
+FFFFFF7FBFFFFFBF_D3004000_01
+FFFFFFFFFFF24425_C95BBDB0_00
+001FFFFFFFFFFFFF_5A000000_01
+200000001FFBFFFF_5E000001_01
+FFFFFF4E7115EC53_D3318EEA_01
+000FFFFFFFFFFFFF_59800000_01
+FFFFF803FFFFFFBF_D4FF8000_01
+FFFFFC2E539ADCFE_D4746B19_01
+0007FFFFFFFFFFFF_59000000_01
+FFFFFFFFFBFFFFFF_CC800000_01
+00000055084732F3_52AA108F_01
+0003FFFFFFFFFFFF_58800000_01
+BFFF7FFFFFFFFE00_DE800100_01
+FFFFFFFFFFFF8543_C6F57A00_00
+0001FFFFFFFFFFFF_58000000_01
+0000001FFBFFE000_51FFDFFF_00
+FFFFFFFFFFFE491B_C7DB7280_00
+0000FFFFFFFFFFFF_57800000_01
+FC00200000001FFE_DC7FF7FF_01
+FFFFF16898822A24_D5697677_01
+00007FFFFFFFFFFF_57000000_01
+3FFF03FFFFFFFFFE_5E7FFC10_01
+FFFFFF8FFE18C7BF_D2E003CE_01
+00003FFFFFFFFFFF_56800000_01
+FFFFFEFFFEFFFFFD_D3800080_01
+00F03620C1266ED9_5B703621_01
+00001FFFFFFFFFFF_56000000_01
+BF7EFFFFFFFFFFFF_DE810200_01
+FFFFFFFFFFFFFFD5_C22C0000_00
+00000FFFFFFFFFFF_55800000_01
+FFFBFFFFF803FFFE_D8800000_01
+0000000000068684_48D0D080_00
+000007FFFFFFFFFF_55000000_01
+DFFFFFE00000001E_DE000000_01
+FFFFFFFFFFFFECF5_C5985800_00
+000003FFFFFFFFFF_54800000_01
+FFFF00400000FFFF_D77FBFFF_01
+0000000000000002_40000000_00
+000001FFFFFFFFFF_54000000_01
+FBFFFFFFFFFFBDFE_DC800000_01
+0000000000000BC9_453C9000_00
+000000FFFFFFFFFF_53800000_01
+807FFFFFFFFFDFFE_DEFF0000_01
+FFC274E35A70CD76_DA762C72_01
+0000007FFFFFFFFF_53000000_01
+0FFFFFFFFEFFFFFD_5D800000_01
+FFFFFFFF00E73AFC_CF7F18C5_01
+0000003FFFFFFFFF_52800000_01
+FFC000000001000E_DA7FFFFF_01
+FFFFFFFFFFFE15E9_C7F50B80_00
+0000001FFFFFFFFF_52000000_01
+0001FFFFFFFFF3FD_58000000_01
+0000000000000033_424C0000_00
+0000000FFFFFFFFF_51800000_01
+000000001FFFBFFF_4DFFFE00_01
+FFFFFFEE6B141E1B_D18CA75F_01
+00000007FFFFFFFF_51000000_01
+FFFFFFFFF60007FF_CD1FFF80_01
+00000001AB310BA6_4FD59886_01
+00000003FFFFFFFF_50800000_01
+0003FFFFB7FFFFFF_587FFFEE_01
+FFFFFFFFFFFFF195_C566B000_00
+00000001FFFFFFFF_50000000_01
+FFFFFFFF8000000B_CEFFFFFF_01
+00000019BA8D5559_51CDD46B_01
+00000000FFFFFFFF_4F800000_01
+FBFEFFFFFFFFFFF9_DC802000_01
+FFFFFFB6F062822D_D2921F3A_01
+000000007FFFFFFF_4F000000_01
+0001000000000082_57800001_01
+01CEAD9E2FB104A4_5BE756D0_01
+000000003FFFFFFF_4E800000_01
+000003FFFFFFFF7C_54800000_01
+FFFFFFFFFD681E78_CC25F862_00
+000000001FFFFFFF_4E000000_01
+00002000400001FF_56000101_01
+0000000000000018_41C00000_00
+000000000FFFFFFF_4D800000_01
+3FFF80000000003E_5E7FFE01_01
+FFFFFFFFFFFFFF95_C2D60000_00
+0000000007FFFFFF_4D000000_01
+010000BFFFFFFFFF_5B800060_01
+0000001697087B19_51B4B844_01
+0000000003FFFFFF_4C800000_01
+FBFFFFFFFFEEFFFD_DC800000_01
+0000000E64BDFC55_51664BE0_01
+0000000001FFFFFF_4C000000_01
+FC00000001FFFFFE_DC7FFFFF_01
+FFFED156A62AB849_D79754AC_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_D0F80200_01
+00015354EAE7C259_57A9AA76_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFF0F4DF3C75_D170B20C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_D8BFFFFF_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_CB0001C0_00
+FFFFFFDB5433CB9B_D212AF30_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_D4000800_01
+FFFFFFFFFFDEAE1F_CA054784_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_CD7F7FFF_01
+FFFFFFFE7735DEC7_CFC46510_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFE0000_01
+000003757D8B12ED_545D5F63_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_D3FC0400_01
+00000A654064E046_55265407_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000001_01
+FFFFFFFFFFFFFFE7_C1C80000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5D000000_01
+FFFFAD78B3D6C3B6_D6A50E98_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+FFFFFFF70B77F34F_D10F4880_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_D2FFFF20_01
+0000013EB4D67EC8_539F5A6C_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_DE800040_01
+0005CEAF34EA1DC7_58B9D5E7_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900001_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000360D0_48583400_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B802000_01
+00C000708FF1BA51_5B400071_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_DCFFBFFF_01
+0F9E07DCC0BDC061_5D79E07E_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC001_01
+FFFFFFE1B9B2A079_D1F2326A_01
+000000000000003F_427C0000_00
+FFF80000000080FF_D8FFFFFF_01
+00000000001EB5B4_49F5ADA0_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+00000000005AC607_4AB58C0E_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_CF83FFFF_01
+000005C5B9D66984_54B8B73B_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_DE7FF800_01
+00001D06B372AA06_55E8359C_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f32_rz.tv b/wally-pipelined/testbench/fp/i64_f32_rz.tv
index b996cbb7a..bdcd197ed 100644
--- a/wally-pipelined/testbench/fp/i64_f32_rz.tv
+++ b/wally-pipelined/testbench/fp/i64_f32_rz.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 5CFFFFBF_01
-0000000032CC8B7A 4E4B322D_01
-0000000000000000 00000000_00
-FFFFFFFFC0003FFE CE7FFF00_01
-032C857F319EDE38 5C4B215F_01
-0000000000000001 3F800000_00
-FFFFFBFFFFF8003E D4800000_01
-00394C79B6D3007B 5A6531E6_01
-0000000000000002 40000000_00
-FBFFFFF0000001FF DC800001_01
-0000000001AE458D 4BD722C6_01
-0000000000000004 40800000_00
-00040008000007FE 58800100_01
-F9EB456140D88764 DCC29753_01
-0000000000000008 41000000_00
-FFFFE400FFFFFFFE D5DFF800_01
-07DE834A248EDF36 5CFBD069_01
-0000000000000010 41800000_00
-00000003FF001FFF 507FC007_01
-FFFFFFFFFFE385E2 C9E3D0F0_00
-0000000000000020 42000000_00
-F0041FFFFFFFFFFF DD7FBE00_01
-000000059EB1FD45 50B3D63F_01
-0000000000000040 42800000_00
-FFFFFFFFFFFCFFF9 C84001C0_00
-FFFFFFFFFFFEDDFE C7910100_00
-0000000000000080 43000000_00
-000000000003FF00 487FC000_00
-00000000C89FF56B 4F489FF5_01
-0000000000000100 43800000_00
-000FFFFF7FDFFFFF 597FFFF7_01
-1B5E4F0BE0DEBFF0 5DDAF278_01
-0000000000000200 44000000_00
-FFFDF803FFFFFFFF D801FF00_01
-FFFFFFFFFFF4766B C9389950_00
-0000000000000400 44800000_00
-0000080100000FFE 55001000_01
-000000000000000C 41400000_00
-0000000000000800 45000000_00
-0048000000100000 5A900000_01
-FFE662A109109D0A D9CCEAF7_01
-0000000000001000 45800000_00
-C000000037FFFFFE DE7FFFFF_01
-FFFFFFFFFFFFFFE4 C1E00000_00
-0000000000002000 46000000_00
-F801000000100000 DCFFDFFF_01
-FE114B79075F70EE DBF75A43_01
-0000000000004000 46800000_00
-100000000001003E 5D800000_01
-00000000000003AC 446B0000_00
-0000000000008000 47000000_00
-200000FFFFFFF800 5E000003_01
-00000044A3A3DBE5 52894747_01
-0000000000010000 47800000_00
-FFE0003EFFFFFFFF D9FFFE08_01
-FFFFFFFFFFFF1A91 C7656F00_00
-0000000000020000 48000000_00
-FFFFF7C3FFFFFFFD D503C000_01
-0000000000003309 464C2400_00
-0000000000040000 48800000_00
-000083FFF7FFFFFE 5703FFF7_01
-FFFFFFFFFFFFFF58 C3280000_00
-0000000000080000 49000000_00
-FFFFFFDE01FFFFFE D207F800_01
-0000000000002980 46260000_00
-0000000000100000 49800000_00
-00000000FFF07FFF 4F7FF07F_01
-000000000000005D 42BA0000_00
-0000000000200000 4A000000_00
-000020FFDFFFFFFF 5603FF7F_01
-FFFC8C23DA2CEAD8 D85CF709_01
-0000000000400000 4A800000_00
-E0000000003FFFDF DDFFFFFF_01
-FFFFFDE3C1DEC43C D4070F88_01
-0000000000800000 4B000000_00
-FFFF00000BFFFFFD D77FFFF4_01
-000000000030FFBE 4A43FEF8_00
-0000000001000000 4B800000_00
-FFFE000007FFEFFD D7FFFFFC_01
-FFFFFFFFEFDEED86 CD810893_01
-0000000002000000 4C000000_00
-F3FFFFFFFFBFFFFE DD400000_01
-000000001DA3FF45 4DED1FFA_01
-0000000004000000 4C800000_00
-FFFFFFFF00010007 CF7FFEFF_01
-FFFFFFFE9B1BCB54 CFB2721A_01
-0000000008000000 4D000000_00
-00004000004001FE 56800000_01
-F27DD19DE6563714 DD5822E6_01
-0000000010000000 4D800000_00
-FFC00000004007FE DA7FFFFF_01
-000000000001A359 47D1AC80_00
-0000000020000000 4E000000_00
-0000000003C000FE 4C70003F_01
-FFFFFFFFFE62EC20 CBCE89F0_00
-0000000040000000 4E800000_00
-000000003FFFFFFD 4E7FFFFF_01
-000000000000285F 46217C00_00
-0000000080000000 4F000000_00
-FFFFFFFFBFFFF00F CE80001F_01
-FFFFF836F99DBAA8 D4F920CC_01
-0000000100000000 4F800000_00
-00000020003FFEFE 520000FF_01
-0033466832042D47 5A4D19A0_01
-0000000200000000 50000000_00
-FFFFFFFFFFFFF887 C4EF2000_00
-00000000003829C8 4A60A720_00
-0000000400000000 50800000_00
-00000FFFFFFF7DFD 557FFFFF_01
-0000000FB77C672B 517B77C6_01
-0000000800000000 51000000_00
-08003FFDFFFFFFFE 5D0003FF_01
-0000000000001B78 45DBC000_00
-0000001000000000 51800000_00
-FF7FFFFFFFEFDFFF DB000000_01
-0000000000000071 42E20000_00
-0000002000000000 52000000_00
-000013FFFFFFFDFF 559FFFFF_01
-FFFFFFFFFFFFFF86 C2F40000_00
-0000004000000000 52800000_00
-0800000000040800 5D000000_01
-FFF8A60D9E19F17E D8EB3E4C_01
-0000008000000000 53000000_00
-000077FFF0000000 56EFFFE0_00
-FFFFFFFFF7506DBA CD0AF924_01
-0000010000000000 53800000_00
-FFFFFFFFFFFEFBF7 C7820480_00
-FFFFFFFFFEA42AC9 CBADEA9B_01
-0000020000000000 54000000_00
-0000107FFFFFDFFD 5583FFFF_01
-FFE7AA3F2BDACC89 D9C2AE06_01
-0000040000000000 54800000_00
-FFF8040000040000 D8FF7FFF_01
-FFFFFFFFFFFFFFFD C0400000_00
-0000080000000000 55000000_00
-FFFF80000800001F D6FFFFEF_01
-FFFDF681DECDADC9 D8025F88_01
-0000100000000000 55800000_00
-FFFFFEFFFFE0007F D380000F_01
-FFFFFFFFFFFFCFBE C6410800_00
-0000200000000000 56000000_00
-0000000901FFFFFD 51101FFF_01
-FEC01FECA24DE1B0 DB9FF009_01
-0000400000000000 56800000_00
-F7FFFFFFDFFF7FFF DD000000_01
-F858A66761669936 DCF4EB33_01
-0000800000000000 57000000_00
-FFFEFF800000003E D7803FFF_01
-F716EA43FAC45C97 DD0E915B_01
-0001000000000000 57800000_00
-FFFFFFFFFFFFFFC6 C2680000_00
-0024D70EC7661FD8 5A135C3B_01
-0002000000000000 58000000_00
-C07FFFFFFFFFFFFE DE7E0000_01
-FFD956DBD0AEE817 DA1AA490_01
-0004000000000000 58800000_00
-020003EFFFFFFFFE 5C0000FB_01
-FFFFFFFFFFFF4300 C73D0000_00
-0008000000000000 59000000_00
-4000000004002000 5E800000_01
-C12EDF40F41F6021 DE7B4482_01
-0010000000000000 59800000_00
-FF9000000000001D DADFFFFF_01
-FFFFFFF83DE950F6 D0F842D5_01
-0020000000000000 5A000000_00
-800003FFFFFC0000 DEFFFFF8_01
-FE2B59CB3A604D69 DBEA531A_01
-0040000000000000 5A800000_00
-7FFFFFFDFFFFBFFF 5EFFFFFF_01
-000000A37C210862 53237C21_01
-0080000000000000 5B000000_00
-0002000002000002 58000000_01
-FFFFB65CD8617789 D693464F_01
-0100000000000000 5B800000_00
-00001BFFFFFFBFFE 55DFFFFF_01
-FFFFFFFFFFFFF01D C57E3000_00
-0200000000000000 5C000000_00
-1000008000003FFF 5D800004_01
-000000000D098D19 4D5098D1_01
-0400000000000000 5C800000_00
-03FFFFFFFFFFF5FF 5C7FFFFF_01
-000006B3BD2C7BEF 54D677A5_01
-0800000000000000 5D000000_00
-00003FFFBFFFFFFE 567FFEFF_01
-FFFF4E5ADDDAA4A8 D731A522_01
-1000000000000000 5D800000_00
-001FFFC000000FFD 59FFFE00_01
-FFFFFFFFFFFFFF21 C35F0000_00
-2000000000000000 5E000000_00
-0000000041DFFFFF 4E83BFFF_01
-FFFFFFFFFC648262 CC66DF67_01
-4000000000000000 5E800000_00
-C0001FFFFFFFFFFB DE7FFF80_01
-FFFFFF7353AC45D2 D30CAC53_01
-8000000000000000 DF000000_00
-FFFFFFFFFFE7EFFF C9C08008_00
-0000000000A1202D 4B21202D_00
-C000000000000000 DE800000_00
-FFFFFFFFFFFF5F7F C7208100_00
-000000000040CA70 4A8194E0_00
-E000000000000000 DE000000_00
-0000200201FFFFFE 56000807_01
-00000003B55D87D4 506D5761_01
-F000000000000000 DD800000_00
-FF80000DFFFFFFFF DAFFFFE4_01
-000000010510FAEF 4F82887D_01
-F800000000000000 DD000000_00
-0003FFF00000000F 587FFC00_01
-000000000000724A 46E49400_00
-FC00000000000000 DC800000_00
-FFFFFFDF80000002 D201FFFF_01
-0000000000000064 42C80000_00
-FE00000000000000 DC000000_00
-FEFFFFFFFFF800FE DB800000_01
-FFFFFFC2C6222702 D274E777_01
-FF00000000000000 DB800000_00
-0000000408000002 50810000_01
-000000E96DF1CB41 53696DF1_01
-FF80000000000000 DB000000_00
-007FFFFFFFFFF9FE 5AFFFFFF_01
-F727F174DEE7DC85 DD0D80E8_01
-FFC0000000000000 DA800000_00
-8000000003FFFEFE DEFFFFFF_01
-FFFFFFFFFFF0BD5B C9742A50_00
-FFE0000000000000 DA000000_00
-0BEFFFFFFFFFFFFF 5D3EFFFF_01
-000000000002790C 481E4300_00
-FFF0000000000000 D9800000_00
-FFFFFFFFFFEFFBFA C9802030_00
-000000169E75DF01 51B4F3AE_01
-FFF8000000000000 D9000000_00
-00000007FEFFDFFF 50FFDFFB_01
-000000000000000E 41600000_00
-FFFC000000000000 D8800000_00
-0003FFFE0007FFFE 587FFF80_01
-FFFFFFFFFFF28622 C9579DE0_00
-FFFE000000000000 D8000000_00
-FFFFFF7FFFFDF7FF D3000002_01
-00072F0EC496FE21 58E5E1D8_01
-FFFF000000000000 D7800000_00
-DFBFFFFFFFFFFFFE DE010000_01
-0000000000FC1FCA 4B7C1FCA_00
-FFFF800000000000 D7000000_00
-00000FFF800FFFFE 557FF800_01
-FFFF5194E4A9C2CE D72E6B1B_01
-FFFFC00000000000 D6800000_00
-00000002100007FD 50040001_01
-FFFFFFFFFFC2D8FE CA749C08_00
-FFFFE00000000000 D6000000_00
-000000000007FF6E 48FFEDC0_00
-000000000001766E 47BB3700_00
-FFFFF00000000000 D5800000_00
-0040000400000002 5A800008_01
-0000000000007841 46F08200_00
-FFFFF80000000000 D5000000_00
-3DFFFFFFFFFFFF7E 5E77FFFF_01
-FFFFFFE549E17E30 D1D5B0F4_01
-FFFFFC0000000000 D4800000_00
-FFFFFFFFFFFFFEE1 C38F8000_00
-FFFFFFFFFFFFFFE7 C1C80000_00
-FFFFFE0000000000 D4000000_00
-000000000EFFFFDF 4D6FFFFD_01
-FFFFFFFFFFFFFF73 C30D0000_00
-FFFFFF0000000000 D3800000_00
-FD00000008000000 DC3FFFFF_01
-000000000001DBB1 47EDD880_00
-FFFFFF8000000000 D3000000_00
-FFFFFFFFFFF8007F C8FFF020_00
-FFFFFFFEFD10A515 CF8177AD_01
-FFFFFFC000000000 D2800000_00
-FFEFFFFFFFFFFFFE D9800000_01
-FAB02984F6283B6C DCA9FACF_01
-FFFFFFE000000000 D2000000_00
-FFFFFFBC000001FE D287FFFF_01
-FEB087C6B9FE7FE0 DBA7BC1C_01
-FFFFFFF000000000 D1800000_00
-FFF80001000007FE D8FFFFDF_01
-00F2762EA6837956 5B72762E_01
-FFFFFFF800000000 D1000000_00
-FFF7E0FFFFFFFFFE D901F000_01
-00002E1175484626 563845D5_01
-FFFFFFFC00000000 D0800000_00
-0000200020000FFE 56000080_01
-000000000000068F 44D1E000_00
-FFFFFFFE00000000 D0000000_00
-021FFFFFFFFBFFFF 5C07FFFF_01
-FFFFFFFFFFFFFFF9 C0E00000_00
-FFFFFFFF00000000 CF800000_00
-FFFFFFD0000FFFFD D23FFFC0_01
-000000BDF6658B83 533DF665_01
-FFFFFFFF80000000 CF000000_00
-1000001FFDFFFFFF 5D800000_01
-0000000000003B5B 466D6C00_00
-FFFFFFFFC0000000 CE800000_00
-FFFFFFBFFE0FFFFF D28003E0_01
-FFFFFFFFFFFFFFF0 C1800000_00
-FFFFFFFFE0000000 CE000000_00
-FFFFFFFBF00007FF D081FFFF_01
-01E986274F48EAAD 5BF4C313_01
-FFFFFFFFF0000000 CD800000_00
-1FFFFFFDFFFFFF7F 5DFFFFFF_01
-FFFFFFFFFFFFCB5A C6529800_00
-FFFFFFFFF8000000 CD000000_00
-7FF000000000FFFF 5EFFE000_01
-00000003C2717FC3 50709C5F_01
-FFFFFFFFFC000000 CC800000_00
-FFFFFFE00008001F D1FFFFBF_01
-FFFFFFFFFFEFABDA C982A130_00
-FFFFFFFFFE000000 CC000000_00
-0200000000000002 5C000000_01
-FFFFFFFFF8FDA53F CCE04B58_01
-FFFFFFFFFF000000 CB800000_00
-F6000003FFFFFFFE DD1FFFFF_01
-FFFFFFFFFFFFFFD0 C2400000_00
-FFFFFFFFFF800000 CB000000_00
-FFFFFFFFFFBFFF7E CA800104_00
-00000000EE0FEA62 4F6E0FEA_01
-FFFFFFFFFFC00000 CA800000_00
-0000007FFF9FFFFD 52FFFF3F_01
-00000037F35EDC1D 525FCD7B_01
-FFFFFFFFFFE00000 CA000000_00
-FFFFFFF7FDFFFF7D D1002000_01
-00000000000001AD 43D68000_00
-FFFFFFFFFFF00000 C9800000_00
-FFFFFF0000100020 D37FFFEF_01
-27F167FBC7FC5F9A 5E1FC59F_01
-FFFFFFFFFFF80000 C9000000_00
-003FFFFFFFFC0001 5A7FFFFF_01
-000E48F9F4EBD30E 59648F9F_01
-FFFFFFFFFFFC0000 C8800000_00
-DFFFFFFFFFFBFFFE DE000000_01
-FC91C23EE8C9424F DC5B8F70_01
-FFFFFFFFFFFE0000 C8000000_00
-F7DFFBFFFFFFFFFE DD020040_01
-000000002CAE080C 4E32B820_01
-FFFFFFFFFFFF0000 C7800000_00
-FFFFC00010000020 D67FFFBF_01
-04D921F917B20E40 5C9B243F_01
-FFFFFFFFFFFF8000 C7000000_00
-F8000FFFFFFFFFFD DCFFFE00_01
-FFF17C566BC7D811 D9683A99_01
-FFFFFFFFFFFFC000 C6800000_00
-00000000000000FE 437E0000_00
-FFF82AC14930D386 D8FAA7D6_01
-FFFFFFFFFFFFE000 C6000000_00
-00000000000003FC 447F0000_00
-000E62EC60E119FC 59662EC6_01
-FFFFFFFFFFFFF000 C5800000_00
-FFFFEFF7FF7FFFFE D5804004_01
-0E2B1ECF210EEDC5 5D62B1EC_01
-FFFFFFFFFFFFF800 C5000000_00
-00000000007FFF1F 4AFFFE3E_00
-FFFFFE534F5676F7 D3D65854_01
-FFFFFFFFFFFFFC00 C4800000_00
-0000001004FFFFFD 518027FF_01
-0000035C939669F1 545724E5_01
-FFFFFFFFFFFFFE00 C4000000_00
-1FFFFFFFFFFFFDFD 5DFFFFFF_01
-FFFFFFFFFFFFFF91 C2DE0000_00
-FFFFFFFFFFFFFF00 C3800000_00
-01FFFFFFFBFFEFFE 5BFFFFFF_01
-000000000000016E 43B70000_00
-FFFFFFFFFFFFFF80 C3000000_00
-FFF7FFFFFFFFF7FD D9000000_01
-FFFFF8E2BCFAC553 D4E3A860_01
-FFFFFFFFFFFFFFC0 C2800000_00
-FFFFFBFFFFFE0FFE D4800000_01
-00000001A4E704BF 4FD27382_01
-FFFFFFFFFFFFFFE0 C2000000_00
-1400007FFFFFFFFD 5DA00003_01
-FFFFFFFC93B187B4 D05B139E_01
-FFFFFFFFFFFFFFF0 C1800000_00
-40000000007FFFFD 5E800000_01
-000000000067D468 4ACFA8D0_00
-FFFFFFFFFFFFFFF8 C1000000_00
-007FFEFFFFFBFFFE 5AFFFDFF_01
-FFFFFFE26CEC79F8 D1EC989C_01
-FFFFFFFFFFFFFFFC C0800000_00
-00FFFFFF000000FF 5B7FFFFF_01
-FFFFFFFFE0D3983A CDF9633E_01
-FFFFFFFFFFFFFFFE C0000000_00
-00007FFFBFFF7FFE 56FFFF7F_01
-FFFFFFFDF4A7088A D002D63D_01
-FFFFFFFFFFFFFFFF BF800000_00
-000008000000027E 55000000_01
-000000000000F4E8 4774E800_00
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFF83FFDF CAF80042_00
-00000E11407887B2 55611407_01
-FFFFFFFFFFFFFFFB C0A00000_00
-04000003FFFFFFF6 5C800000_01
-0000000000000513 44A26000_00
-FFFFFFFFFFFFFFF7 C1100000_00
-BFFC00000000003E DE8007FF_01
-00000008D7BBB75B 510D7BBB_01
-FFFFFFFFFFFFFFEF C1880000_00
-000FFFFBFFFC0000 597FFFBF_01
-FFFFFFFFFFCD5A23 CA4A9774_00
-FFFFFFFFFFFFFFDF C2040000_00
-FFBFDFFFBFFFFFFF DA804000_01
-000000000000007F 42FE0000_00
-FFFFFFFFFFFFFFBF C2820000_00
-00000007FF800003 50FFF000_01
-000000000002BB02 482EC080_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEE7FF C78C0080_00
-00264B2B9BAD0DA2 5A192CAE_01
-FFFFFFFFFFFFFEFF C3808000_00
-0000000000100803 49804018_00
-FF9B1DCB9F857D5E DAC9C468_01
-FFFFFFFFFFFFFDFF C4004000_00
-FFFFFFBFFFFFEFEE D2800000_01
-F6FD7542899C1C6F DD1028AB_01
-FFFFFFFFFFFFFBFF C4802000_00
-FF800000004001FF DAFFFFFF_01
-0000000002BE4932 4C2F924C_01
-FFFFFFFFFFFFF7FF C5001000_00
-00001004000FFFFE 55802000_01
-FFFFFF9DAA0123E0 D2C4ABFD_01
-FFFFFFFFFFFFEFFF C5800800_00
-00000001FDFFFDFE 4FFEFFFE_01
-FFFC1C8703B1DCB0 D878DE3F_01
-FFFFFFFFFFFFDFFF C6000400_00
-FE0FE00000000000 DBF81000_00
-0779ED944A4E2779 5CEF3DB2_01
-FFFFFFFFFFFFBFFF C6800200_00
-FBFFFE0400000000 DC80003F_01
-0000010127E03666 538093F0_01
-FFFFFFFFFFFF7FFF C7000100_00
-FFFFF0200000FFFE D57DFFFF_01
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFFFFFFEFFFF C7800080_00
-FFEFFE0000080000 D9800FFF_01
-FFFFFFFFFD3354EA CC332AC5_01
-FFFFFFFFFFFDFFFF C8000040_00
-003FF0000003FFFE 5A7FC000_01
-0000006375B23F7B 52C6EB64_01
-FFFFFFFFFFFBFFFF C8800020_00
-000407FFFFFFFFF6 5880FFFF_01
-0000000092117F38 4F12117F_01
-FFFFFFFFFFF7FFFF C9000010_00
-FFFFFFFFFFFF7FFF C7000100_00
-00000000000008BE 450BE000_00
-FFFFFFFFFFEFFFFF C9800008_00
-004000020FFFFFFF 5A800004_01
-FFFFB84C2D8BC9CB D68F67A4_01
-FFFFFFFFFFDFFFFF CA000004_00
-00FFFFFFFFFFFFFD 5B7FFFFF_01
-00000023C2C6F284 520F0B1B_01
-FFFFFFFFFFBFFFFF CA800002_00
-FFFDDFFFFFFFFFFD D8080000_01
-00000000746356C4 4EE8C6AD_01
-FFFFFFFFFF7FFFFF CB000001_00
-010000000000BFFF 5B800000_01
-FFFFFFFFFFFFFFFD C0400000_00
-FFFFFFFFFEFFFFFF CB800000_01
-FFFFBF7FFBFFFFFE D6810008_01
-00000006386CE889 50C70D9D_01
-FFFFFFFFFDFFFFFF CC000000_01
-F00000F7FFFFFFFF DD7FFFF0_01
-FFFDFC53090C46A4 D800EB3D_01
-FFFFFFFFFBFFFFFF CC800000_01
-0000000000800047 4B000047_00
-FFFFFFFFD693872E CE25B1E3_01
-FFFFFFFFF7FFFFFF CD000000_01
-000000007FBFFBFF 4EFF7FF7_01
-00000026A7845E35 521A9E11_01
-FFFFFFFFEFFFFFFF CD800000_01
-FFFFFFDFFFFFFBFD D2000000_01
-000000001433D14C 4DA19E8A_01
-FFFFFFFFDFFFFFFF CE000000_01
-0001FFFFFFE0000E 57FFFFFF_01
-F0F23E8068D3D84A DD70DC17_01
-FFFFFFFFBFFFFFFF CE800000_01
-F7FFBFFFFFFFBFFF DD000400_01
-FFFFBD29B7459087 D685AC91_01
-FFFFFFFF7FFFFFFF CF000000_01
-FFFFFFF8FFFFBFFF D0E00008_01
-FFFFFFFFFFEDDC06 C9911FD0_00
-FFFFFFFEFFFFFFFF CF800000_01
-FFFFFFF80001FFFF D0FFFFC0_01
-0000000000002FF9 463FE400_00
-FFFFFFFDFFFFFFFF D0000000_01
-004000040000FFFF 5A800008_01
-FFFFFFFFFFFFFFF1 C1700000_00
-FFFFFFFBFFFFFFFF D0800000_01
-C0000000007FFFFA DE7FFFFF_01
-FFFFFFFFFE053E2B CBFD60EA_01
-FFFFFFF7FFFFFFFF D1000000_01
-7FFE000007FFFFFF 5EFFFC00_01
-000000000000000D 41500000_00
-FFFFFFEFFFFFFFFF D1800000_01
-F80000000001007E DCFFFFFF_01
-FFFFED48424AD9D6 D595BDED_01
-FFFFFFDFFFFFFFFF D2000000_01
-FFFFFE0001FEFFFF D3FFFF00_01
-000000000000013B 439D8000_00
-FFFFFFBFFFFFFFFF D2800000_01
-0007FBFFFFFDFFFE 58FF7FFF_01
-4A16BD4128090C83 5E942D7A_01
-FFFFFF7FFFFFFFFF D3000000_01
-00FFF7FFFF7FFFFE 5B7FF7FF_01
-0000000000000006 40C00000_00
-FFFFFEFFFFFFFFFF D3800000_01
-FBFFFFBFFFBFFFFF DC800008_01
-00000000000001BA 43DD0000_00
-FFFFFDFFFFFFFFFF D4000000_01
-0000000040000082 4E800001_01
-FF07A2BF5B689F89 DB785D40_01
-FFFFFBFFFFFFFFFF D4800000_01
-0000001FF8000008 51FFC000_01
-F87CAA7DE672DE8B DCF06AB0_01
-FFFFF7FFFFFFFFFF D5000000_01
-07FFF80000000002 5CFFFF00_01
-0000000010A1E5B8 4D850F2D_01
-FFFFEFFFFFFFFFFF D5800000_01
-F7FFFFE00007FFFF DD000001_01
-FFFFFFFFFFF6ADFC C9152040_00
-FFFFDFFFFFFFFFFF D6000000_01
-FFFFFF03FFFFFFC0 D37C0000_01
-EA579475948F0032 DDAD435C_01
-FFFFBFFFFFFFFFFF D6800000_01
-FC00000000003FF6 DC7FFFFF_01
-002E677AC313BF60 5A399DEB_01
-FFFF7FFFFFFFFFFF D7000000_01
-02000007FF7FFFFF 5C000001_01
-0000000E999639F1 51699963_01
-FFFEFFFFFFFFFFFF D7800000_01
-FFFF83FFFFFFFFBE D6F80000_01
-000000000001537D 47A9BE80_00
-FFFDFFFFFFFFFFFF D8000000_01
-EFFFFFC00000003D DD800001_01
-FFFFFFF21FEDFD35 D15E0120_01
-FFFBFFFFFFFFFFFF D8800000_01
-FFFFFFF0000007FE D17FFFFF_01
-FFFFFFFFFFDE0839 CA07DF1C_00
-FFF7FFFFFFFFFFFF D9000000_01
-0000007FFFE000FF 52FFFFC0_01
-FFFFFFFF79F30F48 CF060CF0_01
-FFEFFFFFFFFFFFFF D9800000_01
-FFFFFC13FFFFFFFD D47B0000_01
-0000000000001B85 45DC2800_00
-FFDFFFFFFFFFFFFF DA000000_01
-000008000007FFFE 55000000_01
-12DB4409E5AE87E6 5D96DA20_01
-FFBFFFFFFFFFFFFF DA800000_01
-FFFFFFFFFFF7BFEE C9040120_00
-FFFFFFFFFFFFFFFD C0400000_00
-FF7FFFFFFFFFFFFF DB000000_01
-000000001040FFFE 4D8207FF_01
-00000909A09C13D3 55109A09_01
-FEFFFFFFFFFFFFFF DB800000_01
-FFFFFF01FFFFFF7F D37E0000_01
-FFFFFF72E7D2575D D30D182D_01
-FDFFFFFFFFFFFFFF DC000000_01
-FFFFFFFFFFFEFFDB C7801280_00
-0000000000000017 41B80000_00
-FBFFFFFFFFFFFFFF DC800000_01
-100000001FFFFFF6 5D800000_01
-000000114B12EF51 518A5897_01
-F7FFFFFFFFFFFFFF DD000000_01
-0407FFFFFFFFFEFF 5C80FFFF_01
-FFFFFF769F3A5C2C D30960C5_01
-EFFFFFFFFFFFFFFF DD800000_01
-FFFFFFFDF7FFFFFD D0020000_01
-FFFFFFFFFFFFFFF2 C1600000_00
-DFFFFFFFFFFFFFFF DE000000_01
-FFFFFFFFFE0007FF CBFFFC00_01
-000000000000001E 41F00000_00
-BFFFFFFFFFFFFFFF DE800000_01
-FFF800000009FFFF D8FFFFFF_01
-0000000000007AA4 46F54800_00
-7FFFFFFFFFFFFFFF 5EFFFFFF_01
-4080000000FFFFFF 5E810000_01
-000000000DE7601D 4D5E7601_01
-3FFFFFFFFFFFFFFF 5E7FFFFF_01
-FFCFFFFFFFBFFFFE DA400000_01
-FFFFFFFFFFFFFFCA C2580000_00
-1FFFFFFFFFFFFFFF 5DFFFFFF_01
-000080400000003F 57004000_01
-00000000001F75A5 49FBAD28_00
-0FFFFFFFFFFFFFFF 5D7FFFFF_01
-FFFFFFEFFFFFCFFE D1800001_01
-FFFFFEE775887420 D38C453B_01
-07FFFFFFFFFFFFFF 5CFFFFFF_01
-00000000000801FE 49001FE0_00
-0000000000213FF1 4A04FFC4_00
-03FFFFFFFFFFFFFF 5C7FFFFF_01
-07FEFFFFFFFFFFEE 5CFFDFFF_01
-0000000000000004 40800000_00
-01FFFFFFFFFFFFFF 5BFFFFFF_01
-0000000820000003 51020000_01
-FFFFFFF9AD105214 D0CA5DF5_01
-00FFFFFFFFFFFFFF 5B7FFFFF_01
-FFFFF00FFFFFFFBE D57F0000_01
-FFFFFFFFFFCC48E7 CA4EDC64_00
-007FFFFFFFFFFFFF 5AFFFFFF_01
-00000FFFEF7FFFFF 557FFEF7_01
-FFFFFFFFFF0BA6CB CB745935_00
-003FFFFFFFFFFFFF 5A7FFFFF_01
-FFFFFF7FBFFFFFBF D3004000_01
-FFFFFFFFFFF24425 C95BBDB0_00
-001FFFFFFFFFFFFF 59FFFFFF_01
-200000001FFBFFFF 5E000000_01
-FFFFFF4E7115EC53 D3318EEA_01
-000FFFFFFFFFFFFF 597FFFFF_01
-FFFFF803FFFFFFBF D4FF8000_01
-FFFFFC2E539ADCFE D4746B19_01
-0007FFFFFFFFFFFF 58FFFFFF_01
-FFFFFFFFFBFFFFFF CC800000_01
-00000055084732F3 52AA108E_01
-0003FFFFFFFFFFFF 587FFFFF_01
-BFFF7FFFFFFFFE00 DE800100_01
-FFFFFFFFFFFF8543 C6F57A00_00
-0001FFFFFFFFFFFF 57FFFFFF_01
-0000001FFBFFE000 51FFDFFF_00
-FFFFFFFFFFFE491B C7DB7280_00
-0000FFFFFFFFFFFF 577FFFFF_01
-FC00200000001FFE DC7FF7FF_01
-FFFFF16898822A24 D5697677_01
-00007FFFFFFFFFFF 56FFFFFF_01
-3FFF03FFFFFFFFFE 5E7FFC0F_01
-FFFFFF8FFE18C7BF D2E003CE_01
-00003FFFFFFFFFFF 567FFFFF_01
-FFFFFEFFFEFFFFFD D3800080_01
-00F03620C1266ED9 5B703620_01
-00001FFFFFFFFFFF 55FFFFFF_01
-BF7EFFFFFFFFFFFF DE810200_01
-FFFFFFFFFFFFFFD5 C22C0000_00
-00000FFFFFFFFFFF 557FFFFF_01
-FFFBFFFFF803FFFE D8800000_01
-0000000000068684 48D0D080_00
-000007FFFFFFFFFF 54FFFFFF_01
-DFFFFFE00000001E DE000000_01
-FFFFFFFFFFFFECF5 C5985800_00
-000003FFFFFFFFFF 547FFFFF_01
-FFFF00400000FFFF D77FBFFF_01
-0000000000000002 40000000_00
-000001FFFFFFFFFF 53FFFFFF_01
-FBFFFFFFFFFFBDFE DC800000_01
-0000000000000BC9 453C9000_00
-000000FFFFFFFFFF 537FFFFF_01
-807FFFFFFFFFDFFE DEFF0000_01
-FFC274E35A70CD76 DA762C72_01
-0000007FFFFFFFFF 52FFFFFF_01
-0FFFFFFFFEFFFFFD 5D7FFFFF_01
-FFFFFFFF00E73AFC CF7F18C5_01
-0000003FFFFFFFFF 527FFFFF_01
-FFC000000001000E DA7FFFFF_01
-FFFFFFFFFFFE15E9 C7F50B80_00
-0000001FFFFFFFFF 51FFFFFF_01
-0001FFFFFFFFF3FD 57FFFFFF_01
-0000000000000033 424C0000_00
-0000000FFFFFFFFF 517FFFFF_01
-000000001FFFBFFF 4DFFFDFF_01
-FFFFFFEE6B141E1B D18CA75F_01
-00000007FFFFFFFF 50FFFFFF_01
-FFFFFFFFF60007FF CD1FFF80_01
-00000001AB310BA6 4FD59885_01
-00000003FFFFFFFF 507FFFFF_01
-0003FFFFB7FFFFFF 587FFFED_01
-FFFFFFFFFFFFF195 C566B000_00
-00000001FFFFFFFF 4FFFFFFF_01
-FFFFFFFF8000000B CEFFFFFF_01
-00000019BA8D5559 51CDD46A_01
-00000000FFFFFFFF 4F7FFFFF_01
-FBFEFFFFFFFFFFF9 DC802000_01
-FFFFFFB6F062822D D2921F3A_01
-000000007FFFFFFF 4EFFFFFF_01
-0001000000000082 57800000_01
-01CEAD9E2FB104A4 5BE756CF_01
-000000003FFFFFFF 4E7FFFFF_01
-000003FFFFFFFF7C 547FFFFF_01
-FFFFFFFFFD681E78 CC25F862_00
-000000001FFFFFFF 4DFFFFFF_01
-00002000400001FF 56000100_01
-0000000000000018 41C00000_00
-000000000FFFFFFF 4D7FFFFF_01
-3FFF80000000003E 5E7FFE00_01
-FFFFFFFFFFFFFF95 C2D60000_00
-0000000007FFFFFF 4CFFFFFF_01
-010000BFFFFFFFFF 5B80005F_01
-0000001697087B19 51B4B843_01
-0000000003FFFFFF 4C7FFFFF_01
-FBFFFFFFFFEEFFFD DC800000_01
-0000000E64BDFC55 51664BDF_01
-0000000001FFFFFF 4BFFFFFF_01
-FC00000001FFFFFE DC7FFFFF_01
-FFFED156A62AB849 D79754AC_01
-0000000000FFFFFF 4B7FFFFF_00
-FFFFFFF83FEFFFFD D0F80200_01
-00015354EAE7C259 57A9AA75_01
-00000000007FFFFF 4AFFFFFE_00
-FFFFFFFFFFFFFF7F C3010000_00
-FFFFFFF0F4DF3C75 D170B20C_01
-00000000003FFFFF 4A7FFFFC_00
-FFFA000000001FFF D8BFFFFF_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000001FFFFF 49FFFFF8_00
-FFFFFFFFFF7FFE40 CB0001C0_00
-FFFFFFDB5433CB9B D212AF30_01
-00000000000FFFFF 497FFFF0_00
-FFFFFDFFDFFDFFFD D4000800_01
-FFFFFFFFFFDEAE1F CA054784_00
-000000000007FFFF 48FFFFE0_00
-FFFFFFFFF0080006 CD7F7FFF_01
-FFFFFFFE7735DEC7 CFC46510_01
-000000000003FFFF 487FFFC0_00
-00000001FBFFFFFF 4FFDFFFF_01
-000003757D8B12ED 545D5F62_01
-000000000001FFFF 47FFFF80_00
-FFFFFE07F7FFFFFF D3FC0400_01
-00000A654064E046 55265406_01
-000000000000FFFF 477FFF00_00
-08000000000017FF 5D000000_01
-FFFFFFFFFFFFFFE7 C1C80000_00
-0000000000007FFF 46FFFE00_00
-07FFFFFFFFFFFDF6 5CFFFFFF_01
-FFFFAD78B3D6C3B6 D6A50E98_01
-0000000000003FFF 467FFC00_00
-0000300004000000 56400010_00
-FFFFFFF70B77F34F D10F4880_01
-0000000000001FFF 45FFF800_00
-FFFFFF80006FFFFE D2FFFF20_01
-0000013EB4D67EC8 539F5A6B_01
-0000000000000FFF 457FF000_00
-BFFFDFFFFBFFFFFF DE800040_01
-0005CEAF34EA1DC7 58B9D5E6_01
-00000000000007FF 44FFE000_00
-00004800007FFFFD 56900000_01
-FFFFFFFFFFFFFFFB C0A00000_00
-00000000000003FF 447FC000_00
-0000000200001000 50000004_00
-00000000000360D0 48583400_00
-00000000000001FF 43FF8000_00
-01003FFFFFFFFFFC 5B801FFF_01
-00C000708FF1BA51 5B400070_01
-00000000000000FF 437F0000_00
-F802000003FFFFFF DCFFBFFF_01
-0F9E07DCC0BDC061 5D79E07D_01
-000000000000007F 42FE0000_00
-03FF0000000000FF 5C7FC000_01
-FFFFFFE1B9B2A079 D1F2326A_01
-000000000000003F 427C0000_00
-FFF80000000080FF D8FFFFFF_01
-00000000001EB5B4 49F5ADA0_00
-000000000000001F 41F80000_00
-000000000077FBFE 4AEFF7FC_00
-00000000005AC607 4AB58C0E_00
-000000000000000F 41700000_00
-FFFFFFFEF80000FF CF83FFFF_01
-000005C5B9D66984 54B8B73A_01
-0000000000000007 40E00000_00
-C001FFFFFFF00000 DE7FF800_01
-00001D06B372AA06 55E8359B_01
-0000000000000003 40400000_00
+07FFFDFFFFFFFF7F_5CFFFFBF_01
+0000000032CC8B7A_4E4B322D_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_CE7FFF00_01
+032C857F319EDE38_5C4B215F_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_D4800000_01
+00394C79B6D3007B_5A6531E6_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_DC800001_01
+0000000001AE458D_4BD722C6_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+F9EB456140D88764_DCC29753_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_D5DFF800_01
+07DE834A248EDF36_5CFBD069_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC007_01
+FFFFFFFFFFE385E2_C9E3D0F0_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_DD7FBE00_01
+000000059EB1FD45_50B3D63F_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_C84001C0_00
+FFFFFFFFFFFEDDFE_C7910100_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000000C89FF56B_4F489FF5_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF7_01
+1B5E4F0BE0DEBFF0_5DDAF278_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_D801FF00_01
+FFFFFFFFFFF4766B_C9389950_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000000C_41400000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+FFE662A109109D0A_D9CCEAF7_01
+0000000000001000_45800000_00
+C000000037FFFFFE_DE7FFFFF_01
+FFFFFFFFFFFFFFE4_C1E00000_00
+0000000000002000_46000000_00
+F801000000100000_DCFFDFFF_01
+FE114B79075F70EE_DBF75A43_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+00000000000003AC_446B0000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000003_01
+00000044A3A3DBE5_52894747_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_D9FFFE08_01
+FFFFFFFFFFFF1A91_C7656F00_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_D503C000_01
+0000000000003309_464C2400_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF7_01
+FFFFFFFFFFFFFF58_C3280000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_D207F800_01
+0000000000002980_46260000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF07F_01
+000000000000005D_42BA0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF7F_01
+FFFC8C23DA2CEAD8_D85CF709_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_DDFFFFFF_01
+FFFFFDE3C1DEC43C_D4070F88_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_D77FFFF4_01
+000000000030FFBE_4A43FEF8_00
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_D7FFFFFC_01
+FFFFFFFFEFDEED86_CD810893_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_DD400000_01
+000000001DA3FF45_4DED1FFA_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_CF7FFEFF_01
+FFFFFFFE9B1BCB54_CFB2721A_01
+0000000008000000_4D000000_00
+00004000004001FE_56800000_01
+F27DD19DE6563714_DD5822E6_01
+0000000010000000_4D800000_00
+FFC00000004007FE_DA7FFFFF_01
+000000000001A359_47D1AC80_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C70003F_01
+FFFFFFFFFE62EC20_CBCE89F0_00
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E7FFFFF_01
+000000000000285F_46217C00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_CE80001F_01
+FFFFF836F99DBAA8_D4F920CC_01
+0000000100000000_4F800000_00
+00000020003FFEFE_520000FF_01
+0033466832042D47_5A4D19A0_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_C4EF2000_00
+00000000003829C8_4A60A720_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_557FFFFF_01
+0000000FB77C672B_517B77C6_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D0003FF_01
+0000000000001B78_45DBC000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_DB000000_01
+0000000000000071_42E20000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_559FFFFF_01
+FFFFFFFFFFFFFF86_C2F40000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+FFF8A60D9E19F17E_D8EB3E4C_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+FFFFFFFFF7506DBA_CD0AF924_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_C7820480_00
+FFFFFFFFFEA42AC9_CBADEA9B_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_5583FFFF_01
+FFE7AA3F2BDACC89_D9C2AE06_01
+0000040000000000_54800000_00
+FFF8040000040000_D8FF7FFF_01
+FFFFFFFFFFFFFFFD_C0400000_00
+0000080000000000_55000000_00
+FFFF80000800001F_D6FFFFEF_01
+FFFDF681DECDADC9_D8025F88_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_D380000F_01
+FFFFFFFFFFFFCFBE_C6410800_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51101FFF_01
+FEC01FECA24DE1B0_DB9FF009_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_DD000000_01
+F858A66761669936_DCF4EB33_01
+0000800000000000_57000000_00
+FFFEFF800000003E_D7803FFF_01
+F716EA43FAC45C97_DD0E915B_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_C2680000_00
+0024D70EC7661FD8_5A135C3B_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_DE7E0000_01
+FFD956DBD0AEE817_DA1AA490_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FB_01
+FFFFFFFFFFFF4300_C73D0000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+C12EDF40F41F6021_DE7B4482_01
+0010000000000000_59800000_00
+FF9000000000001D_DADFFFFF_01
+FFFFFFF83DE950F6_D0F842D5_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_DEFFFFF8_01
+FE2B59CB3A604D69_DBEA531A_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5EFFFFFF_01
+000000A37C210862_53237C21_01
+0080000000000000_5B000000_00
+0002000002000002_58000000_01
+FFFFB65CD8617789_D693464F_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55DFFFFF_01
+FFFFFFFFFFFFF01D_C57E3000_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000000D098D19_4D5098D1_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C7FFFFF_01
+000006B3BD2C7BEF_54D677A5_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFEFF_01
+FFFF4E5ADDDAA4A8_D731A522_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+FFFFFFFFFFFFFF21_C35F0000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83BFFF_01
+FFFFFFFFFC648262_CC66DF67_01
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_DE7FFF80_01
+FFFFFF7353AC45D2_D30CAC53_01
+8000000000000000_DF000000_00
+FFFFFFFFFFE7EFFF_C9C08008_00
+0000000000A1202D_4B21202D_00
+C000000000000000_DE800000_00
+FFFFFFFFFFFF5F7F_C7208100_00
+000000000040CA70_4A8194E0_00
+E000000000000000_DE000000_00
+0000200201FFFFFE_56000807_01
+00000003B55D87D4_506D5761_01
+F000000000000000_DD800000_00
+FF80000DFFFFFFFF_DAFFFFE4_01
+000000010510FAEF_4F82887D_01
+F800000000000000_DD000000_00
+0003FFF00000000F_587FFC00_01
+000000000000724A_46E49400_00
+FC00000000000000_DC800000_00
+FFFFFFDF80000002_D201FFFF_01
+0000000000000064_42C80000_00
+FE00000000000000_DC000000_00
+FEFFFFFFFFF800FE_DB800000_01
+FFFFFFC2C6222702_D274E777_01
+FF00000000000000_DB800000_00
+0000000408000002_50810000_01
+000000E96DF1CB41_53696DF1_01
+FF80000000000000_DB000000_00
+007FFFFFFFFFF9FE_5AFFFFFF_01
+F727F174DEE7DC85_DD0D80E8_01
+FFC0000000000000_DA800000_00
+8000000003FFFEFE_DEFFFFFF_01
+FFFFFFFFFFF0BD5B_C9742A50_00
+FFE0000000000000_DA000000_00
+0BEFFFFFFFFFFFFF_5D3EFFFF_01
+000000000002790C_481E4300_00
+FFF0000000000000_D9800000_00
+FFFFFFFFFFEFFBFA_C9802030_00
+000000169E75DF01_51B4F3AE_01
+FFF8000000000000_D9000000_00
+00000007FEFFDFFF_50FFDFFB_01
+000000000000000E_41600000_00
+FFFC000000000000_D8800000_00
+0003FFFE0007FFFE_587FFF80_01
+FFFFFFFFFFF28622_C9579DE0_00
+FFFE000000000000_D8000000_00
+FFFFFF7FFFFDF7FF_D3000002_01
+00072F0EC496FE21_58E5E1D8_01
+FFFF000000000000_D7800000_00
+DFBFFFFFFFFFFFFE_DE010000_01
+0000000000FC1FCA_4B7C1FCA_00
+FFFF800000000000_D7000000_00
+00000FFF800FFFFE_557FF800_01
+FFFF5194E4A9C2CE_D72E6B1B_01
+FFFFC00000000000_D6800000_00
+00000002100007FD_50040001_01
+FFFFFFFFFFC2D8FE_CA749C08_00
+FFFFE00000000000_D6000000_00
+000000000007FF6E_48FFEDC0_00
+000000000001766E_47BB3700_00
+FFFFF00000000000_D5800000_00
+0040000400000002_5A800008_01
+0000000000007841_46F08200_00
+FFFFF80000000000_D5000000_00
+3DFFFFFFFFFFFF7E_5E77FFFF_01
+FFFFFFE549E17E30_D1D5B0F4_01
+FFFFFC0000000000_D4800000_00
+FFFFFFFFFFFFFEE1_C38F8000_00
+FFFFFFFFFFFFFFE7_C1C80000_00
+FFFFFE0000000000_D4000000_00
+000000000EFFFFDF_4D6FFFFD_01
+FFFFFFFFFFFFFF73_C30D0000_00
+FFFFFF0000000000_D3800000_00
+FD00000008000000_DC3FFFFF_01
+000000000001DBB1_47EDD880_00
+FFFFFF8000000000_D3000000_00
+FFFFFFFFFFF8007F_C8FFF020_00
+FFFFFFFEFD10A515_CF8177AD_01
+FFFFFFC000000000_D2800000_00
+FFEFFFFFFFFFFFFE_D9800000_01
+FAB02984F6283B6C_DCA9FACF_01
+FFFFFFE000000000_D2000000_00
+FFFFFFBC000001FE_D287FFFF_01
+FEB087C6B9FE7FE0_DBA7BC1C_01
+FFFFFFF000000000_D1800000_00
+FFF80001000007FE_D8FFFFDF_01
+00F2762EA6837956_5B72762E_01
+FFFFFFF800000000_D1000000_00
+FFF7E0FFFFFFFFFE_D901F000_01
+00002E1175484626_563845D5_01
+FFFFFFFC00000000_D0800000_00
+0000200020000FFE_56000080_01
+000000000000068F_44D1E000_00
+FFFFFFFE00000000_D0000000_00
+021FFFFFFFFBFFFF_5C07FFFF_01
+FFFFFFFFFFFFFFF9_C0E00000_00
+FFFFFFFF00000000_CF800000_00
+FFFFFFD0000FFFFD_D23FFFC0_01
+000000BDF6658B83_533DF665_01
+FFFFFFFF80000000_CF000000_00
+1000001FFDFFFFFF_5D800000_01
+0000000000003B5B_466D6C00_00
+FFFFFFFFC0000000_CE800000_00
+FFFFFFBFFE0FFFFF_D28003E0_01
+FFFFFFFFFFFFFFF0_C1800000_00
+FFFFFFFFE0000000_CE000000_00
+FFFFFFFBF00007FF_D081FFFF_01
+01E986274F48EAAD_5BF4C313_01
+FFFFFFFFF0000000_CD800000_00
+1FFFFFFDFFFFFF7F_5DFFFFFF_01
+FFFFFFFFFFFFCB5A_C6529800_00
+FFFFFFFFF8000000_CD000000_00
+7FF000000000FFFF_5EFFE000_01
+00000003C2717FC3_50709C5F_01
+FFFFFFFFFC000000_CC800000_00
+FFFFFFE00008001F_D1FFFFBF_01
+FFFFFFFFFFEFABDA_C982A130_00
+FFFFFFFFFE000000_CC000000_00
+0200000000000002_5C000000_01
+FFFFFFFFF8FDA53F_CCE04B58_01
+FFFFFFFFFF000000_CB800000_00
+F6000003FFFFFFFE_DD1FFFFF_01
+FFFFFFFFFFFFFFD0_C2400000_00
+FFFFFFFFFF800000_CB000000_00
+FFFFFFFFFFBFFF7E_CA800104_00
+00000000EE0FEA62_4F6E0FEA_01
+FFFFFFFFFFC00000_CA800000_00
+0000007FFF9FFFFD_52FFFF3F_01
+00000037F35EDC1D_525FCD7B_01
+FFFFFFFFFFE00000_CA000000_00
+FFFFFFF7FDFFFF7D_D1002000_01
+00000000000001AD_43D68000_00
+FFFFFFFFFFF00000_C9800000_00
+FFFFFF0000100020_D37FFFEF_01
+27F167FBC7FC5F9A_5E1FC59F_01
+FFFFFFFFFFF80000_C9000000_00
+003FFFFFFFFC0001_5A7FFFFF_01
+000E48F9F4EBD30E_59648F9F_01
+FFFFFFFFFFFC0000_C8800000_00
+DFFFFFFFFFFBFFFE_DE000000_01
+FC91C23EE8C9424F_DC5B8F70_01
+FFFFFFFFFFFE0000_C8000000_00
+F7DFFBFFFFFFFFFE_DD020040_01
+000000002CAE080C_4E32B820_01
+FFFFFFFFFFFF0000_C7800000_00
+FFFFC00010000020_D67FFFBF_01
+04D921F917B20E40_5C9B243F_01
+FFFFFFFFFFFF8000_C7000000_00
+F8000FFFFFFFFFFD_DCFFFE00_01
+FFF17C566BC7D811_D9683A99_01
+FFFFFFFFFFFFC000_C6800000_00
+00000000000000FE_437E0000_00
+FFF82AC14930D386_D8FAA7D6_01
+FFFFFFFFFFFFE000_C6000000_00
+00000000000003FC_447F0000_00
+000E62EC60E119FC_59662EC6_01
+FFFFFFFFFFFFF000_C5800000_00
+FFFFEFF7FF7FFFFE_D5804004_01
+0E2B1ECF210EEDC5_5D62B1EC_01
+FFFFFFFFFFFFF800_C5000000_00
+00000000007FFF1F_4AFFFE3E_00
+FFFFFE534F5676F7_D3D65854_01
+FFFFFFFFFFFFFC00_C4800000_00
+0000001004FFFFFD_518027FF_01
+0000035C939669F1_545724E5_01
+FFFFFFFFFFFFFE00_C4000000_00
+1FFFFFFFFFFFFDFD_5DFFFFFF_01
+FFFFFFFFFFFFFF91_C2DE0000_00
+FFFFFFFFFFFFFF00_C3800000_00
+01FFFFFFFBFFEFFE_5BFFFFFF_01
+000000000000016E_43B70000_00
+FFFFFFFFFFFFFF80_C3000000_00
+FFF7FFFFFFFFF7FD_D9000000_01
+FFFFF8E2BCFAC553_D4E3A860_01
+FFFFFFFFFFFFFFC0_C2800000_00
+FFFFFBFFFFFE0FFE_D4800000_01
+00000001A4E704BF_4FD27382_01
+FFFFFFFFFFFFFFE0_C2000000_00
+1400007FFFFFFFFD_5DA00003_01
+FFFFFFFC93B187B4_D05B139E_01
+FFFFFFFFFFFFFFF0_C1800000_00
+40000000007FFFFD_5E800000_01
+000000000067D468_4ACFA8D0_00
+FFFFFFFFFFFFFFF8_C1000000_00
+007FFEFFFFFBFFFE_5AFFFDFF_01
+FFFFFFE26CEC79F8_D1EC989C_01
+FFFFFFFFFFFFFFFC_C0800000_00
+00FFFFFF000000FF_5B7FFFFF_01
+FFFFFFFFE0D3983A_CDF9633E_01
+FFFFFFFFFFFFFFFE_C0000000_00
+00007FFFBFFF7FFE_56FFFF7F_01
+FFFFFFFDF4A7088A_D002D63D_01
+FFFFFFFFFFFFFFFF_BF800000_00
+000008000000027E_55000000_01
+000000000000F4E8_4774E800_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFF83FFDF_CAF80042_00
+00000E11407887B2_55611407_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+04000003FFFFFFF6_5C800000_01
+0000000000000513_44A26000_00
+FFFFFFFFFFFFFFF7_C1100000_00
+BFFC00000000003E_DE8007FF_01
+00000008D7BBB75B_510D7BBB_01
+FFFFFFFFFFFFFFEF_C1880000_00
+000FFFFBFFFC0000_597FFFBF_01
+FFFFFFFFFFCD5A23_CA4A9774_00
+FFFFFFFFFFFFFFDF_C2040000_00
+FFBFDFFFBFFFFFFF_DA804000_01
+000000000000007F_42FE0000_00
+FFFFFFFFFFFFFFBF_C2820000_00
+00000007FF800003_50FFF000_01
+000000000002BB02_482EC080_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEE7FF_C78C0080_00
+00264B2B9BAD0DA2_5A192CAE_01
+FFFFFFFFFFFFFEFF_C3808000_00
+0000000000100803_49804018_00
+FF9B1DCB9F857D5E_DAC9C468_01
+FFFFFFFFFFFFFDFF_C4004000_00
+FFFFFFBFFFFFEFEE_D2800000_01
+F6FD7542899C1C6F_DD1028AB_01
+FFFFFFFFFFFFFBFF_C4802000_00
+FF800000004001FF_DAFFFFFF_01
+0000000002BE4932_4C2F924C_01
+FFFFFFFFFFFFF7FF_C5001000_00
+00001004000FFFFE_55802000_01
+FFFFFF9DAA0123E0_D2C4ABFD_01
+FFFFFFFFFFFFEFFF_C5800800_00
+00000001FDFFFDFE_4FFEFFFE_01
+FFFC1C8703B1DCB0_D878DE3F_01
+FFFFFFFFFFFFDFFF_C6000400_00
+FE0FE00000000000_DBF81000_00
+0779ED944A4E2779_5CEF3DB2_01
+FFFFFFFFFFFFBFFF_C6800200_00
+FBFFFE0400000000_DC80003F_01
+0000010127E03666_538093F0_01
+FFFFFFFFFFFF7FFF_C7000100_00
+FFFFF0200000FFFE_D57DFFFF_01
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFFFFFFEFFFF_C7800080_00
+FFEFFE0000080000_D9800FFF_01
+FFFFFFFFFD3354EA_CC332AC5_01
+FFFFFFFFFFFDFFFF_C8000040_00
+003FF0000003FFFE_5A7FC000_01
+0000006375B23F7B_52C6EB64_01
+FFFFFFFFFFFBFFFF_C8800020_00
+000407FFFFFFFFF6_5880FFFF_01
+0000000092117F38_4F12117F_01
+FFFFFFFFFFF7FFFF_C9000010_00
+FFFFFFFFFFFF7FFF_C7000100_00
+00000000000008BE_450BE000_00
+FFFFFFFFFFEFFFFF_C9800008_00
+004000020FFFFFFF_5A800004_01
+FFFFB84C2D8BC9CB_D68F67A4_01
+FFFFFFFFFFDFFFFF_CA000004_00
+00FFFFFFFFFFFFFD_5B7FFFFF_01
+00000023C2C6F284_520F0B1B_01
+FFFFFFFFFFBFFFFF_CA800002_00
+FFFDDFFFFFFFFFFD_D8080000_01
+00000000746356C4_4EE8C6AD_01
+FFFFFFFFFF7FFFFF_CB000001_00
+010000000000BFFF_5B800000_01
+FFFFFFFFFFFFFFFD_C0400000_00
+FFFFFFFFFEFFFFFF_CB800000_01
+FFFFBF7FFBFFFFFE_D6810008_01
+00000006386CE889_50C70D9D_01
+FFFFFFFFFDFFFFFF_CC000000_01
+F00000F7FFFFFFFF_DD7FFFF0_01
+FFFDFC53090C46A4_D800EB3D_01
+FFFFFFFFFBFFFFFF_CC800000_01
+0000000000800047_4B000047_00
+FFFFFFFFD693872E_CE25B1E3_01
+FFFFFFFFF7FFFFFF_CD000000_01
+000000007FBFFBFF_4EFF7FF7_01
+00000026A7845E35_521A9E11_01
+FFFFFFFFEFFFFFFF_CD800000_01
+FFFFFFDFFFFFFBFD_D2000000_01
+000000001433D14C_4DA19E8A_01
+FFFFFFFFDFFFFFFF_CE000000_01
+0001FFFFFFE0000E_57FFFFFF_01
+F0F23E8068D3D84A_DD70DC17_01
+FFFFFFFFBFFFFFFF_CE800000_01
+F7FFBFFFFFFFBFFF_DD000400_01
+FFFFBD29B7459087_D685AC91_01
+FFFFFFFF7FFFFFFF_CF000000_01
+FFFFFFF8FFFFBFFF_D0E00008_01
+FFFFFFFFFFEDDC06_C9911FD0_00
+FFFFFFFEFFFFFFFF_CF800000_01
+FFFFFFF80001FFFF_D0FFFFC0_01
+0000000000002FF9_463FE400_00
+FFFFFFFDFFFFFFFF_D0000000_01
+004000040000FFFF_5A800008_01
+FFFFFFFFFFFFFFF1_C1700000_00
+FFFFFFFBFFFFFFFF_D0800000_01
+C0000000007FFFFA_DE7FFFFF_01
+FFFFFFFFFE053E2B_CBFD60EA_01
+FFFFFFF7FFFFFFFF_D1000000_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000000D_41500000_00
+FFFFFFEFFFFFFFFF_D1800000_01
+F80000000001007E_DCFFFFFF_01
+FFFFED48424AD9D6_D595BDED_01
+FFFFFFDFFFFFFFFF_D2000000_01
+FFFFFE0001FEFFFF_D3FFFF00_01
+000000000000013B_439D8000_00
+FFFFFFBFFFFFFFFF_D2800000_01
+0007FBFFFFFDFFFE_58FF7FFF_01
+4A16BD4128090C83_5E942D7A_01
+FFFFFF7FFFFFFFFF_D3000000_01
+00FFF7FFFF7FFFFE_5B7FF7FF_01
+0000000000000006_40C00000_00
+FFFFFEFFFFFFFFFF_D3800000_01
+FBFFFFBFFFBFFFFF_DC800008_01
+00000000000001BA_43DD0000_00
+FFFFFDFFFFFFFFFF_D4000000_01
+0000000040000082_4E800001_01
+FF07A2BF5B689F89_DB785D40_01
+FFFFFBFFFFFFFFFF_D4800000_01
+0000001FF8000008_51FFC000_01
+F87CAA7DE672DE8B_DCF06AB0_01
+FFFFF7FFFFFFFFFF_D5000000_01
+07FFF80000000002_5CFFFF00_01
+0000000010A1E5B8_4D850F2D_01
+FFFFEFFFFFFFFFFF_D5800000_01
+F7FFFFE00007FFFF_DD000001_01
+FFFFFFFFFFF6ADFC_C9152040_00
+FFFFDFFFFFFFFFFF_D6000000_01
+FFFFFF03FFFFFFC0_D37C0000_01
+EA579475948F0032_DDAD435C_01
+FFFFBFFFFFFFFFFF_D6800000_01
+FC00000000003FF6_DC7FFFFF_01
+002E677AC313BF60_5A399DEB_01
+FFFF7FFFFFFFFFFF_D7000000_01
+02000007FF7FFFFF_5C000001_01
+0000000E999639F1_51699963_01
+FFFEFFFFFFFFFFFF_D7800000_01
+FFFF83FFFFFFFFBE_D6F80000_01
+000000000001537D_47A9BE80_00
+FFFDFFFFFFFFFFFF_D8000000_01
+EFFFFFC00000003D_DD800001_01
+FFFFFFF21FEDFD35_D15E0120_01
+FFFBFFFFFFFFFFFF_D8800000_01
+FFFFFFF0000007FE_D17FFFFF_01
+FFFFFFFFFFDE0839_CA07DF1C_00
+FFF7FFFFFFFFFFFF_D9000000_01
+0000007FFFE000FF_52FFFFC0_01
+FFFFFFFF79F30F48_CF060CF0_01
+FFEFFFFFFFFFFFFF_D9800000_01
+FFFFFC13FFFFFFFD_D47B0000_01
+0000000000001B85_45DC2800_00
+FFDFFFFFFFFFFFFF_DA000000_01
+000008000007FFFE_55000000_01
+12DB4409E5AE87E6_5D96DA20_01
+FFBFFFFFFFFFFFFF_DA800000_01
+FFFFFFFFFFF7BFEE_C9040120_00
+FFFFFFFFFFFFFFFD_C0400000_00
+FF7FFFFFFFFFFFFF_DB000000_01
+000000001040FFFE_4D8207FF_01
+00000909A09C13D3_55109A09_01
+FEFFFFFFFFFFFFFF_DB800000_01
+FFFFFF01FFFFFF7F_D37E0000_01
+FFFFFF72E7D2575D_D30D182D_01
+FDFFFFFFFFFFFFFF_DC000000_01
+FFFFFFFFFFFEFFDB_C7801280_00
+0000000000000017_41B80000_00
+FBFFFFFFFFFFFFFF_DC800000_01
+100000001FFFFFF6_5D800000_01
+000000114B12EF51_518A5897_01
+F7FFFFFFFFFFFFFF_DD000000_01
+0407FFFFFFFFFEFF_5C80FFFF_01
+FFFFFF769F3A5C2C_D30960C5_01
+EFFFFFFFFFFFFFFF_DD800000_01
+FFFFFFFDF7FFFFFD_D0020000_01
+FFFFFFFFFFFFFFF2_C1600000_00
+DFFFFFFFFFFFFFFF_DE000000_01
+FFFFFFFFFE0007FF_CBFFFC00_01
+000000000000001E_41F00000_00
+BFFFFFFFFFFFFFFF_DE800000_01
+FFF800000009FFFF_D8FFFFFF_01
+0000000000007AA4_46F54800_00
+7FFFFFFFFFFFFFFF_5EFFFFFF_01
+4080000000FFFFFF_5E810000_01
+000000000DE7601D_4D5E7601_01
+3FFFFFFFFFFFFFFF_5E7FFFFF_01
+FFCFFFFFFFBFFFFE_DA400000_01
+FFFFFFFFFFFFFFCA_C2580000_00
+1FFFFFFFFFFFFFFF_5DFFFFFF_01
+000080400000003F_57004000_01
+00000000001F75A5_49FBAD28_00
+0FFFFFFFFFFFFFFF_5D7FFFFF_01
+FFFFFFEFFFFFCFFE_D1800001_01
+FFFFFEE775887420_D38C453B_01
+07FFFFFFFFFFFFFF_5CFFFFFF_01
+00000000000801FE_49001FE0_00
+0000000000213FF1_4A04FFC4_00
+03FFFFFFFFFFFFFF_5C7FFFFF_01
+07FEFFFFFFFFFFEE_5CFFDFFF_01
+0000000000000004_40800000_00
+01FFFFFFFFFFFFFF_5BFFFFFF_01
+0000000820000003_51020000_01
+FFFFFFF9AD105214_D0CA5DF5_01
+00FFFFFFFFFFFFFF_5B7FFFFF_01
+FFFFF00FFFFFFFBE_D57F0000_01
+FFFFFFFFFFCC48E7_CA4EDC64_00
+007FFFFFFFFFFFFF_5AFFFFFF_01
+00000FFFEF7FFFFF_557FFEF7_01
+FFFFFFFFFF0BA6CB_CB745935_00
+003FFFFFFFFFFFFF_5A7FFFFF_01
+FFFFFF7FBFFFFFBF_D3004000_01
+FFFFFFFFFFF24425_C95BBDB0_00
+001FFFFFFFFFFFFF_59FFFFFF_01
+200000001FFBFFFF_5E000000_01
+FFFFFF4E7115EC53_D3318EEA_01
+000FFFFFFFFFFFFF_597FFFFF_01
+FFFFF803FFFFFFBF_D4FF8000_01
+FFFFFC2E539ADCFE_D4746B19_01
+0007FFFFFFFFFFFF_58FFFFFF_01
+FFFFFFFFFBFFFFFF_CC800000_01
+00000055084732F3_52AA108E_01
+0003FFFFFFFFFFFF_587FFFFF_01
+BFFF7FFFFFFFFE00_DE800100_01
+FFFFFFFFFFFF8543_C6F57A00_00
+0001FFFFFFFFFFFF_57FFFFFF_01
+0000001FFBFFE000_51FFDFFF_00
+FFFFFFFFFFFE491B_C7DB7280_00
+0000FFFFFFFFFFFF_577FFFFF_01
+FC00200000001FFE_DC7FF7FF_01
+FFFFF16898822A24_D5697677_01
+00007FFFFFFFFFFF_56FFFFFF_01
+3FFF03FFFFFFFFFE_5E7FFC0F_01
+FFFFFF8FFE18C7BF_D2E003CE_01
+00003FFFFFFFFFFF_567FFFFF_01
+FFFFFEFFFEFFFFFD_D3800080_01
+00F03620C1266ED9_5B703620_01
+00001FFFFFFFFFFF_55FFFFFF_01
+BF7EFFFFFFFFFFFF_DE810200_01
+FFFFFFFFFFFFFFD5_C22C0000_00
+00000FFFFFFFFFFF_557FFFFF_01
+FFFBFFFFF803FFFE_D8800000_01
+0000000000068684_48D0D080_00
+000007FFFFFFFFFF_54FFFFFF_01
+DFFFFFE00000001E_DE000000_01
+FFFFFFFFFFFFECF5_C5985800_00
+000003FFFFFFFFFF_547FFFFF_01
+FFFF00400000FFFF_D77FBFFF_01
+0000000000000002_40000000_00
+000001FFFFFFFFFF_53FFFFFF_01
+FBFFFFFFFFFFBDFE_DC800000_01
+0000000000000BC9_453C9000_00
+000000FFFFFFFFFF_537FFFFF_01
+807FFFFFFFFFDFFE_DEFF0000_01
+FFC274E35A70CD76_DA762C72_01
+0000007FFFFFFFFF_52FFFFFF_01
+0FFFFFFFFEFFFFFD_5D7FFFFF_01
+FFFFFFFF00E73AFC_CF7F18C5_01
+0000003FFFFFFFFF_527FFFFF_01
+FFC000000001000E_DA7FFFFF_01
+FFFFFFFFFFFE15E9_C7F50B80_00
+0000001FFFFFFFFF_51FFFFFF_01
+0001FFFFFFFFF3FD_57FFFFFF_01
+0000000000000033_424C0000_00
+0000000FFFFFFFFF_517FFFFF_01
+000000001FFFBFFF_4DFFFDFF_01
+FFFFFFEE6B141E1B_D18CA75F_01
+00000007FFFFFFFF_50FFFFFF_01
+FFFFFFFFF60007FF_CD1FFF80_01
+00000001AB310BA6_4FD59885_01
+00000003FFFFFFFF_507FFFFF_01
+0003FFFFB7FFFFFF_587FFFED_01
+FFFFFFFFFFFFF195_C566B000_00
+00000001FFFFFFFF_4FFFFFFF_01
+FFFFFFFF8000000B_CEFFFFFF_01
+00000019BA8D5559_51CDD46A_01
+00000000FFFFFFFF_4F7FFFFF_01
+FBFEFFFFFFFFFFF9_DC802000_01
+FFFFFFB6F062822D_D2921F3A_01
+000000007FFFFFFF_4EFFFFFF_01
+0001000000000082_57800000_01
+01CEAD9E2FB104A4_5BE756CF_01
+000000003FFFFFFF_4E7FFFFF_01
+000003FFFFFFFF7C_547FFFFF_01
+FFFFFFFFFD681E78_CC25F862_00
+000000001FFFFFFF_4DFFFFFF_01
+00002000400001FF_56000100_01
+0000000000000018_41C00000_00
+000000000FFFFFFF_4D7FFFFF_01
+3FFF80000000003E_5E7FFE00_01
+FFFFFFFFFFFFFF95_C2D60000_00
+0000000007FFFFFF_4CFFFFFF_01
+010000BFFFFFFFFF_5B80005F_01
+0000001697087B19_51B4B843_01
+0000000003FFFFFF_4C7FFFFF_01
+FBFFFFFFFFEEFFFD_DC800000_01
+0000000E64BDFC55_51664BDF_01
+0000000001FFFFFF_4BFFFFFF_01
+FC00000001FFFFFE_DC7FFFFF_01
+FFFED156A62AB849_D79754AC_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_D0F80200_01
+00015354EAE7C259_57A9AA75_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_C3010000_00
+FFFFFFF0F4DF3C75_D170B20C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_D8BFFFFF_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_CB0001C0_00
+FFFFFFDB5433CB9B_D212AF30_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_D4000800_01
+FFFFFFFFFFDEAE1F_CA054784_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_CD7F7FFF_01
+FFFFFFFE7735DEC7_CFC46510_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFDFFFF_01
+000003757D8B12ED_545D5F62_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_D3FC0400_01
+00000A654064E046_55265406_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+FFFFFFFFFFFFFFE7_C1C80000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5CFFFFFF_01
+FFFFAD78B3D6C3B6_D6A50E98_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+FFFFFFF70B77F34F_D10F4880_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_D2FFFF20_01
+0000013EB4D67EC8_539F5A6B_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_DE800040_01
+0005CEAF34EA1DC7_58B9D5E6_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900000_01
+FFFFFFFFFFFFFFFB_C0A00000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000360D0_48583400_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B801FFF_01
+00C000708FF1BA51_5B400070_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_DCFFBFFF_01
+0F9E07DCC0BDC061_5D79E07D_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+FFFFFFE1B9B2A079_D1F2326A_01
+000000000000003F_427C0000_00
+FFF80000000080FF_D8FFFFFF_01
+00000000001EB5B4_49F5ADA0_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+00000000005AC607_4AB58C0E_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_CF83FFFF_01
+000005C5B9D66984_54B8B73A_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_DE7FF800_01
+00001D06B372AA06_55E8359B_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rd.tv b/wally-pipelined/testbench/fp/i64_f64_rd.tv
index eaab9a1ee..771d36c2c 100644
--- a/wally-pipelined/testbench/fp/i64_f64_rd.tv
+++ b/wally-pipelined/testbench/fp/i64_f64_rd.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 439FFFF7FFFFFFFD_01
-0000000032CC8B7A 41C96645BD000000_00
-0000000000000000 0000000000000000_00
-FFFFFFFFC0003FFE C1CFFFE001000000_00
-032C857F319EDE38 4389642BF98CF6F1_01
-0000000000000001 3FF0000000000000_00
-FFFFFBFFFFF8003E C29000001FFF0800_00
-00394C79B6D3007B 434CA63CDB69803D_01
-0000000000000002 4000000000000000_00
-FBFFFFF0000001FF C39000003FFFFFF9_01
-0000000001AE458D 417AE458D0000000_00
-0000000000000004 4010000000000000_00
-00040008000007FE 4310002000001FF8_00
-F9EB456140D88764 C39852EA7AFC9DE3_01
-0000000000000008 4020000000000000_00
-FFFFE400FFFFFFFE C2BBFF0000000200_00
-07DE834A248EDF36 439F7A0D28923B7C_01
-0000000000000010 4030000000000000_00
-00000003FF001FFF 420FF800FFF80000_00
-FFFFFFFFFFE385E2 C13C7A1E00000000_00
-0000000000000020 4040000000000000_00
-F0041FFFFFFFFFFF C3AFF7C000000001_01
-000000059EB1FD45 42167AC7F5140000_00
-0000000000000040 4050000000000000_00
-FFFFFFFFFFFCFFF9 C108003800000000_00
-FFFFFFFFFFFEDDFE C0F2202000000000_00
-0000000000000080 4060000000000000_00
-000000000003FF00 410FF80000000000_00
-00000000C89FF56B 41E913FEAD600000_00
-0000000000000100 4070000000000000_00
-000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
-1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEBF_01
-0000000000000200 4080000000000000_00
-FFFDF803FFFFFFFF C3003FE000000008_00
-FFFFFFFFFFF4766B C127132A00000000_00
-0000000000000400 4090000000000000_00
-0000080100000FFE 42A00200001FFC00_00
-000000000000000C 4028000000000000_00
-0000000000000800 40A0000000000000_00
-0048000000100000 4352000000040000_00
-FFE662A109109D0A C3399D5EF6EF62F6_00
-0000000000001000 40B0000000000000_00
-C000000037FFFFFE C3CFFFFFFFE40001_01
-FFFFFFFFFFFFFFE4 C03C000000000000_00
-0000000000002000 40C0000000000000_00
-F801000000100000 C39FFBFFFFFFC000_00
-FE114B79075F70EE C37EEB486F8A08F2_01
-0000000000004000 40D0000000000000_00
-100000000001003E 43B0000000000100_01
-00000000000003AC 408D600000000000_00
-0000000000008000 40E0000000000000_00
-200000FFFFFFF800 43C000007FFFFFFC_00
-00000044A3A3DBE5 425128E8F6F94000_00
-0000000000010000 40F0000000000000_00
-FFE0003EFFFFFFFF C33FFFC100000001_00
-FFFFFFFFFFFF1A91 C0ECADE000000000_00
-0000000000020000 4100000000000000_00
-FFFFF7C3FFFFFFFD C2A0780000000600_00
-0000000000003309 40C9848000000000_00
-0000000000040000 4110000000000000_00
-000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
-FFFFFFFFFFFFFF58 C065000000000000_00
-0000000000080000 4120000000000000_00
-FFFFFFDE01FFFFFE C240FF0000010000_00
-0000000000002980 40C4C00000000000_00
-0000000000100000 4130000000000000_00
-00000000FFF07FFF 41EFFE0FFFE00000_00
-000000000000005D 4057400000000000_00
-0000000000200000 4140000000000000_00
-000020FFDFFFFFFF 42C07FEFFFFFFF80_00
-FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
-0000000000400000 4150000000000000_00
-E0000000003FFFDF C3BFFFFFFFFFC001_01
-FFFFFDE3C1DEC43C C280E1F109DE2000_00
-0000000000800000 4160000000000000_00
-FFFF00000BFFFFFD C2EFFFFE80000060_00
-000000000030FFBE 41487FDF00000000_00
-0000000001000000 4170000000000000_00
-FFFE000007FFEFFD C2FFFFFF80010030_00
-FFFFFFFFEFDEED86 C1B021127A000000_00
-0000000002000000 4180000000000000_00
-F3FFFFFFFFBFFFFE C3A8000000008001_01
-000000001DA3FF45 41BDA3FF45000000_00
-0000000004000000 4190000000000000_00
-FFFFFFFF00010007 C1EFFFDFFF200000_00
-FFFFFFFE9B1BCB54 C1F64E434AC00000_00
-0000000008000000 41A0000000000000_00
-00004000004001FE 42D0000010007F80_00
-F27DD19DE6563714 C3AB045CC4335392_01
-0000000010000000 41B0000000000000_00
-FFC00000004007FE C34FFFFFFFDFFC01_00
-000000000001A359 40FA359000000000_00
-0000000020000000 41C0000000000000_00
-0000000003C000FE 418E0007F0000000_00
-FFFFFFFFFE62EC20 C179D13E00000000_00
-0000000040000000 41D0000000000000_00
-000000003FFFFFFD 41CFFFFFFE800000_00
-000000000000285F 40C42F8000000000_00
-0000000080000000 41E0000000000000_00
-FFFFFFFFBFFFF00F C1D00003FC400000_00
-FFFFF836F99DBAA8 C29F241989156000_00
-0000000100000000 41F0000000000000_00
-00000020003FFEFE 4240001FFF7F0000_00
-0033466832042D47 4349A334190216A3_01
-0000000200000000 4200000000000000_00
-FFFFFFFFFFFFF887 C09DE40000000000_00
-00000000003829C8 414C14E400000000_00
-0000000400000000 4210000000000000_00
-00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
-0000000FB77C672B 422F6EF8CE560000_00
-0000000800000000 4220000000000000_00
-08003FFDFFFFFFFE 43A0007FFBFFFFFF_01
-0000000000001B78 40BB780000000000_00
-0000001000000000 4230000000000000_00
-FF7FFFFFFFEFDFFF C360000000020401_01
-0000000000000071 405C400000000000_00
-0000002000000000 4240000000000000_00
-000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
-FFFFFFFFFFFFFF86 C05E800000000000_00
-0000004000000000 4250000000000000_00
-0800000000040800 43A0000000000810_00
-FFF8A60D9E19F17E C31D67C987983A08_00
-0000008000000000 4260000000000000_00
-000077FFF0000000 42DDFFFC00000000_00
-FFFFFFFFF7506DBA C1A15F248C000000_00
-0000010000000000 4270000000000000_00
-FFFFFFFFFFFEFBF7 C0F0409000000000_00
-FFFFFFFFFEA42AC9 C175BD5370000000_00
-0000020000000000 4280000000000000_00
-0000107FFFFFDFFD 42B07FFFFFDFFD00_00
-FFE7AA3F2BDACC89 C33855C0D4253377_00
-0000040000000000 4290000000000000_00
-FFF8040000040000 C31FEFFFFFF00000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-0000080000000000 42A0000000000000_00
-FFFF80000800001F C2DFFFFDFFFFF840_00
-FFFDF681DECDADC9 C3004BF1099291B8_00
-0000100000000000 42B0000000000000_00
-FFFFFEFFFFE0007F C2700001FFF81000_00
-FFFFFFFFFFFFCFBE C0C8210000000000_00
-0000200000000000 42C0000000000000_00
-0000000901FFFFFD 422203FFFFFA0000_00
-FEC01FECA24DE1B0 C373FE0135DB21E5_00
-0000400000000000 42D0000000000000_00
-F7FFFFFFDFFF7FFF C3A0000000400101_01
-F858A66761669936 C39E9D66627A659C_01
-0000800000000000 42E0000000000000_00
-FFFEFF800000003E C2F007FFFFFFFC20_00
-F716EA43FAC45C97 C3A1D22B780A7747_01
-0001000000000000 42F0000000000000_00
-FFFFFFFFFFFFFFC6 C04D000000000000_00
-0024D70EC7661FD8 43426B8763B30FEC_00
-0002000000000000 4300000000000000_00
-C07FFFFFFFFFFFFE C3CFC00000000001_01
-FFD956DBD0AEE817 C343549217A88BF5_01
-0004000000000000 4310000000000000_00
-020003EFFFFFFFFE 4380001F7FFFFFFF_01
-FFFFFFFFFFFF4300 C0E7A00000000000_00
-0008000000000000 4320000000000000_00
-4000000004002000 43D0000000010008_00
-C12EDF40F41F6021 C3CF68905F85F050_01
-0010000000000000 4330000000000000_00
-FF9000000000001D C35BFFFFFFFFFFF9_01
-FFFFFFF83DE950F6 C21F085ABC280000_00
-0020000000000000 4340000000000000_00
-800003FFFFFC0000 C3DFFFFF00000100_00
-FE2B59CB3A604D69 C37D4A634C59FB2A_01
-0040000000000000 4350000000000000_00
-7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFEF_01
-000000A37C210862 42646F84210C4000_00
-0080000000000000 4360000000000000_00
-0002000002000002 4300000010000010_00
-FFFFB65CD8617789 C2D268C9E7A21DC0_00
-0100000000000000 4370000000000000_00
-00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
-FFFFFFFFFFFFF01D C0AFC60000000000_00
-0200000000000000 4380000000000000_00
-1000008000003FFF 43B000008000003F_01
-000000000D098D19 41AA131A32000000_00
-0400000000000000 4390000000000000_00
-03FFFFFFFFFFF5FF 438FFFFFFFFFFFAF_01
-000006B3BD2C7BEF 429ACEF4B1EFBC00_00
-0800000000000000 43A0000000000000_00
-00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
-FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
-1000000000000000 43B0000000000000_00
-001FFFC000000FFD 433FFFC000000FFD_00
-FFFFFFFFFFFFFF21 C06BE00000000000_00
-2000000000000000 43C0000000000000_00
-0000000041DFFFFF 41D077FFFFC00000_00
-FFFFFFFFFC648262 C18CDBECF0000000_00
-4000000000000000 43D0000000000000_00
-C0001FFFFFFFFFFB C3CFFFF000000001_01
-FFFFFF7353AC45D2 C261958A7745C000_00
-8000000000000000 C3E0000000000000_00
-FFFFFFFFFFE7EFFF C138100100000000_00
-0000000000A1202D 41642405A0000000_00
-C000000000000000 C3D0000000000000_00
-FFFFFFFFFFFF5F7F C0E4102000000000_00
-000000000040CA70 4150329C00000000_00
-E000000000000000 C3C0000000000000_00
-0000200201FFFFFE 42C00100FFFFFF00_00
-00000003B55D87D4 420DAAEC3EA00000_00
-F000000000000000 C3B0000000000000_00
-FF80000DFFFFFFFF C35FFFFC80000001_01
-000000010510FAEF 41F0510FAEF00000_00
-F800000000000000 C3A0000000000000_00
-0003FFF00000000F 430FFF8000000078_00
-000000000000724A 40DC928000000000_00
-FC00000000000000 C390000000000000_00
-FFFFFFDF80000002 C2403FFFFFFF0000_00
-0000000000000064 4059000000000000_00
-FE00000000000000 C380000000000000_00
-FEFFFFFFFFF800FE C370000000007FF1_01
-FFFFFFC2C6222702 C24E9CEEEC7F0000_00
-FF00000000000000 C370000000000000_00
-0000000408000002 4210200000080000_00
-000000E96DF1CB41 426D2DBE39682000_00
-FF80000000000000 C360000000000000_00
-007FFFFFFFFFF9FE 435FFFFFFFFFFE7F_01
-F727F174DEE7DC85 C3A1B01D16423047_01
-FFC0000000000000 C350000000000000_00
-8000000003FFFEFE C3DFFFFFFFFF0001_01
-FFFFFFFFFFF0BD5B C12E854A00000000_00
-FFE0000000000000 C340000000000000_00
-0BEFFFFFFFFFFFFF 43A7DFFFFFFFFFFF_01
-000000000002790C 4103C86000000000_00
-FFF0000000000000 C330000000000000_00
-FFFFFFFFFFEFFBFA C130040600000000_00
-000000169E75DF01 42369E75DF010000_00
-FFF8000000000000 C320000000000000_00
-00000007FEFFDFFF 421FFBFF7FFC0000_00
-000000000000000E 402C000000000000_00
-FFFC000000000000 C310000000000000_00
-0003FFFE0007FFFE 430FFFF0003FFFF0_00
-FFFFFFFFFFF28622 C12AF3BC00000000_00
-FFFE000000000000 C300000000000000_00
-FFFFFF7FFFFDF7FF C260000041002000_00
-00072F0EC496FE21 431CBC3B125BF884_00
-FFFF000000000000 C2F0000000000000_00
-DFBFFFFFFFFFFFFE C3C0200000000001_01
-0000000000FC1FCA 416F83F940000000_00
-FFFF800000000000 C2E0000000000000_00
-00000FFF800FFFFE 42AFFF001FFFFC00_00
-FFFF5194E4A9C2CE C2E5CD636AC7A640_00
-FFFFC00000000000 C2D0000000000000_00
-00000002100007FD 420080003FE80000_00
-FFFFFFFFFFC2D8FE C14E938100000000_00
-FFFFE00000000000 C2C0000000000000_00
-000000000007FF6E 411FFDB800000000_00
-000000000001766E 40F766E000000000_00
-FFFFF00000000000 C2B0000000000000_00
-0040000400000002 4350000100000000_01
-0000000000007841 40DE104000000000_00
-FFFFF80000000000 C2A0000000000000_00
-3DFFFFFFFFFFFF7E 43CEFFFFFFFFFFFF_01
-FFFFFFE549E17E30 C23AB61E81D00000_00
-FFFFFC0000000000 C290000000000000_00
-FFFFFFFFFFFFFEE1 C071F00000000000_00
-FFFFFFFFFFFFFFE7 C039000000000000_00
-FFFFFE0000000000 C280000000000000_00
-000000000EFFFFDF 41ADFFFFBE000000_00
-FFFFFFFFFFFFFF73 C061A00000000000_00
-FFFFFF0000000000 C270000000000000_00
-FD00000008000000 C387FFFFFFC00000_00
-000000000001DBB1 40FDBB1000000000_00
-FFFFFF8000000000 C260000000000000_00
-FFFFFFFFFFF8007F C11FFE0400000000_00
-FFFFFFFEFD10A515 C1F02EF5AEB00000_00
-FFFFFFC000000000 C250000000000000_00
-FFEFFFFFFFFFFFFE C330000000000002_00
-FAB02984F6283B6C C3953F59EC275F13_01
-FFFFFFE000000000 C240000000000000_00
-FFFFFFBC000001FE C250FFFFFF808000_00
-FEB087C6B9FE7FE0 C374F78394601802_00
-FFFFFFF000000000 C230000000000000_00
-FFF80001000007FE C31FFFFBFFFFE008_00
-00F2762EA6837956 436E4EC5D4D06F2A_01
-FFFFFFF800000000 C220000000000000_00
-FFF7E0FFFFFFFFFE C3203E0000000004_00
-00002E1175484626 42C708BAA4231300_00
-FFFFFFFC00000000 C210000000000000_00
-0000200020000FFE 42C000100007FF00_00
-000000000000068F 409A3C0000000000_00
-FFFFFFFE00000000 C200000000000000_00
-021FFFFFFFFBFFFF 4380FFFFFFFFDFFF_01
-FFFFFFFFFFFFFFF9 C01C000000000000_00
-FFFFFFFF00000000 C1F0000000000000_00
-FFFFFFD0000FFFFD C247FFF800018000_00
-000000BDF6658B83 4267BECCB1706000_00
-FFFFFFFF80000000 C1E0000000000000_00
-1000001FFDFFFFFF 43B000001FFDFFFF_01
-0000000000003B5B 40CDAD8000000000_00
-FFFFFFFFC0000000 C1D0000000000000_00
-FFFFFFBFFE0FFFFF C250007C00004000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-FFFFFFFFE0000000 C1C0000000000000_00
-FFFFFFFBF00007FF C2103FFFE0040000_00
-01E986274F48EAAD 437E986274F48EAA_01
-FFFFFFFFF0000000 C1B0000000000000_00
-1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
-FFFFFFFFFFFFCB5A C0CA530000000000_00
-FFFFFFFFF8000000 C1A0000000000000_00
-7FF000000000FFFF 43DFFC000000003F_01
-00000003C2717FC3 420E138BFE180000_00
-FFFFFFFFFC000000 C190000000000000_00
-FFFFFFE00008001F C23FFFF7FFE10000_00
-FFFFFFFFFFEFABDA C130542600000000_00
-FFFFFFFFFE000000 C180000000000000_00
-0200000000000002 4380000000000000_01
-FFFFFFFFF8FDA53F C19C096B04000000_00
-FFFFFFFFFF000000 C170000000000000_00
-F6000003FFFFFFFE C3A3FFFFF8000001_01
-FFFFFFFFFFFFFFD0 C048000000000000_00
-FFFFFFFFFF800000 C160000000000000_00
-FFFFFFFFFFBFFF7E C150002080000000_00
-00000000EE0FEA62 41EDC1FD4C400000_00
-FFFFFFFFFFC00000 C150000000000000_00
-0000007FFF9FFFFD 425FFFE7FFFF4000_00
-00000037F35EDC1D 424BF9AF6E0E8000_00
-FFFFFFFFFFE00000 C140000000000000_00
-FFFFFFF7FDFFFF7D C220040001060000_00
-00000000000001AD 407AD00000000000_00
-FFFFFFFFFFF00000 C130000000000000_00
-FFFFFF0000100020 C26FFFFDFFFC0000_00
-27F167FBC7FC5F9A 43C3F8B3FDE3FE2F_01
-FFFFFFFFFFF80000 C120000000000000_00
-003FFFFFFFFC0001 434FFFFFFFFE0000_01
-000E48F9F4EBD30E 432C91F3E9D7A61C_00
-FFFFFFFFFFFC0000 C110000000000000_00
-DFFFFFFFFFFBFFFE C3C0000000000201_01
-FC91C23EE8C9424F C38B71EE08B9B5EE_01
-FFFFFFFFFFFE0000 C100000000000000_00
-F7DFFBFFFFFFFFFE C3A0400800000001_01
-000000002CAE080C 41C6570406000000_00
-FFFFFFFFFFFF0000 C0F0000000000000_00
-FFFFC00010000020 C2CFFFF7FFFFF000_00
-04D921F917B20E40 43936487E45EC839_00
-FFFFFFFFFFFF8000 C0E0000000000000_00
-F8000FFFFFFFFFFD C39FFFC000000001_01
-FFF17C566BC7D811 C32D075328704FDE_00
-FFFFFFFFFFFFC000 C0D0000000000000_00
-00000000000000FE 406FC00000000000_00
-FFF82AC14930D386 C31F54FADB3CB1E8_00
-FFFFFFFFFFFFE000 C0C0000000000000_00
-00000000000003FC 408FE00000000000_00
-000E62EC60E119FC 432CC5D8C1C233F8_00
-FFFFFFFFFFFFF000 C0B0000000000000_00
-FFFFEFF7FF7FFFFE C2B0080080000200_00
-0E2B1ECF210EEDC5 43AC563D9E421DDB_01
-FFFFFFFFFFFFF800 C0A0000000000000_00
-00000000007FFF1F 415FFFC7C0000000_00
-FFFFFE534F5676F7 C27ACB0A98909000_00
-FFFFFFFFFFFFFC00 C090000000000000_00
-0000001004FFFFFD 423004FFFFFD0000_00
-0000035C939669F1 428AE49CB34F8800_00
-FFFFFFFFFFFFFE00 C080000000000000_00
-1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFD_01
-FFFFFFFFFFFFFF91 C05BC00000000000_00
-FFFFFFFFFFFFFF00 C070000000000000_00
-01FFFFFFFBFFEFFE 437FFFFFFFBFFEFF_01
-000000000000016E 4076E00000000000_00
-FFFFFFFFFFFFFF80 C060000000000000_00
-FFF7FFFFFFFFF7FD C320000000001006_00
-FFFFF8E2BCFAC553 C29C750C14EAB400_00
-FFFFFFFFFFFFFFC0 C050000000000000_00
-FFFFFBFFFFFE0FFE C290000007C00800_00
-00000001A4E704BF 41FA4E704BF00000_00
-FFFFFFFFFFFFFFE0 C040000000000000_00
-1400007FFFFFFFFD 43B400007FFFFFFF_01
-FFFFFFFC93B187B4 C20B6273C2600000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-40000000007FFFFD 43D0000000001FFF_01
-000000000067D468 4159F51A00000000_00
-FFFFFFFFFFFFFFF8 C020000000000000_00
-007FFEFFFFFBFFFE 435FFFBFFFFEFFFF_01
-FFFFFFE26CEC79F8 C23D931386080000_00
-FFFFFFFFFFFFFFFC C010000000000000_00
-00FFFFFF000000FF 436FFFFFE000001F_01
-FFFFFFFFE0D3983A C1BF2C67C6000000_00
-FFFFFFFFFFFFFFFE C000000000000000_00
-00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
-FFFFFFFDF4A7088A C2005AC7BBB00000_00
-FFFFFFFFFFFFFFFF BFF0000000000000_00
-000008000000027E 42A000000004FC00_00
-000000000000F4E8 40EE9D0000000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFF83FFDF C15F000840000000_00
-00000E11407887B2 42AC2280F10F6400_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-04000003FFFFFFF6 439000000FFFFFFF_01
-0000000000000513 40944C0000000000_00
-FFFFFFFFFFFFFFF7 C022000000000000_00
-BFFC00000000003E C3D0010000000000_01
-00000008D7BBB75B 4221AF776EB60000_00
-FFFFFFFFFFFFFFEF C031000000000000_00
-000FFFFBFFFC0000 432FFFF7FFF80000_00
-FFFFFFFFFFCD5A23 C14952EE80000000_00
-FFFFFFFFFFFFFFDF C040800000000000_00
-FFBFDFFFBFFFFFFF C350080010000001_01
-000000000000007F 405FC00000000000_00
-FFFFFFFFFFFFFFBF C050400000000000_00
-00000007FF800003 421FFE00000C0000_00
-000000000002BB02 4105D81000000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEE7FF C0F1801000000000_00
-00264B2B9BAD0DA2 43432595CDD686D1_00
-FFFFFFFFFFFFFEFF C070100000000000_00
-0000000000100803 4130080300000000_00
-FF9B1DCB9F857D5E C359388D181EA0A9_01
-FFFFFFFFFFFFFDFF C080080000000000_00
-FFFFFFBFFFFFEFEE C250000004048000_00
-F6FD7542899C1C6F C3A205157AECC7C8_01
-FFFFFFFFFFFFFBFF C090040000000000_00
-FF800000004001FF C35FFFFFFFEFFF81_01
-0000000002BE4932 4185F24990000000_00
-FFFFFFFFFFFFF7FF C0A0020000000000_00
-00001004000FFFFE 42B004000FFFFE00_00
-FFFFFF9DAA0123E0 C258957FB7080000_00
-FFFFFFFFFFFFEFFF C0B0010000000000_00
-00000001FDFFFDFE 41FFDFFFDFE00000_00
-FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
-FFFFFFFFFFFFDFFF C0C0008000000000_00
-FE0FE00000000000 C37F020000000000_00
-0779ED944A4E2779 439DE7B65129389D_01
-FFFFFFFFFFFFBFFF C0D0004000000000_00
-FBFFFE0400000000 C3900007F0000000_00
-0000010127E03666 4270127E03666000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-FFFFF0200000FFFE C2AFBFFFFE000400_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEFFFF C0F0001000000000_00
-FFEFFE0000080000 C33001FFFFF80000_00
-FFFFFFFFFD3354EA C1866558B0000000_00
-FFFFFFFFFFFDFFFF C100000800000000_00
-003FF0000003FFFE 434FF8000001FFFF_00
-0000006375B23F7B 4258DD6C8FDEC000_00
-FFFFFFFFFFFBFFFF C110000400000000_00
-000407FFFFFFFFF6 43101FFFFFFFFFD8_00
-0000000092117F38 41E2422FE7000000_00
-FFFFFFFFFFF7FFFF C120000200000000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-00000000000008BE 40A17C0000000000_00
-FFFFFFFFFFEFFFFF C130000100000000_00
-004000020FFFFFFF 4350000083FFFFFF_01
-FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
-FFFFFFFFFFDFFFFF C140000080000000_00
-00FFFFFFFFFFFFFD 436FFFFFFFFFFFFF_01
-00000023C2C6F284 4241E16379420000_00
-FFFFFFFFFFBFFFFF C150000040000000_00
-FFFDDFFFFFFFFFFD C301000000000018_00
-00000000746356C4 41DD18D5B1000000_00
-FFFFFFFFFF7FFFFF C160000020000000_00
-010000000000BFFF 4370000000000BFF_01
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFEFFFFFF C170000010000000_00
-FFFFBF7FFBFFFFFE C2D0200100000080_00
-00000006386CE889 4218E1B3A2240000_00
-FFFFFFFFFDFFFFFF C180000008000000_00
-F00000F7FFFFFFFF C3AFFFFE10000001_01
-FFFDFC53090C46A4 C3001D67B79DCAE0_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-0000000000800047 41600008E0000000_00
-FFFFFFFFD693872E C1C4B63C69000000_00
-FFFFFFFFF7FFFFFF C1A0000002000000_00
-000000007FBFFBFF 41DFEFFEFFC00000_00
-00000026A7845E35 424353C22F1A8000_00
-FFFFFFFFEFFFFFFF C1B0000001000000_00
-FFFFFFDFFFFFFBFD C240000002018000_00
-000000001433D14C 41B433D14C000000_00
-FFFFFFFFDFFFFFFF C1C0000000800000_00
-0001FFFFFFE0000E 42FFFFFFFE0000E0_00
-F0F23E8068D3D84A C3AE1B82FF2E5850_01
-FFFFFFFFBFFFFFFF C1D0000000400000_00
-F7FFBFFFFFFFBFFF C3A0008000000081_01
-FFFFBD29B7459087 C2D0B5922E9BDE40_00
-FFFFFFFF7FFFFFFF C1E0000000200000_00
-FFFFFFF8FFFFBFFF C21C000100040000_00
-FFFFFFFFFFEDDC06 C13223FA00000000_00
-FFFFFFFEFFFFFFFF C1F0000000100000_00
-FFFFFFF80001FFFF C21FFFF800040000_00
-0000000000002FF9 40C7FC8000000000_00
-FFFFFFFDFFFFFFFF C200000000080000_00
-004000040000FFFF 4350000100003FFF_01
-FFFFFFFFFFFFFFF1 C02E000000000000_00
-FFFFFFFBFFFFFFFF C210000000040000_00
-C0000000007FFFFA C3CFFFFFFFFFC001_01
-FFFFFFFFFE053E2B C17FAC1D50000000_00
-FFFFFFF7FFFFFFFF C220000000020000_00
-7FFE000007FFFFFF 43DFFF800001FFFF_01
-000000000000000D 402A000000000000_00
-FFFFFFEFFFFFFFFF C230000000010000_00
-F80000000001007E C39FFFFFFFFFFBFF_01
-FFFFED48424AD9D6 C2B2B7BDB5262A00_00
-FFFFFFDFFFFFFFFF C240000000008000_00
-FFFFFE0001FEFFFF C27FFFE010001000_00
-000000000000013B 4073B00000000000_00
-FFFFFFBFFFFFFFFF C250000000004000_00
-0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
-4A16BD4128090C83 43D285AF504A0243_01
-FFFFFF7FFFFFFFFF C260000000002000_00
-00FFF7FFFF7FFFFE 436FFEFFFFEFFFFF_01
-0000000000000006 4018000000000000_00
-FFFFFEFFFFFFFFFF C270000000001000_00
-FBFFFFBFFFBFFFFF C390000100010001_01
-00000000000001BA 407BA00000000000_00
-FFFFFDFFFFFFFFFF C280000000000800_00
-0000000040000082 41D0000020800000_00
-FF07A2BF5B689F89 C36F0BA81492EC0F_01
-FFFFFBFFFFFFFFFF C290000000000400_00
-0000001FF8000008 423FF80000080000_00
-F87CAA7DE672DE8B C39E0D5608663486_01
-FFFFF7FFFFFFFFFF C2A0000000000200_00
-07FFF80000000002 439FFFE000000000_01
-0000000010A1E5B8 41B0A1E5B8000000_00
-FFFFEFFFFFFFFFFF C2B0000000000100_00
-F7FFFFE00007FFFF C3A000003FFFF001_01
-FFFFFFFFFFF6ADFC C122A40800000000_00
-FFFFDFFFFFFFFFFF C2C0000000000080_00
-FFFFFF03FFFFFFC0 C26F800000080000_00
-EA579475948F0032 C3B5A86B8A6B7100_01
-FFFFBFFFFFFFFFFF C2D0000000000040_00
-FC00000000003FF6 C38FFFFFFFFFFE01_01
-002E677AC313BF60 434733BD6189DFB0_00
-FFFF7FFFFFFFFFFF C2E0000000000020_00
-02000007FF7FFFFF 438000003FFBFFFF_01
-0000000E999639F1 422D332C73E20000_00
-FFFEFFFFFFFFFFFF C2F0000000000010_00
-FFFF83FFFFFFFFBE C2DF000000001080_00
-000000000001537D 40F537D000000000_00
-FFFDFFFFFFFFFFFF C300000000000008_00
-EFFFFFC00000003D C3B0000040000000_01
-FFFFFFF21FEDFD35 C22BC02405960000_00
-FFFBFFFFFFFFFFFF C310000000000004_00
-FFFFFFF0000007FE C22FFFFFF0040000_00
-FFFFFFFFFFDE0839 C140FBE380000000_00
-FFF7FFFFFFFFFFFF C320000000000002_00
-0000007FFFE000FF 425FFFF8003FC000_00
-FFFFFFFF79F30F48 C1E0C19E17000000_00
-FFEFFFFFFFFFFFFF C330000000000001_00
-FFFFFC13FFFFFFFD C28F600000001800_00
-0000000000001B85 40BB850000000000_00
-FFDFFFFFFFFFFFFF C340000000000001_01
-000008000007FFFE 42A000000FFFFC00_00
-12DB4409E5AE87E6 43B2DB4409E5AE87_01
-FFBFFFFFFFFFFFFF C350000000000001_01
-FFFFFFFFFFF7BFEE C120802400000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FF7FFFFFFFFFFFFF C360000000000001_01
-000000001040FFFE 41B040FFFE000000_00
-00000909A09C13D3 42A213413827A600_00
-FEFFFFFFFFFFFFFF C370000000000001_01
-FFFFFF01FFFFFF7F C26FC00000102000_00
-FFFFFF72E7D2575D C261A305B5146000_00
-FDFFFFFFFFFFFFFF C380000000000001_01
-FFFFFFFFFFFEFFDB C0F0025000000000_00
-0000000000000017 4037000000000000_00
-FBFFFFFFFFFFFFFF C390000000000001_01
-100000001FFFFFF6 43B00000001FFFFF_01
-000000114B12EF51 42314B12EF510000_00
-F7FFFFFFFFFFFFFF C3A0000000000001_01
-0407FFFFFFFFFEFF 43901FFFFFFFFFFB_01
-FFFFFF769F3A5C2C C2612C18B47A8000_00
-EFFFFFFFFFFFFFFF C3B0000000000001_01
-FFFFFFFDF7FFFFFD C200400000180000_00
-FFFFFFFFFFFFFFF2 C02C000000000000_00
-DFFFFFFFFFFFFFFF C3C0000000000001_01
-FFFFFFFFFE0007FF C17FFF8010000000_00
-000000000000001E 403E000000000000_00
-BFFFFFFFFFFFFFFF C3D0000000000001_01
-FFF800000009FFFF C31FFFFFFFD80004_00
-0000000000007AA4 40DEA90000000000_00
-7FFFFFFFFFFFFFFF 43DFFFFFFFFFFFFF_01
-4080000000FFFFFF 43D0200000003FFF_01
-000000000DE7601D 41ABCEC03A000000_00
-3FFFFFFFFFFFFFFF 43CFFFFFFFFFFFFF_01
-FFCFFFFFFFBFFFFE C348000000200001_00
-FFFFFFFFFFFFFFCA C04B000000000000_00
-1FFFFFFFFFFFFFFF 43BFFFFFFFFFFFFF_01
-000080400000003F 42E00800000007E0_00
-00000000001F75A5 413F75A500000000_00
-0FFFFFFFFFFFFFFF 43AFFFFFFFFFFFFF_01
-FFFFFFEFFFFFCFFE C230000030020000_00
-FFFFFEE775887420 C27188A778BE0000_00
-07FFFFFFFFFFFFFF 439FFFFFFFFFFFFF_01
-00000000000801FE 412003FC00000000_00
-0000000000213FF1 41409FF880000000_00
-03FFFFFFFFFFFFFF 438FFFFFFFFFFFFF_01
-07FEFFFFFFFFFFEE 439FFBFFFFFFFFFF_01
-0000000000000004 4010000000000000_00
-01FFFFFFFFFFFFFF 437FFFFFFFFFFFFF_01
-0000000820000003 4220400000060000_00
-FFFFFFF9AD105214 C2194BBEB7B00000_00
-00FFFFFFFFFFFFFF 436FFFFFFFFFFFFF_01
-FFFFF00FFFFFFFBE C2AFE00000008400_00
-FFFFFFFFFFCC48E7 C149DB8C80000000_00
-007FFFFFFFFFFFFF 435FFFFFFFFFFFFF_01
-00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
-FFFFFFFFFF0BA6CB C16E8B26A0000000_00
-003FFFFFFFFFFFFF 434FFFFFFFFFFFFF_01
-FFFFFF7FBFFFFFBF C260080000082000_00
-FFFFFFFFFFF24425 C12B77B600000000_00
-001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
-200000001FFBFFFF 43C00000000FFDFF_01
-FFFFFF4E7115EC53 C26631DD4275A000_00
-000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
-FFFFF803FFFFFFBF C29FF00000010400_00
-FFFFFC2E539ADCFE C28E8D6329181000_00
-0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-00000055084732F3 42554211CCBCC000_00
-0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
-BFFF7FFFFFFFFE00 C3D0002000000001_01
-FFFFFFFFFFFF8543 C0DEAF4000000000_00
-0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
-0000001FFBFFE000 423FFBFFE0000000_00
-FFFFFFFFFFFE491B C0FB6E5000000000_00
-0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
-FC00200000001FFE C38FFEFFFFFFFF01_01
-FFFFF16898822A24 C2AD2ECEFBABB800_00
-00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
-3FFF03FFFFFFFFFE 43CFFF81FFFFFFFF_01
-FFFFFF8FFE18C7BF C25C0079CE104000_00
-00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
-FFFFFEFFFEFFFFFD C270001000003000_00
-00F03620C1266ED9 436E06C41824CDDB_01
-00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
-BF7EFFFFFFFFFFFF C3D0204000000001_01
-FFFFFFFFFFFFFFD5 C045800000000000_00
-00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
-FFFBFFFFF803FFFE C31000001FF00008_00
-0000000000068684 411A1A1000000000_00
-000007FFFFFFFFFF 429FFFFFFFFFFC00_00
-DFFFFFE00000001E C3C0000010000000_01
-FFFFFFFFFFFFECF5 C0B30B0000000000_00
-000003FFFFFFFFFF 428FFFFFFFFFF800_00
-FFFF00400000FFFF C2EFF7FFFFE00020_00
-0000000000000002 4000000000000000_00
-000001FFFFFFFFFF 427FFFFFFFFFF000_00
-FBFFFFFFFFFFBDFE C390000000000109_01
-0000000000000BC9 40A7920000000000_00
-000000FFFFFFFFFF 426FFFFFFFFFE000_00
-807FFFFFFFFFDFFE C3DFE00000000009_01
-FFC274E35A70CD76 C34EC58E52C79945_00
-0000007FFFFFFFFF 425FFFFFFFFFC000_00
-0FFFFFFFFEFFFFFD 43AFFFFFFFFDFFFF_01
-FFFFFFFF00E73AFC C1EFE318A0800000_00
-0000003FFFFFFFFF 424FFFFFFFFF8000_00
-FFC000000001000E C34FFFFFFFFF7FF9_00
-FFFFFFFFFFFE15E9 C0FEA17000000000_00
-0000001FFFFFFFFF 423FFFFFFFFF0000_00
-0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
-0000000000000033 4049800000000000_00
-0000000FFFFFFFFF 422FFFFFFFFE0000_00
-000000001FFFBFFF 41BFFFBFFF000000_00
-FFFFFFEE6B141E1B C23194EBE1E50000_00
-00000007FFFFFFFF 421FFFFFFFFC0000_00
-FFFFFFFFF60007FF C1A3FFF002000000_00
-00000001AB310BA6 41FAB310BA600000_00
-00000003FFFFFFFF 420FFFFFFFF80000_00
-0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
-FFFFFFFFFFFFF195 C0ACD60000000000_00
-00000001FFFFFFFF 41FFFFFFFFF00000_00
-FFFFFFFF8000000B C1DFFFFFFD400000_00
-00000019BA8D5559 4239BA8D55590000_00
-00000000FFFFFFFF 41EFFFFFFFE00000_00
-FBFEFFFFFFFFFFF9 C390040000000001_01
-FFFFFFB6F062822D C25243E75F74C000_00
-000000007FFFFFFF 41DFFFFFFFC00000_00
-0001000000000082 42F0000000000820_00
-01CEAD9E2FB104A4 437CEAD9E2FB104A_01
-000000003FFFFFFF 41CFFFFFFF800000_00
-000003FFFFFFFF7C 428FFFFFFFFBE000_00
-FFFFFFFFFD681E78 C184BF0C40000000_00
-000000001FFFFFFF 41BFFFFFFF000000_00
-00002000400001FF 42C000200000FF80_00
-0000000000000018 4038000000000000_00
-000000000FFFFFFF 41AFFFFFFE000000_00
-3FFF80000000003E 43CFFFC000000000_01
-FFFFFFFFFFFFFF95 C05AC00000000000_00
-0000000007FFFFFF 419FFFFFFC000000_00
-010000BFFFFFFFFF 4370000BFFFFFFFF_01
-0000001697087B19 423697087B190000_00
-0000000003FFFFFF 418FFFFFF8000000_00
-FBFFFFFFFFEEFFFD C390000000004401_01
-0000000E64BDFC55 422CC97BF8AA0000_00
-0000000001FFFFFF 417FFFFFF0000000_00
-FC00000001FFFFFE C38FFFFFFFF00001_01
-FFFED156A62AB849 C2F2EA959D547B70_00
-0000000000FFFFFF 416FFFFFE0000000_00
-FFFFFFF83FEFFFFD C21F0040000C0000_00
-00015354EAE7C259 42F5354EAE7C2590_00
-00000000007FFFFF 415FFFFFC0000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFF0F4DF3C75 C22E164187160000_00
-00000000003FFFFF 414FFFFF80000000_00
-FFFA000000001FFF C317FFFFFFFF8004_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000001FFFFF 413FFFFF00000000_00
-FFFFFFFFFF7FFE40 C160003800000000_00
-FFFFFFDB5433CB9B C24255E61A328000_00
-00000000000FFFFF 412FFFFE00000000_00
-FFFFFDFFDFFDFFFD C280010010001800_00
-FFFFFFFFFFDEAE1F C140A8F080000000_00
-000000000007FFFF 411FFFFC00000000_00
-FFFFFFFFF0080006 C1AFEFFFF4000000_00
-FFFFFFFE7735DEC7 C1F88CA213900000_00
-000000000003FFFF 410FFFF800000000_00
-00000001FBFFFFFF 41FFBFFFFFF00000_00
-000003757D8B12ED 428BABEC58976800_00
-000000000001FFFF 40FFFFF000000000_00
-FFFFFE07F7FFFFFF C27F808000001000_00
-00000A654064E046 42A4CA80C9C08C00_00
-000000000000FFFF 40EFFFE000000000_00
-08000000000017FF 43A000000000002F_01
-FFFFFFFFFFFFFFE7 C039000000000000_00
-0000000000007FFF 40DFFFC000000000_00
-07FFFFFFFFFFFDF6 439FFFFFFFFFFFF7_01
-FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
-0000000000003FFF 40CFFF8000000000_00
-0000300004000000 42C8000200000000_00
-FFFFFFF70B77F34F C221E91019620000_00
-0000000000001FFF 40BFFF0000000000_00
-FFFFFF80006FFFFE C25FFFE400008000_00
-0000013EB4D67EC8 4273EB4D67EC8000_00
-0000000000000FFF 40AFFE0000000000_00
-BFFFDFFFFBFFFFFF C3D0000800010001_01
-0005CEAF34EA1DC7 43173ABCD3A8771C_00
-00000000000007FF 409FFC0000000000_00
-00004800007FFFFD 42D200001FFFFF40_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000000003FF 408FF80000000000_00
-0000000200001000 4200000080000000_00
-00000000000360D0 410B068000000000_00
-00000000000001FF 407FF00000000000_00
-01003FFFFFFFFFFC 437003FFFFFFFFFF_01
-00C000708FF1BA51 4368000E11FE374A_01
-00000000000000FF 406FE00000000000_00
-F802000003FFFFFF C39FF7FFFFF00001_01
-0F9E07DCC0BDC061 43AF3C0FB9817B80_01
-000000000000007F 405FC00000000000_00
-03FF0000000000FF 438FF80000000007_01
-FFFFFFE1B9B2A079 C23E464D5F870000_00
-000000000000003F 404F800000000000_00
-FFF80000000080FF C31FFFFFFFFDFC04_00
-00000000001EB5B4 413EB5B400000000_00
-000000000000001F 403F000000000000_00
-000000000077FBFE 415DFEFF80000000_00
-00000000005AC607 4156B181C0000000_00
-000000000000000F 402E000000000000_00
-FFFFFFFEF80000FF C1F07FFFF0100000_00
-000005C5B9D66984 429716E759A61000_00
-0000000000000007 401C000000000000_00
-C001FFFFFFF00000 C3CFFF0000000800_00
-00001D06B372AA06 42BD06B372AA0600_00
-0000000000000003 4008000000000000_00
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFD_01
+0000000032CC8B7A_41C96645BD000000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_C1CFFFE001000000_00
+032C857F319EDE38_4389642BF98CF6F1_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_C29000001FFF0800_00
+00394C79B6D3007B_434CA63CDB69803D_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_C39000003FFFFFF9_01
+0000000001AE458D_417AE458D0000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+F9EB456140D88764_C39852EA7AFC9DE3_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_C2BBFF0000000200_00
+07DE834A248EDF36_439F7A0D28923B7C_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+FFFFFFFFFFE385E2_C13C7A1E00000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_C3AFF7C000000001_01
+000000059EB1FD45_42167AC7F5140000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_C108003800000000_00
+FFFFFFFFFFFEDDFE_C0F2202000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000000C89FF56B_41E913FEAD600000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0_43BB5E4F0BE0DEBF_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_C3003FE000000008_00
+FFFFFFFFFFF4766B_C127132A00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000000C_4028000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+FFE662A109109D0A_C3399D5EF6EF62F6_00
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_C3CFFFFFFFE40001_01
+FFFFFFFFFFFFFFE4_C03C000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_C39FFBFFFFFFC000_00
+FE114B79075F70EE_C37EEB486F8A08F2_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+00000000000003AC_408D600000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+00000044A3A3DBE5_425128E8F6F94000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_C33FFFC100000001_00
+FFFFFFFFFFFF1A91_C0ECADE000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_C2A0780000000600_00
+0000000000003309_40C9848000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58_C065000000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_C240FF0000010000_00
+0000000000002980_40C4C00000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+000000000000005D_4057400000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8_C30B9EE12E98A940_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_C3BFFFFFFFFFC001_01
+FFFFFDE3C1DEC43C_C280E1F109DE2000_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_C2EFFFFE80000060_00
+000000000030FFBE_41487FDF00000000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_C2FFFFFF80010030_00
+FFFFFFFFEFDEED86_C1B021127A000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_C3A8000000008001_01
+000000001DA3FF45_41BDA3FF45000000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54_C1F64E434AC00000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+F27DD19DE6563714_C3AB045CC4335392_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_C34FFFFFFFDFFC01_00
+000000000001A359_40FA359000000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+FFFFFFFFFE62EC20_C179D13E00000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000285F_40C42F8000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_C1D00003FC400000_00
+FFFFF836F99DBAA8_C29F241989156000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0033466832042D47_4349A334190216A3_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_C09DE40000000000_00
+00000000003829C8_414C14E400000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000000FB77C672B_422F6EF8CE560000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFBFFFFFF_01
+0000000000001B78_40BB780000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_C360000000020401_01
+0000000000000071_405C400000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86_C05E800000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+FFF8A60D9E19F17E_C31D67C987983A08_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+FFFFFFFFF7506DBA_C1A15F248C000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_C0F0409000000000_00
+FFFFFFFFFEA42AC9_C175BD5370000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89_C33855C0D4253377_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9_C3004BF1099291B8_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_C2700001FFF81000_00
+FFFFFFFFFFFFCFBE_C0C8210000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+FEC01FECA24DE1B0_C373FE0135DB21E5_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_C3A0000000400101_01
+F858A66761669936_C39E9D66627A659C_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_C2F007FFFFFFFC20_00
+F716EA43FAC45C97_C3A1D22B780A7747_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_C04D000000000000_00
+0024D70EC7661FD8_43426B8763B30FEC_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_C3CFC00000000001_01
+FFD956DBD0AEE817_C343549217A88BF5_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F7FFFFFFF_01
+FFFFFFFFFFFF4300_C0E7A00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+C12EDF40F41F6021_C3CF68905F85F050_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_C35BFFFFFFFFFFF9_01
+FFFFFFF83DE950F6_C21F085ABC280000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_C3DFFFFF00000100_00
+FE2B59CB3A604D69_C37D4A634C59FB2A_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFEF_01
+000000A37C210862_42646F84210C4000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+FFFFB65CD8617789_C2D268C9E7A21DC0_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D_C0AFC60000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B000008000003F_01
+000000000D098D19_41AA131A32000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFAF_01
+000006B3BD2C7BEF_429ACEF4B1EFBC00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8_C2E634A444AB6B00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+FFFFFFFFFFFFFF21_C06BE00000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+FFFFFFFFFC648262_C18CDBECF0000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_C3CFFFF000000001_01
+FFFFFF7353AC45D2_C261958A7745C000_00
+8000000000000000_C3E0000000000000_00
+FFFFFFFFFFE7EFFF_C138100100000000_00
+0000000000A1202D_41642405A0000000_00
+C000000000000000_C3D0000000000000_00
+FFFFFFFFFFFF5F7F_C0E4102000000000_00
+000000000040CA70_4150329C00000000_00
+E000000000000000_C3C0000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000003B55D87D4_420DAAEC3EA00000_00
+F000000000000000_C3B0000000000000_00
+FF80000DFFFFFFFF_C35FFFFC80000001_01
+000000010510FAEF_41F0510FAEF00000_00
+F800000000000000_C3A0000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000000724A_40DC928000000000_00
+FC00000000000000_C390000000000000_00
+FFFFFFDF80000002_C2403FFFFFFF0000_00
+0000000000000064_4059000000000000_00
+FE00000000000000_C380000000000000_00
+FEFFFFFFFFF800FE_C370000000007FF1_01
+FFFFFFC2C6222702_C24E9CEEEC7F0000_00
+FF00000000000000_C370000000000000_00
+0000000408000002_4210200000080000_00
+000000E96DF1CB41_426D2DBE39682000_00
+FF80000000000000_C360000000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE7F_01
+F727F174DEE7DC85_C3A1B01D16423047_01
+FFC0000000000000_C350000000000000_00
+8000000003FFFEFE_C3DFFFFFFFFF0001_01
+FFFFFFFFFFF0BD5B_C12E854A00000000_00
+FFE0000000000000_C340000000000000_00
+0BEFFFFFFFFFFFFF_43A7DFFFFFFFFFFF_01
+000000000002790C_4103C86000000000_00
+FFF0000000000000_C330000000000000_00
+FFFFFFFFFFEFFBFA_C130040600000000_00
+000000169E75DF01_42369E75DF010000_00
+FFF8000000000000_C320000000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000000E_402C000000000000_00
+FFFC000000000000_C310000000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+FFFFFFFFFFF28622_C12AF3BC00000000_00
+FFFE000000000000_C300000000000000_00
+FFFFFF7FFFFDF7FF_C260000041002000_00
+00072F0EC496FE21_431CBC3B125BF884_00
+FFFF000000000000_C2F0000000000000_00
+DFBFFFFFFFFFFFFE_C3C0200000000001_01
+0000000000FC1FCA_416F83F940000000_00
+FFFF800000000000_C2E0000000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE_C2E5CD636AC7A640_00
+FFFFC00000000000_C2D0000000000000_00
+00000002100007FD_420080003FE80000_00
+FFFFFFFFFFC2D8FE_C14E938100000000_00
+FFFFE00000000000_C2C0000000000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000001766E_40F766E000000000_00
+FFFFF00000000000_C2B0000000000000_00
+0040000400000002_4350000100000000_01
+0000000000007841_40DE104000000000_00
+FFFFF80000000000_C2A0000000000000_00
+3DFFFFFFFFFFFF7E_43CEFFFFFFFFFFFF_01
+FFFFFFE549E17E30_C23AB61E81D00000_00
+FFFFFC0000000000_C290000000000000_00
+FFFFFFFFFFFFFEE1_C071F00000000000_00
+FFFFFFFFFFFFFFE7_C039000000000000_00
+FFFFFE0000000000_C280000000000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73_C061A00000000000_00
+FFFFFF0000000000_C270000000000000_00
+FD00000008000000_C387FFFFFFC00000_00
+000000000001DBB1_40FDBB1000000000_00
+FFFFFF8000000000_C260000000000000_00
+FFFFFFFFFFF8007F_C11FFE0400000000_00
+FFFFFFFEFD10A515_C1F02EF5AEB00000_00
+FFFFFFC000000000_C250000000000000_00
+FFEFFFFFFFFFFFFE_C330000000000002_00
+FAB02984F6283B6C_C3953F59EC275F13_01
+FFFFFFE000000000_C240000000000000_00
+FFFFFFBC000001FE_C250FFFFFF808000_00
+FEB087C6B9FE7FE0_C374F78394601802_00
+FFFFFFF000000000_C230000000000000_00
+FFF80001000007FE_C31FFFFBFFFFE008_00
+00F2762EA6837956_436E4EC5D4D06F2A_01
+FFFFFFF800000000_C220000000000000_00
+FFF7E0FFFFFFFFFE_C3203E0000000004_00
+00002E1175484626_42C708BAA4231300_00
+FFFFFFFC00000000_C210000000000000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000068F_409A3C0000000000_00
+FFFFFFFE00000000_C200000000000000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFDFFF_01
+FFFFFFFFFFFFFFF9_C01C000000000000_00
+FFFFFFFF00000000_C1F0000000000000_00
+FFFFFFD0000FFFFD_C247FFF800018000_00
+000000BDF6658B83_4267BECCB1706000_00
+FFFFFFFF80000000_C1E0000000000000_00
+1000001FFDFFFFFF_43B000001FFDFFFF_01
+0000000000003B5B_40CDAD8000000000_00
+FFFFFFFFC0000000_C1D0000000000000_00
+FFFFFFBFFE0FFFFF_C250007C00004000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+FFFFFFFFE0000000_C1C0000000000000_00
+FFFFFFFBF00007FF_C2103FFFE0040000_00
+01E986274F48EAAD_437E986274F48EAA_01
+FFFFFFFFF0000000_C1B0000000000000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A_C0CA530000000000_00
+FFFFFFFFF8000000_C1A0000000000000_00
+7FF000000000FFFF_43DFFC000000003F_01
+00000003C2717FC3_420E138BFE180000_00
+FFFFFFFFFC000000_C190000000000000_00
+FFFFFFE00008001F_C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA_C130542600000000_00
+FFFFFFFFFE000000_C180000000000000_00
+0200000000000002_4380000000000000_01
+FFFFFFFFF8FDA53F_C19C096B04000000_00
+FFFFFFFFFF000000_C170000000000000_00
+F6000003FFFFFFFE_C3A3FFFFF8000001_01
+FFFFFFFFFFFFFFD0_C048000000000000_00
+FFFFFFFFFF800000_C160000000000000_00
+FFFFFFFFFFBFFF7E_C150002080000000_00
+00000000EE0FEA62_41EDC1FD4C400000_00
+FFFFFFFFFFC00000_C150000000000000_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000037F35EDC1D_424BF9AF6E0E8000_00
+FFFFFFFFFFE00000_C140000000000000_00
+FFFFFFF7FDFFFF7D_C220040001060000_00
+00000000000001AD_407AD00000000000_00
+FFFFFFFFFFF00000_C130000000000000_00
+FFFFFF0000100020_C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A_43C3F8B3FDE3FE2F_01
+FFFFFFFFFFF80000_C120000000000000_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+000E48F9F4EBD30E_432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000_C110000000000000_00
+DFFFFFFFFFFBFFFE_C3C0000000000201_01
+FC91C23EE8C9424F_C38B71EE08B9B5EE_01
+FFFFFFFFFFFE0000_C100000000000000_00
+F7DFFBFFFFFFFFFE_C3A0400800000001_01
+000000002CAE080C_41C6570406000000_00
+FFFFFFFFFFFF0000_C0F0000000000000_00
+FFFFC00010000020_C2CFFFF7FFFFF000_00
+04D921F917B20E40_43936487E45EC839_00
+FFFFFFFFFFFF8000_C0E0000000000000_00
+F8000FFFFFFFFFFD_C39FFFC000000001_01
+FFF17C566BC7D811_C32D075328704FDE_00
+FFFFFFFFFFFFC000_C0D0000000000000_00
+00000000000000FE_406FC00000000000_00
+FFF82AC14930D386_C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000_C0C0000000000000_00
+00000000000003FC_408FE00000000000_00
+000E62EC60E119FC_432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000_C0B0000000000000_00
+FFFFEFF7FF7FFFFE_C2B0080080000200_00
+0E2B1ECF210EEDC5_43AC563D9E421DDB_01
+FFFFFFFFFFFFF800_C0A0000000000000_00
+00000000007FFF1F_415FFFC7C0000000_00
+FFFFFE534F5676F7_C27ACB0A98909000_00
+FFFFFFFFFFFFFC00_C090000000000000_00
+0000001004FFFFFD_423004FFFFFD0000_00
+0000035C939669F1_428AE49CB34F8800_00
+FFFFFFFFFFFFFE00_C080000000000000_00
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFD_01
+FFFFFFFFFFFFFF91_C05BC00000000000_00
+FFFFFFFFFFFFFF00_C070000000000000_00
+01FFFFFFFBFFEFFE_437FFFFFFFBFFEFF_01
+000000000000016E_4076E00000000000_00
+FFFFFFFFFFFFFF80_C060000000000000_00
+FFF7FFFFFFFFF7FD_C320000000001006_00
+FFFFF8E2BCFAC553_C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0_C050000000000000_00
+FFFFFBFFFFFE0FFE_C290000007C00800_00
+00000001A4E704BF_41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0_C040000000000000_00
+1400007FFFFFFFFD_43B400007FFFFFFF_01
+FFFFFFFC93B187B4_C20B6273C2600000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+40000000007FFFFD_43D0000000001FFF_01
+000000000067D468_4159F51A00000000_00
+FFFFFFFFFFFFFFF8_C020000000000000_00
+007FFEFFFFFBFFFE_435FFFBFFFFEFFFF_01
+FFFFFFE26CEC79F8_C23D931386080000_00
+FFFFFFFFFFFFFFFC_C010000000000000_00
+00FFFFFF000000FF_436FFFFFE000001F_01
+FFFFFFFFE0D3983A_C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE_C000000000000000_00
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A_C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF_BFF0000000000000_00
+000008000000027E_42A000000004FC00_00
+000000000000F4E8_40EE9D0000000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFF83FFDF_C15F000840000000_00
+00000E11407887B2_42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+04000003FFFFFFF6_439000000FFFFFFF_01
+0000000000000513_40944C0000000000_00
+FFFFFFFFFFFFFFF7_C022000000000000_00
+BFFC00000000003E_C3D0010000000000_01
+00000008D7BBB75B_4221AF776EB60000_00
+FFFFFFFFFFFFFFEF_C031000000000000_00
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23_C14952EE80000000_00
+FFFFFFFFFFFFFFDF_C040800000000000_00
+FFBFDFFFBFFFFFFF_C350080010000001_01
+000000000000007F_405FC00000000000_00
+FFFFFFFFFFFFFFBF_C050400000000000_00
+00000007FF800003_421FFE00000C0000_00
+000000000002BB02_4105D81000000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEE7FF_C0F1801000000000_00
+00264B2B9BAD0DA2_43432595CDD686D1_00
+FFFFFFFFFFFFFEFF_C070100000000000_00
+0000000000100803_4130080300000000_00
+FF9B1DCB9F857D5E_C359388D181EA0A9_01
+FFFFFFFFFFFFFDFF_C080080000000000_00
+FFFFFFBFFFFFEFEE_C250000004048000_00
+F6FD7542899C1C6F_C3A205157AECC7C8_01
+FFFFFFFFFFFFFBFF_C090040000000000_00
+FF800000004001FF_C35FFFFFFFEFFF81_01
+0000000002BE4932_4185F24990000000_00
+FFFFFFFFFFFFF7FF_C0A0020000000000_00
+00001004000FFFFE_42B004000FFFFE00_00
+FFFFFF9DAA0123E0_C258957FB7080000_00
+FFFFFFFFFFFFEFFF_C0B0010000000000_00
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0_C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF_C0C0008000000000_00
+FE0FE00000000000_C37F020000000000_00
+0779ED944A4E2779_439DE7B65129389D_01
+FFFFFFFFFFFFBFFF_C0D0004000000000_00
+FBFFFE0400000000_C3900007F0000000_00
+0000010127E03666_4270127E03666000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+FFFFF0200000FFFE_C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEFFFF_C0F0001000000000_00
+FFEFFE0000080000_C33001FFFFF80000_00
+FFFFFFFFFD3354EA_C1866558B0000000_00
+FFFFFFFFFFFDFFFF_C100000800000000_00
+003FF0000003FFFE_434FF8000001FFFF_00
+0000006375B23F7B_4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF_C110000400000000_00
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000092117F38_41E2422FE7000000_00
+FFFFFFFFFFF7FFFF_C120000200000000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+00000000000008BE_40A17C0000000000_00
+FFFFFFFFFFEFFFFF_C130000100000000_00
+004000020FFFFFFF_4350000083FFFFFF_01
+FFFFB84C2D8BC9CB_C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF_C140000080000000_00
+00FFFFFFFFFFFFFD_436FFFFFFFFFFFFF_01
+00000023C2C6F284_4241E16379420000_00
+FFFFFFFFFFBFFFFF_C150000040000000_00
+FFFDDFFFFFFFFFFD_C301000000000018_00
+00000000746356C4_41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF_C160000020000000_00
+010000000000BFFF_4370000000000BFF_01
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFEFFFFFF_C170000010000000_00
+FFFFBF7FFBFFFFFE_C2D0200100000080_00
+00000006386CE889_4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF_C180000008000000_00
+F00000F7FFFFFFFF_C3AFFFFE10000001_01
+FFFDFC53090C46A4_C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+0000000000800047_41600008E0000000_00
+FFFFFFFFD693872E_C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF_C1A0000002000000_00
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000026A7845E35_424353C22F1A8000_00
+FFFFFFFFEFFFFFFF_C1B0000001000000_00
+FFFFFFDFFFFFFBFD_C240000002018000_00
+000000001433D14C_41B433D14C000000_00
+FFFFFFFFDFFFFFFF_C1C0000000800000_00
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+F0F23E8068D3D84A_C3AE1B82FF2E5850_01
+FFFFFFFFBFFFFFFF_C1D0000000400000_00
+F7FFBFFFFFFFBFFF_C3A0008000000081_01
+FFFFBD29B7459087_C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF_C1E0000000200000_00
+FFFFFFF8FFFFBFFF_C21C000100040000_00
+FFFFFFFFFFEDDC06_C13223FA00000000_00
+FFFFFFFEFFFFFFFF_C1F0000000100000_00
+FFFFFFF80001FFFF_C21FFFF800040000_00
+0000000000002FF9_40C7FC8000000000_00
+FFFFFFFDFFFFFFFF_C200000000080000_00
+004000040000FFFF_4350000100003FFF_01
+FFFFFFFFFFFFFFF1_C02E000000000000_00
+FFFFFFFBFFFFFFFF_C210000000040000_00
+C0000000007FFFFA_C3CFFFFFFFFFC001_01
+FFFFFFFFFE053E2B_C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF_C220000000020000_00
+7FFE000007FFFFFF_43DFFF800001FFFF_01
+000000000000000D_402A000000000000_00
+FFFFFFEFFFFFFFFF_C230000000010000_00
+F80000000001007E_C39FFFFFFFFFFBFF_01
+FFFFED48424AD9D6_C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF_C240000000008000_00
+FFFFFE0001FEFFFF_C27FFFE010001000_00
+000000000000013B_4073B00000000000_00
+FFFFFFBFFFFFFFFF_C250000000004000_00
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_C260000000002000_00
+00FFF7FFFF7FFFFE_436FFEFFFFEFFFFF_01
+0000000000000006_4018000000000000_00
+FFFFFEFFFFFFFFFF_C270000000001000_00
+FBFFFFBFFFBFFFFF_C390000100010001_01
+00000000000001BA_407BA00000000000_00
+FFFFFDFFFFFFFFFF_C280000000000800_00
+0000000040000082_41D0000020800000_00
+FF07A2BF5B689F89_C36F0BA81492EC0F_01
+FFFFFBFFFFFFFFFF_C290000000000400_00
+0000001FF8000008_423FF80000080000_00
+F87CAA7DE672DE8B_C39E0D5608663486_01
+FFFFF7FFFFFFFFFF_C2A0000000000200_00
+07FFF80000000002_439FFFE000000000_01
+0000000010A1E5B8_41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF_C2B0000000000100_00
+F7FFFFE00007FFFF_C3A000003FFFF001_01
+FFFFFFFFFFF6ADFC_C122A40800000000_00
+FFFFDFFFFFFFFFFF_C2C0000000000080_00
+FFFFFF03FFFFFFC0_C26F800000080000_00
+EA579475948F0032_C3B5A86B8A6B7100_01
+FFFFBFFFFFFFFFFF_C2D0000000000040_00
+FC00000000003FF6_C38FFFFFFFFFFE01_01
+002E677AC313BF60_434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF_C2E0000000000020_00
+02000007FF7FFFFF_438000003FFBFFFF_01
+0000000E999639F1_422D332C73E20000_00
+FFFEFFFFFFFFFFFF_C2F0000000000010_00
+FFFF83FFFFFFFFBE_C2DF000000001080_00
+000000000001537D_40F537D000000000_00
+FFFDFFFFFFFFFFFF_C300000000000008_00
+EFFFFFC00000003D_C3B0000040000000_01
+FFFFFFF21FEDFD35_C22BC02405960000_00
+FFFBFFFFFFFFFFFF_C310000000000004_00
+FFFFFFF0000007FE_C22FFFFFF0040000_00
+FFFFFFFFFFDE0839_C140FBE380000000_00
+FFF7FFFFFFFFFFFF_C320000000000002_00
+0000007FFFE000FF_425FFFF8003FC000_00
+FFFFFFFF79F30F48_C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF_C330000000000001_00
+FFFFFC13FFFFFFFD_C28F600000001800_00
+0000000000001B85_40BB850000000000_00
+FFDFFFFFFFFFFFFF_C340000000000001_01
+000008000007FFFE_42A000000FFFFC00_00
+12DB4409E5AE87E6_43B2DB4409E5AE87_01
+FFBFFFFFFFFFFFFF_C350000000000001_01
+FFFFFFFFFFF7BFEE_C120802400000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FF7FFFFFFFFFFFFF_C360000000000001_01
+000000001040FFFE_41B040FFFE000000_00
+00000909A09C13D3_42A213413827A600_00
+FEFFFFFFFFFFFFFF_C370000000000001_01
+FFFFFF01FFFFFF7F_C26FC00000102000_00
+FFFFFF72E7D2575D_C261A305B5146000_00
+FDFFFFFFFFFFFFFF_C380000000000001_01
+FFFFFFFFFFFEFFDB_C0F0025000000000_00
+0000000000000017_4037000000000000_00
+FBFFFFFFFFFFFFFF_C390000000000001_01
+100000001FFFFFF6_43B00000001FFFFF_01
+000000114B12EF51_42314B12EF510000_00
+F7FFFFFFFFFFFFFF_C3A0000000000001_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFB_01
+FFFFFF769F3A5C2C_C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF_C3B0000000000001_01
+FFFFFFFDF7FFFFFD_C200400000180000_00
+FFFFFFFFFFFFFFF2_C02C000000000000_00
+DFFFFFFFFFFFFFFF_C3C0000000000001_01
+FFFFFFFFFE0007FF_C17FFF8010000000_00
+000000000000001E_403E000000000000_00
+BFFFFFFFFFFFFFFF_C3D0000000000001_01
+FFF800000009FFFF_C31FFFFFFFD80004_00
+0000000000007AA4_40DEA90000000000_00
+7FFFFFFFFFFFFFFF_43DFFFFFFFFFFFFF_01
+4080000000FFFFFF_43D0200000003FFF_01
+000000000DE7601D_41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF_43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE_C348000000200001_00
+FFFFFFFFFFFFFFCA_C04B000000000000_00
+1FFFFFFFFFFFFFFF_43BFFFFFFFFFFFFF_01
+000080400000003F_42E00800000007E0_00
+00000000001F75A5_413F75A500000000_00
+0FFFFFFFFFFFFFFF_43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE_C230000030020000_00
+FFFFFEE775887420_C27188A778BE0000_00
+07FFFFFFFFFFFFFF_439FFFFFFFFFFFFF_01
+00000000000801FE_412003FC00000000_00
+0000000000213FF1_41409FF880000000_00
+03FFFFFFFFFFFFFF_438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE_439FFBFFFFFFFFFF_01
+0000000000000004_4010000000000000_00
+01FFFFFFFFFFFFFF_437FFFFFFFFFFFFF_01
+0000000820000003_4220400000060000_00
+FFFFFFF9AD105214_C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF_436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE_C2AFE00000008400_00
+FFFFFFFFFFCC48E7_C149DB8C80000000_00
+007FFFFFFFFFFFFF_435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB_C16E8B26A0000000_00
+003FFFFFFFFFFFFF_434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF_C260080000082000_00
+FFFFFFFFFFF24425_C12B77B600000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFDFF_01
+FFFFFF4E7115EC53_C26631DD4275A000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_C29FF00000010400_00
+FFFFFC2E539ADCFE_C28E8D6329181000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+00000055084732F3_42554211CCBCC000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_C3D0002000000001_01
+FFFFFFFFFFFF8543_C0DEAF4000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+FFFFFFFFFFFE491B_C0FB6E5000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_C38FFEFFFFFFFF01_01
+FFFFF16898822A24_C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF81FFFFFFFF_01
+FFFFFF8FFE18C7BF_C25C0079CE104000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_C270001000003000_00
+00F03620C1266ED9_436E06C41824CDDB_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_C3D0204000000001_01
+FFFFFFFFFFFFFFD5_C045800000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_C31000001FF00008_00
+0000000000068684_411A1A1000000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_C3C0000010000000_01
+FFFFFFFFFFFFECF5_C0B30B0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_C2EFF7FFFFE00020_00
+0000000000000002_4000000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_C390000000000109_01
+0000000000000BC9_40A7920000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_C3DFE00000000009_01
+FFC274E35A70CD76_C34EC58E52C79945_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFDFFFF_01
+FFFFFFFF00E73AFC_C1EFE318A0800000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9_C0FEA17000000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+0000000000000033_4049800000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+FFFFFFEE6B141E1B_C23194EBE1E50000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_C1A3FFF002000000_00
+00000001AB310BA6_41FAB310BA600000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195_C0ACD60000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_C1DFFFFFFD400000_00
+00000019BA8D5559_4239BA8D55590000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_C390040000000001_01
+FFFFFFB6F062822D_C25243E75F74C000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+01CEAD9E2FB104A4_437CEAD9E2FB104A_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+FFFFFFFFFD681E78_C184BF0C40000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000018_4038000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+FFFFFFFFFFFFFF95_C05AC00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000BFFFFFFFF_01
+0000001697087B19_423697087B190000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_C390000000004401_01
+0000000E64BDFC55_422CC97BF8AA0000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_C38FFFFFFFF00001_01
+FFFED156A62AB849_C2F2EA959D547B70_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_C21F0040000C0000_00
+00015354EAE7C259_42F5354EAE7C2590_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFF0F4DF3C75_C22E164187160000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_C160003800000000_00
+FFFFFFDB5433CB9B_C24255E61A328000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_C280010010001800_00
+FFFFFFFFFFDEAE1F_C140A8F080000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7_C1F88CA213900000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000003757D8B12ED_428BABEC58976800_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_C27F808000001000_00
+00000A654064E046_42A4CA80C9C08C00_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A000000000002F_01
+FFFFFFFFFFFFFFE7_C039000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF7_01
+FFFFAD78B3D6C3B6_C2D4A1D30A4F1280_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+FFFFFFF70B77F34F_C221E91019620000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_C25FFFE400008000_00
+0000013EB4D67EC8_4273EB4D67EC8000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_C3D0000800010001_01
+0005CEAF34EA1DC7_43173ABCD3A8771C_00
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000360D0_410B068000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_437003FFFFFFFFFF_01
+00C000708FF1BA51_4368000E11FE374A_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_C39FF7FFFFF00001_01
+0F9E07DCC0BDC061_43AF3C0FB9817B80_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000007_01
+FFFFFFE1B9B2A079_C23E464D5F870000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_C31FFFFFFFFDFC04_00
+00000000001EB5B4_413EB5B400000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+00000000005AC607_4156B181C0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_C1F07FFFF0100000_00
+000005C5B9D66984_429716E759A61000_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_C3CFFF0000000800_00
+00001D06B372AA06_42BD06B372AA0600_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rne.tv b/wally-pipelined/testbench/fp/i64_f64_rne.tv
index ed6b0a3ac..08859f243 100644
--- a/wally-pipelined/testbench/fp/i64_f64_rne.tv
+++ b/wally-pipelined/testbench/fp/i64_f64_rne.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 439FFFF7FFFFFFFE_01
-0000000032CC8B7A 41C96645BD000000_00
-0000000000000000 0000000000000000_00
-FFFFFFFFC0003FFE C1CFFFE001000000_00
-032C857F319EDE38 4389642BF98CF6F2_01
-0000000000000001 3FF0000000000000_00
-FFFFFBFFFFF8003E C29000001FFF0800_00
-00394C79B6D3007B 434CA63CDB69803E_01
-0000000000000002 4000000000000000_00
-FBFFFFF0000001FF C39000003FFFFFF8_01
-0000000001AE458D 417AE458D0000000_00
-0000000000000004 4010000000000000_00
-00040008000007FE 4310002000001FF8_00
-F9EB456140D88764 C39852EA7AFC9DE2_01
-0000000000000008 4020000000000000_00
-FFFFE400FFFFFFFE C2BBFF0000000200_00
-07DE834A248EDF36 439F7A0D28923B7D_01
-0000000000000010 4030000000000000_00
-00000003FF001FFF 420FF800FFF80000_00
-FFFFFFFFFFE385E2 C13C7A1E00000000_00
-0000000000000020 4040000000000000_00
-F0041FFFFFFFFFFF C3AFF7C000000000_01
-000000059EB1FD45 42167AC7F5140000_00
-0000000000000040 4050000000000000_00
-FFFFFFFFFFFCFFF9 C108003800000000_00
-FFFFFFFFFFFEDDFE C0F2202000000000_00
-0000000000000080 4060000000000000_00
-000000000003FF00 410FF80000000000_00
-00000000C89FF56B 41E913FEAD600000_00
-0000000000000100 4070000000000000_00
-000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
-1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEC0_01
-0000000000000200 4080000000000000_00
-FFFDF803FFFFFFFF C3003FE000000008_00
-FFFFFFFFFFF4766B C127132A00000000_00
-0000000000000400 4090000000000000_00
-0000080100000FFE 42A00200001FFC00_00
-000000000000000C 4028000000000000_00
-0000000000000800 40A0000000000000_00
-0048000000100000 4352000000040000_00
-FFE662A109109D0A C3399D5EF6EF62F6_00
-0000000000001000 40B0000000000000_00
-C000000037FFFFFE C3CFFFFFFFE40000_01
-FFFFFFFFFFFFFFE4 C03C000000000000_00
-0000000000002000 40C0000000000000_00
-F801000000100000 C39FFBFFFFFFC000_00
-FE114B79075F70EE C37EEB486F8A08F1_01
-0000000000004000 40D0000000000000_00
-100000000001003E 43B0000000000100_01
-00000000000003AC 408D600000000000_00
-0000000000008000 40E0000000000000_00
-200000FFFFFFF800 43C000007FFFFFFC_00
-00000044A3A3DBE5 425128E8F6F94000_00
-0000000000010000 40F0000000000000_00
-FFE0003EFFFFFFFF C33FFFC100000001_00
-FFFFFFFFFFFF1A91 C0ECADE000000000_00
-0000000000020000 4100000000000000_00
-FFFFF7C3FFFFFFFD C2A0780000000600_00
-0000000000003309 40C9848000000000_00
-0000000000040000 4110000000000000_00
-000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
-FFFFFFFFFFFFFF58 C065000000000000_00
-0000000000080000 4120000000000000_00
-FFFFFFDE01FFFFFE C240FF0000010000_00
-0000000000002980 40C4C00000000000_00
-0000000000100000 4130000000000000_00
-00000000FFF07FFF 41EFFE0FFFE00000_00
-000000000000005D 4057400000000000_00
-0000000000200000 4140000000000000_00
-000020FFDFFFFFFF 42C07FEFFFFFFF80_00
-FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
-0000000000400000 4150000000000000_00
-E0000000003FFFDF C3BFFFFFFFFFC000_01
-FFFFFDE3C1DEC43C C280E1F109DE2000_00
-0000000000800000 4160000000000000_00
-FFFF00000BFFFFFD C2EFFFFE80000060_00
-000000000030FFBE 41487FDF00000000_00
-0000000001000000 4170000000000000_00
-FFFE000007FFEFFD C2FFFFFF80010030_00
-FFFFFFFFEFDEED86 C1B021127A000000_00
-0000000002000000 4180000000000000_00
-F3FFFFFFFFBFFFFE C3A8000000008000_01
-000000001DA3FF45 41BDA3FF45000000_00
-0000000004000000 4190000000000000_00
-FFFFFFFF00010007 C1EFFFDFFF200000_00
-FFFFFFFE9B1BCB54 C1F64E434AC00000_00
-0000000008000000 41A0000000000000_00
-00004000004001FE 42D0000010007F80_00
-F27DD19DE6563714 C3AB045CC4335392_01
-0000000010000000 41B0000000000000_00
-FFC00000004007FE C34FFFFFFFDFFC01_00
-000000000001A359 40FA359000000000_00
-0000000020000000 41C0000000000000_00
-0000000003C000FE 418E0007F0000000_00
-FFFFFFFFFE62EC20 C179D13E00000000_00
-0000000040000000 41D0000000000000_00
-000000003FFFFFFD 41CFFFFFFE800000_00
-000000000000285F 40C42F8000000000_00
-0000000080000000 41E0000000000000_00
-FFFFFFFFBFFFF00F C1D00003FC400000_00
-FFFFF836F99DBAA8 C29F241989156000_00
-0000000100000000 41F0000000000000_00
-00000020003FFEFE 4240001FFF7F0000_00
-0033466832042D47 4349A334190216A4_01
-0000000200000000 4200000000000000_00
-FFFFFFFFFFFFF887 C09DE40000000000_00
-00000000003829C8 414C14E400000000_00
-0000000400000000 4210000000000000_00
-00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
-0000000FB77C672B 422F6EF8CE560000_00
-0000000800000000 4220000000000000_00
-08003FFDFFFFFFFE 43A0007FFC000000_01
-0000000000001B78 40BB780000000000_00
-0000001000000000 4230000000000000_00
-FF7FFFFFFFEFDFFF C360000000020400_01
-0000000000000071 405C400000000000_00
-0000002000000000 4240000000000000_00
-000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
-FFFFFFFFFFFFFF86 C05E800000000000_00
-0000004000000000 4250000000000000_00
-0800000000040800 43A0000000000810_00
-FFF8A60D9E19F17E C31D67C987983A08_00
-0000008000000000 4260000000000000_00
-000077FFF0000000 42DDFFFC00000000_00
-FFFFFFFFF7506DBA C1A15F248C000000_00
-0000010000000000 4270000000000000_00
-FFFFFFFFFFFEFBF7 C0F0409000000000_00
-FFFFFFFFFEA42AC9 C175BD5370000000_00
-0000020000000000 4280000000000000_00
-0000107FFFFFDFFD 42B07FFFFFDFFD00_00
-FFE7AA3F2BDACC89 C33855C0D4253377_00
-0000040000000000 4290000000000000_00
-FFF8040000040000 C31FEFFFFFF00000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-0000080000000000 42A0000000000000_00
-FFFF80000800001F C2DFFFFDFFFFF840_00
-FFFDF681DECDADC9 C3004BF1099291B8_00
-0000100000000000 42B0000000000000_00
-FFFFFEFFFFE0007F C2700001FFF81000_00
-FFFFFFFFFFFFCFBE C0C8210000000000_00
-0000200000000000 42C0000000000000_00
-0000000901FFFFFD 422203FFFFFA0000_00
-FEC01FECA24DE1B0 C373FE0135DB21E5_00
-0000400000000000 42D0000000000000_00
-F7FFFFFFDFFF7FFF C3A0000000400100_01
-F858A66761669936 C39E9D66627A659B_01
-0000800000000000 42E0000000000000_00
-FFFEFF800000003E C2F007FFFFFFFC20_00
-F716EA43FAC45C97 C3A1D22B780A7747_01
-0001000000000000 42F0000000000000_00
-FFFFFFFFFFFFFFC6 C04D000000000000_00
-0024D70EC7661FD8 43426B8763B30FEC_00
-0002000000000000 4300000000000000_00
-C07FFFFFFFFFFFFE C3CFC00000000000_01
-FFD956DBD0AEE817 C343549217A88BF4_01
-0004000000000000 4310000000000000_00
-020003EFFFFFFFFE 4380001F80000000_01
-FFFFFFFFFFFF4300 C0E7A00000000000_00
-0008000000000000 4320000000000000_00
-4000000004002000 43D0000000010008_00
-C12EDF40F41F6021 C3CF68905F85F050_01
-0010000000000000 4330000000000000_00
-FF9000000000001D C35BFFFFFFFFFFF9_01
-FFFFFFF83DE950F6 C21F085ABC280000_00
-0020000000000000 4340000000000000_00
-800003FFFFFC0000 C3DFFFFF00000100_00
-FE2B59CB3A604D69 C37D4A634C59FB29_01
-0040000000000000 4350000000000000_00
-7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFF0_01
-000000A37C210862 42646F84210C4000_00
-0080000000000000 4360000000000000_00
-0002000002000002 4300000010000010_00
-FFFFB65CD8617789 C2D268C9E7A21DC0_00
-0100000000000000 4370000000000000_00
-00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
-FFFFFFFFFFFFF01D C0AFC60000000000_00
-0200000000000000 4380000000000000_00
-1000008000003FFF 43B0000080000040_01
-000000000D098D19 41AA131A32000000_00
-0400000000000000 4390000000000000_00
-03FFFFFFFFFFF5FF 438FFFFFFFFFFFB0_01
-000006B3BD2C7BEF 429ACEF4B1EFBC00_00
-0800000000000000 43A0000000000000_00
-00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
-FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
-1000000000000000 43B0000000000000_00
-001FFFC000000FFD 433FFFC000000FFD_00
-FFFFFFFFFFFFFF21 C06BE00000000000_00
-2000000000000000 43C0000000000000_00
-0000000041DFFFFF 41D077FFFFC00000_00
-FFFFFFFFFC648262 C18CDBECF0000000_00
-4000000000000000 43D0000000000000_00
-C0001FFFFFFFFFFB C3CFFFF000000000_01
-FFFFFF7353AC45D2 C261958A7745C000_00
-8000000000000000 C3E0000000000000_00
-FFFFFFFFFFE7EFFF C138100100000000_00
-0000000000A1202D 41642405A0000000_00
-C000000000000000 C3D0000000000000_00
-FFFFFFFFFFFF5F7F C0E4102000000000_00
-000000000040CA70 4150329C00000000_00
-E000000000000000 C3C0000000000000_00
-0000200201FFFFFE 42C00100FFFFFF00_00
-00000003B55D87D4 420DAAEC3EA00000_00
-F000000000000000 C3B0000000000000_00
-FF80000DFFFFFFFF C35FFFFC80000000_01
-000000010510FAEF 41F0510FAEF00000_00
-F800000000000000 C3A0000000000000_00
-0003FFF00000000F 430FFF8000000078_00
-000000000000724A 40DC928000000000_00
-FC00000000000000 C390000000000000_00
-FFFFFFDF80000002 C2403FFFFFFF0000_00
-0000000000000064 4059000000000000_00
-FE00000000000000 C380000000000000_00
-FEFFFFFFFFF800FE C370000000007FF0_01
-FFFFFFC2C6222702 C24E9CEEEC7F0000_00
-FF00000000000000 C370000000000000_00
-0000000408000002 4210200000080000_00
-000000E96DF1CB41 426D2DBE39682000_00
-FF80000000000000 C360000000000000_00
-007FFFFFFFFFF9FE 435FFFFFFFFFFE80_01
-F727F174DEE7DC85 C3A1B01D16423047_01
-FFC0000000000000 C350000000000000_00
-8000000003FFFEFE C3DFFFFFFFFF0000_01
-FFFFFFFFFFF0BD5B C12E854A00000000_00
-FFE0000000000000 C340000000000000_00
-0BEFFFFFFFFFFFFF 43A7E00000000000_01
-000000000002790C 4103C86000000000_00
-FFF0000000000000 C330000000000000_00
-FFFFFFFFFFEFFBFA C130040600000000_00
-000000169E75DF01 42369E75DF010000_00
-FFF8000000000000 C320000000000000_00
-00000007FEFFDFFF 421FFBFF7FFC0000_00
-000000000000000E 402C000000000000_00
-FFFC000000000000 C310000000000000_00
-0003FFFE0007FFFE 430FFFF0003FFFF0_00
-FFFFFFFFFFF28622 C12AF3BC00000000_00
-FFFE000000000000 C300000000000000_00
-FFFFFF7FFFFDF7FF C260000041002000_00
-00072F0EC496FE21 431CBC3B125BF884_00
-FFFF000000000000 C2F0000000000000_00
-DFBFFFFFFFFFFFFE C3C0200000000000_01
-0000000000FC1FCA 416F83F940000000_00
-FFFF800000000000 C2E0000000000000_00
-00000FFF800FFFFE 42AFFF001FFFFC00_00
-FFFF5194E4A9C2CE C2E5CD636AC7A640_00
-FFFFC00000000000 C2D0000000000000_00
-00000002100007FD 420080003FE80000_00
-FFFFFFFFFFC2D8FE C14E938100000000_00
-FFFFE00000000000 C2C0000000000000_00
-000000000007FF6E 411FFDB800000000_00
-000000000001766E 40F766E000000000_00
-FFFFF00000000000 C2B0000000000000_00
-0040000400000002 4350000100000000_01
-0000000000007841 40DE104000000000_00
-FFFFF80000000000 C2A0000000000000_00
-3DFFFFFFFFFFFF7E 43CF000000000000_01
-FFFFFFE549E17E30 C23AB61E81D00000_00
-FFFFFC0000000000 C290000000000000_00
-FFFFFFFFFFFFFEE1 C071F00000000000_00
-FFFFFFFFFFFFFFE7 C039000000000000_00
-FFFFFE0000000000 C280000000000000_00
-000000000EFFFFDF 41ADFFFFBE000000_00
-FFFFFFFFFFFFFF73 C061A00000000000_00
-FFFFFF0000000000 C270000000000000_00
-FD00000008000000 C387FFFFFFC00000_00
-000000000001DBB1 40FDBB1000000000_00
-FFFFFF8000000000 C260000000000000_00
-FFFFFFFFFFF8007F C11FFE0400000000_00
-FFFFFFFEFD10A515 C1F02EF5AEB00000_00
-FFFFFFC000000000 C250000000000000_00
-FFEFFFFFFFFFFFFE C330000000000002_00
-FAB02984F6283B6C C3953F59EC275F12_01
-FFFFFFE000000000 C240000000000000_00
-FFFFFFBC000001FE C250FFFFFF808000_00
-FEB087C6B9FE7FE0 C374F78394601802_00
-FFFFFFF000000000 C230000000000000_00
-FFF80001000007FE C31FFFFBFFFFE008_00
-00F2762EA6837956 436E4EC5D4D06F2B_01
-FFFFFFF800000000 C220000000000000_00
-FFF7E0FFFFFFFFFE C3203E0000000004_00
-00002E1175484626 42C708BAA4231300_00
-FFFFFFFC00000000 C210000000000000_00
-0000200020000FFE 42C000100007FF00_00
-000000000000068F 409A3C0000000000_00
-FFFFFFFE00000000 C200000000000000_00
-021FFFFFFFFBFFFF 4380FFFFFFFFE000_01
-FFFFFFFFFFFFFFF9 C01C000000000000_00
-FFFFFFFF00000000 C1F0000000000000_00
-FFFFFFD0000FFFFD C247FFF800018000_00
-000000BDF6658B83 4267BECCB1706000_00
-FFFFFFFF80000000 C1E0000000000000_00
-1000001FFDFFFFFF 43B000001FFE0000_01
-0000000000003B5B 40CDAD8000000000_00
-FFFFFFFFC0000000 C1D0000000000000_00
-FFFFFFBFFE0FFFFF C250007C00004000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-FFFFFFFFE0000000 C1C0000000000000_00
-FFFFFFFBF00007FF C2103FFFE0040000_00
-01E986274F48EAAD 437E986274F48EAB_01
-FFFFFFFFF0000000 C1B0000000000000_00
-1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
-FFFFFFFFFFFFCB5A C0CA530000000000_00
-FFFFFFFFF8000000 C1A0000000000000_00
-7FF000000000FFFF 43DFFC0000000040_01
-00000003C2717FC3 420E138BFE180000_00
-FFFFFFFFFC000000 C190000000000000_00
-FFFFFFE00008001F C23FFFF7FFE10000_00
-FFFFFFFFFFEFABDA C130542600000000_00
-FFFFFFFFFE000000 C180000000000000_00
-0200000000000002 4380000000000000_01
-FFFFFFFFF8FDA53F C19C096B04000000_00
-FFFFFFFFFF000000 C170000000000000_00
-F6000003FFFFFFFE C3A3FFFFF8000000_01
-FFFFFFFFFFFFFFD0 C048000000000000_00
-FFFFFFFFFF800000 C160000000000000_00
-FFFFFFFFFFBFFF7E C150002080000000_00
-00000000EE0FEA62 41EDC1FD4C400000_00
-FFFFFFFFFFC00000 C150000000000000_00
-0000007FFF9FFFFD 425FFFE7FFFF4000_00
-00000037F35EDC1D 424BF9AF6E0E8000_00
-FFFFFFFFFFE00000 C140000000000000_00
-FFFFFFF7FDFFFF7D C220040001060000_00
-00000000000001AD 407AD00000000000_00
-FFFFFFFFFFF00000 C130000000000000_00
-FFFFFF0000100020 C26FFFFDFFFC0000_00
-27F167FBC7FC5F9A 43C3F8B3FDE3FE30_01
-FFFFFFFFFFF80000 C120000000000000_00
-003FFFFFFFFC0001 434FFFFFFFFE0000_01
-000E48F9F4EBD30E 432C91F3E9D7A61C_00
-FFFFFFFFFFFC0000 C110000000000000_00
-DFFFFFFFFFFBFFFE C3C0000000000200_01
-FC91C23EE8C9424F C38B71EE08B9B5EE_01
-FFFFFFFFFFFE0000 C100000000000000_00
-F7DFFBFFFFFFFFFE C3A0400800000000_01
-000000002CAE080C 41C6570406000000_00
-FFFFFFFFFFFF0000 C0F0000000000000_00
-FFFFC00010000020 C2CFFFF7FFFFF000_00
-04D921F917B20E40 43936487E45EC839_00
-FFFFFFFFFFFF8000 C0E0000000000000_00
-F8000FFFFFFFFFFD C39FFFC000000000_01
-FFF17C566BC7D811 C32D075328704FDE_00
-FFFFFFFFFFFFC000 C0D0000000000000_00
-00000000000000FE 406FC00000000000_00
-FFF82AC14930D386 C31F54FADB3CB1E8_00
-FFFFFFFFFFFFE000 C0C0000000000000_00
-00000000000003FC 408FE00000000000_00
-000E62EC60E119FC 432CC5D8C1C233F8_00
-FFFFFFFFFFFFF000 C0B0000000000000_00
-FFFFEFF7FF7FFFFE C2B0080080000200_00
-0E2B1ECF210EEDC5 43AC563D9E421DDC_01
-FFFFFFFFFFFFF800 C0A0000000000000_00
-00000000007FFF1F 415FFFC7C0000000_00
-FFFFFE534F5676F7 C27ACB0A98909000_00
-FFFFFFFFFFFFFC00 C090000000000000_00
-0000001004FFFFFD 423004FFFFFD0000_00
-0000035C939669F1 428AE49CB34F8800_00
-FFFFFFFFFFFFFE00 C080000000000000_00
-1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFE_01
-FFFFFFFFFFFFFF91 C05BC00000000000_00
-FFFFFFFFFFFFFF00 C070000000000000_00
-01FFFFFFFBFFEFFE 437FFFFFFFBFFF00_01
-000000000000016E 4076E00000000000_00
-FFFFFFFFFFFFFF80 C060000000000000_00
-FFF7FFFFFFFFF7FD C320000000001006_00
-FFFFF8E2BCFAC553 C29C750C14EAB400_00
-FFFFFFFFFFFFFFC0 C050000000000000_00
-FFFFFBFFFFFE0FFE C290000007C00800_00
-00000001A4E704BF 41FA4E704BF00000_00
-FFFFFFFFFFFFFFE0 C040000000000000_00
-1400007FFFFFFFFD 43B4000080000000_01
-FFFFFFFC93B187B4 C20B6273C2600000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-40000000007FFFFD 43D0000000002000_01
-000000000067D468 4159F51A00000000_00
-FFFFFFFFFFFFFFF8 C020000000000000_00
-007FFEFFFFFBFFFE 435FFFBFFFFF0000_01
-FFFFFFE26CEC79F8 C23D931386080000_00
-FFFFFFFFFFFFFFFC C010000000000000_00
-00FFFFFF000000FF 436FFFFFE0000020_01
-FFFFFFFFE0D3983A C1BF2C67C6000000_00
-FFFFFFFFFFFFFFFE C000000000000000_00
-00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
-FFFFFFFDF4A7088A C2005AC7BBB00000_00
-FFFFFFFFFFFFFFFF BFF0000000000000_00
-000008000000027E 42A000000004FC00_00
-000000000000F4E8 40EE9D0000000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFF83FFDF C15F000840000000_00
-00000E11407887B2 42AC2280F10F6400_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-04000003FFFFFFF6 4390000010000000_01
-0000000000000513 40944C0000000000_00
-FFFFFFFFFFFFFFF7 C022000000000000_00
-BFFC00000000003E C3D0010000000000_01
-00000008D7BBB75B 4221AF776EB60000_00
-FFFFFFFFFFFFFFEF C031000000000000_00
-000FFFFBFFFC0000 432FFFF7FFF80000_00
-FFFFFFFFFFCD5A23 C14952EE80000000_00
-FFFFFFFFFFFFFFDF C040800000000000_00
-FFBFDFFFBFFFFFFF C350080010000000_01
-000000000000007F 405FC00000000000_00
-FFFFFFFFFFFFFFBF C050400000000000_00
-00000007FF800003 421FFE00000C0000_00
-000000000002BB02 4105D81000000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEE7FF C0F1801000000000_00
-00264B2B9BAD0DA2 43432595CDD686D1_00
-FFFFFFFFFFFFFEFF C070100000000000_00
-0000000000100803 4130080300000000_00
-FF9B1DCB9F857D5E C359388D181EA0A8_01
-FFFFFFFFFFFFFDFF C080080000000000_00
-FFFFFFBFFFFFEFEE C250000004048000_00
-F6FD7542899C1C6F C3A205157AECC7C7_01
-FFFFFFFFFFFFFBFF C090040000000000_00
-FF800000004001FF C35FFFFFFFEFFF80_01
-0000000002BE4932 4185F24990000000_00
-FFFFFFFFFFFFF7FF C0A0020000000000_00
-00001004000FFFFE 42B004000FFFFE00_00
-FFFFFF9DAA0123E0 C258957FB7080000_00
-FFFFFFFFFFFFEFFF C0B0010000000000_00
-00000001FDFFFDFE 41FFDFFFDFE00000_00
-FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
-FFFFFFFFFFFFDFFF C0C0008000000000_00
-FE0FE00000000000 C37F020000000000_00
-0779ED944A4E2779 439DE7B65129389E_01
-FFFFFFFFFFFFBFFF C0D0004000000000_00
-FBFFFE0400000000 C3900007F0000000_00
-0000010127E03666 4270127E03666000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-FFFFF0200000FFFE C2AFBFFFFE000400_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEFFFF C0F0001000000000_00
-FFEFFE0000080000 C33001FFFFF80000_00
-FFFFFFFFFD3354EA C1866558B0000000_00
-FFFFFFFFFFFDFFFF C100000800000000_00
-003FF0000003FFFE 434FF8000001FFFF_00
-0000006375B23F7B 4258DD6C8FDEC000_00
-FFFFFFFFFFFBFFFF C110000400000000_00
-000407FFFFFFFFF6 43101FFFFFFFFFD8_00
-0000000092117F38 41E2422FE7000000_00
-FFFFFFFFFFF7FFFF C120000200000000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-00000000000008BE 40A17C0000000000_00
-FFFFFFFFFFEFFFFF C130000100000000_00
-004000020FFFFFFF 4350000084000000_01
-FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
-FFFFFFFFFFDFFFFF C140000080000000_00
-00FFFFFFFFFFFFFD 4370000000000000_01
-00000023C2C6F284 4241E16379420000_00
-FFFFFFFFFFBFFFFF C150000040000000_00
-FFFDDFFFFFFFFFFD C301000000000018_00
-00000000746356C4 41DD18D5B1000000_00
-FFFFFFFFFF7FFFFF C160000020000000_00
-010000000000BFFF 4370000000000C00_01
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFEFFFFFF C170000010000000_00
-FFFFBF7FFBFFFFFE C2D0200100000080_00
-00000006386CE889 4218E1B3A2240000_00
-FFFFFFFFFDFFFFFF C180000008000000_00
-F00000F7FFFFFFFF C3AFFFFE10000000_01
-FFFDFC53090C46A4 C3001D67B79DCAE0_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-0000000000800047 41600008E0000000_00
-FFFFFFFFD693872E C1C4B63C69000000_00
-FFFFFFFFF7FFFFFF C1A0000002000000_00
-000000007FBFFBFF 41DFEFFEFFC00000_00
-00000026A7845E35 424353C22F1A8000_00
-FFFFFFFFEFFFFFFF C1B0000001000000_00
-FFFFFFDFFFFFFBFD C240000002018000_00
-000000001433D14C 41B433D14C000000_00
-FFFFFFFFDFFFFFFF C1C0000000800000_00
-0001FFFFFFE0000E 42FFFFFFFE0000E0_00
-F0F23E8068D3D84A C3AE1B82FF2E584F_01
-FFFFFFFFBFFFFFFF C1D0000000400000_00
-F7FFBFFFFFFFBFFF C3A0008000000080_01
-FFFFBD29B7459087 C2D0B5922E9BDE40_00
-FFFFFFFF7FFFFFFF C1E0000000200000_00
-FFFFFFF8FFFFBFFF C21C000100040000_00
-FFFFFFFFFFEDDC06 C13223FA00000000_00
-FFFFFFFEFFFFFFFF C1F0000000100000_00
-FFFFFFF80001FFFF C21FFFF800040000_00
-0000000000002FF9 40C7FC8000000000_00
-FFFFFFFDFFFFFFFF C200000000080000_00
-004000040000FFFF 4350000100004000_01
-FFFFFFFFFFFFFFF1 C02E000000000000_00
-FFFFFFFBFFFFFFFF C210000000040000_00
-C0000000007FFFFA C3CFFFFFFFFFC000_01
-FFFFFFFFFE053E2B C17FAC1D50000000_00
-FFFFFFF7FFFFFFFF C220000000020000_00
-7FFE000007FFFFFF 43DFFF8000020000_01
-000000000000000D 402A000000000000_00
-FFFFFFEFFFFFFFFF C230000000010000_00
-F80000000001007E C39FFFFFFFFFFBFE_01
-FFFFED48424AD9D6 C2B2B7BDB5262A00_00
-FFFFFFDFFFFFFFFF C240000000008000_00
-FFFFFE0001FEFFFF C27FFFE010001000_00
-000000000000013B 4073B00000000000_00
-FFFFFFBFFFFFFFFF C250000000004000_00
-0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
-4A16BD4128090C83 43D285AF504A0243_01
-FFFFFF7FFFFFFFFF C260000000002000_00
-00FFF7FFFF7FFFFE 436FFEFFFFF00000_01
-0000000000000006 4018000000000000_00
-FFFFFEFFFFFFFFFF C270000000001000_00
-FBFFFFBFFFBFFFFF C390000100010000_01
-00000000000001BA 407BA00000000000_00
-FFFFFDFFFFFFFFFF C280000000000800_00
-0000000040000082 41D0000020800000_00
-FF07A2BF5B689F89 C36F0BA81492EC0F_01
-FFFFFBFFFFFFFFFF C290000000000400_00
-0000001FF8000008 423FF80000080000_00
-F87CAA7DE672DE8B C39E0D5608663486_01
-FFFFF7FFFFFFFFFF C2A0000000000200_00
-07FFF80000000002 439FFFE000000000_01
-0000000010A1E5B8 41B0A1E5B8000000_00
-FFFFEFFFFFFFFFFF C2B0000000000100_00
-F7FFFFE00007FFFF C3A000003FFFF000_01
-FFFFFFFFFFF6ADFC C122A40800000000_00
-FFFFDFFFFFFFFFFF C2C0000000000080_00
-FFFFFF03FFFFFFC0 C26F800000080000_00
-EA579475948F0032 C3B5A86B8A6B7100_01
-FFFFBFFFFFFFFFFF C2D0000000000040_00
-FC00000000003FF6 C38FFFFFFFFFFE00_01
-002E677AC313BF60 434733BD6189DFB0_00
-FFFF7FFFFFFFFFFF C2E0000000000020_00
-02000007FF7FFFFF 438000003FFC0000_01
-0000000E999639F1 422D332C73E20000_00
-FFFEFFFFFFFFFFFF C2F0000000000010_00
-FFFF83FFFFFFFFBE C2DF000000001080_00
-000000000001537D 40F537D000000000_00
-FFFDFFFFFFFFFFFF C300000000000008_00
-EFFFFFC00000003D C3B0000040000000_01
-FFFFFFF21FEDFD35 C22BC02405960000_00
-FFFBFFFFFFFFFFFF C310000000000004_00
-FFFFFFF0000007FE C22FFFFFF0040000_00
-FFFFFFFFFFDE0839 C140FBE380000000_00
-FFF7FFFFFFFFFFFF C320000000000002_00
-0000007FFFE000FF 425FFFF8003FC000_00
-FFFFFFFF79F30F48 C1E0C19E17000000_00
-FFEFFFFFFFFFFFFF C330000000000001_00
-FFFFFC13FFFFFFFD C28F600000001800_00
-0000000000001B85 40BB850000000000_00
-FFDFFFFFFFFFFFFF C340000000000000_01
-000008000007FFFE 42A000000FFFFC00_00
-12DB4409E5AE87E6 43B2DB4409E5AE88_01
-FFBFFFFFFFFFFFFF C350000000000000_01
-FFFFFFFFFFF7BFEE C120802400000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FF7FFFFFFFFFFFFF C360000000000000_01
-000000001040FFFE 41B040FFFE000000_00
-00000909A09C13D3 42A213413827A600_00
-FEFFFFFFFFFFFFFF C370000000000000_01
-FFFFFF01FFFFFF7F C26FC00000102000_00
-FFFFFF72E7D2575D C261A305B5146000_00
-FDFFFFFFFFFFFFFF C380000000000000_01
-FFFFFFFFFFFEFFDB C0F0025000000000_00
-0000000000000017 4037000000000000_00
-FBFFFFFFFFFFFFFF C390000000000000_01
-100000001FFFFFF6 43B0000000200000_01
-000000114B12EF51 42314B12EF510000_00
-F7FFFFFFFFFFFFFF C3A0000000000000_01
-0407FFFFFFFFFEFF 43901FFFFFFFFFFC_01
-FFFFFF769F3A5C2C C2612C18B47A8000_00
-EFFFFFFFFFFFFFFF C3B0000000000000_01
-FFFFFFFDF7FFFFFD C200400000180000_00
-FFFFFFFFFFFFFFF2 C02C000000000000_00
-DFFFFFFFFFFFFFFF C3C0000000000000_01
-FFFFFFFFFE0007FF C17FFF8010000000_00
-000000000000001E 403E000000000000_00
-BFFFFFFFFFFFFFFF C3D0000000000000_01
-FFF800000009FFFF C31FFFFFFFD80004_00
-0000000000007AA4 40DEA90000000000_00
-7FFFFFFFFFFFFFFF 43E0000000000000_01
-4080000000FFFFFF 43D0200000004000_01
-000000000DE7601D 41ABCEC03A000000_00
-3FFFFFFFFFFFFFFF 43D0000000000000_01
-FFCFFFFFFFBFFFFE C348000000200001_00
-FFFFFFFFFFFFFFCA C04B000000000000_00
-1FFFFFFFFFFFFFFF 43C0000000000000_01
-000080400000003F 42E00800000007E0_00
-00000000001F75A5 413F75A500000000_00
-0FFFFFFFFFFFFFFF 43B0000000000000_01
-FFFFFFEFFFFFCFFE C230000030020000_00
-FFFFFEE775887420 C27188A778BE0000_00
-07FFFFFFFFFFFFFF 43A0000000000000_01
-00000000000801FE 412003FC00000000_00
-0000000000213FF1 41409FF880000000_00
-03FFFFFFFFFFFFFF 4390000000000000_01
-07FEFFFFFFFFFFEE 439FFC0000000000_01
-0000000000000004 4010000000000000_00
-01FFFFFFFFFFFFFF 4380000000000000_01
-0000000820000003 4220400000060000_00
-FFFFFFF9AD105214 C2194BBEB7B00000_00
-00FFFFFFFFFFFFFF 4370000000000000_01
-FFFFF00FFFFFFFBE C2AFE00000008400_00
-FFFFFFFFFFCC48E7 C149DB8C80000000_00
-007FFFFFFFFFFFFF 4360000000000000_01
-00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
-FFFFFFFFFF0BA6CB C16E8B26A0000000_00
-003FFFFFFFFFFFFF 4350000000000000_01
-FFFFFF7FBFFFFFBF C260080000082000_00
-FFFFFFFFFFF24425 C12B77B600000000_00
-001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
-200000001FFBFFFF 43C00000000FFE00_01
-FFFFFF4E7115EC53 C26631DD4275A000_00
-000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
-FFFFF803FFFFFFBF C29FF00000010400_00
-FFFFFC2E539ADCFE C28E8D6329181000_00
-0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-00000055084732F3 42554211CCBCC000_00
-0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
-BFFF7FFFFFFFFE00 C3D0002000000000_01
-FFFFFFFFFFFF8543 C0DEAF4000000000_00
-0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
-0000001FFBFFE000 423FFBFFE0000000_00
-FFFFFFFFFFFE491B C0FB6E5000000000_00
-0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
-FC00200000001FFE C38FFEFFFFFFFF00_01
-FFFFF16898822A24 C2AD2ECEFBABB800_00
-00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
-3FFF03FFFFFFFFFE 43CFFF8200000000_01
-FFFFFF8FFE18C7BF C25C0079CE104000_00
-00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
-FFFFFEFFFEFFFFFD C270001000003000_00
-00F03620C1266ED9 436E06C41824CDDB_01
-00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
-BF7EFFFFFFFFFFFF C3D0204000000000_01
-FFFFFFFFFFFFFFD5 C045800000000000_00
-00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
-FFFBFFFFF803FFFE C31000001FF00008_00
-0000000000068684 411A1A1000000000_00
-000007FFFFFFFFFF 429FFFFFFFFFFC00_00
-DFFFFFE00000001E C3C0000010000000_01
-FFFFFFFFFFFFECF5 C0B30B0000000000_00
-000003FFFFFFFFFF 428FFFFFFFFFF800_00
-FFFF00400000FFFF C2EFF7FFFFE00020_00
-0000000000000002 4000000000000000_00
-000001FFFFFFFFFF 427FFFFFFFFFF000_00
-FBFFFFFFFFFFBDFE C390000000000108_01
-0000000000000BC9 40A7920000000000_00
-000000FFFFFFFFFF 426FFFFFFFFFE000_00
-807FFFFFFFFFDFFE C3DFE00000000008_01
-FFC274E35A70CD76 C34EC58E52C79945_00
-0000007FFFFFFFFF 425FFFFFFFFFC000_00
-0FFFFFFFFEFFFFFD 43AFFFFFFFFE0000_01
-FFFFFFFF00E73AFC C1EFE318A0800000_00
-0000003FFFFFFFFF 424FFFFFFFFF8000_00
-FFC000000001000E C34FFFFFFFFF7FF9_00
-FFFFFFFFFFFE15E9 C0FEA17000000000_00
-0000001FFFFFFFFF 423FFFFFFFFF0000_00
-0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
-0000000000000033 4049800000000000_00
-0000000FFFFFFFFF 422FFFFFFFFE0000_00
-000000001FFFBFFF 41BFFFBFFF000000_00
-FFFFFFEE6B141E1B C23194EBE1E50000_00
-00000007FFFFFFFF 421FFFFFFFFC0000_00
-FFFFFFFFF60007FF C1A3FFF002000000_00
-00000001AB310BA6 41FAB310BA600000_00
-00000003FFFFFFFF 420FFFFFFFF80000_00
-0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
-FFFFFFFFFFFFF195 C0ACD60000000000_00
-00000001FFFFFFFF 41FFFFFFFFF00000_00
-FFFFFFFF8000000B C1DFFFFFFD400000_00
-00000019BA8D5559 4239BA8D55590000_00
-00000000FFFFFFFF 41EFFFFFFFE00000_00
-FBFEFFFFFFFFFFF9 C390040000000000_01
-FFFFFFB6F062822D C25243E75F74C000_00
-000000007FFFFFFF 41DFFFFFFFC00000_00
-0001000000000082 42F0000000000820_00
-01CEAD9E2FB104A4 437CEAD9E2FB104A_01
-000000003FFFFFFF 41CFFFFFFF800000_00
-000003FFFFFFFF7C 428FFFFFFFFBE000_00
-FFFFFFFFFD681E78 C184BF0C40000000_00
-000000001FFFFFFF 41BFFFFFFF000000_00
-00002000400001FF 42C000200000FF80_00
-0000000000000018 4038000000000000_00
-000000000FFFFFFF 41AFFFFFFE000000_00
-3FFF80000000003E 43CFFFC000000000_01
-FFFFFFFFFFFFFF95 C05AC00000000000_00
-0000000007FFFFFF 419FFFFFFC000000_00
-010000BFFFFFFFFF 4370000C00000000_01
-0000001697087B19 423697087B190000_00
-0000000003FFFFFF 418FFFFFF8000000_00
-FBFFFFFFFFEEFFFD C390000000004400_01
-0000000E64BDFC55 422CC97BF8AA0000_00
-0000000001FFFFFF 417FFFFFF0000000_00
-FC00000001FFFFFE C38FFFFFFFF00000_01
-FFFED156A62AB849 C2F2EA959D547B70_00
-0000000000FFFFFF 416FFFFFE0000000_00
-FFFFFFF83FEFFFFD C21F0040000C0000_00
-00015354EAE7C259 42F5354EAE7C2590_00
-00000000007FFFFF 415FFFFFC0000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFF0F4DF3C75 C22E164187160000_00
-00000000003FFFFF 414FFFFF80000000_00
-FFFA000000001FFF C317FFFFFFFF8004_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000001FFFFF 413FFFFF00000000_00
-FFFFFFFFFF7FFE40 C160003800000000_00
-FFFFFFDB5433CB9B C24255E61A328000_00
-00000000000FFFFF 412FFFFE00000000_00
-FFFFFDFFDFFDFFFD C280010010001800_00
-FFFFFFFFFFDEAE1F C140A8F080000000_00
-000000000007FFFF 411FFFFC00000000_00
-FFFFFFFFF0080006 C1AFEFFFF4000000_00
-FFFFFFFE7735DEC7 C1F88CA213900000_00
-000000000003FFFF 410FFFF800000000_00
-00000001FBFFFFFF 41FFBFFFFFF00000_00
-000003757D8B12ED 428BABEC58976800_00
-000000000001FFFF 40FFFFF000000000_00
-FFFFFE07F7FFFFFF C27F808000001000_00
-00000A654064E046 42A4CA80C9C08C00_00
-000000000000FFFF 40EFFFE000000000_00
-08000000000017FF 43A0000000000030_01
-FFFFFFFFFFFFFFE7 C039000000000000_00
-0000000000007FFF 40DFFFC000000000_00
-07FFFFFFFFFFFDF6 439FFFFFFFFFFFF8_01
-FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
-0000000000003FFF 40CFFF8000000000_00
-0000300004000000 42C8000200000000_00
-FFFFFFF70B77F34F C221E91019620000_00
-0000000000001FFF 40BFFF0000000000_00
-FFFFFF80006FFFFE C25FFFE400008000_00
-0000013EB4D67EC8 4273EB4D67EC8000_00
-0000000000000FFF 40AFFE0000000000_00
-BFFFDFFFFBFFFFFF C3D0000800010000_01
-0005CEAF34EA1DC7 43173ABCD3A8771C_00
-00000000000007FF 409FFC0000000000_00
-00004800007FFFFD 42D200001FFFFF40_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000000003FF 408FF80000000000_00
-0000000200001000 4200000080000000_00
-00000000000360D0 410B068000000000_00
-00000000000001FF 407FF00000000000_00
-01003FFFFFFFFFFC 4370040000000000_01
-00C000708FF1BA51 4368000E11FE374A_01
-00000000000000FF 406FE00000000000_00
-F802000003FFFFFF C39FF7FFFFF00000_01
-0F9E07DCC0BDC061 43AF3C0FB9817B81_01
-000000000000007F 405FC00000000000_00
-03FF0000000000FF 438FF80000000008_01
-FFFFFFE1B9B2A079 C23E464D5F870000_00
-000000000000003F 404F800000000000_00
-FFF80000000080FF C31FFFFFFFFDFC04_00
-00000000001EB5B4 413EB5B400000000_00
-000000000000001F 403F000000000000_00
-000000000077FBFE 415DFEFF80000000_00
-00000000005AC607 4156B181C0000000_00
-000000000000000F 402E000000000000_00
-FFFFFFFEF80000FF C1F07FFFF0100000_00
-000005C5B9D66984 429716E759A61000_00
-0000000000000007 401C000000000000_00
-C001FFFFFFF00000 C3CFFF0000000800_00
-00001D06B372AA06 42BD06B372AA0600_00
-0000000000000003 4008000000000000_00
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFE_01
+0000000032CC8B7A_41C96645BD000000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_C1CFFFE001000000_00
+032C857F319EDE38_4389642BF98CF6F2_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_C29000001FFF0800_00
+00394C79B6D3007B_434CA63CDB69803E_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_C39000003FFFFFF8_01
+0000000001AE458D_417AE458D0000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+F9EB456140D88764_C39852EA7AFC9DE2_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_C2BBFF0000000200_00
+07DE834A248EDF36_439F7A0D28923B7D_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+FFFFFFFFFFE385E2_C13C7A1E00000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_C3AFF7C000000000_01
+000000059EB1FD45_42167AC7F5140000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_C108003800000000_00
+FFFFFFFFFFFEDDFE_C0F2202000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000000C89FF56B_41E913FEAD600000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0_43BB5E4F0BE0DEC0_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_C3003FE000000008_00
+FFFFFFFFFFF4766B_C127132A00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000000C_4028000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+FFE662A109109D0A_C3399D5EF6EF62F6_00
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4_C03C000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_C39FFBFFFFFFC000_00
+FE114B79075F70EE_C37EEB486F8A08F1_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+00000000000003AC_408D600000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+00000044A3A3DBE5_425128E8F6F94000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_C33FFFC100000001_00
+FFFFFFFFFFFF1A91_C0ECADE000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_C2A0780000000600_00
+0000000000003309_40C9848000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58_C065000000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_C240FF0000010000_00
+0000000000002980_40C4C00000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+000000000000005D_4057400000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8_C30B9EE12E98A940_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C_C280E1F109DE2000_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_C2EFFFFE80000060_00
+000000000030FFBE_41487FDF00000000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_C2FFFFFF80010030_00
+FFFFFFFFEFDEED86_C1B021127A000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_C3A8000000008000_01
+000000001DA3FF45_41BDA3FF45000000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54_C1F64E434AC00000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+F27DD19DE6563714_C3AB045CC4335392_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_C34FFFFFFFDFFC01_00
+000000000001A359_40FA359000000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+FFFFFFFFFE62EC20_C179D13E00000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000285F_40C42F8000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_C1D00003FC400000_00
+FFFFF836F99DBAA8_C29F241989156000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0033466832042D47_4349A334190216A4_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_C09DE40000000000_00
+00000000003829C8_414C14E400000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000000FB77C672B_422F6EF8CE560000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFC000000_01
+0000000000001B78_40BB780000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_C360000000020400_01
+0000000000000071_405C400000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86_C05E800000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+FFF8A60D9E19F17E_C31D67C987983A08_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+FFFFFFFFF7506DBA_C1A15F248C000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_C0F0409000000000_00
+FFFFFFFFFEA42AC9_C175BD5370000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89_C33855C0D4253377_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9_C3004BF1099291B8_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_C2700001FFF81000_00
+FFFFFFFFFFFFCFBE_C0C8210000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+FEC01FECA24DE1B0_C373FE0135DB21E5_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_C3A0000000400100_01
+F858A66761669936_C39E9D66627A659B_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_C2F007FFFFFFFC20_00
+F716EA43FAC45C97_C3A1D22B780A7747_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_C04D000000000000_00
+0024D70EC7661FD8_43426B8763B30FEC_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_C3CFC00000000000_01
+FFD956DBD0AEE817_C343549217A88BF4_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F80000000_01
+FFFFFFFFFFFF4300_C0E7A00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+C12EDF40F41F6021_C3CF68905F85F050_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_C35BFFFFFFFFFFF9_01
+FFFFFFF83DE950F6_C21F085ABC280000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_C3DFFFFF00000100_00
+FE2B59CB3A604D69_C37D4A634C59FB29_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFF0_01
+000000A37C210862_42646F84210C4000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+FFFFB65CD8617789_C2D268C9E7A21DC0_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D_C0AFC60000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B0000080000040_01
+000000000D098D19_41AA131A32000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFB0_01
+000006B3BD2C7BEF_429ACEF4B1EFBC00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8_C2E634A444AB6B00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+FFFFFFFFFFFFFF21_C06BE00000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+FFFFFFFFFC648262_C18CDBECF0000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_C3CFFFF000000000_01
+FFFFFF7353AC45D2_C261958A7745C000_00
+8000000000000000_C3E0000000000000_00
+FFFFFFFFFFE7EFFF_C138100100000000_00
+0000000000A1202D_41642405A0000000_00
+C000000000000000_C3D0000000000000_00
+FFFFFFFFFFFF5F7F_C0E4102000000000_00
+000000000040CA70_4150329C00000000_00
+E000000000000000_C3C0000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000003B55D87D4_420DAAEC3EA00000_00
+F000000000000000_C3B0000000000000_00
+FF80000DFFFFFFFF_C35FFFFC80000000_01
+000000010510FAEF_41F0510FAEF00000_00
+F800000000000000_C3A0000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000000724A_40DC928000000000_00
+FC00000000000000_C390000000000000_00
+FFFFFFDF80000002_C2403FFFFFFF0000_00
+0000000000000064_4059000000000000_00
+FE00000000000000_C380000000000000_00
+FEFFFFFFFFF800FE_C370000000007FF0_01
+FFFFFFC2C6222702_C24E9CEEEC7F0000_00
+FF00000000000000_C370000000000000_00
+0000000408000002_4210200000080000_00
+000000E96DF1CB41_426D2DBE39682000_00
+FF80000000000000_C360000000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE80_01
+F727F174DEE7DC85_C3A1B01D16423047_01
+FFC0000000000000_C350000000000000_00
+8000000003FFFEFE_C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B_C12E854A00000000_00
+FFE0000000000000_C340000000000000_00
+0BEFFFFFFFFFFFFF_43A7E00000000000_01
+000000000002790C_4103C86000000000_00
+FFF0000000000000_C330000000000000_00
+FFFFFFFFFFEFFBFA_C130040600000000_00
+000000169E75DF01_42369E75DF010000_00
+FFF8000000000000_C320000000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000000E_402C000000000000_00
+FFFC000000000000_C310000000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+FFFFFFFFFFF28622_C12AF3BC00000000_00
+FFFE000000000000_C300000000000000_00
+FFFFFF7FFFFDF7FF_C260000041002000_00
+00072F0EC496FE21_431CBC3B125BF884_00
+FFFF000000000000_C2F0000000000000_00
+DFBFFFFFFFFFFFFE_C3C0200000000000_01
+0000000000FC1FCA_416F83F940000000_00
+FFFF800000000000_C2E0000000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE_C2E5CD636AC7A640_00
+FFFFC00000000000_C2D0000000000000_00
+00000002100007FD_420080003FE80000_00
+FFFFFFFFFFC2D8FE_C14E938100000000_00
+FFFFE00000000000_C2C0000000000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000001766E_40F766E000000000_00
+FFFFF00000000000_C2B0000000000000_00
+0040000400000002_4350000100000000_01
+0000000000007841_40DE104000000000_00
+FFFFF80000000000_C2A0000000000000_00
+3DFFFFFFFFFFFF7E_43CF000000000000_01
+FFFFFFE549E17E30_C23AB61E81D00000_00
+FFFFFC0000000000_C290000000000000_00
+FFFFFFFFFFFFFEE1_C071F00000000000_00
+FFFFFFFFFFFFFFE7_C039000000000000_00
+FFFFFE0000000000_C280000000000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73_C061A00000000000_00
+FFFFFF0000000000_C270000000000000_00
+FD00000008000000_C387FFFFFFC00000_00
+000000000001DBB1_40FDBB1000000000_00
+FFFFFF8000000000_C260000000000000_00
+FFFFFFFFFFF8007F_C11FFE0400000000_00
+FFFFFFFEFD10A515_C1F02EF5AEB00000_00
+FFFFFFC000000000_C250000000000000_00
+FFEFFFFFFFFFFFFE_C330000000000002_00
+FAB02984F6283B6C_C3953F59EC275F12_01
+FFFFFFE000000000_C240000000000000_00
+FFFFFFBC000001FE_C250FFFFFF808000_00
+FEB087C6B9FE7FE0_C374F78394601802_00
+FFFFFFF000000000_C230000000000000_00
+FFF80001000007FE_C31FFFFBFFFFE008_00
+00F2762EA6837956_436E4EC5D4D06F2B_01
+FFFFFFF800000000_C220000000000000_00
+FFF7E0FFFFFFFFFE_C3203E0000000004_00
+00002E1175484626_42C708BAA4231300_00
+FFFFFFFC00000000_C210000000000000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000068F_409A3C0000000000_00
+FFFFFFFE00000000_C200000000000000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFE000_01
+FFFFFFFFFFFFFFF9_C01C000000000000_00
+FFFFFFFF00000000_C1F0000000000000_00
+FFFFFFD0000FFFFD_C247FFF800018000_00
+000000BDF6658B83_4267BECCB1706000_00
+FFFFFFFF80000000_C1E0000000000000_00
+1000001FFDFFFFFF_43B000001FFE0000_01
+0000000000003B5B_40CDAD8000000000_00
+FFFFFFFFC0000000_C1D0000000000000_00
+FFFFFFBFFE0FFFFF_C250007C00004000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+FFFFFFFFE0000000_C1C0000000000000_00
+FFFFFFFBF00007FF_C2103FFFE0040000_00
+01E986274F48EAAD_437E986274F48EAB_01
+FFFFFFFFF0000000_C1B0000000000000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A_C0CA530000000000_00
+FFFFFFFFF8000000_C1A0000000000000_00
+7FF000000000FFFF_43DFFC0000000040_01
+00000003C2717FC3_420E138BFE180000_00
+FFFFFFFFFC000000_C190000000000000_00
+FFFFFFE00008001F_C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA_C130542600000000_00
+FFFFFFFFFE000000_C180000000000000_00
+0200000000000002_4380000000000000_01
+FFFFFFFFF8FDA53F_C19C096B04000000_00
+FFFFFFFFFF000000_C170000000000000_00
+F6000003FFFFFFFE_C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0_C048000000000000_00
+FFFFFFFFFF800000_C160000000000000_00
+FFFFFFFFFFBFFF7E_C150002080000000_00
+00000000EE0FEA62_41EDC1FD4C400000_00
+FFFFFFFFFFC00000_C150000000000000_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000037F35EDC1D_424BF9AF6E0E8000_00
+FFFFFFFFFFE00000_C140000000000000_00
+FFFFFFF7FDFFFF7D_C220040001060000_00
+00000000000001AD_407AD00000000000_00
+FFFFFFFFFFF00000_C130000000000000_00
+FFFFFF0000100020_C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A_43C3F8B3FDE3FE30_01
+FFFFFFFFFFF80000_C120000000000000_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+000E48F9F4EBD30E_432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000_C110000000000000_00
+DFFFFFFFFFFBFFFE_C3C0000000000200_01
+FC91C23EE8C9424F_C38B71EE08B9B5EE_01
+FFFFFFFFFFFE0000_C100000000000000_00
+F7DFFBFFFFFFFFFE_C3A0400800000000_01
+000000002CAE080C_41C6570406000000_00
+FFFFFFFFFFFF0000_C0F0000000000000_00
+FFFFC00010000020_C2CFFFF7FFFFF000_00
+04D921F917B20E40_43936487E45EC839_00
+FFFFFFFFFFFF8000_C0E0000000000000_00
+F8000FFFFFFFFFFD_C39FFFC000000000_01
+FFF17C566BC7D811_C32D075328704FDE_00
+FFFFFFFFFFFFC000_C0D0000000000000_00
+00000000000000FE_406FC00000000000_00
+FFF82AC14930D386_C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000_C0C0000000000000_00
+00000000000003FC_408FE00000000000_00
+000E62EC60E119FC_432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000_C0B0000000000000_00
+FFFFEFF7FF7FFFFE_C2B0080080000200_00
+0E2B1ECF210EEDC5_43AC563D9E421DDC_01
+FFFFFFFFFFFFF800_C0A0000000000000_00
+00000000007FFF1F_415FFFC7C0000000_00
+FFFFFE534F5676F7_C27ACB0A98909000_00
+FFFFFFFFFFFFFC00_C090000000000000_00
+0000001004FFFFFD_423004FFFFFD0000_00
+0000035C939669F1_428AE49CB34F8800_00
+FFFFFFFFFFFFFE00_C080000000000000_00
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFE_01
+FFFFFFFFFFFFFF91_C05BC00000000000_00
+FFFFFFFFFFFFFF00_C070000000000000_00
+01FFFFFFFBFFEFFE_437FFFFFFFBFFF00_01
+000000000000016E_4076E00000000000_00
+FFFFFFFFFFFFFF80_C060000000000000_00
+FFF7FFFFFFFFF7FD_C320000000001006_00
+FFFFF8E2BCFAC553_C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0_C050000000000000_00
+FFFFFBFFFFFE0FFE_C290000007C00800_00
+00000001A4E704BF_41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0_C040000000000000_00
+1400007FFFFFFFFD_43B4000080000000_01
+FFFFFFFC93B187B4_C20B6273C2600000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+40000000007FFFFD_43D0000000002000_01
+000000000067D468_4159F51A00000000_00
+FFFFFFFFFFFFFFF8_C020000000000000_00
+007FFEFFFFFBFFFE_435FFFBFFFFF0000_01
+FFFFFFE26CEC79F8_C23D931386080000_00
+FFFFFFFFFFFFFFFC_C010000000000000_00
+00FFFFFF000000FF_436FFFFFE0000020_01
+FFFFFFFFE0D3983A_C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE_C000000000000000_00
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A_C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF_BFF0000000000000_00
+000008000000027E_42A000000004FC00_00
+000000000000F4E8_40EE9D0000000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFF83FFDF_C15F000840000000_00
+00000E11407887B2_42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+04000003FFFFFFF6_4390000010000000_01
+0000000000000513_40944C0000000000_00
+FFFFFFFFFFFFFFF7_C022000000000000_00
+BFFC00000000003E_C3D0010000000000_01
+00000008D7BBB75B_4221AF776EB60000_00
+FFFFFFFFFFFFFFEF_C031000000000000_00
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23_C14952EE80000000_00
+FFFFFFFFFFFFFFDF_C040800000000000_00
+FFBFDFFFBFFFFFFF_C350080010000000_01
+000000000000007F_405FC00000000000_00
+FFFFFFFFFFFFFFBF_C050400000000000_00
+00000007FF800003_421FFE00000C0000_00
+000000000002BB02_4105D81000000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEE7FF_C0F1801000000000_00
+00264B2B9BAD0DA2_43432595CDD686D1_00
+FFFFFFFFFFFFFEFF_C070100000000000_00
+0000000000100803_4130080300000000_00
+FF9B1DCB9F857D5E_C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF_C080080000000000_00
+FFFFFFBFFFFFEFEE_C250000004048000_00
+F6FD7542899C1C6F_C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF_C090040000000000_00
+FF800000004001FF_C35FFFFFFFEFFF80_01
+0000000002BE4932_4185F24990000000_00
+FFFFFFFFFFFFF7FF_C0A0020000000000_00
+00001004000FFFFE_42B004000FFFFE00_00
+FFFFFF9DAA0123E0_C258957FB7080000_00
+FFFFFFFFFFFFEFFF_C0B0010000000000_00
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0_C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF_C0C0008000000000_00
+FE0FE00000000000_C37F020000000000_00
+0779ED944A4E2779_439DE7B65129389E_01
+FFFFFFFFFFFFBFFF_C0D0004000000000_00
+FBFFFE0400000000_C3900007F0000000_00
+0000010127E03666_4270127E03666000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+FFFFF0200000FFFE_C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEFFFF_C0F0001000000000_00
+FFEFFE0000080000_C33001FFFFF80000_00
+FFFFFFFFFD3354EA_C1866558B0000000_00
+FFFFFFFFFFFDFFFF_C100000800000000_00
+003FF0000003FFFE_434FF8000001FFFF_00
+0000006375B23F7B_4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF_C110000400000000_00
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000092117F38_41E2422FE7000000_00
+FFFFFFFFFFF7FFFF_C120000200000000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+00000000000008BE_40A17C0000000000_00
+FFFFFFFFFFEFFFFF_C130000100000000_00
+004000020FFFFFFF_4350000084000000_01
+FFFFB84C2D8BC9CB_C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF_C140000080000000_00
+00FFFFFFFFFFFFFD_4370000000000000_01
+00000023C2C6F284_4241E16379420000_00
+FFFFFFFFFFBFFFFF_C150000040000000_00
+FFFDDFFFFFFFFFFD_C301000000000018_00
+00000000746356C4_41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF_C160000020000000_00
+010000000000BFFF_4370000000000C00_01
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFEFFFFFF_C170000010000000_00
+FFFFBF7FFBFFFFFE_C2D0200100000080_00
+00000006386CE889_4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF_C180000008000000_00
+F00000F7FFFFFFFF_C3AFFFFE10000000_01
+FFFDFC53090C46A4_C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+0000000000800047_41600008E0000000_00
+FFFFFFFFD693872E_C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF_C1A0000002000000_00
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000026A7845E35_424353C22F1A8000_00
+FFFFFFFFEFFFFFFF_C1B0000001000000_00
+FFFFFFDFFFFFFBFD_C240000002018000_00
+000000001433D14C_41B433D14C000000_00
+FFFFFFFFDFFFFFFF_C1C0000000800000_00
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+F0F23E8068D3D84A_C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF_C1D0000000400000_00
+F7FFBFFFFFFFBFFF_C3A0008000000080_01
+FFFFBD29B7459087_C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF_C1E0000000200000_00
+FFFFFFF8FFFFBFFF_C21C000100040000_00
+FFFFFFFFFFEDDC06_C13223FA00000000_00
+FFFFFFFEFFFFFFFF_C1F0000000100000_00
+FFFFFFF80001FFFF_C21FFFF800040000_00
+0000000000002FF9_40C7FC8000000000_00
+FFFFFFFDFFFFFFFF_C200000000080000_00
+004000040000FFFF_4350000100004000_01
+FFFFFFFFFFFFFFF1_C02E000000000000_00
+FFFFFFFBFFFFFFFF_C210000000040000_00
+C0000000007FFFFA_C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B_C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF_C220000000020000_00
+7FFE000007FFFFFF_43DFFF8000020000_01
+000000000000000D_402A000000000000_00
+FFFFFFEFFFFFFFFF_C230000000010000_00
+F80000000001007E_C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6_C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF_C240000000008000_00
+FFFFFE0001FEFFFF_C27FFFE010001000_00
+000000000000013B_4073B00000000000_00
+FFFFFFBFFFFFFFFF_C250000000004000_00
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_C260000000002000_00
+00FFF7FFFF7FFFFE_436FFEFFFFF00000_01
+0000000000000006_4018000000000000_00
+FFFFFEFFFFFFFFFF_C270000000001000_00
+FBFFFFBFFFBFFFFF_C390000100010000_01
+00000000000001BA_407BA00000000000_00
+FFFFFDFFFFFFFFFF_C280000000000800_00
+0000000040000082_41D0000020800000_00
+FF07A2BF5B689F89_C36F0BA81492EC0F_01
+FFFFFBFFFFFFFFFF_C290000000000400_00
+0000001FF8000008_423FF80000080000_00
+F87CAA7DE672DE8B_C39E0D5608663486_01
+FFFFF7FFFFFFFFFF_C2A0000000000200_00
+07FFF80000000002_439FFFE000000000_01
+0000000010A1E5B8_41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF_C2B0000000000100_00
+F7FFFFE00007FFFF_C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC_C122A40800000000_00
+FFFFDFFFFFFFFFFF_C2C0000000000080_00
+FFFFFF03FFFFFFC0_C26F800000080000_00
+EA579475948F0032_C3B5A86B8A6B7100_01
+FFFFBFFFFFFFFFFF_C2D0000000000040_00
+FC00000000003FF6_C38FFFFFFFFFFE00_01
+002E677AC313BF60_434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF_C2E0000000000020_00
+02000007FF7FFFFF_438000003FFC0000_01
+0000000E999639F1_422D332C73E20000_00
+FFFEFFFFFFFFFFFF_C2F0000000000010_00
+FFFF83FFFFFFFFBE_C2DF000000001080_00
+000000000001537D_40F537D000000000_00
+FFFDFFFFFFFFFFFF_C300000000000008_00
+EFFFFFC00000003D_C3B0000040000000_01
+FFFFFFF21FEDFD35_C22BC02405960000_00
+FFFBFFFFFFFFFFFF_C310000000000004_00
+FFFFFFF0000007FE_C22FFFFFF0040000_00
+FFFFFFFFFFDE0839_C140FBE380000000_00
+FFF7FFFFFFFFFFFF_C320000000000002_00
+0000007FFFE000FF_425FFFF8003FC000_00
+FFFFFFFF79F30F48_C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF_C330000000000001_00
+FFFFFC13FFFFFFFD_C28F600000001800_00
+0000000000001B85_40BB850000000000_00
+FFDFFFFFFFFFFFFF_C340000000000000_01
+000008000007FFFE_42A000000FFFFC00_00
+12DB4409E5AE87E6_43B2DB4409E5AE88_01
+FFBFFFFFFFFFFFFF_C350000000000000_01
+FFFFFFFFFFF7BFEE_C120802400000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FF7FFFFFFFFFFFFF_C360000000000000_01
+000000001040FFFE_41B040FFFE000000_00
+00000909A09C13D3_42A213413827A600_00
+FEFFFFFFFFFFFFFF_C370000000000000_01
+FFFFFF01FFFFFF7F_C26FC00000102000_00
+FFFFFF72E7D2575D_C261A305B5146000_00
+FDFFFFFFFFFFFFFF_C380000000000000_01
+FFFFFFFFFFFEFFDB_C0F0025000000000_00
+0000000000000017_4037000000000000_00
+FBFFFFFFFFFFFFFF_C390000000000000_01
+100000001FFFFFF6_43B0000000200000_01
+000000114B12EF51_42314B12EF510000_00
+F7FFFFFFFFFFFFFF_C3A0000000000000_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFC_01
+FFFFFF769F3A5C2C_C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF_C3B0000000000000_01
+FFFFFFFDF7FFFFFD_C200400000180000_00
+FFFFFFFFFFFFFFF2_C02C000000000000_00
+DFFFFFFFFFFFFFFF_C3C0000000000000_01
+FFFFFFFFFE0007FF_C17FFF8010000000_00
+000000000000001E_403E000000000000_00
+BFFFFFFFFFFFFFFF_C3D0000000000000_01
+FFF800000009FFFF_C31FFFFFFFD80004_00
+0000000000007AA4_40DEA90000000000_00
+7FFFFFFFFFFFFFFF_43E0000000000000_01
+4080000000FFFFFF_43D0200000004000_01
+000000000DE7601D_41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF_43D0000000000000_01
+FFCFFFFFFFBFFFFE_C348000000200001_00
+FFFFFFFFFFFFFFCA_C04B000000000000_00
+1FFFFFFFFFFFFFFF_43C0000000000000_01
+000080400000003F_42E00800000007E0_00
+00000000001F75A5_413F75A500000000_00
+0FFFFFFFFFFFFFFF_43B0000000000000_01
+FFFFFFEFFFFFCFFE_C230000030020000_00
+FFFFFEE775887420_C27188A778BE0000_00
+07FFFFFFFFFFFFFF_43A0000000000000_01
+00000000000801FE_412003FC00000000_00
+0000000000213FF1_41409FF880000000_00
+03FFFFFFFFFFFFFF_4390000000000000_01
+07FEFFFFFFFFFFEE_439FFC0000000000_01
+0000000000000004_4010000000000000_00
+01FFFFFFFFFFFFFF_4380000000000000_01
+0000000820000003_4220400000060000_00
+FFFFFFF9AD105214_C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF_4370000000000000_01
+FFFFF00FFFFFFFBE_C2AFE00000008400_00
+FFFFFFFFFFCC48E7_C149DB8C80000000_00
+007FFFFFFFFFFFFF_4360000000000000_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB_C16E8B26A0000000_00
+003FFFFFFFFFFFFF_4350000000000000_01
+FFFFFF7FBFFFFFBF_C260080000082000_00
+FFFFFFFFFFF24425_C12B77B600000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFE00_01
+FFFFFF4E7115EC53_C26631DD4275A000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_C29FF00000010400_00
+FFFFFC2E539ADCFE_C28E8D6329181000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+00000055084732F3_42554211CCBCC000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_C3D0002000000000_01
+FFFFFFFFFFFF8543_C0DEAF4000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+FFFFFFFFFFFE491B_C0FB6E5000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_C38FFEFFFFFFFF00_01
+FFFFF16898822A24_C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF8200000000_01
+FFFFFF8FFE18C7BF_C25C0079CE104000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_C270001000003000_00
+00F03620C1266ED9_436E06C41824CDDB_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_C3D0204000000000_01
+FFFFFFFFFFFFFFD5_C045800000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_C31000001FF00008_00
+0000000000068684_411A1A1000000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_C3C0000010000000_01
+FFFFFFFFFFFFECF5_C0B30B0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_C2EFF7FFFFE00020_00
+0000000000000002_4000000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_C390000000000108_01
+0000000000000BC9_40A7920000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_C3DFE00000000008_01
+FFC274E35A70CD76_C34EC58E52C79945_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFE0000_01
+FFFFFFFF00E73AFC_C1EFE318A0800000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9_C0FEA17000000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+0000000000000033_4049800000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+FFFFFFEE6B141E1B_C23194EBE1E50000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_C1A3FFF002000000_00
+00000001AB310BA6_41FAB310BA600000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195_C0ACD60000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_C1DFFFFFFD400000_00
+00000019BA8D5559_4239BA8D55590000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_C390040000000000_01
+FFFFFFB6F062822D_C25243E75F74C000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+01CEAD9E2FB104A4_437CEAD9E2FB104A_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+FFFFFFFFFD681E78_C184BF0C40000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000018_4038000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+FFFFFFFFFFFFFF95_C05AC00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000C00000000_01
+0000001697087B19_423697087B190000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_C390000000004400_01
+0000000E64BDFC55_422CC97BF8AA0000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_C38FFFFFFFF00000_01
+FFFED156A62AB849_C2F2EA959D547B70_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_C21F0040000C0000_00
+00015354EAE7C259_42F5354EAE7C2590_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFF0F4DF3C75_C22E164187160000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_C160003800000000_00
+FFFFFFDB5433CB9B_C24255E61A328000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_C280010010001800_00
+FFFFFFFFFFDEAE1F_C140A8F080000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7_C1F88CA213900000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000003757D8B12ED_428BABEC58976800_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_C27F808000001000_00
+00000A654064E046_42A4CA80C9C08C00_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A0000000000030_01
+FFFFFFFFFFFFFFE7_C039000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF8_01
+FFFFAD78B3D6C3B6_C2D4A1D30A4F1280_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+FFFFFFF70B77F34F_C221E91019620000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_C25FFFE400008000_00
+0000013EB4D67EC8_4273EB4D67EC8000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_C3D0000800010000_01
+0005CEAF34EA1DC7_43173ABCD3A8771C_00
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000360D0_410B068000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_4370040000000000_01
+00C000708FF1BA51_4368000E11FE374A_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_C39FF7FFFFF00000_01
+0F9E07DCC0BDC061_43AF3C0FB9817B81_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000008_01
+FFFFFFE1B9B2A079_C23E464D5F870000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_C31FFFFFFFFDFC04_00
+00000000001EB5B4_413EB5B400000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+00000000005AC607_4156B181C0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_C1F07FFFF0100000_00
+000005C5B9D66984_429716E759A61000_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_C3CFFF0000000800_00
+00001D06B372AA06_42BD06B372AA0600_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_ru.tv b/wally-pipelined/testbench/fp/i64_f64_ru.tv
index eca72d40b..f2652d6cd 100644
--- a/wally-pipelined/testbench/fp/i64_f64_ru.tv
+++ b/wally-pipelined/testbench/fp/i64_f64_ru.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 439FFFF7FFFFFFFE_01
-0000000032CC8B7A 41C96645BD000000_00
-0000000000000000 0000000000000000_00
-FFFFFFFFC0003FFE C1CFFFE001000000_00
-032C857F319EDE38 4389642BF98CF6F2_01
-0000000000000001 3FF0000000000000_00
-FFFFFBFFFFF8003E C29000001FFF0800_00
-00394C79B6D3007B 434CA63CDB69803E_01
-0000000000000002 4000000000000000_00
-FBFFFFF0000001FF C39000003FFFFFF8_01
-0000000001AE458D 417AE458D0000000_00
-0000000000000004 4010000000000000_00
-00040008000007FE 4310002000001FF8_00
-F9EB456140D88764 C39852EA7AFC9DE2_01
-0000000000000008 4020000000000000_00
-FFFFE400FFFFFFFE C2BBFF0000000200_00
-07DE834A248EDF36 439F7A0D28923B7D_01
-0000000000000010 4030000000000000_00
-00000003FF001FFF 420FF800FFF80000_00
-FFFFFFFFFFE385E2 C13C7A1E00000000_00
-0000000000000020 4040000000000000_00
-F0041FFFFFFFFFFF C3AFF7C000000000_01
-000000059EB1FD45 42167AC7F5140000_00
-0000000000000040 4050000000000000_00
-FFFFFFFFFFFCFFF9 C108003800000000_00
-FFFFFFFFFFFEDDFE C0F2202000000000_00
-0000000000000080 4060000000000000_00
-000000000003FF00 410FF80000000000_00
-00000000C89FF56B 41E913FEAD600000_00
-0000000000000100 4070000000000000_00
-000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
-1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEC0_01
-0000000000000200 4080000000000000_00
-FFFDF803FFFFFFFF C3003FE000000008_00
-FFFFFFFFFFF4766B C127132A00000000_00
-0000000000000400 4090000000000000_00
-0000080100000FFE 42A00200001FFC00_00
-000000000000000C 4028000000000000_00
-0000000000000800 40A0000000000000_00
-0048000000100000 4352000000040000_00
-FFE662A109109D0A C3399D5EF6EF62F6_00
-0000000000001000 40B0000000000000_00
-C000000037FFFFFE C3CFFFFFFFE40000_01
-FFFFFFFFFFFFFFE4 C03C000000000000_00
-0000000000002000 40C0000000000000_00
-F801000000100000 C39FFBFFFFFFC000_00
-FE114B79075F70EE C37EEB486F8A08F1_01
-0000000000004000 40D0000000000000_00
-100000000001003E 43B0000000000101_01
-00000000000003AC 408D600000000000_00
-0000000000008000 40E0000000000000_00
-200000FFFFFFF800 43C000007FFFFFFC_00
-00000044A3A3DBE5 425128E8F6F94000_00
-0000000000010000 40F0000000000000_00
-FFE0003EFFFFFFFF C33FFFC100000001_00
-FFFFFFFFFFFF1A91 C0ECADE000000000_00
-0000000000020000 4100000000000000_00
-FFFFF7C3FFFFFFFD C2A0780000000600_00
-0000000000003309 40C9848000000000_00
-0000000000040000 4110000000000000_00
-000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
-FFFFFFFFFFFFFF58 C065000000000000_00
-0000000000080000 4120000000000000_00
-FFFFFFDE01FFFFFE C240FF0000010000_00
-0000000000002980 40C4C00000000000_00
-0000000000100000 4130000000000000_00
-00000000FFF07FFF 41EFFE0FFFE00000_00
-000000000000005D 4057400000000000_00
-0000000000200000 4140000000000000_00
-000020FFDFFFFFFF 42C07FEFFFFFFF80_00
-FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
-0000000000400000 4150000000000000_00
-E0000000003FFFDF C3BFFFFFFFFFC000_01
-FFFFFDE3C1DEC43C C280E1F109DE2000_00
-0000000000800000 4160000000000000_00
-FFFF00000BFFFFFD C2EFFFFE80000060_00
-000000000030FFBE 41487FDF00000000_00
-0000000001000000 4170000000000000_00
-FFFE000007FFEFFD C2FFFFFF80010030_00
-FFFFFFFFEFDEED86 C1B021127A000000_00
-0000000002000000 4180000000000000_00
-F3FFFFFFFFBFFFFE C3A8000000008000_01
-000000001DA3FF45 41BDA3FF45000000_00
-0000000004000000 4190000000000000_00
-FFFFFFFF00010007 C1EFFFDFFF200000_00
-FFFFFFFE9B1BCB54 C1F64E434AC00000_00
-0000000008000000 41A0000000000000_00
-00004000004001FE 42D0000010007F80_00
-F27DD19DE6563714 C3AB045CC4335391_01
-0000000010000000 41B0000000000000_00
-FFC00000004007FE C34FFFFFFFDFFC01_00
-000000000001A359 40FA359000000000_00
-0000000020000000 41C0000000000000_00
-0000000003C000FE 418E0007F0000000_00
-FFFFFFFFFE62EC20 C179D13E00000000_00
-0000000040000000 41D0000000000000_00
-000000003FFFFFFD 41CFFFFFFE800000_00
-000000000000285F 40C42F8000000000_00
-0000000080000000 41E0000000000000_00
-FFFFFFFFBFFFF00F C1D00003FC400000_00
-FFFFF836F99DBAA8 C29F241989156000_00
-0000000100000000 41F0000000000000_00
-00000020003FFEFE 4240001FFF7F0000_00
-0033466832042D47 4349A334190216A4_01
-0000000200000000 4200000000000000_00
-FFFFFFFFFFFFF887 C09DE40000000000_00
-00000000003829C8 414C14E400000000_00
-0000000400000000 4210000000000000_00
-00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
-0000000FB77C672B 422F6EF8CE560000_00
-0000000800000000 4220000000000000_00
-08003FFDFFFFFFFE 43A0007FFC000000_01
-0000000000001B78 40BB780000000000_00
-0000001000000000 4230000000000000_00
-FF7FFFFFFFEFDFFF C360000000020400_01
-0000000000000071 405C400000000000_00
-0000002000000000 4240000000000000_00
-000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
-FFFFFFFFFFFFFF86 C05E800000000000_00
-0000004000000000 4250000000000000_00
-0800000000040800 43A0000000000810_00
-FFF8A60D9E19F17E C31D67C987983A08_00
-0000008000000000 4260000000000000_00
-000077FFF0000000 42DDFFFC00000000_00
-FFFFFFFFF7506DBA C1A15F248C000000_00
-0000010000000000 4270000000000000_00
-FFFFFFFFFFFEFBF7 C0F0409000000000_00
-FFFFFFFFFEA42AC9 C175BD5370000000_00
-0000020000000000 4280000000000000_00
-0000107FFFFFDFFD 42B07FFFFFDFFD00_00
-FFE7AA3F2BDACC89 C33855C0D4253377_00
-0000040000000000 4290000000000000_00
-FFF8040000040000 C31FEFFFFFF00000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-0000080000000000 42A0000000000000_00
-FFFF80000800001F C2DFFFFDFFFFF840_00
-FFFDF681DECDADC9 C3004BF1099291B8_00
-0000100000000000 42B0000000000000_00
-FFFFFEFFFFE0007F C2700001FFF81000_00
-FFFFFFFFFFFFCFBE C0C8210000000000_00
-0000200000000000 42C0000000000000_00
-0000000901FFFFFD 422203FFFFFA0000_00
-FEC01FECA24DE1B0 C373FE0135DB21E5_00
-0000400000000000 42D0000000000000_00
-F7FFFFFFDFFF7FFF C3A0000000400100_01
-F858A66761669936 C39E9D66627A659B_01
-0000800000000000 42E0000000000000_00
-FFFEFF800000003E C2F007FFFFFFFC20_00
-F716EA43FAC45C97 C3A1D22B780A7746_01
-0001000000000000 42F0000000000000_00
-FFFFFFFFFFFFFFC6 C04D000000000000_00
-0024D70EC7661FD8 43426B8763B30FEC_00
-0002000000000000 4300000000000000_00
-C07FFFFFFFFFFFFE C3CFC00000000000_01
-FFD956DBD0AEE817 C343549217A88BF4_01
-0004000000000000 4310000000000000_00
-020003EFFFFFFFFE 4380001F80000000_01
-FFFFFFFFFFFF4300 C0E7A00000000000_00
-0008000000000000 4320000000000000_00
-4000000004002000 43D0000000010008_00
-C12EDF40F41F6021 C3CF68905F85F04F_01
-0010000000000000 4330000000000000_00
-FF9000000000001D C35BFFFFFFFFFFF8_01
-FFFFFFF83DE950F6 C21F085ABC280000_00
-0020000000000000 4340000000000000_00
-800003FFFFFC0000 C3DFFFFF00000100_00
-FE2B59CB3A604D69 C37D4A634C59FB29_01
-0040000000000000 4350000000000000_00
-7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFF0_01
-000000A37C210862 42646F84210C4000_00
-0080000000000000 4360000000000000_00
-0002000002000002 4300000010000010_00
-FFFFB65CD8617789 C2D268C9E7A21DC0_00
-0100000000000000 4370000000000000_00
-00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
-FFFFFFFFFFFFF01D C0AFC60000000000_00
-0200000000000000 4380000000000000_00
-1000008000003FFF 43B0000080000040_01
-000000000D098D19 41AA131A32000000_00
-0400000000000000 4390000000000000_00
-03FFFFFFFFFFF5FF 438FFFFFFFFFFFB0_01
-000006B3BD2C7BEF 429ACEF4B1EFBC00_00
-0800000000000000 43A0000000000000_00
-00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
-FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
-1000000000000000 43B0000000000000_00
-001FFFC000000FFD 433FFFC000000FFD_00
-FFFFFFFFFFFFFF21 C06BE00000000000_00
-2000000000000000 43C0000000000000_00
-0000000041DFFFFF 41D077FFFFC00000_00
-FFFFFFFFFC648262 C18CDBECF0000000_00
-4000000000000000 43D0000000000000_00
-C0001FFFFFFFFFFB C3CFFFF000000000_01
-FFFFFF7353AC45D2 C261958A7745C000_00
-8000000000000000 C3E0000000000000_00
-FFFFFFFFFFE7EFFF C138100100000000_00
-0000000000A1202D 41642405A0000000_00
-C000000000000000 C3D0000000000000_00
-FFFFFFFFFFFF5F7F C0E4102000000000_00
-000000000040CA70 4150329C00000000_00
-E000000000000000 C3C0000000000000_00
-0000200201FFFFFE 42C00100FFFFFF00_00
-00000003B55D87D4 420DAAEC3EA00000_00
-F000000000000000 C3B0000000000000_00
-FF80000DFFFFFFFF C35FFFFC80000000_01
-000000010510FAEF 41F0510FAEF00000_00
-F800000000000000 C3A0000000000000_00
-0003FFF00000000F 430FFF8000000078_00
-000000000000724A 40DC928000000000_00
-FC00000000000000 C390000000000000_00
-FFFFFFDF80000002 C2403FFFFFFF0000_00
-0000000000000064 4059000000000000_00
-FE00000000000000 C380000000000000_00
-FEFFFFFFFFF800FE C370000000007FF0_01
-FFFFFFC2C6222702 C24E9CEEEC7F0000_00
-FF00000000000000 C370000000000000_00
-0000000408000002 4210200000080000_00
-000000E96DF1CB41 426D2DBE39682000_00
-FF80000000000000 C360000000000000_00
-007FFFFFFFFFF9FE 435FFFFFFFFFFE80_01
-F727F174DEE7DC85 C3A1B01D16423046_01
-FFC0000000000000 C350000000000000_00
-8000000003FFFEFE C3DFFFFFFFFF0000_01
-FFFFFFFFFFF0BD5B C12E854A00000000_00
-FFE0000000000000 C340000000000000_00
-0BEFFFFFFFFFFFFF 43A7E00000000000_01
-000000000002790C 4103C86000000000_00
-FFF0000000000000 C330000000000000_00
-FFFFFFFFFFEFFBFA C130040600000000_00
-000000169E75DF01 42369E75DF010000_00
-FFF8000000000000 C320000000000000_00
-00000007FEFFDFFF 421FFBFF7FFC0000_00
-000000000000000E 402C000000000000_00
-FFFC000000000000 C310000000000000_00
-0003FFFE0007FFFE 430FFFF0003FFFF0_00
-FFFFFFFFFFF28622 C12AF3BC00000000_00
-FFFE000000000000 C300000000000000_00
-FFFFFF7FFFFDF7FF C260000041002000_00
-00072F0EC496FE21 431CBC3B125BF884_00
-FFFF000000000000 C2F0000000000000_00
-DFBFFFFFFFFFFFFE C3C0200000000000_01
-0000000000FC1FCA 416F83F940000000_00
-FFFF800000000000 C2E0000000000000_00
-00000FFF800FFFFE 42AFFF001FFFFC00_00
-FFFF5194E4A9C2CE C2E5CD636AC7A640_00
-FFFFC00000000000 C2D0000000000000_00
-00000002100007FD 420080003FE80000_00
-FFFFFFFFFFC2D8FE C14E938100000000_00
-FFFFE00000000000 C2C0000000000000_00
-000000000007FF6E 411FFDB800000000_00
-000000000001766E 40F766E000000000_00
-FFFFF00000000000 C2B0000000000000_00
-0040000400000002 4350000100000001_01
-0000000000007841 40DE104000000000_00
-FFFFF80000000000 C2A0000000000000_00
-3DFFFFFFFFFFFF7E 43CF000000000000_01
-FFFFFFE549E17E30 C23AB61E81D00000_00
-FFFFFC0000000000 C290000000000000_00
-FFFFFFFFFFFFFEE1 C071F00000000000_00
-FFFFFFFFFFFFFFE7 C039000000000000_00
-FFFFFE0000000000 C280000000000000_00
-000000000EFFFFDF 41ADFFFFBE000000_00
-FFFFFFFFFFFFFF73 C061A00000000000_00
-FFFFFF0000000000 C270000000000000_00
-FD00000008000000 C387FFFFFFC00000_00
-000000000001DBB1 40FDBB1000000000_00
-FFFFFF8000000000 C260000000000000_00
-FFFFFFFFFFF8007F C11FFE0400000000_00
-FFFFFFFEFD10A515 C1F02EF5AEB00000_00
-FFFFFFC000000000 C250000000000000_00
-FFEFFFFFFFFFFFFE C330000000000002_00
-FAB02984F6283B6C C3953F59EC275F12_01
-FFFFFFE000000000 C240000000000000_00
-FFFFFFBC000001FE C250FFFFFF808000_00
-FEB087C6B9FE7FE0 C374F78394601802_00
-FFFFFFF000000000 C230000000000000_00
-FFF80001000007FE C31FFFFBFFFFE008_00
-00F2762EA6837956 436E4EC5D4D06F2B_01
-FFFFFFF800000000 C220000000000000_00
-FFF7E0FFFFFFFFFE C3203E0000000004_00
-00002E1175484626 42C708BAA4231300_00
-FFFFFFFC00000000 C210000000000000_00
-0000200020000FFE 42C000100007FF00_00
-000000000000068F 409A3C0000000000_00
-FFFFFFFE00000000 C200000000000000_00
-021FFFFFFFFBFFFF 4380FFFFFFFFE000_01
-FFFFFFFFFFFFFFF9 C01C000000000000_00
-FFFFFFFF00000000 C1F0000000000000_00
-FFFFFFD0000FFFFD C247FFF800018000_00
-000000BDF6658B83 4267BECCB1706000_00
-FFFFFFFF80000000 C1E0000000000000_00
-1000001FFDFFFFFF 43B000001FFE0000_01
-0000000000003B5B 40CDAD8000000000_00
-FFFFFFFFC0000000 C1D0000000000000_00
-FFFFFFBFFE0FFFFF C250007C00004000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-FFFFFFFFE0000000 C1C0000000000000_00
-FFFFFFFBF00007FF C2103FFFE0040000_00
-01E986274F48EAAD 437E986274F48EAB_01
-FFFFFFFFF0000000 C1B0000000000000_00
-1FFFFFFDFFFFFF7F 43BFFFFFFE000000_01
-FFFFFFFFFFFFCB5A C0CA530000000000_00
-FFFFFFFFF8000000 C1A0000000000000_00
-7FF000000000FFFF 43DFFC0000000040_01
-00000003C2717FC3 420E138BFE180000_00
-FFFFFFFFFC000000 C190000000000000_00
-FFFFFFE00008001F C23FFFF7FFE10000_00
-FFFFFFFFFFEFABDA C130542600000000_00
-FFFFFFFFFE000000 C180000000000000_00
-0200000000000002 4380000000000001_01
-FFFFFFFFF8FDA53F C19C096B04000000_00
-FFFFFFFFFF000000 C170000000000000_00
-F6000003FFFFFFFE C3A3FFFFF8000000_01
-FFFFFFFFFFFFFFD0 C048000000000000_00
-FFFFFFFFFF800000 C160000000000000_00
-FFFFFFFFFFBFFF7E C150002080000000_00
-00000000EE0FEA62 41EDC1FD4C400000_00
-FFFFFFFFFFC00000 C150000000000000_00
-0000007FFF9FFFFD 425FFFE7FFFF4000_00
-00000037F35EDC1D 424BF9AF6E0E8000_00
-FFFFFFFFFFE00000 C140000000000000_00
-FFFFFFF7FDFFFF7D C220040001060000_00
-00000000000001AD 407AD00000000000_00
-FFFFFFFFFFF00000 C130000000000000_00
-FFFFFF0000100020 C26FFFFDFFFC0000_00
-27F167FBC7FC5F9A 43C3F8B3FDE3FE30_01
-FFFFFFFFFFF80000 C120000000000000_00
-003FFFFFFFFC0001 434FFFFFFFFE0001_01
-000E48F9F4EBD30E 432C91F3E9D7A61C_00
-FFFFFFFFFFFC0000 C110000000000000_00
-DFFFFFFFFFFBFFFE C3C0000000000200_01
-FC91C23EE8C9424F C38B71EE08B9B5ED_01
-FFFFFFFFFFFE0000 C100000000000000_00
-F7DFFBFFFFFFFFFE C3A0400800000000_01
-000000002CAE080C 41C6570406000000_00
-FFFFFFFFFFFF0000 C0F0000000000000_00
-FFFFC00010000020 C2CFFFF7FFFFF000_00
-04D921F917B20E40 43936487E45EC839_00
-FFFFFFFFFFFF8000 C0E0000000000000_00
-F8000FFFFFFFFFFD C39FFFC000000000_01
-FFF17C566BC7D811 C32D075328704FDE_00
-FFFFFFFFFFFFC000 C0D0000000000000_00
-00000000000000FE 406FC00000000000_00
-FFF82AC14930D386 C31F54FADB3CB1E8_00
-FFFFFFFFFFFFE000 C0C0000000000000_00
-00000000000003FC 408FE00000000000_00
-000E62EC60E119FC 432CC5D8C1C233F8_00
-FFFFFFFFFFFFF000 C0B0000000000000_00
-FFFFEFF7FF7FFFFE C2B0080080000200_00
-0E2B1ECF210EEDC5 43AC563D9E421DDC_01
-FFFFFFFFFFFFF800 C0A0000000000000_00
-00000000007FFF1F 415FFFC7C0000000_00
-FFFFFE534F5676F7 C27ACB0A98909000_00
-FFFFFFFFFFFFFC00 C090000000000000_00
-0000001004FFFFFD 423004FFFFFD0000_00
-0000035C939669F1 428AE49CB34F8800_00
-FFFFFFFFFFFFFE00 C080000000000000_00
-1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFE_01
-FFFFFFFFFFFFFF91 C05BC00000000000_00
-FFFFFFFFFFFFFF00 C070000000000000_00
-01FFFFFFFBFFEFFE 437FFFFFFFBFFF00_01
-000000000000016E 4076E00000000000_00
-FFFFFFFFFFFFFF80 C060000000000000_00
-FFF7FFFFFFFFF7FD C320000000001006_00
-FFFFF8E2BCFAC553 C29C750C14EAB400_00
-FFFFFFFFFFFFFFC0 C050000000000000_00
-FFFFFBFFFFFE0FFE C290000007C00800_00
-00000001A4E704BF 41FA4E704BF00000_00
-FFFFFFFFFFFFFFE0 C040000000000000_00
-1400007FFFFFFFFD 43B4000080000000_01
-FFFFFFFC93B187B4 C20B6273C2600000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-40000000007FFFFD 43D0000000002000_01
-000000000067D468 4159F51A00000000_00
-FFFFFFFFFFFFFFF8 C020000000000000_00
-007FFEFFFFFBFFFE 435FFFBFFFFF0000_01
-FFFFFFE26CEC79F8 C23D931386080000_00
-FFFFFFFFFFFFFFFC C010000000000000_00
-00FFFFFF000000FF 436FFFFFE0000020_01
-FFFFFFFFE0D3983A C1BF2C67C6000000_00
-FFFFFFFFFFFFFFFE C000000000000000_00
-00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
-FFFFFFFDF4A7088A C2005AC7BBB00000_00
-FFFFFFFFFFFFFFFF BFF0000000000000_00
-000008000000027E 42A000000004FC00_00
-000000000000F4E8 40EE9D0000000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFF83FFDF C15F000840000000_00
-00000E11407887B2 42AC2280F10F6400_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-04000003FFFFFFF6 4390000010000000_01
-0000000000000513 40944C0000000000_00
-FFFFFFFFFFFFFFF7 C022000000000000_00
-BFFC00000000003E C3D000FFFFFFFFFF_01
-00000008D7BBB75B 4221AF776EB60000_00
-FFFFFFFFFFFFFFEF C031000000000000_00
-000FFFFBFFFC0000 432FFFF7FFF80000_00
-FFFFFFFFFFCD5A23 C14952EE80000000_00
-FFFFFFFFFFFFFFDF C040800000000000_00
-FFBFDFFFBFFFFFFF C350080010000000_01
-000000000000007F 405FC00000000000_00
-FFFFFFFFFFFFFFBF C050400000000000_00
-00000007FF800003 421FFE00000C0000_00
-000000000002BB02 4105D81000000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEE7FF C0F1801000000000_00
-00264B2B9BAD0DA2 43432595CDD686D1_00
-FFFFFFFFFFFFFEFF C070100000000000_00
-0000000000100803 4130080300000000_00
-FF9B1DCB9F857D5E C359388D181EA0A8_01
-FFFFFFFFFFFFFDFF C080080000000000_00
-FFFFFFBFFFFFEFEE C250000004048000_00
-F6FD7542899C1C6F C3A205157AECC7C7_01
-FFFFFFFFFFFFFBFF C090040000000000_00
-FF800000004001FF C35FFFFFFFEFFF80_01
-0000000002BE4932 4185F24990000000_00
-FFFFFFFFFFFFF7FF C0A0020000000000_00
-00001004000FFFFE 42B004000FFFFE00_00
-FFFFFF9DAA0123E0 C258957FB7080000_00
-FFFFFFFFFFFFEFFF C0B0010000000000_00
-00000001FDFFFDFE 41FFDFFFDFE00000_00
-FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
-FFFFFFFFFFFFDFFF C0C0008000000000_00
-FE0FE00000000000 C37F020000000000_00
-0779ED944A4E2779 439DE7B65129389E_01
-FFFFFFFFFFFFBFFF C0D0004000000000_00
-FBFFFE0400000000 C3900007F0000000_00
-0000010127E03666 4270127E03666000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-FFFFF0200000FFFE C2AFBFFFFE000400_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEFFFF C0F0001000000000_00
-FFEFFE0000080000 C33001FFFFF80000_00
-FFFFFFFFFD3354EA C1866558B0000000_00
-FFFFFFFFFFFDFFFF C100000800000000_00
-003FF0000003FFFE 434FF8000001FFFF_00
-0000006375B23F7B 4258DD6C8FDEC000_00
-FFFFFFFFFFFBFFFF C110000400000000_00
-000407FFFFFFFFF6 43101FFFFFFFFFD8_00
-0000000092117F38 41E2422FE7000000_00
-FFFFFFFFFFF7FFFF C120000200000000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-00000000000008BE 40A17C0000000000_00
-FFFFFFFFFFEFFFFF C130000100000000_00
-004000020FFFFFFF 4350000084000000_01
-FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
-FFFFFFFFFFDFFFFF C140000080000000_00
-00FFFFFFFFFFFFFD 4370000000000000_01
-00000023C2C6F284 4241E16379420000_00
-FFFFFFFFFFBFFFFF C150000040000000_00
-FFFDDFFFFFFFFFFD C301000000000018_00
-00000000746356C4 41DD18D5B1000000_00
-FFFFFFFFFF7FFFFF C160000020000000_00
-010000000000BFFF 4370000000000C00_01
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFEFFFFFF C170000010000000_00
-FFFFBF7FFBFFFFFE C2D0200100000080_00
-00000006386CE889 4218E1B3A2240000_00
-FFFFFFFFFDFFFFFF C180000008000000_00
-F00000F7FFFFFFFF C3AFFFFE10000000_01
-FFFDFC53090C46A4 C3001D67B79DCAE0_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-0000000000800047 41600008E0000000_00
-FFFFFFFFD693872E C1C4B63C69000000_00
-FFFFFFFFF7FFFFFF C1A0000002000000_00
-000000007FBFFBFF 41DFEFFEFFC00000_00
-00000026A7845E35 424353C22F1A8000_00
-FFFFFFFFEFFFFFFF C1B0000001000000_00
-FFFFFFDFFFFFFBFD C240000002018000_00
-000000001433D14C 41B433D14C000000_00
-FFFFFFFFDFFFFFFF C1C0000000800000_00
-0001FFFFFFE0000E 42FFFFFFFE0000E0_00
-F0F23E8068D3D84A C3AE1B82FF2E584F_01
-FFFFFFFFBFFFFFFF C1D0000000400000_00
-F7FFBFFFFFFFBFFF C3A0008000000080_01
-FFFFBD29B7459087 C2D0B5922E9BDE40_00
-FFFFFFFF7FFFFFFF C1E0000000200000_00
-FFFFFFF8FFFFBFFF C21C000100040000_00
-FFFFFFFFFFEDDC06 C13223FA00000000_00
-FFFFFFFEFFFFFFFF C1F0000000100000_00
-FFFFFFF80001FFFF C21FFFF800040000_00
-0000000000002FF9 40C7FC8000000000_00
-FFFFFFFDFFFFFFFF C200000000080000_00
-004000040000FFFF 4350000100004000_01
-FFFFFFFFFFFFFFF1 C02E000000000000_00
-FFFFFFFBFFFFFFFF C210000000040000_00
-C0000000007FFFFA C3CFFFFFFFFFC000_01
-FFFFFFFFFE053E2B C17FAC1D50000000_00
-FFFFFFF7FFFFFFFF C220000000020000_00
-7FFE000007FFFFFF 43DFFF8000020000_01
-000000000000000D 402A000000000000_00
-FFFFFFEFFFFFFFFF C230000000010000_00
-F80000000001007E C39FFFFFFFFFFBFE_01
-FFFFED48424AD9D6 C2B2B7BDB5262A00_00
-FFFFFFDFFFFFFFFF C240000000008000_00
-FFFFFE0001FEFFFF C27FFFE010001000_00
-000000000000013B 4073B00000000000_00
-FFFFFFBFFFFFFFFF C250000000004000_00
-0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
-4A16BD4128090C83 43D285AF504A0244_01
-FFFFFF7FFFFFFFFF C260000000002000_00
-00FFF7FFFF7FFFFE 436FFEFFFFF00000_01
-0000000000000006 4018000000000000_00
-FFFFFEFFFFFFFFFF C270000000001000_00
-FBFFFFBFFFBFFFFF C390000100010000_01
-00000000000001BA 407BA00000000000_00
-FFFFFDFFFFFFFFFF C280000000000800_00
-0000000040000082 41D0000020800000_00
-FF07A2BF5B689F89 C36F0BA81492EC0E_01
-FFFFFBFFFFFFFFFF C290000000000400_00
-0000001FF8000008 423FF80000080000_00
-F87CAA7DE672DE8B C39E0D5608663485_01
-FFFFF7FFFFFFFFFF C2A0000000000200_00
-07FFF80000000002 439FFFE000000001_01
-0000000010A1E5B8 41B0A1E5B8000000_00
-FFFFEFFFFFFFFFFF C2B0000000000100_00
-F7FFFFE00007FFFF C3A000003FFFF000_01
-FFFFFFFFFFF6ADFC C122A40800000000_00
-FFFFDFFFFFFFFFFF C2C0000000000080_00
-FFFFFF03FFFFFFC0 C26F800000080000_00
-EA579475948F0032 C3B5A86B8A6B70FF_01
-FFFFBFFFFFFFFFFF C2D0000000000040_00
-FC00000000003FF6 C38FFFFFFFFFFE00_01
-002E677AC313BF60 434733BD6189DFB0_00
-FFFF7FFFFFFFFFFF C2E0000000000020_00
-02000007FF7FFFFF 438000003FFC0000_01
-0000000E999639F1 422D332C73E20000_00
-FFFEFFFFFFFFFFFF C2F0000000000010_00
-FFFF83FFFFFFFFBE C2DF000000001080_00
-000000000001537D 40F537D000000000_00
-FFFDFFFFFFFFFFFF C300000000000008_00
-EFFFFFC00000003D C3B000003FFFFFFF_01
-FFFFFFF21FEDFD35 C22BC02405960000_00
-FFFBFFFFFFFFFFFF C310000000000004_00
-FFFFFFF0000007FE C22FFFFFF0040000_00
-FFFFFFFFFFDE0839 C140FBE380000000_00
-FFF7FFFFFFFFFFFF C320000000000002_00
-0000007FFFE000FF 425FFFF8003FC000_00
-FFFFFFFF79F30F48 C1E0C19E17000000_00
-FFEFFFFFFFFFFFFF C330000000000001_00
-FFFFFC13FFFFFFFD C28F600000001800_00
-0000000000001B85 40BB850000000000_00
-FFDFFFFFFFFFFFFF C340000000000000_01
-000008000007FFFE 42A000000FFFFC00_00
-12DB4409E5AE87E6 43B2DB4409E5AE88_01
-FFBFFFFFFFFFFFFF C350000000000000_01
-FFFFFFFFFFF7BFEE C120802400000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FF7FFFFFFFFFFFFF C360000000000000_01
-000000001040FFFE 41B040FFFE000000_00
-00000909A09C13D3 42A213413827A600_00
-FEFFFFFFFFFFFFFF C370000000000000_01
-FFFFFF01FFFFFF7F C26FC00000102000_00
-FFFFFF72E7D2575D C261A305B5146000_00
-FDFFFFFFFFFFFFFF C380000000000000_01
-FFFFFFFFFFFEFFDB C0F0025000000000_00
-0000000000000017 4037000000000000_00
-FBFFFFFFFFFFFFFF C390000000000000_01
-100000001FFFFFF6 43B0000000200000_01
-000000114B12EF51 42314B12EF510000_00
-F7FFFFFFFFFFFFFF C3A0000000000000_01
-0407FFFFFFFFFEFF 43901FFFFFFFFFFC_01
-FFFFFF769F3A5C2C C2612C18B47A8000_00
-EFFFFFFFFFFFFFFF C3B0000000000000_01
-FFFFFFFDF7FFFFFD C200400000180000_00
-FFFFFFFFFFFFFFF2 C02C000000000000_00
-DFFFFFFFFFFFFFFF C3C0000000000000_01
-FFFFFFFFFE0007FF C17FFF8010000000_00
-000000000000001E 403E000000000000_00
-BFFFFFFFFFFFFFFF C3D0000000000000_01
-FFF800000009FFFF C31FFFFFFFD80004_00
-0000000000007AA4 40DEA90000000000_00
-7FFFFFFFFFFFFFFF 43E0000000000000_01
-4080000000FFFFFF 43D0200000004000_01
-000000000DE7601D 41ABCEC03A000000_00
-3FFFFFFFFFFFFFFF 43D0000000000000_01
-FFCFFFFFFFBFFFFE C348000000200001_00
-FFFFFFFFFFFFFFCA C04B000000000000_00
-1FFFFFFFFFFFFFFF 43C0000000000000_01
-000080400000003F 42E00800000007E0_00
-00000000001F75A5 413F75A500000000_00
-0FFFFFFFFFFFFFFF 43B0000000000000_01
-FFFFFFEFFFFFCFFE C230000030020000_00
-FFFFFEE775887420 C27188A778BE0000_00
-07FFFFFFFFFFFFFF 43A0000000000000_01
-00000000000801FE 412003FC00000000_00
-0000000000213FF1 41409FF880000000_00
-03FFFFFFFFFFFFFF 4390000000000000_01
-07FEFFFFFFFFFFEE 439FFC0000000000_01
-0000000000000004 4010000000000000_00
-01FFFFFFFFFFFFFF 4380000000000000_01
-0000000820000003 4220400000060000_00
-FFFFFFF9AD105214 C2194BBEB7B00000_00
-00FFFFFFFFFFFFFF 4370000000000000_01
-FFFFF00FFFFFFFBE C2AFE00000008400_00
-FFFFFFFFFFCC48E7 C149DB8C80000000_00
-007FFFFFFFFFFFFF 4360000000000000_01
-00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
-FFFFFFFFFF0BA6CB C16E8B26A0000000_00
-003FFFFFFFFFFFFF 4350000000000000_01
-FFFFFF7FBFFFFFBF C260080000082000_00
-FFFFFFFFFFF24425 C12B77B600000000_00
-001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
-200000001FFBFFFF 43C00000000FFE00_01
-FFFFFF4E7115EC53 C26631DD4275A000_00
-000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
-FFFFF803FFFFFFBF C29FF00000010400_00
-FFFFFC2E539ADCFE C28E8D6329181000_00
-0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-00000055084732F3 42554211CCBCC000_00
-0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
-BFFF7FFFFFFFFE00 C3D0002000000000_01
-FFFFFFFFFFFF8543 C0DEAF4000000000_00
-0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
-0000001FFBFFE000 423FFBFFE0000000_00
-FFFFFFFFFFFE491B C0FB6E5000000000_00
-0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
-FC00200000001FFE C38FFEFFFFFFFF00_01
-FFFFF16898822A24 C2AD2ECEFBABB800_00
-00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
-3FFF03FFFFFFFFFE 43CFFF8200000000_01
-FFFFFF8FFE18C7BF C25C0079CE104000_00
-00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
-FFFFFEFFFEFFFFFD C270001000003000_00
-00F03620C1266ED9 436E06C41824CDDC_01
-00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
-BF7EFFFFFFFFFFFF C3D0204000000000_01
-FFFFFFFFFFFFFFD5 C045800000000000_00
-00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
-FFFBFFFFF803FFFE C31000001FF00008_00
-0000000000068684 411A1A1000000000_00
-000007FFFFFFFFFF 429FFFFFFFFFFC00_00
-DFFFFFE00000001E C3C000000FFFFFFF_01
-FFFFFFFFFFFFECF5 C0B30B0000000000_00
-000003FFFFFFFFFF 428FFFFFFFFFF800_00
-FFFF00400000FFFF C2EFF7FFFFE00020_00
-0000000000000002 4000000000000000_00
-000001FFFFFFFFFF 427FFFFFFFFFF000_00
-FBFFFFFFFFFFBDFE C390000000000108_01
-0000000000000BC9 40A7920000000000_00
-000000FFFFFFFFFF 426FFFFFFFFFE000_00
-807FFFFFFFFFDFFE C3DFE00000000008_01
-FFC274E35A70CD76 C34EC58E52C79945_00
-0000007FFFFFFFFF 425FFFFFFFFFC000_00
-0FFFFFFFFEFFFFFD 43AFFFFFFFFE0000_01
-FFFFFFFF00E73AFC C1EFE318A0800000_00
-0000003FFFFFFFFF 424FFFFFFFFF8000_00
-FFC000000001000E C34FFFFFFFFF7FF9_00
-FFFFFFFFFFFE15E9 C0FEA17000000000_00
-0000001FFFFFFFFF 423FFFFFFFFF0000_00
-0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
-0000000000000033 4049800000000000_00
-0000000FFFFFFFFF 422FFFFFFFFE0000_00
-000000001FFFBFFF 41BFFFBFFF000000_00
-FFFFFFEE6B141E1B C23194EBE1E50000_00
-00000007FFFFFFFF 421FFFFFFFFC0000_00
-FFFFFFFFF60007FF C1A3FFF002000000_00
-00000001AB310BA6 41FAB310BA600000_00
-00000003FFFFFFFF 420FFFFFFFF80000_00
-0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
-FFFFFFFFFFFFF195 C0ACD60000000000_00
-00000001FFFFFFFF 41FFFFFFFFF00000_00
-FFFFFFFF8000000B C1DFFFFFFD400000_00
-00000019BA8D5559 4239BA8D55590000_00
-00000000FFFFFFFF 41EFFFFFFFE00000_00
-FBFEFFFFFFFFFFF9 C390040000000000_01
-FFFFFFB6F062822D C25243E75F74C000_00
-000000007FFFFFFF 41DFFFFFFFC00000_00
-0001000000000082 42F0000000000820_00
-01CEAD9E2FB104A4 437CEAD9E2FB104B_01
-000000003FFFFFFF 41CFFFFFFF800000_00
-000003FFFFFFFF7C 428FFFFFFFFBE000_00
-FFFFFFFFFD681E78 C184BF0C40000000_00
-000000001FFFFFFF 41BFFFFFFF000000_00
-00002000400001FF 42C000200000FF80_00
-0000000000000018 4038000000000000_00
-000000000FFFFFFF 41AFFFFFFE000000_00
-3FFF80000000003E 43CFFFC000000001_01
-FFFFFFFFFFFFFF95 C05AC00000000000_00
-0000000007FFFFFF 419FFFFFFC000000_00
-010000BFFFFFFFFF 4370000C00000000_01
-0000001697087B19 423697087B190000_00
-0000000003FFFFFF 418FFFFFF8000000_00
-FBFFFFFFFFEEFFFD C390000000004400_01
-0000000E64BDFC55 422CC97BF8AA0000_00
-0000000001FFFFFF 417FFFFFF0000000_00
-FC00000001FFFFFE C38FFFFFFFF00000_01
-FFFED156A62AB849 C2F2EA959D547B70_00
-0000000000FFFFFF 416FFFFFE0000000_00
-FFFFFFF83FEFFFFD C21F0040000C0000_00
-00015354EAE7C259 42F5354EAE7C2590_00
-00000000007FFFFF 415FFFFFC0000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFF0F4DF3C75 C22E164187160000_00
-00000000003FFFFF 414FFFFF80000000_00
-FFFA000000001FFF C317FFFFFFFF8004_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000001FFFFF 413FFFFF00000000_00
-FFFFFFFFFF7FFE40 C160003800000000_00
-FFFFFFDB5433CB9B C24255E61A328000_00
-00000000000FFFFF 412FFFFE00000000_00
-FFFFFDFFDFFDFFFD C280010010001800_00
-FFFFFFFFFFDEAE1F C140A8F080000000_00
-000000000007FFFF 411FFFFC00000000_00
-FFFFFFFFF0080006 C1AFEFFFF4000000_00
-FFFFFFFE7735DEC7 C1F88CA213900000_00
-000000000003FFFF 410FFFF800000000_00
-00000001FBFFFFFF 41FFBFFFFFF00000_00
-000003757D8B12ED 428BABEC58976800_00
-000000000001FFFF 40FFFFF000000000_00
-FFFFFE07F7FFFFFF C27F808000001000_00
-00000A654064E046 42A4CA80C9C08C00_00
-000000000000FFFF 40EFFFE000000000_00
-08000000000017FF 43A0000000000030_01
-FFFFFFFFFFFFFFE7 C039000000000000_00
-0000000000007FFF 40DFFFC000000000_00
-07FFFFFFFFFFFDF6 439FFFFFFFFFFFF8_01
-FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
-0000000000003FFF 40CFFF8000000000_00
-0000300004000000 42C8000200000000_00
-FFFFFFF70B77F34F C221E91019620000_00
-0000000000001FFF 40BFFF0000000000_00
-FFFFFF80006FFFFE C25FFFE400008000_00
-0000013EB4D67EC8 4273EB4D67EC8000_00
-0000000000000FFF 40AFFE0000000000_00
-BFFFDFFFFBFFFFFF C3D0000800010000_01
-0005CEAF34EA1DC7 43173ABCD3A8771C_00
-00000000000007FF 409FFC0000000000_00
-00004800007FFFFD 42D200001FFFFF40_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000000003FF 408FF80000000000_00
-0000000200001000 4200000080000000_00
-00000000000360D0 410B068000000000_00
-00000000000001FF 407FF00000000000_00
-01003FFFFFFFFFFC 4370040000000000_01
-00C000708FF1BA51 4368000E11FE374B_01
-00000000000000FF 406FE00000000000_00
-F802000003FFFFFF C39FF7FFFFF00000_01
-0F9E07DCC0BDC061 43AF3C0FB9817B81_01
-000000000000007F 405FC00000000000_00
-03FF0000000000FF 438FF80000000008_01
-FFFFFFE1B9B2A079 C23E464D5F870000_00
-000000000000003F 404F800000000000_00
-FFF80000000080FF C31FFFFFFFFDFC04_00
-00000000001EB5B4 413EB5B400000000_00
-000000000000001F 403F000000000000_00
-000000000077FBFE 415DFEFF80000000_00
-00000000005AC607 4156B181C0000000_00
-000000000000000F 402E000000000000_00
-FFFFFFFEF80000FF C1F07FFFF0100000_00
-000005C5B9D66984 429716E759A61000_00
-0000000000000007 401C000000000000_00
-C001FFFFFFF00000 C3CFFF0000000800_00
-00001D06B372AA06 42BD06B372AA0600_00
-0000000000000003 4008000000000000_00
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFE_01
+0000000032CC8B7A_41C96645BD000000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_C1CFFFE001000000_00
+032C857F319EDE38_4389642BF98CF6F2_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_C29000001FFF0800_00
+00394C79B6D3007B_434CA63CDB69803E_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_C39000003FFFFFF8_01
+0000000001AE458D_417AE458D0000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+F9EB456140D88764_C39852EA7AFC9DE2_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_C2BBFF0000000200_00
+07DE834A248EDF36_439F7A0D28923B7D_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+FFFFFFFFFFE385E2_C13C7A1E00000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_C3AFF7C000000000_01
+000000059EB1FD45_42167AC7F5140000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_C108003800000000_00
+FFFFFFFFFFFEDDFE_C0F2202000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000000C89FF56B_41E913FEAD600000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0_43BB5E4F0BE0DEC0_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_C3003FE000000008_00
+FFFFFFFFFFF4766B_C127132A00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000000C_4028000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+FFE662A109109D0A_C3399D5EF6EF62F6_00
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4_C03C000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_C39FFBFFFFFFC000_00
+FE114B79075F70EE_C37EEB486F8A08F1_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000101_01
+00000000000003AC_408D600000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+00000044A3A3DBE5_425128E8F6F94000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_C33FFFC100000001_00
+FFFFFFFFFFFF1A91_C0ECADE000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_C2A0780000000600_00
+0000000000003309_40C9848000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58_C065000000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_C240FF0000010000_00
+0000000000002980_40C4C00000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+000000000000005D_4057400000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8_C30B9EE12E98A940_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C_C280E1F109DE2000_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_C2EFFFFE80000060_00
+000000000030FFBE_41487FDF00000000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_C2FFFFFF80010030_00
+FFFFFFFFEFDEED86_C1B021127A000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_C3A8000000008000_01
+000000001DA3FF45_41BDA3FF45000000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54_C1F64E434AC00000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+F27DD19DE6563714_C3AB045CC4335391_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_C34FFFFFFFDFFC01_00
+000000000001A359_40FA359000000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+FFFFFFFFFE62EC20_C179D13E00000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000285F_40C42F8000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_C1D00003FC400000_00
+FFFFF836F99DBAA8_C29F241989156000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0033466832042D47_4349A334190216A4_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_C09DE40000000000_00
+00000000003829C8_414C14E400000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000000FB77C672B_422F6EF8CE560000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFC000000_01
+0000000000001B78_40BB780000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_C360000000020400_01
+0000000000000071_405C400000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86_C05E800000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+FFF8A60D9E19F17E_C31D67C987983A08_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+FFFFFFFFF7506DBA_C1A15F248C000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_C0F0409000000000_00
+FFFFFFFFFEA42AC9_C175BD5370000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89_C33855C0D4253377_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9_C3004BF1099291B8_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_C2700001FFF81000_00
+FFFFFFFFFFFFCFBE_C0C8210000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+FEC01FECA24DE1B0_C373FE0135DB21E5_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_C3A0000000400100_01
+F858A66761669936_C39E9D66627A659B_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_C2F007FFFFFFFC20_00
+F716EA43FAC45C97_C3A1D22B780A7746_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_C04D000000000000_00
+0024D70EC7661FD8_43426B8763B30FEC_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_C3CFC00000000000_01
+FFD956DBD0AEE817_C343549217A88BF4_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F80000000_01
+FFFFFFFFFFFF4300_C0E7A00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+C12EDF40F41F6021_C3CF68905F85F04F_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_C35BFFFFFFFFFFF8_01
+FFFFFFF83DE950F6_C21F085ABC280000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_C3DFFFFF00000100_00
+FE2B59CB3A604D69_C37D4A634C59FB29_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFF0_01
+000000A37C210862_42646F84210C4000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+FFFFB65CD8617789_C2D268C9E7A21DC0_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D_C0AFC60000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B0000080000040_01
+000000000D098D19_41AA131A32000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFB0_01
+000006B3BD2C7BEF_429ACEF4B1EFBC00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8_C2E634A444AB6B00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+FFFFFFFFFFFFFF21_C06BE00000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+FFFFFFFFFC648262_C18CDBECF0000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_C3CFFFF000000000_01
+FFFFFF7353AC45D2_C261958A7745C000_00
+8000000000000000_C3E0000000000000_00
+FFFFFFFFFFE7EFFF_C138100100000000_00
+0000000000A1202D_41642405A0000000_00
+C000000000000000_C3D0000000000000_00
+FFFFFFFFFFFF5F7F_C0E4102000000000_00
+000000000040CA70_4150329C00000000_00
+E000000000000000_C3C0000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000003B55D87D4_420DAAEC3EA00000_00
+F000000000000000_C3B0000000000000_00
+FF80000DFFFFFFFF_C35FFFFC80000000_01
+000000010510FAEF_41F0510FAEF00000_00
+F800000000000000_C3A0000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000000724A_40DC928000000000_00
+FC00000000000000_C390000000000000_00
+FFFFFFDF80000002_C2403FFFFFFF0000_00
+0000000000000064_4059000000000000_00
+FE00000000000000_C380000000000000_00
+FEFFFFFFFFF800FE_C370000000007FF0_01
+FFFFFFC2C6222702_C24E9CEEEC7F0000_00
+FF00000000000000_C370000000000000_00
+0000000408000002_4210200000080000_00
+000000E96DF1CB41_426D2DBE39682000_00
+FF80000000000000_C360000000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE80_01
+F727F174DEE7DC85_C3A1B01D16423046_01
+FFC0000000000000_C350000000000000_00
+8000000003FFFEFE_C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B_C12E854A00000000_00
+FFE0000000000000_C340000000000000_00
+0BEFFFFFFFFFFFFF_43A7E00000000000_01
+000000000002790C_4103C86000000000_00
+FFF0000000000000_C330000000000000_00
+FFFFFFFFFFEFFBFA_C130040600000000_00
+000000169E75DF01_42369E75DF010000_00
+FFF8000000000000_C320000000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000000E_402C000000000000_00
+FFFC000000000000_C310000000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+FFFFFFFFFFF28622_C12AF3BC00000000_00
+FFFE000000000000_C300000000000000_00
+FFFFFF7FFFFDF7FF_C260000041002000_00
+00072F0EC496FE21_431CBC3B125BF884_00
+FFFF000000000000_C2F0000000000000_00
+DFBFFFFFFFFFFFFE_C3C0200000000000_01
+0000000000FC1FCA_416F83F940000000_00
+FFFF800000000000_C2E0000000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE_C2E5CD636AC7A640_00
+FFFFC00000000000_C2D0000000000000_00
+00000002100007FD_420080003FE80000_00
+FFFFFFFFFFC2D8FE_C14E938100000000_00
+FFFFE00000000000_C2C0000000000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000001766E_40F766E000000000_00
+FFFFF00000000000_C2B0000000000000_00
+0040000400000002_4350000100000001_01
+0000000000007841_40DE104000000000_00
+FFFFF80000000000_C2A0000000000000_00
+3DFFFFFFFFFFFF7E_43CF000000000000_01
+FFFFFFE549E17E30_C23AB61E81D00000_00
+FFFFFC0000000000_C290000000000000_00
+FFFFFFFFFFFFFEE1_C071F00000000000_00
+FFFFFFFFFFFFFFE7_C039000000000000_00
+FFFFFE0000000000_C280000000000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73_C061A00000000000_00
+FFFFFF0000000000_C270000000000000_00
+FD00000008000000_C387FFFFFFC00000_00
+000000000001DBB1_40FDBB1000000000_00
+FFFFFF8000000000_C260000000000000_00
+FFFFFFFFFFF8007F_C11FFE0400000000_00
+FFFFFFFEFD10A515_C1F02EF5AEB00000_00
+FFFFFFC000000000_C250000000000000_00
+FFEFFFFFFFFFFFFE_C330000000000002_00
+FAB02984F6283B6C_C3953F59EC275F12_01
+FFFFFFE000000000_C240000000000000_00
+FFFFFFBC000001FE_C250FFFFFF808000_00
+FEB087C6B9FE7FE0_C374F78394601802_00
+FFFFFFF000000000_C230000000000000_00
+FFF80001000007FE_C31FFFFBFFFFE008_00
+00F2762EA6837956_436E4EC5D4D06F2B_01
+FFFFFFF800000000_C220000000000000_00
+FFF7E0FFFFFFFFFE_C3203E0000000004_00
+00002E1175484626_42C708BAA4231300_00
+FFFFFFFC00000000_C210000000000000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000068F_409A3C0000000000_00
+FFFFFFFE00000000_C200000000000000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFE000_01
+FFFFFFFFFFFFFFF9_C01C000000000000_00
+FFFFFFFF00000000_C1F0000000000000_00
+FFFFFFD0000FFFFD_C247FFF800018000_00
+000000BDF6658B83_4267BECCB1706000_00
+FFFFFFFF80000000_C1E0000000000000_00
+1000001FFDFFFFFF_43B000001FFE0000_01
+0000000000003B5B_40CDAD8000000000_00
+FFFFFFFFC0000000_C1D0000000000000_00
+FFFFFFBFFE0FFFFF_C250007C00004000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+FFFFFFFFE0000000_C1C0000000000000_00
+FFFFFFFBF00007FF_C2103FFFE0040000_00
+01E986274F48EAAD_437E986274F48EAB_01
+FFFFFFFFF0000000_C1B0000000000000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFE000000_01
+FFFFFFFFFFFFCB5A_C0CA530000000000_00
+FFFFFFFFF8000000_C1A0000000000000_00
+7FF000000000FFFF_43DFFC0000000040_01
+00000003C2717FC3_420E138BFE180000_00
+FFFFFFFFFC000000_C190000000000000_00
+FFFFFFE00008001F_C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA_C130542600000000_00
+FFFFFFFFFE000000_C180000000000000_00
+0200000000000002_4380000000000001_01
+FFFFFFFFF8FDA53F_C19C096B04000000_00
+FFFFFFFFFF000000_C170000000000000_00
+F6000003FFFFFFFE_C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0_C048000000000000_00
+FFFFFFFFFF800000_C160000000000000_00
+FFFFFFFFFFBFFF7E_C150002080000000_00
+00000000EE0FEA62_41EDC1FD4C400000_00
+FFFFFFFFFFC00000_C150000000000000_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000037F35EDC1D_424BF9AF6E0E8000_00
+FFFFFFFFFFE00000_C140000000000000_00
+FFFFFFF7FDFFFF7D_C220040001060000_00
+00000000000001AD_407AD00000000000_00
+FFFFFFFFFFF00000_C130000000000000_00
+FFFFFF0000100020_C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A_43C3F8B3FDE3FE30_01
+FFFFFFFFFFF80000_C120000000000000_00
+003FFFFFFFFC0001_434FFFFFFFFE0001_01
+000E48F9F4EBD30E_432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000_C110000000000000_00
+DFFFFFFFFFFBFFFE_C3C0000000000200_01
+FC91C23EE8C9424F_C38B71EE08B9B5ED_01
+FFFFFFFFFFFE0000_C100000000000000_00
+F7DFFBFFFFFFFFFE_C3A0400800000000_01
+000000002CAE080C_41C6570406000000_00
+FFFFFFFFFFFF0000_C0F0000000000000_00
+FFFFC00010000020_C2CFFFF7FFFFF000_00
+04D921F917B20E40_43936487E45EC839_00
+FFFFFFFFFFFF8000_C0E0000000000000_00
+F8000FFFFFFFFFFD_C39FFFC000000000_01
+FFF17C566BC7D811_C32D075328704FDE_00
+FFFFFFFFFFFFC000_C0D0000000000000_00
+00000000000000FE_406FC00000000000_00
+FFF82AC14930D386_C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000_C0C0000000000000_00
+00000000000003FC_408FE00000000000_00
+000E62EC60E119FC_432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000_C0B0000000000000_00
+FFFFEFF7FF7FFFFE_C2B0080080000200_00
+0E2B1ECF210EEDC5_43AC563D9E421DDC_01
+FFFFFFFFFFFFF800_C0A0000000000000_00
+00000000007FFF1F_415FFFC7C0000000_00
+FFFFFE534F5676F7_C27ACB0A98909000_00
+FFFFFFFFFFFFFC00_C090000000000000_00
+0000001004FFFFFD_423004FFFFFD0000_00
+0000035C939669F1_428AE49CB34F8800_00
+FFFFFFFFFFFFFE00_C080000000000000_00
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFE_01
+FFFFFFFFFFFFFF91_C05BC00000000000_00
+FFFFFFFFFFFFFF00_C070000000000000_00
+01FFFFFFFBFFEFFE_437FFFFFFFBFFF00_01
+000000000000016E_4076E00000000000_00
+FFFFFFFFFFFFFF80_C060000000000000_00
+FFF7FFFFFFFFF7FD_C320000000001006_00
+FFFFF8E2BCFAC553_C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0_C050000000000000_00
+FFFFFBFFFFFE0FFE_C290000007C00800_00
+00000001A4E704BF_41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0_C040000000000000_00
+1400007FFFFFFFFD_43B4000080000000_01
+FFFFFFFC93B187B4_C20B6273C2600000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+40000000007FFFFD_43D0000000002000_01
+000000000067D468_4159F51A00000000_00
+FFFFFFFFFFFFFFF8_C020000000000000_00
+007FFEFFFFFBFFFE_435FFFBFFFFF0000_01
+FFFFFFE26CEC79F8_C23D931386080000_00
+FFFFFFFFFFFFFFFC_C010000000000000_00
+00FFFFFF000000FF_436FFFFFE0000020_01
+FFFFFFFFE0D3983A_C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE_C000000000000000_00
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A_C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF_BFF0000000000000_00
+000008000000027E_42A000000004FC00_00
+000000000000F4E8_40EE9D0000000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFF83FFDF_C15F000840000000_00
+00000E11407887B2_42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+04000003FFFFFFF6_4390000010000000_01
+0000000000000513_40944C0000000000_00
+FFFFFFFFFFFFFFF7_C022000000000000_00
+BFFC00000000003E_C3D000FFFFFFFFFF_01
+00000008D7BBB75B_4221AF776EB60000_00
+FFFFFFFFFFFFFFEF_C031000000000000_00
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23_C14952EE80000000_00
+FFFFFFFFFFFFFFDF_C040800000000000_00
+FFBFDFFFBFFFFFFF_C350080010000000_01
+000000000000007F_405FC00000000000_00
+FFFFFFFFFFFFFFBF_C050400000000000_00
+00000007FF800003_421FFE00000C0000_00
+000000000002BB02_4105D81000000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEE7FF_C0F1801000000000_00
+00264B2B9BAD0DA2_43432595CDD686D1_00
+FFFFFFFFFFFFFEFF_C070100000000000_00
+0000000000100803_4130080300000000_00
+FF9B1DCB9F857D5E_C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF_C080080000000000_00
+FFFFFFBFFFFFEFEE_C250000004048000_00
+F6FD7542899C1C6F_C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF_C090040000000000_00
+FF800000004001FF_C35FFFFFFFEFFF80_01
+0000000002BE4932_4185F24990000000_00
+FFFFFFFFFFFFF7FF_C0A0020000000000_00
+00001004000FFFFE_42B004000FFFFE00_00
+FFFFFF9DAA0123E0_C258957FB7080000_00
+FFFFFFFFFFFFEFFF_C0B0010000000000_00
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0_C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF_C0C0008000000000_00
+FE0FE00000000000_C37F020000000000_00
+0779ED944A4E2779_439DE7B65129389E_01
+FFFFFFFFFFFFBFFF_C0D0004000000000_00
+FBFFFE0400000000_C3900007F0000000_00
+0000010127E03666_4270127E03666000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+FFFFF0200000FFFE_C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEFFFF_C0F0001000000000_00
+FFEFFE0000080000_C33001FFFFF80000_00
+FFFFFFFFFD3354EA_C1866558B0000000_00
+FFFFFFFFFFFDFFFF_C100000800000000_00
+003FF0000003FFFE_434FF8000001FFFF_00
+0000006375B23F7B_4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF_C110000400000000_00
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000092117F38_41E2422FE7000000_00
+FFFFFFFFFFF7FFFF_C120000200000000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+00000000000008BE_40A17C0000000000_00
+FFFFFFFFFFEFFFFF_C130000100000000_00
+004000020FFFFFFF_4350000084000000_01
+FFFFB84C2D8BC9CB_C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF_C140000080000000_00
+00FFFFFFFFFFFFFD_4370000000000000_01
+00000023C2C6F284_4241E16379420000_00
+FFFFFFFFFFBFFFFF_C150000040000000_00
+FFFDDFFFFFFFFFFD_C301000000000018_00
+00000000746356C4_41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF_C160000020000000_00
+010000000000BFFF_4370000000000C00_01
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFEFFFFFF_C170000010000000_00
+FFFFBF7FFBFFFFFE_C2D0200100000080_00
+00000006386CE889_4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF_C180000008000000_00
+F00000F7FFFFFFFF_C3AFFFFE10000000_01
+FFFDFC53090C46A4_C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+0000000000800047_41600008E0000000_00
+FFFFFFFFD693872E_C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF_C1A0000002000000_00
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000026A7845E35_424353C22F1A8000_00
+FFFFFFFFEFFFFFFF_C1B0000001000000_00
+FFFFFFDFFFFFFBFD_C240000002018000_00
+000000001433D14C_41B433D14C000000_00
+FFFFFFFFDFFFFFFF_C1C0000000800000_00
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+F0F23E8068D3D84A_C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF_C1D0000000400000_00
+F7FFBFFFFFFFBFFF_C3A0008000000080_01
+FFFFBD29B7459087_C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF_C1E0000000200000_00
+FFFFFFF8FFFFBFFF_C21C000100040000_00
+FFFFFFFFFFEDDC06_C13223FA00000000_00
+FFFFFFFEFFFFFFFF_C1F0000000100000_00
+FFFFFFF80001FFFF_C21FFFF800040000_00
+0000000000002FF9_40C7FC8000000000_00
+FFFFFFFDFFFFFFFF_C200000000080000_00
+004000040000FFFF_4350000100004000_01
+FFFFFFFFFFFFFFF1_C02E000000000000_00
+FFFFFFFBFFFFFFFF_C210000000040000_00
+C0000000007FFFFA_C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B_C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF_C220000000020000_00
+7FFE000007FFFFFF_43DFFF8000020000_01
+000000000000000D_402A000000000000_00
+FFFFFFEFFFFFFFFF_C230000000010000_00
+F80000000001007E_C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6_C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF_C240000000008000_00
+FFFFFE0001FEFFFF_C27FFFE010001000_00
+000000000000013B_4073B00000000000_00
+FFFFFFBFFFFFFFFF_C250000000004000_00
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0244_01
+FFFFFF7FFFFFFFFF_C260000000002000_00
+00FFF7FFFF7FFFFE_436FFEFFFFF00000_01
+0000000000000006_4018000000000000_00
+FFFFFEFFFFFFFFFF_C270000000001000_00
+FBFFFFBFFFBFFFFF_C390000100010000_01
+00000000000001BA_407BA00000000000_00
+FFFFFDFFFFFFFFFF_C280000000000800_00
+0000000040000082_41D0000020800000_00
+FF07A2BF5B689F89_C36F0BA81492EC0E_01
+FFFFFBFFFFFFFFFF_C290000000000400_00
+0000001FF8000008_423FF80000080000_00
+F87CAA7DE672DE8B_C39E0D5608663485_01
+FFFFF7FFFFFFFFFF_C2A0000000000200_00
+07FFF80000000002_439FFFE000000001_01
+0000000010A1E5B8_41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF_C2B0000000000100_00
+F7FFFFE00007FFFF_C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC_C122A40800000000_00
+FFFFDFFFFFFFFFFF_C2C0000000000080_00
+FFFFFF03FFFFFFC0_C26F800000080000_00
+EA579475948F0032_C3B5A86B8A6B70FF_01
+FFFFBFFFFFFFFFFF_C2D0000000000040_00
+FC00000000003FF6_C38FFFFFFFFFFE00_01
+002E677AC313BF60_434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF_C2E0000000000020_00
+02000007FF7FFFFF_438000003FFC0000_01
+0000000E999639F1_422D332C73E20000_00
+FFFEFFFFFFFFFFFF_C2F0000000000010_00
+FFFF83FFFFFFFFBE_C2DF000000001080_00
+000000000001537D_40F537D000000000_00
+FFFDFFFFFFFFFFFF_C300000000000008_00
+EFFFFFC00000003D_C3B000003FFFFFFF_01
+FFFFFFF21FEDFD35_C22BC02405960000_00
+FFFBFFFFFFFFFFFF_C310000000000004_00
+FFFFFFF0000007FE_C22FFFFFF0040000_00
+FFFFFFFFFFDE0839_C140FBE380000000_00
+FFF7FFFFFFFFFFFF_C320000000000002_00
+0000007FFFE000FF_425FFFF8003FC000_00
+FFFFFFFF79F30F48_C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF_C330000000000001_00
+FFFFFC13FFFFFFFD_C28F600000001800_00
+0000000000001B85_40BB850000000000_00
+FFDFFFFFFFFFFFFF_C340000000000000_01
+000008000007FFFE_42A000000FFFFC00_00
+12DB4409E5AE87E6_43B2DB4409E5AE88_01
+FFBFFFFFFFFFFFFF_C350000000000000_01
+FFFFFFFFFFF7BFEE_C120802400000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FF7FFFFFFFFFFFFF_C360000000000000_01
+000000001040FFFE_41B040FFFE000000_00
+00000909A09C13D3_42A213413827A600_00
+FEFFFFFFFFFFFFFF_C370000000000000_01
+FFFFFF01FFFFFF7F_C26FC00000102000_00
+FFFFFF72E7D2575D_C261A305B5146000_00
+FDFFFFFFFFFFFFFF_C380000000000000_01
+FFFFFFFFFFFEFFDB_C0F0025000000000_00
+0000000000000017_4037000000000000_00
+FBFFFFFFFFFFFFFF_C390000000000000_01
+100000001FFFFFF6_43B0000000200000_01
+000000114B12EF51_42314B12EF510000_00
+F7FFFFFFFFFFFFFF_C3A0000000000000_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFC_01
+FFFFFF769F3A5C2C_C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF_C3B0000000000000_01
+FFFFFFFDF7FFFFFD_C200400000180000_00
+FFFFFFFFFFFFFFF2_C02C000000000000_00
+DFFFFFFFFFFFFFFF_C3C0000000000000_01
+FFFFFFFFFE0007FF_C17FFF8010000000_00
+000000000000001E_403E000000000000_00
+BFFFFFFFFFFFFFFF_C3D0000000000000_01
+FFF800000009FFFF_C31FFFFFFFD80004_00
+0000000000007AA4_40DEA90000000000_00
+7FFFFFFFFFFFFFFF_43E0000000000000_01
+4080000000FFFFFF_43D0200000004000_01
+000000000DE7601D_41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF_43D0000000000000_01
+FFCFFFFFFFBFFFFE_C348000000200001_00
+FFFFFFFFFFFFFFCA_C04B000000000000_00
+1FFFFFFFFFFFFFFF_43C0000000000000_01
+000080400000003F_42E00800000007E0_00
+00000000001F75A5_413F75A500000000_00
+0FFFFFFFFFFFFFFF_43B0000000000000_01
+FFFFFFEFFFFFCFFE_C230000030020000_00
+FFFFFEE775887420_C27188A778BE0000_00
+07FFFFFFFFFFFFFF_43A0000000000000_01
+00000000000801FE_412003FC00000000_00
+0000000000213FF1_41409FF880000000_00
+03FFFFFFFFFFFFFF_4390000000000000_01
+07FEFFFFFFFFFFEE_439FFC0000000000_01
+0000000000000004_4010000000000000_00
+01FFFFFFFFFFFFFF_4380000000000000_01
+0000000820000003_4220400000060000_00
+FFFFFFF9AD105214_C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF_4370000000000000_01
+FFFFF00FFFFFFFBE_C2AFE00000008400_00
+FFFFFFFFFFCC48E7_C149DB8C80000000_00
+007FFFFFFFFFFFFF_4360000000000000_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB_C16E8B26A0000000_00
+003FFFFFFFFFFFFF_4350000000000000_01
+FFFFFF7FBFFFFFBF_C260080000082000_00
+FFFFFFFFFFF24425_C12B77B600000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFE00_01
+FFFFFF4E7115EC53_C26631DD4275A000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_C29FF00000010400_00
+FFFFFC2E539ADCFE_C28E8D6329181000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+00000055084732F3_42554211CCBCC000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_C3D0002000000000_01
+FFFFFFFFFFFF8543_C0DEAF4000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+FFFFFFFFFFFE491B_C0FB6E5000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_C38FFEFFFFFFFF00_01
+FFFFF16898822A24_C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF8200000000_01
+FFFFFF8FFE18C7BF_C25C0079CE104000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_C270001000003000_00
+00F03620C1266ED9_436E06C41824CDDC_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_C3D0204000000000_01
+FFFFFFFFFFFFFFD5_C045800000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_C31000001FF00008_00
+0000000000068684_411A1A1000000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_C3C000000FFFFFFF_01
+FFFFFFFFFFFFECF5_C0B30B0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_C2EFF7FFFFE00020_00
+0000000000000002_4000000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_C390000000000108_01
+0000000000000BC9_40A7920000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_C3DFE00000000008_01
+FFC274E35A70CD76_C34EC58E52C79945_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFE0000_01
+FFFFFFFF00E73AFC_C1EFE318A0800000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9_C0FEA17000000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+0000000000000033_4049800000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+FFFFFFEE6B141E1B_C23194EBE1E50000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_C1A3FFF002000000_00
+00000001AB310BA6_41FAB310BA600000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195_C0ACD60000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_C1DFFFFFFD400000_00
+00000019BA8D5559_4239BA8D55590000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_C390040000000000_01
+FFFFFFB6F062822D_C25243E75F74C000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+01CEAD9E2FB104A4_437CEAD9E2FB104B_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+FFFFFFFFFD681E78_C184BF0C40000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000018_4038000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000001_01
+FFFFFFFFFFFFFF95_C05AC00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000C00000000_01
+0000001697087B19_423697087B190000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_C390000000004400_01
+0000000E64BDFC55_422CC97BF8AA0000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_C38FFFFFFFF00000_01
+FFFED156A62AB849_C2F2EA959D547B70_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_C21F0040000C0000_00
+00015354EAE7C259_42F5354EAE7C2590_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFF0F4DF3C75_C22E164187160000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_C160003800000000_00
+FFFFFFDB5433CB9B_C24255E61A328000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_C280010010001800_00
+FFFFFFFFFFDEAE1F_C140A8F080000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7_C1F88CA213900000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000003757D8B12ED_428BABEC58976800_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_C27F808000001000_00
+00000A654064E046_42A4CA80C9C08C00_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A0000000000030_01
+FFFFFFFFFFFFFFE7_C039000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF8_01
+FFFFAD78B3D6C3B6_C2D4A1D30A4F1280_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+FFFFFFF70B77F34F_C221E91019620000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_C25FFFE400008000_00
+0000013EB4D67EC8_4273EB4D67EC8000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_C3D0000800010000_01
+0005CEAF34EA1DC7_43173ABCD3A8771C_00
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000360D0_410B068000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_4370040000000000_01
+00C000708FF1BA51_4368000E11FE374B_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_C39FF7FFFFF00000_01
+0F9E07DCC0BDC061_43AF3C0FB9817B81_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000008_01
+FFFFFFE1B9B2A079_C23E464D5F870000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_C31FFFFFFFFDFC04_00
+00000000001EB5B4_413EB5B400000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+00000000005AC607_4156B181C0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_C1F07FFFF0100000_00
+000005C5B9D66984_429716E759A61000_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_C3CFFF0000000800_00
+00001D06B372AA06_42BD06B372AA0600_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/i64_f64_rz.tv b/wally-pipelined/testbench/fp/i64_f64_rz.tv
index 315fa3fe4..51b16c1bb 100644
--- a/wally-pipelined/testbench/fp/i64_f64_rz.tv
+++ b/wally-pipelined/testbench/fp/i64_f64_rz.tv
@@ -1,756 +1,756 @@
-07FFFDFFFFFFFF7F 439FFFF7FFFFFFFD_01
-0000000032CC8B7A 41C96645BD000000_00
-0000000000000000 0000000000000000_00
-FFFFFFFFC0003FFE C1CFFFE001000000_00
-032C857F319EDE38 4389642BF98CF6F1_01
-0000000000000001 3FF0000000000000_00
-FFFFFBFFFFF8003E C29000001FFF0800_00
-00394C79B6D3007B 434CA63CDB69803D_01
-0000000000000002 4000000000000000_00
-FBFFFFF0000001FF C39000003FFFFFF8_01
-0000000001AE458D 417AE458D0000000_00
-0000000000000004 4010000000000000_00
-00040008000007FE 4310002000001FF8_00
-F9EB456140D88764 C39852EA7AFC9DE2_01
-0000000000000008 4020000000000000_00
-FFFFE400FFFFFFFE C2BBFF0000000200_00
-07DE834A248EDF36 439F7A0D28923B7C_01
-0000000000000010 4030000000000000_00
-00000003FF001FFF 420FF800FFF80000_00
-FFFFFFFFFFE385E2 C13C7A1E00000000_00
-0000000000000020 4040000000000000_00
-F0041FFFFFFFFFFF C3AFF7C000000000_01
-000000059EB1FD45 42167AC7F5140000_00
-0000000000000040 4050000000000000_00
-FFFFFFFFFFFCFFF9 C108003800000000_00
-FFFFFFFFFFFEDDFE C0F2202000000000_00
-0000000000000080 4060000000000000_00
-000000000003FF00 410FF80000000000_00
-00000000C89FF56B 41E913FEAD600000_00
-0000000000000100 4070000000000000_00
-000FFFFF7FDFFFFF 432FFFFEFFBFFFFE_00
-1B5E4F0BE0DEBFF0 43BB5E4F0BE0DEBF_01
-0000000000000200 4080000000000000_00
-FFFDF803FFFFFFFF C3003FE000000008_00
-FFFFFFFFFFF4766B C127132A00000000_00
-0000000000000400 4090000000000000_00
-0000080100000FFE 42A00200001FFC00_00
-000000000000000C 4028000000000000_00
-0000000000000800 40A0000000000000_00
-0048000000100000 4352000000040000_00
-FFE662A109109D0A C3399D5EF6EF62F6_00
-0000000000001000 40B0000000000000_00
-C000000037FFFFFE C3CFFFFFFFE40000_01
-FFFFFFFFFFFFFFE4 C03C000000000000_00
-0000000000002000 40C0000000000000_00
-F801000000100000 C39FFBFFFFFFC000_00
-FE114B79075F70EE C37EEB486F8A08F1_01
-0000000000004000 40D0000000000000_00
-100000000001003E 43B0000000000100_01
-00000000000003AC 408D600000000000_00
-0000000000008000 40E0000000000000_00
-200000FFFFFFF800 43C000007FFFFFFC_00
-00000044A3A3DBE5 425128E8F6F94000_00
-0000000000010000 40F0000000000000_00
-FFE0003EFFFFFFFF C33FFFC100000001_00
-FFFFFFFFFFFF1A91 C0ECADE000000000_00
-0000000000020000 4100000000000000_00
-FFFFF7C3FFFFFFFD C2A0780000000600_00
-0000000000003309 40C9848000000000_00
-0000000000040000 4110000000000000_00
-000083FFF7FFFFFE 42E07FFEFFFFFFC0_00
-FFFFFFFFFFFFFF58 C065000000000000_00
-0000000000080000 4120000000000000_00
-FFFFFFDE01FFFFFE C240FF0000010000_00
-0000000000002980 40C4C00000000000_00
-0000000000100000 4130000000000000_00
-00000000FFF07FFF 41EFFE0FFFE00000_00
-000000000000005D 4057400000000000_00
-0000000000200000 4140000000000000_00
-000020FFDFFFFFFF 42C07FEFFFFFFF80_00
-FFFC8C23DA2CEAD8 C30B9EE12E98A940_00
-0000000000400000 4150000000000000_00
-E0000000003FFFDF C3BFFFFFFFFFC000_01
-FFFFFDE3C1DEC43C C280E1F109DE2000_00
-0000000000800000 4160000000000000_00
-FFFF00000BFFFFFD C2EFFFFE80000060_00
-000000000030FFBE 41487FDF00000000_00
-0000000001000000 4170000000000000_00
-FFFE000007FFEFFD C2FFFFFF80010030_00
-FFFFFFFFEFDEED86 C1B021127A000000_00
-0000000002000000 4180000000000000_00
-F3FFFFFFFFBFFFFE C3A8000000008000_01
-000000001DA3FF45 41BDA3FF45000000_00
-0000000004000000 4190000000000000_00
-FFFFFFFF00010007 C1EFFFDFFF200000_00
-FFFFFFFE9B1BCB54 C1F64E434AC00000_00
-0000000008000000 41A0000000000000_00
-00004000004001FE 42D0000010007F80_00
-F27DD19DE6563714 C3AB045CC4335391_01
-0000000010000000 41B0000000000000_00
-FFC00000004007FE C34FFFFFFFDFFC01_00
-000000000001A359 40FA359000000000_00
-0000000020000000 41C0000000000000_00
-0000000003C000FE 418E0007F0000000_00
-FFFFFFFFFE62EC20 C179D13E00000000_00
-0000000040000000 41D0000000000000_00
-000000003FFFFFFD 41CFFFFFFE800000_00
-000000000000285F 40C42F8000000000_00
-0000000080000000 41E0000000000000_00
-FFFFFFFFBFFFF00F C1D00003FC400000_00
-FFFFF836F99DBAA8 C29F241989156000_00
-0000000100000000 41F0000000000000_00
-00000020003FFEFE 4240001FFF7F0000_00
-0033466832042D47 4349A334190216A3_01
-0000000200000000 4200000000000000_00
-FFFFFFFFFFFFF887 C09DE40000000000_00
-00000000003829C8 414C14E400000000_00
-0000000400000000 4210000000000000_00
-00000FFFFFFF7DFD 42AFFFFFFEFBFA00_00
-0000000FB77C672B 422F6EF8CE560000_00
-0000000800000000 4220000000000000_00
-08003FFDFFFFFFFE 43A0007FFBFFFFFF_01
-0000000000001B78 40BB780000000000_00
-0000001000000000 4230000000000000_00
-FF7FFFFFFFEFDFFF C360000000020400_01
-0000000000000071 405C400000000000_00
-0000002000000000 4240000000000000_00
-000013FFFFFFFDFF 42B3FFFFFFFDFF00_00
-FFFFFFFFFFFFFF86 C05E800000000000_00
-0000004000000000 4250000000000000_00
-0800000000040800 43A0000000000810_00
-FFF8A60D9E19F17E C31D67C987983A08_00
-0000008000000000 4260000000000000_00
-000077FFF0000000 42DDFFFC00000000_00
-FFFFFFFFF7506DBA C1A15F248C000000_00
-0000010000000000 4270000000000000_00
-FFFFFFFFFFFEFBF7 C0F0409000000000_00
-FFFFFFFFFEA42AC9 C175BD5370000000_00
-0000020000000000 4280000000000000_00
-0000107FFFFFDFFD 42B07FFFFFDFFD00_00
-FFE7AA3F2BDACC89 C33855C0D4253377_00
-0000040000000000 4290000000000000_00
-FFF8040000040000 C31FEFFFFFF00000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-0000080000000000 42A0000000000000_00
-FFFF80000800001F C2DFFFFDFFFFF840_00
-FFFDF681DECDADC9 C3004BF1099291B8_00
-0000100000000000 42B0000000000000_00
-FFFFFEFFFFE0007F C2700001FFF81000_00
-FFFFFFFFFFFFCFBE C0C8210000000000_00
-0000200000000000 42C0000000000000_00
-0000000901FFFFFD 422203FFFFFA0000_00
-FEC01FECA24DE1B0 C373FE0135DB21E5_00
-0000400000000000 42D0000000000000_00
-F7FFFFFFDFFF7FFF C3A0000000400100_01
-F858A66761669936 C39E9D66627A659B_01
-0000800000000000 42E0000000000000_00
-FFFEFF800000003E C2F007FFFFFFFC20_00
-F716EA43FAC45C97 C3A1D22B780A7746_01
-0001000000000000 42F0000000000000_00
-FFFFFFFFFFFFFFC6 C04D000000000000_00
-0024D70EC7661FD8 43426B8763B30FEC_00
-0002000000000000 4300000000000000_00
-C07FFFFFFFFFFFFE C3CFC00000000000_01
-FFD956DBD0AEE817 C343549217A88BF4_01
-0004000000000000 4310000000000000_00
-020003EFFFFFFFFE 4380001F7FFFFFFF_01
-FFFFFFFFFFFF4300 C0E7A00000000000_00
-0008000000000000 4320000000000000_00
-4000000004002000 43D0000000010008_00
-C12EDF40F41F6021 C3CF68905F85F04F_01
-0010000000000000 4330000000000000_00
-FF9000000000001D C35BFFFFFFFFFFF8_01
-FFFFFFF83DE950F6 C21F085ABC280000_00
-0020000000000000 4340000000000000_00
-800003FFFFFC0000 C3DFFFFF00000100_00
-FE2B59CB3A604D69 C37D4A634C59FB29_01
-0040000000000000 4350000000000000_00
-7FFFFFFDFFFFBFFF 43DFFFFFFF7FFFEF_01
-000000A37C210862 42646F84210C4000_00
-0080000000000000 4360000000000000_00
-0002000002000002 4300000010000010_00
-FFFFB65CD8617789 C2D268C9E7A21DC0_00
-0100000000000000 4370000000000000_00
-00001BFFFFFFBFFE 42BBFFFFFFBFFE00_00
-FFFFFFFFFFFFF01D C0AFC60000000000_00
-0200000000000000 4380000000000000_00
-1000008000003FFF 43B000008000003F_01
-000000000D098D19 41AA131A32000000_00
-0400000000000000 4390000000000000_00
-03FFFFFFFFFFF5FF 438FFFFFFFFFFFAF_01
-000006B3BD2C7BEF 429ACEF4B1EFBC00_00
-0800000000000000 43A0000000000000_00
-00003FFFBFFFFFFE 42CFFFDFFFFFFF00_00
-FFFF4E5ADDDAA4A8 C2E634A444AB6B00_00
-1000000000000000 43B0000000000000_00
-001FFFC000000FFD 433FFFC000000FFD_00
-FFFFFFFFFFFFFF21 C06BE00000000000_00
-2000000000000000 43C0000000000000_00
-0000000041DFFFFF 41D077FFFFC00000_00
-FFFFFFFFFC648262 C18CDBECF0000000_00
-4000000000000000 43D0000000000000_00
-C0001FFFFFFFFFFB C3CFFFF000000000_01
-FFFFFF7353AC45D2 C261958A7745C000_00
-8000000000000000 C3E0000000000000_00
-FFFFFFFFFFE7EFFF C138100100000000_00
-0000000000A1202D 41642405A0000000_00
-C000000000000000 C3D0000000000000_00
-FFFFFFFFFFFF5F7F C0E4102000000000_00
-000000000040CA70 4150329C00000000_00
-E000000000000000 C3C0000000000000_00
-0000200201FFFFFE 42C00100FFFFFF00_00
-00000003B55D87D4 420DAAEC3EA00000_00
-F000000000000000 C3B0000000000000_00
-FF80000DFFFFFFFF C35FFFFC80000000_01
-000000010510FAEF 41F0510FAEF00000_00
-F800000000000000 C3A0000000000000_00
-0003FFF00000000F 430FFF8000000078_00
-000000000000724A 40DC928000000000_00
-FC00000000000000 C390000000000000_00
-FFFFFFDF80000002 C2403FFFFFFF0000_00
-0000000000000064 4059000000000000_00
-FE00000000000000 C380000000000000_00
-FEFFFFFFFFF800FE C370000000007FF0_01
-FFFFFFC2C6222702 C24E9CEEEC7F0000_00
-FF00000000000000 C370000000000000_00
-0000000408000002 4210200000080000_00
-000000E96DF1CB41 426D2DBE39682000_00
-FF80000000000000 C360000000000000_00
-007FFFFFFFFFF9FE 435FFFFFFFFFFE7F_01
-F727F174DEE7DC85 C3A1B01D16423046_01
-FFC0000000000000 C350000000000000_00
-8000000003FFFEFE C3DFFFFFFFFF0000_01
-FFFFFFFFFFF0BD5B C12E854A00000000_00
-FFE0000000000000 C340000000000000_00
-0BEFFFFFFFFFFFFF 43A7DFFFFFFFFFFF_01
-000000000002790C 4103C86000000000_00
-FFF0000000000000 C330000000000000_00
-FFFFFFFFFFEFFBFA C130040600000000_00
-000000169E75DF01 42369E75DF010000_00
-FFF8000000000000 C320000000000000_00
-00000007FEFFDFFF 421FFBFF7FFC0000_00
-000000000000000E 402C000000000000_00
-FFFC000000000000 C310000000000000_00
-0003FFFE0007FFFE 430FFFF0003FFFF0_00
-FFFFFFFFFFF28622 C12AF3BC00000000_00
-FFFE000000000000 C300000000000000_00
-FFFFFF7FFFFDF7FF C260000041002000_00
-00072F0EC496FE21 431CBC3B125BF884_00
-FFFF000000000000 C2F0000000000000_00
-DFBFFFFFFFFFFFFE C3C0200000000000_01
-0000000000FC1FCA 416F83F940000000_00
-FFFF800000000000 C2E0000000000000_00
-00000FFF800FFFFE 42AFFF001FFFFC00_00
-FFFF5194E4A9C2CE C2E5CD636AC7A640_00
-FFFFC00000000000 C2D0000000000000_00
-00000002100007FD 420080003FE80000_00
-FFFFFFFFFFC2D8FE C14E938100000000_00
-FFFFE00000000000 C2C0000000000000_00
-000000000007FF6E 411FFDB800000000_00
-000000000001766E 40F766E000000000_00
-FFFFF00000000000 C2B0000000000000_00
-0040000400000002 4350000100000000_01
-0000000000007841 40DE104000000000_00
-FFFFF80000000000 C2A0000000000000_00
-3DFFFFFFFFFFFF7E 43CEFFFFFFFFFFFF_01
-FFFFFFE549E17E30 C23AB61E81D00000_00
-FFFFFC0000000000 C290000000000000_00
-FFFFFFFFFFFFFEE1 C071F00000000000_00
-FFFFFFFFFFFFFFE7 C039000000000000_00
-FFFFFE0000000000 C280000000000000_00
-000000000EFFFFDF 41ADFFFFBE000000_00
-FFFFFFFFFFFFFF73 C061A00000000000_00
-FFFFFF0000000000 C270000000000000_00
-FD00000008000000 C387FFFFFFC00000_00
-000000000001DBB1 40FDBB1000000000_00
-FFFFFF8000000000 C260000000000000_00
-FFFFFFFFFFF8007F C11FFE0400000000_00
-FFFFFFFEFD10A515 C1F02EF5AEB00000_00
-FFFFFFC000000000 C250000000000000_00
-FFEFFFFFFFFFFFFE C330000000000002_00
-FAB02984F6283B6C C3953F59EC275F12_01
-FFFFFFE000000000 C240000000000000_00
-FFFFFFBC000001FE C250FFFFFF808000_00
-FEB087C6B9FE7FE0 C374F78394601802_00
-FFFFFFF000000000 C230000000000000_00
-FFF80001000007FE C31FFFFBFFFFE008_00
-00F2762EA6837956 436E4EC5D4D06F2A_01
-FFFFFFF800000000 C220000000000000_00
-FFF7E0FFFFFFFFFE C3203E0000000004_00
-00002E1175484626 42C708BAA4231300_00
-FFFFFFFC00000000 C210000000000000_00
-0000200020000FFE 42C000100007FF00_00
-000000000000068F 409A3C0000000000_00
-FFFFFFFE00000000 C200000000000000_00
-021FFFFFFFFBFFFF 4380FFFFFFFFDFFF_01
-FFFFFFFFFFFFFFF9 C01C000000000000_00
-FFFFFFFF00000000 C1F0000000000000_00
-FFFFFFD0000FFFFD C247FFF800018000_00
-000000BDF6658B83 4267BECCB1706000_00
-FFFFFFFF80000000 C1E0000000000000_00
-1000001FFDFFFFFF 43B000001FFDFFFF_01
-0000000000003B5B 40CDAD8000000000_00
-FFFFFFFFC0000000 C1D0000000000000_00
-FFFFFFBFFE0FFFFF C250007C00004000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-FFFFFFFFE0000000 C1C0000000000000_00
-FFFFFFFBF00007FF C2103FFFE0040000_00
-01E986274F48EAAD 437E986274F48EAA_01
-FFFFFFFFF0000000 C1B0000000000000_00
-1FFFFFFDFFFFFF7F 43BFFFFFFDFFFFFF_01
-FFFFFFFFFFFFCB5A C0CA530000000000_00
-FFFFFFFFF8000000 C1A0000000000000_00
-7FF000000000FFFF 43DFFC000000003F_01
-00000003C2717FC3 420E138BFE180000_00
-FFFFFFFFFC000000 C190000000000000_00
-FFFFFFE00008001F C23FFFF7FFE10000_00
-FFFFFFFFFFEFABDA C130542600000000_00
-FFFFFFFFFE000000 C180000000000000_00
-0200000000000002 4380000000000000_01
-FFFFFFFFF8FDA53F C19C096B04000000_00
-FFFFFFFFFF000000 C170000000000000_00
-F6000003FFFFFFFE C3A3FFFFF8000000_01
-FFFFFFFFFFFFFFD0 C048000000000000_00
-FFFFFFFFFF800000 C160000000000000_00
-FFFFFFFFFFBFFF7E C150002080000000_00
-00000000EE0FEA62 41EDC1FD4C400000_00
-FFFFFFFFFFC00000 C150000000000000_00
-0000007FFF9FFFFD 425FFFE7FFFF4000_00
-00000037F35EDC1D 424BF9AF6E0E8000_00
-FFFFFFFFFFE00000 C140000000000000_00
-FFFFFFF7FDFFFF7D C220040001060000_00
-00000000000001AD 407AD00000000000_00
-FFFFFFFFFFF00000 C130000000000000_00
-FFFFFF0000100020 C26FFFFDFFFC0000_00
-27F167FBC7FC5F9A 43C3F8B3FDE3FE2F_01
-FFFFFFFFFFF80000 C120000000000000_00
-003FFFFFFFFC0001 434FFFFFFFFE0000_01
-000E48F9F4EBD30E 432C91F3E9D7A61C_00
-FFFFFFFFFFFC0000 C110000000000000_00
-DFFFFFFFFFFBFFFE C3C0000000000200_01
-FC91C23EE8C9424F C38B71EE08B9B5ED_01
-FFFFFFFFFFFE0000 C100000000000000_00
-F7DFFBFFFFFFFFFE C3A0400800000000_01
-000000002CAE080C 41C6570406000000_00
-FFFFFFFFFFFF0000 C0F0000000000000_00
-FFFFC00010000020 C2CFFFF7FFFFF000_00
-04D921F917B20E40 43936487E45EC839_00
-FFFFFFFFFFFF8000 C0E0000000000000_00
-F8000FFFFFFFFFFD C39FFFC000000000_01
-FFF17C566BC7D811 C32D075328704FDE_00
-FFFFFFFFFFFFC000 C0D0000000000000_00
-00000000000000FE 406FC00000000000_00
-FFF82AC14930D386 C31F54FADB3CB1E8_00
-FFFFFFFFFFFFE000 C0C0000000000000_00
-00000000000003FC 408FE00000000000_00
-000E62EC60E119FC 432CC5D8C1C233F8_00
-FFFFFFFFFFFFF000 C0B0000000000000_00
-FFFFEFF7FF7FFFFE C2B0080080000200_00
-0E2B1ECF210EEDC5 43AC563D9E421DDB_01
-FFFFFFFFFFFFF800 C0A0000000000000_00
-00000000007FFF1F 415FFFC7C0000000_00
-FFFFFE534F5676F7 C27ACB0A98909000_00
-FFFFFFFFFFFFFC00 C090000000000000_00
-0000001004FFFFFD 423004FFFFFD0000_00
-0000035C939669F1 428AE49CB34F8800_00
-FFFFFFFFFFFFFE00 C080000000000000_00
-1FFFFFFFFFFFFDFD 43BFFFFFFFFFFFFD_01
-FFFFFFFFFFFFFF91 C05BC00000000000_00
-FFFFFFFFFFFFFF00 C070000000000000_00
-01FFFFFFFBFFEFFE 437FFFFFFFBFFEFF_01
-000000000000016E 4076E00000000000_00
-FFFFFFFFFFFFFF80 C060000000000000_00
-FFF7FFFFFFFFF7FD C320000000001006_00
-FFFFF8E2BCFAC553 C29C750C14EAB400_00
-FFFFFFFFFFFFFFC0 C050000000000000_00
-FFFFFBFFFFFE0FFE C290000007C00800_00
-00000001A4E704BF 41FA4E704BF00000_00
-FFFFFFFFFFFFFFE0 C040000000000000_00
-1400007FFFFFFFFD 43B400007FFFFFFF_01
-FFFFFFFC93B187B4 C20B6273C2600000_00
-FFFFFFFFFFFFFFF0 C030000000000000_00
-40000000007FFFFD 43D0000000001FFF_01
-000000000067D468 4159F51A00000000_00
-FFFFFFFFFFFFFFF8 C020000000000000_00
-007FFEFFFFFBFFFE 435FFFBFFFFEFFFF_01
-FFFFFFE26CEC79F8 C23D931386080000_00
-FFFFFFFFFFFFFFFC C010000000000000_00
-00FFFFFF000000FF 436FFFFFE000001F_01
-FFFFFFFFE0D3983A C1BF2C67C6000000_00
-FFFFFFFFFFFFFFFE C000000000000000_00
-00007FFFBFFF7FFE 42DFFFEFFFDFFF80_00
-FFFFFFFDF4A7088A C2005AC7BBB00000_00
-FFFFFFFFFFFFFFFF BFF0000000000000_00
-000008000000027E 42A000000004FC00_00
-000000000000F4E8 40EE9D0000000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFF83FFDF C15F000840000000_00
-00000E11407887B2 42AC2280F10F6400_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-04000003FFFFFFF6 439000000FFFFFFF_01
-0000000000000513 40944C0000000000_00
-FFFFFFFFFFFFFFF7 C022000000000000_00
-BFFC00000000003E C3D000FFFFFFFFFF_01
-00000008D7BBB75B 4221AF776EB60000_00
-FFFFFFFFFFFFFFEF C031000000000000_00
-000FFFFBFFFC0000 432FFFF7FFF80000_00
-FFFFFFFFFFCD5A23 C14952EE80000000_00
-FFFFFFFFFFFFFFDF C040800000000000_00
-FFBFDFFFBFFFFFFF C350080010000000_01
-000000000000007F 405FC00000000000_00
-FFFFFFFFFFFFFFBF C050400000000000_00
-00000007FF800003 421FFE00000C0000_00
-000000000002BB02 4105D81000000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEE7FF C0F1801000000000_00
-00264B2B9BAD0DA2 43432595CDD686D1_00
-FFFFFFFFFFFFFEFF C070100000000000_00
-0000000000100803 4130080300000000_00
-FF9B1DCB9F857D5E C359388D181EA0A8_01
-FFFFFFFFFFFFFDFF C080080000000000_00
-FFFFFFBFFFFFEFEE C250000004048000_00
-F6FD7542899C1C6F C3A205157AECC7C7_01
-FFFFFFFFFFFFFBFF C090040000000000_00
-FF800000004001FF C35FFFFFFFEFFF80_01
-0000000002BE4932 4185F24990000000_00
-FFFFFFFFFFFFF7FF C0A0020000000000_00
-00001004000FFFFE 42B004000FFFFE00_00
-FFFFFF9DAA0123E0 C258957FB7080000_00
-FFFFFFFFFFFFEFFF C0B0010000000000_00
-00000001FDFFFDFE 41FFDFFFDFE00000_00
-FFFC1C8703B1DCB0 C30F1BC7E2711A80_00
-FFFFFFFFFFFFDFFF C0C0008000000000_00
-FE0FE00000000000 C37F020000000000_00
-0779ED944A4E2779 439DE7B65129389D_01
-FFFFFFFFFFFFBFFF C0D0004000000000_00
-FBFFFE0400000000 C3900007F0000000_00
-0000010127E03666 4270127E03666000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-FFFFF0200000FFFE C2AFBFFFFE000400_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFFFFFFEFFFF C0F0001000000000_00
-FFEFFE0000080000 C33001FFFFF80000_00
-FFFFFFFFFD3354EA C1866558B0000000_00
-FFFFFFFFFFFDFFFF C100000800000000_00
-003FF0000003FFFE 434FF8000001FFFF_00
-0000006375B23F7B 4258DD6C8FDEC000_00
-FFFFFFFFFFFBFFFF C110000400000000_00
-000407FFFFFFFFF6 43101FFFFFFFFFD8_00
-0000000092117F38 41E2422FE7000000_00
-FFFFFFFFFFF7FFFF C120000200000000_00
-FFFFFFFFFFFF7FFF C0E0002000000000_00
-00000000000008BE 40A17C0000000000_00
-FFFFFFFFFFEFFFFF C130000100000000_00
-004000020FFFFFFF 4350000083FFFFFF_01
-FFFFB84C2D8BC9CB C2D1ECF49D0D8D40_00
-FFFFFFFFFFDFFFFF C140000080000000_00
-00FFFFFFFFFFFFFD 436FFFFFFFFFFFFF_01
-00000023C2C6F284 4241E16379420000_00
-FFFFFFFFFFBFFFFF C150000040000000_00
-FFFDDFFFFFFFFFFD C301000000000018_00
-00000000746356C4 41DD18D5B1000000_00
-FFFFFFFFFF7FFFFF C160000020000000_00
-010000000000BFFF 4370000000000BFF_01
-FFFFFFFFFFFFFFFD C008000000000000_00
-FFFFFFFFFEFFFFFF C170000010000000_00
-FFFFBF7FFBFFFFFE C2D0200100000080_00
-00000006386CE889 4218E1B3A2240000_00
-FFFFFFFFFDFFFFFF C180000008000000_00
-F00000F7FFFFFFFF C3AFFFFE10000000_01
-FFFDFC53090C46A4 C3001D67B79DCAE0_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-0000000000800047 41600008E0000000_00
-FFFFFFFFD693872E C1C4B63C69000000_00
-FFFFFFFFF7FFFFFF C1A0000002000000_00
-000000007FBFFBFF 41DFEFFEFFC00000_00
-00000026A7845E35 424353C22F1A8000_00
-FFFFFFFFEFFFFFFF C1B0000001000000_00
-FFFFFFDFFFFFFBFD C240000002018000_00
-000000001433D14C 41B433D14C000000_00
-FFFFFFFFDFFFFFFF C1C0000000800000_00
-0001FFFFFFE0000E 42FFFFFFFE0000E0_00
-F0F23E8068D3D84A C3AE1B82FF2E584F_01
-FFFFFFFFBFFFFFFF C1D0000000400000_00
-F7FFBFFFFFFFBFFF C3A0008000000080_01
-FFFFBD29B7459087 C2D0B5922E9BDE40_00
-FFFFFFFF7FFFFFFF C1E0000000200000_00
-FFFFFFF8FFFFBFFF C21C000100040000_00
-FFFFFFFFFFEDDC06 C13223FA00000000_00
-FFFFFFFEFFFFFFFF C1F0000000100000_00
-FFFFFFF80001FFFF C21FFFF800040000_00
-0000000000002FF9 40C7FC8000000000_00
-FFFFFFFDFFFFFFFF C200000000080000_00
-004000040000FFFF 4350000100003FFF_01
-FFFFFFFFFFFFFFF1 C02E000000000000_00
-FFFFFFFBFFFFFFFF C210000000040000_00
-C0000000007FFFFA C3CFFFFFFFFFC000_01
-FFFFFFFFFE053E2B C17FAC1D50000000_00
-FFFFFFF7FFFFFFFF C220000000020000_00
-7FFE000007FFFFFF 43DFFF800001FFFF_01
-000000000000000D 402A000000000000_00
-FFFFFFEFFFFFFFFF C230000000010000_00
-F80000000001007E C39FFFFFFFFFFBFE_01
-FFFFED48424AD9D6 C2B2B7BDB5262A00_00
-FFFFFFDFFFFFFFFF C240000000008000_00
-FFFFFE0001FEFFFF C27FFFE010001000_00
-000000000000013B 4073B00000000000_00
-FFFFFFBFFFFFFFFF C250000000004000_00
-0007FBFFFFFDFFFE 431FEFFFFFF7FFF8_00
-4A16BD4128090C83 43D285AF504A0243_01
-FFFFFF7FFFFFFFFF C260000000002000_00
-00FFF7FFFF7FFFFE 436FFEFFFFEFFFFF_01
-0000000000000006 4018000000000000_00
-FFFFFEFFFFFFFFFF C270000000001000_00
-FBFFFFBFFFBFFFFF C390000100010000_01
-00000000000001BA 407BA00000000000_00
-FFFFFDFFFFFFFFFF C280000000000800_00
-0000000040000082 41D0000020800000_00
-FF07A2BF5B689F89 C36F0BA81492EC0E_01
-FFFFFBFFFFFFFFFF C290000000000400_00
-0000001FF8000008 423FF80000080000_00
-F87CAA7DE672DE8B C39E0D5608663485_01
-FFFFF7FFFFFFFFFF C2A0000000000200_00
-07FFF80000000002 439FFFE000000000_01
-0000000010A1E5B8 41B0A1E5B8000000_00
-FFFFEFFFFFFFFFFF C2B0000000000100_00
-F7FFFFE00007FFFF C3A000003FFFF000_01
-FFFFFFFFFFF6ADFC C122A40800000000_00
-FFFFDFFFFFFFFFFF C2C0000000000080_00
-FFFFFF03FFFFFFC0 C26F800000080000_00
-EA579475948F0032 C3B5A86B8A6B70FF_01
-FFFFBFFFFFFFFFFF C2D0000000000040_00
-FC00000000003FF6 C38FFFFFFFFFFE00_01
-002E677AC313BF60 434733BD6189DFB0_00
-FFFF7FFFFFFFFFFF C2E0000000000020_00
-02000007FF7FFFFF 438000003FFBFFFF_01
-0000000E999639F1 422D332C73E20000_00
-FFFEFFFFFFFFFFFF C2F0000000000010_00
-FFFF83FFFFFFFFBE C2DF000000001080_00
-000000000001537D 40F537D000000000_00
-FFFDFFFFFFFFFFFF C300000000000008_00
-EFFFFFC00000003D C3B000003FFFFFFF_01
-FFFFFFF21FEDFD35 C22BC02405960000_00
-FFFBFFFFFFFFFFFF C310000000000004_00
-FFFFFFF0000007FE C22FFFFFF0040000_00
-FFFFFFFFFFDE0839 C140FBE380000000_00
-FFF7FFFFFFFFFFFF C320000000000002_00
-0000007FFFE000FF 425FFFF8003FC000_00
-FFFFFFFF79F30F48 C1E0C19E17000000_00
-FFEFFFFFFFFFFFFF C330000000000001_00
-FFFFFC13FFFFFFFD C28F600000001800_00
-0000000000001B85 40BB850000000000_00
-FFDFFFFFFFFFFFFF C340000000000000_01
-000008000007FFFE 42A000000FFFFC00_00
-12DB4409E5AE87E6 43B2DB4409E5AE87_01
-FFBFFFFFFFFFFFFF C350000000000000_01
-FFFFFFFFFFF7BFEE C120802400000000_00
-FFFFFFFFFFFFFFFD C008000000000000_00
-FF7FFFFFFFFFFFFF C360000000000000_01
-000000001040FFFE 41B040FFFE000000_00
-00000909A09C13D3 42A213413827A600_00
-FEFFFFFFFFFFFFFF C370000000000000_01
-FFFFFF01FFFFFF7F C26FC00000102000_00
-FFFFFF72E7D2575D C261A305B5146000_00
-FDFFFFFFFFFFFFFF C380000000000000_01
-FFFFFFFFFFFEFFDB C0F0025000000000_00
-0000000000000017 4037000000000000_00
-FBFFFFFFFFFFFFFF C390000000000000_01
-100000001FFFFFF6 43B00000001FFFFF_01
-000000114B12EF51 42314B12EF510000_00
-F7FFFFFFFFFFFFFF C3A0000000000000_01
-0407FFFFFFFFFEFF 43901FFFFFFFFFFB_01
-FFFFFF769F3A5C2C C2612C18B47A8000_00
-EFFFFFFFFFFFFFFF C3B0000000000000_01
-FFFFFFFDF7FFFFFD C200400000180000_00
-FFFFFFFFFFFFFFF2 C02C000000000000_00
-DFFFFFFFFFFFFFFF C3C0000000000000_01
-FFFFFFFFFE0007FF C17FFF8010000000_00
-000000000000001E 403E000000000000_00
-BFFFFFFFFFFFFFFF C3D0000000000000_01
-FFF800000009FFFF C31FFFFFFFD80004_00
-0000000000007AA4 40DEA90000000000_00
-7FFFFFFFFFFFFFFF 43DFFFFFFFFFFFFF_01
-4080000000FFFFFF 43D0200000003FFF_01
-000000000DE7601D 41ABCEC03A000000_00
-3FFFFFFFFFFFFFFF 43CFFFFFFFFFFFFF_01
-FFCFFFFFFFBFFFFE C348000000200001_00
-FFFFFFFFFFFFFFCA C04B000000000000_00
-1FFFFFFFFFFFFFFF 43BFFFFFFFFFFFFF_01
-000080400000003F 42E00800000007E0_00
-00000000001F75A5 413F75A500000000_00
-0FFFFFFFFFFFFFFF 43AFFFFFFFFFFFFF_01
-FFFFFFEFFFFFCFFE C230000030020000_00
-FFFFFEE775887420 C27188A778BE0000_00
-07FFFFFFFFFFFFFF 439FFFFFFFFFFFFF_01
-00000000000801FE 412003FC00000000_00
-0000000000213FF1 41409FF880000000_00
-03FFFFFFFFFFFFFF 438FFFFFFFFFFFFF_01
-07FEFFFFFFFFFFEE 439FFBFFFFFFFFFF_01
-0000000000000004 4010000000000000_00
-01FFFFFFFFFFFFFF 437FFFFFFFFFFFFF_01
-0000000820000003 4220400000060000_00
-FFFFFFF9AD105214 C2194BBEB7B00000_00
-00FFFFFFFFFFFFFF 436FFFFFFFFFFFFF_01
-FFFFF00FFFFFFFBE C2AFE00000008400_00
-FFFFFFFFFFCC48E7 C149DB8C80000000_00
-007FFFFFFFFFFFFF 435FFFFFFFFFFFFF_01
-00000FFFEF7FFFFF 42AFFFDEFFFFFE00_00
-FFFFFFFFFF0BA6CB C16E8B26A0000000_00
-003FFFFFFFFFFFFF 434FFFFFFFFFFFFF_01
-FFFFFF7FBFFFFFBF C260080000082000_00
-FFFFFFFFFFF24425 C12B77B600000000_00
-001FFFFFFFFFFFFF 433FFFFFFFFFFFFF_00
-200000001FFBFFFF 43C00000000FFDFF_01
-FFFFFF4E7115EC53 C26631DD4275A000_00
-000FFFFFFFFFFFFF 432FFFFFFFFFFFFE_00
-FFFFF803FFFFFFBF C29FF00000010400_00
-FFFFFC2E539ADCFE C28E8D6329181000_00
-0007FFFFFFFFFFFF 431FFFFFFFFFFFFC_00
-FFFFFFFFFBFFFFFF C190000004000000_00
-00000055084732F3 42554211CCBCC000_00
-0003FFFFFFFFFFFF 430FFFFFFFFFFFF8_00
-BFFF7FFFFFFFFE00 C3D0002000000000_01
-FFFFFFFFFFFF8543 C0DEAF4000000000_00
-0001FFFFFFFFFFFF 42FFFFFFFFFFFFF0_00
-0000001FFBFFE000 423FFBFFE0000000_00
-FFFFFFFFFFFE491B C0FB6E5000000000_00
-0000FFFFFFFFFFFF 42EFFFFFFFFFFFE0_00
-FC00200000001FFE C38FFEFFFFFFFF00_01
-FFFFF16898822A24 C2AD2ECEFBABB800_00
-00007FFFFFFFFFFF 42DFFFFFFFFFFFC0_00
-3FFF03FFFFFFFFFE 43CFFF81FFFFFFFF_01
-FFFFFF8FFE18C7BF C25C0079CE104000_00
-00003FFFFFFFFFFF 42CFFFFFFFFFFF80_00
-FFFFFEFFFEFFFFFD C270001000003000_00
-00F03620C1266ED9 436E06C41824CDDB_01
-00001FFFFFFFFFFF 42BFFFFFFFFFFF00_00
-BF7EFFFFFFFFFFFF C3D0204000000000_01
-FFFFFFFFFFFFFFD5 C045800000000000_00
-00000FFFFFFFFFFF 42AFFFFFFFFFFE00_00
-FFFBFFFFF803FFFE C31000001FF00008_00
-0000000000068684 411A1A1000000000_00
-000007FFFFFFFFFF 429FFFFFFFFFFC00_00
-DFFFFFE00000001E C3C000000FFFFFFF_01
-FFFFFFFFFFFFECF5 C0B30B0000000000_00
-000003FFFFFFFFFF 428FFFFFFFFFF800_00
-FFFF00400000FFFF C2EFF7FFFFE00020_00
-0000000000000002 4000000000000000_00
-000001FFFFFFFFFF 427FFFFFFFFFF000_00
-FBFFFFFFFFFFBDFE C390000000000108_01
-0000000000000BC9 40A7920000000000_00
-000000FFFFFFFFFF 426FFFFFFFFFE000_00
-807FFFFFFFFFDFFE C3DFE00000000008_01
-FFC274E35A70CD76 C34EC58E52C79945_00
-0000007FFFFFFFFF 425FFFFFFFFFC000_00
-0FFFFFFFFEFFFFFD 43AFFFFFFFFDFFFF_01
-FFFFFFFF00E73AFC C1EFE318A0800000_00
-0000003FFFFFFFFF 424FFFFFFFFF8000_00
-FFC000000001000E C34FFFFFFFFF7FF9_00
-FFFFFFFFFFFE15E9 C0FEA17000000000_00
-0000001FFFFFFFFF 423FFFFFFFFF0000_00
-0001FFFFFFFFF3FD 42FFFFFFFFFF3FD0_00
-0000000000000033 4049800000000000_00
-0000000FFFFFFFFF 422FFFFFFFFE0000_00
-000000001FFFBFFF 41BFFFBFFF000000_00
-FFFFFFEE6B141E1B C23194EBE1E50000_00
-00000007FFFFFFFF 421FFFFFFFFC0000_00
-FFFFFFFFF60007FF C1A3FFF002000000_00
-00000001AB310BA6 41FAB310BA600000_00
-00000003FFFFFFFF 420FFFFFFFF80000_00
-0003FFFFB7FFFFFF 430FFFFDBFFFFFF8_00
-FFFFFFFFFFFFF195 C0ACD60000000000_00
-00000001FFFFFFFF 41FFFFFFFFF00000_00
-FFFFFFFF8000000B C1DFFFFFFD400000_00
-00000019BA8D5559 4239BA8D55590000_00
-00000000FFFFFFFF 41EFFFFFFFE00000_00
-FBFEFFFFFFFFFFF9 C390040000000000_01
-FFFFFFB6F062822D C25243E75F74C000_00
-000000007FFFFFFF 41DFFFFFFFC00000_00
-0001000000000082 42F0000000000820_00
-01CEAD9E2FB104A4 437CEAD9E2FB104A_01
-000000003FFFFFFF 41CFFFFFFF800000_00
-000003FFFFFFFF7C 428FFFFFFFFBE000_00
-FFFFFFFFFD681E78 C184BF0C40000000_00
-000000001FFFFFFF 41BFFFFFFF000000_00
-00002000400001FF 42C000200000FF80_00
-0000000000000018 4038000000000000_00
-000000000FFFFFFF 41AFFFFFFE000000_00
-3FFF80000000003E 43CFFFC000000000_01
-FFFFFFFFFFFFFF95 C05AC00000000000_00
-0000000007FFFFFF 419FFFFFFC000000_00
-010000BFFFFFFFFF 4370000BFFFFFFFF_01
-0000001697087B19 423697087B190000_00
-0000000003FFFFFF 418FFFFFF8000000_00
-FBFFFFFFFFEEFFFD C390000000004400_01
-0000000E64BDFC55 422CC97BF8AA0000_00
-0000000001FFFFFF 417FFFFFF0000000_00
-FC00000001FFFFFE C38FFFFFFFF00000_01
-FFFED156A62AB849 C2F2EA959D547B70_00
-0000000000FFFFFF 416FFFFFE0000000_00
-FFFFFFF83FEFFFFD C21F0040000C0000_00
-00015354EAE7C259 42F5354EAE7C2590_00
-00000000007FFFFF 415FFFFFC0000000_00
-FFFFFFFFFFFFFF7F C060200000000000_00
-FFFFFFF0F4DF3C75 C22E164187160000_00
-00000000003FFFFF 414FFFFF80000000_00
-FFFA000000001FFF C317FFFFFFFF8004_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000001FFFFF 413FFFFF00000000_00
-FFFFFFFFFF7FFE40 C160003800000000_00
-FFFFFFDB5433CB9B C24255E61A328000_00
-00000000000FFFFF 412FFFFE00000000_00
-FFFFFDFFDFFDFFFD C280010010001800_00
-FFFFFFFFFFDEAE1F C140A8F080000000_00
-000000000007FFFF 411FFFFC00000000_00
-FFFFFFFFF0080006 C1AFEFFFF4000000_00
-FFFFFFFE7735DEC7 C1F88CA213900000_00
-000000000003FFFF 410FFFF800000000_00
-00000001FBFFFFFF 41FFBFFFFFF00000_00
-000003757D8B12ED 428BABEC58976800_00
-000000000001FFFF 40FFFFF000000000_00
-FFFFFE07F7FFFFFF C27F808000001000_00
-00000A654064E046 42A4CA80C9C08C00_00
-000000000000FFFF 40EFFFE000000000_00
-08000000000017FF 43A000000000002F_01
-FFFFFFFFFFFFFFE7 C039000000000000_00
-0000000000007FFF 40DFFFC000000000_00
-07FFFFFFFFFFFDF6 439FFFFFFFFFFFF7_01
-FFFFAD78B3D6C3B6 C2D4A1D30A4F1280_00
-0000000000003FFF 40CFFF8000000000_00
-0000300004000000 42C8000200000000_00
-FFFFFFF70B77F34F C221E91019620000_00
-0000000000001FFF 40BFFF0000000000_00
-FFFFFF80006FFFFE C25FFFE400008000_00
-0000013EB4D67EC8 4273EB4D67EC8000_00
-0000000000000FFF 40AFFE0000000000_00
-BFFFDFFFFBFFFFFF C3D0000800010000_01
-0005CEAF34EA1DC7 43173ABCD3A8771C_00
-00000000000007FF 409FFC0000000000_00
-00004800007FFFFD 42D200001FFFFF40_00
-FFFFFFFFFFFFFFFB C014000000000000_00
-00000000000003FF 408FF80000000000_00
-0000000200001000 4200000080000000_00
-00000000000360D0 410B068000000000_00
-00000000000001FF 407FF00000000000_00
-01003FFFFFFFFFFC 437003FFFFFFFFFF_01
-00C000708FF1BA51 4368000E11FE374A_01
-00000000000000FF 406FE00000000000_00
-F802000003FFFFFF C39FF7FFFFF00000_01
-0F9E07DCC0BDC061 43AF3C0FB9817B80_01
-000000000000007F 405FC00000000000_00
-03FF0000000000FF 438FF80000000007_01
-FFFFFFE1B9B2A079 C23E464D5F870000_00
-000000000000003F 404F800000000000_00
-FFF80000000080FF C31FFFFFFFFDFC04_00
-00000000001EB5B4 413EB5B400000000_00
-000000000000001F 403F000000000000_00
-000000000077FBFE 415DFEFF80000000_00
-00000000005AC607 4156B181C0000000_00
-000000000000000F 402E000000000000_00
-FFFFFFFEF80000FF C1F07FFFF0100000_00
-000005C5B9D66984 429716E759A61000_00
-0000000000000007 401C000000000000_00
-C001FFFFFFF00000 C3CFFF0000000800_00
-00001D06B372AA06 42BD06B372AA0600_00
-0000000000000003 4008000000000000_00
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFD_01
+0000000032CC8B7A_41C96645BD000000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_C1CFFFE001000000_00
+032C857F319EDE38_4389642BF98CF6F1_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_C29000001FFF0800_00
+00394C79B6D3007B_434CA63CDB69803D_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_C39000003FFFFFF8_01
+0000000001AE458D_417AE458D0000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+F9EB456140D88764_C39852EA7AFC9DE2_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_C2BBFF0000000200_00
+07DE834A248EDF36_439F7A0D28923B7C_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+FFFFFFFFFFE385E2_C13C7A1E00000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_C3AFF7C000000000_01
+000000059EB1FD45_42167AC7F5140000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_C108003800000000_00
+FFFFFFFFFFFEDDFE_C0F2202000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000000C89FF56B_41E913FEAD600000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+1B5E4F0BE0DEBFF0_43BB5E4F0BE0DEBF_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_C3003FE000000008_00
+FFFFFFFFFFF4766B_C127132A00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000000C_4028000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+FFE662A109109D0A_C3399D5EF6EF62F6_00
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_C3CFFFFFFFE40000_01
+FFFFFFFFFFFFFFE4_C03C000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_C39FFBFFFFFFC000_00
+FE114B79075F70EE_C37EEB486F8A08F1_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+00000000000003AC_408D600000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+00000044A3A3DBE5_425128E8F6F94000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_C33FFFC100000001_00
+FFFFFFFFFFFF1A91_C0ECADE000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_C2A0780000000600_00
+0000000000003309_40C9848000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+FFFFFFFFFFFFFF58_C065000000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_C240FF0000010000_00
+0000000000002980_40C4C00000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+000000000000005D_4057400000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+FFFC8C23DA2CEAD8_C30B9EE12E98A940_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_C3BFFFFFFFFFC000_01
+FFFFFDE3C1DEC43C_C280E1F109DE2000_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_C2EFFFFE80000060_00
+000000000030FFBE_41487FDF00000000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_C2FFFFFF80010030_00
+FFFFFFFFEFDEED86_C1B021127A000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_C3A8000000008000_01
+000000001DA3FF45_41BDA3FF45000000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_C1EFFFDFFF200000_00
+FFFFFFFE9B1BCB54_C1F64E434AC00000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+F27DD19DE6563714_C3AB045CC4335391_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_C34FFFFFFFDFFC01_00
+000000000001A359_40FA359000000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+FFFFFFFFFE62EC20_C179D13E00000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000285F_40C42F8000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_C1D00003FC400000_00
+FFFFF836F99DBAA8_C29F241989156000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0033466832042D47_4349A334190216A3_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_C09DE40000000000_00
+00000000003829C8_414C14E400000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000000FB77C672B_422F6EF8CE560000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFBFFFFFF_01
+0000000000001B78_40BB780000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_C360000000020400_01
+0000000000000071_405C400000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+FFFFFFFFFFFFFF86_C05E800000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+FFF8A60D9E19F17E_C31D67C987983A08_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+FFFFFFFFF7506DBA_C1A15F248C000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_C0F0409000000000_00
+FFFFFFFFFEA42AC9_C175BD5370000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+FFE7AA3F2BDACC89_C33855C0D4253377_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_C31FEFFFFFF00000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_C2DFFFFDFFFFF840_00
+FFFDF681DECDADC9_C3004BF1099291B8_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_C2700001FFF81000_00
+FFFFFFFFFFFFCFBE_C0C8210000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+FEC01FECA24DE1B0_C373FE0135DB21E5_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_C3A0000000400100_01
+F858A66761669936_C39E9D66627A659B_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_C2F007FFFFFFFC20_00
+F716EA43FAC45C97_C3A1D22B780A7746_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_C04D000000000000_00
+0024D70EC7661FD8_43426B8763B30FEC_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_C3CFC00000000000_01
+FFD956DBD0AEE817_C343549217A88BF4_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F7FFFFFFF_01
+FFFFFFFFFFFF4300_C0E7A00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+C12EDF40F41F6021_C3CF68905F85F04F_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_C35BFFFFFFFFFFF8_01
+FFFFFFF83DE950F6_C21F085ABC280000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_C3DFFFFF00000100_00
+FE2B59CB3A604D69_C37D4A634C59FB29_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFEF_01
+000000A37C210862_42646F84210C4000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+FFFFB65CD8617789_C2D268C9E7A21DC0_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+FFFFFFFFFFFFF01D_C0AFC60000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B000008000003F_01
+000000000D098D19_41AA131A32000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFAF_01
+000006B3BD2C7BEF_429ACEF4B1EFBC00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+FFFF4E5ADDDAA4A8_C2E634A444AB6B00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+FFFFFFFFFFFFFF21_C06BE00000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+FFFFFFFFFC648262_C18CDBECF0000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_C3CFFFF000000000_01
+FFFFFF7353AC45D2_C261958A7745C000_00
+8000000000000000_C3E0000000000000_00
+FFFFFFFFFFE7EFFF_C138100100000000_00
+0000000000A1202D_41642405A0000000_00
+C000000000000000_C3D0000000000000_00
+FFFFFFFFFFFF5F7F_C0E4102000000000_00
+000000000040CA70_4150329C00000000_00
+E000000000000000_C3C0000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000003B55D87D4_420DAAEC3EA00000_00
+F000000000000000_C3B0000000000000_00
+FF80000DFFFFFFFF_C35FFFFC80000000_01
+000000010510FAEF_41F0510FAEF00000_00
+F800000000000000_C3A0000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000000724A_40DC928000000000_00
+FC00000000000000_C390000000000000_00
+FFFFFFDF80000002_C2403FFFFFFF0000_00
+0000000000000064_4059000000000000_00
+FE00000000000000_C380000000000000_00
+FEFFFFFFFFF800FE_C370000000007FF0_01
+FFFFFFC2C6222702_C24E9CEEEC7F0000_00
+FF00000000000000_C370000000000000_00
+0000000408000002_4210200000080000_00
+000000E96DF1CB41_426D2DBE39682000_00
+FF80000000000000_C360000000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE7F_01
+F727F174DEE7DC85_C3A1B01D16423046_01
+FFC0000000000000_C350000000000000_00
+8000000003FFFEFE_C3DFFFFFFFFF0000_01
+FFFFFFFFFFF0BD5B_C12E854A00000000_00
+FFE0000000000000_C340000000000000_00
+0BEFFFFFFFFFFFFF_43A7DFFFFFFFFFFF_01
+000000000002790C_4103C86000000000_00
+FFF0000000000000_C330000000000000_00
+FFFFFFFFFFEFFBFA_C130040600000000_00
+000000169E75DF01_42369E75DF010000_00
+FFF8000000000000_C320000000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000000E_402C000000000000_00
+FFFC000000000000_C310000000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+FFFFFFFFFFF28622_C12AF3BC00000000_00
+FFFE000000000000_C300000000000000_00
+FFFFFF7FFFFDF7FF_C260000041002000_00
+00072F0EC496FE21_431CBC3B125BF884_00
+FFFF000000000000_C2F0000000000000_00
+DFBFFFFFFFFFFFFE_C3C0200000000000_01
+0000000000FC1FCA_416F83F940000000_00
+FFFF800000000000_C2E0000000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+FFFF5194E4A9C2CE_C2E5CD636AC7A640_00
+FFFFC00000000000_C2D0000000000000_00
+00000002100007FD_420080003FE80000_00
+FFFFFFFFFFC2D8FE_C14E938100000000_00
+FFFFE00000000000_C2C0000000000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000001766E_40F766E000000000_00
+FFFFF00000000000_C2B0000000000000_00
+0040000400000002_4350000100000000_01
+0000000000007841_40DE104000000000_00
+FFFFF80000000000_C2A0000000000000_00
+3DFFFFFFFFFFFF7E_43CEFFFFFFFFFFFF_01
+FFFFFFE549E17E30_C23AB61E81D00000_00
+FFFFFC0000000000_C290000000000000_00
+FFFFFFFFFFFFFEE1_C071F00000000000_00
+FFFFFFFFFFFFFFE7_C039000000000000_00
+FFFFFE0000000000_C280000000000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+FFFFFFFFFFFFFF73_C061A00000000000_00
+FFFFFF0000000000_C270000000000000_00
+FD00000008000000_C387FFFFFFC00000_00
+000000000001DBB1_40FDBB1000000000_00
+FFFFFF8000000000_C260000000000000_00
+FFFFFFFFFFF8007F_C11FFE0400000000_00
+FFFFFFFEFD10A515_C1F02EF5AEB00000_00
+FFFFFFC000000000_C250000000000000_00
+FFEFFFFFFFFFFFFE_C330000000000002_00
+FAB02984F6283B6C_C3953F59EC275F12_01
+FFFFFFE000000000_C240000000000000_00
+FFFFFFBC000001FE_C250FFFFFF808000_00
+FEB087C6B9FE7FE0_C374F78394601802_00
+FFFFFFF000000000_C230000000000000_00
+FFF80001000007FE_C31FFFFBFFFFE008_00
+00F2762EA6837956_436E4EC5D4D06F2A_01
+FFFFFFF800000000_C220000000000000_00
+FFF7E0FFFFFFFFFE_C3203E0000000004_00
+00002E1175484626_42C708BAA4231300_00
+FFFFFFFC00000000_C210000000000000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000068F_409A3C0000000000_00
+FFFFFFFE00000000_C200000000000000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFDFFF_01
+FFFFFFFFFFFFFFF9_C01C000000000000_00
+FFFFFFFF00000000_C1F0000000000000_00
+FFFFFFD0000FFFFD_C247FFF800018000_00
+000000BDF6658B83_4267BECCB1706000_00
+FFFFFFFF80000000_C1E0000000000000_00
+1000001FFDFFFFFF_43B000001FFDFFFF_01
+0000000000003B5B_40CDAD8000000000_00
+FFFFFFFFC0000000_C1D0000000000000_00
+FFFFFFBFFE0FFFFF_C250007C00004000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+FFFFFFFFE0000000_C1C0000000000000_00
+FFFFFFFBF00007FF_C2103FFFE0040000_00
+01E986274F48EAAD_437E986274F48EAA_01
+FFFFFFFFF0000000_C1B0000000000000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+FFFFFFFFFFFFCB5A_C0CA530000000000_00
+FFFFFFFFF8000000_C1A0000000000000_00
+7FF000000000FFFF_43DFFC000000003F_01
+00000003C2717FC3_420E138BFE180000_00
+FFFFFFFFFC000000_C190000000000000_00
+FFFFFFE00008001F_C23FFFF7FFE10000_00
+FFFFFFFFFFEFABDA_C130542600000000_00
+FFFFFFFFFE000000_C180000000000000_00
+0200000000000002_4380000000000000_01
+FFFFFFFFF8FDA53F_C19C096B04000000_00
+FFFFFFFFFF000000_C170000000000000_00
+F6000003FFFFFFFE_C3A3FFFFF8000000_01
+FFFFFFFFFFFFFFD0_C048000000000000_00
+FFFFFFFFFF800000_C160000000000000_00
+FFFFFFFFFFBFFF7E_C150002080000000_00
+00000000EE0FEA62_41EDC1FD4C400000_00
+FFFFFFFFFFC00000_C150000000000000_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000037F35EDC1D_424BF9AF6E0E8000_00
+FFFFFFFFFFE00000_C140000000000000_00
+FFFFFFF7FDFFFF7D_C220040001060000_00
+00000000000001AD_407AD00000000000_00
+FFFFFFFFFFF00000_C130000000000000_00
+FFFFFF0000100020_C26FFFFDFFFC0000_00
+27F167FBC7FC5F9A_43C3F8B3FDE3FE2F_01
+FFFFFFFFFFF80000_C120000000000000_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+000E48F9F4EBD30E_432C91F3E9D7A61C_00
+FFFFFFFFFFFC0000_C110000000000000_00
+DFFFFFFFFFFBFFFE_C3C0000000000200_01
+FC91C23EE8C9424F_C38B71EE08B9B5ED_01
+FFFFFFFFFFFE0000_C100000000000000_00
+F7DFFBFFFFFFFFFE_C3A0400800000000_01
+000000002CAE080C_41C6570406000000_00
+FFFFFFFFFFFF0000_C0F0000000000000_00
+FFFFC00010000020_C2CFFFF7FFFFF000_00
+04D921F917B20E40_43936487E45EC839_00
+FFFFFFFFFFFF8000_C0E0000000000000_00
+F8000FFFFFFFFFFD_C39FFFC000000000_01
+FFF17C566BC7D811_C32D075328704FDE_00
+FFFFFFFFFFFFC000_C0D0000000000000_00
+00000000000000FE_406FC00000000000_00
+FFF82AC14930D386_C31F54FADB3CB1E8_00
+FFFFFFFFFFFFE000_C0C0000000000000_00
+00000000000003FC_408FE00000000000_00
+000E62EC60E119FC_432CC5D8C1C233F8_00
+FFFFFFFFFFFFF000_C0B0000000000000_00
+FFFFEFF7FF7FFFFE_C2B0080080000200_00
+0E2B1ECF210EEDC5_43AC563D9E421DDB_01
+FFFFFFFFFFFFF800_C0A0000000000000_00
+00000000007FFF1F_415FFFC7C0000000_00
+FFFFFE534F5676F7_C27ACB0A98909000_00
+FFFFFFFFFFFFFC00_C090000000000000_00
+0000001004FFFFFD_423004FFFFFD0000_00
+0000035C939669F1_428AE49CB34F8800_00
+FFFFFFFFFFFFFE00_C080000000000000_00
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFD_01
+FFFFFFFFFFFFFF91_C05BC00000000000_00
+FFFFFFFFFFFFFF00_C070000000000000_00
+01FFFFFFFBFFEFFE_437FFFFFFFBFFEFF_01
+000000000000016E_4076E00000000000_00
+FFFFFFFFFFFFFF80_C060000000000000_00
+FFF7FFFFFFFFF7FD_C320000000001006_00
+FFFFF8E2BCFAC553_C29C750C14EAB400_00
+FFFFFFFFFFFFFFC0_C050000000000000_00
+FFFFFBFFFFFE0FFE_C290000007C00800_00
+00000001A4E704BF_41FA4E704BF00000_00
+FFFFFFFFFFFFFFE0_C040000000000000_00
+1400007FFFFFFFFD_43B400007FFFFFFF_01
+FFFFFFFC93B187B4_C20B6273C2600000_00
+FFFFFFFFFFFFFFF0_C030000000000000_00
+40000000007FFFFD_43D0000000001FFF_01
+000000000067D468_4159F51A00000000_00
+FFFFFFFFFFFFFFF8_C020000000000000_00
+007FFEFFFFFBFFFE_435FFFBFFFFEFFFF_01
+FFFFFFE26CEC79F8_C23D931386080000_00
+FFFFFFFFFFFFFFFC_C010000000000000_00
+00FFFFFF000000FF_436FFFFFE000001F_01
+FFFFFFFFE0D3983A_C1BF2C67C6000000_00
+FFFFFFFFFFFFFFFE_C000000000000000_00
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+FFFFFFFDF4A7088A_C2005AC7BBB00000_00
+FFFFFFFFFFFFFFFF_BFF0000000000000_00
+000008000000027E_42A000000004FC00_00
+000000000000F4E8_40EE9D0000000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFF83FFDF_C15F000840000000_00
+00000E11407887B2_42AC2280F10F6400_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+04000003FFFFFFF6_439000000FFFFFFF_01
+0000000000000513_40944C0000000000_00
+FFFFFFFFFFFFFFF7_C022000000000000_00
+BFFC00000000003E_C3D000FFFFFFFFFF_01
+00000008D7BBB75B_4221AF776EB60000_00
+FFFFFFFFFFFFFFEF_C031000000000000_00
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+FFFFFFFFFFCD5A23_C14952EE80000000_00
+FFFFFFFFFFFFFFDF_C040800000000000_00
+FFBFDFFFBFFFFFFF_C350080010000000_01
+000000000000007F_405FC00000000000_00
+FFFFFFFFFFFFFFBF_C050400000000000_00
+00000007FF800003_421FFE00000C0000_00
+000000000002BB02_4105D81000000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEE7FF_C0F1801000000000_00
+00264B2B9BAD0DA2_43432595CDD686D1_00
+FFFFFFFFFFFFFEFF_C070100000000000_00
+0000000000100803_4130080300000000_00
+FF9B1DCB9F857D5E_C359388D181EA0A8_01
+FFFFFFFFFFFFFDFF_C080080000000000_00
+FFFFFFBFFFFFEFEE_C250000004048000_00
+F6FD7542899C1C6F_C3A205157AECC7C7_01
+FFFFFFFFFFFFFBFF_C090040000000000_00
+FF800000004001FF_C35FFFFFFFEFFF80_01
+0000000002BE4932_4185F24990000000_00
+FFFFFFFFFFFFF7FF_C0A0020000000000_00
+00001004000FFFFE_42B004000FFFFE00_00
+FFFFFF9DAA0123E0_C258957FB7080000_00
+FFFFFFFFFFFFEFFF_C0B0010000000000_00
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+FFFC1C8703B1DCB0_C30F1BC7E2711A80_00
+FFFFFFFFFFFFDFFF_C0C0008000000000_00
+FE0FE00000000000_C37F020000000000_00
+0779ED944A4E2779_439DE7B65129389D_01
+FFFFFFFFFFFFBFFF_C0D0004000000000_00
+FBFFFE0400000000_C3900007F0000000_00
+0000010127E03666_4270127E03666000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+FFFFF0200000FFFE_C2AFBFFFFE000400_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFFFFFFEFFFF_C0F0001000000000_00
+FFEFFE0000080000_C33001FFFFF80000_00
+FFFFFFFFFD3354EA_C1866558B0000000_00
+FFFFFFFFFFFDFFFF_C100000800000000_00
+003FF0000003FFFE_434FF8000001FFFF_00
+0000006375B23F7B_4258DD6C8FDEC000_00
+FFFFFFFFFFFBFFFF_C110000400000000_00
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000092117F38_41E2422FE7000000_00
+FFFFFFFFFFF7FFFF_C120000200000000_00
+FFFFFFFFFFFF7FFF_C0E0002000000000_00
+00000000000008BE_40A17C0000000000_00
+FFFFFFFFFFEFFFFF_C130000100000000_00
+004000020FFFFFFF_4350000083FFFFFF_01
+FFFFB84C2D8BC9CB_C2D1ECF49D0D8D40_00
+FFFFFFFFFFDFFFFF_C140000080000000_00
+00FFFFFFFFFFFFFD_436FFFFFFFFFFFFF_01
+00000023C2C6F284_4241E16379420000_00
+FFFFFFFFFFBFFFFF_C150000040000000_00
+FFFDDFFFFFFFFFFD_C301000000000018_00
+00000000746356C4_41DD18D5B1000000_00
+FFFFFFFFFF7FFFFF_C160000020000000_00
+010000000000BFFF_4370000000000BFF_01
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FFFFFFFFFEFFFFFF_C170000010000000_00
+FFFFBF7FFBFFFFFE_C2D0200100000080_00
+00000006386CE889_4218E1B3A2240000_00
+FFFFFFFFFDFFFFFF_C180000008000000_00
+F00000F7FFFFFFFF_C3AFFFFE10000000_01
+FFFDFC53090C46A4_C3001D67B79DCAE0_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+0000000000800047_41600008E0000000_00
+FFFFFFFFD693872E_C1C4B63C69000000_00
+FFFFFFFFF7FFFFFF_C1A0000002000000_00
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000026A7845E35_424353C22F1A8000_00
+FFFFFFFFEFFFFFFF_C1B0000001000000_00
+FFFFFFDFFFFFFBFD_C240000002018000_00
+000000001433D14C_41B433D14C000000_00
+FFFFFFFFDFFFFFFF_C1C0000000800000_00
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+F0F23E8068D3D84A_C3AE1B82FF2E584F_01
+FFFFFFFFBFFFFFFF_C1D0000000400000_00
+F7FFBFFFFFFFBFFF_C3A0008000000080_01
+FFFFBD29B7459087_C2D0B5922E9BDE40_00
+FFFFFFFF7FFFFFFF_C1E0000000200000_00
+FFFFFFF8FFFFBFFF_C21C000100040000_00
+FFFFFFFFFFEDDC06_C13223FA00000000_00
+FFFFFFFEFFFFFFFF_C1F0000000100000_00
+FFFFFFF80001FFFF_C21FFFF800040000_00
+0000000000002FF9_40C7FC8000000000_00
+FFFFFFFDFFFFFFFF_C200000000080000_00
+004000040000FFFF_4350000100003FFF_01
+FFFFFFFFFFFFFFF1_C02E000000000000_00
+FFFFFFFBFFFFFFFF_C210000000040000_00
+C0000000007FFFFA_C3CFFFFFFFFFC000_01
+FFFFFFFFFE053E2B_C17FAC1D50000000_00
+FFFFFFF7FFFFFFFF_C220000000020000_00
+7FFE000007FFFFFF_43DFFF800001FFFF_01
+000000000000000D_402A000000000000_00
+FFFFFFEFFFFFFFFF_C230000000010000_00
+F80000000001007E_C39FFFFFFFFFFBFE_01
+FFFFED48424AD9D6_C2B2B7BDB5262A00_00
+FFFFFFDFFFFFFFFF_C240000000008000_00
+FFFFFE0001FEFFFF_C27FFFE010001000_00
+000000000000013B_4073B00000000000_00
+FFFFFFBFFFFFFFFF_C250000000004000_00
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_C260000000002000_00
+00FFF7FFFF7FFFFE_436FFEFFFFEFFFFF_01
+0000000000000006_4018000000000000_00
+FFFFFEFFFFFFFFFF_C270000000001000_00
+FBFFFFBFFFBFFFFF_C390000100010000_01
+00000000000001BA_407BA00000000000_00
+FFFFFDFFFFFFFFFF_C280000000000800_00
+0000000040000082_41D0000020800000_00
+FF07A2BF5B689F89_C36F0BA81492EC0E_01
+FFFFFBFFFFFFFFFF_C290000000000400_00
+0000001FF8000008_423FF80000080000_00
+F87CAA7DE672DE8B_C39E0D5608663485_01
+FFFFF7FFFFFFFFFF_C2A0000000000200_00
+07FFF80000000002_439FFFE000000000_01
+0000000010A1E5B8_41B0A1E5B8000000_00
+FFFFEFFFFFFFFFFF_C2B0000000000100_00
+F7FFFFE00007FFFF_C3A000003FFFF000_01
+FFFFFFFFFFF6ADFC_C122A40800000000_00
+FFFFDFFFFFFFFFFF_C2C0000000000080_00
+FFFFFF03FFFFFFC0_C26F800000080000_00
+EA579475948F0032_C3B5A86B8A6B70FF_01
+FFFFBFFFFFFFFFFF_C2D0000000000040_00
+FC00000000003FF6_C38FFFFFFFFFFE00_01
+002E677AC313BF60_434733BD6189DFB0_00
+FFFF7FFFFFFFFFFF_C2E0000000000020_00
+02000007FF7FFFFF_438000003FFBFFFF_01
+0000000E999639F1_422D332C73E20000_00
+FFFEFFFFFFFFFFFF_C2F0000000000010_00
+FFFF83FFFFFFFFBE_C2DF000000001080_00
+000000000001537D_40F537D000000000_00
+FFFDFFFFFFFFFFFF_C300000000000008_00
+EFFFFFC00000003D_C3B000003FFFFFFF_01
+FFFFFFF21FEDFD35_C22BC02405960000_00
+FFFBFFFFFFFFFFFF_C310000000000004_00
+FFFFFFF0000007FE_C22FFFFFF0040000_00
+FFFFFFFFFFDE0839_C140FBE380000000_00
+FFF7FFFFFFFFFFFF_C320000000000002_00
+0000007FFFE000FF_425FFFF8003FC000_00
+FFFFFFFF79F30F48_C1E0C19E17000000_00
+FFEFFFFFFFFFFFFF_C330000000000001_00
+FFFFFC13FFFFFFFD_C28F600000001800_00
+0000000000001B85_40BB850000000000_00
+FFDFFFFFFFFFFFFF_C340000000000000_01
+000008000007FFFE_42A000000FFFFC00_00
+12DB4409E5AE87E6_43B2DB4409E5AE87_01
+FFBFFFFFFFFFFFFF_C350000000000000_01
+FFFFFFFFFFF7BFEE_C120802400000000_00
+FFFFFFFFFFFFFFFD_C008000000000000_00
+FF7FFFFFFFFFFFFF_C360000000000000_01
+000000001040FFFE_41B040FFFE000000_00
+00000909A09C13D3_42A213413827A600_00
+FEFFFFFFFFFFFFFF_C370000000000000_01
+FFFFFF01FFFFFF7F_C26FC00000102000_00
+FFFFFF72E7D2575D_C261A305B5146000_00
+FDFFFFFFFFFFFFFF_C380000000000000_01
+FFFFFFFFFFFEFFDB_C0F0025000000000_00
+0000000000000017_4037000000000000_00
+FBFFFFFFFFFFFFFF_C390000000000000_01
+100000001FFFFFF6_43B00000001FFFFF_01
+000000114B12EF51_42314B12EF510000_00
+F7FFFFFFFFFFFFFF_C3A0000000000000_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFB_01
+FFFFFF769F3A5C2C_C2612C18B47A8000_00
+EFFFFFFFFFFFFFFF_C3B0000000000000_01
+FFFFFFFDF7FFFFFD_C200400000180000_00
+FFFFFFFFFFFFFFF2_C02C000000000000_00
+DFFFFFFFFFFFFFFF_C3C0000000000000_01
+FFFFFFFFFE0007FF_C17FFF8010000000_00
+000000000000001E_403E000000000000_00
+BFFFFFFFFFFFFFFF_C3D0000000000000_01
+FFF800000009FFFF_C31FFFFFFFD80004_00
+0000000000007AA4_40DEA90000000000_00
+7FFFFFFFFFFFFFFF_43DFFFFFFFFFFFFF_01
+4080000000FFFFFF_43D0200000003FFF_01
+000000000DE7601D_41ABCEC03A000000_00
+3FFFFFFFFFFFFFFF_43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE_C348000000200001_00
+FFFFFFFFFFFFFFCA_C04B000000000000_00
+1FFFFFFFFFFFFFFF_43BFFFFFFFFFFFFF_01
+000080400000003F_42E00800000007E0_00
+00000000001F75A5_413F75A500000000_00
+0FFFFFFFFFFFFFFF_43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE_C230000030020000_00
+FFFFFEE775887420_C27188A778BE0000_00
+07FFFFFFFFFFFFFF_439FFFFFFFFFFFFF_01
+00000000000801FE_412003FC00000000_00
+0000000000213FF1_41409FF880000000_00
+03FFFFFFFFFFFFFF_438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE_439FFBFFFFFFFFFF_01
+0000000000000004_4010000000000000_00
+01FFFFFFFFFFFFFF_437FFFFFFFFFFFFF_01
+0000000820000003_4220400000060000_00
+FFFFFFF9AD105214_C2194BBEB7B00000_00
+00FFFFFFFFFFFFFF_436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE_C2AFE00000008400_00
+FFFFFFFFFFCC48E7_C149DB8C80000000_00
+007FFFFFFFFFFFFF_435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+FFFFFFFFFF0BA6CB_C16E8B26A0000000_00
+003FFFFFFFFFFFFF_434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF_C260080000082000_00
+FFFFFFFFFFF24425_C12B77B600000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFDFF_01
+FFFFFF4E7115EC53_C26631DD4275A000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_C29FF00000010400_00
+FFFFFC2E539ADCFE_C28E8D6329181000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_C190000004000000_00
+00000055084732F3_42554211CCBCC000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_C3D0002000000000_01
+FFFFFFFFFFFF8543_C0DEAF4000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+FFFFFFFFFFFE491B_C0FB6E5000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_C38FFEFFFFFFFF00_01
+FFFFF16898822A24_C2AD2ECEFBABB800_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF81FFFFFFFF_01
+FFFFFF8FFE18C7BF_C25C0079CE104000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_C270001000003000_00
+00F03620C1266ED9_436E06C41824CDDB_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_C3D0204000000000_01
+FFFFFFFFFFFFFFD5_C045800000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_C31000001FF00008_00
+0000000000068684_411A1A1000000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_C3C000000FFFFFFF_01
+FFFFFFFFFFFFECF5_C0B30B0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_C2EFF7FFFFE00020_00
+0000000000000002_4000000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_C390000000000108_01
+0000000000000BC9_40A7920000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_C3DFE00000000008_01
+FFC274E35A70CD76_C34EC58E52C79945_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFDFFFF_01
+FFFFFFFF00E73AFC_C1EFE318A0800000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_C34FFFFFFFFF7FF9_00
+FFFFFFFFFFFE15E9_C0FEA17000000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+0000000000000033_4049800000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+FFFFFFEE6B141E1B_C23194EBE1E50000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_C1A3FFF002000000_00
+00000001AB310BA6_41FAB310BA600000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+FFFFFFFFFFFFF195_C0ACD60000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_C1DFFFFFFD400000_00
+00000019BA8D5559_4239BA8D55590000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_C390040000000000_01
+FFFFFFB6F062822D_C25243E75F74C000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+01CEAD9E2FB104A4_437CEAD9E2FB104A_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+FFFFFFFFFD681E78_C184BF0C40000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000018_4038000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+FFFFFFFFFFFFFF95_C05AC00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000BFFFFFFFF_01
+0000001697087B19_423697087B190000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_C390000000004400_01
+0000000E64BDFC55_422CC97BF8AA0000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_C38FFFFFFFF00000_01
+FFFED156A62AB849_C2F2EA959D547B70_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_C21F0040000C0000_00
+00015354EAE7C259_42F5354EAE7C2590_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_C060200000000000_00
+FFFFFFF0F4DF3C75_C22E164187160000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_C317FFFFFFFF8004_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_C160003800000000_00
+FFFFFFDB5433CB9B_C24255E61A328000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_C280010010001800_00
+FFFFFFFFFFDEAE1F_C140A8F080000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_C1AFEFFFF4000000_00
+FFFFFFFE7735DEC7_C1F88CA213900000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000003757D8B12ED_428BABEC58976800_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_C27F808000001000_00
+00000A654064E046_42A4CA80C9C08C00_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A000000000002F_01
+FFFFFFFFFFFFFFE7_C039000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF7_01
+FFFFAD78B3D6C3B6_C2D4A1D30A4F1280_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+FFFFFFF70B77F34F_C221E91019620000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_C25FFFE400008000_00
+0000013EB4D67EC8_4273EB4D67EC8000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_C3D0000800010000_01
+0005CEAF34EA1DC7_43173ABCD3A8771C_00
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+FFFFFFFFFFFFFFFB_C014000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000360D0_410B068000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_437003FFFFFFFFFF_01
+00C000708FF1BA51_4368000E11FE374A_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_C39FF7FFFFF00000_01
+0F9E07DCC0BDC061_43AF3C0FB9817B80_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000007_01
+FFFFFFE1B9B2A079_C23E464D5F870000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_C31FFFFFFFFDFC04_00
+00000000001EB5B4_413EB5B400000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+00000000005AC607_4156B181C0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_C1F07FFFF0100000_00
+000005C5B9D66984_429716E759A61000_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_C3CFFF0000000800_00
+00001D06B372AA06_42BD06B372AA0600_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f32_rd.tv b/wally-pipelined/testbench/fp/ui32_f32_rd.tv
new file mode 100644
index 000000000..aa109500c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f32_rd.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_4DFF7FFF_01
+0000448E_46891C00_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00019E14_47CF0A00_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+0000DE38_475E3800_00
+00000002_40000000_00
+FFDFFC02_4F7FDFFC_01
+03794C79_4C5E531E_01
+00000004_40800000_00
+F00FFFFE_4F700FFF_01
+00010A95_47854A80_00
+00000008_41000000_00
+FFFFF97F_4F7FFFF9_01
+01AE458D_4BD722C6_01
+00000010_41800000_00
+0101001E_4B80800F_00
+69EB4561_4ED3D68A_01
+00000020_42000000_00
+8001FFEE_4F0001FF_01
+0003DD08_48774200_00
+00000040_42800000_00
+FFF03FF9_4F7FF03F_01
+000EDF36_496DF360_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000679_44CF2000_00
+00000100_43800000_00
+BFFFFFEF_4F3FFFFF_01
+0000000F_41700000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+00000590_44B20000_00
+00000400_44800000_00
+F7FFFEFB_4F77FFFE_01
+6FEA335F_4EDFD466_01
+00000800_45000000_00
+FFC07FFF_4F7FC07F_01
+377957FD_4E5DE55F_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+00000AC9_452C9000_00
+00002000_46000000_00
+FFFF8004_4F7FFF80_01
+000BE0DE_493E0DE0_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000400_44800000_00
+00008000_47000000_00
+FF8201FF_4F7F8201_01
+0001D2F1_47E97880_00
+00010000_47800000_00
+0000047E_448FC000_00
+0031B7E5_4A46DF94_00
+00020000_48000000_00
+02200200_4C080080_00
+0213F7E6_4C04FDF9_01
+00040000_48800000_00
+FFFDC007_4F7FFDC0_01
+1D0ABD9A_4DE855EC_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00007CEE_46F9DC00_00
+00100000_49800000_00
+DFDFE000_4F5FDFE0_00
+01FB1642_4BFD8B21_00
+00200000_4A000000_00
+FC000078_4F7C0000_01
+5F70EEC1_4EBEE1DD_01
+00400000_4A800000_00
+00100082_49800410_00
+00000221_44084000_00
+00800000_4B000000_00
+FF7BFF7F_4F7F7BFF_01
+00016393_47B1C980_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFDF_01
+000005B4_44B68000_00
+02000000_4C000000_00
+8002FFFF_4F0002FF_01
+000048E2_4691C400_00
+04000000_4C800000_00
+FFFC0DFE_4F7FFC0D_01
+0000071B_44E36000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF6F_01
+0003092B_48424AC0_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+01B4F3D1_4BDA79E8_01
+20000000_4E000000_00
+FEF801FF_4F7EF801_01
+0000000D_41500000_00
+40000000_4E800000_00
+BFF3FFFE_4F3FF3FF_01
+0009806B_491806B0_00
+80000000_4F000000_00
+0000A07E_47207E00_00
+0000A59F_47259F00_00
+C0000000_4F400000_00
+E0007FDE_4F60007F_01
+0000343E_4650F800_00
+E0000000_4F600000_00
+0000FF7C_477F7C00_00
+00000007_40E00000_00
+F0000000_4F700000_00
+BDFFFFFC_4F3DFFFF_01
+0001E3C1_47F1E080_00
+F8000000_4F780000_00
+28003FFE_4E2000FF_01
+00000008_41000000_00
+FC000000_4F7C0000_00
+00EEFFFF_4B6EFFFF_00
+0000BEB0_473EB000_00
+FE000000_4F7E0000_00
+00000F7D_4577D000_00
+0000000F_41700000_00
+FF000000_4F7F0000_00
+0000406D_4680DA00_00
+0000009A_431A0000_00
+FF800000_4F7F8000_00
+203FFFFD_4E00FFFF_01
+0000001A_41D00000_00
+FFC00000_4F7FC000_00
+FFFF007C_4F7FFF00_01
+0000409B_46813600_00
+FFE00000_4F7FE000_00
+00E00FFF_4B600FFF_00
+0000000E_41600000_00
+FFF00000_4F7FF000_00
+00200FFC_4A003FF0_00
+00001714_45B8A000_00
+FFF80000_4F7FF800_00
+F800040E_4F780004_01
+00000113_43898000_00
+FFFC0000_4F7FFC00_00
+F83BFFFF_4F783BFF_01
+0003F584_487D6100_00
+FFFE0000_4F7FFE00_00
+F6FFFBFF_4F76FFFB_01
+00000000_00000000_00
+FFFF0000_4F7FFF00_00
+80003FFD_4F00003F_01
+0000002D_42340000_00
+FFFF8000_4F7FFF80_00
+004001FD_4A8003FA_00
+001D734E_49EB9A70_00
+FFFFC000_4F7FFFC0_00
+006003FE_4AC007FC_00
+019DBAA8_4BCEDD54_00
+FFFFE000_4F7FFFE0_00
+000403EE_48807DC0_00
+08734668_4D073466_01
+FFFFF000_4F7FFFF0_00
+01200002_4B900001_00
+000874A5_49074A50_00
+FFFFF800_4F7FFFF8_00
+00060001_48C00020_00
+00000008_41000000_00
+FFFFFC00_4F7FFFFC_00
+001FFEDD_49FFF6E8_00
+000056DF_46ADBE00_00
+FFFFFE00_4F7FFFFE_00
+EFFFEFFD_4F6FFFEF_01
+02CF5EC6_4C33D7B1_01
+FFFFFF00_4F7FFFFF_00
+1FF00002_4DFF8000_01
+06DB786B_4CDB6F0D_01
+FFFFFF80_4F7FFFFF_01
+F0000FBE_4F70000F_01
+00000019_41C80000_00
+FFFFFFC0_4F7FFFFF_01
+0010801F_498400F8_00
+0003F238_487C8E00_00
+FFFFFFE0_4F7FFFFF_01
+F8000047_4F780000_01
+0006133C_48C26780_00
+FFFFFFF0_4F7FFFFF_01
+003C001F_4A70007C_00
+000009F1_451F1000_00
+FFFFFFF8_4F7FFFFF_01
+FFDFBFFF_4F7FDFBF_01
+015E507F_4BAF283F_01
+FFFFFFFC_4F7FFFFF_01
+037FFFDE_4C5FFFF7_01
+00017C6F_47BE3780_00
+FFFFFFFE_4F7FFFFF_01
+000000FD_437D0000_00
+0000042A_44854000_00
+FFFFFFFF_4F7FFFFF_01
+021FFF7D_4C07FFDF_01
+0000002A_42280000_00
+FFFFFFFD_4F7FFFFF_01
+4010FFFF_4E8021FF_01
+00000013_41980000_00
+FFFFFFFB_4F7FFFFF_01
+FFFF800B_4F7FFF80_01
+000004B8_44970000_00
+FFFFFFF7_4F7FFFFF_01
+FF800803_4F7F8008_01
+00000006_40C00000_00
+FFFFFFEF_4F7FFFFF_01
+00803FFB_4B003FFB_00
+00000708_44E10000_00
+FFFFFFDF_4F7FFFFF_01
+2107FFFE_4E041FFF_01
+00215D4F_4A05753C_00
+FFFFFFBF_4F7FFFFF_01
+400087FD_4E80010F_01
+0000001F_41F80000_00
+FFFFFF7F_4F7FFFFF_01
+FDFC007E_4F7DFC00_01
+0000000E_41600000_00
+FFFFFEFF_4F7FFFFE_01
+FFF80100_4F7FF801_00
+00000699_44D32000_00
+FFFFFDFF_4F7FFFFD_01
+03000002_4C400000_01
+000716EA_48E2DD40_00
+FFFFFBFF_4F7FFFFB_01
+C7FDFFFF_4F47FDFF_01
+00000327_4449C000_00
+FFFFF7FF_4F7FFFF7_01
+0103DFFE_4B81EFFF_00
+47661FD8_4E8ECC3F_01
+FFFFEFFF_4F7FFFEF_01
+83FFFFFE_4F03FFFF_01
+0CD956DB_4D4D956D_01
+FFFFDFFF_4F7FFFDF_01
+FF2001FD_4F7F2001_01
+04D35BBF_4C9A6B77_01
+FFFFBFFF_4F7FFFBF_01
+DFEFEFFE_4F5FEFEF_01
+15DA4300_4DAED218_00
+FFFF7FFF_4F7FFF7F_01
+40001040_4E800020_01
+812EDF40_4F012EDF_01
+FFFEFFFF_4F7FFEFF_01
+FFFFC007_4F7FFFC0_01
+08B6FCC9_4D0B6FCC_01
+FFFDFFFF_4F7FFDFF_01
+000007FE_44FFC000_00
+003DE950_4A77A540_00
+FFFBFFFF_4F7FFBFF_01
+7FFFFE03_4EFFFFFC_01
+02B02B59_4C2C0AD6_01
+FFF7FFFF_4F7FF7FF_01
+10FF7FFF_4D87FBFF_01
+00408D5E_4A811ABC_00
+FFEFFFFF_4F7FEFFF_01
+FFFF007E_4F7FFF00_01
+003C2108_4A708420_00
+FFDFFFFF_4F7FDFFF_01
+00FFC001_4B7FC001_00
+001C6B36_49E359B0_00
+FFBFFFFF_4F7FBFFF_01
+FFFF7FFF_4F7FFF7F_01
+0001D055_47E82A80_00
+FF7FFFFF_4F7F7FFF_01
+027BFFFE_4C1EFFFF_01
+013090D0_4B984868_00
+FEFFFFFF_4F7EFFFF_01
+00082040_49020400_00
+000000EE_436E0000_00
+FDFFFFFF_4F7DFFFF_01
+FDFFFF87_4F7DFFFF_01
+14C3764D_4DA61BB2_01
+FBFFFFFF_4F7BFFFF_01
+0006007E_48C00FC0_00
+000003EF_447BC000_00
+F7FFFFFF_4F77FFFF_01
+FFBF7FFE_4F7FBF7F_01
+001C4E5A_49E272D0_00
+EFFFFFFF_4F6FFFFF_01
+FFF97FFD_4F7FF97F_01
+000005D1_44BA2000_00
+DFFFFFFF_4F5FFFFF_01
+2FFFFFFE_4E3FFFFF_01
+00936721_4B136721_00
+BFFFFFFF_4F3FFFFF_01
+00004BFF_4697FE00_00
+00002544_46151000_00
+7FFFFFFF_4EFFFFFF_01
+007FDFFB_4AFFBFF6_00
+0000BD5E_473D5E00_00
+3FFFFFFF_4E7FFFFF_01
+FFBF8003_4F7FBF80_01
+000045D2_468BA400_00
+1FFFFFFF_4DFFFFFF_01
+FFFFFDBF_4F7FFFFD_01
+00000189_43C48000_00
+0FFFFFFF_4D7FFFFF_01
+FFFE6FFE_4F7FFE6F_01
+008672A0_4B0672A0_00
+07FFFFFF_4CFFFFFF_01
+00000107_43838000_00
+0000CA70_474A7000_00
+03FFFFFF_4C7FFFFF_01
+002107FE_4A041FF8_00
+000148E7_47A47380_00
+01FFFFFF_4BFFFFFF_01
+F7FDFFEE_4F77FDFF_01
+00000030_42400000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_4F7FFF01_01
+0010FAEF_4987D778_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000001F5_43FA8000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_4F7FE07F_01
+005AFFFB_4AB5FFF6_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+034613B2_4C5184EC_01
+000FFFFF_497FFFF0_00
+F00005FE_4F700005_01
+000B6402_49364020_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C809FFF_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_4F7FFFFD_01
+000341C6_48507180_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+00000003_40400000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_4F7E7FDF_01
+0000003D_42740000_00
+00003FFF_467FFC00_00
+DBBFFFFE_4F5BBFFF_01
+00000C04_45404000_00
+00001FFF_45FFF800_00
+FFFFC018_4F7FFFC0_01
+00006853_46D0A600_00
+00000FFF_457FF000_00
+03FE007F_4C7F801F_01
+00000124_43920000_00
+000007FF_44FFE000_00
+FFFFEFBE_4F7FFFEF_01
+000B9AD8_4939AD80_00
+000003FF_447FC000_00
+DFFFFDFE_4F5FFFFD_01
+00000595_44B2A000_00
+000001FF_43FF8000_00
+FDFFFFFF_4F7DFFFF_01
+00000010_41800000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+030EC496_4C43B125_01
+0000007F_42FE0000_00
+B8007FFF_4F38007F_01
+00000112_43890000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+0000002F_423C0000_00
+0000001F_41F80000_00
+FF7FFF02_4F7F7FFF_01
+000002CE_44338000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+00000644_44C88000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+0000B8E7_4738E700_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f32_rne.tv b/wally-pipelined/testbench/fp/ui32_f32_rne.tv
new file mode 100644
index 000000000..4e348df90
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f32_rne.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_4DFF7FFF_01
+0000448E_46891C00_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00019E14_47CF0A00_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+0000DE38_475E3800_00
+00000002_40000000_00
+FFDFFC02_4F7FDFFC_01
+03794C79_4C5E531E_01
+00000004_40800000_00
+F00FFFFE_4F701000_01
+00010A95_47854A80_00
+00000008_41000000_00
+FFFFF97F_4F7FFFF9_01
+01AE458D_4BD722C6_01
+00000010_41800000_00
+0101001E_4B80800F_00
+69EB4561_4ED3D68B_01
+00000020_42000000_00
+8001FFEE_4F000200_01
+0003DD08_48774200_00
+00000040_42800000_00
+FFF03FF9_4F7FF040_01
+000EDF36_496DF360_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000679_44CF2000_00
+00000100_43800000_00
+BFFFFFEF_4F400000_01
+0000000F_41700000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+00000590_44B20000_00
+00000400_44800000_00
+F7FFFEFB_4F77FFFF_01
+6FEA335F_4EDFD467_01
+00000800_45000000_00
+FFC07FFF_4F7FC080_01
+377957FD_4E5DE560_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+00000AC9_452C9000_00
+00002000_46000000_00
+FFFF8004_4F7FFF80_01
+000BE0DE_493E0DE0_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000400_44800000_00
+00008000_47000000_00
+FF8201FF_4F7F8202_01
+0001D2F1_47E97880_00
+00010000_47800000_00
+0000047E_448FC000_00
+0031B7E5_4A46DF94_00
+00020000_48000000_00
+02200200_4C080080_00
+0213F7E6_4C04FDFA_01
+00040000_48800000_00
+FFFDC007_4F7FFDC0_01
+1D0ABD9A_4DE855ED_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00007CEE_46F9DC00_00
+00100000_49800000_00
+DFDFE000_4F5FDFE0_00
+01FB1642_4BFD8B21_00
+00200000_4A000000_00
+FC000078_4F7C0000_01
+5F70EEC1_4EBEE1DE_01
+00400000_4A800000_00
+00100082_49800410_00
+00000221_44084000_00
+00800000_4B000000_00
+FF7BFF7F_4F7F7BFF_01
+00016393_47B1C980_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFE0_01
+000005B4_44B68000_00
+02000000_4C000000_00
+8002FFFF_4F000300_01
+000048E2_4691C400_00
+04000000_4C800000_00
+FFFC0DFE_4F7FFC0E_01
+0000071B_44E36000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF70_01
+0003092B_48424AC0_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+01B4F3D1_4BDA79E8_01
+20000000_4E000000_00
+FEF801FF_4F7EF802_01
+0000000D_41500000_00
+40000000_4E800000_00
+BFF3FFFE_4F3FF400_01
+0009806B_491806B0_00
+80000000_4F000000_00
+0000A07E_47207E00_00
+0000A59F_47259F00_00
+C0000000_4F400000_00
+E0007FDE_4F600080_01
+0000343E_4650F800_00
+E0000000_4F600000_00
+0000FF7C_477F7C00_00
+00000007_40E00000_00
+F0000000_4F700000_00
+BDFFFFFC_4F3E0000_01
+0001E3C1_47F1E080_00
+F8000000_4F780000_00
+28003FFE_4E200100_01
+00000008_41000000_00
+FC000000_4F7C0000_00
+00EEFFFF_4B6EFFFF_00
+0000BEB0_473EB000_00
+FE000000_4F7E0000_00
+00000F7D_4577D000_00
+0000000F_41700000_00
+FF000000_4F7F0000_00
+0000406D_4680DA00_00
+0000009A_431A0000_00
+FF800000_4F7F8000_00
+203FFFFD_4E010000_01
+0000001A_41D00000_00
+FFC00000_4F7FC000_00
+FFFF007C_4F7FFF00_01
+0000409B_46813600_00
+FFE00000_4F7FE000_00
+00E00FFF_4B600FFF_00
+0000000E_41600000_00
+FFF00000_4F7FF000_00
+00200FFC_4A003FF0_00
+00001714_45B8A000_00
+FFF80000_4F7FF800_00
+F800040E_4F780004_01
+00000113_43898000_00
+FFFC0000_4F7FFC00_00
+F83BFFFF_4F783C00_01
+0003F584_487D6100_00
+FFFE0000_4F7FFE00_00
+F6FFFBFF_4F76FFFC_01
+00000000_00000000_00
+FFFF0000_4F7FFF00_00
+80003FFD_4F000040_01
+0000002D_42340000_00
+FFFF8000_4F7FFF80_00
+004001FD_4A8003FA_00
+001D734E_49EB9A70_00
+FFFFC000_4F7FFFC0_00
+006003FE_4AC007FC_00
+019DBAA8_4BCEDD54_00
+FFFFE000_4F7FFFE0_00
+000403EE_48807DC0_00
+08734668_4D073466_01
+FFFFF000_4F7FFFF0_00
+01200002_4B900001_00
+000874A5_49074A50_00
+FFFFF800_4F7FFFF8_00
+00060001_48C00020_00
+00000008_41000000_00
+FFFFFC00_4F7FFFFC_00
+001FFEDD_49FFF6E8_00
+000056DF_46ADBE00_00
+FFFFFE00_4F7FFFFE_00
+EFFFEFFD_4F6FFFF0_01
+02CF5EC6_4C33D7B2_01
+FFFFFF00_4F7FFFFF_00
+1FF00002_4DFF8000_01
+06DB786B_4CDB6F0D_01
+FFFFFF80_4F800000_01
+F0000FBE_4F700010_01
+00000019_41C80000_00
+FFFFFFC0_4F800000_01
+0010801F_498400F8_00
+0003F238_487C8E00_00
+FFFFFFE0_4F800000_01
+F8000047_4F780000_01
+0006133C_48C26780_00
+FFFFFFF0_4F800000_01
+003C001F_4A70007C_00
+000009F1_451F1000_00
+FFFFFFF8_4F800000_01
+FFDFBFFF_4F7FDFC0_01
+015E507F_4BAF2840_01
+FFFFFFFC_4F800000_01
+037FFFDE_4C5FFFF8_01
+00017C6F_47BE3780_00
+FFFFFFFE_4F800000_01
+000000FD_437D0000_00
+0000042A_44854000_00
+FFFFFFFF_4F800000_01
+021FFF7D_4C07FFDF_01
+0000002A_42280000_00
+FFFFFFFD_4F800000_01
+4010FFFF_4E802200_01
+00000013_41980000_00
+FFFFFFFB_4F800000_01
+FFFF800B_4F7FFF80_01
+000004B8_44970000_00
+FFFFFFF7_4F800000_01
+FF800803_4F7F8008_01
+00000006_40C00000_00
+FFFFFFEF_4F800000_01
+00803FFB_4B003FFB_00
+00000708_44E10000_00
+FFFFFFDF_4F800000_01
+2107FFFE_4E042000_01
+00215D4F_4A05753C_00
+FFFFFFBF_4F800000_01
+400087FD_4E800110_01
+0000001F_41F80000_00
+FFFFFF7F_4F7FFFFF_01
+FDFC007E_4F7DFC00_01
+0000000E_41600000_00
+FFFFFEFF_4F7FFFFF_01
+FFF80100_4F7FF801_00
+00000699_44D32000_00
+FFFFFDFF_4F7FFFFE_01
+03000002_4C400000_01
+000716EA_48E2DD40_00
+FFFFFBFF_4F7FFFFC_01
+C7FDFFFF_4F47FE00_01
+00000327_4449C000_00
+FFFFF7FF_4F7FFFF8_01
+0103DFFE_4B81EFFF_00
+47661FD8_4E8ECC40_01
+FFFFEFFF_4F7FFFF0_01
+83FFFFFE_4F040000_01
+0CD956DB_4D4D956E_01
+FFFFDFFF_4F7FFFE0_01
+FF2001FD_4F7F2002_01
+04D35BBF_4C9A6B78_01
+FFFFBFFF_4F7FFFC0_01
+DFEFEFFE_4F5FEFF0_01
+15DA4300_4DAED218_00
+FFFF7FFF_4F7FFF80_01
+40001040_4E800020_01
+812EDF40_4F012EDF_01
+FFFEFFFF_4F7FFF00_01
+FFFFC007_4F7FFFC0_01
+08B6FCC9_4D0B6FCD_01
+FFFDFFFF_4F7FFE00_01
+000007FE_44FFC000_00
+003DE950_4A77A540_00
+FFFBFFFF_4F7FFC00_01
+7FFFFE03_4EFFFFFC_01
+02B02B59_4C2C0AD6_01
+FFF7FFFF_4F7FF800_01
+10FF7FFF_4D87FC00_01
+00408D5E_4A811ABC_00
+FFEFFFFF_4F7FF000_01
+FFFF007E_4F7FFF00_01
+003C2108_4A708420_00
+FFDFFFFF_4F7FE000_01
+00FFC001_4B7FC001_00
+001C6B36_49E359B0_00
+FFBFFFFF_4F7FC000_01
+FFFF7FFF_4F7FFF80_01
+0001D055_47E82A80_00
+FF7FFFFF_4F7F8000_01
+027BFFFE_4C1F0000_01
+013090D0_4B984868_00
+FEFFFFFF_4F7F0000_01
+00082040_49020400_00
+000000EE_436E0000_00
+FDFFFFFF_4F7E0000_01
+FDFFFF87_4F7E0000_01
+14C3764D_4DA61BB2_01
+FBFFFFFF_4F7C0000_01
+0006007E_48C00FC0_00
+000003EF_447BC000_00
+F7FFFFFF_4F780000_01
+FFBF7FFE_4F7FBF80_01
+001C4E5A_49E272D0_00
+EFFFFFFF_4F700000_01
+FFF97FFD_4F7FF980_01
+000005D1_44BA2000_00
+DFFFFFFF_4F600000_01
+2FFFFFFE_4E400000_01
+00936721_4B136721_00
+BFFFFFFF_4F400000_01
+00004BFF_4697FE00_00
+00002544_46151000_00
+7FFFFFFF_4F000000_01
+007FDFFB_4AFFBFF6_00
+0000BD5E_473D5E00_00
+3FFFFFFF_4E800000_01
+FFBF8003_4F7FBF80_01
+000045D2_468BA400_00
+1FFFFFFF_4E000000_01
+FFFFFDBF_4F7FFFFE_01
+00000189_43C48000_00
+0FFFFFFF_4D800000_01
+FFFE6FFE_4F7FFE70_01
+008672A0_4B0672A0_00
+07FFFFFF_4D000000_01
+00000107_43838000_00
+0000CA70_474A7000_00
+03FFFFFF_4C800000_01
+002107FE_4A041FF8_00
+000148E7_47A47380_00
+01FFFFFF_4C000000_01
+F7FDFFEE_4F77FE00_01
+00000030_42400000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_4F7FFF02_01
+0010FAEF_4987D778_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000001F5_43FA8000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_4F7FE080_01
+005AFFFB_4AB5FFF6_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+034613B2_4C5184EC_01
+000FFFFF_497FFFF0_00
+F00005FE_4F700006_01
+000B6402_49364020_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C80A000_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_4F7FFFFD_01
+000341C6_48507180_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+00000003_40400000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_4F7E7FE0_01
+0000003D_42740000_00
+00003FFF_467FFC00_00
+DBBFFFFE_4F5BC000_01
+00000C04_45404000_00
+00001FFF_45FFF800_00
+FFFFC018_4F7FFFC0_01
+00006853_46D0A600_00
+00000FFF_457FF000_00
+03FE007F_4C7F8020_01
+00000124_43920000_00
+000007FF_44FFE000_00
+FFFFEFBE_4F7FFFF0_01
+000B9AD8_4939AD80_00
+000003FF_447FC000_00
+DFFFFDFE_4F5FFFFE_01
+00000595_44B2A000_00
+000001FF_43FF8000_00
+FDFFFFFF_4F7E0000_01
+00000010_41800000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+030EC496_4C43B126_01
+0000007F_42FE0000_00
+B8007FFF_4F380080_01
+00000112_43890000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+0000002F_423C0000_00
+0000001F_41F80000_00
+FF7FFF02_4F7F7FFF_01
+000002CE_44338000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+00000644_44C88000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+0000B8E7_4738E700_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f32_ru.tv b/wally-pipelined/testbench/fp/ui32_f32_ru.tv
new file mode 100644
index 000000000..788b82ff0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f32_ru.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_4DFF8000_01
+0000448E_46891C00_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00019E14_47CF0A00_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+0000DE38_475E3800_00
+00000002_40000000_00
+FFDFFC02_4F7FDFFD_01
+03794C79_4C5E531F_01
+00000004_40800000_00
+F00FFFFE_4F701000_01
+00010A95_47854A80_00
+00000008_41000000_00
+FFFFF97F_4F7FFFFA_01
+01AE458D_4BD722C7_01
+00000010_41800000_00
+0101001E_4B80800F_00
+69EB4561_4ED3D68B_01
+00000020_42000000_00
+8001FFEE_4F000200_01
+0003DD08_48774200_00
+00000040_42800000_00
+FFF03FF9_4F7FF040_01
+000EDF36_496DF360_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000679_44CF2000_00
+00000100_43800000_00
+BFFFFFEF_4F400000_01
+0000000F_41700000_00
+00000200_44000000_00
+010BFFFD_4B85FFFF_01
+00000590_44B20000_00
+00000400_44800000_00
+F7FFFEFB_4F77FFFF_01
+6FEA335F_4EDFD467_01
+00000800_45000000_00
+FFC07FFF_4F7FC080_01
+377957FD_4E5DE560_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+00000AC9_452C9000_00
+00002000_46000000_00
+FFFF8004_4F7FFF81_01
+000BE0DE_493E0DE0_00
+00004000_46800000_00
+3F00001E_4E7C0001_01
+00000400_44800000_00
+00008000_47000000_00
+FF8201FF_4F7F8202_01
+0001D2F1_47E97880_00
+00010000_47800000_00
+0000047E_448FC000_00
+0031B7E5_4A46DF94_00
+00020000_48000000_00
+02200200_4C080080_00
+0213F7E6_4C04FDFA_01
+00040000_48800000_00
+FFFDC007_4F7FFDC1_01
+1D0ABD9A_4DE855ED_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00007CEE_46F9DC00_00
+00100000_49800000_00
+DFDFE000_4F5FDFE0_00
+01FB1642_4BFD8B21_00
+00200000_4A000000_00
+FC000078_4F7C0001_01
+5F70EEC1_4EBEE1DE_01
+00400000_4A800000_00
+00100082_49800410_00
+00000221_44084000_00
+00800000_4B000000_00
+FF7BFF7F_4F7F7C00_01
+00016393_47B1C980_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFE0_01
+000005B4_44B68000_00
+02000000_4C000000_00
+8002FFFF_4F000300_01
+000048E2_4691C400_00
+04000000_4C800000_00
+FFFC0DFE_4F7FFC0E_01
+0000071B_44E36000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF70_01
+0003092B_48424AC0_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+01B4F3D1_4BDA79E9_01
+20000000_4E000000_00
+FEF801FF_4F7EF802_01
+0000000D_41500000_00
+40000000_4E800000_00
+BFF3FFFE_4F3FF400_01
+0009806B_491806B0_00
+80000000_4F000000_00
+0000A07E_47207E00_00
+0000A59F_47259F00_00
+C0000000_4F400000_00
+E0007FDE_4F600080_01
+0000343E_4650F800_00
+E0000000_4F600000_00
+0000FF7C_477F7C00_00
+00000007_40E00000_00
+F0000000_4F700000_00
+BDFFFFFC_4F3E0000_01
+0001E3C1_47F1E080_00
+F8000000_4F780000_00
+28003FFE_4E200100_01
+00000008_41000000_00
+FC000000_4F7C0000_00
+00EEFFFF_4B6EFFFF_00
+0000BEB0_473EB000_00
+FE000000_4F7E0000_00
+00000F7D_4577D000_00
+0000000F_41700000_00
+FF000000_4F7F0000_00
+0000406D_4680DA00_00
+0000009A_431A0000_00
+FF800000_4F7F8000_00
+203FFFFD_4E010000_01
+0000001A_41D00000_00
+FFC00000_4F7FC000_00
+FFFF007C_4F7FFF01_01
+0000409B_46813600_00
+FFE00000_4F7FE000_00
+00E00FFF_4B600FFF_00
+0000000E_41600000_00
+FFF00000_4F7FF000_00
+00200FFC_4A003FF0_00
+00001714_45B8A000_00
+FFF80000_4F7FF800_00
+F800040E_4F780005_01
+00000113_43898000_00
+FFFC0000_4F7FFC00_00
+F83BFFFF_4F783C00_01
+0003F584_487D6100_00
+FFFE0000_4F7FFE00_00
+F6FFFBFF_4F76FFFC_01
+00000000_00000000_00
+FFFF0000_4F7FFF00_00
+80003FFD_4F000040_01
+0000002D_42340000_00
+FFFF8000_4F7FFF80_00
+004001FD_4A8003FA_00
+001D734E_49EB9A70_00
+FFFFC000_4F7FFFC0_00
+006003FE_4AC007FC_00
+019DBAA8_4BCEDD54_00
+FFFFE000_4F7FFFE0_00
+000403EE_48807DC0_00
+08734668_4D073467_01
+FFFFF000_4F7FFFF0_00
+01200002_4B900001_00
+000874A5_49074A50_00
+FFFFF800_4F7FFFF8_00
+00060001_48C00020_00
+00000008_41000000_00
+FFFFFC00_4F7FFFFC_00
+001FFEDD_49FFF6E8_00
+000056DF_46ADBE00_00
+FFFFFE00_4F7FFFFE_00
+EFFFEFFD_4F6FFFF0_01
+02CF5EC6_4C33D7B2_01
+FFFFFF00_4F7FFFFF_00
+1FF00002_4DFF8001_01
+06DB786B_4CDB6F0E_01
+FFFFFF80_4F800000_01
+F0000FBE_4F700010_01
+00000019_41C80000_00
+FFFFFFC0_4F800000_01
+0010801F_498400F8_00
+0003F238_487C8E00_00
+FFFFFFE0_4F800000_01
+F8000047_4F780001_01
+0006133C_48C26780_00
+FFFFFFF0_4F800000_01
+003C001F_4A70007C_00
+000009F1_451F1000_00
+FFFFFFF8_4F800000_01
+FFDFBFFF_4F7FDFC0_01
+015E507F_4BAF2840_01
+FFFFFFFC_4F800000_01
+037FFFDE_4C5FFFF8_01
+00017C6F_47BE3780_00
+FFFFFFFE_4F800000_01
+000000FD_437D0000_00
+0000042A_44854000_00
+FFFFFFFF_4F800000_01
+021FFF7D_4C07FFE0_01
+0000002A_42280000_00
+FFFFFFFD_4F800000_01
+4010FFFF_4E802200_01
+00000013_41980000_00
+FFFFFFFB_4F800000_01
+FFFF800B_4F7FFF81_01
+000004B8_44970000_00
+FFFFFFF7_4F800000_01
+FF800803_4F7F8009_01
+00000006_40C00000_00
+FFFFFFEF_4F800000_01
+00803FFB_4B003FFB_00
+00000708_44E10000_00
+FFFFFFDF_4F800000_01
+2107FFFE_4E042000_01
+00215D4F_4A05753C_00
+FFFFFFBF_4F800000_01
+400087FD_4E800110_01
+0000001F_41F80000_00
+FFFFFF7F_4F800000_01
+FDFC007E_4F7DFC01_01
+0000000E_41600000_00
+FFFFFEFF_4F7FFFFF_01
+FFF80100_4F7FF801_00
+00000699_44D32000_00
+FFFFFDFF_4F7FFFFE_01
+03000002_4C400001_01
+000716EA_48E2DD40_00
+FFFFFBFF_4F7FFFFC_01
+C7FDFFFF_4F47FE00_01
+00000327_4449C000_00
+FFFFF7FF_4F7FFFF8_01
+0103DFFE_4B81EFFF_00
+47661FD8_4E8ECC40_01
+FFFFEFFF_4F7FFFF0_01
+83FFFFFE_4F040000_01
+0CD956DB_4D4D956E_01
+FFFFDFFF_4F7FFFE0_01
+FF2001FD_4F7F2002_01
+04D35BBF_4C9A6B78_01
+FFFFBFFF_4F7FFFC0_01
+DFEFEFFE_4F5FEFF0_01
+15DA4300_4DAED218_00
+FFFF7FFF_4F7FFF80_01
+40001040_4E800021_01
+812EDF40_4F012EE0_01
+FFFEFFFF_4F7FFF00_01
+FFFFC007_4F7FFFC1_01
+08B6FCC9_4D0B6FCD_01
+FFFDFFFF_4F7FFE00_01
+000007FE_44FFC000_00
+003DE950_4A77A540_00
+FFFBFFFF_4F7FFC00_01
+7FFFFE03_4EFFFFFD_01
+02B02B59_4C2C0AD7_01
+FFF7FFFF_4F7FF800_01
+10FF7FFF_4D87FC00_01
+00408D5E_4A811ABC_00
+FFEFFFFF_4F7FF000_01
+FFFF007E_4F7FFF01_01
+003C2108_4A708420_00
+FFDFFFFF_4F7FE000_01
+00FFC001_4B7FC001_00
+001C6B36_49E359B0_00
+FFBFFFFF_4F7FC000_01
+FFFF7FFF_4F7FFF80_01
+0001D055_47E82A80_00
+FF7FFFFF_4F7F8000_01
+027BFFFE_4C1F0000_01
+013090D0_4B984868_00
+FEFFFFFF_4F7F0000_01
+00082040_49020400_00
+000000EE_436E0000_00
+FDFFFFFF_4F7E0000_01
+FDFFFF87_4F7E0000_01
+14C3764D_4DA61BB3_01
+FBFFFFFF_4F7C0000_01
+0006007E_48C00FC0_00
+000003EF_447BC000_00
+F7FFFFFF_4F780000_01
+FFBF7FFE_4F7FBF80_01
+001C4E5A_49E272D0_00
+EFFFFFFF_4F700000_01
+FFF97FFD_4F7FF980_01
+000005D1_44BA2000_00
+DFFFFFFF_4F600000_01
+2FFFFFFE_4E400000_01
+00936721_4B136721_00
+BFFFFFFF_4F400000_01
+00004BFF_4697FE00_00
+00002544_46151000_00
+7FFFFFFF_4F000000_01
+007FDFFB_4AFFBFF6_00
+0000BD5E_473D5E00_00
+3FFFFFFF_4E800000_01
+FFBF8003_4F7FBF81_01
+000045D2_468BA400_00
+1FFFFFFF_4E000000_01
+FFFFFDBF_4F7FFFFE_01
+00000189_43C48000_00
+0FFFFFFF_4D800000_01
+FFFE6FFE_4F7FFE70_01
+008672A0_4B0672A0_00
+07FFFFFF_4D000000_01
+00000107_43838000_00
+0000CA70_474A7000_00
+03FFFFFF_4C800000_01
+002107FE_4A041FF8_00
+000148E7_47A47380_00
+01FFFFFF_4C000000_01
+F7FDFFEE_4F77FE00_01
+00000030_42400000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_4F7FFF02_01
+0010FAEF_4987D778_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000001F5_43FA8000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_4F7FE080_01
+005AFFFB_4AB5FFF6_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+034613B2_4C5184ED_01
+000FFFFF_497FFFF0_00
+F00005FE_4F700006_01
+000B6402_49364020_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C80A000_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_4F7FFFFE_01
+000341C6_48507180_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D4_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+00000003_40400000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_4F7E7FE0_01
+0000003D_42740000_00
+00003FFF_467FFC00_00
+DBBFFFFE_4F5BC000_01
+00000C04_45404000_00
+00001FFF_45FFF800_00
+FFFFC018_4F7FFFC1_01
+00006853_46D0A600_00
+00000FFF_457FF000_00
+03FE007F_4C7F8020_01
+00000124_43920000_00
+000007FF_44FFE000_00
+FFFFEFBE_4F7FFFF0_01
+000B9AD8_4939AD80_00
+000003FF_447FC000_00
+DFFFFDFE_4F5FFFFE_01
+00000595_44B2A000_00
+000001FF_43FF8000_00
+FDFFFFFF_4F7E0000_01
+00000010_41800000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+030EC496_4C43B126_01
+0000007F_42FE0000_00
+B8007FFF_4F380080_01
+00000112_43890000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+0000002F_423C0000_00
+0000001F_41F80000_00
+FF7FFF02_4F7F8000_01
+000002CE_44338000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+00000644_44C88000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+0000B8E7_4738E700_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f32_rz.tv b/wally-pipelined/testbench/fp/ui32_f32_rz.tv
new file mode 100644
index 000000000..aa109500c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f32_rz.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_4DFF7FFF_01
+0000448E_46891C00_00
+00000000_00000000_00
+007FFFCD_4AFFFF9A_00
+00019E14_47CF0A00_00
+00000001_3F800000_00
+001FFFFB_49FFFFD8_00
+0000DE38_475E3800_00
+00000002_40000000_00
+FFDFFC02_4F7FDFFC_01
+03794C79_4C5E531E_01
+00000004_40800000_00
+F00FFFFE_4F700FFF_01
+00010A95_47854A80_00
+00000008_41000000_00
+FFFFF97F_4F7FFFF9_01
+01AE458D_4BD722C6_01
+00000010_41800000_00
+0101001E_4B80800F_00
+69EB4561_4ED3D68A_01
+00000020_42000000_00
+8001FFEE_4F0001FF_01
+0003DD08_48774200_00
+00000040_42800000_00
+FFF03FF9_4F7FF03F_01
+000EDF36_496DF360_00
+00000080_43000000_00
+0000F01F_47701F00_00
+00000679_44CF2000_00
+00000100_43800000_00
+BFFFFFEF_4F3FFFFF_01
+0000000F_41700000_00
+00000200_44000000_00
+010BFFFD_4B85FFFE_01
+00000590_44B20000_00
+00000400_44800000_00
+F7FFFEFB_4F77FFFE_01
+6FEA335F_4EDFD466_01
+00000800_45000000_00
+FFC07FFF_4F7FC07F_01
+377957FD_4E5DE55F_01
+00001000_45800000_00
+01FBFFEE_4BFDFFF7_00
+00000AC9_452C9000_00
+00002000_46000000_00
+FFFF8004_4F7FFF80_01
+000BE0DE_493E0DE0_00
+00004000_46800000_00
+3F00001E_4E7C0000_01
+00000400_44800000_00
+00008000_47000000_00
+FF8201FF_4F7F8201_01
+0001D2F1_47E97880_00
+00010000_47800000_00
+0000047E_448FC000_00
+0031B7E5_4A46DF94_00
+00020000_48000000_00
+02200200_4C080080_00
+0213F7E6_4C04FDF9_01
+00040000_48800000_00
+FFFDC007_4F7FFDC0_01
+1D0ABD9A_4DE855EC_01
+00080000_49000000_00
+0000607F_46C0FE00_00
+00007CEE_46F9DC00_00
+00100000_49800000_00
+DFDFE000_4F5FDFE0_00
+01FB1642_4BFD8B21_00
+00200000_4A000000_00
+FC000078_4F7C0000_01
+5F70EEC1_4EBEE1DD_01
+00400000_4A800000_00
+00100082_49800410_00
+00000221_44084000_00
+00800000_4B000000_00
+FF7BFF7F_4F7F7BFF_01
+00016393_47B1C980_00
+01000000_4B800000_00
+07EFFEFD_4CFDFFDF_01
+000005B4_44B68000_00
+02000000_4C000000_00
+8002FFFF_4F0002FF_01
+000048E2_4691C400_00
+04000000_4C800000_00
+FFFC0DFE_4F7FFC0D_01
+0000071B_44E36000_00
+08000000_4D000000_00
+03FFFDBF_4C7FFF6F_01
+0003092B_48424AC0_00
+10000000_4D800000_00
+007FBFFD_4AFF7FFA_00
+01B4F3D1_4BDA79E8_01
+20000000_4E000000_00
+FEF801FF_4F7EF801_01
+0000000D_41500000_00
+40000000_4E800000_00
+BFF3FFFE_4F3FF3FF_01
+0009806B_491806B0_00
+80000000_4F000000_00
+0000A07E_47207E00_00
+0000A59F_47259F00_00
+C0000000_4F400000_00
+E0007FDE_4F60007F_01
+0000343E_4650F800_00
+E0000000_4F600000_00
+0000FF7C_477F7C00_00
+00000007_40E00000_00
+F0000000_4F700000_00
+BDFFFFFC_4F3DFFFF_01
+0001E3C1_47F1E080_00
+F8000000_4F780000_00
+28003FFE_4E2000FF_01
+00000008_41000000_00
+FC000000_4F7C0000_00
+00EEFFFF_4B6EFFFF_00
+0000BEB0_473EB000_00
+FE000000_4F7E0000_00
+00000F7D_4577D000_00
+0000000F_41700000_00
+FF000000_4F7F0000_00
+0000406D_4680DA00_00
+0000009A_431A0000_00
+FF800000_4F7F8000_00
+203FFFFD_4E00FFFF_01
+0000001A_41D00000_00
+FFC00000_4F7FC000_00
+FFFF007C_4F7FFF00_01
+0000409B_46813600_00
+FFE00000_4F7FE000_00
+00E00FFF_4B600FFF_00
+0000000E_41600000_00
+FFF00000_4F7FF000_00
+00200FFC_4A003FF0_00
+00001714_45B8A000_00
+FFF80000_4F7FF800_00
+F800040E_4F780004_01
+00000113_43898000_00
+FFFC0000_4F7FFC00_00
+F83BFFFF_4F783BFF_01
+0003F584_487D6100_00
+FFFE0000_4F7FFE00_00
+F6FFFBFF_4F76FFFB_01
+00000000_00000000_00
+FFFF0000_4F7FFF00_00
+80003FFD_4F00003F_01
+0000002D_42340000_00
+FFFF8000_4F7FFF80_00
+004001FD_4A8003FA_00
+001D734E_49EB9A70_00
+FFFFC000_4F7FFFC0_00
+006003FE_4AC007FC_00
+019DBAA8_4BCEDD54_00
+FFFFE000_4F7FFFE0_00
+000403EE_48807DC0_00
+08734668_4D073466_01
+FFFFF000_4F7FFFF0_00
+01200002_4B900001_00
+000874A5_49074A50_00
+FFFFF800_4F7FFFF8_00
+00060001_48C00020_00
+00000008_41000000_00
+FFFFFC00_4F7FFFFC_00
+001FFEDD_49FFF6E8_00
+000056DF_46ADBE00_00
+FFFFFE00_4F7FFFFE_00
+EFFFEFFD_4F6FFFEF_01
+02CF5EC6_4C33D7B1_01
+FFFFFF00_4F7FFFFF_00
+1FF00002_4DFF8000_01
+06DB786B_4CDB6F0D_01
+FFFFFF80_4F7FFFFF_01
+F0000FBE_4F70000F_01
+00000019_41C80000_00
+FFFFFFC0_4F7FFFFF_01
+0010801F_498400F8_00
+0003F238_487C8E00_00
+FFFFFFE0_4F7FFFFF_01
+F8000047_4F780000_01
+0006133C_48C26780_00
+FFFFFFF0_4F7FFFFF_01
+003C001F_4A70007C_00
+000009F1_451F1000_00
+FFFFFFF8_4F7FFFFF_01
+FFDFBFFF_4F7FDFBF_01
+015E507F_4BAF283F_01
+FFFFFFFC_4F7FFFFF_01
+037FFFDE_4C5FFFF7_01
+00017C6F_47BE3780_00
+FFFFFFFE_4F7FFFFF_01
+000000FD_437D0000_00
+0000042A_44854000_00
+FFFFFFFF_4F7FFFFF_01
+021FFF7D_4C07FFDF_01
+0000002A_42280000_00
+FFFFFFFD_4F7FFFFF_01
+4010FFFF_4E8021FF_01
+00000013_41980000_00
+FFFFFFFB_4F7FFFFF_01
+FFFF800B_4F7FFF80_01
+000004B8_44970000_00
+FFFFFFF7_4F7FFFFF_01
+FF800803_4F7F8008_01
+00000006_40C00000_00
+FFFFFFEF_4F7FFFFF_01
+00803FFB_4B003FFB_00
+00000708_44E10000_00
+FFFFFFDF_4F7FFFFF_01
+2107FFFE_4E041FFF_01
+00215D4F_4A05753C_00
+FFFFFFBF_4F7FFFFF_01
+400087FD_4E80010F_01
+0000001F_41F80000_00
+FFFFFF7F_4F7FFFFF_01
+FDFC007E_4F7DFC00_01
+0000000E_41600000_00
+FFFFFEFF_4F7FFFFE_01
+FFF80100_4F7FF801_00
+00000699_44D32000_00
+FFFFFDFF_4F7FFFFD_01
+03000002_4C400000_01
+000716EA_48E2DD40_00
+FFFFFBFF_4F7FFFFB_01
+C7FDFFFF_4F47FDFF_01
+00000327_4449C000_00
+FFFFF7FF_4F7FFFF7_01
+0103DFFE_4B81EFFF_00
+47661FD8_4E8ECC3F_01
+FFFFEFFF_4F7FFFEF_01
+83FFFFFE_4F03FFFF_01
+0CD956DB_4D4D956D_01
+FFFFDFFF_4F7FFFDF_01
+FF2001FD_4F7F2001_01
+04D35BBF_4C9A6B77_01
+FFFFBFFF_4F7FFFBF_01
+DFEFEFFE_4F5FEFEF_01
+15DA4300_4DAED218_00
+FFFF7FFF_4F7FFF7F_01
+40001040_4E800020_01
+812EDF40_4F012EDF_01
+FFFEFFFF_4F7FFEFF_01
+FFFFC007_4F7FFFC0_01
+08B6FCC9_4D0B6FCC_01
+FFFDFFFF_4F7FFDFF_01
+000007FE_44FFC000_00
+003DE950_4A77A540_00
+FFFBFFFF_4F7FFBFF_01
+7FFFFE03_4EFFFFFC_01
+02B02B59_4C2C0AD6_01
+FFF7FFFF_4F7FF7FF_01
+10FF7FFF_4D87FBFF_01
+00408D5E_4A811ABC_00
+FFEFFFFF_4F7FEFFF_01
+FFFF007E_4F7FFF00_01
+003C2108_4A708420_00
+FFDFFFFF_4F7FDFFF_01
+00FFC001_4B7FC001_00
+001C6B36_49E359B0_00
+FFBFFFFF_4F7FBFFF_01
+FFFF7FFF_4F7FFF7F_01
+0001D055_47E82A80_00
+FF7FFFFF_4F7F7FFF_01
+027BFFFE_4C1EFFFF_01
+013090D0_4B984868_00
+FEFFFFFF_4F7EFFFF_01
+00082040_49020400_00
+000000EE_436E0000_00
+FDFFFFFF_4F7DFFFF_01
+FDFFFF87_4F7DFFFF_01
+14C3764D_4DA61BB2_01
+FBFFFFFF_4F7BFFFF_01
+0006007E_48C00FC0_00
+000003EF_447BC000_00
+F7FFFFFF_4F77FFFF_01
+FFBF7FFE_4F7FBF7F_01
+001C4E5A_49E272D0_00
+EFFFFFFF_4F6FFFFF_01
+FFF97FFD_4F7FF97F_01
+000005D1_44BA2000_00
+DFFFFFFF_4F5FFFFF_01
+2FFFFFFE_4E3FFFFF_01
+00936721_4B136721_00
+BFFFFFFF_4F3FFFFF_01
+00004BFF_4697FE00_00
+00002544_46151000_00
+7FFFFFFF_4EFFFFFF_01
+007FDFFB_4AFFBFF6_00
+0000BD5E_473D5E00_00
+3FFFFFFF_4E7FFFFF_01
+FFBF8003_4F7FBF80_01
+000045D2_468BA400_00
+1FFFFFFF_4DFFFFFF_01
+FFFFFDBF_4F7FFFFD_01
+00000189_43C48000_00
+0FFFFFFF_4D7FFFFF_01
+FFFE6FFE_4F7FFE6F_01
+008672A0_4B0672A0_00
+07FFFFFF_4CFFFFFF_01
+00000107_43838000_00
+0000CA70_474A7000_00
+03FFFFFF_4C7FFFFF_01
+002107FE_4A041FF8_00
+000148E7_47A47380_00
+01FFFFFF_4BFFFFFF_01
+F7FDFFEE_4F77FDFF_01
+00000030_42400000_00
+00FFFFFF_4B7FFFFF_00
+FFFF01FD_4F7FFF01_01
+0010FAEF_4987D778_00
+007FFFFF_4AFFFFFE_00
+00FC0001_4B7C0001_00
+000001F5_43FA8000_00
+003FFFFF_4A7FFFFC_00
+FFE07FC0_4F7FE07F_01
+005AFFFB_4AB5FFF6_00
+001FFFFF_49FFFFF8_00
+00101FFD_4980FFE8_00
+034613B2_4C5184EC_01
+000FFFFF_497FFFF0_00
+F00005FE_4F700005_01
+000B6402_49364020_00
+0007FFFF_48FFFFE0_00
+0404FFFF_4C809FFF_01
+021C2358_4C0708D6_00
+0003FFFF_487FFFC0_00
+FFFFFD02_4F7FFFFD_01
+000341C6_48507180_00
+0001FFFF_47FFFF80_00
+00000007_40E00000_00
+27F174DE_4E1FC5D3_01
+0000FFFF_477FFF00_00
+000083F5_4703F500_00
+00000003_40400000_00
+00007FFF_46FFFE00_00
+FE7FDFFE_4F7E7FDF_01
+0000003D_42740000_00
+00003FFF_467FFC00_00
+DBBFFFFE_4F5BBFFF_01
+00000C04_45404000_00
+00001FFF_45FFF800_00
+FFFFC018_4F7FFFC0_01
+00006853_46D0A600_00
+00000FFF_457FF000_00
+03FE007F_4C7F801F_01
+00000124_43920000_00
+000007FF_44FFE000_00
+FFFFEFBE_4F7FFFEF_01
+000B9AD8_4939AD80_00
+000003FF_447FC000_00
+DFFFFDFE_4F5FFFFD_01
+00000595_44B2A000_00
+000001FF_43FF8000_00
+FDFFFFFF_4F7DFFFF_01
+00000010_41800000_00
+000000FF_437F0000_00
+0037FFE0_4A5FFF80_00
+030EC496_4C43B125_01
+0000007F_42FE0000_00
+B8007FFF_4F38007F_01
+00000112_43890000_00
+0000003F_427C0000_00
+02003FFC_4C000FFF_00
+0000002F_423C0000_00
+0000001F_41F80000_00
+FF7FFF02_4F7F7FFF_01
+000002CE_44338000_00
+0000000F_41700000_00
+0000A00D_47200D00_00
+00000644_44C88000_00
+00000007_40E00000_00
+0003FFFA_487FFE80_00
+0000B8E7_4738E700_00
+00000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f64_rd.tv b/wally-pipelined/testbench/fp/ui32_f64_rd.tv
new file mode 100644
index 000000000..ce22e2c74
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f64_rd.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_41BFEFFFEF000000_00
+0000448E_40D1238000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00019E14_40F9E14000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+0000DE38_40EBC70000000000_00
+00000002_4000000000000000_00
+FFDFFC02_41EFFBFF80400000_00
+03794C79_418BCA63C8000000_00
+00000004_4010000000000000_00
+F00FFFFE_41EE01FFFFC00000_00
+00010A95_40F0A95000000000_00
+00000008_4020000000000000_00
+FFFFF97F_41EFFFFF2FE00000_00
+01AE458D_417AE458D0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+69EB4561_41DA7AD158400000_00
+00000020_4040000000000000_00
+8001FFEE_41E0003FFDC00000_00
+0003DD08_410EE84000000000_00
+00000040_4050000000000000_00
+FFF03FF9_41EFFE07FF200000_00
+000EDF36_412DBE6C00000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000679_4099E40000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_41E7FFFFFDE00000_00
+0000000F_402E000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+00000590_4096400000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_41EEFFFFDF600000_00
+6FEA335F_41DBFA8CD7C00000_00
+00000800_40A0000000000000_00
+FFC07FFF_41EFF80FFFE00000_00
+377957FD_41CBBCABFE800000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+00000AC9_40A5920000000000_00
+00002000_40C0000000000000_00
+FFFF8004_41EFFFF000800000_00
+000BE0DE_4127C1BC00000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000400_4090000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_41EFF0403FE00000_00
+0001D2F1_40FD2F1000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0031B7E5_4148DBF280000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0213F7E6_41809FBF30000000_00
+00040000_4110000000000000_00
+FFFDC007_41EFFFB800E00000_00
+1D0ABD9A_41BD0ABD9A000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00007CEE_40DF3B8000000000_00
+00100000_4130000000000000_00
+DFDFE000_41EBFBFC00000000_00
+01FB1642_417FB16420000000_00
+00200000_4140000000000000_00
+FC000078_41EF80000F000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+00000221_4081080000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_41EFEF7FEFE00000_00
+00016393_40F6393000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+000005B4_4096D00000000000_00
+02000000_4180000000000000_00
+8002FFFF_41E0005FFFE00000_00
+000048E2_40D2388000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_41EFFF81BFC00000_00
+0000071B_409C6C0000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0003092B_4108495800000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+01B4F3D1_417B4F3D10000000_00
+20000000_41C0000000000000_00
+FEF801FF_41EFDF003FE00000_00
+0000000D_402A000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_41E7FE7FFFC00000_00
+0009806B_412300D600000000_00
+80000000_41E0000000000000_00
+0000A07E_40E40FC000000000_00
+0000A59F_40E4B3E000000000_00
+C0000000_41E8000000000000_00
+E0007FDE_41EC000FFBC00000_00
+0000343E_40CA1F0000000000_00
+E0000000_41EC000000000000_00
+0000FF7C_40EFEF8000000000_00
+00000007_401C000000000000_00
+F0000000_41EE000000000000_00
+BDFFFFFC_41E7BFFFFF800000_00
+0001E3C1_40FE3C1000000000_00
+F8000000_41EF000000000000_00
+28003FFE_41C4001FFF000000_00
+00000008_4020000000000000_00
+FC000000_41EF800000000000_00
+00EEFFFF_416DDFFFE0000000_00
+0000BEB0_40E7D60000000000_00
+FE000000_41EFC00000000000_00
+00000F7D_40AEFA0000000000_00
+0000000F_402E000000000000_00
+FF000000_41EFE00000000000_00
+0000406D_40D01B4000000000_00
+0000009A_4063400000000000_00
+FF800000_41EFF00000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000001A_403A000000000000_00
+FFC00000_41EFF80000000000_00
+FFFF007C_41EFFFE00F800000_00
+0000409B_40D026C000000000_00
+FFE00000_41EFFC0000000000_00
+00E00FFF_416C01FFE0000000_00
+0000000E_402C000000000000_00
+FFF00000_41EFFE0000000000_00
+00200FFC_414007FE00000000_00
+00001714_40B7140000000000_00
+FFF80000_41EFFF0000000000_00
+F800040E_41EF000081C00000_00
+00000113_4071300000000000_00
+FFFC0000_41EFFF8000000000_00
+F83BFFFF_41EF077FFFE00000_00
+0003F584_410FAC2000000000_00
+FFFE0000_41EFFFC000000000_00
+F6FFFBFF_41EEDFFF7FE00000_00
+00000000_0000000000000000_00
+FFFF0000_41EFFFE000000000_00
+80003FFD_41E00007FFA00000_00
+0000002D_4046800000000000_00
+FFFF8000_41EFFFF000000000_00
+004001FD_4150007F40000000_00
+001D734E_413D734E00000000_00
+FFFFC000_41EFFFF800000000_00
+006003FE_415800FF80000000_00
+019DBAA8_4179DBAA80000000_00
+FFFFE000_41EFFFFC00000000_00
+000403EE_41100FB800000000_00
+08734668_41A0E68CD0000000_00
+FFFFF000_41EFFFFE00000000_00
+01200002_4172000020000000_00
+000874A5_4120E94A00000000_00
+FFFFF800_41EFFFFF00000000_00
+00060001_4118000400000000_00
+00000008_4020000000000000_00
+FFFFFC00_41EFFFFF80000000_00
+001FFEDD_413FFEDD00000000_00
+000056DF_40D5B7C000000000_00
+FFFFFE00_41EFFFFFC0000000_00
+EFFFEFFD_41EDFFFDFFA00000_00
+02CF5EC6_41867AF630000000_00
+FFFFFF00_41EFFFFFE0000000_00
+1FF00002_41BFF00002000000_00
+06DB786B_419B6DE1AC000000_00
+FFFFFF80_41EFFFFFF0000000_00
+F0000FBE_41EE0001F7C00000_00
+00000019_4039000000000000_00
+FFFFFFC0_41EFFFFFF8000000_00
+0010801F_4130801F00000000_00
+0003F238_410F91C000000000_00
+FFFFFFE0_41EFFFFFFC000000_00
+F8000047_41EF000008E00000_00
+0006133C_41184CF000000000_00
+FFFFFFF0_41EFFFFFFE000000_00
+003C001F_414E000F80000000_00
+000009F1_40A3E20000000000_00
+FFFFFFF8_41EFFFFFFF000000_00
+FFDFBFFF_41EFFBF7FFE00000_00
+015E507F_4175E507F0000000_00
+FFFFFFFC_41EFFFFFFF800000_00
+037FFFDE_418BFFFEF0000000_00
+00017C6F_40F7C6F000000000_00
+FFFFFFFE_41EFFFFFFFC00000_00
+000000FD_406FA00000000000_00
+0000042A_4090A80000000000_00
+FFFFFFFF_41EFFFFFFFE00000_00
+021FFF7D_4180FFFBE8000000_00
+0000002A_4045000000000000_00
+FFFFFFFD_41EFFFFFFFA00000_00
+4010FFFF_41D0043FFFC00000_00
+00000013_4033000000000000_00
+FFFFFFFB_41EFFFFFFF600000_00
+FFFF800B_41EFFFF001600000_00
+000004B8_4092E00000000000_00
+FFFFFFF7_41EFFFFFFEE00000_00
+FF800803_41EFF00100600000_00
+00000006_4018000000000000_00
+FFFFFFEF_41EFFFFFFDE00000_00
+00803FFB_416007FF60000000_00
+00000708_409C200000000000_00
+FFFFFFDF_41EFFFFFFBE00000_00
+2107FFFE_41C083FFFF000000_00
+00215D4F_4140AEA780000000_00
+FFFFFFBF_41EFFFFFF7E00000_00
+400087FD_41D00021FF400000_00
+0000001F_403F000000000000_00
+FFFFFF7F_41EFFFFFEFE00000_00
+FDFC007E_41EFBF800FC00000_00
+0000000E_402C000000000000_00
+FFFFFEFF_41EFFFFFDFE00000_00
+FFF80100_41EFFF0020000000_00
+00000699_409A640000000000_00
+FFFFFDFF_41EFFFFFBFE00000_00
+03000002_4188000010000000_00
+000716EA_411C5BA800000000_00
+FFFFFBFF_41EFFFFF7FE00000_00
+C7FDFFFF_41E8FFBFFFE00000_00
+00000327_4089380000000000_00
+FFFFF7FF_41EFFFFEFFE00000_00
+0103DFFE_41703DFFE0000000_00
+47661FD8_41D1D987F6000000_00
+FFFFEFFF_41EFFFFDFFE00000_00
+83FFFFFE_41E07FFFFFC00000_00
+0CD956DB_41A9B2ADB6000000_00
+FFFFDFFF_41EFFFFBFFE00000_00
+FF2001FD_41EFE4003FA00000_00
+04D35BBF_41934D6EFC000000_00
+FFFFBFFF_41EFFFF7FFE00000_00
+DFEFEFFE_41EBFDFDFFC00000_00
+15DA4300_41B5DA4300000000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+40001040_41D0000410000000_00
+812EDF40_41E025DBE8000000_00
+FFFEFFFF_41EFFFDFFFE00000_00
+FFFFC007_41EFFFF800E00000_00
+08B6FCC9_41A16DF992000000_00
+FFFDFFFF_41EFFFBFFFE00000_00
+000007FE_409FF80000000000_00
+003DE950_414EF4A800000000_00
+FFFBFFFF_41EFFF7FFFE00000_00
+7FFFFE03_41DFFFFF80C00000_00
+02B02B59_4185815AC8000000_00
+FFF7FFFF_41EFFEFFFFE00000_00
+10FF7FFF_41B0FF7FFF000000_00
+00408D5E_4150235780000000_00
+FFEFFFFF_41EFFDFFFFE00000_00
+FFFF007E_41EFFFE00FC00000_00
+003C2108_414E108400000000_00
+FFDFFFFF_41EFFBFFFFE00000_00
+00FFC001_416FF80020000000_00
+001C6B36_413C6B3600000000_00
+FFBFFFFF_41EFF7FFFFE00000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+0001D055_40FD055000000000_00
+FF7FFFFF_41EFEFFFFFE00000_00
+027BFFFE_4183DFFFF0000000_00
+013090D0_4173090D00000000_00
+FEFFFFFF_41EFDFFFFFE00000_00
+00082040_4120408000000000_00
+000000EE_406DC00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+FDFFFF87_41EFBFFFF0E00000_00
+14C3764D_41B4C3764D000000_00
+FBFFFFFF_41EF7FFFFFE00000_00
+0006007E_411801F800000000_00
+000003EF_408F780000000000_00
+F7FFFFFF_41EEFFFFFFE00000_00
+FFBF7FFE_41EFF7EFFFC00000_00
+001C4E5A_413C4E5A00000000_00
+EFFFFFFF_41EDFFFFFFE00000_00
+FFF97FFD_41EFFF2FFFA00000_00
+000005D1_4097440000000000_00
+DFFFFFFF_41EBFFFFFFE00000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00936721_41626CE420000000_00
+BFFFFFFF_41E7FFFFFFE00000_00
+00004BFF_40D2FFC000000000_00
+00002544_40C2A20000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+0000BD5E_40E7ABC000000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_41EFF7F000600000_00
+000045D2_40D1748000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_41EFFFFFB7E00000_00
+00000189_4078900000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_41EFFFCDFFC00000_00
+008672A0_4160CE5400000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+0000CA70_40E94E0000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+000148E7_40F48E7000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_41EEFFBFFDC00000_00
+00000030_4048000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_41EFFFE03FA00000_00
+0010FAEF_4130FAEF00000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000001F5_407F500000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_41EFFC0FF8000000_00
+005AFFFB_4156BFFEC0000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+034613B2_418A309D90000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_41EE0000BFC00000_00
+000B6402_4126C80400000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_41EFFFFFA0400000_00
+000341C6_410A0E3000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+00000003_4008000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_41EFCFFBFFC00000_00
+0000003D_404E800000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_41EB77FFFFC00000_00
+00000C04_40A8080000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_41EFFFF803000000_00
+00006853_40DA14C000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+00000124_4072400000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_41EFFFFDF7C00000_00
+000B9AD8_412735B000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_41EBFFFFBFC00000_00
+00000595_4096540000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+00000010_4030000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+030EC496_41887624B0000000_00
+0000007F_405FC00000000000_00
+B8007FFF_41E7000FFFE00000_00
+00000112_4071200000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+0000002F_4047800000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_41EFEFFFE0400000_00
+000002CE_4086700000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+00000644_4099100000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+0000B8E7_40E71CE000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f64_rne.tv b/wally-pipelined/testbench/fp/ui32_f64_rne.tv
new file mode 100644
index 000000000..ce22e2c74
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f64_rne.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_41BFEFFFEF000000_00
+0000448E_40D1238000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00019E14_40F9E14000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+0000DE38_40EBC70000000000_00
+00000002_4000000000000000_00
+FFDFFC02_41EFFBFF80400000_00
+03794C79_418BCA63C8000000_00
+00000004_4010000000000000_00
+F00FFFFE_41EE01FFFFC00000_00
+00010A95_40F0A95000000000_00
+00000008_4020000000000000_00
+FFFFF97F_41EFFFFF2FE00000_00
+01AE458D_417AE458D0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+69EB4561_41DA7AD158400000_00
+00000020_4040000000000000_00
+8001FFEE_41E0003FFDC00000_00
+0003DD08_410EE84000000000_00
+00000040_4050000000000000_00
+FFF03FF9_41EFFE07FF200000_00
+000EDF36_412DBE6C00000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000679_4099E40000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_41E7FFFFFDE00000_00
+0000000F_402E000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+00000590_4096400000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_41EEFFFFDF600000_00
+6FEA335F_41DBFA8CD7C00000_00
+00000800_40A0000000000000_00
+FFC07FFF_41EFF80FFFE00000_00
+377957FD_41CBBCABFE800000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+00000AC9_40A5920000000000_00
+00002000_40C0000000000000_00
+FFFF8004_41EFFFF000800000_00
+000BE0DE_4127C1BC00000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000400_4090000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_41EFF0403FE00000_00
+0001D2F1_40FD2F1000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0031B7E5_4148DBF280000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0213F7E6_41809FBF30000000_00
+00040000_4110000000000000_00
+FFFDC007_41EFFFB800E00000_00
+1D0ABD9A_41BD0ABD9A000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00007CEE_40DF3B8000000000_00
+00100000_4130000000000000_00
+DFDFE000_41EBFBFC00000000_00
+01FB1642_417FB16420000000_00
+00200000_4140000000000000_00
+FC000078_41EF80000F000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+00000221_4081080000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_41EFEF7FEFE00000_00
+00016393_40F6393000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+000005B4_4096D00000000000_00
+02000000_4180000000000000_00
+8002FFFF_41E0005FFFE00000_00
+000048E2_40D2388000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_41EFFF81BFC00000_00
+0000071B_409C6C0000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0003092B_4108495800000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+01B4F3D1_417B4F3D10000000_00
+20000000_41C0000000000000_00
+FEF801FF_41EFDF003FE00000_00
+0000000D_402A000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_41E7FE7FFFC00000_00
+0009806B_412300D600000000_00
+80000000_41E0000000000000_00
+0000A07E_40E40FC000000000_00
+0000A59F_40E4B3E000000000_00
+C0000000_41E8000000000000_00
+E0007FDE_41EC000FFBC00000_00
+0000343E_40CA1F0000000000_00
+E0000000_41EC000000000000_00
+0000FF7C_40EFEF8000000000_00
+00000007_401C000000000000_00
+F0000000_41EE000000000000_00
+BDFFFFFC_41E7BFFFFF800000_00
+0001E3C1_40FE3C1000000000_00
+F8000000_41EF000000000000_00
+28003FFE_41C4001FFF000000_00
+00000008_4020000000000000_00
+FC000000_41EF800000000000_00
+00EEFFFF_416DDFFFE0000000_00
+0000BEB0_40E7D60000000000_00
+FE000000_41EFC00000000000_00
+00000F7D_40AEFA0000000000_00
+0000000F_402E000000000000_00
+FF000000_41EFE00000000000_00
+0000406D_40D01B4000000000_00
+0000009A_4063400000000000_00
+FF800000_41EFF00000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000001A_403A000000000000_00
+FFC00000_41EFF80000000000_00
+FFFF007C_41EFFFE00F800000_00
+0000409B_40D026C000000000_00
+FFE00000_41EFFC0000000000_00
+00E00FFF_416C01FFE0000000_00
+0000000E_402C000000000000_00
+FFF00000_41EFFE0000000000_00
+00200FFC_414007FE00000000_00
+00001714_40B7140000000000_00
+FFF80000_41EFFF0000000000_00
+F800040E_41EF000081C00000_00
+00000113_4071300000000000_00
+FFFC0000_41EFFF8000000000_00
+F83BFFFF_41EF077FFFE00000_00
+0003F584_410FAC2000000000_00
+FFFE0000_41EFFFC000000000_00
+F6FFFBFF_41EEDFFF7FE00000_00
+00000000_0000000000000000_00
+FFFF0000_41EFFFE000000000_00
+80003FFD_41E00007FFA00000_00
+0000002D_4046800000000000_00
+FFFF8000_41EFFFF000000000_00
+004001FD_4150007F40000000_00
+001D734E_413D734E00000000_00
+FFFFC000_41EFFFF800000000_00
+006003FE_415800FF80000000_00
+019DBAA8_4179DBAA80000000_00
+FFFFE000_41EFFFFC00000000_00
+000403EE_41100FB800000000_00
+08734668_41A0E68CD0000000_00
+FFFFF000_41EFFFFE00000000_00
+01200002_4172000020000000_00
+000874A5_4120E94A00000000_00
+FFFFF800_41EFFFFF00000000_00
+00060001_4118000400000000_00
+00000008_4020000000000000_00
+FFFFFC00_41EFFFFF80000000_00
+001FFEDD_413FFEDD00000000_00
+000056DF_40D5B7C000000000_00
+FFFFFE00_41EFFFFFC0000000_00
+EFFFEFFD_41EDFFFDFFA00000_00
+02CF5EC6_41867AF630000000_00
+FFFFFF00_41EFFFFFE0000000_00
+1FF00002_41BFF00002000000_00
+06DB786B_419B6DE1AC000000_00
+FFFFFF80_41EFFFFFF0000000_00
+F0000FBE_41EE0001F7C00000_00
+00000019_4039000000000000_00
+FFFFFFC0_41EFFFFFF8000000_00
+0010801F_4130801F00000000_00
+0003F238_410F91C000000000_00
+FFFFFFE0_41EFFFFFFC000000_00
+F8000047_41EF000008E00000_00
+0006133C_41184CF000000000_00
+FFFFFFF0_41EFFFFFFE000000_00
+003C001F_414E000F80000000_00
+000009F1_40A3E20000000000_00
+FFFFFFF8_41EFFFFFFF000000_00
+FFDFBFFF_41EFFBF7FFE00000_00
+015E507F_4175E507F0000000_00
+FFFFFFFC_41EFFFFFFF800000_00
+037FFFDE_418BFFFEF0000000_00
+00017C6F_40F7C6F000000000_00
+FFFFFFFE_41EFFFFFFFC00000_00
+000000FD_406FA00000000000_00
+0000042A_4090A80000000000_00
+FFFFFFFF_41EFFFFFFFE00000_00
+021FFF7D_4180FFFBE8000000_00
+0000002A_4045000000000000_00
+FFFFFFFD_41EFFFFFFFA00000_00
+4010FFFF_41D0043FFFC00000_00
+00000013_4033000000000000_00
+FFFFFFFB_41EFFFFFFF600000_00
+FFFF800B_41EFFFF001600000_00
+000004B8_4092E00000000000_00
+FFFFFFF7_41EFFFFFFEE00000_00
+FF800803_41EFF00100600000_00
+00000006_4018000000000000_00
+FFFFFFEF_41EFFFFFFDE00000_00
+00803FFB_416007FF60000000_00
+00000708_409C200000000000_00
+FFFFFFDF_41EFFFFFFBE00000_00
+2107FFFE_41C083FFFF000000_00
+00215D4F_4140AEA780000000_00
+FFFFFFBF_41EFFFFFF7E00000_00
+400087FD_41D00021FF400000_00
+0000001F_403F000000000000_00
+FFFFFF7F_41EFFFFFEFE00000_00
+FDFC007E_41EFBF800FC00000_00
+0000000E_402C000000000000_00
+FFFFFEFF_41EFFFFFDFE00000_00
+FFF80100_41EFFF0020000000_00
+00000699_409A640000000000_00
+FFFFFDFF_41EFFFFFBFE00000_00
+03000002_4188000010000000_00
+000716EA_411C5BA800000000_00
+FFFFFBFF_41EFFFFF7FE00000_00
+C7FDFFFF_41E8FFBFFFE00000_00
+00000327_4089380000000000_00
+FFFFF7FF_41EFFFFEFFE00000_00
+0103DFFE_41703DFFE0000000_00
+47661FD8_41D1D987F6000000_00
+FFFFEFFF_41EFFFFDFFE00000_00
+83FFFFFE_41E07FFFFFC00000_00
+0CD956DB_41A9B2ADB6000000_00
+FFFFDFFF_41EFFFFBFFE00000_00
+FF2001FD_41EFE4003FA00000_00
+04D35BBF_41934D6EFC000000_00
+FFFFBFFF_41EFFFF7FFE00000_00
+DFEFEFFE_41EBFDFDFFC00000_00
+15DA4300_41B5DA4300000000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+40001040_41D0000410000000_00
+812EDF40_41E025DBE8000000_00
+FFFEFFFF_41EFFFDFFFE00000_00
+FFFFC007_41EFFFF800E00000_00
+08B6FCC9_41A16DF992000000_00
+FFFDFFFF_41EFFFBFFFE00000_00
+000007FE_409FF80000000000_00
+003DE950_414EF4A800000000_00
+FFFBFFFF_41EFFF7FFFE00000_00
+7FFFFE03_41DFFFFF80C00000_00
+02B02B59_4185815AC8000000_00
+FFF7FFFF_41EFFEFFFFE00000_00
+10FF7FFF_41B0FF7FFF000000_00
+00408D5E_4150235780000000_00
+FFEFFFFF_41EFFDFFFFE00000_00
+FFFF007E_41EFFFE00FC00000_00
+003C2108_414E108400000000_00
+FFDFFFFF_41EFFBFFFFE00000_00
+00FFC001_416FF80020000000_00
+001C6B36_413C6B3600000000_00
+FFBFFFFF_41EFF7FFFFE00000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+0001D055_40FD055000000000_00
+FF7FFFFF_41EFEFFFFFE00000_00
+027BFFFE_4183DFFFF0000000_00
+013090D0_4173090D00000000_00
+FEFFFFFF_41EFDFFFFFE00000_00
+00082040_4120408000000000_00
+000000EE_406DC00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+FDFFFF87_41EFBFFFF0E00000_00
+14C3764D_41B4C3764D000000_00
+FBFFFFFF_41EF7FFFFFE00000_00
+0006007E_411801F800000000_00
+000003EF_408F780000000000_00
+F7FFFFFF_41EEFFFFFFE00000_00
+FFBF7FFE_41EFF7EFFFC00000_00
+001C4E5A_413C4E5A00000000_00
+EFFFFFFF_41EDFFFFFFE00000_00
+FFF97FFD_41EFFF2FFFA00000_00
+000005D1_4097440000000000_00
+DFFFFFFF_41EBFFFFFFE00000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00936721_41626CE420000000_00
+BFFFFFFF_41E7FFFFFFE00000_00
+00004BFF_40D2FFC000000000_00
+00002544_40C2A20000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+0000BD5E_40E7ABC000000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_41EFF7F000600000_00
+000045D2_40D1748000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_41EFFFFFB7E00000_00
+00000189_4078900000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_41EFFFCDFFC00000_00
+008672A0_4160CE5400000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+0000CA70_40E94E0000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+000148E7_40F48E7000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_41EEFFBFFDC00000_00
+00000030_4048000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_41EFFFE03FA00000_00
+0010FAEF_4130FAEF00000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000001F5_407F500000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_41EFFC0FF8000000_00
+005AFFFB_4156BFFEC0000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+034613B2_418A309D90000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_41EE0000BFC00000_00
+000B6402_4126C80400000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_41EFFFFFA0400000_00
+000341C6_410A0E3000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+00000003_4008000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_41EFCFFBFFC00000_00
+0000003D_404E800000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_41EB77FFFFC00000_00
+00000C04_40A8080000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_41EFFFF803000000_00
+00006853_40DA14C000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+00000124_4072400000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_41EFFFFDF7C00000_00
+000B9AD8_412735B000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_41EBFFFFBFC00000_00
+00000595_4096540000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+00000010_4030000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+030EC496_41887624B0000000_00
+0000007F_405FC00000000000_00
+B8007FFF_41E7000FFFE00000_00
+00000112_4071200000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+0000002F_4047800000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_41EFEFFFE0400000_00
+000002CE_4086700000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+00000644_4099100000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+0000B8E7_40E71CE000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f64_ru.tv b/wally-pipelined/testbench/fp/ui32_f64_ru.tv
new file mode 100644
index 000000000..ce22e2c74
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f64_ru.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_41BFEFFFEF000000_00
+0000448E_40D1238000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00019E14_40F9E14000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+0000DE38_40EBC70000000000_00
+00000002_4000000000000000_00
+FFDFFC02_41EFFBFF80400000_00
+03794C79_418BCA63C8000000_00
+00000004_4010000000000000_00
+F00FFFFE_41EE01FFFFC00000_00
+00010A95_40F0A95000000000_00
+00000008_4020000000000000_00
+FFFFF97F_41EFFFFF2FE00000_00
+01AE458D_417AE458D0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+69EB4561_41DA7AD158400000_00
+00000020_4040000000000000_00
+8001FFEE_41E0003FFDC00000_00
+0003DD08_410EE84000000000_00
+00000040_4050000000000000_00
+FFF03FF9_41EFFE07FF200000_00
+000EDF36_412DBE6C00000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000679_4099E40000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_41E7FFFFFDE00000_00
+0000000F_402E000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+00000590_4096400000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_41EEFFFFDF600000_00
+6FEA335F_41DBFA8CD7C00000_00
+00000800_40A0000000000000_00
+FFC07FFF_41EFF80FFFE00000_00
+377957FD_41CBBCABFE800000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+00000AC9_40A5920000000000_00
+00002000_40C0000000000000_00
+FFFF8004_41EFFFF000800000_00
+000BE0DE_4127C1BC00000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000400_4090000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_41EFF0403FE00000_00
+0001D2F1_40FD2F1000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0031B7E5_4148DBF280000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0213F7E6_41809FBF30000000_00
+00040000_4110000000000000_00
+FFFDC007_41EFFFB800E00000_00
+1D0ABD9A_41BD0ABD9A000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00007CEE_40DF3B8000000000_00
+00100000_4130000000000000_00
+DFDFE000_41EBFBFC00000000_00
+01FB1642_417FB16420000000_00
+00200000_4140000000000000_00
+FC000078_41EF80000F000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+00000221_4081080000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_41EFEF7FEFE00000_00
+00016393_40F6393000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+000005B4_4096D00000000000_00
+02000000_4180000000000000_00
+8002FFFF_41E0005FFFE00000_00
+000048E2_40D2388000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_41EFFF81BFC00000_00
+0000071B_409C6C0000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0003092B_4108495800000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+01B4F3D1_417B4F3D10000000_00
+20000000_41C0000000000000_00
+FEF801FF_41EFDF003FE00000_00
+0000000D_402A000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_41E7FE7FFFC00000_00
+0009806B_412300D600000000_00
+80000000_41E0000000000000_00
+0000A07E_40E40FC000000000_00
+0000A59F_40E4B3E000000000_00
+C0000000_41E8000000000000_00
+E0007FDE_41EC000FFBC00000_00
+0000343E_40CA1F0000000000_00
+E0000000_41EC000000000000_00
+0000FF7C_40EFEF8000000000_00
+00000007_401C000000000000_00
+F0000000_41EE000000000000_00
+BDFFFFFC_41E7BFFFFF800000_00
+0001E3C1_40FE3C1000000000_00
+F8000000_41EF000000000000_00
+28003FFE_41C4001FFF000000_00
+00000008_4020000000000000_00
+FC000000_41EF800000000000_00
+00EEFFFF_416DDFFFE0000000_00
+0000BEB0_40E7D60000000000_00
+FE000000_41EFC00000000000_00
+00000F7D_40AEFA0000000000_00
+0000000F_402E000000000000_00
+FF000000_41EFE00000000000_00
+0000406D_40D01B4000000000_00
+0000009A_4063400000000000_00
+FF800000_41EFF00000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000001A_403A000000000000_00
+FFC00000_41EFF80000000000_00
+FFFF007C_41EFFFE00F800000_00
+0000409B_40D026C000000000_00
+FFE00000_41EFFC0000000000_00
+00E00FFF_416C01FFE0000000_00
+0000000E_402C000000000000_00
+FFF00000_41EFFE0000000000_00
+00200FFC_414007FE00000000_00
+00001714_40B7140000000000_00
+FFF80000_41EFFF0000000000_00
+F800040E_41EF000081C00000_00
+00000113_4071300000000000_00
+FFFC0000_41EFFF8000000000_00
+F83BFFFF_41EF077FFFE00000_00
+0003F584_410FAC2000000000_00
+FFFE0000_41EFFFC000000000_00
+F6FFFBFF_41EEDFFF7FE00000_00
+00000000_0000000000000000_00
+FFFF0000_41EFFFE000000000_00
+80003FFD_41E00007FFA00000_00
+0000002D_4046800000000000_00
+FFFF8000_41EFFFF000000000_00
+004001FD_4150007F40000000_00
+001D734E_413D734E00000000_00
+FFFFC000_41EFFFF800000000_00
+006003FE_415800FF80000000_00
+019DBAA8_4179DBAA80000000_00
+FFFFE000_41EFFFFC00000000_00
+000403EE_41100FB800000000_00
+08734668_41A0E68CD0000000_00
+FFFFF000_41EFFFFE00000000_00
+01200002_4172000020000000_00
+000874A5_4120E94A00000000_00
+FFFFF800_41EFFFFF00000000_00
+00060001_4118000400000000_00
+00000008_4020000000000000_00
+FFFFFC00_41EFFFFF80000000_00
+001FFEDD_413FFEDD00000000_00
+000056DF_40D5B7C000000000_00
+FFFFFE00_41EFFFFFC0000000_00
+EFFFEFFD_41EDFFFDFFA00000_00
+02CF5EC6_41867AF630000000_00
+FFFFFF00_41EFFFFFE0000000_00
+1FF00002_41BFF00002000000_00
+06DB786B_419B6DE1AC000000_00
+FFFFFF80_41EFFFFFF0000000_00
+F0000FBE_41EE0001F7C00000_00
+00000019_4039000000000000_00
+FFFFFFC0_41EFFFFFF8000000_00
+0010801F_4130801F00000000_00
+0003F238_410F91C000000000_00
+FFFFFFE0_41EFFFFFFC000000_00
+F8000047_41EF000008E00000_00
+0006133C_41184CF000000000_00
+FFFFFFF0_41EFFFFFFE000000_00
+003C001F_414E000F80000000_00
+000009F1_40A3E20000000000_00
+FFFFFFF8_41EFFFFFFF000000_00
+FFDFBFFF_41EFFBF7FFE00000_00
+015E507F_4175E507F0000000_00
+FFFFFFFC_41EFFFFFFF800000_00
+037FFFDE_418BFFFEF0000000_00
+00017C6F_40F7C6F000000000_00
+FFFFFFFE_41EFFFFFFFC00000_00
+000000FD_406FA00000000000_00
+0000042A_4090A80000000000_00
+FFFFFFFF_41EFFFFFFFE00000_00
+021FFF7D_4180FFFBE8000000_00
+0000002A_4045000000000000_00
+FFFFFFFD_41EFFFFFFFA00000_00
+4010FFFF_41D0043FFFC00000_00
+00000013_4033000000000000_00
+FFFFFFFB_41EFFFFFFF600000_00
+FFFF800B_41EFFFF001600000_00
+000004B8_4092E00000000000_00
+FFFFFFF7_41EFFFFFFEE00000_00
+FF800803_41EFF00100600000_00
+00000006_4018000000000000_00
+FFFFFFEF_41EFFFFFFDE00000_00
+00803FFB_416007FF60000000_00
+00000708_409C200000000000_00
+FFFFFFDF_41EFFFFFFBE00000_00
+2107FFFE_41C083FFFF000000_00
+00215D4F_4140AEA780000000_00
+FFFFFFBF_41EFFFFFF7E00000_00
+400087FD_41D00021FF400000_00
+0000001F_403F000000000000_00
+FFFFFF7F_41EFFFFFEFE00000_00
+FDFC007E_41EFBF800FC00000_00
+0000000E_402C000000000000_00
+FFFFFEFF_41EFFFFFDFE00000_00
+FFF80100_41EFFF0020000000_00
+00000699_409A640000000000_00
+FFFFFDFF_41EFFFFFBFE00000_00
+03000002_4188000010000000_00
+000716EA_411C5BA800000000_00
+FFFFFBFF_41EFFFFF7FE00000_00
+C7FDFFFF_41E8FFBFFFE00000_00
+00000327_4089380000000000_00
+FFFFF7FF_41EFFFFEFFE00000_00
+0103DFFE_41703DFFE0000000_00
+47661FD8_41D1D987F6000000_00
+FFFFEFFF_41EFFFFDFFE00000_00
+83FFFFFE_41E07FFFFFC00000_00
+0CD956DB_41A9B2ADB6000000_00
+FFFFDFFF_41EFFFFBFFE00000_00
+FF2001FD_41EFE4003FA00000_00
+04D35BBF_41934D6EFC000000_00
+FFFFBFFF_41EFFFF7FFE00000_00
+DFEFEFFE_41EBFDFDFFC00000_00
+15DA4300_41B5DA4300000000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+40001040_41D0000410000000_00
+812EDF40_41E025DBE8000000_00
+FFFEFFFF_41EFFFDFFFE00000_00
+FFFFC007_41EFFFF800E00000_00
+08B6FCC9_41A16DF992000000_00
+FFFDFFFF_41EFFFBFFFE00000_00
+000007FE_409FF80000000000_00
+003DE950_414EF4A800000000_00
+FFFBFFFF_41EFFF7FFFE00000_00
+7FFFFE03_41DFFFFF80C00000_00
+02B02B59_4185815AC8000000_00
+FFF7FFFF_41EFFEFFFFE00000_00
+10FF7FFF_41B0FF7FFF000000_00
+00408D5E_4150235780000000_00
+FFEFFFFF_41EFFDFFFFE00000_00
+FFFF007E_41EFFFE00FC00000_00
+003C2108_414E108400000000_00
+FFDFFFFF_41EFFBFFFFE00000_00
+00FFC001_416FF80020000000_00
+001C6B36_413C6B3600000000_00
+FFBFFFFF_41EFF7FFFFE00000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+0001D055_40FD055000000000_00
+FF7FFFFF_41EFEFFFFFE00000_00
+027BFFFE_4183DFFFF0000000_00
+013090D0_4173090D00000000_00
+FEFFFFFF_41EFDFFFFFE00000_00
+00082040_4120408000000000_00
+000000EE_406DC00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+FDFFFF87_41EFBFFFF0E00000_00
+14C3764D_41B4C3764D000000_00
+FBFFFFFF_41EF7FFFFFE00000_00
+0006007E_411801F800000000_00
+000003EF_408F780000000000_00
+F7FFFFFF_41EEFFFFFFE00000_00
+FFBF7FFE_41EFF7EFFFC00000_00
+001C4E5A_413C4E5A00000000_00
+EFFFFFFF_41EDFFFFFFE00000_00
+FFF97FFD_41EFFF2FFFA00000_00
+000005D1_4097440000000000_00
+DFFFFFFF_41EBFFFFFFE00000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00936721_41626CE420000000_00
+BFFFFFFF_41E7FFFFFFE00000_00
+00004BFF_40D2FFC000000000_00
+00002544_40C2A20000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+0000BD5E_40E7ABC000000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_41EFF7F000600000_00
+000045D2_40D1748000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_41EFFFFFB7E00000_00
+00000189_4078900000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_41EFFFCDFFC00000_00
+008672A0_4160CE5400000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+0000CA70_40E94E0000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+000148E7_40F48E7000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_41EEFFBFFDC00000_00
+00000030_4048000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_41EFFFE03FA00000_00
+0010FAEF_4130FAEF00000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000001F5_407F500000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_41EFFC0FF8000000_00
+005AFFFB_4156BFFEC0000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+034613B2_418A309D90000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_41EE0000BFC00000_00
+000B6402_4126C80400000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_41EFFFFFA0400000_00
+000341C6_410A0E3000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+00000003_4008000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_41EFCFFBFFC00000_00
+0000003D_404E800000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_41EB77FFFFC00000_00
+00000C04_40A8080000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_41EFFFF803000000_00
+00006853_40DA14C000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+00000124_4072400000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_41EFFFFDF7C00000_00
+000B9AD8_412735B000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_41EBFFFFBFC00000_00
+00000595_4096540000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+00000010_4030000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+030EC496_41887624B0000000_00
+0000007F_405FC00000000000_00
+B8007FFF_41E7000FFFE00000_00
+00000112_4071200000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+0000002F_4047800000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_41EFEFFFE0400000_00
+000002CE_4086700000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+00000644_4099100000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+0000B8E7_40E71CE000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui32_f64_rz.tv b/wally-pipelined/testbench/fp/ui32_f64_rz.tv
new file mode 100644
index 000000000..ce22e2c74
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui32_f64_rz.tv
@@ -0,0 +1,372 @@
+1FEFFFEF_41BFEFFFEF000000_00
+0000448E_40D1238000000000_00
+00000000_0000000000000000_00
+007FFFCD_415FFFF340000000_00
+00019E14_40F9E14000000000_00
+00000001_3FF0000000000000_00
+001FFFFB_413FFFFB00000000_00
+0000DE38_40EBC70000000000_00
+00000002_4000000000000000_00
+FFDFFC02_41EFFBFF80400000_00
+03794C79_418BCA63C8000000_00
+00000004_4010000000000000_00
+F00FFFFE_41EE01FFFFC00000_00
+00010A95_40F0A95000000000_00
+00000008_4020000000000000_00
+FFFFF97F_41EFFFFF2FE00000_00
+01AE458D_417AE458D0000000_00
+00000010_4030000000000000_00
+0101001E_41701001E0000000_00
+69EB4561_41DA7AD158400000_00
+00000020_4040000000000000_00
+8001FFEE_41E0003FFDC00000_00
+0003DD08_410EE84000000000_00
+00000040_4050000000000000_00
+FFF03FF9_41EFFE07FF200000_00
+000EDF36_412DBE6C00000000_00
+00000080_4060000000000000_00
+0000F01F_40EE03E000000000_00
+00000679_4099E40000000000_00
+00000100_4070000000000000_00
+BFFFFFEF_41E7FFFFFDE00000_00
+0000000F_402E000000000000_00
+00000200_4080000000000000_00
+010BFFFD_4170BFFFD0000000_00
+00000590_4096400000000000_00
+00000400_4090000000000000_00
+F7FFFEFB_41EEFFFFDF600000_00
+6FEA335F_41DBFA8CD7C00000_00
+00000800_40A0000000000000_00
+FFC07FFF_41EFF80FFFE00000_00
+377957FD_41CBBCABFE800000_00
+00001000_40B0000000000000_00
+01FBFFEE_417FBFFEE0000000_00
+00000AC9_40A5920000000000_00
+00002000_40C0000000000000_00
+FFFF8004_41EFFFF000800000_00
+000BE0DE_4127C1BC00000000_00
+00004000_40D0000000000000_00
+3F00001E_41CF80000F000000_00
+00000400_4090000000000000_00
+00008000_40E0000000000000_00
+FF8201FF_41EFF0403FE00000_00
+0001D2F1_40FD2F1000000000_00
+00010000_40F0000000000000_00
+0000047E_4091F80000000000_00
+0031B7E5_4148DBF280000000_00
+00020000_4100000000000000_00
+02200200_4181001000000000_00
+0213F7E6_41809FBF30000000_00
+00040000_4110000000000000_00
+FFFDC007_41EFFFB800E00000_00
+1D0ABD9A_41BD0ABD9A000000_00
+00080000_4120000000000000_00
+0000607F_40D81FC000000000_00
+00007CEE_40DF3B8000000000_00
+00100000_4130000000000000_00
+DFDFE000_41EBFBFC00000000_00
+01FB1642_417FB16420000000_00
+00200000_4140000000000000_00
+FC000078_41EF80000F000000_00
+5F70EEC1_41D7DC3BB0400000_00
+00400000_4150000000000000_00
+00100082_4130008200000000_00
+00000221_4081080000000000_00
+00800000_4160000000000000_00
+FF7BFF7F_41EFEF7FEFE00000_00
+00016393_40F6393000000000_00
+01000000_4170000000000000_00
+07EFFEFD_419FBFFBF4000000_00
+000005B4_4096D00000000000_00
+02000000_4180000000000000_00
+8002FFFF_41E0005FFFE00000_00
+000048E2_40D2388000000000_00
+04000000_4190000000000000_00
+FFFC0DFE_41EFFF81BFC00000_00
+0000071B_409C6C0000000000_00
+08000000_41A0000000000000_00
+03FFFDBF_418FFFEDF8000000_00
+0003092B_4108495800000000_00
+10000000_41B0000000000000_00
+007FBFFD_415FEFFF40000000_00
+01B4F3D1_417B4F3D10000000_00
+20000000_41C0000000000000_00
+FEF801FF_41EFDF003FE00000_00
+0000000D_402A000000000000_00
+40000000_41D0000000000000_00
+BFF3FFFE_41E7FE7FFFC00000_00
+0009806B_412300D600000000_00
+80000000_41E0000000000000_00
+0000A07E_40E40FC000000000_00
+0000A59F_40E4B3E000000000_00
+C0000000_41E8000000000000_00
+E0007FDE_41EC000FFBC00000_00
+0000343E_40CA1F0000000000_00
+E0000000_41EC000000000000_00
+0000FF7C_40EFEF8000000000_00
+00000007_401C000000000000_00
+F0000000_41EE000000000000_00
+BDFFFFFC_41E7BFFFFF800000_00
+0001E3C1_40FE3C1000000000_00
+F8000000_41EF000000000000_00
+28003FFE_41C4001FFF000000_00
+00000008_4020000000000000_00
+FC000000_41EF800000000000_00
+00EEFFFF_416DDFFFE0000000_00
+0000BEB0_40E7D60000000000_00
+FE000000_41EFC00000000000_00
+00000F7D_40AEFA0000000000_00
+0000000F_402E000000000000_00
+FF000000_41EFE00000000000_00
+0000406D_40D01B4000000000_00
+0000009A_4063400000000000_00
+FF800000_41EFF00000000000_00
+203FFFFD_41C01FFFFE800000_00
+0000001A_403A000000000000_00
+FFC00000_41EFF80000000000_00
+FFFF007C_41EFFFE00F800000_00
+0000409B_40D026C000000000_00
+FFE00000_41EFFC0000000000_00
+00E00FFF_416C01FFE0000000_00
+0000000E_402C000000000000_00
+FFF00000_41EFFE0000000000_00
+00200FFC_414007FE00000000_00
+00001714_40B7140000000000_00
+FFF80000_41EFFF0000000000_00
+F800040E_41EF000081C00000_00
+00000113_4071300000000000_00
+FFFC0000_41EFFF8000000000_00
+F83BFFFF_41EF077FFFE00000_00
+0003F584_410FAC2000000000_00
+FFFE0000_41EFFFC000000000_00
+F6FFFBFF_41EEDFFF7FE00000_00
+00000000_0000000000000000_00
+FFFF0000_41EFFFE000000000_00
+80003FFD_41E00007FFA00000_00
+0000002D_4046800000000000_00
+FFFF8000_41EFFFF000000000_00
+004001FD_4150007F40000000_00
+001D734E_413D734E00000000_00
+FFFFC000_41EFFFF800000000_00
+006003FE_415800FF80000000_00
+019DBAA8_4179DBAA80000000_00
+FFFFE000_41EFFFFC00000000_00
+000403EE_41100FB800000000_00
+08734668_41A0E68CD0000000_00
+FFFFF000_41EFFFFE00000000_00
+01200002_4172000020000000_00
+000874A5_4120E94A00000000_00
+FFFFF800_41EFFFFF00000000_00
+00060001_4118000400000000_00
+00000008_4020000000000000_00
+FFFFFC00_41EFFFFF80000000_00
+001FFEDD_413FFEDD00000000_00
+000056DF_40D5B7C000000000_00
+FFFFFE00_41EFFFFFC0000000_00
+EFFFEFFD_41EDFFFDFFA00000_00
+02CF5EC6_41867AF630000000_00
+FFFFFF00_41EFFFFFE0000000_00
+1FF00002_41BFF00002000000_00
+06DB786B_419B6DE1AC000000_00
+FFFFFF80_41EFFFFFF0000000_00
+F0000FBE_41EE0001F7C00000_00
+00000019_4039000000000000_00
+FFFFFFC0_41EFFFFFF8000000_00
+0010801F_4130801F00000000_00
+0003F238_410F91C000000000_00
+FFFFFFE0_41EFFFFFFC000000_00
+F8000047_41EF000008E00000_00
+0006133C_41184CF000000000_00
+FFFFFFF0_41EFFFFFFE000000_00
+003C001F_414E000F80000000_00
+000009F1_40A3E20000000000_00
+FFFFFFF8_41EFFFFFFF000000_00
+FFDFBFFF_41EFFBF7FFE00000_00
+015E507F_4175E507F0000000_00
+FFFFFFFC_41EFFFFFFF800000_00
+037FFFDE_418BFFFEF0000000_00
+00017C6F_40F7C6F000000000_00
+FFFFFFFE_41EFFFFFFFC00000_00
+000000FD_406FA00000000000_00
+0000042A_4090A80000000000_00
+FFFFFFFF_41EFFFFFFFE00000_00
+021FFF7D_4180FFFBE8000000_00
+0000002A_4045000000000000_00
+FFFFFFFD_41EFFFFFFFA00000_00
+4010FFFF_41D0043FFFC00000_00
+00000013_4033000000000000_00
+FFFFFFFB_41EFFFFFFF600000_00
+FFFF800B_41EFFFF001600000_00
+000004B8_4092E00000000000_00
+FFFFFFF7_41EFFFFFFEE00000_00
+FF800803_41EFF00100600000_00
+00000006_4018000000000000_00
+FFFFFFEF_41EFFFFFFDE00000_00
+00803FFB_416007FF60000000_00
+00000708_409C200000000000_00
+FFFFFFDF_41EFFFFFFBE00000_00
+2107FFFE_41C083FFFF000000_00
+00215D4F_4140AEA780000000_00
+FFFFFFBF_41EFFFFFF7E00000_00
+400087FD_41D00021FF400000_00
+0000001F_403F000000000000_00
+FFFFFF7F_41EFFFFFEFE00000_00
+FDFC007E_41EFBF800FC00000_00
+0000000E_402C000000000000_00
+FFFFFEFF_41EFFFFFDFE00000_00
+FFF80100_41EFFF0020000000_00
+00000699_409A640000000000_00
+FFFFFDFF_41EFFFFFBFE00000_00
+03000002_4188000010000000_00
+000716EA_411C5BA800000000_00
+FFFFFBFF_41EFFFFF7FE00000_00
+C7FDFFFF_41E8FFBFFFE00000_00
+00000327_4089380000000000_00
+FFFFF7FF_41EFFFFEFFE00000_00
+0103DFFE_41703DFFE0000000_00
+47661FD8_41D1D987F6000000_00
+FFFFEFFF_41EFFFFDFFE00000_00
+83FFFFFE_41E07FFFFFC00000_00
+0CD956DB_41A9B2ADB6000000_00
+FFFFDFFF_41EFFFFBFFE00000_00
+FF2001FD_41EFE4003FA00000_00
+04D35BBF_41934D6EFC000000_00
+FFFFBFFF_41EFFFF7FFE00000_00
+DFEFEFFE_41EBFDFDFFC00000_00
+15DA4300_41B5DA4300000000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+40001040_41D0000410000000_00
+812EDF40_41E025DBE8000000_00
+FFFEFFFF_41EFFFDFFFE00000_00
+FFFFC007_41EFFFF800E00000_00
+08B6FCC9_41A16DF992000000_00
+FFFDFFFF_41EFFFBFFFE00000_00
+000007FE_409FF80000000000_00
+003DE950_414EF4A800000000_00
+FFFBFFFF_41EFFF7FFFE00000_00
+7FFFFE03_41DFFFFF80C00000_00
+02B02B59_4185815AC8000000_00
+FFF7FFFF_41EFFEFFFFE00000_00
+10FF7FFF_41B0FF7FFF000000_00
+00408D5E_4150235780000000_00
+FFEFFFFF_41EFFDFFFFE00000_00
+FFFF007E_41EFFFE00FC00000_00
+003C2108_414E108400000000_00
+FFDFFFFF_41EFFBFFFFE00000_00
+00FFC001_416FF80020000000_00
+001C6B36_413C6B3600000000_00
+FFBFFFFF_41EFF7FFFFE00000_00
+FFFF7FFF_41EFFFEFFFE00000_00
+0001D055_40FD055000000000_00
+FF7FFFFF_41EFEFFFFFE00000_00
+027BFFFE_4183DFFFF0000000_00
+013090D0_4173090D00000000_00
+FEFFFFFF_41EFDFFFFFE00000_00
+00082040_4120408000000000_00
+000000EE_406DC00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+FDFFFF87_41EFBFFFF0E00000_00
+14C3764D_41B4C3764D000000_00
+FBFFFFFF_41EF7FFFFFE00000_00
+0006007E_411801F800000000_00
+000003EF_408F780000000000_00
+F7FFFFFF_41EEFFFFFFE00000_00
+FFBF7FFE_41EFF7EFFFC00000_00
+001C4E5A_413C4E5A00000000_00
+EFFFFFFF_41EDFFFFFFE00000_00
+FFF97FFD_41EFFF2FFFA00000_00
+000005D1_4097440000000000_00
+DFFFFFFF_41EBFFFFFFE00000_00
+2FFFFFFE_41C7FFFFFF000000_00
+00936721_41626CE420000000_00
+BFFFFFFF_41E7FFFFFFE00000_00
+00004BFF_40D2FFC000000000_00
+00002544_40C2A20000000000_00
+7FFFFFFF_41DFFFFFFFC00000_00
+007FDFFB_415FF7FEC0000000_00
+0000BD5E_40E7ABC000000000_00
+3FFFFFFF_41CFFFFFFF800000_00
+FFBF8003_41EFF7F000600000_00
+000045D2_40D1748000000000_00
+1FFFFFFF_41BFFFFFFF000000_00
+FFFFFDBF_41EFFFFFB7E00000_00
+00000189_4078900000000000_00
+0FFFFFFF_41AFFFFFFE000000_00
+FFFE6FFE_41EFFFCDFFC00000_00
+008672A0_4160CE5400000000_00
+07FFFFFF_419FFFFFFC000000_00
+00000107_4070700000000000_00
+0000CA70_40E94E0000000000_00
+03FFFFFF_418FFFFFF8000000_00
+002107FE_414083FF00000000_00
+000148E7_40F48E7000000000_00
+01FFFFFF_417FFFFFF0000000_00
+F7FDFFEE_41EEFFBFFDC00000_00
+00000030_4048000000000000_00
+00FFFFFF_416FFFFFE0000000_00
+FFFF01FD_41EFFFE03FA00000_00
+0010FAEF_4130FAEF00000000_00
+007FFFFF_415FFFFFC0000000_00
+00FC0001_416F800020000000_00
+000001F5_407F500000000000_00
+003FFFFF_414FFFFF80000000_00
+FFE07FC0_41EFFC0FF8000000_00
+005AFFFB_4156BFFEC0000000_00
+001FFFFF_413FFFFF00000000_00
+00101FFD_41301FFD00000000_00
+034613B2_418A309D90000000_00
+000FFFFF_412FFFFE00000000_00
+F00005FE_41EE0000BFC00000_00
+000B6402_4126C80400000000_00
+0007FFFF_411FFFFC00000000_00
+0404FFFF_419013FFFC000000_00
+021C2358_4180E11AC0000000_00
+0003FFFF_410FFFF800000000_00
+FFFFFD02_41EFFFFFA0400000_00
+000341C6_410A0E3000000000_00
+0001FFFF_40FFFFF000000000_00
+00000007_401C000000000000_00
+27F174DE_41C3F8BA6F000000_00
+0000FFFF_40EFFFE000000000_00
+000083F5_40E07EA000000000_00
+00000003_4008000000000000_00
+00007FFF_40DFFFC000000000_00
+FE7FDFFE_41EFCFFBFFC00000_00
+0000003D_404E800000000000_00
+00003FFF_40CFFF8000000000_00
+DBBFFFFE_41EB77FFFFC00000_00
+00000C04_40A8080000000000_00
+00001FFF_40BFFF0000000000_00
+FFFFC018_41EFFFF803000000_00
+00006853_40DA14C000000000_00
+00000FFF_40AFFE0000000000_00
+03FE007F_418FF003F8000000_00
+00000124_4072400000000000_00
+000007FF_409FFC0000000000_00
+FFFFEFBE_41EFFFFDF7C00000_00
+000B9AD8_412735B000000000_00
+000003FF_408FF80000000000_00
+DFFFFDFE_41EBFFFFBFC00000_00
+00000595_4096540000000000_00
+000001FF_407FF00000000000_00
+FDFFFFFF_41EFBFFFFFE00000_00
+00000010_4030000000000000_00
+000000FF_406FE00000000000_00
+0037FFE0_414BFFF000000000_00
+030EC496_41887624B0000000_00
+0000007F_405FC00000000000_00
+B8007FFF_41E7000FFFE00000_00
+00000112_4071200000000000_00
+0000003F_404F800000000000_00
+02003FFC_418001FFE0000000_00
+0000002F_4047800000000000_00
+0000001F_403F000000000000_00
+FF7FFF02_41EFEFFFE0400000_00
+000002CE_4086700000000000_00
+0000000F_402E000000000000_00
+0000A00D_40E401A000000000_00
+00000644_4099100000000000_00
+00000007_401C000000000000_00
+0003FFFA_410FFFD000000000_00
+0000B8E7_40E71CE000000000_00
+00000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f32_rd.tv b/wally-pipelined/testbench/fp/ui64_f32_rd.tv
new file mode 100644
index 000000000..bf85027ae
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f32_rd.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_5CFFFFBF_01
+0000000072CC8B7A_4EE59916_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_5F7FFFFF_01
+072C857F319EDE38_5CE590AF_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_5F7FFFFB_01
+00794C79B6D3007B_5AF298F3_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_5F7BFFFF_01
+0000000005AE458D_4CB5C8B1_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+09EB456140D88764_5D1EB456_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_5F7FFFE4_01
+27DE834A248EDF36_5E1F7A0D_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC007_01
+00000000000385E2_48617880_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_5F70041F_01
+000000159EB1FD45_51ACF58F_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_5F7FFFFF_01
+000000000002DDFE_48377F80_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000002C89FF56B_503227FD_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF7_01
+3B5E4F0BE0DEBFF0_5E6D793C_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_5F7FFDF8_01
+000000000004766B_488ECD60_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000002C_42300000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+07E662A109109D0A_5CFCCC54_01
+0000000000001000_45800000_00
+C000000037FFFFFE_5F400000_01
+0000000000000064_42C80000_00
+0000000000002000_46000000_00
+F801000000100000_5F780100_01
+02114B79075F70EE_5C0452DE_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+0000000000000BAC_453AC000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000003_01
+000000C4A3A3DBE5_5344A3A3_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_5F7FE000_01
+0000000000001A91_45D48800_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_5F7FFFF7_01
+0000000000007309_46E61200_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF7_01
+0000000000000F58_45758000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_5F7FFFFF_01
+0000000000006980_46D30000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF07F_01
+00000000000000DD_435D0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF7F_01
+00008C23DA2CEAD8_570C23DA_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_5F600000_01
+00000DE3C1DEC43C_555E3C1D_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_5F7FFF00_01
+000000008030FFBE_4F0030FF_01
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_5F7FFE00_01
+000000000FDEED86_4D7DEED8_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_5F73FFFF_01
+000000005DA3FF45_4EBB47FE_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_5F7FFFFF_01
+000000009B1BCB54_4F1B1BCB_01
+0000000008000000_4D000000_00
+00004000004001FE_56800000_01
+027DD19DE6563714_5C1F7467_01
+0000000010000000_4D800000_00
+FFC00000004007FE_5F7FC000_01
+000000000003A359_4868D640_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C70003F_01
+000000003E62EC20_4E798BB0_01
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E7FFFFF_01
+000000000000685F_46D0BE00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_5F7FFFFF_01
+00000836F99DBAA8_55036F99_01
+0000000100000000_4F800000_00
+00000020003FFEFE_520000FF_01
+0073466832042D47_5AE68CD0_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_5F7FFFFF_01
+00000000007829C8_4AF05390_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_557FFFFF_01
+0000001FB77C672B_51FDBBE3_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D0003FF_01
+0000000000005B78_46B6F000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_5F7F7FFF_01
+00000000000000F1_43710000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_559FFFFF_01
+0000000000000006_40C00000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+0008A60D9E19F17E_590A60D9_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+0000000007506DBA_4CEA0DB7_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_5F7FFFFF_01
+0000000006A42AC9_4CD48559_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_5583FFFF_01
+0007AA3F2BDACC89_58F547E5_01
+0000040000000000_54800000_00
+FFF8040000040000_5F7FF804_01
+0000000000000005_40A00000_00
+0000080000000000_55000000_00
+FFFF80000800001F_5F7FFF80_01
+000DF681DECDADC9_595F681D_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_5F7FFFFE_01
+0000000000004FBE_469F7C00_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51101FFF_01
+00C01FECA24DE1B0_5B401FEC_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_5F77FFFF_01
+0058A66761669936_5AB14CCE_01
+0000800000000000_57000000_00
+FFFEFF800000003E_5F7FFEFF_01
+0716EA43FAC45C97_5CE2DD48_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_5F7FFFFF_01
+0064D70EC7661FD8_5AC9AE1D_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_5F407FFF_01
+00D956DBD0AEE817_5B5956DB_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FB_01
+0000000000004300_46860000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+012EDF40F41F6021_5B976FA0_01
+0010000000000000_59800000_00
+FF9000000000001D_5F7F9000_01
+000000383DE950F6_5260F7A5_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_5F000003_01
+002B59CB3A604D69_5A2D672C_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5EFFFFFF_01
+000001A37C210862_53D1BE10_01
+0080000000000000_5B000000_00
+0002000002000002_58000000_01
+0000365CD8617789_56597361_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55DFFFFF_01
+000000000000101D_4580E800_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000001D098D19_4DE84C68_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C7FFFFF_01
+000016B3BD2C7BEF_55B59DE9_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFEFF_01
+00004E5ADDDAA4A8_569CB5BB_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+0000000000000721_44E42000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83BFFF_01
+0000000000648262_4AC904C4_00
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_5F40001F_01
+0000007353AC45D2_52E6A758_01
+8000000000000000_5F000000_00
+FFFFFFFFFFE7EFFF_5F7FFFFF_01
+0000000001A1202D_4BD09016_01
+C000000000000000_5F400000_00
+FFFFFFFFFFFF5F7F_5F7FFFFF_01
+0000000000C0CA70_4B40CA70_00
+E000000000000000_5F600000_00
+0000200201FFFFFE_56000807_01
+00000007B55D87D4_50F6ABB0_01
+F000000000000000_5F700000_00
+FF80000DFFFFFFFF_5F7F8000_01
+000000090510FAEF_5110510F_01
+F800000000000000_5F780000_00
+0003FFF00000000F_587FFC00_01
+000000000001724A_47B92500_00
+FC00000000000000_5F7C0000_00
+FFFFFFDF80000002_5F7FFFFF_01
+00000000000000E4_43640000_00
+FE00000000000000_5F7E0000_00
+FEFFFFFFFFF800FE_5F7EFFFF_01
+00000002C6222702_50318889_01
+FF00000000000000_5F7F0000_00
+0000000408000002_50810000_01
+000002E96DF1CB41_543A5B7C_01
+FF80000000000000_5F7F8000_00
+007FFFFFFFFFF9FE_5AFFFFFF_01
+0727F174DEE7DC85_5CE4FE2E_01
+FFC0000000000000_5F7FC000_00
+8000000003FFFEFE_5F000000_01
+000000000010BD5B_4985EAD8_00
+FFE0000000000000_5F7FE000_00
+0BEFFFFFFFFFFFFF_5D3EFFFF_01
+000000000022790C_4A09E430_00
+FFF0000000000000_5F7FF000_00
+FFFFFFFFFFEFFBFA_5F7FFFFF_01
+000000369E75DF01_525A79D7_01
+FFF8000000000000_5F7FF800_00
+00000007FEFFDFFF_50FFDFFB_01
+000000000000001E_41F00000_00
+FFFC000000000000_5F7FFC00_00
+0003FFFE0007FFFE_587FFF80_01
+0000000000328622_4A4A1888_00
+FFFE000000000000_5F7FFE00_00
+FFFFFF7FFFFDF7FF_5F7FFFFF_01
+00172F0EC496FE21_59B97876_01
+FFFF000000000000_5F7FFF00_00
+DFBFFFFFFFFFFFFE_5F5FBFFF_01
+0000000004FC1FCA_4C9F83F9_01
+FFFF800000000000_5F7FFF80_00
+00000FFF800FFFFE_557FF800_01
+000F5194E4A9C2CE_5975194E_01
+FFFFC00000000000_5F7FFFC0_00
+00000002100007FD_50040001_01
+000000000002D8FE_48363F80_00
+FFFFE00000000000_5F7FFFE0_00
+000000000007FF6E_48FFEDC0_00
+000000000003766E_485D9B80_00
+FFFFF00000000000_5F7FFFF0_00
+0040000400000002_5A800008_01
+000000000000F841_47784100_00
+FFFFF80000000000_5F7FFFF8_00
+3DFFFFFFFFFFFF7E_5E77FFFF_01
+0000000549E17E30_50A93C2F_01
+FFFFFC0000000000_5F7FFFFC_00
+FFFFFFFFFFFFFEE1_5F7FFFFF_01
+0000000000000027_421C0000_00
+FFFFFE0000000000_5F7FFFFE_00
+000000000EFFFFDF_4D6FFFFD_01
+0000000000000373_445CC000_00
+FFFFFF0000000000_5F7FFFFF_00
+FD00000008000000_5F7D0000_01
+000000000005DBB1_48BB7620_00
+FFFFFF8000000000_5F7FFFFF_01
+FFFFFFFFFFF8007F_5F7FFFFF_01
+00000002FD10A515_503F4429_01
+FFFFFFC000000000_5F7FFFFF_01
+FFEFFFFFFFFFFFFE_5F7FEFFF_01
+0AB02984F6283B6C_5D2B0298_01
+FFFFFFE000000000_5F7FFFFF_01
+FFFFFFBC000001FE_5F7FFFFF_01
+00B087C6B9FE7FE0_5B3087C6_01
+FFFFFFF000000000_5F7FFFFF_01
+FFF80001000007FE_5F7FF800_01
+01F2762EA6837956_5BF93B17_01
+FFFFFFF800000000_5F7FFFFF_01
+FFF7E0FFFFFFFFFE_5F7FF7E0_01
+00022E1175484626_580B845D_01
+FFFFFFFC00000000_5F7FFFFF_01
+0000200020000FFE_56000080_01
+000000000000168F_45B47800_00
+FFFFFFFE00000000_5F7FFFFF_01
+021FFFFFFFFBFFFF_5C07FFFF_01
+0000000000000001_3F800000_00
+FFFFFFFF00000000_5F7FFFFF_01
+FFFFFFD0000FFFFD_5F7FFFFF_01
+000001BDF6658B83_53DEFB32_01
+FFFFFFFF80000000_5F7FFFFF_01
+1000001FFDFFFFFF_5D800000_01
+000000000000BB5B_473B5B00_00
+FFFFFFFFC0000000_5F7FFFFF_01
+FFFFFFBFFE0FFFFF_5F7FFFFF_01
+0000000000000000_00000000_00
+FFFFFFFFE0000000_5F7FFFFF_01
+FFFFFFFBF00007FF_5F7FFFFF_01
+01E986274F48EAAD_5BF4C313_01
+FFFFFFFFF0000000_5F7FFFFF_01
+1FFFFFFDFFFFFF7F_5DFFFFFF_01
+000000000000CB5A_474B5A00_00
+FFFFFFFFF8000000_5F7FFFFF_01
+7FF000000000FFFF_5EFFE000_01
+0000000BC2717FC3_513C2717_01
+FFFFFFFFFC000000_5F7FFFFF_01
+FFFFFFE00008001F_5F7FFFFF_01
+00000000000FABDA_497ABDA0_00
+FFFFFFFFFE000000_5F7FFFFF_01
+0200000000000002_5C000000_01
+0000000000FDA53F_4B7DA53F_00
+FFFFFFFFFF000000_5F7FFFFF_01
+F6000003FFFFFFFE_5F760000_01
+0000000000000010_41800000_00
+FFFFFFFFFF800000_5F7FFFFF_01
+FFFFFFFFFFBFFF7E_5F7FFFFF_01
+00000001EE0FEA62_4FF707F5_01
+FFFFFFFFFFC00000_5F7FFFFF_01
+0000007FFF9FFFFD_52FFFF3F_01
+00000077F35EDC1D_52EFE6BD_01
+FFFFFFFFFFE00000_5F7FFFFF_01
+FFFFFFF7FDFFFF7D_5F7FFFFF_01
+00000000000003AD_446B4000_00
+FFFFFFFFFFF00000_5F7FFFFF_01
+FFFFFF0000100020_5F7FFFFF_01
+67F167FBC7FC5F9A_5ECFE2CF_01
+FFFFFFFFFFF80000_5F7FFFFF_01
+003FFFFFFFFC0001_5A7FFFFF_01
+002E48F9F4EBD30E_5A3923E7_01
+FFFFFFFFFFFC0000_5F7FFFFF_01
+DFFFFFFFFFFBFFFE_5F5FFFFF_01
+0091C23EE8C9424F_5B11C23E_01
+FFFFFFFFFFFE0000_5F7FFFFF_01
+F7DFFBFFFFFFFFFE_5F77DFFB_01
+00000000ACAE080C_4F2CAE08_01
+FFFFFFFFFFFF0000_5F7FFFFF_01
+FFFFC00010000020_5F7FFFC0_01
+0CD921F917B20E40_5D4D921F_01
+FFFFFFFFFFFF8000_5F7FFFFF_01
+F8000FFFFFFFFFFD_5F78000F_01
+00017C566BC7D811_57BE2B35_01
+FFFFFFFFFFFFC000_5F7FFFFF_01
+00000000000000FE_437E0000_00
+00F82AC14930D386_5B782AC1_01
+FFFFFFFFFFFFE000_5F7FFFFF_01
+00000000000003FC_447F0000_00
+008E62EC60E119FC_5B0E62EC_01
+FFFFFFFFFFFFF000_5F7FFFFF_01
+FFFFEFF7FF7FFFFE_5F7FFFEF_01
+1E2B1ECF210EEDC5_5DF158F6_01
+FFFFFFFFFFFFF800_5F7FFFFF_01
+00000000007FFF1F_4AFFFE3E_00
+000006534F5676F7_54CA69EA_01
+FFFFFFFFFFFFFC00_5F7FFFFF_01
+0000001004FFFFFD_518027FF_01
+0000435C939669F1_5686B927_01
+FFFFFFFFFFFFFE00_5F7FFFFF_01
+1FFFFFFFFFFFFDFD_5DFFFFFF_01
+0000000000000011_41880000_00
+FFFFFFFFFFFFFF00_5F7FFFFF_01
+01FFFFFFFBFFEFFE_5BFFFFFF_01
+000000000000036E_445B8000_00
+FFFFFFFFFFFFFF80_5F7FFFFF_01
+FFF7FFFFFFFFF7FD_5F7FF7FF_01
+000038E2BCFAC553_56638AF3_01
+FFFFFFFFFFFFFFC0_5F7FFFFF_01
+FFFFFBFFFFFE0FFE_5F7FFFFB_01
+00000009A4E704BF_511A4E70_01
+FFFFFFFFFFFFFFE0_5F7FFFFF_01
+1400007FFFFFFFFD_5DA00003_01
+0000000093B187B4_4F13B187_01
+FFFFFFFFFFFFFFF0_5F7FFFFF_01
+40000000007FFFFD_5E800000_01
+0000000000E7D468_4B67D468_00
+FFFFFFFFFFFFFFF8_5F7FFFFF_01
+007FFEFFFFFBFFFE_5AFFFDFF_01
+000000026CEC79F8_501B3B1E_01
+FFFFFFFFFFFFFFFC_5F7FFFFF_01
+00FFFFFF000000FF_5B7FFFFF_01
+0000000000D3983A_4B53983A_00
+FFFFFFFFFFFFFFFE_5F7FFFFF_01
+00007FFFBFFF7FFE_56FFFF7F_01
+00000001F4A7088A_4FFA5384_01
+FFFFFFFFFFFFFFFF_5F7FFFFF_01
+000008000000027E_55000000_01
+000000000001F4E8_47FA7400_00
+FFFFFFFFFFFFFFFD_5F7FFFFF_01
+FFFFFFFFFF83FFDF_5F7FFFFF_01
+00001E11407887B2_55F08A03_01
+FFFFFFFFFFFFFFFB_5F7FFFFF_01
+04000003FFFFFFF6_5C800000_01
+0000000000000D13_45513000_00
+FFFFFFFFFFFFFFF7_5F7FFFFF_01
+BFFC00000000003E_5F3FFC00_01
+00000028D7BBB75B_52235EEE_01
+FFFFFFFFFFFFFFEF_5F7FFFFF_01
+000FFFFBFFFC0000_597FFFBF_01
+0000000000CD5A23_4B4D5A23_00
+FFFFFFFFFFFFFFDF_5F7FFFFF_01
+FFBFDFFFBFFFFFFF_5F7FBFDF_01
+00000000000000FF_437F0000_00
+FFFFFFFFFFFFFFBF_5F7FFFFF_01
+00000007FF800003_50FFF000_01
+00000000000ABB02_492BB020_00
+FFFFFFFFFFFFFF7F_5F7FFFFF_01
+FFFFFFFFFFFEE7FF_5F7FFFFF_01
+00664B2B9BAD0DA2_5ACC9657_01
+FFFFFFFFFFFFFEFF_5F7FFFFF_01
+0000000000100803_49804018_00
+009B1DCB9F857D5E_5B1B1DCB_01
+FFFFFFFFFFFFFDFF_5F7FFFFF_01
+FFFFFFBFFFFFEFEE_5F7FFFFF_01
+36FD7542899C1C6F_5E5BF5D5_01
+FFFFFFFFFFFFFBFF_5F7FFFFF_01
+FF800000004001FF_5F7F8000_01
+0000000006BE4932_4CD7C926_01
+FFFFFFFFFFFFF7FF_5F7FFFFF_01
+00001004000FFFFE_55802000_01
+0000001DAA0123E0_51ED5009_01
+FFFFFFFFFFFFEFFF_5F7FFFFF_01
+00000001FDFFFDFE_4FFEFFFE_01
+00001C8703B1DCB0_55E4381D_01
+FFFFFFFFFFFFDFFF_5F7FFFFF_01
+FE0FE00000000000_5F7E0FE0_00
+0F79ED944A4E2779_5D779ED9_01
+FFFFFFFFFFFFBFFF_5F7FFFFF_01
+FBFFFE0400000000_5F7BFFFE_01
+0000030127E03666_544049F8_01
+FFFFFFFFFFFF7FFF_5F7FFFFF_01
+FFFFF0200000FFFE_5F7FFFF0_01
+000000000000017F_43BF8000_00
+FFFFFFFFFFFEFFFF_5F7FFFFF_01
+FFEFFE0000080000_5F7FEFFE_01
+00000000013354EA_4B99AA75_00
+FFFFFFFFFFFDFFFF_5F7FFFFF_01
+003FF0000003FFFE_5A7FC000_01
+0000016375B23F7B_53B1BAD9_01
+FFFFFFFFFFFBFFFF_5F7FFFFF_01
+000407FFFFFFFFF6_5880FFFF_01
+0000000192117F38_4FC908BF_01
+FFFFFFFFFFF7FFFF_5F7FFFFF_01
+FFFFFFFFFFFF7FFF_5F7FFFFF_01
+00000000000018BE_45C5F000_00
+FFFFFFFFFFEFFFFF_5F7FFFFF_01
+004000020FFFFFFF_5A800004_01
+0000B84C2D8BC9CB_57384C2D_01
+FFFFFFFFFFDFFFFF_5F7FFFFF_01
+00FFFFFFFFFFFFFD_5B7FFFFF_01
+00000223C2C6F284_5408F0B1_01
+FFFFFFFFFFBFFFFF_5F7FFFFF_01
+FFFDDFFFFFFFFFFD_5F7FFDDF_01
+00000000F46356C4_4F746356_01
+FFFFFFFFFF7FFFFF_5F7FFFFF_01
+010000000000BFFF_5B800000_01
+0000000000000005_40A00000_00
+FFFFFFFFFEFFFFFF_5F7FFFFF_01
+FFFFBF7FFBFFFFFE_5F7FFFBF_01
+00000026386CE889_5218E1B3_01
+FFFFFFFFFDFFFFFF_5F7FFFFF_01
+F00000F7FFFFFFFF_5F700000_01
+0001FC53090C46A4_57FE2984_01
+FFFFFFFFFBFFFFFF_5F7FFFFF_01
+0000000000800047_4B000047_00
+000000001693872E_4DB49C39_01
+FFFFFFFFF7FFFFFF_5F7FFFFF_01
+000000007FBFFBFF_4EFF7FF7_01
+00000226A7845E35_5409A9E1_01
+FFFFFFFFEFFFFFFF_5F7FFFFF_01
+FFFFFFDFFFFFFBFD_5F7FFFFF_01
+000000005433D14C_4EA867A2_01
+FFFFFFFFDFFFFFFF_5F7FFFFF_01
+0001FFFFFFE0000E_57FFFFFF_01
+00F23E8068D3D84A_5B723E80_01
+FFFFFFFFBFFFFFFF_5F7FFFFF_01
+F7FFBFFFFFFFBFFF_5F77FFBF_01
+0000BD29B7459087_573D29B7_01
+FFFFFFFF7FFFFFFF_5F7FFFFF_01
+FFFFFFF8FFFFBFFF_5F7FFFFF_01
+00000000002DDC06_4A377018_00
+FFFFFFFEFFFFFFFF_5F7FFFFF_01
+FFFFFFF80001FFFF_5F7FFFFF_01
+0000000000012FF9_4797FC80_00
+FFFFFFFDFFFFFFFF_5F7FFFFF_01
+004000040000FFFF_5A800008_01
+0000000000000001_3F800000_00
+FFFFFFFBFFFFFFFF_5F7FFFFF_01
+C0000000007FFFFA_5F400000_01
+0000000006053E2B_4CC0A7C5_01
+FFFFFFF7FFFFFFFF_5F7FFFFF_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000002D_42340000_00
+FFFFFFEFFFFFFFFF_5F7FFFFF_01
+F80000000001007E_5F780000_01
+00000D48424AD9D6_55548424_01
+FFFFFFDFFFFFFFFF_5F7FFFFF_01
+FFFFFE0001FEFFFF_5F7FFFFE_01
+000000000000033B_444EC000_00
+FFFFFFBFFFFFFFFF_5F7FFFFF_01
+0007FBFFFFFDFFFE_58FF7FFF_01
+4A16BD4128090C83_5E942D7A_01
+FFFFFF7FFFFFFFFF_5F7FFFFF_01
+00FFF7FFFF7FFFFE_5B7FF7FF_01
+0000000000000086_43060000_00
+FFFFFEFFFFFFFFFF_5F7FFFFE_01
+FBFFFFBFFFBFFFFF_5F7BFFFF_01
+00000000000021BA_4606E800_00
+FFFFFDFFFFFFFFFF_5F7FFFFD_01
+0000000040000082_4E800001_01
+0007A2BF5B689F89_58F457EB_01
+FFFFFBFFFFFFFFFF_5F7FFFFB_01
+0000001FF8000008_51FFC000_01
+387CAA7DE672DE8B_5E61F2A9_01
+FFFFF7FFFFFFFFFF_5F7FFFF7_01
+07FFF80000000002_5CFFFF00_01
+0000000030A1E5B8_4E428796_01
+FFFFEFFFFFFFFFFF_5F7FFFEF_01
+F7FFFFE00007FFFF_5F77FFFF_01
+000000000006ADFC_48D5BF80_00
+FFFFDFFFFFFFFFFF_5F7FFFDF_01
+FFFFFF03FFFFFFC0_5F7FFFFF_01
+0A579475948F0032_5D257947_01
+FFFFBFFFFFFFFFFF_5F7FFFBF_01
+FC00000000003FF6_5F7C0000_01
+00AE677AC313BF60_5B2E677A_01
+FFFF7FFFFFFFFFFF_5F7FFF7F_01
+02000007FF7FFFFF_5C000001_01
+0000002E999639F1_523A6658_01
+FFFEFFFFFFFFFFFF_5F7FFEFF_01
+FFFF83FFFFFFFFBE_5F7FFF83_01
+000000000003537D_4854DF40_00
+FFFDFFFFFFFFFFFF_5F7FFDFF_01
+EFFFFFC00000003D_5F6FFFFF_01
+000000121FEDFD35_5190FF6F_01
+FFFBFFFFFFFFFFFF_5F7FFBFF_01
+FFFFFFF0000007FE_5F7FFFFF_01
+00000000001E0839_49F041C8_00
+FFF7FFFFFFFFFFFF_5F7FF7FF_01
+0000007FFFE000FF_52FFFFC0_01
+0000000079F30F48_4EF3E61E_01
+FFEFFFFFFFFFFFFF_5F7FEFFF_01
+FFFFFC13FFFFFFFD_5F7FFFFC_01
+0000000000003B85_466E1400_00
+FFDFFFFFFFFFFFFF_5F7FDFFF_01
+000008000007FFFE_55000000_01
+32DB4409E5AE87E6_5E4B6D10_01
+FFBFFFFFFFFFFFFF_5F7FBFFF_01
+FFFFFFFFFFF7BFEE_5F7FFFFF_01
+000000000000003D_42740000_00
+FF7FFFFFFFFFFFFF_5F7F7FFF_01
+000000001040FFFE_4D8207FF_01
+00004909A09C13D3_56921341_01
+FEFFFFFFFFFFFFFF_5F7EFFFF_01
+FFFFFF01FFFFFF7F_5F7FFFFF_01
+00000072E7D2575D_52E5CFA4_01
+FDFFFFFFFFFFFFFF_5F7DFFFF_01
+FFFFFFFFFFFEFFDB_5F7FFFFF_01
+0000000000000057_42AE0000_00
+FBFFFFFFFFFFFFFF_5F7BFFFF_01
+100000001FFFFFF6_5D800000_01
+000000914B12EF51_53114B12_01
+F7FFFFFFFFFFFFFF_5F77FFFF_01
+0407FFFFFFFFFEFF_5C80FFFF_01
+000000769F3A5C2C_52ED3E74_01
+EFFFFFFFFFFFFFFF_5F6FFFFF_01
+FFFFFFFDF7FFFFFD_5F7FFFFF_01
+0000000000000002_40000000_00
+DFFFFFFFFFFFFFFF_5F5FFFFF_01
+FFFFFFFFFE0007FF_5F7FFFFF_01
+000000000000009E_431E0000_00
+BFFFFFFFFFFFFFFF_5F3FFFFF_01
+FFF800000009FFFF_5F7FF800_01
+0000000000087AA4_4907AA40_00
+7FFFFFFFFFFFFFFF_5EFFFFFF_01
+4080000000FFFFFF_5E810000_01
+000000001DE7601D_4DEF3B00_01
+3FFFFFFFFFFFFFFF_5E7FFFFF_01
+FFCFFFFFFFBFFFFE_5F7FCFFF_01
+000000000000004A_42940000_00
+1FFFFFFFFFFFFFFF_5DFFFFFF_01
+000080400000003F_57004000_01
+00000000003F75A5_4A7DD694_00
+0FFFFFFFFFFFFFFF_5D7FFFFF_01
+FFFFFFEFFFFFCFFE_5F7FFFFF_01
+000000E775887420_53677588_01
+07FFFFFFFFFFFFFF_5CFFFFFF_01
+00000000000801FE_49001FE0_00
+0000000000A13FF1_4B213FF1_00
+03FFFFFFFFFFFFFF_5C7FFFFF_01
+07FEFFFFFFFFFFEE_5CFFDFFF_01
+000000000000000C_41400000_00
+01FFFFFFFFFFFFFF_5BFFFFFF_01
+0000000820000003_51020000_01
+00000001AD105214_4FD68829_01
+00FFFFFFFFFFFFFF_5B7FFFFF_01
+FFFFF00FFFFFFFBE_5F7FFFF0_01
+0000000000CC48E7_4B4C48E7_00
+007FFFFFFFFFFFFF_5AFFFFFF_01
+00000FFFEF7FFFFF_557FFEF7_01
+00000000000BA6CB_493A6CB0_00
+003FFFFFFFFFFFFF_5A7FFFFF_01
+FFFFFF7FBFFFFFBF_5F7FFFFF_01
+0000000000024425_48110940_00
+001FFFFFFFFFFFFF_59FFFFFF_01
+200000001FFBFFFF_5E000000_01
+0000004E7115EC53_529CE22B_01
+000FFFFFFFFFFFFF_597FFFFF_01
+FFFFF803FFFFFFBF_5F7FFFF8_01
+0000002E539ADCFE_52394E6B_01
+0007FFFFFFFFFFFF_58FFFFFF_01
+FFFFFFFFFBFFFFFF_5F7FFFFF_01
+000000D5084732F3_53550847_01
+0003FFFFFFFFFFFF_587FFFFF_01
+BFFF7FFFFFFFFE00_5F3FFF7F_01
+0000000000000543_44A86000_00
+0001FFFFFFFFFFFF_57FFFFFF_01
+0000001FFBFFE000_51FFDFFF_00
+000000000000491B_46923600_00
+0000FFFFFFFFFFFF_577FFFFF_01
+FC00200000001FFE_5F7C0020_01
+0000016898822A24_53B44C41_01
+00007FFFFFFFFFFF_56FFFFFF_01
+3FFF03FFFFFFFFFE_5E7FFC0F_01
+0000000FFE18C7BF_517FE18C_01
+00003FFFFFFFFFFF_567FFFFF_01
+FFFFFEFFFEFFFFFD_5F7FFFFE_01
+02F03620C1266ED9_5C3C0D88_01
+00001FFFFFFFFFFF_55FFFFFF_01
+BF7EFFFFFFFFFFFF_5F3F7EFF_01
+0000000000000055_42AA0000_00
+00000FFFFFFFFFFF_557FFFFF_01
+FFFBFFFFF803FFFE_5F7FFBFF_01
+0000000000168684_49B43420_00
+000007FFFFFFFFFF_54FFFFFF_01
+DFFFFFE00000001E_5F5FFFFF_01
+0000000000000CF5_454F5000_00
+000003FFFFFFFFFF_547FFFFF_01
+FFFF00400000FFFF_5F7FFF00_01
+0000000000000022_42080000_00
+000001FFFFFFFFFF_53FFFFFF_01
+FBFFFFFFFFFFBDFE_5F7BFFFF_01
+0000000000001BC9_45DE4800_00
+000000FFFFFFFFFF_537FFFFF_01
+807FFFFFFFFFDFFE_5F007FFF_01
+000274E35A70CD76_581D38D6_01
+0000007FFFFFFFFF_52FFFFFF_01
+0FFFFFFFFEFFFFFD_5D7FFFFF_01
+0000000300E73AFC_504039CE_01
+0000003FFFFFFFFF_527FFFFF_01
+FFC000000001000E_5F7FC000_01
+00000000000615E9_48C2BD20_00
+0000001FFFFFFFFF_51FFFFFF_01
+0001FFFFFFFFF3FD_57FFFFFF_01
+00000000000000B3_43330000_00
+0000000FFFFFFFFF_517FFFFF_01
+000000001FFFBFFF_4DFFFDFF_01
+0000006E6B141E1B_52DCD628_01
+00000007FFFFFFFF_50FFFFFF_01
+FFFFFFFFF60007FF_5F7FFFFF_01
+00000003AB310BA6_506ACC42_01
+00000003FFFFFFFF_507FFFFF_01
+0003FFFFB7FFFFFF_587FFFED_01
+0000000000000195_43CA8000_00
+00000001FFFFFFFF_4FFFFFFF_01
+FFFFFFFF8000000B_5F7FFFFF_01
+00000059BA8D5559_52B3751A_01
+00000000FFFFFFFF_4F7FFFFF_01
+FBFEFFFFFFFFFFF9_5F7BFEFF_01
+000001B6F062822D_53DB7831_01
+000000007FFFFFFF_4EFFFFFF_01
+0001000000000082_57800000_01
+03CEAD9E2FB104A4_5C73AB67_01
+000000003FFFFFFF_4E7FFFFF_01
+000003FFFFFFFF7C_547FFFFF_01
+000000000D681E78_4D5681E7_01
+000000001FFFFFFF_4DFFFFFF_01
+00002000400001FF_56000100_01
+0000000000000058_42B00000_00
+000000000FFFFFFF_4D7FFFFF_01
+3FFF80000000003E_5E7FFE00_01
+0000000000000095_43150000_00
+0000000007FFFFFF_4CFFFFFF_01
+010000BFFFFFFFFF_5B80005F_01
+0000009697087B19_53169708_01
+0000000003FFFFFF_4C7FFFFF_01
+FBFFFFFFFFEEFFFD_5F7BFFFF_01
+0000001E64BDFC55_51F325EF_01
+0000000001FFFFFF_4BFFFFFF_01
+FC00000001FFFFFE_5F7C0000_01
+0000D156A62AB849_575156A6_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_5F7FFFFF_01
+00035354EAE7C259_5854D53A_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_5F7FFFFF_01
+00000000F4DF3C75_4F74DF3C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_5F7FFA00_01
+0000000000000003_40400000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_5F7FFFFF_01
+0000005B5433CB9B_52B6A867_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_5F7FFFFD_01
+0000000000DEAE1F_4B5EAE1F_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_5F7FFFFF_01
+000000007735DEC7_4EEE6BBD_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFDFFFF_01
+000007757D8B12ED_54EEAFB1_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_5F7FFFFE_01
+00002A654064E046_56299501_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+0000000000000007_40E00000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5CFFFFFF_01
+00002D78B3D6C3B6_5635E2CF_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+000000070B77F34F_50E16EFE_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_5F7FFFFF_01
+0000093EB4D67EC8_5513EB4D_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_5F3FFFDF_01
+0205CEAF34EA1DC7_5C0173AB_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900000_01
+0000000000000003_40400000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000760D0_48EC1A00_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B801FFF_01
+02C000708FF1BA51_5C30001C_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_5F780200_01
+4F9E07DCC0BDC061_5E9F3C0F_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+00000001B9B2A079_4FDCD950_01
+000000000000003F_427C0000_00
+FFF80000000080FF_5F7FF800_01
+00000000005EB5B4_4ABD6B68_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+0000000000DAC607_4B5AC607_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_5F7FFFFF_01
+00000DC5B9D66984_555C5B9D_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_5F4001FF_01
+00003D06B372AA06_56741ACD_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f32_rne.tv b/wally-pipelined/testbench/fp/ui64_f32_rne.tv
new file mode 100644
index 000000000..552eb9882
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f32_rne.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_5CFFFFC0_01
+0000000072CC8B7A_4EE59917_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_5F800000_01
+072C857F319EDE38_5CE590B0_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_5F7FFFFC_01
+00794C79B6D3007B_5AF298F3_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_5F7C0000_01
+0000000005AE458D_4CB5C8B2_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+09EB456140D88764_5D1EB456_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_5F7FFFE4_01
+27DE834A248EDF36_5E1F7A0D_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC008_01
+00000000000385E2_48617880_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_5F700420_01
+000000159EB1FD45_51ACF590_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_5F800000_01
+000000000002DDFE_48377F80_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000002C89FF56B_503227FD_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF8_01
+3B5E4F0BE0DEBFF0_5E6D793C_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_5F7FFDF8_01
+000000000004766B_488ECD60_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000002C_42300000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+07E662A109109D0A_5CFCCC54_01
+0000000000001000_45800000_00
+C000000037FFFFFE_5F400000_01
+0000000000000064_42C80000_00
+0000000000002000_46000000_00
+F801000000100000_5F780100_01
+02114B79075F70EE_5C0452DE_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+0000000000000BAC_453AC000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000004_01
+000000C4A3A3DBE5_5344A3A4_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_5F7FE000_01
+0000000000001A91_45D48800_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_5F7FFFF8_01
+0000000000007309_46E61200_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF8_01
+0000000000000F58_45758000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_5F800000_01
+0000000000006980_46D30000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF080_01
+00000000000000DD_435D0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF80_01
+00008C23DA2CEAD8_570C23DA_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_5F600000_01
+00000DE3C1DEC43C_555E3C1E_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_5F7FFF00_01
+000000008030FFBE_4F003100_01
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_5F7FFE00_01
+000000000FDEED86_4D7DEED8_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_5F740000_01
+000000005DA3FF45_4EBB47FF_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_5F800000_01
+000000009B1BCB54_4F1B1BCB_01
+0000000008000000_4D000000_00
+00004000004001FE_56800001_01
+027DD19DE6563714_5C1F7467_01
+0000000010000000_4D800000_00
+FFC00000004007FE_5F7FC000_01
+000000000003A359_4868D640_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C700040_01
+000000003E62EC20_4E798BB0_01
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E800000_01
+000000000000685F_46D0BE00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_5F800000_01
+00000836F99DBAA8_55036F9A_01
+0000000100000000_4F800000_00
+00000020003FFEFE_52000100_01
+0073466832042D47_5AE68CD0_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_5F800000_01
+00000000007829C8_4AF05390_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_55800000_01
+0000001FB77C672B_51FDBBE3_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D000400_01
+0000000000005B78_46B6F000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_5F7F8000_01
+00000000000000F1_43710000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_55A00000_01
+0000000000000006_40C00000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+0008A60D9E19F17E_590A60DA_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+0000000007506DBA_4CEA0DB7_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_5F800000_01
+0000000006A42AC9_4CD48559_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_55840000_01
+0007AA3F2BDACC89_58F547E5_01
+0000040000000000_54800000_00
+FFF8040000040000_5F7FF804_01
+0000000000000005_40A00000_00
+0000080000000000_55000000_00
+FFFF80000800001F_5F7FFF80_01
+000DF681DECDADC9_595F681E_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_5F7FFFFF_01
+0000000000004FBE_469F7C00_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51102000_01
+00C01FECA24DE1B0_5B401FED_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_5F780000_01
+0058A66761669936_5AB14CCF_01
+0000800000000000_57000000_00
+FFFEFF800000003E_5F7FFF00_01
+0716EA43FAC45C97_5CE2DD48_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_5F800000_01
+0064D70EC7661FD8_5AC9AE1E_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_5F408000_01
+00D956DBD0AEE817_5B5956DC_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FC_01
+0000000000004300_46860000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+012EDF40F41F6021_5B976FA0_01
+0010000000000000_59800000_00
+FF9000000000001D_5F7F9000_01
+000000383DE950F6_5260F7A5_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_5F000004_01
+002B59CB3A604D69_5A2D672D_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5F000000_01
+000001A37C210862_53D1BE11_01
+0080000000000000_5B000000_00
+0002000002000002_58000001_01
+0000365CD8617789_56597362_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55E00000_01
+000000000000101D_4580E800_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000001D098D19_4DE84C69_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C800000_01
+000016B3BD2C7BEF_55B59DE9_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFF00_01
+00004E5ADDDAA4A8_569CB5BC_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+0000000000000721_44E42000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83C000_01
+0000000000648262_4AC904C4_00
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_5F400020_01
+0000007353AC45D2_52E6A759_01
+8000000000000000_5F000000_00
+FFFFFFFFFFE7EFFF_5F800000_01
+0000000001A1202D_4BD09016_01
+C000000000000000_5F400000_00
+FFFFFFFFFFFF5F7F_5F800000_01
+0000000000C0CA70_4B40CA70_00
+E000000000000000_5F600000_00
+0000200201FFFFFE_56000808_01
+00000007B55D87D4_50F6ABB1_01
+F000000000000000_5F700000_00
+FF80000DFFFFFFFF_5F7F8000_01
+000000090510FAEF_51105110_01
+F800000000000000_5F780000_00
+0003FFF00000000F_587FFC00_01
+000000000001724A_47B92500_00
+FC00000000000000_5F7C0000_00
+FFFFFFDF80000002_5F800000_01
+00000000000000E4_43640000_00
+FE00000000000000_5F7E0000_00
+FEFFFFFFFFF800FE_5F7F0000_01
+00000002C6222702_5031888A_01
+FF00000000000000_5F7F0000_00
+0000000408000002_50810000_01
+000002E96DF1CB41_543A5B7C_01
+FF80000000000000_5F7F8000_00
+007FFFFFFFFFF9FE_5B000000_01
+0727F174DEE7DC85_5CE4FE2F_01
+FFC0000000000000_5F7FC000_00
+8000000003FFFEFE_5F000000_01
+000000000010BD5B_4985EAD8_00
+FFE0000000000000_5F7FE000_00
+0BEFFFFFFFFFFFFF_5D3F0000_01
+000000000022790C_4A09E430_00
+FFF0000000000000_5F7FF000_00
+FFFFFFFFFFEFFBFA_5F800000_01
+000000369E75DF01_525A79D7_01
+FFF8000000000000_5F7FF800_00
+00000007FEFFDFFF_50FFDFFC_01
+000000000000001E_41F00000_00
+FFFC000000000000_5F7FFC00_00
+0003FFFE0007FFFE_587FFF80_01
+0000000000328622_4A4A1888_00
+FFFE000000000000_5F7FFE00_00
+FFFFFF7FFFFDF7FF_5F7FFFFF_01
+00172F0EC496FE21_59B97876_01
+FFFF000000000000_5F7FFF00_00
+DFBFFFFFFFFFFFFE_5F5FC000_01
+0000000004FC1FCA_4C9F83F9_01
+FFFF800000000000_5F7FFF80_00
+00000FFF800FFFFE_557FF801_01
+000F5194E4A9C2CE_5975194E_01
+FFFFC00000000000_5F7FFFC0_00
+00000002100007FD_50040002_01
+000000000002D8FE_48363F80_00
+FFFFE00000000000_5F7FFFE0_00
+000000000007FF6E_48FFEDC0_00
+000000000003766E_485D9B80_00
+FFFFF00000000000_5F7FFFF0_00
+0040000400000002_5A800008_01
+000000000000F841_47784100_00
+FFFFF80000000000_5F7FFFF8_00
+3DFFFFFFFFFFFF7E_5E780000_01
+0000000549E17E30_50A93C30_01
+FFFFFC0000000000_5F7FFFFC_00
+FFFFFFFFFFFFFEE1_5F800000_01
+0000000000000027_421C0000_00
+FFFFFE0000000000_5F7FFFFE_00
+000000000EFFFFDF_4D6FFFFE_01
+0000000000000373_445CC000_00
+FFFFFF0000000000_5F7FFFFF_00
+FD00000008000000_5F7D0000_01
+000000000005DBB1_48BB7620_00
+FFFFFF8000000000_5F800000_01
+FFFFFFFFFFF8007F_5F800000_01
+00000002FD10A515_503F4429_01
+FFFFFFC000000000_5F800000_01
+FFEFFFFFFFFFFFFE_5F7FF000_01
+0AB02984F6283B6C_5D2B0298_01
+FFFFFFE000000000_5F800000_01
+FFFFFFBC000001FE_5F800000_01
+00B087C6B9FE7FE0_5B3087C7_01
+FFFFFFF000000000_5F800000_01
+FFF80001000007FE_5F7FF800_01
+01F2762EA6837956_5BF93B17_01
+FFFFFFF800000000_5F800000_01
+FFF7E0FFFFFFFFFE_5F7FF7E1_01
+00022E1175484626_580B845D_01
+FFFFFFFC00000000_5F800000_01
+0000200020000FFE_56000080_01
+000000000000168F_45B47800_00
+FFFFFFFE00000000_5F800000_01
+021FFFFFFFFBFFFF_5C080000_01
+0000000000000001_3F800000_00
+FFFFFFFF00000000_5F800000_01
+FFFFFFD0000FFFFD_5F800000_01
+000001BDF6658B83_53DEFB33_01
+FFFFFFFF80000000_5F800000_01
+1000001FFDFFFFFF_5D800001_01
+000000000000BB5B_473B5B00_00
+FFFFFFFFC0000000_5F800000_01
+FFFFFFBFFE0FFFFF_5F800000_01
+0000000000000000_00000000_00
+FFFFFFFFE0000000_5F800000_01
+FFFFFFFBF00007FF_5F800000_01
+01E986274F48EAAD_5BF4C314_01
+FFFFFFFFF0000000_5F800000_01
+1FFFFFFDFFFFFF7F_5E000000_01
+000000000000CB5A_474B5A00_00
+FFFFFFFFF8000000_5F800000_01
+7FF000000000FFFF_5EFFE000_01
+0000000BC2717FC3_513C2718_01
+FFFFFFFFFC000000_5F800000_01
+FFFFFFE00008001F_5F800000_01
+00000000000FABDA_497ABDA0_00
+FFFFFFFFFE000000_5F800000_01
+0200000000000002_5C000000_01
+0000000000FDA53F_4B7DA53F_00
+FFFFFFFFFF000000_5F800000_01
+F6000003FFFFFFFE_5F760000_01
+0000000000000010_41800000_00
+FFFFFFFFFF800000_5F800000_01
+FFFFFFFFFFBFFF7E_5F800000_01
+00000001EE0FEA62_4FF707F5_01
+FFFFFFFFFFC00000_5F800000_01
+0000007FFF9FFFFD_52FFFF40_01
+00000077F35EDC1D_52EFE6BE_01
+FFFFFFFFFFE00000_5F800000_01
+FFFFFFF7FDFFFF7D_5F800000_01
+00000000000003AD_446B4000_00
+FFFFFFFFFFF00000_5F800000_01
+FFFFFF0000100020_5F7FFFFF_01
+67F167FBC7FC5F9A_5ECFE2D0_01
+FFFFFFFFFFF80000_5F800000_01
+003FFFFFFFFC0001_5A800000_01
+002E48F9F4EBD30E_5A3923E8_01
+FFFFFFFFFFFC0000_5F800000_01
+DFFFFFFFFFFBFFFE_5F600000_01
+0091C23EE8C9424F_5B11C23F_01
+FFFFFFFFFFFE0000_5F800000_01
+F7DFFBFFFFFFFFFE_5F77DFFC_01
+00000000ACAE080C_4F2CAE08_01
+FFFFFFFFFFFF0000_5F800000_01
+FFFFC00010000020_5F7FFFC0_01
+0CD921F917B20E40_5D4D9220_01
+FFFFFFFFFFFF8000_5F800000_01
+F8000FFFFFFFFFFD_5F780010_01
+00017C566BC7D811_57BE2B36_01
+FFFFFFFFFFFFC000_5F800000_01
+00000000000000FE_437E0000_00
+00F82AC14930D386_5B782AC1_01
+FFFFFFFFFFFFE000_5F800000_01
+00000000000003FC_447F0000_00
+008E62EC60E119FC_5B0E62EC_01
+FFFFFFFFFFFFF000_5F800000_01
+FFFFEFF7FF7FFFFE_5F7FFFF0_01
+1E2B1ECF210EEDC5_5DF158F6_01
+FFFFFFFFFFFFF800_5F800000_01
+00000000007FFF1F_4AFFFE3E_00
+000006534F5676F7_54CA69EB_01
+FFFFFFFFFFFFFC00_5F800000_01
+0000001004FFFFFD_51802800_01
+0000435C939669F1_5686B927_01
+FFFFFFFFFFFFFE00_5F800000_01
+1FFFFFFFFFFFFDFD_5E000000_01
+0000000000000011_41880000_00
+FFFFFFFFFFFFFF00_5F800000_01
+01FFFFFFFBFFEFFE_5C000000_01
+000000000000036E_445B8000_00
+FFFFFFFFFFFFFF80_5F800000_01
+FFF7FFFFFFFFF7FD_5F7FF800_01
+000038E2BCFAC553_56638AF4_01
+FFFFFFFFFFFFFFC0_5F800000_01
+FFFFFBFFFFFE0FFE_5F7FFFFC_01
+00000009A4E704BF_511A4E70_01
+FFFFFFFFFFFFFFE0_5F800000_01
+1400007FFFFFFFFD_5DA00004_01
+0000000093B187B4_4F13B188_01
+FFFFFFFFFFFFFFF0_5F800000_01
+40000000007FFFFD_5E800000_01
+0000000000E7D468_4B67D468_00
+FFFFFFFFFFFFFFF8_5F800000_01
+007FFEFFFFFBFFFE_5AFFFE00_01
+000000026CEC79F8_501B3B1E_01
+FFFFFFFFFFFFFFFC_5F800000_01
+00FFFFFF000000FF_5B7FFFFF_01
+0000000000D3983A_4B53983A_00
+FFFFFFFFFFFFFFFE_5F800000_01
+00007FFFBFFF7FFE_56FFFF80_01
+00000001F4A7088A_4FFA5384_01
+FFFFFFFFFFFFFFFF_5F800000_01
+000008000000027E_55000000_01
+000000000001F4E8_47FA7400_00
+FFFFFFFFFFFFFFFD_5F800000_01
+FFFFFFFFFF83FFDF_5F800000_01
+00001E11407887B2_55F08A04_01
+FFFFFFFFFFFFFFFB_5F800000_01
+04000003FFFFFFF6_5C800000_01
+0000000000000D13_45513000_00
+FFFFFFFFFFFFFFF7_5F800000_01
+BFFC00000000003E_5F3FFC00_01
+00000028D7BBB75B_52235EEF_01
+FFFFFFFFFFFFFFEF_5F800000_01
+000FFFFBFFFC0000_597FFFC0_01
+0000000000CD5A23_4B4D5A23_00
+FFFFFFFFFFFFFFDF_5F800000_01
+FFBFDFFFBFFFFFFF_5F7FBFE0_01
+00000000000000FF_437F0000_00
+FFFFFFFFFFFFFFBF_5F800000_01
+00000007FF800003_50FFF000_01
+00000000000ABB02_492BB020_00
+FFFFFFFFFFFFFF7F_5F800000_01
+FFFFFFFFFFFEE7FF_5F800000_01
+00664B2B9BAD0DA2_5ACC9657_01
+FFFFFFFFFFFFFEFF_5F800000_01
+0000000000100803_49804018_00
+009B1DCB9F857D5E_5B1B1DCC_01
+FFFFFFFFFFFFFDFF_5F800000_01
+FFFFFFBFFFFFEFEE_5F800000_01
+36FD7542899C1C6F_5E5BF5D5_01
+FFFFFFFFFFFFFBFF_5F800000_01
+FF800000004001FF_5F7F8000_01
+0000000006BE4932_4CD7C926_01
+FFFFFFFFFFFFF7FF_5F800000_01
+00001004000FFFFE_55802000_01
+0000001DAA0123E0_51ED5009_01
+FFFFFFFFFFFFEFFF_5F800000_01
+00000001FDFFFDFE_4FFEFFFF_01
+00001C8703B1DCB0_55E4381E_01
+FFFFFFFFFFFFDFFF_5F800000_01
+FE0FE00000000000_5F7E0FE0_00
+0F79ED944A4E2779_5D779ED9_01
+FFFFFFFFFFFFBFFF_5F800000_01
+FBFFFE0400000000_5F7BFFFE_01
+0000030127E03666_544049F8_01
+FFFFFFFFFFFF7FFF_5F800000_01
+FFFFF0200000FFFE_5F7FFFF0_01
+000000000000017F_43BF8000_00
+FFFFFFFFFFFEFFFF_5F800000_01
+FFEFFE0000080000_5F7FEFFE_01
+00000000013354EA_4B99AA75_00
+FFFFFFFFFFFDFFFF_5F800000_01
+003FF0000003FFFE_5A7FC000_01
+0000016375B23F7B_53B1BAD9_01
+FFFFFFFFFFFBFFFF_5F800000_01
+000407FFFFFFFFF6_58810000_01
+0000000192117F38_4FC908C0_01
+FFFFFFFFFFF7FFFF_5F800000_01
+FFFFFFFFFFFF7FFF_5F800000_01
+00000000000018BE_45C5F000_00
+FFFFFFFFFFEFFFFF_5F800000_01
+004000020FFFFFFF_5A800004_01
+0000B84C2D8BC9CB_57384C2E_01
+FFFFFFFFFFDFFFFF_5F800000_01
+00FFFFFFFFFFFFFD_5B800000_01
+00000223C2C6F284_5408F0B2_01
+FFFFFFFFFFBFFFFF_5F800000_01
+FFFDDFFFFFFFFFFD_5F7FFDE0_01
+00000000F46356C4_4F746357_01
+FFFFFFFFFF7FFFFF_5F800000_01
+010000000000BFFF_5B800000_01
+0000000000000005_40A00000_00
+FFFFFFFFFEFFFFFF_5F800000_01
+FFFFBF7FFBFFFFFE_5F7FFFBF_01
+00000026386CE889_5218E1B4_01
+FFFFFFFFFDFFFFFF_5F800000_01
+F00000F7FFFFFFFF_5F700001_01
+0001FC53090C46A4_57FE2985_01
+FFFFFFFFFBFFFFFF_5F800000_01
+0000000000800047_4B000047_00
+000000001693872E_4DB49C39_01
+FFFFFFFFF7FFFFFF_5F800000_01
+000000007FBFFBFF_4EFF7FF8_01
+00000226A7845E35_5409A9E1_01
+FFFFFFFFEFFFFFFF_5F800000_01
+FFFFFFDFFFFFFBFD_5F800000_01
+000000005433D14C_4EA867A3_01
+FFFFFFFFDFFFFFFF_5F800000_01
+0001FFFFFFE0000E_58000000_01
+00F23E8068D3D84A_5B723E80_01
+FFFFFFFFBFFFFFFF_5F800000_01
+F7FFBFFFFFFFBFFF_5F77FFC0_01
+0000BD29B7459087_573D29B7_01
+FFFFFFFF7FFFFFFF_5F800000_01
+FFFFFFF8FFFFBFFF_5F800000_01
+00000000002DDC06_4A377018_00
+FFFFFFFEFFFFFFFF_5F800000_01
+FFFFFFF80001FFFF_5F800000_01
+0000000000012FF9_4797FC80_00
+FFFFFFFDFFFFFFFF_5F800000_01
+004000040000FFFF_5A800008_01
+0000000000000001_3F800000_00
+FFFFFFFBFFFFFFFF_5F800000_01
+C0000000007FFFFA_5F400000_01
+0000000006053E2B_4CC0A7C5_01
+FFFFFFF7FFFFFFFF_5F800000_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000002D_42340000_00
+FFFFFFEFFFFFFFFF_5F800000_01
+F80000000001007E_5F780000_01
+00000D48424AD9D6_55548425_01
+FFFFFFDFFFFFFFFF_5F800000_01
+FFFFFE0001FEFFFF_5F7FFFFE_01
+000000000000033B_444EC000_00
+FFFFFFBFFFFFFFFF_5F800000_01
+0007FBFFFFFDFFFE_58FF8000_01
+4A16BD4128090C83_5E942D7B_01
+FFFFFF7FFFFFFFFF_5F7FFFFF_01
+00FFF7FFFF7FFFFE_5B7FF800_01
+0000000000000086_43060000_00
+FFFFFEFFFFFFFFFF_5F7FFFFF_01
+FBFFFFBFFFBFFFFF_5F7C0000_01
+00000000000021BA_4606E800_00
+FFFFFDFFFFFFFFFF_5F7FFFFE_01
+0000000040000082_4E800001_01
+0007A2BF5B689F89_58F457EB_01
+FFFFFBFFFFFFFFFF_5F7FFFFC_01
+0000001FF8000008_51FFC000_01
+387CAA7DE672DE8B_5E61F2AA_01
+FFFFF7FFFFFFFFFF_5F7FFFF8_01
+07FFF80000000002_5CFFFF00_01
+0000000030A1E5B8_4E428797_01
+FFFFEFFFFFFFFFFF_5F7FFFF0_01
+F7FFFFE00007FFFF_5F780000_01
+000000000006ADFC_48D5BF80_00
+FFFFDFFFFFFFFFFF_5F7FFFE0_01
+FFFFFF03FFFFFFC0_5F7FFFFF_01
+0A579475948F0032_5D257947_01
+FFFFBFFFFFFFFFFF_5F7FFFC0_01
+FC00000000003FF6_5F7C0000_01
+00AE677AC313BF60_5B2E677B_01
+FFFF7FFFFFFFFFFF_5F7FFF80_01
+02000007FF7FFFFF_5C000002_01
+0000002E999639F1_523A6659_01
+FFFEFFFFFFFFFFFF_5F7FFF00_01
+FFFF83FFFFFFFFBE_5F7FFF84_01
+000000000003537D_4854DF40_00
+FFFDFFFFFFFFFFFF_5F7FFE00_01
+EFFFFFC00000003D_5F700000_01
+000000121FEDFD35_5190FF70_01
+FFFBFFFFFFFFFFFF_5F7FFC00_01
+FFFFFFF0000007FE_5F800000_01
+00000000001E0839_49F041C8_00
+FFF7FFFFFFFFFFFF_5F7FF800_01
+0000007FFFE000FF_52FFFFC0_01
+0000000079F30F48_4EF3E61F_01
+FFEFFFFFFFFFFFFF_5F7FF000_01
+FFFFFC13FFFFFFFD_5F7FFFFC_01
+0000000000003B85_466E1400_00
+FFDFFFFFFFFFFFFF_5F7FE000_01
+000008000007FFFE_55000000_01
+32DB4409E5AE87E6_5E4B6D10_01
+FFBFFFFFFFFFFFFF_5F7FC000_01
+FFFFFFFFFFF7BFEE_5F800000_01
+000000000000003D_42740000_00
+FF7FFFFFFFFFFFFF_5F7F8000_01
+000000001040FFFE_4D820800_01
+00004909A09C13D3_56921341_01
+FEFFFFFFFFFFFFFF_5F7F0000_01
+FFFFFF01FFFFFF7F_5F7FFFFF_01
+00000072E7D2575D_52E5CFA5_01
+FDFFFFFFFFFFFFFF_5F7E0000_01
+FFFFFFFFFFFEFFDB_5F800000_01
+0000000000000057_42AE0000_00
+FBFFFFFFFFFFFFFF_5F7C0000_01
+100000001FFFFFF6_5D800000_01
+000000914B12EF51_53114B13_01
+F7FFFFFFFFFFFFFF_5F780000_01
+0407FFFFFFFFFEFF_5C810000_01
+000000769F3A5C2C_52ED3E75_01
+EFFFFFFFFFFFFFFF_5F700000_01
+FFFFFFFDF7FFFFFD_5F800000_01
+0000000000000002_40000000_00
+DFFFFFFFFFFFFFFF_5F600000_01
+FFFFFFFFFE0007FF_5F800000_01
+000000000000009E_431E0000_00
+BFFFFFFFFFFFFFFF_5F400000_01
+FFF800000009FFFF_5F7FF800_01
+0000000000087AA4_4907AA40_00
+7FFFFFFFFFFFFFFF_5F000000_01
+4080000000FFFFFF_5E810000_01
+000000001DE7601D_4DEF3B01_01
+3FFFFFFFFFFFFFFF_5E800000_01
+FFCFFFFFFFBFFFFE_5F7FD000_01
+000000000000004A_42940000_00
+1FFFFFFFFFFFFFFF_5E000000_01
+000080400000003F_57004000_01
+00000000003F75A5_4A7DD694_00
+0FFFFFFFFFFFFFFF_5D800000_01
+FFFFFFEFFFFFCFFE_5F800000_01
+000000E775887420_53677588_01
+07FFFFFFFFFFFFFF_5D000000_01
+00000000000801FE_49001FE0_00
+0000000000A13FF1_4B213FF1_00
+03FFFFFFFFFFFFFF_5C800000_01
+07FEFFFFFFFFFFEE_5CFFE000_01
+000000000000000C_41400000_00
+01FFFFFFFFFFFFFF_5C000000_01
+0000000820000003_51020000_01
+00000001AD105214_4FD68829_01
+00FFFFFFFFFFFFFF_5B800000_01
+FFFFF00FFFFFFFBE_5F7FFFF0_01
+0000000000CC48E7_4B4C48E7_00
+007FFFFFFFFFFFFF_5B000000_01
+00000FFFEF7FFFFF_557FFEF8_01
+00000000000BA6CB_493A6CB0_00
+003FFFFFFFFFFFFF_5A800000_01
+FFFFFF7FBFFFFFBF_5F7FFFFF_01
+0000000000024425_48110940_00
+001FFFFFFFFFFFFF_5A000000_01
+200000001FFBFFFF_5E000000_01
+0000004E7115EC53_529CE22C_01
+000FFFFFFFFFFFFF_59800000_01
+FFFFF803FFFFFFBF_5F7FFFF8_01
+0000002E539ADCFE_52394E6B_01
+0007FFFFFFFFFFFF_59000000_01
+FFFFFFFFFBFFFFFF_5F800000_01
+000000D5084732F3_53550847_01
+0003FFFFFFFFFFFF_58800000_01
+BFFF7FFFFFFFFE00_5F3FFF80_01
+0000000000000543_44A86000_00
+0001FFFFFFFFFFFF_58000000_01
+0000001FFBFFE000_51FFDFFF_00
+000000000000491B_46923600_00
+0000FFFFFFFFFFFF_57800000_01
+FC00200000001FFE_5F7C0020_01
+0000016898822A24_53B44C41_01
+00007FFFFFFFFFFF_57000000_01
+3FFF03FFFFFFFFFE_5E7FFC10_01
+0000000FFE18C7BF_517FE18C_01
+00003FFFFFFFFFFF_56800000_01
+FFFFFEFFFEFFFFFD_5F7FFFFF_01
+02F03620C1266ED9_5C3C0D88_01
+00001FFFFFFFFFFF_56000000_01
+BF7EFFFFFFFFFFFF_5F3F7F00_01
+0000000000000055_42AA0000_00
+00000FFFFFFFFFFF_55800000_01
+FFFBFFFFF803FFFE_5F7FFC00_01
+0000000000168684_49B43420_00
+000007FFFFFFFFFF_55000000_01
+DFFFFFE00000001E_5F600000_01
+0000000000000CF5_454F5000_00
+000003FFFFFFFFFF_54800000_01
+FFFF00400000FFFF_5F7FFF00_01
+0000000000000022_42080000_00
+000001FFFFFFFFFF_54000000_01
+FBFFFFFFFFFFBDFE_5F7C0000_01
+0000000000001BC9_45DE4800_00
+000000FFFFFFFFFF_53800000_01
+807FFFFFFFFFDFFE_5F008000_01
+000274E35A70CD76_581D38D7_01
+0000007FFFFFFFFF_53000000_01
+0FFFFFFFFEFFFFFD_5D800000_01
+0000000300E73AFC_504039CF_01
+0000003FFFFFFFFF_52800000_01
+FFC000000001000E_5F7FC000_01
+00000000000615E9_48C2BD20_00
+0000001FFFFFFFFF_52000000_01
+0001FFFFFFFFF3FD_58000000_01
+00000000000000B3_43330000_00
+0000000FFFFFFFFF_51800000_01
+000000001FFFBFFF_4DFFFE00_01
+0000006E6B141E1B_52DCD628_01
+00000007FFFFFFFF_51000000_01
+FFFFFFFFF60007FF_5F800000_01
+00000003AB310BA6_506ACC43_01
+00000003FFFFFFFF_50800000_01
+0003FFFFB7FFFFFF_587FFFEE_01
+0000000000000195_43CA8000_00
+00000001FFFFFFFF_50000000_01
+FFFFFFFF8000000B_5F800000_01
+00000059BA8D5559_52B3751B_01
+00000000FFFFFFFF_4F800000_01
+FBFEFFFFFFFFFFF9_5F7BFF00_01
+000001B6F062822D_53DB7831_01
+000000007FFFFFFF_4F000000_01
+0001000000000082_57800000_01
+03CEAD9E2FB104A4_5C73AB68_01
+000000003FFFFFFF_4E800000_01
+000003FFFFFFFF7C_54800000_01
+000000000D681E78_4D5681E8_01
+000000001FFFFFFF_4E000000_01
+00002000400001FF_56000100_01
+0000000000000058_42B00000_00
+000000000FFFFFFF_4D800000_01
+3FFF80000000003E_5E7FFE00_01
+0000000000000095_43150000_00
+0000000007FFFFFF_4D000000_01
+010000BFFFFFFFFF_5B800060_01
+0000009697087B19_53169708_01
+0000000003FFFFFF_4C800000_01
+FBFFFFFFFFEEFFFD_5F7C0000_01
+0000001E64BDFC55_51F325F0_01
+0000000001FFFFFF_4C000000_01
+FC00000001FFFFFE_5F7C0000_01
+0000D156A62AB849_575156A6_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_5F800000_01
+00035354EAE7C259_5854D53B_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_5F800000_01
+00000000F4DF3C75_4F74DF3C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_5F7FFA00_01
+0000000000000003_40400000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_5F800000_01
+0000005B5433CB9B_52B6A868_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_5F7FFFFE_01
+0000000000DEAE1F_4B5EAE1F_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_5F800000_01
+000000007735DEC7_4EEE6BBE_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFE0000_01
+000007757D8B12ED_54EEAFB1_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_5F7FFFFE_01
+00002A654064E046_56299502_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+0000000000000007_40E00000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5D000000_01
+00002D78B3D6C3B6_5635E2CF_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+000000070B77F34F_50E16EFE_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_5F800000_01
+0000093EB4D67EC8_5513EB4D_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_5F3FFFE0_01
+0205CEAF34EA1DC7_5C0173AC_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900001_01
+0000000000000003_40400000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000760D0_48EC1A00_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B802000_01
+02C000708FF1BA51_5C30001C_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_5F780200_01
+4F9E07DCC0BDC061_5E9F3C10_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+00000001B9B2A079_4FDCD950_01
+000000000000003F_427C0000_00
+FFF80000000080FF_5F7FF800_01
+00000000005EB5B4_4ABD6B68_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+0000000000DAC607_4B5AC607_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_5F800000_01
+00000DC5B9D66984_555C5B9D_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_5F400200_01
+00003D06B372AA06_56741ACE_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f32_ru.tv b/wally-pipelined/testbench/fp/ui64_f32_ru.tv
new file mode 100644
index 000000000..acf27f8c5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f32_ru.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_5CFFFFC0_01
+0000000072CC8B7A_4EE59917_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_5F800000_01
+072C857F319EDE38_5CE590B0_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_5F7FFFFC_01
+00794C79B6D3007B_5AF298F4_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_5F7C0000_01
+0000000005AE458D_4CB5C8B2_01
+0000000000000004_40800000_00
+00040008000007FE_58800101_01
+09EB456140D88764_5D1EB457_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_5F7FFFE5_01
+27DE834A248EDF36_5E1F7A0E_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC008_01
+00000000000385E2_48617880_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_5F700420_01
+000000159EB1FD45_51ACF590_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_5F800000_01
+000000000002DDFE_48377F80_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000002C89FF56B_503227FE_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF8_01
+3B5E4F0BE0DEBFF0_5E6D793D_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_5F7FFDF9_01
+000000000004766B_488ECD60_00
+0000000000000400_44800000_00
+0000080100000FFE_55001001_01
+000000000000002C_42300000_00
+0000000000000800_45000000_00
+0048000000100000_5A900001_01
+07E662A109109D0A_5CFCCC55_01
+0000000000001000_45800000_00
+C000000037FFFFFE_5F400001_01
+0000000000000064_42C80000_00
+0000000000002000_46000000_00
+F801000000100000_5F780101_01
+02114B79075F70EE_5C0452DF_01
+0000000000004000_46800000_00
+100000000001003E_5D800001_01
+0000000000000BAC_453AC000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000004_01
+000000C4A3A3DBE5_5344A3A4_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_5F7FE001_01
+0000000000001A91_45D48800_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_5F7FFFF8_01
+0000000000007309_46E61200_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF8_01
+0000000000000F58_45758000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_5F800000_01
+0000000000006980_46D30000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF080_01
+00000000000000DD_435D0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF80_01
+00008C23DA2CEAD8_570C23DB_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_5F600001_01
+00000DE3C1DEC43C_555E3C1E_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_5F7FFF01_01
+000000008030FFBE_4F003100_01
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_5F7FFE01_01
+000000000FDEED86_4D7DEED9_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_5F740000_01
+000000005DA3FF45_4EBB47FF_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_5F800000_01
+000000009B1BCB54_4F1B1BCC_01
+0000000008000000_4D000000_00
+00004000004001FE_56800001_01
+027DD19DE6563714_5C1F7468_01
+0000000010000000_4D800000_00
+FFC00000004007FE_5F7FC001_01
+000000000003A359_4868D640_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C700040_01
+000000003E62EC20_4E798BB1_01
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E800000_01
+000000000000685F_46D0BE00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_5F800000_01
+00000836F99DBAA8_55036F9A_01
+0000000100000000_4F800000_00
+00000020003FFEFE_52000100_01
+0073466832042D47_5AE68CD1_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_5F800000_01
+00000000007829C8_4AF05390_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_55800000_01
+0000001FB77C672B_51FDBBE4_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D000400_01
+0000000000005B78_46B6F000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_5F7F8000_01
+00000000000000F1_43710000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_55A00000_01
+0000000000000006_40C00000_00
+0000004000000000_52800000_00
+0800000000040800_5D000001_01
+0008A60D9E19F17E_590A60DA_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+0000000007506DBA_4CEA0DB8_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_5F800000_01
+0000000006A42AC9_4CD4855A_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_55840000_01
+0007AA3F2BDACC89_58F547E6_01
+0000040000000000_54800000_00
+FFF8040000040000_5F7FF805_01
+0000000000000005_40A00000_00
+0000080000000000_55000000_00
+FFFF80000800001F_5F7FFF81_01
+000DF681DECDADC9_595F681E_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_5F7FFFFF_01
+0000000000004FBE_469F7C00_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51102000_01
+00C01FECA24DE1B0_5B401FED_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_5F780000_01
+0058A66761669936_5AB14CCF_01
+0000800000000000_57000000_00
+FFFEFF800000003E_5F7FFF00_01
+0716EA43FAC45C97_5CE2DD49_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_5F800000_01
+0064D70EC7661FD8_5AC9AE1E_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_5F408000_01
+00D956DBD0AEE817_5B5956DC_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FC_01
+0000000000004300_46860000_00
+0008000000000000_59000000_00
+4000000004002000_5E800001_01
+012EDF40F41F6021_5B976FA1_01
+0010000000000000_59800000_00
+FF9000000000001D_5F7F9001_01
+000000383DE950F6_5260F7A6_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_5F000004_01
+002B59CB3A604D69_5A2D672D_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5F000000_01
+000001A37C210862_53D1BE11_01
+0080000000000000_5B000000_00
+0002000002000002_58000001_01
+0000365CD8617789_56597362_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55E00000_01
+000000000000101D_4580E800_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800005_01
+000000001D098D19_4DE84C69_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C800000_01
+000016B3BD2C7BEF_55B59DEA_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFF00_01
+00004E5ADDDAA4A8_569CB5BC_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE01_01
+0000000000000721_44E42000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83C000_01
+0000000000648262_4AC904C4_00
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_5F400020_01
+0000007353AC45D2_52E6A759_01
+8000000000000000_5F000000_00
+FFFFFFFFFFE7EFFF_5F800000_01
+0000000001A1202D_4BD09017_01
+C000000000000000_5F400000_00
+FFFFFFFFFFFF5F7F_5F800000_01
+0000000000C0CA70_4B40CA70_00
+E000000000000000_5F600000_00
+0000200201FFFFFE_56000808_01
+00000007B55D87D4_50F6ABB1_01
+F000000000000000_5F700000_00
+FF80000DFFFFFFFF_5F7F8001_01
+000000090510FAEF_51105110_01
+F800000000000000_5F780000_00
+0003FFF00000000F_587FFC01_01
+000000000001724A_47B92500_00
+FC00000000000000_5F7C0000_00
+FFFFFFDF80000002_5F800000_01
+00000000000000E4_43640000_00
+FE00000000000000_5F7E0000_00
+FEFFFFFFFFF800FE_5F7F0000_01
+00000002C6222702_5031888A_01
+FF00000000000000_5F7F0000_00
+0000000408000002_50810001_01
+000002E96DF1CB41_543A5B7D_01
+FF80000000000000_5F7F8000_00
+007FFFFFFFFFF9FE_5B000000_01
+0727F174DEE7DC85_5CE4FE2F_01
+FFC0000000000000_5F7FC000_00
+8000000003FFFEFE_5F000001_01
+000000000010BD5B_4985EAD8_00
+FFE0000000000000_5F7FE000_00
+0BEFFFFFFFFFFFFF_5D3F0000_01
+000000000022790C_4A09E430_00
+FFF0000000000000_5F7FF000_00
+FFFFFFFFFFEFFBFA_5F800000_01
+000000369E75DF01_525A79D8_01
+FFF8000000000000_5F7FF800_00
+00000007FEFFDFFF_50FFDFFC_01
+000000000000001E_41F00000_00
+FFFC000000000000_5F7FFC00_00
+0003FFFE0007FFFE_587FFF81_01
+0000000000328622_4A4A1888_00
+FFFE000000000000_5F7FFE00_00
+FFFFFF7FFFFDF7FF_5F800000_01
+00172F0EC496FE21_59B97877_01
+FFFF000000000000_5F7FFF00_00
+DFBFFFFFFFFFFFFE_5F5FC000_01
+0000000004FC1FCA_4C9F83FA_01
+FFFF800000000000_5F7FFF80_00
+00000FFF800FFFFE_557FF801_01
+000F5194E4A9C2CE_5975194F_01
+FFFFC00000000000_5F7FFFC0_00
+00000002100007FD_50040002_01
+000000000002D8FE_48363F80_00
+FFFFE00000000000_5F7FFFE0_00
+000000000007FF6E_48FFEDC0_00
+000000000003766E_485D9B80_00
+FFFFF00000000000_5F7FFFF0_00
+0040000400000002_5A800009_01
+000000000000F841_47784100_00
+FFFFF80000000000_5F7FFFF8_00
+3DFFFFFFFFFFFF7E_5E780000_01
+0000000549E17E30_50A93C30_01
+FFFFFC0000000000_5F7FFFFC_00
+FFFFFFFFFFFFFEE1_5F800000_01
+0000000000000027_421C0000_00
+FFFFFE0000000000_5F7FFFFE_00
+000000000EFFFFDF_4D6FFFFE_01
+0000000000000373_445CC000_00
+FFFFFF0000000000_5F7FFFFF_00
+FD00000008000000_5F7D0001_01
+000000000005DBB1_48BB7620_00
+FFFFFF8000000000_5F800000_01
+FFFFFFFFFFF8007F_5F800000_01
+00000002FD10A515_503F442A_01
+FFFFFFC000000000_5F800000_01
+FFEFFFFFFFFFFFFE_5F7FF000_01
+0AB02984F6283B6C_5D2B0299_01
+FFFFFFE000000000_5F800000_01
+FFFFFFBC000001FE_5F800000_01
+00B087C6B9FE7FE0_5B3087C7_01
+FFFFFFF000000000_5F800000_01
+FFF80001000007FE_5F7FF801_01
+01F2762EA6837956_5BF93B18_01
+FFFFFFF800000000_5F800000_01
+FFF7E0FFFFFFFFFE_5F7FF7E1_01
+00022E1175484626_580B845E_01
+FFFFFFFC00000000_5F800000_01
+0000200020000FFE_56000081_01
+000000000000168F_45B47800_00
+FFFFFFFE00000000_5F800000_01
+021FFFFFFFFBFFFF_5C080000_01
+0000000000000001_3F800000_00
+FFFFFFFF00000000_5F800000_01
+FFFFFFD0000FFFFD_5F800000_01
+000001BDF6658B83_53DEFB33_01
+FFFFFFFF80000000_5F800000_01
+1000001FFDFFFFFF_5D800001_01
+000000000000BB5B_473B5B00_00
+FFFFFFFFC0000000_5F800000_01
+FFFFFFBFFE0FFFFF_5F800000_01
+0000000000000000_00000000_00
+FFFFFFFFE0000000_5F800000_01
+FFFFFFFBF00007FF_5F800000_01
+01E986274F48EAAD_5BF4C314_01
+FFFFFFFFF0000000_5F800000_01
+1FFFFFFDFFFFFF7F_5E000000_01
+000000000000CB5A_474B5A00_00
+FFFFFFFFF8000000_5F800000_01
+7FF000000000FFFF_5EFFE001_01
+0000000BC2717FC3_513C2718_01
+FFFFFFFFFC000000_5F800000_01
+FFFFFFE00008001F_5F800000_01
+00000000000FABDA_497ABDA0_00
+FFFFFFFFFE000000_5F800000_01
+0200000000000002_5C000001_01
+0000000000FDA53F_4B7DA53F_00
+FFFFFFFFFF000000_5F800000_01
+F6000003FFFFFFFE_5F760001_01
+0000000000000010_41800000_00
+FFFFFFFFFF800000_5F800000_01
+FFFFFFFFFFBFFF7E_5F800000_01
+00000001EE0FEA62_4FF707F6_01
+FFFFFFFFFFC00000_5F800000_01
+0000007FFF9FFFFD_52FFFF40_01
+00000077F35EDC1D_52EFE6BE_01
+FFFFFFFFFFE00000_5F800000_01
+FFFFFFF7FDFFFF7D_5F800000_01
+00000000000003AD_446B4000_00
+FFFFFFFFFFF00000_5F800000_01
+FFFFFF0000100020_5F800000_01
+67F167FBC7FC5F9A_5ECFE2D0_01
+FFFFFFFFFFF80000_5F800000_01
+003FFFFFFFFC0001_5A800000_01
+002E48F9F4EBD30E_5A3923E8_01
+FFFFFFFFFFFC0000_5F800000_01
+DFFFFFFFFFFBFFFE_5F600000_01
+0091C23EE8C9424F_5B11C23F_01
+FFFFFFFFFFFE0000_5F800000_01
+F7DFFBFFFFFFFFFE_5F77DFFC_01
+00000000ACAE080C_4F2CAE09_01
+FFFFFFFFFFFF0000_5F800000_01
+FFFFC00010000020_5F7FFFC1_01
+0CD921F917B20E40_5D4D9220_01
+FFFFFFFFFFFF8000_5F800000_01
+F8000FFFFFFFFFFD_5F780010_01
+00017C566BC7D811_57BE2B36_01
+FFFFFFFFFFFFC000_5F800000_01
+00000000000000FE_437E0000_00
+00F82AC14930D386_5B782AC2_01
+FFFFFFFFFFFFE000_5F800000_01
+00000000000003FC_447F0000_00
+008E62EC60E119FC_5B0E62ED_01
+FFFFFFFFFFFFF000_5F800000_01
+FFFFEFF7FF7FFFFE_5F7FFFF0_01
+1E2B1ECF210EEDC5_5DF158F7_01
+FFFFFFFFFFFFF800_5F800000_01
+00000000007FFF1F_4AFFFE3E_00
+000006534F5676F7_54CA69EB_01
+FFFFFFFFFFFFFC00_5F800000_01
+0000001004FFFFFD_51802800_01
+0000435C939669F1_5686B928_01
+FFFFFFFFFFFFFE00_5F800000_01
+1FFFFFFFFFFFFDFD_5E000000_01
+0000000000000011_41880000_00
+FFFFFFFFFFFFFF00_5F800000_01
+01FFFFFFFBFFEFFE_5C000000_01
+000000000000036E_445B8000_00
+FFFFFFFFFFFFFF80_5F800000_01
+FFF7FFFFFFFFF7FD_5F7FF800_01
+000038E2BCFAC553_56638AF4_01
+FFFFFFFFFFFFFFC0_5F800000_01
+FFFFFBFFFFFE0FFE_5F7FFFFC_01
+00000009A4E704BF_511A4E71_01
+FFFFFFFFFFFFFFE0_5F800000_01
+1400007FFFFFFFFD_5DA00004_01
+0000000093B187B4_4F13B188_01
+FFFFFFFFFFFFFFF0_5F800000_01
+40000000007FFFFD_5E800001_01
+0000000000E7D468_4B67D468_00
+FFFFFFFFFFFFFFF8_5F800000_01
+007FFEFFFFFBFFFE_5AFFFE00_01
+000000026CEC79F8_501B3B1F_01
+FFFFFFFFFFFFFFFC_5F800000_01
+00FFFFFF000000FF_5B800000_01
+0000000000D3983A_4B53983A_00
+FFFFFFFFFFFFFFFE_5F800000_01
+00007FFFBFFF7FFE_56FFFF80_01
+00000001F4A7088A_4FFA5385_01
+FFFFFFFFFFFFFFFF_5F800000_01
+000008000000027E_55000001_01
+000000000001F4E8_47FA7400_00
+FFFFFFFFFFFFFFFD_5F800000_01
+FFFFFFFFFF83FFDF_5F800000_01
+00001E11407887B2_55F08A04_01
+FFFFFFFFFFFFFFFB_5F800000_01
+04000003FFFFFFF6_5C800001_01
+0000000000000D13_45513000_00
+FFFFFFFFFFFFFFF7_5F800000_01
+BFFC00000000003E_5F3FFC01_01
+00000028D7BBB75B_52235EEF_01
+FFFFFFFFFFFFFFEF_5F800000_01
+000FFFFBFFFC0000_597FFFC0_01
+0000000000CD5A23_4B4D5A23_00
+FFFFFFFFFFFFFFDF_5F800000_01
+FFBFDFFFBFFFFFFF_5F7FBFE0_01
+00000000000000FF_437F0000_00
+FFFFFFFFFFFFFFBF_5F800000_01
+00000007FF800003_50FFF001_01
+00000000000ABB02_492BB020_00
+FFFFFFFFFFFFFF7F_5F800000_01
+FFFFFFFFFFFEE7FF_5F800000_01
+00664B2B9BAD0DA2_5ACC9658_01
+FFFFFFFFFFFFFEFF_5F800000_01
+0000000000100803_49804018_00
+009B1DCB9F857D5E_5B1B1DCC_01
+FFFFFFFFFFFFFDFF_5F800000_01
+FFFFFFBFFFFFEFEE_5F800000_01
+36FD7542899C1C6F_5E5BF5D6_01
+FFFFFFFFFFFFFBFF_5F800000_01
+FF800000004001FF_5F7F8001_01
+0000000006BE4932_4CD7C927_01
+FFFFFFFFFFFFF7FF_5F800000_01
+00001004000FFFFE_55802001_01
+0000001DAA0123E0_51ED500A_01
+FFFFFFFFFFFFEFFF_5F800000_01
+00000001FDFFFDFE_4FFEFFFF_01
+00001C8703B1DCB0_55E4381E_01
+FFFFFFFFFFFFDFFF_5F800000_01
+FE0FE00000000000_5F7E0FE0_00
+0F79ED944A4E2779_5D779EDA_01
+FFFFFFFFFFFFBFFF_5F800000_01
+FBFFFE0400000000_5F7BFFFF_01
+0000030127E03666_544049F9_01
+FFFFFFFFFFFF7FFF_5F800000_01
+FFFFF0200000FFFE_5F7FFFF1_01
+000000000000017F_43BF8000_00
+FFFFFFFFFFFEFFFF_5F800000_01
+FFEFFE0000080000_5F7FEFFF_01
+00000000013354EA_4B99AA75_00
+FFFFFFFFFFFDFFFF_5F800000_01
+003FF0000003FFFE_5A7FC001_01
+0000016375B23F7B_53B1BADA_01
+FFFFFFFFFFFBFFFF_5F800000_01
+000407FFFFFFFFF6_58810000_01
+0000000192117F38_4FC908C0_01
+FFFFFFFFFFF7FFFF_5F800000_01
+FFFFFFFFFFFF7FFF_5F800000_01
+00000000000018BE_45C5F000_00
+FFFFFFFFFFEFFFFF_5F800000_01
+004000020FFFFFFF_5A800005_01
+0000B84C2D8BC9CB_57384C2E_01
+FFFFFFFFFFDFFFFF_5F800000_01
+00FFFFFFFFFFFFFD_5B800000_01
+00000223C2C6F284_5408F0B2_01
+FFFFFFFFFFBFFFFF_5F800000_01
+FFFDDFFFFFFFFFFD_5F7FFDE0_01
+00000000F46356C4_4F746357_01
+FFFFFFFFFF7FFFFF_5F800000_01
+010000000000BFFF_5B800001_01
+0000000000000005_40A00000_00
+FFFFFFFFFEFFFFFF_5F800000_01
+FFFFBF7FFBFFFFFE_5F7FFFC0_01
+00000026386CE889_5218E1B4_01
+FFFFFFFFFDFFFFFF_5F800000_01
+F00000F7FFFFFFFF_5F700001_01
+0001FC53090C46A4_57FE2985_01
+FFFFFFFFFBFFFFFF_5F800000_01
+0000000000800047_4B000047_00
+000000001693872E_4DB49C3A_01
+FFFFFFFFF7FFFFFF_5F800000_01
+000000007FBFFBFF_4EFF7FF8_01
+00000226A7845E35_5409A9E2_01
+FFFFFFFFEFFFFFFF_5F800000_01
+FFFFFFDFFFFFFBFD_5F800000_01
+000000005433D14C_4EA867A3_01
+FFFFFFFFDFFFFFFF_5F800000_01
+0001FFFFFFE0000E_58000000_01
+00F23E8068D3D84A_5B723E81_01
+FFFFFFFFBFFFFFFF_5F800000_01
+F7FFBFFFFFFFBFFF_5F77FFC0_01
+0000BD29B7459087_573D29B8_01
+FFFFFFFF7FFFFFFF_5F800000_01
+FFFFFFF8FFFFBFFF_5F800000_01
+00000000002DDC06_4A377018_00
+FFFFFFFEFFFFFFFF_5F800000_01
+FFFFFFF80001FFFF_5F800000_01
+0000000000012FF9_4797FC80_00
+FFFFFFFDFFFFFFFF_5F800000_01
+004000040000FFFF_5A800009_01
+0000000000000001_3F800000_00
+FFFFFFFBFFFFFFFF_5F800000_01
+C0000000007FFFFA_5F400001_01
+0000000006053E2B_4CC0A7C6_01
+FFFFFFF7FFFFFFFF_5F800000_01
+7FFE000007FFFFFF_5EFFFC01_01
+000000000000002D_42340000_00
+FFFFFFEFFFFFFFFF_5F800000_01
+F80000000001007E_5F780001_01
+00000D48424AD9D6_55548425_01
+FFFFFFDFFFFFFFFF_5F800000_01
+FFFFFE0001FEFFFF_5F7FFFFF_01
+000000000000033B_444EC000_00
+FFFFFFBFFFFFFFFF_5F800000_01
+0007FBFFFFFDFFFE_58FF8000_01
+4A16BD4128090C83_5E942D7B_01
+FFFFFF7FFFFFFFFF_5F800000_01
+00FFF7FFFF7FFFFE_5B7FF800_01
+0000000000000086_43060000_00
+FFFFFEFFFFFFFFFF_5F7FFFFF_01
+FBFFFFBFFFBFFFFF_5F7C0000_01
+00000000000021BA_4606E800_00
+FFFFFDFFFFFFFFFF_5F7FFFFE_01
+0000000040000082_4E800002_01
+0007A2BF5B689F89_58F457EC_01
+FFFFFBFFFFFFFFFF_5F7FFFFC_01
+0000001FF8000008_51FFC001_01
+387CAA7DE672DE8B_5E61F2AA_01
+FFFFF7FFFFFFFFFF_5F7FFFF8_01
+07FFF80000000002_5CFFFF01_01
+0000000030A1E5B8_4E428797_01
+FFFFEFFFFFFFFFFF_5F7FFFF0_01
+F7FFFFE00007FFFF_5F780000_01
+000000000006ADFC_48D5BF80_00
+FFFFDFFFFFFFFFFF_5F7FFFE0_01
+FFFFFF03FFFFFFC0_5F800000_01
+0A579475948F0032_5D257948_01
+FFFFBFFFFFFFFFFF_5F7FFFC0_01
+FC00000000003FF6_5F7C0001_01
+00AE677AC313BF60_5B2E677B_01
+FFFF7FFFFFFFFFFF_5F7FFF80_01
+02000007FF7FFFFF_5C000002_01
+0000002E999639F1_523A6659_01
+FFFEFFFFFFFFFFFF_5F7FFF00_01
+FFFF83FFFFFFFFBE_5F7FFF84_01
+000000000003537D_4854DF40_00
+FFFDFFFFFFFFFFFF_5F7FFE00_01
+EFFFFFC00000003D_5F700000_01
+000000121FEDFD35_5190FF70_01
+FFFBFFFFFFFFFFFF_5F7FFC00_01
+FFFFFFF0000007FE_5F800000_01
+00000000001E0839_49F041C8_00
+FFF7FFFFFFFFFFFF_5F7FF800_01
+0000007FFFE000FF_52FFFFC1_01
+0000000079F30F48_4EF3E61F_01
+FFEFFFFFFFFFFFFF_5F7FF000_01
+FFFFFC13FFFFFFFD_5F7FFFFD_01
+0000000000003B85_466E1400_00
+FFDFFFFFFFFFFFFF_5F7FE000_01
+000008000007FFFE_55000001_01
+32DB4409E5AE87E6_5E4B6D11_01
+FFBFFFFFFFFFFFFF_5F7FC000_01
+FFFFFFFFFFF7BFEE_5F800000_01
+000000000000003D_42740000_00
+FF7FFFFFFFFFFFFF_5F7F8000_01
+000000001040FFFE_4D820800_01
+00004909A09C13D3_56921342_01
+FEFFFFFFFFFFFFFF_5F7F0000_01
+FFFFFF01FFFFFF7F_5F800000_01
+00000072E7D2575D_52E5CFA5_01
+FDFFFFFFFFFFFFFF_5F7E0000_01
+FFFFFFFFFFFEFFDB_5F800000_01
+0000000000000057_42AE0000_00
+FBFFFFFFFFFFFFFF_5F7C0000_01
+100000001FFFFFF6_5D800001_01
+000000914B12EF51_53114B13_01
+F7FFFFFFFFFFFFFF_5F780000_01
+0407FFFFFFFFFEFF_5C810000_01
+000000769F3A5C2C_52ED3E75_01
+EFFFFFFFFFFFFFFF_5F700000_01
+FFFFFFFDF7FFFFFD_5F800000_01
+0000000000000002_40000000_00
+DFFFFFFFFFFFFFFF_5F600000_01
+FFFFFFFFFE0007FF_5F800000_01
+000000000000009E_431E0000_00
+BFFFFFFFFFFFFFFF_5F400000_01
+FFF800000009FFFF_5F7FF801_01
+0000000000087AA4_4907AA40_00
+7FFFFFFFFFFFFFFF_5F000000_01
+4080000000FFFFFF_5E810001_01
+000000001DE7601D_4DEF3B01_01
+3FFFFFFFFFFFFFFF_5E800000_01
+FFCFFFFFFFBFFFFE_5F7FD000_01
+000000000000004A_42940000_00
+1FFFFFFFFFFFFFFF_5E000000_01
+000080400000003F_57004001_01
+00000000003F75A5_4A7DD694_00
+0FFFFFFFFFFFFFFF_5D800000_01
+FFFFFFEFFFFFCFFE_5F800000_01
+000000E775887420_53677589_01
+07FFFFFFFFFFFFFF_5D000000_01
+00000000000801FE_49001FE0_00
+0000000000A13FF1_4B213FF1_00
+03FFFFFFFFFFFFFF_5C800000_01
+07FEFFFFFFFFFFEE_5CFFE000_01
+000000000000000C_41400000_00
+01FFFFFFFFFFFFFF_5C000000_01
+0000000820000003_51020001_01
+00000001AD105214_4FD6882A_01
+00FFFFFFFFFFFFFF_5B800000_01
+FFFFF00FFFFFFFBE_5F7FFFF1_01
+0000000000CC48E7_4B4C48E7_00
+007FFFFFFFFFFFFF_5B000000_01
+00000FFFEF7FFFFF_557FFEF8_01
+00000000000BA6CB_493A6CB0_00
+003FFFFFFFFFFFFF_5A800000_01
+FFFFFF7FBFFFFFBF_5F800000_01
+0000000000024425_48110940_00
+001FFFFFFFFFFFFF_5A000000_01
+200000001FFBFFFF_5E000001_01
+0000004E7115EC53_529CE22C_01
+000FFFFFFFFFFFFF_59800000_01
+FFFFF803FFFFFFBF_5F7FFFF9_01
+0000002E539ADCFE_52394E6C_01
+0007FFFFFFFFFFFF_59000000_01
+FFFFFFFFFBFFFFFF_5F800000_01
+000000D5084732F3_53550848_01
+0003FFFFFFFFFFFF_58800000_01
+BFFF7FFFFFFFFE00_5F3FFF80_01
+0000000000000543_44A86000_00
+0001FFFFFFFFFFFF_58000000_01
+0000001FFBFFE000_51FFDFFF_00
+000000000000491B_46923600_00
+0000FFFFFFFFFFFF_57800000_01
+FC00200000001FFE_5F7C0021_01
+0000016898822A24_53B44C42_01
+00007FFFFFFFFFFF_57000000_01
+3FFF03FFFFFFFFFE_5E7FFC10_01
+0000000FFE18C7BF_517FE18D_01
+00003FFFFFFFFFFF_56800000_01
+FFFFFEFFFEFFFFFD_5F7FFFFF_01
+02F03620C1266ED9_5C3C0D89_01
+00001FFFFFFFFFFF_56000000_01
+BF7EFFFFFFFFFFFF_5F3F7F00_01
+0000000000000055_42AA0000_00
+00000FFFFFFFFFFF_55800000_01
+FFFBFFFFF803FFFE_5F7FFC00_01
+0000000000168684_49B43420_00
+000007FFFFFFFFFF_55000000_01
+DFFFFFE00000001E_5F600000_01
+0000000000000CF5_454F5000_00
+000003FFFFFFFFFF_54800000_01
+FFFF00400000FFFF_5F7FFF01_01
+0000000000000022_42080000_00
+000001FFFFFFFFFF_54000000_01
+FBFFFFFFFFFFBDFE_5F7C0000_01
+0000000000001BC9_45DE4800_00
+000000FFFFFFFFFF_53800000_01
+807FFFFFFFFFDFFE_5F008000_01
+000274E35A70CD76_581D38D7_01
+0000007FFFFFFFFF_53000000_01
+0FFFFFFFFEFFFFFD_5D800000_01
+0000000300E73AFC_504039CF_01
+0000003FFFFFFFFF_52800000_01
+FFC000000001000E_5F7FC001_01
+00000000000615E9_48C2BD20_00
+0000001FFFFFFFFF_52000000_01
+0001FFFFFFFFF3FD_58000000_01
+00000000000000B3_43330000_00
+0000000FFFFFFFFF_51800000_01
+000000001FFFBFFF_4DFFFE00_01
+0000006E6B141E1B_52DCD629_01
+00000007FFFFFFFF_51000000_01
+FFFFFFFFF60007FF_5F800000_01
+00000003AB310BA6_506ACC43_01
+00000003FFFFFFFF_50800000_01
+0003FFFFB7FFFFFF_587FFFEE_01
+0000000000000195_43CA8000_00
+00000001FFFFFFFF_50000000_01
+FFFFFFFF8000000B_5F800000_01
+00000059BA8D5559_52B3751B_01
+00000000FFFFFFFF_4F800000_01
+FBFEFFFFFFFFFFF9_5F7BFF00_01
+000001B6F062822D_53DB7832_01
+000000007FFFFFFF_4F000000_01
+0001000000000082_57800001_01
+03CEAD9E2FB104A4_5C73AB68_01
+000000003FFFFFFF_4E800000_01
+000003FFFFFFFF7C_54800000_01
+000000000D681E78_4D5681E8_01
+000000001FFFFFFF_4E000000_01
+00002000400001FF_56000101_01
+0000000000000058_42B00000_00
+000000000FFFFFFF_4D800000_01
+3FFF80000000003E_5E7FFE01_01
+0000000000000095_43150000_00
+0000000007FFFFFF_4D000000_01
+010000BFFFFFFFFF_5B800060_01
+0000009697087B19_53169709_01
+0000000003FFFFFF_4C800000_01
+FBFFFFFFFFEEFFFD_5F7C0000_01
+0000001E64BDFC55_51F325F0_01
+0000000001FFFFFF_4C000000_01
+FC00000001FFFFFE_5F7C0001_01
+0000D156A62AB849_575156A7_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_5F800000_01
+00035354EAE7C259_5854D53B_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_5F800000_01
+00000000F4DF3C75_4F74DF3D_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_5F7FFA01_01
+0000000000000003_40400000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_5F800000_01
+0000005B5433CB9B_52B6A868_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_5F7FFFFE_01
+0000000000DEAE1F_4B5EAE1F_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_5F800000_01
+000000007735DEC7_4EEE6BBE_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFE0000_01
+000007757D8B12ED_54EEAFB2_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_5F7FFFFF_01
+00002A654064E046_56299502_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000001_01
+0000000000000007_40E00000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5D000000_01
+00002D78B3D6C3B6_5635E2D0_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+000000070B77F34F_50E16EFF_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_5F800000_01
+0000093EB4D67EC8_5513EB4E_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_5F3FFFE0_01
+0205CEAF34EA1DC7_5C0173AC_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900001_01
+0000000000000003_40400000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000760D0_48EC1A00_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B802000_01
+02C000708FF1BA51_5C30001D_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_5F780201_01
+4F9E07DCC0BDC061_5E9F3C10_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC001_01
+00000001B9B2A079_4FDCD951_01
+000000000000003F_427C0000_00
+FFF80000000080FF_5F7FF801_01
+00000000005EB5B4_4ABD6B68_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+0000000000DAC607_4B5AC607_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_5F800000_01
+00000DC5B9D66984_555C5B9E_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_5F400200_01
+00003D06B372AA06_56741ACE_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f32_rz.tv b/wally-pipelined/testbench/fp/ui64_f32_rz.tv
new file mode 100644
index 000000000..bf85027ae
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f32_rz.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_5CFFFFBF_01
+0000000072CC8B7A_4EE59916_01
+0000000000000000_00000000_00
+FFFFFFFFC0003FFE_5F7FFFFF_01
+072C857F319EDE38_5CE590AF_01
+0000000000000001_3F800000_00
+FFFFFBFFFFF8003E_5F7FFFFB_01
+00794C79B6D3007B_5AF298F3_01
+0000000000000002_40000000_00
+FBFFFFF0000001FF_5F7BFFFF_01
+0000000005AE458D_4CB5C8B1_01
+0000000000000004_40800000_00
+00040008000007FE_58800100_01
+09EB456140D88764_5D1EB456_01
+0000000000000008_41000000_00
+FFFFE400FFFFFFFE_5F7FFFE4_01
+27DE834A248EDF36_5E1F7A0D_01
+0000000000000010_41800000_00
+00000003FF001FFF_507FC007_01
+00000000000385E2_48617880_00
+0000000000000020_42000000_00
+F0041FFFFFFFFFFF_5F70041F_01
+000000159EB1FD45_51ACF58F_01
+0000000000000040_42800000_00
+FFFFFFFFFFFCFFF9_5F7FFFFF_01
+000000000002DDFE_48377F80_00
+0000000000000080_43000000_00
+000000000003FF00_487FC000_00
+00000002C89FF56B_503227FD_01
+0000000000000100_43800000_00
+000FFFFF7FDFFFFF_597FFFF7_01
+3B5E4F0BE0DEBFF0_5E6D793C_01
+0000000000000200_44000000_00
+FFFDF803FFFFFFFF_5F7FFDF8_01
+000000000004766B_488ECD60_00
+0000000000000400_44800000_00
+0000080100000FFE_55001000_01
+000000000000002C_42300000_00
+0000000000000800_45000000_00
+0048000000100000_5A900000_01
+07E662A109109D0A_5CFCCC54_01
+0000000000001000_45800000_00
+C000000037FFFFFE_5F400000_01
+0000000000000064_42C80000_00
+0000000000002000_46000000_00
+F801000000100000_5F780100_01
+02114B79075F70EE_5C0452DE_01
+0000000000004000_46800000_00
+100000000001003E_5D800000_01
+0000000000000BAC_453AC000_00
+0000000000008000_47000000_00
+200000FFFFFFF800_5E000003_01
+000000C4A3A3DBE5_5344A3A3_01
+0000000000010000_47800000_00
+FFE0003EFFFFFFFF_5F7FE000_01
+0000000000001A91_45D48800_00
+0000000000020000_48000000_00
+FFFFF7C3FFFFFFFD_5F7FFFF7_01
+0000000000007309_46E61200_00
+0000000000040000_48800000_00
+000083FFF7FFFFFE_5703FFF7_01
+0000000000000F58_45758000_00
+0000000000080000_49000000_00
+FFFFFFDE01FFFFFE_5F7FFFFF_01
+0000000000006980_46D30000_00
+0000000000100000_49800000_00
+00000000FFF07FFF_4F7FF07F_01
+00000000000000DD_435D0000_00
+0000000000200000_4A000000_00
+000020FFDFFFFFFF_5603FF7F_01
+00008C23DA2CEAD8_570C23DA_01
+0000000000400000_4A800000_00
+E0000000003FFFDF_5F600000_01
+00000DE3C1DEC43C_555E3C1D_01
+0000000000800000_4B000000_00
+FFFF00000BFFFFFD_5F7FFF00_01
+000000008030FFBE_4F0030FF_01
+0000000001000000_4B800000_00
+FFFE000007FFEFFD_5F7FFE00_01
+000000000FDEED86_4D7DEED8_01
+0000000002000000_4C000000_00
+F3FFFFFFFFBFFFFE_5F73FFFF_01
+000000005DA3FF45_4EBB47FE_01
+0000000004000000_4C800000_00
+FFFFFFFF00010007_5F7FFFFF_01
+000000009B1BCB54_4F1B1BCB_01
+0000000008000000_4D000000_00
+00004000004001FE_56800000_01
+027DD19DE6563714_5C1F7467_01
+0000000010000000_4D800000_00
+FFC00000004007FE_5F7FC000_01
+000000000003A359_4868D640_00
+0000000020000000_4E000000_00
+0000000003C000FE_4C70003F_01
+000000003E62EC20_4E798BB0_01
+0000000040000000_4E800000_00
+000000003FFFFFFD_4E7FFFFF_01
+000000000000685F_46D0BE00_00
+0000000080000000_4F000000_00
+FFFFFFFFBFFFF00F_5F7FFFFF_01
+00000836F99DBAA8_55036F99_01
+0000000100000000_4F800000_00
+00000020003FFEFE_520000FF_01
+0073466832042D47_5AE68CD0_01
+0000000200000000_50000000_00
+FFFFFFFFFFFFF887_5F7FFFFF_01
+00000000007829C8_4AF05390_00
+0000000400000000_50800000_00
+00000FFFFFFF7DFD_557FFFFF_01
+0000001FB77C672B_51FDBBE3_01
+0000000800000000_51000000_00
+08003FFDFFFFFFFE_5D0003FF_01
+0000000000005B78_46B6F000_00
+0000001000000000_51800000_00
+FF7FFFFFFFEFDFFF_5F7F7FFF_01
+00000000000000F1_43710000_00
+0000002000000000_52000000_00
+000013FFFFFFFDFF_559FFFFF_01
+0000000000000006_40C00000_00
+0000004000000000_52800000_00
+0800000000040800_5D000000_01
+0008A60D9E19F17E_590A60D9_01
+0000008000000000_53000000_00
+000077FFF0000000_56EFFFE0_00
+0000000007506DBA_4CEA0DB7_01
+0000010000000000_53800000_00
+FFFFFFFFFFFEFBF7_5F7FFFFF_01
+0000000006A42AC9_4CD48559_01
+0000020000000000_54000000_00
+0000107FFFFFDFFD_5583FFFF_01
+0007AA3F2BDACC89_58F547E5_01
+0000040000000000_54800000_00
+FFF8040000040000_5F7FF804_01
+0000000000000005_40A00000_00
+0000080000000000_55000000_00
+FFFF80000800001F_5F7FFF80_01
+000DF681DECDADC9_595F681D_01
+0000100000000000_55800000_00
+FFFFFEFFFFE0007F_5F7FFFFE_01
+0000000000004FBE_469F7C00_00
+0000200000000000_56000000_00
+0000000901FFFFFD_51101FFF_01
+00C01FECA24DE1B0_5B401FEC_01
+0000400000000000_56800000_00
+F7FFFFFFDFFF7FFF_5F77FFFF_01
+0058A66761669936_5AB14CCE_01
+0000800000000000_57000000_00
+FFFEFF800000003E_5F7FFEFF_01
+0716EA43FAC45C97_5CE2DD48_01
+0001000000000000_57800000_00
+FFFFFFFFFFFFFFC6_5F7FFFFF_01
+0064D70EC7661FD8_5AC9AE1D_01
+0002000000000000_58000000_00
+C07FFFFFFFFFFFFE_5F407FFF_01
+00D956DBD0AEE817_5B5956DB_01
+0004000000000000_58800000_00
+020003EFFFFFFFFE_5C0000FB_01
+0000000000004300_46860000_00
+0008000000000000_59000000_00
+4000000004002000_5E800000_01
+012EDF40F41F6021_5B976FA0_01
+0010000000000000_59800000_00
+FF9000000000001D_5F7F9000_01
+000000383DE950F6_5260F7A5_01
+0020000000000000_5A000000_00
+800003FFFFFC0000_5F000003_01
+002B59CB3A604D69_5A2D672C_01
+0040000000000000_5A800000_00
+7FFFFFFDFFFFBFFF_5EFFFFFF_01
+000001A37C210862_53D1BE10_01
+0080000000000000_5B000000_00
+0002000002000002_58000000_01
+0000365CD8617789_56597361_01
+0100000000000000_5B800000_00
+00001BFFFFFFBFFE_55DFFFFF_01
+000000000000101D_4580E800_00
+0200000000000000_5C000000_00
+1000008000003FFF_5D800004_01
+000000001D098D19_4DE84C68_01
+0400000000000000_5C800000_00
+03FFFFFFFFFFF5FF_5C7FFFFF_01
+000016B3BD2C7BEF_55B59DE9_01
+0800000000000000_5D000000_00
+00003FFFBFFFFFFE_567FFEFF_01
+00004E5ADDDAA4A8_569CB5BB_01
+1000000000000000_5D800000_00
+001FFFC000000FFD_59FFFE00_01
+0000000000000721_44E42000_00
+2000000000000000_5E000000_00
+0000000041DFFFFF_4E83BFFF_01
+0000000000648262_4AC904C4_00
+4000000000000000_5E800000_00
+C0001FFFFFFFFFFB_5F40001F_01
+0000007353AC45D2_52E6A758_01
+8000000000000000_5F000000_00
+FFFFFFFFFFE7EFFF_5F7FFFFF_01
+0000000001A1202D_4BD09016_01
+C000000000000000_5F400000_00
+FFFFFFFFFFFF5F7F_5F7FFFFF_01
+0000000000C0CA70_4B40CA70_00
+E000000000000000_5F600000_00
+0000200201FFFFFE_56000807_01
+00000007B55D87D4_50F6ABB0_01
+F000000000000000_5F700000_00
+FF80000DFFFFFFFF_5F7F8000_01
+000000090510FAEF_5110510F_01
+F800000000000000_5F780000_00
+0003FFF00000000F_587FFC00_01
+000000000001724A_47B92500_00
+FC00000000000000_5F7C0000_00
+FFFFFFDF80000002_5F7FFFFF_01
+00000000000000E4_43640000_00
+FE00000000000000_5F7E0000_00
+FEFFFFFFFFF800FE_5F7EFFFF_01
+00000002C6222702_50318889_01
+FF00000000000000_5F7F0000_00
+0000000408000002_50810000_01
+000002E96DF1CB41_543A5B7C_01
+FF80000000000000_5F7F8000_00
+007FFFFFFFFFF9FE_5AFFFFFF_01
+0727F174DEE7DC85_5CE4FE2E_01
+FFC0000000000000_5F7FC000_00
+8000000003FFFEFE_5F000000_01
+000000000010BD5B_4985EAD8_00
+FFE0000000000000_5F7FE000_00
+0BEFFFFFFFFFFFFF_5D3EFFFF_01
+000000000022790C_4A09E430_00
+FFF0000000000000_5F7FF000_00
+FFFFFFFFFFEFFBFA_5F7FFFFF_01
+000000369E75DF01_525A79D7_01
+FFF8000000000000_5F7FF800_00
+00000007FEFFDFFF_50FFDFFB_01
+000000000000001E_41F00000_00
+FFFC000000000000_5F7FFC00_00
+0003FFFE0007FFFE_587FFF80_01
+0000000000328622_4A4A1888_00
+FFFE000000000000_5F7FFE00_00
+FFFFFF7FFFFDF7FF_5F7FFFFF_01
+00172F0EC496FE21_59B97876_01
+FFFF000000000000_5F7FFF00_00
+DFBFFFFFFFFFFFFE_5F5FBFFF_01
+0000000004FC1FCA_4C9F83F9_01
+FFFF800000000000_5F7FFF80_00
+00000FFF800FFFFE_557FF800_01
+000F5194E4A9C2CE_5975194E_01
+FFFFC00000000000_5F7FFFC0_00
+00000002100007FD_50040001_01
+000000000002D8FE_48363F80_00
+FFFFE00000000000_5F7FFFE0_00
+000000000007FF6E_48FFEDC0_00
+000000000003766E_485D9B80_00
+FFFFF00000000000_5F7FFFF0_00
+0040000400000002_5A800008_01
+000000000000F841_47784100_00
+FFFFF80000000000_5F7FFFF8_00
+3DFFFFFFFFFFFF7E_5E77FFFF_01
+0000000549E17E30_50A93C2F_01
+FFFFFC0000000000_5F7FFFFC_00
+FFFFFFFFFFFFFEE1_5F7FFFFF_01
+0000000000000027_421C0000_00
+FFFFFE0000000000_5F7FFFFE_00
+000000000EFFFFDF_4D6FFFFD_01
+0000000000000373_445CC000_00
+FFFFFF0000000000_5F7FFFFF_00
+FD00000008000000_5F7D0000_01
+000000000005DBB1_48BB7620_00
+FFFFFF8000000000_5F7FFFFF_01
+FFFFFFFFFFF8007F_5F7FFFFF_01
+00000002FD10A515_503F4429_01
+FFFFFFC000000000_5F7FFFFF_01
+FFEFFFFFFFFFFFFE_5F7FEFFF_01
+0AB02984F6283B6C_5D2B0298_01
+FFFFFFE000000000_5F7FFFFF_01
+FFFFFFBC000001FE_5F7FFFFF_01
+00B087C6B9FE7FE0_5B3087C6_01
+FFFFFFF000000000_5F7FFFFF_01
+FFF80001000007FE_5F7FF800_01
+01F2762EA6837956_5BF93B17_01
+FFFFFFF800000000_5F7FFFFF_01
+FFF7E0FFFFFFFFFE_5F7FF7E0_01
+00022E1175484626_580B845D_01
+FFFFFFFC00000000_5F7FFFFF_01
+0000200020000FFE_56000080_01
+000000000000168F_45B47800_00
+FFFFFFFE00000000_5F7FFFFF_01
+021FFFFFFFFBFFFF_5C07FFFF_01
+0000000000000001_3F800000_00
+FFFFFFFF00000000_5F7FFFFF_01
+FFFFFFD0000FFFFD_5F7FFFFF_01
+000001BDF6658B83_53DEFB32_01
+FFFFFFFF80000000_5F7FFFFF_01
+1000001FFDFFFFFF_5D800000_01
+000000000000BB5B_473B5B00_00
+FFFFFFFFC0000000_5F7FFFFF_01
+FFFFFFBFFE0FFFFF_5F7FFFFF_01
+0000000000000000_00000000_00
+FFFFFFFFE0000000_5F7FFFFF_01
+FFFFFFFBF00007FF_5F7FFFFF_01
+01E986274F48EAAD_5BF4C313_01
+FFFFFFFFF0000000_5F7FFFFF_01
+1FFFFFFDFFFFFF7F_5DFFFFFF_01
+000000000000CB5A_474B5A00_00
+FFFFFFFFF8000000_5F7FFFFF_01
+7FF000000000FFFF_5EFFE000_01
+0000000BC2717FC3_513C2717_01
+FFFFFFFFFC000000_5F7FFFFF_01
+FFFFFFE00008001F_5F7FFFFF_01
+00000000000FABDA_497ABDA0_00
+FFFFFFFFFE000000_5F7FFFFF_01
+0200000000000002_5C000000_01
+0000000000FDA53F_4B7DA53F_00
+FFFFFFFFFF000000_5F7FFFFF_01
+F6000003FFFFFFFE_5F760000_01
+0000000000000010_41800000_00
+FFFFFFFFFF800000_5F7FFFFF_01
+FFFFFFFFFFBFFF7E_5F7FFFFF_01
+00000001EE0FEA62_4FF707F5_01
+FFFFFFFFFFC00000_5F7FFFFF_01
+0000007FFF9FFFFD_52FFFF3F_01
+00000077F35EDC1D_52EFE6BD_01
+FFFFFFFFFFE00000_5F7FFFFF_01
+FFFFFFF7FDFFFF7D_5F7FFFFF_01
+00000000000003AD_446B4000_00
+FFFFFFFFFFF00000_5F7FFFFF_01
+FFFFFF0000100020_5F7FFFFF_01
+67F167FBC7FC5F9A_5ECFE2CF_01
+FFFFFFFFFFF80000_5F7FFFFF_01
+003FFFFFFFFC0001_5A7FFFFF_01
+002E48F9F4EBD30E_5A3923E7_01
+FFFFFFFFFFFC0000_5F7FFFFF_01
+DFFFFFFFFFFBFFFE_5F5FFFFF_01
+0091C23EE8C9424F_5B11C23E_01
+FFFFFFFFFFFE0000_5F7FFFFF_01
+F7DFFBFFFFFFFFFE_5F77DFFB_01
+00000000ACAE080C_4F2CAE08_01
+FFFFFFFFFFFF0000_5F7FFFFF_01
+FFFFC00010000020_5F7FFFC0_01
+0CD921F917B20E40_5D4D921F_01
+FFFFFFFFFFFF8000_5F7FFFFF_01
+F8000FFFFFFFFFFD_5F78000F_01
+00017C566BC7D811_57BE2B35_01
+FFFFFFFFFFFFC000_5F7FFFFF_01
+00000000000000FE_437E0000_00
+00F82AC14930D386_5B782AC1_01
+FFFFFFFFFFFFE000_5F7FFFFF_01
+00000000000003FC_447F0000_00
+008E62EC60E119FC_5B0E62EC_01
+FFFFFFFFFFFFF000_5F7FFFFF_01
+FFFFEFF7FF7FFFFE_5F7FFFEF_01
+1E2B1ECF210EEDC5_5DF158F6_01
+FFFFFFFFFFFFF800_5F7FFFFF_01
+00000000007FFF1F_4AFFFE3E_00
+000006534F5676F7_54CA69EA_01
+FFFFFFFFFFFFFC00_5F7FFFFF_01
+0000001004FFFFFD_518027FF_01
+0000435C939669F1_5686B927_01
+FFFFFFFFFFFFFE00_5F7FFFFF_01
+1FFFFFFFFFFFFDFD_5DFFFFFF_01
+0000000000000011_41880000_00
+FFFFFFFFFFFFFF00_5F7FFFFF_01
+01FFFFFFFBFFEFFE_5BFFFFFF_01
+000000000000036E_445B8000_00
+FFFFFFFFFFFFFF80_5F7FFFFF_01
+FFF7FFFFFFFFF7FD_5F7FF7FF_01
+000038E2BCFAC553_56638AF3_01
+FFFFFFFFFFFFFFC0_5F7FFFFF_01
+FFFFFBFFFFFE0FFE_5F7FFFFB_01
+00000009A4E704BF_511A4E70_01
+FFFFFFFFFFFFFFE0_5F7FFFFF_01
+1400007FFFFFFFFD_5DA00003_01
+0000000093B187B4_4F13B187_01
+FFFFFFFFFFFFFFF0_5F7FFFFF_01
+40000000007FFFFD_5E800000_01
+0000000000E7D468_4B67D468_00
+FFFFFFFFFFFFFFF8_5F7FFFFF_01
+007FFEFFFFFBFFFE_5AFFFDFF_01
+000000026CEC79F8_501B3B1E_01
+FFFFFFFFFFFFFFFC_5F7FFFFF_01
+00FFFFFF000000FF_5B7FFFFF_01
+0000000000D3983A_4B53983A_00
+FFFFFFFFFFFFFFFE_5F7FFFFF_01
+00007FFFBFFF7FFE_56FFFF7F_01
+00000001F4A7088A_4FFA5384_01
+FFFFFFFFFFFFFFFF_5F7FFFFF_01
+000008000000027E_55000000_01
+000000000001F4E8_47FA7400_00
+FFFFFFFFFFFFFFFD_5F7FFFFF_01
+FFFFFFFFFF83FFDF_5F7FFFFF_01
+00001E11407887B2_55F08A03_01
+FFFFFFFFFFFFFFFB_5F7FFFFF_01
+04000003FFFFFFF6_5C800000_01
+0000000000000D13_45513000_00
+FFFFFFFFFFFFFFF7_5F7FFFFF_01
+BFFC00000000003E_5F3FFC00_01
+00000028D7BBB75B_52235EEE_01
+FFFFFFFFFFFFFFEF_5F7FFFFF_01
+000FFFFBFFFC0000_597FFFBF_01
+0000000000CD5A23_4B4D5A23_00
+FFFFFFFFFFFFFFDF_5F7FFFFF_01
+FFBFDFFFBFFFFFFF_5F7FBFDF_01
+00000000000000FF_437F0000_00
+FFFFFFFFFFFFFFBF_5F7FFFFF_01
+00000007FF800003_50FFF000_01
+00000000000ABB02_492BB020_00
+FFFFFFFFFFFFFF7F_5F7FFFFF_01
+FFFFFFFFFFFEE7FF_5F7FFFFF_01
+00664B2B9BAD0DA2_5ACC9657_01
+FFFFFFFFFFFFFEFF_5F7FFFFF_01
+0000000000100803_49804018_00
+009B1DCB9F857D5E_5B1B1DCB_01
+FFFFFFFFFFFFFDFF_5F7FFFFF_01
+FFFFFFBFFFFFEFEE_5F7FFFFF_01
+36FD7542899C1C6F_5E5BF5D5_01
+FFFFFFFFFFFFFBFF_5F7FFFFF_01
+FF800000004001FF_5F7F8000_01
+0000000006BE4932_4CD7C926_01
+FFFFFFFFFFFFF7FF_5F7FFFFF_01
+00001004000FFFFE_55802000_01
+0000001DAA0123E0_51ED5009_01
+FFFFFFFFFFFFEFFF_5F7FFFFF_01
+00000001FDFFFDFE_4FFEFFFE_01
+00001C8703B1DCB0_55E4381D_01
+FFFFFFFFFFFFDFFF_5F7FFFFF_01
+FE0FE00000000000_5F7E0FE0_00
+0F79ED944A4E2779_5D779ED9_01
+FFFFFFFFFFFFBFFF_5F7FFFFF_01
+FBFFFE0400000000_5F7BFFFE_01
+0000030127E03666_544049F8_01
+FFFFFFFFFFFF7FFF_5F7FFFFF_01
+FFFFF0200000FFFE_5F7FFFF0_01
+000000000000017F_43BF8000_00
+FFFFFFFFFFFEFFFF_5F7FFFFF_01
+FFEFFE0000080000_5F7FEFFE_01
+00000000013354EA_4B99AA75_00
+FFFFFFFFFFFDFFFF_5F7FFFFF_01
+003FF0000003FFFE_5A7FC000_01
+0000016375B23F7B_53B1BAD9_01
+FFFFFFFFFFFBFFFF_5F7FFFFF_01
+000407FFFFFFFFF6_5880FFFF_01
+0000000192117F38_4FC908BF_01
+FFFFFFFFFFF7FFFF_5F7FFFFF_01
+FFFFFFFFFFFF7FFF_5F7FFFFF_01
+00000000000018BE_45C5F000_00
+FFFFFFFFFFEFFFFF_5F7FFFFF_01
+004000020FFFFFFF_5A800004_01
+0000B84C2D8BC9CB_57384C2D_01
+FFFFFFFFFFDFFFFF_5F7FFFFF_01
+00FFFFFFFFFFFFFD_5B7FFFFF_01
+00000223C2C6F284_5408F0B1_01
+FFFFFFFFFFBFFFFF_5F7FFFFF_01
+FFFDDFFFFFFFFFFD_5F7FFDDF_01
+00000000F46356C4_4F746356_01
+FFFFFFFFFF7FFFFF_5F7FFFFF_01
+010000000000BFFF_5B800000_01
+0000000000000005_40A00000_00
+FFFFFFFFFEFFFFFF_5F7FFFFF_01
+FFFFBF7FFBFFFFFE_5F7FFFBF_01
+00000026386CE889_5218E1B3_01
+FFFFFFFFFDFFFFFF_5F7FFFFF_01
+F00000F7FFFFFFFF_5F700000_01
+0001FC53090C46A4_57FE2984_01
+FFFFFFFFFBFFFFFF_5F7FFFFF_01
+0000000000800047_4B000047_00
+000000001693872E_4DB49C39_01
+FFFFFFFFF7FFFFFF_5F7FFFFF_01
+000000007FBFFBFF_4EFF7FF7_01
+00000226A7845E35_5409A9E1_01
+FFFFFFFFEFFFFFFF_5F7FFFFF_01
+FFFFFFDFFFFFFBFD_5F7FFFFF_01
+000000005433D14C_4EA867A2_01
+FFFFFFFFDFFFFFFF_5F7FFFFF_01
+0001FFFFFFE0000E_57FFFFFF_01
+00F23E8068D3D84A_5B723E80_01
+FFFFFFFFBFFFFFFF_5F7FFFFF_01
+F7FFBFFFFFFFBFFF_5F77FFBF_01
+0000BD29B7459087_573D29B7_01
+FFFFFFFF7FFFFFFF_5F7FFFFF_01
+FFFFFFF8FFFFBFFF_5F7FFFFF_01
+00000000002DDC06_4A377018_00
+FFFFFFFEFFFFFFFF_5F7FFFFF_01
+FFFFFFF80001FFFF_5F7FFFFF_01
+0000000000012FF9_4797FC80_00
+FFFFFFFDFFFFFFFF_5F7FFFFF_01
+004000040000FFFF_5A800008_01
+0000000000000001_3F800000_00
+FFFFFFFBFFFFFFFF_5F7FFFFF_01
+C0000000007FFFFA_5F400000_01
+0000000006053E2B_4CC0A7C5_01
+FFFFFFF7FFFFFFFF_5F7FFFFF_01
+7FFE000007FFFFFF_5EFFFC00_01
+000000000000002D_42340000_00
+FFFFFFEFFFFFFFFF_5F7FFFFF_01
+F80000000001007E_5F780000_01
+00000D48424AD9D6_55548424_01
+FFFFFFDFFFFFFFFF_5F7FFFFF_01
+FFFFFE0001FEFFFF_5F7FFFFE_01
+000000000000033B_444EC000_00
+FFFFFFBFFFFFFFFF_5F7FFFFF_01
+0007FBFFFFFDFFFE_58FF7FFF_01
+4A16BD4128090C83_5E942D7A_01
+FFFFFF7FFFFFFFFF_5F7FFFFF_01
+00FFF7FFFF7FFFFE_5B7FF7FF_01
+0000000000000086_43060000_00
+FFFFFEFFFFFFFFFF_5F7FFFFE_01
+FBFFFFBFFFBFFFFF_5F7BFFFF_01
+00000000000021BA_4606E800_00
+FFFFFDFFFFFFFFFF_5F7FFFFD_01
+0000000040000082_4E800001_01
+0007A2BF5B689F89_58F457EB_01
+FFFFFBFFFFFFFFFF_5F7FFFFB_01
+0000001FF8000008_51FFC000_01
+387CAA7DE672DE8B_5E61F2A9_01
+FFFFF7FFFFFFFFFF_5F7FFFF7_01
+07FFF80000000002_5CFFFF00_01
+0000000030A1E5B8_4E428796_01
+FFFFEFFFFFFFFFFF_5F7FFFEF_01
+F7FFFFE00007FFFF_5F77FFFF_01
+000000000006ADFC_48D5BF80_00
+FFFFDFFFFFFFFFFF_5F7FFFDF_01
+FFFFFF03FFFFFFC0_5F7FFFFF_01
+0A579475948F0032_5D257947_01
+FFFFBFFFFFFFFFFF_5F7FFFBF_01
+FC00000000003FF6_5F7C0000_01
+00AE677AC313BF60_5B2E677A_01
+FFFF7FFFFFFFFFFF_5F7FFF7F_01
+02000007FF7FFFFF_5C000001_01
+0000002E999639F1_523A6658_01
+FFFEFFFFFFFFFFFF_5F7FFEFF_01
+FFFF83FFFFFFFFBE_5F7FFF83_01
+000000000003537D_4854DF40_00
+FFFDFFFFFFFFFFFF_5F7FFDFF_01
+EFFFFFC00000003D_5F6FFFFF_01
+000000121FEDFD35_5190FF6F_01
+FFFBFFFFFFFFFFFF_5F7FFBFF_01
+FFFFFFF0000007FE_5F7FFFFF_01
+00000000001E0839_49F041C8_00
+FFF7FFFFFFFFFFFF_5F7FF7FF_01
+0000007FFFE000FF_52FFFFC0_01
+0000000079F30F48_4EF3E61E_01
+FFEFFFFFFFFFFFFF_5F7FEFFF_01
+FFFFFC13FFFFFFFD_5F7FFFFC_01
+0000000000003B85_466E1400_00
+FFDFFFFFFFFFFFFF_5F7FDFFF_01
+000008000007FFFE_55000000_01
+32DB4409E5AE87E6_5E4B6D10_01
+FFBFFFFFFFFFFFFF_5F7FBFFF_01
+FFFFFFFFFFF7BFEE_5F7FFFFF_01
+000000000000003D_42740000_00
+FF7FFFFFFFFFFFFF_5F7F7FFF_01
+000000001040FFFE_4D8207FF_01
+00004909A09C13D3_56921341_01
+FEFFFFFFFFFFFFFF_5F7EFFFF_01
+FFFFFF01FFFFFF7F_5F7FFFFF_01
+00000072E7D2575D_52E5CFA4_01
+FDFFFFFFFFFFFFFF_5F7DFFFF_01
+FFFFFFFFFFFEFFDB_5F7FFFFF_01
+0000000000000057_42AE0000_00
+FBFFFFFFFFFFFFFF_5F7BFFFF_01
+100000001FFFFFF6_5D800000_01
+000000914B12EF51_53114B12_01
+F7FFFFFFFFFFFFFF_5F77FFFF_01
+0407FFFFFFFFFEFF_5C80FFFF_01
+000000769F3A5C2C_52ED3E74_01
+EFFFFFFFFFFFFFFF_5F6FFFFF_01
+FFFFFFFDF7FFFFFD_5F7FFFFF_01
+0000000000000002_40000000_00
+DFFFFFFFFFFFFFFF_5F5FFFFF_01
+FFFFFFFFFE0007FF_5F7FFFFF_01
+000000000000009E_431E0000_00
+BFFFFFFFFFFFFFFF_5F3FFFFF_01
+FFF800000009FFFF_5F7FF800_01
+0000000000087AA4_4907AA40_00
+7FFFFFFFFFFFFFFF_5EFFFFFF_01
+4080000000FFFFFF_5E810000_01
+000000001DE7601D_4DEF3B00_01
+3FFFFFFFFFFFFFFF_5E7FFFFF_01
+FFCFFFFFFFBFFFFE_5F7FCFFF_01
+000000000000004A_42940000_00
+1FFFFFFFFFFFFFFF_5DFFFFFF_01
+000080400000003F_57004000_01
+00000000003F75A5_4A7DD694_00
+0FFFFFFFFFFFFFFF_5D7FFFFF_01
+FFFFFFEFFFFFCFFE_5F7FFFFF_01
+000000E775887420_53677588_01
+07FFFFFFFFFFFFFF_5CFFFFFF_01
+00000000000801FE_49001FE0_00
+0000000000A13FF1_4B213FF1_00
+03FFFFFFFFFFFFFF_5C7FFFFF_01
+07FEFFFFFFFFFFEE_5CFFDFFF_01
+000000000000000C_41400000_00
+01FFFFFFFFFFFFFF_5BFFFFFF_01
+0000000820000003_51020000_01
+00000001AD105214_4FD68829_01
+00FFFFFFFFFFFFFF_5B7FFFFF_01
+FFFFF00FFFFFFFBE_5F7FFFF0_01
+0000000000CC48E7_4B4C48E7_00
+007FFFFFFFFFFFFF_5AFFFFFF_01
+00000FFFEF7FFFFF_557FFEF7_01
+00000000000BA6CB_493A6CB0_00
+003FFFFFFFFFFFFF_5A7FFFFF_01
+FFFFFF7FBFFFFFBF_5F7FFFFF_01
+0000000000024425_48110940_00
+001FFFFFFFFFFFFF_59FFFFFF_01
+200000001FFBFFFF_5E000000_01
+0000004E7115EC53_529CE22B_01
+000FFFFFFFFFFFFF_597FFFFF_01
+FFFFF803FFFFFFBF_5F7FFFF8_01
+0000002E539ADCFE_52394E6B_01
+0007FFFFFFFFFFFF_58FFFFFF_01
+FFFFFFFFFBFFFFFF_5F7FFFFF_01
+000000D5084732F3_53550847_01
+0003FFFFFFFFFFFF_587FFFFF_01
+BFFF7FFFFFFFFE00_5F3FFF7F_01
+0000000000000543_44A86000_00
+0001FFFFFFFFFFFF_57FFFFFF_01
+0000001FFBFFE000_51FFDFFF_00
+000000000000491B_46923600_00
+0000FFFFFFFFFFFF_577FFFFF_01
+FC00200000001FFE_5F7C0020_01
+0000016898822A24_53B44C41_01
+00007FFFFFFFFFFF_56FFFFFF_01
+3FFF03FFFFFFFFFE_5E7FFC0F_01
+0000000FFE18C7BF_517FE18C_01
+00003FFFFFFFFFFF_567FFFFF_01
+FFFFFEFFFEFFFFFD_5F7FFFFE_01
+02F03620C1266ED9_5C3C0D88_01
+00001FFFFFFFFFFF_55FFFFFF_01
+BF7EFFFFFFFFFFFF_5F3F7EFF_01
+0000000000000055_42AA0000_00
+00000FFFFFFFFFFF_557FFFFF_01
+FFFBFFFFF803FFFE_5F7FFBFF_01
+0000000000168684_49B43420_00
+000007FFFFFFFFFF_54FFFFFF_01
+DFFFFFE00000001E_5F5FFFFF_01
+0000000000000CF5_454F5000_00
+000003FFFFFFFFFF_547FFFFF_01
+FFFF00400000FFFF_5F7FFF00_01
+0000000000000022_42080000_00
+000001FFFFFFFFFF_53FFFFFF_01
+FBFFFFFFFFFFBDFE_5F7BFFFF_01
+0000000000001BC9_45DE4800_00
+000000FFFFFFFFFF_537FFFFF_01
+807FFFFFFFFFDFFE_5F007FFF_01
+000274E35A70CD76_581D38D6_01
+0000007FFFFFFFFF_52FFFFFF_01
+0FFFFFFFFEFFFFFD_5D7FFFFF_01
+0000000300E73AFC_504039CE_01
+0000003FFFFFFFFF_527FFFFF_01
+FFC000000001000E_5F7FC000_01
+00000000000615E9_48C2BD20_00
+0000001FFFFFFFFF_51FFFFFF_01
+0001FFFFFFFFF3FD_57FFFFFF_01
+00000000000000B3_43330000_00
+0000000FFFFFFFFF_517FFFFF_01
+000000001FFFBFFF_4DFFFDFF_01
+0000006E6B141E1B_52DCD628_01
+00000007FFFFFFFF_50FFFFFF_01
+FFFFFFFFF60007FF_5F7FFFFF_01
+00000003AB310BA6_506ACC42_01
+00000003FFFFFFFF_507FFFFF_01
+0003FFFFB7FFFFFF_587FFFED_01
+0000000000000195_43CA8000_00
+00000001FFFFFFFF_4FFFFFFF_01
+FFFFFFFF8000000B_5F7FFFFF_01
+00000059BA8D5559_52B3751A_01
+00000000FFFFFFFF_4F7FFFFF_01
+FBFEFFFFFFFFFFF9_5F7BFEFF_01
+000001B6F062822D_53DB7831_01
+000000007FFFFFFF_4EFFFFFF_01
+0001000000000082_57800000_01
+03CEAD9E2FB104A4_5C73AB67_01
+000000003FFFFFFF_4E7FFFFF_01
+000003FFFFFFFF7C_547FFFFF_01
+000000000D681E78_4D5681E7_01
+000000001FFFFFFF_4DFFFFFF_01
+00002000400001FF_56000100_01
+0000000000000058_42B00000_00
+000000000FFFFFFF_4D7FFFFF_01
+3FFF80000000003E_5E7FFE00_01
+0000000000000095_43150000_00
+0000000007FFFFFF_4CFFFFFF_01
+010000BFFFFFFFFF_5B80005F_01
+0000009697087B19_53169708_01
+0000000003FFFFFF_4C7FFFFF_01
+FBFFFFFFFFEEFFFD_5F7BFFFF_01
+0000001E64BDFC55_51F325EF_01
+0000000001FFFFFF_4BFFFFFF_01
+FC00000001FFFFFE_5F7C0000_01
+0000D156A62AB849_575156A6_01
+0000000000FFFFFF_4B7FFFFF_00
+FFFFFFF83FEFFFFD_5F7FFFFF_01
+00035354EAE7C259_5854D53A_01
+00000000007FFFFF_4AFFFFFE_00
+FFFFFFFFFFFFFF7F_5F7FFFFF_01
+00000000F4DF3C75_4F74DF3C_01
+00000000003FFFFF_4A7FFFFC_00
+FFFA000000001FFF_5F7FFA00_01
+0000000000000003_40400000_00
+00000000001FFFFF_49FFFFF8_00
+FFFFFFFFFF7FFE40_5F7FFFFF_01
+0000005B5433CB9B_52B6A867_01
+00000000000FFFFF_497FFFF0_00
+FFFFFDFFDFFDFFFD_5F7FFFFD_01
+0000000000DEAE1F_4B5EAE1F_00
+000000000007FFFF_48FFFFE0_00
+FFFFFFFFF0080006_5F7FFFFF_01
+000000007735DEC7_4EEE6BBD_01
+000000000003FFFF_487FFFC0_00
+00000001FBFFFFFF_4FFDFFFF_01
+000007757D8B12ED_54EEAFB1_01
+000000000001FFFF_47FFFF80_00
+FFFFFE07F7FFFFFF_5F7FFFFE_01
+00002A654064E046_56299501_01
+000000000000FFFF_477FFF00_00
+08000000000017FF_5D000000_01
+0000000000000007_40E00000_00
+0000000000007FFF_46FFFE00_00
+07FFFFFFFFFFFDF6_5CFFFFFF_01
+00002D78B3D6C3B6_5635E2CF_01
+0000000000003FFF_467FFC00_00
+0000300004000000_56400010_00
+000000070B77F34F_50E16EFE_01
+0000000000001FFF_45FFF800_00
+FFFFFF80006FFFFE_5F7FFFFF_01
+0000093EB4D67EC8_5513EB4D_01
+0000000000000FFF_457FF000_00
+BFFFDFFFFBFFFFFF_5F3FFFDF_01
+0205CEAF34EA1DC7_5C0173AB_01
+00000000000007FF_44FFE000_00
+00004800007FFFFD_56900000_01
+0000000000000003_40400000_00
+00000000000003FF_447FC000_00
+0000000200001000_50000004_00
+00000000000760D0_48EC1A00_00
+00000000000001FF_43FF8000_00
+01003FFFFFFFFFFC_5B801FFF_01
+02C000708FF1BA51_5C30001C_01
+00000000000000FF_437F0000_00
+F802000003FFFFFF_5F780200_01
+4F9E07DCC0BDC061_5E9F3C0F_01
+000000000000007F_42FE0000_00
+03FF0000000000FF_5C7FC000_01
+00000001B9B2A079_4FDCD950_01
+000000000000003F_427C0000_00
+FFF80000000080FF_5F7FF800_01
+00000000005EB5B4_4ABD6B68_00
+000000000000001F_41F80000_00
+000000000077FBFE_4AEFF7FC_00
+0000000000DAC607_4B5AC607_00
+000000000000000F_41700000_00
+FFFFFFFEF80000FF_5F7FFFFF_01
+00000DC5B9D66984_555C5B9D_01
+0000000000000007_40E00000_00
+C001FFFFFFF00000_5F4001FF_01
+00003D06B372AA06_56741ACD_01
+0000000000000003_40400000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f64_rd.tv b/wally-pipelined/testbench/fp/ui64_f64_rd.tv
new file mode 100644
index 000000000..857916e80
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f64_rd.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFD_01
+0000000072CC8B7A_41DCB322DE800000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_43EFFFFFFFF80007_01
+072C857F319EDE38_439CB215FCC67B78_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_43EFFFFF7FFFFF00_01
+00794C79B6D3007B_435E531E6DB4C01E_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_43EF7FFFFE000000_01
+0000000005AE458D_4196B91634000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+09EB456140D88764_43A3D68AC281B10E_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_43EFFFFC801FFFFF_01
+27DE834A248EDF36_43C3EF41A512476F_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+00000000000385E2_410C2F1000000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_43EE0083FFFFFFFF_01
+000000159EB1FD45_42359EB1FD450000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_43EFFFFFFFFFFF9F_01
+000000000002DDFE_4106EFF000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000002C89FF56B_420644FFAB580000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+3B5E4F0BE0DEBFF0_43CDAF2785F06F5F_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_43EFFFBF007FFFFF_01
+000000000004766B_4111D9AC00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000002C_4046000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+07E662A109109D0A_439F998A84244274_01
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_43E800000006FFFF_01
+0000000000000064_4059000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_43EF002000000200_00
+02114B79075F70EE_43808A5BC83AFB87_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+0000000000000BAC_40A7580000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+000000C4A3A3DBE5_426894747B7CA000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_43EFFC0007DFFFFF_01
+0000000000001A91_40BA910000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_43EFFFFEF87FFFFF_01
+0000000000007309_40DCC24000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+0000000000000F58_40AEB00000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_43EFFFFFFBC03FFF_01
+0000000000006980_40DA600000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+00000000000000DD_406BA00000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+00008C23DA2CEAD8_42E1847B459D5B00_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_43EC0000000007FF_01
+00000DE3C1DEC43C_42ABC783BD887800_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_43EFFFE000017FFF_01
+000000008030FFBE_41E0061FF7C00000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_43EFFFC00000FFFD_01
+000000000FDEED86_41AFBDDB0C000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_43EE7FFFFFFFF7FF_01
+000000005DA3FF45_41D768FFD1400000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_43EFFFFFFFE00020_01
+000000009B1BCB54_41E363796A800000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+027DD19DE6563714_4383EE8CEF32B1B8_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_43EFF80000000800_01
+000000000003A359_410D1AC800000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+000000003E62EC20_41CF317610000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000685F_40DA17C000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_43EFFFFFFFF7FFFE_01
+00000836F99DBAA8_42A06DF33B755000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0073466832042D47_435CD19A0C810B51_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_43EFFFFFFFFFFFFF_01
+00000000007829C8_415E0A7200000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000001FB77C672B_423FB77C672B0000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFBFFFFFF_01
+0000000000005B78_40D6DE0000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_43EFEFFFFFFFFDFB_01
+00000000000000F1_406E200000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+0000000000000006_4018000000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+0008A60D9E19F17E_43214C1B3C33E2FC_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+0000000007506DBA_419D41B6E8000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_43EFFFFFFFFFFFDF_01
+0000000006A42AC9_419A90AB24000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+0007AA3F2BDACC89_431EA8FCAF6B3224_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_43EFFF0080000080_00
+0000000000000005_4014000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_43EFFFF000010000_01
+000DF681DECDADC9_432BED03BD9B5B92_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_43EFFFFFDFFFFC00_01
+0000000000004FBE_40D3EF8000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+00C01FECA24DE1B0_436803FD9449BC36_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_43EEFFFFFFFBFFEF_01
+0058A66761669936_43562999D859A64D_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_43EFFFDFF0000000_01
+0716EA43FAC45C97_439C5BA90FEB1172_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_43EFFFFFFFFFFFFF_01
+0064D70EC7661FD8_435935C3B1D987F6_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_43E80FFFFFFFFFFF_01
+00D956DBD0AEE817_436B2ADB7A15DD02_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F7FFFFFFF_01
+0000000000004300_40D0C00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+012EDF40F41F6021_4372EDF40F41F602_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_43EFF20000000000_01
+000000383DE950F6_424C1EF4A87B0000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_43E000007FFFFF80_00
+002B59CB3A604D69_4345ACE59D3026B4_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFEF_01
+000001A37C210862_427A37C210862000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+0000365CD8617789_42CB2E6C30BBC480_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+000000000000101D_40B01D0000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B000008000003F_01
+000000001D098D19_41BD098D19000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFAF_01
+000016B3BD2C7BEF_42B6B3BD2C7BEF00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+00004E5ADDDAA4A8_42D396B776A92A00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+0000000000000721_409C840000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+0000000000648262_4159209880000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_43E80003FFFFFFFF_01
+0000007353AC45D2_425CD4EB11748000_00
+8000000000000000_43E0000000000000_00
+FFFFFFFFFFE7EFFF_43EFFFFFFFFFFCFD_01
+0000000001A1202D_417A1202D0000000_00
+C000000000000000_43E8000000000000_00
+FFFFFFFFFFFF5F7F_43EFFFFFFFFFFFEB_01
+0000000000C0CA70_4168194E00000000_00
+E000000000000000_43EC000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000007B55D87D4_421ED5761F500000_00
+F000000000000000_43EE000000000000_00
+FF80000DFFFFFFFF_43EFF00001BFFFFF_01
+000000090510FAEF_42220A21F5DE0000_00
+F800000000000000_43EF000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000001724A_40F724A000000000_00
+FC00000000000000_43EF800000000000_00
+FFFFFFDF80000002_43EFFFFFFBF00000_01
+00000000000000E4_406C800000000000_00
+FE00000000000000_43EFC00000000000_00
+FEFFFFFFFFF800FE_43EFDFFFFFFFFF00_01
+00000002C6222702_4206311138100000_00
+FF00000000000000_43EFE00000000000_00
+0000000408000002_4210200000080000_00
+000002E96DF1CB41_42874B6F8E5A0800_00
+FF80000000000000_43EFF00000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE7F_01
+0727F174DEE7DC85_439C9FC5D37B9F72_01
+FFC0000000000000_43EFF80000000000_00
+8000000003FFFEFE_43E0000000007FFF_01
+000000000010BD5B_4130BD5B00000000_00
+FFE0000000000000_43EFFC0000000000_00
+0BEFFFFFFFFFFFFF_43A7DFFFFFFFFFFF_01
+000000000022790C_41413C8600000000_00
+FFF0000000000000_43EFFE0000000000_00
+FFFFFFFFFFEFFBFA_43EFFFFFFFFFFDFF_01
+000000369E75DF01_424B4F3AEF808000_00
+FFF8000000000000_43EFFF0000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000001E_403E000000000000_00
+FFFC000000000000_43EFFF8000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+0000000000328622_4149431100000000_00
+FFFE000000000000_43EFFFC000000000_00
+FFFFFF7FFFFDF7FF_43EFFFFFEFFFFFBE_01
+00172F0EC496FE21_43372F0EC496FE21_00
+FFFF000000000000_43EFFFE000000000_00
+DFBFFFFFFFFFFFFE_43EBF7FFFFFFFFFF_01
+0000000004FC1FCA_4193F07F28000000_00
+FFFF800000000000_43EFFFF000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+000F5194E4A9C2CE_432EA329C953859C_00
+FFFFC00000000000_43EFFFF800000000_00
+00000002100007FD_420080003FE80000_00
+000000000002D8FE_4106C7F000000000_00
+FFFFE00000000000_43EFFFFC00000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000003766E_410BB37000000000_00
+FFFFF00000000000_43EFFFFE00000000_00
+0040000400000002_4350000100000000_01
+000000000000F841_40EF082000000000_00
+FFFFF80000000000_43EFFFFF00000000_00
+3DFFFFFFFFFFFF7E_43CEFFFFFFFFFFFF_01
+0000000549E17E30_42152785F8C00000_00
+FFFFFC0000000000_43EFFFFF80000000_00
+FFFFFFFFFFFFFEE1_43EFFFFFFFFFFFFF_01
+0000000000000027_4043800000000000_00
+FFFFFE0000000000_43EFFFFFC0000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+0000000000000373_408B980000000000_00
+FFFFFF0000000000_43EFFFFFE0000000_00
+FD00000008000000_43EFA00000010000_00
+000000000005DBB1_41176EC400000000_00
+FFFFFF8000000000_43EFFFFFF0000000_00
+FFFFFFFFFFF8007F_43EFFFFFFFFFFF00_01
+00000002FD10A515_4207E88528A80000_00
+FFFFFFC000000000_43EFFFFFF8000000_00
+FFEFFFFFFFFFFFFE_43EFFDFFFFFFFFFF_01
+0AB02984F6283B6C_43A5605309EC5076_01
+FFFFFFE000000000_43EFFFFFFC000000_00
+FFFFFFBC000001FE_43EFFFFFF7800000_01
+00B087C6B9FE7FE0_436610F8D73FCFFC_00
+FFFFFFF000000000_43EFFFFFFE000000_00
+FFF80001000007FE_43EFFF0000200000_01
+01F2762EA6837956_437F2762EA683795_01
+FFFFFFF800000000_43EFFFFFFF000000_00
+FFF7E0FFFFFFFFFE_43EFFEFC1FFFFFFF_01
+00022E1175484626_4301708BAA423130_00
+FFFFFFFC00000000_43EFFFFFFF800000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000168F_40B68F0000000000_00
+FFFFFFFE00000000_43EFFFFFFFC00000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFDFFF_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFF00000000_43EFFFFFFFE00000_00
+FFFFFFD0000FFFFD_43EFFFFFFA0001FF_01
+000001BDF6658B83_427BDF6658B83000_00
+FFFFFFFF80000000_43EFFFFFFFF00000_00
+1000001FFDFFFFFF_43B000001FFDFFFF_01
+000000000000BB5B_40E76B6000000000_00
+FFFFFFFFC0000000_43EFFFFFFFF80000_00
+FFFFFFBFFE0FFFFF_43EFFFFFF7FFC1FF_01
+0000000000000000_0000000000000000_00
+FFFFFFFFE0000000_43EFFFFFFFFC0000_00
+FFFFFFFBF00007FF_43EFFFFFFF7E0000_01
+01E986274F48EAAD_437E986274F48EAA_01
+FFFFFFFFF0000000_43EFFFFFFFFE0000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+000000000000CB5A_40E96B4000000000_00
+FFFFFFFFF8000000_43EFFFFFFFFF0000_00
+7FF000000000FFFF_43DFFC000000003F_01
+0000000BC2717FC3_422784E2FF860000_00
+FFFFFFFFFC000000_43EFFFFFFFFF8000_00
+FFFFFFE00008001F_43EFFFFFFC000100_01
+00000000000FABDA_412F57B400000000_00
+FFFFFFFFFE000000_43EFFFFFFFFFC000_00
+0200000000000002_4380000000000000_01
+0000000000FDA53F_416FB4A7E0000000_00
+FFFFFFFFFF000000_43EFFFFFFFFFE000_00
+F6000003FFFFFFFE_43EEC000007FFFFF_01
+0000000000000010_4030000000000000_00
+FFFFFFFFFF800000_43EFFFFFFFFFF000_00
+FFFFFFFFFFBFFF7E_43EFFFFFFFFFF7FF_01
+00000001EE0FEA62_41FEE0FEA6200000_00
+FFFFFFFFFFC00000_43EFFFFFFFFFF800_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000077F35EDC1D_425DFCD7B7074000_00
+FFFFFFFFFFE00000_43EFFFFFFFFFFC00_00
+FFFFFFF7FDFFFF7D_43EFFFFFFEFFBFFF_01
+00000000000003AD_408D680000000000_00
+FFFFFFFFFFF00000_43EFFFFFFFFFFE00_00
+FFFFFF0000100020_43EFFFFFE0000200_01
+67F167FBC7FC5F9A_43D9FC59FEF1FF17_01
+FFFFFFFFFFF80000_43EFFFFFFFFFFF00_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+002E48F9F4EBD30E_4347247CFA75E987_00
+FFFFFFFFFFFC0000_43EFFFFFFFFFFF80_00
+DFFFFFFFFFFBFFFE_43EBFFFFFFFFFF7F_01
+0091C23EE8C9424F_43623847DD192849_01
+FFFFFFFFFFFE0000_43EFFFFFFFFFFFC0_00
+F7DFFBFFFFFFFFFE_43EEFBFF7FFFFFFF_01
+00000000ACAE080C_41E595C101800000_00
+FFFFFFFFFFFF0000_43EFFFFFFFFFFFE0_00
+FFFFC00010000020_43EFFFF800020000_01
+0CD921F917B20E40_43A9B243F22F641C_01
+FFFFFFFFFFFF8000_43EFFFFFFFFFFFF0_00
+F8000FFFFFFFFFFD_43EF0001FFFFFFFF_01
+00017C566BC7D811_42F7C566BC7D8110_00
+FFFFFFFFFFFFC000_43EFFFFFFFFFFFF8_00
+00000000000000FE_406FC00000000000_00
+00F82AC14930D386_436F055829261A70_01
+FFFFFFFFFFFFE000_43EFFFFFFFFFFFFC_00
+00000000000003FC_408FE00000000000_00
+008E62EC60E119FC_4361CC5D8C1C233F_01
+FFFFFFFFFFFFF000_43EFFFFFFFFFFFFE_00
+FFFFEFF7FF7FFFFE_43EFFFFDFEFFEFFF_01
+1E2B1ECF210EEDC5_43BE2B1ECF210EED_01
+FFFFFFFFFFFFF800_43EFFFFFFFFFFFFF_00
+00000000007FFF1F_415FFFC7C0000000_00
+000006534F5676F7_42994D3D59DBDC00_00
+FFFFFFFFFFFFFC00_43EFFFFFFFFFFFFF_01
+0000001004FFFFFD_423004FFFFFD0000_00
+0000435C939669F1_42D0D724E59A7C40_00
+FFFFFFFFFFFFFE00_43EFFFFFFFFFFFFF_01
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFD_01
+0000000000000011_4031000000000000_00
+FFFFFFFFFFFFFF00_43EFFFFFFFFFFFFF_01
+01FFFFFFFBFFEFFE_437FFFFFFFBFFEFF_01
+000000000000036E_408B700000000000_00
+FFFFFFFFFFFFFF80_43EFFFFFFFFFFFFF_01
+FFF7FFFFFFFFF7FD_43EFFEFFFFFFFFFE_01
+000038E2BCFAC553_42CC715E7D62A980_00
+FFFFFFFFFFFFFFC0_43EFFFFFFFFFFFFF_01
+FFFFFBFFFFFE0FFE_43EFFFFF7FFFFFC1_01
+00000009A4E704BF_422349CE097E0000_00
+FFFFFFFFFFFFFFE0_43EFFFFFFFFFFFFF_01
+1400007FFFFFFFFD_43B400007FFFFFFF_01
+0000000093B187B4_41E27630F6800000_00
+FFFFFFFFFFFFFFF0_43EFFFFFFFFFFFFF_01
+40000000007FFFFD_43D0000000001FFF_01
+0000000000E7D468_416CFA8D00000000_00
+FFFFFFFFFFFFFFF8_43EFFFFFFFFFFFFF_01
+007FFEFFFFFBFFFE_435FFFBFFFFEFFFF_01
+000000026CEC79F8_42036763CFC00000_00
+FFFFFFFFFFFFFFFC_43EFFFFFFFFFFFFF_01
+00FFFFFF000000FF_436FFFFFE000001F_01
+0000000000D3983A_416A730740000000_00
+FFFFFFFFFFFFFFFE_43EFFFFFFFFFFFFF_01
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+00000001F4A7088A_41FF4A7088A00000_00
+FFFFFFFFFFFFFFFF_43EFFFFFFFFFFFFF_01
+000008000000027E_42A000000004FC00_00
+000000000001F4E8_40FF4E8000000000_00
+FFFFFFFFFFFFFFFD_43EFFFFFFFFFFFFF_01
+FFFFFFFFFF83FFDF_43EFFFFFFFFFF07F_01
+00001E11407887B2_42BE11407887B200_00
+FFFFFFFFFFFFFFFB_43EFFFFFFFFFFFFF_01
+04000003FFFFFFF6_439000000FFFFFFF_01
+0000000000000D13_40AA260000000000_00
+FFFFFFFFFFFFFFF7_43EFFFFFFFFFFFFF_01
+BFFC00000000003E_43E7FF8000000000_01
+00000028D7BBB75B_42446BDDDBAD8000_00
+FFFFFFFFFFFFFFEF_43EFFFFFFFFFFFFF_01
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+0000000000CD5A23_4169AB4460000000_00
+FFFFFFFFFFFFFFDF_43EFFFFFFFFFFFFF_01
+FFBFDFFFBFFFFFFF_43EFF7FBFFF7FFFF_01
+00000000000000FF_406FE00000000000_00
+FFFFFFFFFFFFFFBF_43EFFFFFFFFFFFFF_01
+00000007FF800003_421FFE00000C0000_00
+00000000000ABB02_4125760400000000_00
+FFFFFFFFFFFFFF7F_43EFFFFFFFFFFFFF_01
+FFFFFFFFFFFEE7FF_43EFFFFFFFFFFFDC_01
+00664B2B9BAD0DA2_435992CAE6EB4368_01
+FFFFFFFFFFFFFEFF_43EFFFFFFFFFFFFF_01
+0000000000100803_4130080300000000_00
+009B1DCB9F857D5E_436363B973F0AFAB_01
+FFFFFFFFFFFFFDFF_43EFFFFFFFFFFFFF_01
+FFFFFFBFFFFFEFEE_43EFFFFFF7FFFFFD_01
+36FD7542899C1C6F_43CB7EBAA144CE0E_01
+FFFFFFFFFFFFFBFF_43EFFFFFFFFFFFFF_01
+FF800000004001FF_43EFF00000000800_01
+0000000006BE4932_419AF924C8000000_00
+FFFFFFFFFFFFF7FF_43EFFFFFFFFFFFFE_01
+00001004000FFFFE_42B004000FFFFE00_00
+0000001DAA0123E0_423DAA0123E00000_00
+FFFFFFFFFFFFEFFF_43EFFFFFFFFFFFFD_01
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+00001C8703B1DCB0_42BC8703B1DCB000_00
+FFFFFFFFFFFFDFFF_43EFFFFFFFFFFFFB_01
+FE0FE00000000000_43EFC1FC00000000_00
+0F79ED944A4E2779_43AEF3DB28949C4E_01
+FFFFFFFFFFFFBFFF_43EFFFFFFFFFFFF7_01
+FBFFFE0400000000_43EF7FFFC0800000_00
+0000030127E03666_4288093F01B33000_00
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFEF_01
+FFFFF0200000FFFE_43EFFFFE0400001F_01
+000000000000017F_4077F00000000000_00
+FFFFFFFFFFFEFFFF_43EFFFFFFFFFFFDF_01
+FFEFFE0000080000_43EFFDFFC0000100_00
+00000000013354EA_4173354EA0000000_00
+FFFFFFFFFFFDFFFF_43EFFFFFFFFFFFBF_01
+003FF0000003FFFE_434FF8000001FFFF_00
+0000016375B23F7B_4276375B23F7B000_00
+FFFFFFFFFFFBFFFF_43EFFFFFFFFFFF7F_01
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000192117F38_41F92117F3800000_00
+FFFFFFFFFFF7FFFF_43EFFFFFFFFFFEFF_01
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFEF_01
+00000000000018BE_40B8BE0000000000_00
+FFFFFFFFFFEFFFFF_43EFFFFFFFFFFDFF_01
+004000020FFFFFFF_4350000083FFFFFF_01
+0000B84C2D8BC9CB_42E70985B1793960_00
+FFFFFFFFFFDFFFFF_43EFFFFFFFFFFBFF_01
+00FFFFFFFFFFFFFD_436FFFFFFFFFFFFF_01
+00000223C2C6F284_42811E1637942000_00
+FFFFFFFFFFBFFFFF_43EFFFFFFFFFF7FF_01
+FFFDDFFFFFFFFFFD_43EFFFBBFFFFFFFF_01
+00000000F46356C4_41EE8C6AD8800000_00
+FFFFFFFFFF7FFFFF_43EFFFFFFFFFEFFF_01
+010000000000BFFF_4370000000000BFF_01
+0000000000000005_4014000000000000_00
+FFFFFFFFFEFFFFFF_43EFFFFFFFFFDFFF_01
+FFFFBF7FFBFFFFFE_43EFFFF7EFFF7FFF_01
+00000026386CE889_42431C3674448000_00
+FFFFFFFFFDFFFFFF_43EFFFFFFFFFBFFF_01
+F00000F7FFFFFFFF_43EE00001EFFFFFF_01
+0001FC53090C46A4_42FFC53090C46A40_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF7FFF_01
+0000000000800047_41600008E0000000_00
+000000001693872E_41B693872E000000_00
+FFFFFFFFF7FFFFFF_43EFFFFFFFFEFFFF_01
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000226A7845E35_4281353C22F1A800_00
+FFFFFFFFEFFFFFFF_43EFFFFFFFFDFFFF_01
+FFFFFFDFFFFFFBFD_43EFFFFFFBFFFFFF_01
+000000005433D14C_41D50CF453000000_00
+FFFFFFFFDFFFFFFF_43EFFFFFFFFBFFFF_01
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+00F23E8068D3D84A_436E47D00D1A7B09_01
+FFFFFFFFBFFFFFFF_43EFFFFFFFF7FFFF_01
+F7FFBFFFFFFFBFFF_43EEFFF7FFFFFFF7_01
+0000BD29B7459087_42E7A536E8B210E0_00
+FFFFFFFF7FFFFFFF_43EFFFFFFFEFFFFF_01
+FFFFFFF8FFFFBFFF_43EFFFFFFF1FFFF7_01
+00000000002DDC06_4146EE0300000000_00
+FFFFFFFEFFFFFFFF_43EFFFFFFFDFFFFF_01
+FFFFFFF80001FFFF_43EFFFFFFF00003F_01
+0000000000012FF9_40F2FF9000000000_00
+FFFFFFFDFFFFFFFF_43EFFFFFFFBFFFFF_01
+004000040000FFFF_4350000100003FFF_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFBFFFFFFFF_43EFFFFFFF7FFFFF_01
+C0000000007FFFFA_43E8000000000FFF_01
+0000000006053E2B_419814F8AC000000_00
+FFFFFFF7FFFFFFFF_43EFFFFFFEFFFFFF_01
+7FFE000007FFFFFF_43DFFF800001FFFF_01
+000000000000002D_4046800000000000_00
+FFFFFFEFFFFFFFFF_43EFFFFFFDFFFFFF_01
+F80000000001007E_43EF000000000020_01
+00000D48424AD9D6_42AA908495B3AC00_00
+FFFFFFDFFFFFFFFF_43EFFFFFFBFFFFFF_01
+FFFFFE0001FEFFFF_43EFFFFFC0003FDF_01
+000000000000033B_4089D80000000000_00
+FFFFFFBFFFFFFFFF_43EFFFFFF7FFFFFF_01
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_43EFFFFFEFFFFFFF_01
+00FFF7FFFF7FFFFE_436FFEFFFFEFFFFF_01
+0000000000000086_4060C00000000000_00
+FFFFFEFFFFFFFFFF_43EFFFFFDFFFFFFF_01
+FBFFFFBFFFBFFFFF_43EF7FFFF7FFF7FF_01
+00000000000021BA_40C0DD0000000000_00
+FFFFFDFFFFFFFFFF_43EFFFFFBFFFFFFF_01
+0000000040000082_41D0000020800000_00
+0007A2BF5B689F89_431E8AFD6DA27E24_00
+FFFFFBFFFFFFFFFF_43EFFFFF7FFFFFFF_01
+0000001FF8000008_423FF80000080000_00
+387CAA7DE672DE8B_43CC3E553EF3396F_01
+FFFFF7FFFFFFFFFF_43EFFFFEFFFFFFFF_01
+07FFF80000000002_439FFFE000000000_01
+0000000030A1E5B8_41C850F2DC000000_00
+FFFFEFFFFFFFFFFF_43EFFFFDFFFFFFFF_01
+F7FFFFE00007FFFF_43EEFFFFFC0000FF_01
+000000000006ADFC_411AB7F000000000_00
+FFFFDFFFFFFFFFFF_43EFFFFBFFFFFFFF_01
+FFFFFF03FFFFFFC0_43EFFFFFE07FFFFF_01
+0A579475948F0032_43A4AF28EB291E00_01
+FFFFBFFFFFFFFFFF_43EFFFF7FFFFFFFF_01
+FC00000000003FF6_43EF800000000007_01
+00AE677AC313BF60_4365CCEF586277EC_00
+FFFF7FFFFFFFFFFF_43EFFFEFFFFFFFFF_01
+02000007FF7FFFFF_438000003FFBFFFF_01
+0000002E999639F1_42474CCB1CF88000_00
+FFFEFFFFFFFFFFFF_43EFFFDFFFFFFFFF_01
+FFFF83FFFFFFFFBE_43EFFFF07FFFFFFF_01
+000000000003537D_410A9BE800000000_00
+FFFDFFFFFFFFFFFF_43EFFFBFFFFFFFFF_01
+EFFFFFC00000003D_43EDFFFFF8000000_01
+000000121FEDFD35_42321FEDFD350000_00
+FFFBFFFFFFFFFFFF_43EFFF7FFFFFFFFF_01
+FFFFFFF0000007FE_43EFFFFFFE000000_01
+00000000001E0839_413E083900000000_00
+FFF7FFFFFFFFFFFF_43EFFEFFFFFFFFFF_01
+0000007FFFE000FF_425FFFF8003FC000_00
+0000000079F30F48_41DE7CC3D2000000_00
+FFEFFFFFFFFFFFFF_43EFFDFFFFFFFFFF_01
+FFFFFC13FFFFFFFD_43EFFFFF827FFFFF_01
+0000000000003B85_40CDC28000000000_00
+FFDFFFFFFFFFFFFF_43EFFBFFFFFFFFFF_01
+000008000007FFFE_42A000000FFFFC00_00
+32DB4409E5AE87E6_43C96DA204F2D743_01
+FFBFFFFFFFFFFFFF_43EFF7FFFFFFFFFF_01
+FFFFFFFFFFF7BFEE_43EFFFFFFFFFFEF7_01
+000000000000003D_404E800000000000_00
+FF7FFFFFFFFFFFFF_43EFEFFFFFFFFFFF_01
+000000001040FFFE_41B040FFFE000000_00
+00004909A09C13D3_42D242682704F4C0_00
+FEFFFFFFFFFFFFFF_43EFDFFFFFFFFFFF_01
+FFFFFF01FFFFFF7F_43EFFFFFE03FFFFF_01
+00000072E7D2575D_425CB9F495D74000_00
+FDFFFFFFFFFFFFFF_43EFBFFFFFFFFFFF_01
+FFFFFFFFFFFEFFDB_43EFFFFFFFFFFFDF_01
+0000000000000057_4055C00000000000_00
+FBFFFFFFFFFFFFFF_43EF7FFFFFFFFFFF_01
+100000001FFFFFF6_43B00000001FFFFF_01
+000000914B12EF51_426229625DEA2000_00
+F7FFFFFFFFFFFFFF_43EEFFFFFFFFFFFF_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFB_01
+000000769F3A5C2C_425DA7CE970B0000_00
+EFFFFFFFFFFFFFFF_43EDFFFFFFFFFFFF_01
+FFFFFFFDF7FFFFFD_43EFFFFFFFBEFFFF_01
+0000000000000002_4000000000000000_00
+DFFFFFFFFFFFFFFF_43EBFFFFFFFFFFFF_01
+FFFFFFFFFE0007FF_43EFFFFFFFFFC000_01
+000000000000009E_4063C00000000000_00
+BFFFFFFFFFFFFFFF_43E7FFFFFFFFFFFF_01
+FFF800000009FFFF_43EFFF000000013F_01
+0000000000087AA4_4120F54800000000_00
+7FFFFFFFFFFFFFFF_43DFFFFFFFFFFFFF_01
+4080000000FFFFFF_43D0200000003FFF_01
+000000001DE7601D_41BDE7601D000000_00
+3FFFFFFFFFFFFFFF_43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE_43EFF9FFFFFFF7FF_01
+000000000000004A_4052800000000000_00
+1FFFFFFFFFFFFFFF_43BFFFFFFFFFFFFF_01
+000080400000003F_42E00800000007E0_00
+00000000003F75A5_414FBAD280000000_00
+0FFFFFFFFFFFFFFF_43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE_43EFFFFFFDFFFFF9_01
+000000E775887420_426CEEB10E840000_00
+07FFFFFFFFFFFFFF_439FFFFFFFFFFFFF_01
+00000000000801FE_412003FC00000000_00
+0000000000A13FF1_416427FE20000000_00
+03FFFFFFFFFFFFFF_438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE_439FFBFFFFFFFFFF_01
+000000000000000C_4028000000000000_00
+01FFFFFFFFFFFFFF_437FFFFFFFFFFFFF_01
+0000000820000003_4220400000060000_00
+00000001AD105214_41FAD10521400000_00
+00FFFFFFFFFFFFFF_436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE_43EFFFFE01FFFFFF_01
+0000000000CC48E7_4169891CE0000000_00
+007FFFFFFFFFFFFF_435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+00000000000BA6CB_41274D9600000000_00
+003FFFFFFFFFFFFF_434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF_43EFFFFFEFF7FFFF_01
+0000000000024425_4102212800000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFDFF_01
+0000004E7115EC53_42539C457B14C000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_43EFFFFF007FFFFF_01
+0000002E539ADCFE_424729CD6E7F0000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF7FFF_01
+000000D5084732F3_426AA108E65E6000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_43E7FFEFFFFFFFFF_01
+0000000000000543_40950C0000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+000000000000491B_40D246C000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_43EF800400000003_01
+0000016898822A24_4276898822A24000_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF81FFFFFFFF_01
+0000000FFE18C7BF_422FFC318F7E0000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_43EFFFFFDFFFDFFF_01
+02F03620C1266ED9_438781B106093376_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_43E7EFDFFFFFFFFF_01
+0000000000000055_4055400000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_43EFFF7FFFFF007F_01
+0000000000168684_4136868400000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_43EBFFFFFC000000_01
+0000000000000CF5_40A9EA0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_43EFFFE00800001F_01
+0000000000000022_4041000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_43EF7FFFFFFFFFF7_01
+0000000000001BC9_40BBC90000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_43E00FFFFFFFFFFB_01
+000274E35A70CD76_4303A71AD3866BB0_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFDFFFF_01
+0000000300E73AFC_42080739D7E00000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_43EFF80000000020_01
+00000000000615E9_411857A400000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+00000000000000B3_4066600000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+0000006E6B141E1B_425B9AC50786C000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_43EFFFFFFFFEC000_01
+00000003AB310BA6_420D59885D300000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+0000000000000195_4079500000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_43EFFFFFFFF00000_01
+00000059BA8D5559_42566EA355564000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_43EF7FDFFFFFFFFF_01
+000001B6F062822D_427B6F062822D000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+03CEAD9E2FB104A4_438E756CF17D8825_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+000000000D681E78_41AAD03CF0000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000058_4056000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+0000000000000095_4062A00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000BFFFFFFFF_01
+0000009697087B19_4262D2E10F632000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_43EF7FFFFFFFFDDF_01
+0000001E64BDFC55_423E64BDFC550000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_43EF800000003FFF_01
+0000D156A62AB849_42EA2AD4C5570920_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_43EFFFFFFF07FDFF_01
+00035354EAE7C259_430A9AA7573E12C8_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_43EFFFFFFFFFFFFF_01
+00000000F4DF3C75_41EE9BE78EA00000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_43EFFF4000000003_01
+0000000000000003_4008000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_43EFFFFFFFFFEFFF_01
+0000005B5433CB9B_4256D50CF2E6C000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_43EFFFFFBFFBFFBF_01
+0000000000DEAE1F_416BD5C3E0000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_43EFFFFFFFFE0100_01
+000000007735DEC7_41DDCD77B1C00000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000007757D8B12ED_429DD5F62C4BB400_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_43EFFFFFC0FEFFFF_01
+00002A654064E046_42C532A032702300_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A000000000002F_01
+0000000000000007_401C000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF7_01
+00002D78B3D6C3B6_42C6BC59EB61DB00_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+000000070B77F34F_421C2DDFCD3C0000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_43EFFFFFF0000DFF_01
+0000093EB4D67EC8_42A27D69ACFD9000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_43E7FFFBFFFF7FFF_01
+0205CEAF34EA1DC7_43802E7579A750EE_01
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+0000000000000003_4008000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000760D0_411D834000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_437003FFFFFFFFFF_01
+02C000708FF1BA51_43860003847F8DD2_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_43EF004000007FFF_01
+4F9E07DCC0BDC061_43D3E781F7302F70_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000007_01
+00000001B9B2A079_41FB9B2A07900000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_43EFFF0000000010_01
+00000000005EB5B4_4157AD6D00000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+0000000000DAC607_416B58C0E0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_43EFFFFFFFDF0000_01
+00000DC5B9D66984_42AB8B73ACD30800_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_43E8003FFFFFFE00_00
+00003D06B372AA06_42CE8359B9550300_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f64_rne.tv b/wally-pipelined/testbench/fp/ui64_f64_rne.tv
new file mode 100644
index 000000000..ef22e12a4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f64_rne.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFE_01
+0000000072CC8B7A_41DCB322DE800000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_43EFFFFFFFF80008_01
+072C857F319EDE38_439CB215FCC67B79_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_43EFFFFF7FFFFF00_01
+00794C79B6D3007B_435E531E6DB4C01F_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_43EF7FFFFE000000_01
+0000000005AE458D_4196B91634000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+09EB456140D88764_43A3D68AC281B10F_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_43EFFFFC80200000_01
+27DE834A248EDF36_43C3EF41A5124770_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+00000000000385E2_410C2F1000000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_43EE008400000000_01
+000000159EB1FD45_42359EB1FD450000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_43EFFFFFFFFFFFA0_01
+000000000002DDFE_4106EFF000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000002C89FF56B_420644FFAB580000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+3B5E4F0BE0DEBFF0_43CDAF2785F06F60_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_43EFFFBF00800000_01
+000000000004766B_4111D9AC00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000002C_4046000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+07E662A109109D0A_439F998A84244274_01
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_43E8000000070000_01
+0000000000000064_4059000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_43EF002000000200_00
+02114B79075F70EE_43808A5BC83AFB87_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+0000000000000BAC_40A7580000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+000000C4A3A3DBE5_426894747B7CA000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_43EFFC0007E00000_01
+0000000000001A91_40BA910000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_43EFFFFEF8800000_01
+0000000000007309_40DCC24000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+0000000000000F58_40AEB00000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_43EFFFFFFBC04000_01
+0000000000006980_40DA600000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+00000000000000DD_406BA00000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+00008C23DA2CEAD8_42E1847B459D5B00_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_43EC000000000800_01
+00000DE3C1DEC43C_42ABC783BD887800_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_43EFFFE000018000_01
+000000008030FFBE_41E0061FF7C00000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_43EFFFC00000FFFE_01
+000000000FDEED86_41AFBDDB0C000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_43EE7FFFFFFFF800_01
+000000005DA3FF45_41D768FFD1400000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_43EFFFFFFFE00020_01
+000000009B1BCB54_41E363796A800000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+027DD19DE6563714_4383EE8CEF32B1B9_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_43EFF80000000801_01
+000000000003A359_410D1AC800000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+000000003E62EC20_41CF317610000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000685F_40DA17C000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_43EFFFFFFFF7FFFE_01
+00000836F99DBAA8_42A06DF33B755000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0073466832042D47_435CD19A0C810B52_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_43EFFFFFFFFFFFFF_01
+00000000007829C8_415E0A7200000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000001FB77C672B_423FB77C672B0000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFC000000_01
+0000000000005B78_40D6DE0000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_43EFEFFFFFFFFDFC_01
+00000000000000F1_406E200000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+0000000000000006_4018000000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+0008A60D9E19F17E_43214C1B3C33E2FC_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+0000000007506DBA_419D41B6E8000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_43EFFFFFFFFFFFDF_01
+0000000006A42AC9_419A90AB24000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+0007AA3F2BDACC89_431EA8FCAF6B3224_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_43EFFF0080000080_00
+0000000000000005_4014000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_43EFFFF000010000_01
+000DF681DECDADC9_432BED03BD9B5B92_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_43EFFFFFDFFFFC00_01
+0000000000004FBE_40D3EF8000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+00C01FECA24DE1B0_436803FD9449BC36_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_43EEFFFFFFFBFFF0_01
+0058A66761669936_43562999D859A64E_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_43EFFFDFF0000000_01
+0716EA43FAC45C97_439C5BA90FEB1172_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_43F0000000000000_01
+0064D70EC7661FD8_435935C3B1D987F6_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_43E8100000000000_01
+00D956DBD0AEE817_436B2ADB7A15DD03_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F80000000_01
+0000000000004300_40D0C00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+012EDF40F41F6021_4372EDF40F41F602_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_43EFF20000000000_01
+000000383DE950F6_424C1EF4A87B0000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_43E000007FFFFF80_00
+002B59CB3A604D69_4345ACE59D3026B4_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFF0_01
+000001A37C210862_427A37C210862000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+0000365CD8617789_42CB2E6C30BBC480_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+000000000000101D_40B01D0000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B0000080000040_01
+000000001D098D19_41BD098D19000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFB0_01
+000016B3BD2C7BEF_42B6B3BD2C7BEF00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+00004E5ADDDAA4A8_42D396B776A92A00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+0000000000000721_409C840000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+0000000000648262_4159209880000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_43E8000400000000_01
+0000007353AC45D2_425CD4EB11748000_00
+8000000000000000_43E0000000000000_00
+FFFFFFFFFFE7EFFF_43EFFFFFFFFFFCFE_01
+0000000001A1202D_417A1202D0000000_00
+C000000000000000_43E8000000000000_00
+FFFFFFFFFFFF5F7F_43EFFFFFFFFFFFEC_01
+0000000000C0CA70_4168194E00000000_00
+E000000000000000_43EC000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000007B55D87D4_421ED5761F500000_00
+F000000000000000_43EE000000000000_00
+FF80000DFFFFFFFF_43EFF00001C00000_01
+000000090510FAEF_42220A21F5DE0000_00
+F800000000000000_43EF000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000001724A_40F724A000000000_00
+FC00000000000000_43EF800000000000_00
+FFFFFFDF80000002_43EFFFFFFBF00000_01
+00000000000000E4_406C800000000000_00
+FE00000000000000_43EFC00000000000_00
+FEFFFFFFFFF800FE_43EFDFFFFFFFFF00_01
+00000002C6222702_4206311138100000_00
+FF00000000000000_43EFE00000000000_00
+0000000408000002_4210200000080000_00
+000002E96DF1CB41_42874B6F8E5A0800_00
+FF80000000000000_43EFF00000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE80_01
+0727F174DEE7DC85_439C9FC5D37B9F72_01
+FFC0000000000000_43EFF80000000000_00
+8000000003FFFEFE_43E0000000008000_01
+000000000010BD5B_4130BD5B00000000_00
+FFE0000000000000_43EFFC0000000000_00
+0BEFFFFFFFFFFFFF_43A7E00000000000_01
+000000000022790C_41413C8600000000_00
+FFF0000000000000_43EFFE0000000000_00
+FFFFFFFFFFEFFBFA_43EFFFFFFFFFFDFF_01
+000000369E75DF01_424B4F3AEF808000_00
+FFF8000000000000_43EFFF0000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000001E_403E000000000000_00
+FFFC000000000000_43EFFF8000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+0000000000328622_4149431100000000_00
+FFFE000000000000_43EFFFC000000000_00
+FFFFFF7FFFFDF7FF_43EFFFFFEFFFFFBF_01
+00172F0EC496FE21_43372F0EC496FE21_00
+FFFF000000000000_43EFFFE000000000_00
+DFBFFFFFFFFFFFFE_43EBF80000000000_01
+0000000004FC1FCA_4193F07F28000000_00
+FFFF800000000000_43EFFFF000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+000F5194E4A9C2CE_432EA329C953859C_00
+FFFFC00000000000_43EFFFF800000000_00
+00000002100007FD_420080003FE80000_00
+000000000002D8FE_4106C7F000000000_00
+FFFFE00000000000_43EFFFFC00000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000003766E_410BB37000000000_00
+FFFFF00000000000_43EFFFFE00000000_00
+0040000400000002_4350000100000000_01
+000000000000F841_40EF082000000000_00
+FFFFF80000000000_43EFFFFF00000000_00
+3DFFFFFFFFFFFF7E_43CF000000000000_01
+0000000549E17E30_42152785F8C00000_00
+FFFFFC0000000000_43EFFFFF80000000_00
+FFFFFFFFFFFFFEE1_43F0000000000000_01
+0000000000000027_4043800000000000_00
+FFFFFE0000000000_43EFFFFFC0000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+0000000000000373_408B980000000000_00
+FFFFFF0000000000_43EFFFFFE0000000_00
+FD00000008000000_43EFA00000010000_00
+000000000005DBB1_41176EC400000000_00
+FFFFFF8000000000_43EFFFFFF0000000_00
+FFFFFFFFFFF8007F_43EFFFFFFFFFFF00_01
+00000002FD10A515_4207E88528A80000_00
+FFFFFFC000000000_43EFFFFFF8000000_00
+FFEFFFFFFFFFFFFE_43EFFE0000000000_01
+0AB02984F6283B6C_43A5605309EC5077_01
+FFFFFFE000000000_43EFFFFFFC000000_00
+FFFFFFBC000001FE_43EFFFFFF7800000_01
+00B087C6B9FE7FE0_436610F8D73FCFFC_00
+FFFFFFF000000000_43EFFFFFFE000000_00
+FFF80001000007FE_43EFFF0000200001_01
+01F2762EA6837956_437F2762EA683795_01
+FFFFFFF800000000_43EFFFFFFF000000_00
+FFF7E0FFFFFFFFFE_43EFFEFC20000000_01
+00022E1175484626_4301708BAA423130_00
+FFFFFFFC00000000_43EFFFFFFF800000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000168F_40B68F0000000000_00
+FFFFFFFE00000000_43EFFFFFFFC00000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFE000_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFF00000000_43EFFFFFFFE00000_00
+FFFFFFD0000FFFFD_43EFFFFFFA000200_01
+000001BDF6658B83_427BDF6658B83000_00
+FFFFFFFF80000000_43EFFFFFFFF00000_00
+1000001FFDFFFFFF_43B000001FFE0000_01
+000000000000BB5B_40E76B6000000000_00
+FFFFFFFFC0000000_43EFFFFFFFF80000_00
+FFFFFFBFFE0FFFFF_43EFFFFFF7FFC200_01
+0000000000000000_0000000000000000_00
+FFFFFFFFE0000000_43EFFFFFFFFC0000_00
+FFFFFFFBF00007FF_43EFFFFFFF7E0001_01
+01E986274F48EAAD_437E986274F48EAB_01
+FFFFFFFFF0000000_43EFFFFFFFFE0000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+000000000000CB5A_40E96B4000000000_00
+FFFFFFFFF8000000_43EFFFFFFFFF0000_00
+7FF000000000FFFF_43DFFC0000000040_01
+0000000BC2717FC3_422784E2FF860000_00
+FFFFFFFFFC000000_43EFFFFFFFFF8000_00
+FFFFFFE00008001F_43EFFFFFFC000100_01
+00000000000FABDA_412F57B400000000_00
+FFFFFFFFFE000000_43EFFFFFFFFFC000_00
+0200000000000002_4380000000000000_01
+0000000000FDA53F_416FB4A7E0000000_00
+FFFFFFFFFF000000_43EFFFFFFFFFE000_00
+F6000003FFFFFFFE_43EEC00000800000_01
+0000000000000010_4030000000000000_00
+FFFFFFFFFF800000_43EFFFFFFFFFF000_00
+FFFFFFFFFFBFFF7E_43EFFFFFFFFFF800_01
+00000001EE0FEA62_41FEE0FEA6200000_00
+FFFFFFFFFFC00000_43EFFFFFFFFFF800_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000077F35EDC1D_425DFCD7B7074000_00
+FFFFFFFFFFE00000_43EFFFFFFFFFFC00_00
+FFFFFFF7FDFFFF7D_43EFFFFFFEFFC000_01
+00000000000003AD_408D680000000000_00
+FFFFFFFFFFF00000_43EFFFFFFFFFFE00_00
+FFFFFF0000100020_43EFFFFFE0000200_01
+67F167FBC7FC5F9A_43D9FC59FEF1FF18_01
+FFFFFFFFFFF80000_43EFFFFFFFFFFF00_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+002E48F9F4EBD30E_4347247CFA75E987_00
+FFFFFFFFFFFC0000_43EFFFFFFFFFFF80_00
+DFFFFFFFFFFBFFFE_43EBFFFFFFFFFF80_01
+0091C23EE8C9424F_43623847DD19284A_01
+FFFFFFFFFFFE0000_43EFFFFFFFFFFFC0_00
+F7DFFBFFFFFFFFFE_43EEFBFF80000000_01
+00000000ACAE080C_41E595C101800000_00
+FFFFFFFFFFFF0000_43EFFFFFFFFFFFE0_00
+FFFFC00010000020_43EFFFF800020000_01
+0CD921F917B20E40_43A9B243F22F641C_01
+FFFFFFFFFFFF8000_43EFFFFFFFFFFFF0_00
+F8000FFFFFFFFFFD_43EF000200000000_01
+00017C566BC7D811_42F7C566BC7D8110_00
+FFFFFFFFFFFFC000_43EFFFFFFFFFFFF8_00
+00000000000000FE_406FC00000000000_00
+00F82AC14930D386_436F055829261A71_01
+FFFFFFFFFFFFE000_43EFFFFFFFFFFFFC_00
+00000000000003FC_408FE00000000000_00
+008E62EC60E119FC_4361CC5D8C1C2340_01
+FFFFFFFFFFFFF000_43EFFFFFFFFFFFFE_00
+FFFFEFF7FF7FFFFE_43EFFFFDFEFFF000_01
+1E2B1ECF210EEDC5_43BE2B1ECF210EEE_01
+FFFFFFFFFFFFF800_43EFFFFFFFFFFFFF_00
+00000000007FFF1F_415FFFC7C0000000_00
+000006534F5676F7_42994D3D59DBDC00_00
+FFFFFFFFFFFFFC00_43F0000000000000_01
+0000001004FFFFFD_423004FFFFFD0000_00
+0000435C939669F1_42D0D724E59A7C40_00
+FFFFFFFFFFFFFE00_43F0000000000000_01
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFE_01
+0000000000000011_4031000000000000_00
+FFFFFFFFFFFFFF00_43F0000000000000_01
+01FFFFFFFBFFEFFE_437FFFFFFFBFFF00_01
+000000000000036E_408B700000000000_00
+FFFFFFFFFFFFFF80_43F0000000000000_01
+FFF7FFFFFFFFF7FD_43EFFEFFFFFFFFFF_01
+000038E2BCFAC553_42CC715E7D62A980_00
+FFFFFFFFFFFFFFC0_43F0000000000000_01
+FFFFFBFFFFFE0FFE_43EFFFFF7FFFFFC2_01
+00000009A4E704BF_422349CE097E0000_00
+FFFFFFFFFFFFFFE0_43F0000000000000_01
+1400007FFFFFFFFD_43B4000080000000_01
+0000000093B187B4_41E27630F6800000_00
+FFFFFFFFFFFFFFF0_43F0000000000000_01
+40000000007FFFFD_43D0000000002000_01
+0000000000E7D468_416CFA8D00000000_00
+FFFFFFFFFFFFFFF8_43F0000000000000_01
+007FFEFFFFFBFFFE_435FFFBFFFFF0000_01
+000000026CEC79F8_42036763CFC00000_00
+FFFFFFFFFFFFFFFC_43F0000000000000_01
+00FFFFFF000000FF_436FFFFFE0000020_01
+0000000000D3983A_416A730740000000_00
+FFFFFFFFFFFFFFFE_43F0000000000000_01
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+00000001F4A7088A_41FF4A7088A00000_00
+FFFFFFFFFFFFFFFF_43F0000000000000_01
+000008000000027E_42A000000004FC00_00
+000000000001F4E8_40FF4E8000000000_00
+FFFFFFFFFFFFFFFD_43F0000000000000_01
+FFFFFFFFFF83FFDF_43EFFFFFFFFFF080_01
+00001E11407887B2_42BE11407887B200_00
+FFFFFFFFFFFFFFFB_43F0000000000000_01
+04000003FFFFFFF6_4390000010000000_01
+0000000000000D13_40AA260000000000_00
+FFFFFFFFFFFFFFF7_43F0000000000000_01
+BFFC00000000003E_43E7FF8000000000_01
+00000028D7BBB75B_42446BDDDBAD8000_00
+FFFFFFFFFFFFFFEF_43F0000000000000_01
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+0000000000CD5A23_4169AB4460000000_00
+FFFFFFFFFFFFFFDF_43F0000000000000_01
+FFBFDFFFBFFFFFFF_43EFF7FBFFF80000_01
+00000000000000FF_406FE00000000000_00
+FFFFFFFFFFFFFFBF_43F0000000000000_01
+00000007FF800003_421FFE00000C0000_00
+00000000000ABB02_4125760400000000_00
+FFFFFFFFFFFFFF7F_43F0000000000000_01
+FFFFFFFFFFFEE7FF_43EFFFFFFFFFFFDD_01
+00664B2B9BAD0DA2_435992CAE6EB4368_01
+FFFFFFFFFFFFFEFF_43F0000000000000_01
+0000000000100803_4130080300000000_00
+009B1DCB9F857D5E_436363B973F0AFAC_01
+FFFFFFFFFFFFFDFF_43F0000000000000_01
+FFFFFFBFFFFFEFEE_43EFFFFFF7FFFFFE_01
+36FD7542899C1C6F_43CB7EBAA144CE0E_01
+FFFFFFFFFFFFFBFF_43EFFFFFFFFFFFFF_01
+FF800000004001FF_43EFF00000000800_01
+0000000006BE4932_419AF924C8000000_00
+FFFFFFFFFFFFF7FF_43EFFFFFFFFFFFFF_01
+00001004000FFFFE_42B004000FFFFE00_00
+0000001DAA0123E0_423DAA0123E00000_00
+FFFFFFFFFFFFEFFF_43EFFFFFFFFFFFFE_01
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+00001C8703B1DCB0_42BC8703B1DCB000_00
+FFFFFFFFFFFFDFFF_43EFFFFFFFFFFFFC_01
+FE0FE00000000000_43EFC1FC00000000_00
+0F79ED944A4E2779_43AEF3DB28949C4F_01
+FFFFFFFFFFFFBFFF_43EFFFFFFFFFFFF8_01
+FBFFFE0400000000_43EF7FFFC0800000_00
+0000030127E03666_4288093F01B33000_00
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFF0_01
+FFFFF0200000FFFE_43EFFFFE04000020_01
+000000000000017F_4077F00000000000_00
+FFFFFFFFFFFEFFFF_43EFFFFFFFFFFFE0_01
+FFEFFE0000080000_43EFFDFFC0000100_00
+00000000013354EA_4173354EA0000000_00
+FFFFFFFFFFFDFFFF_43EFFFFFFFFFFFC0_01
+003FF0000003FFFE_434FF8000001FFFF_00
+0000016375B23F7B_4276375B23F7B000_00
+FFFFFFFFFFFBFFFF_43EFFFFFFFFFFF80_01
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000192117F38_41F92117F3800000_00
+FFFFFFFFFFF7FFFF_43EFFFFFFFFFFF00_01
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFF0_01
+00000000000018BE_40B8BE0000000000_00
+FFFFFFFFFFEFFFFF_43EFFFFFFFFFFE00_01
+004000020FFFFFFF_4350000084000000_01
+0000B84C2D8BC9CB_42E70985B1793960_00
+FFFFFFFFFFDFFFFF_43EFFFFFFFFFFC00_01
+00FFFFFFFFFFFFFD_4370000000000000_01
+00000223C2C6F284_42811E1637942000_00
+FFFFFFFFFFBFFFFF_43EFFFFFFFFFF800_01
+FFFDDFFFFFFFFFFD_43EFFFBC00000000_01
+00000000F46356C4_41EE8C6AD8800000_00
+FFFFFFFFFF7FFFFF_43EFFFFFFFFFF000_01
+010000000000BFFF_4370000000000C00_01
+0000000000000005_4014000000000000_00
+FFFFFFFFFEFFFFFF_43EFFFFFFFFFE000_01
+FFFFBF7FFBFFFFFE_43EFFFF7EFFF8000_01
+00000026386CE889_42431C3674448000_00
+FFFFFFFFFDFFFFFF_43EFFFFFFFFFC000_01
+F00000F7FFFFFFFF_43EE00001F000000_01
+0001FC53090C46A4_42FFC53090C46A40_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF8000_01
+0000000000800047_41600008E0000000_00
+000000001693872E_41B693872E000000_00
+FFFFFFFFF7FFFFFF_43EFFFFFFFFF0000_01
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000226A7845E35_4281353C22F1A800_00
+FFFFFFFFEFFFFFFF_43EFFFFFFFFE0000_01
+FFFFFFDFFFFFFBFD_43EFFFFFFBFFFFFF_01
+000000005433D14C_41D50CF453000000_00
+FFFFFFFFDFFFFFFF_43EFFFFFFFFC0000_01
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+00F23E8068D3D84A_436E47D00D1A7B09_01
+FFFFFFFFBFFFFFFF_43EFFFFFFFF80000_01
+F7FFBFFFFFFFBFFF_43EEFFF7FFFFFFF8_01
+0000BD29B7459087_42E7A536E8B210E0_00
+FFFFFFFF7FFFFFFF_43EFFFFFFFF00000_01
+FFFFFFF8FFFFBFFF_43EFFFFFFF1FFFF8_01
+00000000002DDC06_4146EE0300000000_00
+FFFFFFFEFFFFFFFF_43EFFFFFFFE00000_01
+FFFFFFF80001FFFF_43EFFFFFFF000040_01
+0000000000012FF9_40F2FF9000000000_00
+FFFFFFFDFFFFFFFF_43EFFFFFFFC00000_01
+004000040000FFFF_4350000100004000_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFBFFFFFFFF_43EFFFFFFF800000_01
+C0000000007FFFFA_43E8000000001000_01
+0000000006053E2B_419814F8AC000000_00
+FFFFFFF7FFFFFFFF_43EFFFFFFF000000_01
+7FFE000007FFFFFF_43DFFF8000020000_01
+000000000000002D_4046800000000000_00
+FFFFFFEFFFFFFFFF_43EFFFFFFE000000_01
+F80000000001007E_43EF000000000020_01
+00000D48424AD9D6_42AA908495B3AC00_00
+FFFFFFDFFFFFFFFF_43EFFFFFFC000000_01
+FFFFFE0001FEFFFF_43EFFFFFC0003FE0_01
+000000000000033B_4089D80000000000_00
+FFFFFFBFFFFFFFFF_43EFFFFFF8000000_01
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_43EFFFFFF0000000_01
+00FFF7FFFF7FFFFE_436FFEFFFFF00000_01
+0000000000000086_4060C00000000000_00
+FFFFFEFFFFFFFFFF_43EFFFFFE0000000_01
+FBFFFFBFFFBFFFFF_43EF7FFFF7FFF800_01
+00000000000021BA_40C0DD0000000000_00
+FFFFFDFFFFFFFFFF_43EFFFFFC0000000_01
+0000000040000082_41D0000020800000_00
+0007A2BF5B689F89_431E8AFD6DA27E24_00
+FFFFFBFFFFFFFFFF_43EFFFFF80000000_01
+0000001FF8000008_423FF80000080000_00
+387CAA7DE672DE8B_43CC3E553EF3396F_01
+FFFFF7FFFFFFFFFF_43EFFFFF00000000_01
+07FFF80000000002_439FFFE000000000_01
+0000000030A1E5B8_41C850F2DC000000_00
+FFFFEFFFFFFFFFFF_43EFFFFE00000000_01
+F7FFFFE00007FFFF_43EEFFFFFC000100_01
+000000000006ADFC_411AB7F000000000_00
+FFFFDFFFFFFFFFFF_43EFFFFC00000000_01
+FFFFFF03FFFFFFC0_43EFFFFFE0800000_01
+0A579475948F0032_43A4AF28EB291E00_01
+FFFFBFFFFFFFFFFF_43EFFFF800000000_01
+FC00000000003FF6_43EF800000000008_01
+00AE677AC313BF60_4365CCEF586277EC_00
+FFFF7FFFFFFFFFFF_43EFFFF000000000_01
+02000007FF7FFFFF_438000003FFC0000_01
+0000002E999639F1_42474CCB1CF88000_00
+FFFEFFFFFFFFFFFF_43EFFFE000000000_01
+FFFF83FFFFFFFFBE_43EFFFF080000000_01
+000000000003537D_410A9BE800000000_00
+FFFDFFFFFFFFFFFF_43EFFFC000000000_01
+EFFFFFC00000003D_43EDFFFFF8000000_01
+000000121FEDFD35_42321FEDFD350000_00
+FFFBFFFFFFFFFFFF_43EFFF8000000000_01
+FFFFFFF0000007FE_43EFFFFFFE000001_01
+00000000001E0839_413E083900000000_00
+FFF7FFFFFFFFFFFF_43EFFF0000000000_01
+0000007FFFE000FF_425FFFF8003FC000_00
+0000000079F30F48_41DE7CC3D2000000_00
+FFEFFFFFFFFFFFFF_43EFFE0000000000_01
+FFFFFC13FFFFFFFD_43EFFFFF82800000_01
+0000000000003B85_40CDC28000000000_00
+FFDFFFFFFFFFFFFF_43EFFC0000000000_01
+000008000007FFFE_42A000000FFFFC00_00
+32DB4409E5AE87E6_43C96DA204F2D744_01
+FFBFFFFFFFFFFFFF_43EFF80000000000_01
+FFFFFFFFFFF7BFEE_43EFFFFFFFFFFEF8_01
+000000000000003D_404E800000000000_00
+FF7FFFFFFFFFFFFF_43EFF00000000000_01
+000000001040FFFE_41B040FFFE000000_00
+00004909A09C13D3_42D242682704F4C0_00
+FEFFFFFFFFFFFFFF_43EFE00000000000_01
+FFFFFF01FFFFFF7F_43EFFFFFE0400000_01
+00000072E7D2575D_425CB9F495D74000_00
+FDFFFFFFFFFFFFFF_43EFC00000000000_01
+FFFFFFFFFFFEFFDB_43EFFFFFFFFFFFE0_01
+0000000000000057_4055C00000000000_00
+FBFFFFFFFFFFFFFF_43EF800000000000_01
+100000001FFFFFF6_43B0000000200000_01
+000000914B12EF51_426229625DEA2000_00
+F7FFFFFFFFFFFFFF_43EF000000000000_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFC_01
+000000769F3A5C2C_425DA7CE970B0000_00
+EFFFFFFFFFFFFFFF_43EE000000000000_01
+FFFFFFFDF7FFFFFD_43EFFFFFFFBF0000_01
+0000000000000002_4000000000000000_00
+DFFFFFFFFFFFFFFF_43EC000000000000_01
+FFFFFFFFFE0007FF_43EFFFFFFFFFC001_01
+000000000000009E_4063C00000000000_00
+BFFFFFFFFFFFFFFF_43E8000000000000_01
+FFF800000009FFFF_43EFFF0000000140_01
+0000000000087AA4_4120F54800000000_00
+7FFFFFFFFFFFFFFF_43E0000000000000_01
+4080000000FFFFFF_43D0200000004000_01
+000000001DE7601D_41BDE7601D000000_00
+3FFFFFFFFFFFFFFF_43D0000000000000_01
+FFCFFFFFFFBFFFFE_43EFF9FFFFFFF800_01
+000000000000004A_4052800000000000_00
+1FFFFFFFFFFFFFFF_43C0000000000000_01
+000080400000003F_42E00800000007E0_00
+00000000003F75A5_414FBAD280000000_00
+0FFFFFFFFFFFFFFF_43B0000000000000_01
+FFFFFFEFFFFFCFFE_43EFFFFFFDFFFFFA_01
+000000E775887420_426CEEB10E840000_00
+07FFFFFFFFFFFFFF_43A0000000000000_01
+00000000000801FE_412003FC00000000_00
+0000000000A13FF1_416427FE20000000_00
+03FFFFFFFFFFFFFF_4390000000000000_01
+07FEFFFFFFFFFFEE_439FFC0000000000_01
+000000000000000C_4028000000000000_00
+01FFFFFFFFFFFFFF_4380000000000000_01
+0000000820000003_4220400000060000_00
+00000001AD105214_41FAD10521400000_00
+00FFFFFFFFFFFFFF_4370000000000000_01
+FFFFF00FFFFFFFBE_43EFFFFE02000000_01
+0000000000CC48E7_4169891CE0000000_00
+007FFFFFFFFFFFFF_4360000000000000_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+00000000000BA6CB_41274D9600000000_00
+003FFFFFFFFFFFFF_4350000000000000_01
+FFFFFF7FBFFFFFBF_43EFFFFFEFF80000_01
+0000000000024425_4102212800000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFE00_01
+0000004E7115EC53_42539C457B14C000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_43EFFFFF00800000_01
+0000002E539ADCFE_424729CD6E7F0000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF8000_01
+000000D5084732F3_426AA108E65E6000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_43E7FFF000000000_01
+0000000000000543_40950C0000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+000000000000491B_40D246C000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_43EF800400000004_01
+0000016898822A24_4276898822A24000_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF8200000000_01
+0000000FFE18C7BF_422FFC318F7E0000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_43EFFFFFDFFFE000_01
+02F03620C1266ED9_438781B106093377_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_43E7EFE000000000_01
+0000000000000055_4055400000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_43EFFF7FFFFF0080_01
+0000000000168684_4136868400000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_43EBFFFFFC000000_01
+0000000000000CF5_40A9EA0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_43EFFFE008000020_01
+0000000000000022_4041000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_43EF7FFFFFFFFFF8_01
+0000000000001BC9_40BBC90000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_43E00FFFFFFFFFFC_01
+000274E35A70CD76_4303A71AD3866BB0_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFE0000_01
+0000000300E73AFC_42080739D7E00000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_43EFF80000000020_01
+00000000000615E9_411857A400000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+00000000000000B3_4066600000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+0000006E6B141E1B_425B9AC50786C000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_43EFFFFFFFFEC001_01
+00000003AB310BA6_420D59885D300000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+0000000000000195_4079500000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_43EFFFFFFFF00000_01
+00000059BA8D5559_42566EA355564000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_43EF7FE000000000_01
+000001B6F062822D_427B6F062822D000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+03CEAD9E2FB104A4_438E756CF17D8825_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+000000000D681E78_41AAD03CF0000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000058_4056000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+0000000000000095_4062A00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000C00000000_01
+0000009697087B19_4262D2E10F632000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_43EF7FFFFFFFFDE0_01
+0000001E64BDFC55_423E64BDFC550000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_43EF800000004000_01
+0000D156A62AB849_42EA2AD4C5570920_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_43EFFFFFFF07FE00_01
+00035354EAE7C259_430A9AA7573E12C8_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_43F0000000000000_01
+00000000F4DF3C75_41EE9BE78EA00000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_43EFFF4000000004_01
+0000000000000003_4008000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_43EFFFFFFFFFF000_01
+0000005B5433CB9B_4256D50CF2E6C000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_43EFFFFFBFFBFFC0_01
+0000000000DEAE1F_416BD5C3E0000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_43EFFFFFFFFE0100_01
+000000007735DEC7_41DDCD77B1C00000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000007757D8B12ED_429DD5F62C4BB400_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_43EFFFFFC0FF0000_01
+00002A654064E046_42C532A032702300_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A0000000000030_01
+0000000000000007_401C000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF8_01
+00002D78B3D6C3B6_42C6BC59EB61DB00_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+000000070B77F34F_421C2DDFCD3C0000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_43EFFFFFF0000E00_01
+0000093EB4D67EC8_42A27D69ACFD9000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_43E7FFFBFFFF8000_01
+0205CEAF34EA1DC7_43802E7579A750EE_01
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+0000000000000003_4008000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000760D0_411D834000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_4370040000000000_01
+02C000708FF1BA51_43860003847F8DD3_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_43EF004000008000_01
+4F9E07DCC0BDC061_43D3E781F7302F70_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000008_01
+00000001B9B2A079_41FB9B2A07900000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_43EFFF0000000010_01
+00000000005EB5B4_4157AD6D00000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+0000000000DAC607_416B58C0E0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_43EFFFFFFFDF0000_01
+00000DC5B9D66984_42AB8B73ACD30800_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_43E8003FFFFFFE00_00
+00003D06B372AA06_42CE8359B9550300_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f64_ru.tv b/wally-pipelined/testbench/fp/ui64_f64_ru.tv
new file mode 100644
index 000000000..9be55fa73
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f64_ru.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFE_01
+0000000072CC8B7A_41DCB322DE800000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_43EFFFFFFFF80008_01
+072C857F319EDE38_439CB215FCC67B79_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_43EFFFFF7FFFFF01_01
+00794C79B6D3007B_435E531E6DB4C01F_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_43EF7FFFFE000001_01
+0000000005AE458D_4196B91634000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+09EB456140D88764_43A3D68AC281B10F_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_43EFFFFC80200000_01
+27DE834A248EDF36_43C3EF41A5124770_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+00000000000385E2_410C2F1000000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_43EE008400000000_01
+000000159EB1FD45_42359EB1FD450000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_43EFFFFFFFFFFFA0_01
+000000000002DDFE_4106EFF000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000002C89FF56B_420644FFAB580000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+3B5E4F0BE0DEBFF0_43CDAF2785F06F60_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_43EFFFBF00800000_01
+000000000004766B_4111D9AC00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000002C_4046000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+07E662A109109D0A_439F998A84244275_01
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_43E8000000070000_01
+0000000000000064_4059000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_43EF002000000200_00
+02114B79075F70EE_43808A5BC83AFB88_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000101_01
+0000000000000BAC_40A7580000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+000000C4A3A3DBE5_426894747B7CA000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_43EFFC0007E00000_01
+0000000000001A91_40BA910000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_43EFFFFEF8800000_01
+0000000000007309_40DCC24000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+0000000000000F58_40AEB00000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_43EFFFFFFBC04000_01
+0000000000006980_40DA600000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+00000000000000DD_406BA00000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+00008C23DA2CEAD8_42E1847B459D5B00_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_43EC000000000800_01
+00000DE3C1DEC43C_42ABC783BD887800_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_43EFFFE000018000_01
+000000008030FFBE_41E0061FF7C00000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_43EFFFC00000FFFE_01
+000000000FDEED86_41AFBDDB0C000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_43EE7FFFFFFFF800_01
+000000005DA3FF45_41D768FFD1400000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_43EFFFFFFFE00021_01
+000000009B1BCB54_41E363796A800000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+027DD19DE6563714_4383EE8CEF32B1B9_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_43EFF80000000801_01
+000000000003A359_410D1AC800000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+000000003E62EC20_41CF317610000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000685F_40DA17C000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_43EFFFFFFFF7FFFF_01
+00000836F99DBAA8_42A06DF33B755000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0073466832042D47_435CD19A0C810B52_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_43F0000000000000_01
+00000000007829C8_415E0A7200000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000001FB77C672B_423FB77C672B0000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFC000000_01
+0000000000005B78_40D6DE0000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_43EFEFFFFFFFFDFC_01
+00000000000000F1_406E200000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+0000000000000006_4018000000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+0008A60D9E19F17E_43214C1B3C33E2FC_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+0000000007506DBA_419D41B6E8000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_43EFFFFFFFFFFFE0_01
+0000000006A42AC9_419A90AB24000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+0007AA3F2BDACC89_431EA8FCAF6B3224_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_43EFFF0080000080_00
+0000000000000005_4014000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_43EFFFF000010001_01
+000DF681DECDADC9_432BED03BD9B5B92_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_43EFFFFFDFFFFC01_01
+0000000000004FBE_40D3EF8000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+00C01FECA24DE1B0_436803FD9449BC36_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_43EEFFFFFFFBFFF0_01
+0058A66761669936_43562999D859A64E_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_43EFFFDFF0000001_01
+0716EA43FAC45C97_439C5BA90FEB1173_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_43F0000000000000_01
+0064D70EC7661FD8_435935C3B1D987F6_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_43E8100000000000_01
+00D956DBD0AEE817_436B2ADB7A15DD03_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F80000000_01
+0000000000004300_40D0C00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+012EDF40F41F6021_4372EDF40F41F603_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_43EFF20000000001_01
+000000383DE950F6_424C1EF4A87B0000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_43E000007FFFFF80_00
+002B59CB3A604D69_4345ACE59D3026B5_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFF0_01
+000001A37C210862_427A37C210862000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+0000365CD8617789_42CB2E6C30BBC480_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+000000000000101D_40B01D0000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B0000080000040_01
+000000001D098D19_41BD098D19000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFB0_01
+000016B3BD2C7BEF_42B6B3BD2C7BEF00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+00004E5ADDDAA4A8_42D396B776A92A00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+0000000000000721_409C840000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+0000000000648262_4159209880000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_43E8000400000000_01
+0000007353AC45D2_425CD4EB11748000_00
+8000000000000000_43E0000000000000_00
+FFFFFFFFFFE7EFFF_43EFFFFFFFFFFCFE_01
+0000000001A1202D_417A1202D0000000_00
+C000000000000000_43E8000000000000_00
+FFFFFFFFFFFF5F7F_43EFFFFFFFFFFFEC_01
+0000000000C0CA70_4168194E00000000_00
+E000000000000000_43EC000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000007B55D87D4_421ED5761F500000_00
+F000000000000000_43EE000000000000_00
+FF80000DFFFFFFFF_43EFF00001C00000_01
+000000090510FAEF_42220A21F5DE0000_00
+F800000000000000_43EF000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000001724A_40F724A000000000_00
+FC00000000000000_43EF800000000000_00
+FFFFFFDF80000002_43EFFFFFFBF00001_01
+00000000000000E4_406C800000000000_00
+FE00000000000000_43EFC00000000000_00
+FEFFFFFFFFF800FE_43EFDFFFFFFFFF01_01
+00000002C6222702_4206311138100000_00
+FF00000000000000_43EFE00000000000_00
+0000000408000002_4210200000080000_00
+000002E96DF1CB41_42874B6F8E5A0800_00
+FF80000000000000_43EFF00000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE80_01
+0727F174DEE7DC85_439C9FC5D37B9F73_01
+FFC0000000000000_43EFF80000000000_00
+8000000003FFFEFE_43E0000000008000_01
+000000000010BD5B_4130BD5B00000000_00
+FFE0000000000000_43EFFC0000000000_00
+0BEFFFFFFFFFFFFF_43A7E00000000000_01
+000000000022790C_41413C8600000000_00
+FFF0000000000000_43EFFE0000000000_00
+FFFFFFFFFFEFFBFA_43EFFFFFFFFFFE00_01
+000000369E75DF01_424B4F3AEF808000_00
+FFF8000000000000_43EFFF0000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000001E_403E000000000000_00
+FFFC000000000000_43EFFF8000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+0000000000328622_4149431100000000_00
+FFFE000000000000_43EFFFC000000000_00
+FFFFFF7FFFFDF7FF_43EFFFFFEFFFFFBF_01
+00172F0EC496FE21_43372F0EC496FE21_00
+FFFF000000000000_43EFFFE000000000_00
+DFBFFFFFFFFFFFFE_43EBF80000000000_01
+0000000004FC1FCA_4193F07F28000000_00
+FFFF800000000000_43EFFFF000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+000F5194E4A9C2CE_432EA329C953859C_00
+FFFFC00000000000_43EFFFF800000000_00
+00000002100007FD_420080003FE80000_00
+000000000002D8FE_4106C7F000000000_00
+FFFFE00000000000_43EFFFFC00000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000003766E_410BB37000000000_00
+FFFFF00000000000_43EFFFFE00000000_00
+0040000400000002_4350000100000001_01
+000000000000F841_40EF082000000000_00
+FFFFF80000000000_43EFFFFF00000000_00
+3DFFFFFFFFFFFF7E_43CF000000000000_01
+0000000549E17E30_42152785F8C00000_00
+FFFFFC0000000000_43EFFFFF80000000_00
+FFFFFFFFFFFFFEE1_43F0000000000000_01
+0000000000000027_4043800000000000_00
+FFFFFE0000000000_43EFFFFFC0000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+0000000000000373_408B980000000000_00
+FFFFFF0000000000_43EFFFFFE0000000_00
+FD00000008000000_43EFA00000010000_00
+000000000005DBB1_41176EC400000000_00
+FFFFFF8000000000_43EFFFFFF0000000_00
+FFFFFFFFFFF8007F_43EFFFFFFFFFFF01_01
+00000002FD10A515_4207E88528A80000_00
+FFFFFFC000000000_43EFFFFFF8000000_00
+FFEFFFFFFFFFFFFE_43EFFE0000000000_01
+0AB02984F6283B6C_43A5605309EC5077_01
+FFFFFFE000000000_43EFFFFFFC000000_00
+FFFFFFBC000001FE_43EFFFFFF7800001_01
+00B087C6B9FE7FE0_436610F8D73FCFFC_00
+FFFFFFF000000000_43EFFFFFFE000000_00
+FFF80001000007FE_43EFFF0000200001_01
+01F2762EA6837956_437F2762EA683796_01
+FFFFFFF800000000_43EFFFFFFF000000_00
+FFF7E0FFFFFFFFFE_43EFFEFC20000000_01
+00022E1175484626_4301708BAA423130_00
+FFFFFFFC00000000_43EFFFFFFF800000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000168F_40B68F0000000000_00
+FFFFFFFE00000000_43EFFFFFFFC00000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFE000_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFF00000000_43EFFFFFFFE00000_00
+FFFFFFD0000FFFFD_43EFFFFFFA000200_01
+000001BDF6658B83_427BDF6658B83000_00
+FFFFFFFF80000000_43EFFFFFFFF00000_00
+1000001FFDFFFFFF_43B000001FFE0000_01
+000000000000BB5B_40E76B6000000000_00
+FFFFFFFFC0000000_43EFFFFFFFF80000_00
+FFFFFFBFFE0FFFFF_43EFFFFFF7FFC200_01
+0000000000000000_0000000000000000_00
+FFFFFFFFE0000000_43EFFFFFFFFC0000_00
+FFFFFFFBF00007FF_43EFFFFFFF7E0001_01
+01E986274F48EAAD_437E986274F48EAB_01
+FFFFFFFFF0000000_43EFFFFFFFFE0000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFE000000_01
+000000000000CB5A_40E96B4000000000_00
+FFFFFFFFF8000000_43EFFFFFFFFF0000_00
+7FF000000000FFFF_43DFFC0000000040_01
+0000000BC2717FC3_422784E2FF860000_00
+FFFFFFFFFC000000_43EFFFFFFFFF8000_00
+FFFFFFE00008001F_43EFFFFFFC000101_01
+00000000000FABDA_412F57B400000000_00
+FFFFFFFFFE000000_43EFFFFFFFFFC000_00
+0200000000000002_4380000000000001_01
+0000000000FDA53F_416FB4A7E0000000_00
+FFFFFFFFFF000000_43EFFFFFFFFFE000_00
+F6000003FFFFFFFE_43EEC00000800000_01
+0000000000000010_4030000000000000_00
+FFFFFFFFFF800000_43EFFFFFFFFFF000_00
+FFFFFFFFFFBFFF7E_43EFFFFFFFFFF800_01
+00000001EE0FEA62_41FEE0FEA6200000_00
+FFFFFFFFFFC00000_43EFFFFFFFFFF800_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000077F35EDC1D_425DFCD7B7074000_00
+FFFFFFFFFFE00000_43EFFFFFFFFFFC00_00
+FFFFFFF7FDFFFF7D_43EFFFFFFEFFC000_01
+00000000000003AD_408D680000000000_00
+FFFFFFFFFFF00000_43EFFFFFFFFFFE00_00
+FFFFFF0000100020_43EFFFFFE0000201_01
+67F167FBC7FC5F9A_43D9FC59FEF1FF18_01
+FFFFFFFFFFF80000_43EFFFFFFFFFFF00_00
+003FFFFFFFFC0001_434FFFFFFFFE0001_01
+002E48F9F4EBD30E_4347247CFA75E987_00
+FFFFFFFFFFFC0000_43EFFFFFFFFFFF80_00
+DFFFFFFFFFFBFFFE_43EBFFFFFFFFFF80_01
+0091C23EE8C9424F_43623847DD19284A_01
+FFFFFFFFFFFE0000_43EFFFFFFFFFFFC0_00
+F7DFFBFFFFFFFFFE_43EEFBFF80000000_01
+00000000ACAE080C_41E595C101800000_00
+FFFFFFFFFFFF0000_43EFFFFFFFFFFFE0_00
+FFFFC00010000020_43EFFFF800020001_01
+0CD921F917B20E40_43A9B243F22F641D_01
+FFFFFFFFFFFF8000_43EFFFFFFFFFFFF0_00
+F8000FFFFFFFFFFD_43EF000200000000_01
+00017C566BC7D811_42F7C566BC7D8110_00
+FFFFFFFFFFFFC000_43EFFFFFFFFFFFF8_00
+00000000000000FE_406FC00000000000_00
+00F82AC14930D386_436F055829261A71_01
+FFFFFFFFFFFFE000_43EFFFFFFFFFFFFC_00
+00000000000003FC_408FE00000000000_00
+008E62EC60E119FC_4361CC5D8C1C2340_01
+FFFFFFFFFFFFF000_43EFFFFFFFFFFFFE_00
+FFFFEFF7FF7FFFFE_43EFFFFDFEFFF000_01
+1E2B1ECF210EEDC5_43BE2B1ECF210EEE_01
+FFFFFFFFFFFFF800_43EFFFFFFFFFFFFF_00
+00000000007FFF1F_415FFFC7C0000000_00
+000006534F5676F7_42994D3D59DBDC00_00
+FFFFFFFFFFFFFC00_43F0000000000000_01
+0000001004FFFFFD_423004FFFFFD0000_00
+0000435C939669F1_42D0D724E59A7C40_00
+FFFFFFFFFFFFFE00_43F0000000000000_01
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFE_01
+0000000000000011_4031000000000000_00
+FFFFFFFFFFFFFF00_43F0000000000000_01
+01FFFFFFFBFFEFFE_437FFFFFFFBFFF00_01
+000000000000036E_408B700000000000_00
+FFFFFFFFFFFFFF80_43F0000000000000_01
+FFF7FFFFFFFFF7FD_43EFFEFFFFFFFFFF_01
+000038E2BCFAC553_42CC715E7D62A980_00
+FFFFFFFFFFFFFFC0_43F0000000000000_01
+FFFFFBFFFFFE0FFE_43EFFFFF7FFFFFC2_01
+00000009A4E704BF_422349CE097E0000_00
+FFFFFFFFFFFFFFE0_43F0000000000000_01
+1400007FFFFFFFFD_43B4000080000000_01
+0000000093B187B4_41E27630F6800000_00
+FFFFFFFFFFFFFFF0_43F0000000000000_01
+40000000007FFFFD_43D0000000002000_01
+0000000000E7D468_416CFA8D00000000_00
+FFFFFFFFFFFFFFF8_43F0000000000000_01
+007FFEFFFFFBFFFE_435FFFBFFFFF0000_01
+000000026CEC79F8_42036763CFC00000_00
+FFFFFFFFFFFFFFFC_43F0000000000000_01
+00FFFFFF000000FF_436FFFFFE0000020_01
+0000000000D3983A_416A730740000000_00
+FFFFFFFFFFFFFFFE_43F0000000000000_01
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+00000001F4A7088A_41FF4A7088A00000_00
+FFFFFFFFFFFFFFFF_43F0000000000000_01
+000008000000027E_42A000000004FC00_00
+000000000001F4E8_40FF4E8000000000_00
+FFFFFFFFFFFFFFFD_43F0000000000000_01
+FFFFFFFFFF83FFDF_43EFFFFFFFFFF080_01
+00001E11407887B2_42BE11407887B200_00
+FFFFFFFFFFFFFFFB_43F0000000000000_01
+04000003FFFFFFF6_4390000010000000_01
+0000000000000D13_40AA260000000000_00
+FFFFFFFFFFFFFFF7_43F0000000000000_01
+BFFC00000000003E_43E7FF8000000001_01
+00000028D7BBB75B_42446BDDDBAD8000_00
+FFFFFFFFFFFFFFEF_43F0000000000000_01
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+0000000000CD5A23_4169AB4460000000_00
+FFFFFFFFFFFFFFDF_43F0000000000000_01
+FFBFDFFFBFFFFFFF_43EFF7FBFFF80000_01
+00000000000000FF_406FE00000000000_00
+FFFFFFFFFFFFFFBF_43F0000000000000_01
+00000007FF800003_421FFE00000C0000_00
+00000000000ABB02_4125760400000000_00
+FFFFFFFFFFFFFF7F_43F0000000000000_01
+FFFFFFFFFFFEE7FF_43EFFFFFFFFFFFDD_01
+00664B2B9BAD0DA2_435992CAE6EB4369_01
+FFFFFFFFFFFFFEFF_43F0000000000000_01
+0000000000100803_4130080300000000_00
+009B1DCB9F857D5E_436363B973F0AFAC_01
+FFFFFFFFFFFFFDFF_43F0000000000000_01
+FFFFFFBFFFFFEFEE_43EFFFFFF7FFFFFE_01
+36FD7542899C1C6F_43CB7EBAA144CE0F_01
+FFFFFFFFFFFFFBFF_43F0000000000000_01
+FF800000004001FF_43EFF00000000801_01
+0000000006BE4932_419AF924C8000000_00
+FFFFFFFFFFFFF7FF_43EFFFFFFFFFFFFF_01
+00001004000FFFFE_42B004000FFFFE00_00
+0000001DAA0123E0_423DAA0123E00000_00
+FFFFFFFFFFFFEFFF_43EFFFFFFFFFFFFE_01
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+00001C8703B1DCB0_42BC8703B1DCB000_00
+FFFFFFFFFFFFDFFF_43EFFFFFFFFFFFFC_01
+FE0FE00000000000_43EFC1FC00000000_00
+0F79ED944A4E2779_43AEF3DB28949C4F_01
+FFFFFFFFFFFFBFFF_43EFFFFFFFFFFFF8_01
+FBFFFE0400000000_43EF7FFFC0800000_00
+0000030127E03666_4288093F01B33000_00
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFF0_01
+FFFFF0200000FFFE_43EFFFFE04000020_01
+000000000000017F_4077F00000000000_00
+FFFFFFFFFFFEFFFF_43EFFFFFFFFFFFE0_01
+FFEFFE0000080000_43EFFDFFC0000100_00
+00000000013354EA_4173354EA0000000_00
+FFFFFFFFFFFDFFFF_43EFFFFFFFFFFFC0_01
+003FF0000003FFFE_434FF8000001FFFF_00
+0000016375B23F7B_4276375B23F7B000_00
+FFFFFFFFFFFBFFFF_43EFFFFFFFFFFF80_01
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000192117F38_41F92117F3800000_00
+FFFFFFFFFFF7FFFF_43EFFFFFFFFFFF00_01
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFF0_01
+00000000000018BE_40B8BE0000000000_00
+FFFFFFFFFFEFFFFF_43EFFFFFFFFFFE00_01
+004000020FFFFFFF_4350000084000000_01
+0000B84C2D8BC9CB_42E70985B1793960_00
+FFFFFFFFFFDFFFFF_43EFFFFFFFFFFC00_01
+00FFFFFFFFFFFFFD_4370000000000000_01
+00000223C2C6F284_42811E1637942000_00
+FFFFFFFFFFBFFFFF_43EFFFFFFFFFF800_01
+FFFDDFFFFFFFFFFD_43EFFFBC00000000_01
+00000000F46356C4_41EE8C6AD8800000_00
+FFFFFFFFFF7FFFFF_43EFFFFFFFFFF000_01
+010000000000BFFF_4370000000000C00_01
+0000000000000005_4014000000000000_00
+FFFFFFFFFEFFFFFF_43EFFFFFFFFFE000_01
+FFFFBF7FFBFFFFFE_43EFFFF7EFFF8000_01
+00000026386CE889_42431C3674448000_00
+FFFFFFFFFDFFFFFF_43EFFFFFFFFFC000_01
+F00000F7FFFFFFFF_43EE00001F000000_01
+0001FC53090C46A4_42FFC53090C46A40_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF8000_01
+0000000000800047_41600008E0000000_00
+000000001693872E_41B693872E000000_00
+FFFFFFFFF7FFFFFF_43EFFFFFFFFF0000_01
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000226A7845E35_4281353C22F1A800_00
+FFFFFFFFEFFFFFFF_43EFFFFFFFFE0000_01
+FFFFFFDFFFFFFBFD_43EFFFFFFC000000_01
+000000005433D14C_41D50CF453000000_00
+FFFFFFFFDFFFFFFF_43EFFFFFFFFC0000_01
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+00F23E8068D3D84A_436E47D00D1A7B0A_01
+FFFFFFFFBFFFFFFF_43EFFFFFFFF80000_01
+F7FFBFFFFFFFBFFF_43EEFFF7FFFFFFF8_01
+0000BD29B7459087_42E7A536E8B210E0_00
+FFFFFFFF7FFFFFFF_43EFFFFFFFF00000_01
+FFFFFFF8FFFFBFFF_43EFFFFFFF1FFFF8_01
+00000000002DDC06_4146EE0300000000_00
+FFFFFFFEFFFFFFFF_43EFFFFFFFE00000_01
+FFFFFFF80001FFFF_43EFFFFFFF000040_01
+0000000000012FF9_40F2FF9000000000_00
+FFFFFFFDFFFFFFFF_43EFFFFFFFC00000_01
+004000040000FFFF_4350000100004000_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFBFFFFFFFF_43EFFFFFFF800000_01
+C0000000007FFFFA_43E8000000001000_01
+0000000006053E2B_419814F8AC000000_00
+FFFFFFF7FFFFFFFF_43EFFFFFFF000000_01
+7FFE000007FFFFFF_43DFFF8000020000_01
+000000000000002D_4046800000000000_00
+FFFFFFEFFFFFFFFF_43EFFFFFFE000000_01
+F80000000001007E_43EF000000000021_01
+00000D48424AD9D6_42AA908495B3AC00_00
+FFFFFFDFFFFFFFFF_43EFFFFFFC000000_01
+FFFFFE0001FEFFFF_43EFFFFFC0003FE0_01
+000000000000033B_4089D80000000000_00
+FFFFFFBFFFFFFFFF_43EFFFFFF8000000_01
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0244_01
+FFFFFF7FFFFFFFFF_43EFFFFFF0000000_01
+00FFF7FFFF7FFFFE_436FFEFFFFF00000_01
+0000000000000086_4060C00000000000_00
+FFFFFEFFFFFFFFFF_43EFFFFFE0000000_01
+FBFFFFBFFFBFFFFF_43EF7FFFF7FFF800_01
+00000000000021BA_40C0DD0000000000_00
+FFFFFDFFFFFFFFFF_43EFFFFFC0000000_01
+0000000040000082_41D0000020800000_00
+0007A2BF5B689F89_431E8AFD6DA27E24_00
+FFFFFBFFFFFFFFFF_43EFFFFF80000000_01
+0000001FF8000008_423FF80000080000_00
+387CAA7DE672DE8B_43CC3E553EF33970_01
+FFFFF7FFFFFFFFFF_43EFFFFF00000000_01
+07FFF80000000002_439FFFE000000001_01
+0000000030A1E5B8_41C850F2DC000000_00
+FFFFEFFFFFFFFFFF_43EFFFFE00000000_01
+F7FFFFE00007FFFF_43EEFFFFFC000100_01
+000000000006ADFC_411AB7F000000000_00
+FFFFDFFFFFFFFFFF_43EFFFFC00000000_01
+FFFFFF03FFFFFFC0_43EFFFFFE0800000_01
+0A579475948F0032_43A4AF28EB291E01_01
+FFFFBFFFFFFFFFFF_43EFFFF800000000_01
+FC00000000003FF6_43EF800000000008_01
+00AE677AC313BF60_4365CCEF586277EC_00
+FFFF7FFFFFFFFFFF_43EFFFF000000000_01
+02000007FF7FFFFF_438000003FFC0000_01
+0000002E999639F1_42474CCB1CF88000_00
+FFFEFFFFFFFFFFFF_43EFFFE000000000_01
+FFFF83FFFFFFFFBE_43EFFFF080000000_01
+000000000003537D_410A9BE800000000_00
+FFFDFFFFFFFFFFFF_43EFFFC000000000_01
+EFFFFFC00000003D_43EDFFFFF8000001_01
+000000121FEDFD35_42321FEDFD350000_00
+FFFBFFFFFFFFFFFF_43EFFF8000000000_01
+FFFFFFF0000007FE_43EFFFFFFE000001_01
+00000000001E0839_413E083900000000_00
+FFF7FFFFFFFFFFFF_43EFFF0000000000_01
+0000007FFFE000FF_425FFFF8003FC000_00
+0000000079F30F48_41DE7CC3D2000000_00
+FFEFFFFFFFFFFFFF_43EFFE0000000000_01
+FFFFFC13FFFFFFFD_43EFFFFF82800000_01
+0000000000003B85_40CDC28000000000_00
+FFDFFFFFFFFFFFFF_43EFFC0000000000_01
+000008000007FFFE_42A000000FFFFC00_00
+32DB4409E5AE87E6_43C96DA204F2D744_01
+FFBFFFFFFFFFFFFF_43EFF80000000000_01
+FFFFFFFFFFF7BFEE_43EFFFFFFFFFFEF8_01
+000000000000003D_404E800000000000_00
+FF7FFFFFFFFFFFFF_43EFF00000000000_01
+000000001040FFFE_41B040FFFE000000_00
+00004909A09C13D3_42D242682704F4C0_00
+FEFFFFFFFFFFFFFF_43EFE00000000000_01
+FFFFFF01FFFFFF7F_43EFFFFFE0400000_01
+00000072E7D2575D_425CB9F495D74000_00
+FDFFFFFFFFFFFFFF_43EFC00000000000_01
+FFFFFFFFFFFEFFDB_43EFFFFFFFFFFFE0_01
+0000000000000057_4055C00000000000_00
+FBFFFFFFFFFFFFFF_43EF800000000000_01
+100000001FFFFFF6_43B0000000200000_01
+000000914B12EF51_426229625DEA2000_00
+F7FFFFFFFFFFFFFF_43EF000000000000_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFC_01
+000000769F3A5C2C_425DA7CE970B0000_00
+EFFFFFFFFFFFFFFF_43EE000000000000_01
+FFFFFFFDF7FFFFFD_43EFFFFFFFBF0000_01
+0000000000000002_4000000000000000_00
+DFFFFFFFFFFFFFFF_43EC000000000000_01
+FFFFFFFFFE0007FF_43EFFFFFFFFFC001_01
+000000000000009E_4063C00000000000_00
+BFFFFFFFFFFFFFFF_43E8000000000000_01
+FFF800000009FFFF_43EFFF0000000140_01
+0000000000087AA4_4120F54800000000_00
+7FFFFFFFFFFFFFFF_43E0000000000000_01
+4080000000FFFFFF_43D0200000004000_01
+000000001DE7601D_41BDE7601D000000_00
+3FFFFFFFFFFFFFFF_43D0000000000000_01
+FFCFFFFFFFBFFFFE_43EFF9FFFFFFF800_01
+000000000000004A_4052800000000000_00
+1FFFFFFFFFFFFFFF_43C0000000000000_01
+000080400000003F_42E00800000007E0_00
+00000000003F75A5_414FBAD280000000_00
+0FFFFFFFFFFFFFFF_43B0000000000000_01
+FFFFFFEFFFFFCFFE_43EFFFFFFDFFFFFA_01
+000000E775887420_426CEEB10E840000_00
+07FFFFFFFFFFFFFF_43A0000000000000_01
+00000000000801FE_412003FC00000000_00
+0000000000A13FF1_416427FE20000000_00
+03FFFFFFFFFFFFFF_4390000000000000_01
+07FEFFFFFFFFFFEE_439FFC0000000000_01
+000000000000000C_4028000000000000_00
+01FFFFFFFFFFFFFF_4380000000000000_01
+0000000820000003_4220400000060000_00
+00000001AD105214_41FAD10521400000_00
+00FFFFFFFFFFFFFF_4370000000000000_01
+FFFFF00FFFFFFFBE_43EFFFFE02000000_01
+0000000000CC48E7_4169891CE0000000_00
+007FFFFFFFFFFFFF_4360000000000000_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+00000000000BA6CB_41274D9600000000_00
+003FFFFFFFFFFFFF_4350000000000000_01
+FFFFFF7FBFFFFFBF_43EFFFFFEFF80000_01
+0000000000024425_4102212800000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFE00_01
+0000004E7115EC53_42539C457B14C000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_43EFFFFF00800000_01
+0000002E539ADCFE_424729CD6E7F0000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF8000_01
+000000D5084732F3_426AA108E65E6000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_43E7FFF000000000_01
+0000000000000543_40950C0000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+000000000000491B_40D246C000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_43EF800400000004_01
+0000016898822A24_4276898822A24000_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF8200000000_01
+0000000FFE18C7BF_422FFC318F7E0000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_43EFFFFFDFFFE000_01
+02F03620C1266ED9_438781B106093377_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_43E7EFE000000000_01
+0000000000000055_4055400000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_43EFFF7FFFFF0080_01
+0000000000168684_4136868400000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_43EBFFFFFC000001_01
+0000000000000CF5_40A9EA0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_43EFFFE008000020_01
+0000000000000022_4041000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_43EF7FFFFFFFFFF8_01
+0000000000001BC9_40BBC90000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_43E00FFFFFFFFFFC_01
+000274E35A70CD76_4303A71AD3866BB0_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFE0000_01
+0000000300E73AFC_42080739D7E00000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_43EFF80000000021_01
+00000000000615E9_411857A400000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+00000000000000B3_4066600000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+0000006E6B141E1B_425B9AC50786C000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_43EFFFFFFFFEC001_01
+00000003AB310BA6_420D59885D300000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+0000000000000195_4079500000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_43EFFFFFFFF00001_01
+00000059BA8D5559_42566EA355564000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_43EF7FE000000000_01
+000001B6F062822D_427B6F062822D000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+03CEAD9E2FB104A4_438E756CF17D8826_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+000000000D681E78_41AAD03CF0000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000058_4056000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000001_01
+0000000000000095_4062A00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000C00000000_01
+0000009697087B19_4262D2E10F632000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_43EF7FFFFFFFFDE0_01
+0000001E64BDFC55_423E64BDFC550000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_43EF800000004000_01
+0000D156A62AB849_42EA2AD4C5570920_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_43EFFFFFFF07FE00_01
+00035354EAE7C259_430A9AA7573E12C8_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_43F0000000000000_01
+00000000F4DF3C75_41EE9BE78EA00000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_43EFFF4000000004_01
+0000000000000003_4008000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_43EFFFFFFFFFF000_01
+0000005B5433CB9B_4256D50CF2E6C000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_43EFFFFFBFFBFFC0_01
+0000000000DEAE1F_416BD5C3E0000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_43EFFFFFFFFE0101_01
+000000007735DEC7_41DDCD77B1C00000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000007757D8B12ED_429DD5F62C4BB400_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_43EFFFFFC0FF0000_01
+00002A654064E046_42C532A032702300_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A0000000000030_01
+0000000000000007_401C000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF8_01
+00002D78B3D6C3B6_42C6BC59EB61DB00_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+000000070B77F34F_421C2DDFCD3C0000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_43EFFFFFF0000E00_01
+0000093EB4D67EC8_42A27D69ACFD9000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_43E7FFFBFFFF8000_01
+0205CEAF34EA1DC7_43802E7579A750EF_01
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+0000000000000003_4008000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000760D0_411D834000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_4370040000000000_01
+02C000708FF1BA51_43860003847F8DD3_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_43EF004000008000_01
+4F9E07DCC0BDC061_43D3E781F7302F71_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000008_01
+00000001B9B2A079_41FB9B2A07900000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_43EFFF0000000011_01
+00000000005EB5B4_4157AD6D00000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+0000000000DAC607_416B58C0E0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_43EFFFFFFFDF0001_01
+00000DC5B9D66984_42AB8B73ACD30800_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_43E8003FFFFFFE00_00
+00003D06B372AA06_42CE8359B9550300_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/ui64_f64_rz.tv b/wally-pipelined/testbench/fp/ui64_f64_rz.tv
new file mode 100644
index 000000000..857916e80
--- /dev/null
+++ b/wally-pipelined/testbench/fp/ui64_f64_rz.tv
@@ -0,0 +1,756 @@
+07FFFDFFFFFFFF7F_439FFFF7FFFFFFFD_01
+0000000072CC8B7A_41DCB322DE800000_00
+0000000000000000_0000000000000000_00
+FFFFFFFFC0003FFE_43EFFFFFFFF80007_01
+072C857F319EDE38_439CB215FCC67B78_01
+0000000000000001_3FF0000000000000_00
+FFFFFBFFFFF8003E_43EFFFFF7FFFFF00_01
+00794C79B6D3007B_435E531E6DB4C01E_01
+0000000000000002_4000000000000000_00
+FBFFFFF0000001FF_43EF7FFFFE000000_01
+0000000005AE458D_4196B91634000000_00
+0000000000000004_4010000000000000_00
+00040008000007FE_4310002000001FF8_00
+09EB456140D88764_43A3D68AC281B10E_01
+0000000000000008_4020000000000000_00
+FFFFE400FFFFFFFE_43EFFFFC801FFFFF_01
+27DE834A248EDF36_43C3EF41A512476F_01
+0000000000000010_4030000000000000_00
+00000003FF001FFF_420FF800FFF80000_00
+00000000000385E2_410C2F1000000000_00
+0000000000000020_4040000000000000_00
+F0041FFFFFFFFFFF_43EE0083FFFFFFFF_01
+000000159EB1FD45_42359EB1FD450000_00
+0000000000000040_4050000000000000_00
+FFFFFFFFFFFCFFF9_43EFFFFFFFFFFF9F_01
+000000000002DDFE_4106EFF000000000_00
+0000000000000080_4060000000000000_00
+000000000003FF00_410FF80000000000_00
+00000002C89FF56B_420644FFAB580000_00
+0000000000000100_4070000000000000_00
+000FFFFF7FDFFFFF_432FFFFEFFBFFFFE_00
+3B5E4F0BE0DEBFF0_43CDAF2785F06F5F_01
+0000000000000200_4080000000000000_00
+FFFDF803FFFFFFFF_43EFFFBF007FFFFF_01
+000000000004766B_4111D9AC00000000_00
+0000000000000400_4090000000000000_00
+0000080100000FFE_42A00200001FFC00_00
+000000000000002C_4046000000000000_00
+0000000000000800_40A0000000000000_00
+0048000000100000_4352000000040000_00
+07E662A109109D0A_439F998A84244274_01
+0000000000001000_40B0000000000000_00
+C000000037FFFFFE_43E800000006FFFF_01
+0000000000000064_4059000000000000_00
+0000000000002000_40C0000000000000_00
+F801000000100000_43EF002000000200_00
+02114B79075F70EE_43808A5BC83AFB87_01
+0000000000004000_40D0000000000000_00
+100000000001003E_43B0000000000100_01
+0000000000000BAC_40A7580000000000_00
+0000000000008000_40E0000000000000_00
+200000FFFFFFF800_43C000007FFFFFFC_00
+000000C4A3A3DBE5_426894747B7CA000_00
+0000000000010000_40F0000000000000_00
+FFE0003EFFFFFFFF_43EFFC0007DFFFFF_01
+0000000000001A91_40BA910000000000_00
+0000000000020000_4100000000000000_00
+FFFFF7C3FFFFFFFD_43EFFFFEF87FFFFF_01
+0000000000007309_40DCC24000000000_00
+0000000000040000_4110000000000000_00
+000083FFF7FFFFFE_42E07FFEFFFFFFC0_00
+0000000000000F58_40AEB00000000000_00
+0000000000080000_4120000000000000_00
+FFFFFFDE01FFFFFE_43EFFFFFFBC03FFF_01
+0000000000006980_40DA600000000000_00
+0000000000100000_4130000000000000_00
+00000000FFF07FFF_41EFFE0FFFE00000_00
+00000000000000DD_406BA00000000000_00
+0000000000200000_4140000000000000_00
+000020FFDFFFFFFF_42C07FEFFFFFFF80_00
+00008C23DA2CEAD8_42E1847B459D5B00_00
+0000000000400000_4150000000000000_00
+E0000000003FFFDF_43EC0000000007FF_01
+00000DE3C1DEC43C_42ABC783BD887800_00
+0000000000800000_4160000000000000_00
+FFFF00000BFFFFFD_43EFFFE000017FFF_01
+000000008030FFBE_41E0061FF7C00000_00
+0000000001000000_4170000000000000_00
+FFFE000007FFEFFD_43EFFFC00000FFFD_01
+000000000FDEED86_41AFBDDB0C000000_00
+0000000002000000_4180000000000000_00
+F3FFFFFFFFBFFFFE_43EE7FFFFFFFF7FF_01
+000000005DA3FF45_41D768FFD1400000_00
+0000000004000000_4190000000000000_00
+FFFFFFFF00010007_43EFFFFFFFE00020_01
+000000009B1BCB54_41E363796A800000_00
+0000000008000000_41A0000000000000_00
+00004000004001FE_42D0000010007F80_00
+027DD19DE6563714_4383EE8CEF32B1B8_01
+0000000010000000_41B0000000000000_00
+FFC00000004007FE_43EFF80000000800_01
+000000000003A359_410D1AC800000000_00
+0000000020000000_41C0000000000000_00
+0000000003C000FE_418E0007F0000000_00
+000000003E62EC20_41CF317610000000_00
+0000000040000000_41D0000000000000_00
+000000003FFFFFFD_41CFFFFFFE800000_00
+000000000000685F_40DA17C000000000_00
+0000000080000000_41E0000000000000_00
+FFFFFFFFBFFFF00F_43EFFFFFFFF7FFFE_01
+00000836F99DBAA8_42A06DF33B755000_00
+0000000100000000_41F0000000000000_00
+00000020003FFEFE_4240001FFF7F0000_00
+0073466832042D47_435CD19A0C810B51_01
+0000000200000000_4200000000000000_00
+FFFFFFFFFFFFF887_43EFFFFFFFFFFFFF_01
+00000000007829C8_415E0A7200000000_00
+0000000400000000_4210000000000000_00
+00000FFFFFFF7DFD_42AFFFFFFEFBFA00_00
+0000001FB77C672B_423FB77C672B0000_00
+0000000800000000_4220000000000000_00
+08003FFDFFFFFFFE_43A0007FFBFFFFFF_01
+0000000000005B78_40D6DE0000000000_00
+0000001000000000_4230000000000000_00
+FF7FFFFFFFEFDFFF_43EFEFFFFFFFFDFB_01
+00000000000000F1_406E200000000000_00
+0000002000000000_4240000000000000_00
+000013FFFFFFFDFF_42B3FFFFFFFDFF00_00
+0000000000000006_4018000000000000_00
+0000004000000000_4250000000000000_00
+0800000000040800_43A0000000000810_00
+0008A60D9E19F17E_43214C1B3C33E2FC_00
+0000008000000000_4260000000000000_00
+000077FFF0000000_42DDFFFC00000000_00
+0000000007506DBA_419D41B6E8000000_00
+0000010000000000_4270000000000000_00
+FFFFFFFFFFFEFBF7_43EFFFFFFFFFFFDF_01
+0000000006A42AC9_419A90AB24000000_00
+0000020000000000_4280000000000000_00
+0000107FFFFFDFFD_42B07FFFFFDFFD00_00
+0007AA3F2BDACC89_431EA8FCAF6B3224_00
+0000040000000000_4290000000000000_00
+FFF8040000040000_43EFFF0080000080_00
+0000000000000005_4014000000000000_00
+0000080000000000_42A0000000000000_00
+FFFF80000800001F_43EFFFF000010000_01
+000DF681DECDADC9_432BED03BD9B5B92_00
+0000100000000000_42B0000000000000_00
+FFFFFEFFFFE0007F_43EFFFFFDFFFFC00_01
+0000000000004FBE_40D3EF8000000000_00
+0000200000000000_42C0000000000000_00
+0000000901FFFFFD_422203FFFFFA0000_00
+00C01FECA24DE1B0_436803FD9449BC36_00
+0000400000000000_42D0000000000000_00
+F7FFFFFFDFFF7FFF_43EEFFFFFFFBFFEF_01
+0058A66761669936_43562999D859A64D_01
+0000800000000000_42E0000000000000_00
+FFFEFF800000003E_43EFFFDFF0000000_01
+0716EA43FAC45C97_439C5BA90FEB1172_01
+0001000000000000_42F0000000000000_00
+FFFFFFFFFFFFFFC6_43EFFFFFFFFFFFFF_01
+0064D70EC7661FD8_435935C3B1D987F6_00
+0002000000000000_4300000000000000_00
+C07FFFFFFFFFFFFE_43E80FFFFFFFFFFF_01
+00D956DBD0AEE817_436B2ADB7A15DD02_01
+0004000000000000_4310000000000000_00
+020003EFFFFFFFFE_4380001F7FFFFFFF_01
+0000000000004300_40D0C00000000000_00
+0008000000000000_4320000000000000_00
+4000000004002000_43D0000000010008_00
+012EDF40F41F6021_4372EDF40F41F602_01
+0010000000000000_4330000000000000_00
+FF9000000000001D_43EFF20000000000_01
+000000383DE950F6_424C1EF4A87B0000_00
+0020000000000000_4340000000000000_00
+800003FFFFFC0000_43E000007FFFFF80_00
+002B59CB3A604D69_4345ACE59D3026B4_01
+0040000000000000_4350000000000000_00
+7FFFFFFDFFFFBFFF_43DFFFFFFF7FFFEF_01
+000001A37C210862_427A37C210862000_00
+0080000000000000_4360000000000000_00
+0002000002000002_4300000010000010_00
+0000365CD8617789_42CB2E6C30BBC480_00
+0100000000000000_4370000000000000_00
+00001BFFFFFFBFFE_42BBFFFFFFBFFE00_00
+000000000000101D_40B01D0000000000_00
+0200000000000000_4380000000000000_00
+1000008000003FFF_43B000008000003F_01
+000000001D098D19_41BD098D19000000_00
+0400000000000000_4390000000000000_00
+03FFFFFFFFFFF5FF_438FFFFFFFFFFFAF_01
+000016B3BD2C7BEF_42B6B3BD2C7BEF00_00
+0800000000000000_43A0000000000000_00
+00003FFFBFFFFFFE_42CFFFDFFFFFFF00_00
+00004E5ADDDAA4A8_42D396B776A92A00_00
+1000000000000000_43B0000000000000_00
+001FFFC000000FFD_433FFFC000000FFD_00
+0000000000000721_409C840000000000_00
+2000000000000000_43C0000000000000_00
+0000000041DFFFFF_41D077FFFFC00000_00
+0000000000648262_4159209880000000_00
+4000000000000000_43D0000000000000_00
+C0001FFFFFFFFFFB_43E80003FFFFFFFF_01
+0000007353AC45D2_425CD4EB11748000_00
+8000000000000000_43E0000000000000_00
+FFFFFFFFFFE7EFFF_43EFFFFFFFFFFCFD_01
+0000000001A1202D_417A1202D0000000_00
+C000000000000000_43E8000000000000_00
+FFFFFFFFFFFF5F7F_43EFFFFFFFFFFFEB_01
+0000000000C0CA70_4168194E00000000_00
+E000000000000000_43EC000000000000_00
+0000200201FFFFFE_42C00100FFFFFF00_00
+00000007B55D87D4_421ED5761F500000_00
+F000000000000000_43EE000000000000_00
+FF80000DFFFFFFFF_43EFF00001BFFFFF_01
+000000090510FAEF_42220A21F5DE0000_00
+F800000000000000_43EF000000000000_00
+0003FFF00000000F_430FFF8000000078_00
+000000000001724A_40F724A000000000_00
+FC00000000000000_43EF800000000000_00
+FFFFFFDF80000002_43EFFFFFFBF00000_01
+00000000000000E4_406C800000000000_00
+FE00000000000000_43EFC00000000000_00
+FEFFFFFFFFF800FE_43EFDFFFFFFFFF00_01
+00000002C6222702_4206311138100000_00
+FF00000000000000_43EFE00000000000_00
+0000000408000002_4210200000080000_00
+000002E96DF1CB41_42874B6F8E5A0800_00
+FF80000000000000_43EFF00000000000_00
+007FFFFFFFFFF9FE_435FFFFFFFFFFE7F_01
+0727F174DEE7DC85_439C9FC5D37B9F72_01
+FFC0000000000000_43EFF80000000000_00
+8000000003FFFEFE_43E0000000007FFF_01
+000000000010BD5B_4130BD5B00000000_00
+FFE0000000000000_43EFFC0000000000_00
+0BEFFFFFFFFFFFFF_43A7DFFFFFFFFFFF_01
+000000000022790C_41413C8600000000_00
+FFF0000000000000_43EFFE0000000000_00
+FFFFFFFFFFEFFBFA_43EFFFFFFFFFFDFF_01
+000000369E75DF01_424B4F3AEF808000_00
+FFF8000000000000_43EFFF0000000000_00
+00000007FEFFDFFF_421FFBFF7FFC0000_00
+000000000000001E_403E000000000000_00
+FFFC000000000000_43EFFF8000000000_00
+0003FFFE0007FFFE_430FFFF0003FFFF0_00
+0000000000328622_4149431100000000_00
+FFFE000000000000_43EFFFC000000000_00
+FFFFFF7FFFFDF7FF_43EFFFFFEFFFFFBE_01
+00172F0EC496FE21_43372F0EC496FE21_00
+FFFF000000000000_43EFFFE000000000_00
+DFBFFFFFFFFFFFFE_43EBF7FFFFFFFFFF_01
+0000000004FC1FCA_4193F07F28000000_00
+FFFF800000000000_43EFFFF000000000_00
+00000FFF800FFFFE_42AFFF001FFFFC00_00
+000F5194E4A9C2CE_432EA329C953859C_00
+FFFFC00000000000_43EFFFF800000000_00
+00000002100007FD_420080003FE80000_00
+000000000002D8FE_4106C7F000000000_00
+FFFFE00000000000_43EFFFFC00000000_00
+000000000007FF6E_411FFDB800000000_00
+000000000003766E_410BB37000000000_00
+FFFFF00000000000_43EFFFFE00000000_00
+0040000400000002_4350000100000000_01
+000000000000F841_40EF082000000000_00
+FFFFF80000000000_43EFFFFF00000000_00
+3DFFFFFFFFFFFF7E_43CEFFFFFFFFFFFF_01
+0000000549E17E30_42152785F8C00000_00
+FFFFFC0000000000_43EFFFFF80000000_00
+FFFFFFFFFFFFFEE1_43EFFFFFFFFFFFFF_01
+0000000000000027_4043800000000000_00
+FFFFFE0000000000_43EFFFFFC0000000_00
+000000000EFFFFDF_41ADFFFFBE000000_00
+0000000000000373_408B980000000000_00
+FFFFFF0000000000_43EFFFFFE0000000_00
+FD00000008000000_43EFA00000010000_00
+000000000005DBB1_41176EC400000000_00
+FFFFFF8000000000_43EFFFFFF0000000_00
+FFFFFFFFFFF8007F_43EFFFFFFFFFFF00_01
+00000002FD10A515_4207E88528A80000_00
+FFFFFFC000000000_43EFFFFFF8000000_00
+FFEFFFFFFFFFFFFE_43EFFDFFFFFFFFFF_01
+0AB02984F6283B6C_43A5605309EC5076_01
+FFFFFFE000000000_43EFFFFFFC000000_00
+FFFFFFBC000001FE_43EFFFFFF7800000_01
+00B087C6B9FE7FE0_436610F8D73FCFFC_00
+FFFFFFF000000000_43EFFFFFFE000000_00
+FFF80001000007FE_43EFFF0000200000_01
+01F2762EA6837956_437F2762EA683795_01
+FFFFFFF800000000_43EFFFFFFF000000_00
+FFF7E0FFFFFFFFFE_43EFFEFC1FFFFFFF_01
+00022E1175484626_4301708BAA423130_00
+FFFFFFFC00000000_43EFFFFFFF800000_00
+0000200020000FFE_42C000100007FF00_00
+000000000000168F_40B68F0000000000_00
+FFFFFFFE00000000_43EFFFFFFFC00000_00
+021FFFFFFFFBFFFF_4380FFFFFFFFDFFF_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFF00000000_43EFFFFFFFE00000_00
+FFFFFFD0000FFFFD_43EFFFFFFA0001FF_01
+000001BDF6658B83_427BDF6658B83000_00
+FFFFFFFF80000000_43EFFFFFFFF00000_00
+1000001FFDFFFFFF_43B000001FFDFFFF_01
+000000000000BB5B_40E76B6000000000_00
+FFFFFFFFC0000000_43EFFFFFFFF80000_00
+FFFFFFBFFE0FFFFF_43EFFFFFF7FFC1FF_01
+0000000000000000_0000000000000000_00
+FFFFFFFFE0000000_43EFFFFFFFFC0000_00
+FFFFFFFBF00007FF_43EFFFFFFF7E0000_01
+01E986274F48EAAD_437E986274F48EAA_01
+FFFFFFFFF0000000_43EFFFFFFFFE0000_00
+1FFFFFFDFFFFFF7F_43BFFFFFFDFFFFFF_01
+000000000000CB5A_40E96B4000000000_00
+FFFFFFFFF8000000_43EFFFFFFFFF0000_00
+7FF000000000FFFF_43DFFC000000003F_01
+0000000BC2717FC3_422784E2FF860000_00
+FFFFFFFFFC000000_43EFFFFFFFFF8000_00
+FFFFFFE00008001F_43EFFFFFFC000100_01
+00000000000FABDA_412F57B400000000_00
+FFFFFFFFFE000000_43EFFFFFFFFFC000_00
+0200000000000002_4380000000000000_01
+0000000000FDA53F_416FB4A7E0000000_00
+FFFFFFFFFF000000_43EFFFFFFFFFE000_00
+F6000003FFFFFFFE_43EEC000007FFFFF_01
+0000000000000010_4030000000000000_00
+FFFFFFFFFF800000_43EFFFFFFFFFF000_00
+FFFFFFFFFFBFFF7E_43EFFFFFFFFFF7FF_01
+00000001EE0FEA62_41FEE0FEA6200000_00
+FFFFFFFFFFC00000_43EFFFFFFFFFF800_00
+0000007FFF9FFFFD_425FFFE7FFFF4000_00
+00000077F35EDC1D_425DFCD7B7074000_00
+FFFFFFFFFFE00000_43EFFFFFFFFFFC00_00
+FFFFFFF7FDFFFF7D_43EFFFFFFEFFBFFF_01
+00000000000003AD_408D680000000000_00
+FFFFFFFFFFF00000_43EFFFFFFFFFFE00_00
+FFFFFF0000100020_43EFFFFFE0000200_01
+67F167FBC7FC5F9A_43D9FC59FEF1FF17_01
+FFFFFFFFFFF80000_43EFFFFFFFFFFF00_00
+003FFFFFFFFC0001_434FFFFFFFFE0000_01
+002E48F9F4EBD30E_4347247CFA75E987_00
+FFFFFFFFFFFC0000_43EFFFFFFFFFFF80_00
+DFFFFFFFFFFBFFFE_43EBFFFFFFFFFF7F_01
+0091C23EE8C9424F_43623847DD192849_01
+FFFFFFFFFFFE0000_43EFFFFFFFFFFFC0_00
+F7DFFBFFFFFFFFFE_43EEFBFF7FFFFFFF_01
+00000000ACAE080C_41E595C101800000_00
+FFFFFFFFFFFF0000_43EFFFFFFFFFFFE0_00
+FFFFC00010000020_43EFFFF800020000_01
+0CD921F917B20E40_43A9B243F22F641C_01
+FFFFFFFFFFFF8000_43EFFFFFFFFFFFF0_00
+F8000FFFFFFFFFFD_43EF0001FFFFFFFF_01
+00017C566BC7D811_42F7C566BC7D8110_00
+FFFFFFFFFFFFC000_43EFFFFFFFFFFFF8_00
+00000000000000FE_406FC00000000000_00
+00F82AC14930D386_436F055829261A70_01
+FFFFFFFFFFFFE000_43EFFFFFFFFFFFFC_00
+00000000000003FC_408FE00000000000_00
+008E62EC60E119FC_4361CC5D8C1C233F_01
+FFFFFFFFFFFFF000_43EFFFFFFFFFFFFE_00
+FFFFEFF7FF7FFFFE_43EFFFFDFEFFEFFF_01
+1E2B1ECF210EEDC5_43BE2B1ECF210EED_01
+FFFFFFFFFFFFF800_43EFFFFFFFFFFFFF_00
+00000000007FFF1F_415FFFC7C0000000_00
+000006534F5676F7_42994D3D59DBDC00_00
+FFFFFFFFFFFFFC00_43EFFFFFFFFFFFFF_01
+0000001004FFFFFD_423004FFFFFD0000_00
+0000435C939669F1_42D0D724E59A7C40_00
+FFFFFFFFFFFFFE00_43EFFFFFFFFFFFFF_01
+1FFFFFFFFFFFFDFD_43BFFFFFFFFFFFFD_01
+0000000000000011_4031000000000000_00
+FFFFFFFFFFFFFF00_43EFFFFFFFFFFFFF_01
+01FFFFFFFBFFEFFE_437FFFFFFFBFFEFF_01
+000000000000036E_408B700000000000_00
+FFFFFFFFFFFFFF80_43EFFFFFFFFFFFFF_01
+FFF7FFFFFFFFF7FD_43EFFEFFFFFFFFFE_01
+000038E2BCFAC553_42CC715E7D62A980_00
+FFFFFFFFFFFFFFC0_43EFFFFFFFFFFFFF_01
+FFFFFBFFFFFE0FFE_43EFFFFF7FFFFFC1_01
+00000009A4E704BF_422349CE097E0000_00
+FFFFFFFFFFFFFFE0_43EFFFFFFFFFFFFF_01
+1400007FFFFFFFFD_43B400007FFFFFFF_01
+0000000093B187B4_41E27630F6800000_00
+FFFFFFFFFFFFFFF0_43EFFFFFFFFFFFFF_01
+40000000007FFFFD_43D0000000001FFF_01
+0000000000E7D468_416CFA8D00000000_00
+FFFFFFFFFFFFFFF8_43EFFFFFFFFFFFFF_01
+007FFEFFFFFBFFFE_435FFFBFFFFEFFFF_01
+000000026CEC79F8_42036763CFC00000_00
+FFFFFFFFFFFFFFFC_43EFFFFFFFFFFFFF_01
+00FFFFFF000000FF_436FFFFFE000001F_01
+0000000000D3983A_416A730740000000_00
+FFFFFFFFFFFFFFFE_43EFFFFFFFFFFFFF_01
+00007FFFBFFF7FFE_42DFFFEFFFDFFF80_00
+00000001F4A7088A_41FF4A7088A00000_00
+FFFFFFFFFFFFFFFF_43EFFFFFFFFFFFFF_01
+000008000000027E_42A000000004FC00_00
+000000000001F4E8_40FF4E8000000000_00
+FFFFFFFFFFFFFFFD_43EFFFFFFFFFFFFF_01
+FFFFFFFFFF83FFDF_43EFFFFFFFFFF07F_01
+00001E11407887B2_42BE11407887B200_00
+FFFFFFFFFFFFFFFB_43EFFFFFFFFFFFFF_01
+04000003FFFFFFF6_439000000FFFFFFF_01
+0000000000000D13_40AA260000000000_00
+FFFFFFFFFFFFFFF7_43EFFFFFFFFFFFFF_01
+BFFC00000000003E_43E7FF8000000000_01
+00000028D7BBB75B_42446BDDDBAD8000_00
+FFFFFFFFFFFFFFEF_43EFFFFFFFFFFFFF_01
+000FFFFBFFFC0000_432FFFF7FFF80000_00
+0000000000CD5A23_4169AB4460000000_00
+FFFFFFFFFFFFFFDF_43EFFFFFFFFFFFFF_01
+FFBFDFFFBFFFFFFF_43EFF7FBFFF7FFFF_01
+00000000000000FF_406FE00000000000_00
+FFFFFFFFFFFFFFBF_43EFFFFFFFFFFFFF_01
+00000007FF800003_421FFE00000C0000_00
+00000000000ABB02_4125760400000000_00
+FFFFFFFFFFFFFF7F_43EFFFFFFFFFFFFF_01
+FFFFFFFFFFFEE7FF_43EFFFFFFFFFFFDC_01
+00664B2B9BAD0DA2_435992CAE6EB4368_01
+FFFFFFFFFFFFFEFF_43EFFFFFFFFFFFFF_01
+0000000000100803_4130080300000000_00
+009B1DCB9F857D5E_436363B973F0AFAB_01
+FFFFFFFFFFFFFDFF_43EFFFFFFFFFFFFF_01
+FFFFFFBFFFFFEFEE_43EFFFFFF7FFFFFD_01
+36FD7542899C1C6F_43CB7EBAA144CE0E_01
+FFFFFFFFFFFFFBFF_43EFFFFFFFFFFFFF_01
+FF800000004001FF_43EFF00000000800_01
+0000000006BE4932_419AF924C8000000_00
+FFFFFFFFFFFFF7FF_43EFFFFFFFFFFFFE_01
+00001004000FFFFE_42B004000FFFFE00_00
+0000001DAA0123E0_423DAA0123E00000_00
+FFFFFFFFFFFFEFFF_43EFFFFFFFFFFFFD_01
+00000001FDFFFDFE_41FFDFFFDFE00000_00
+00001C8703B1DCB0_42BC8703B1DCB000_00
+FFFFFFFFFFFFDFFF_43EFFFFFFFFFFFFB_01
+FE0FE00000000000_43EFC1FC00000000_00
+0F79ED944A4E2779_43AEF3DB28949C4E_01
+FFFFFFFFFFFFBFFF_43EFFFFFFFFFFFF7_01
+FBFFFE0400000000_43EF7FFFC0800000_00
+0000030127E03666_4288093F01B33000_00
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFEF_01
+FFFFF0200000FFFE_43EFFFFE0400001F_01
+000000000000017F_4077F00000000000_00
+FFFFFFFFFFFEFFFF_43EFFFFFFFFFFFDF_01
+FFEFFE0000080000_43EFFDFFC0000100_00
+00000000013354EA_4173354EA0000000_00
+FFFFFFFFFFFDFFFF_43EFFFFFFFFFFFBF_01
+003FF0000003FFFE_434FF8000001FFFF_00
+0000016375B23F7B_4276375B23F7B000_00
+FFFFFFFFFFFBFFFF_43EFFFFFFFFFFF7F_01
+000407FFFFFFFFF6_43101FFFFFFFFFD8_00
+0000000192117F38_41F92117F3800000_00
+FFFFFFFFFFF7FFFF_43EFFFFFFFFFFEFF_01
+FFFFFFFFFFFF7FFF_43EFFFFFFFFFFFEF_01
+00000000000018BE_40B8BE0000000000_00
+FFFFFFFFFFEFFFFF_43EFFFFFFFFFFDFF_01
+004000020FFFFFFF_4350000083FFFFFF_01
+0000B84C2D8BC9CB_42E70985B1793960_00
+FFFFFFFFFFDFFFFF_43EFFFFFFFFFFBFF_01
+00FFFFFFFFFFFFFD_436FFFFFFFFFFFFF_01
+00000223C2C6F284_42811E1637942000_00
+FFFFFFFFFFBFFFFF_43EFFFFFFFFFF7FF_01
+FFFDDFFFFFFFFFFD_43EFFFBBFFFFFFFF_01
+00000000F46356C4_41EE8C6AD8800000_00
+FFFFFFFFFF7FFFFF_43EFFFFFFFFFEFFF_01
+010000000000BFFF_4370000000000BFF_01
+0000000000000005_4014000000000000_00
+FFFFFFFFFEFFFFFF_43EFFFFFFFFFDFFF_01
+FFFFBF7FFBFFFFFE_43EFFFF7EFFF7FFF_01
+00000026386CE889_42431C3674448000_00
+FFFFFFFFFDFFFFFF_43EFFFFFFFFFBFFF_01
+F00000F7FFFFFFFF_43EE00001EFFFFFF_01
+0001FC53090C46A4_42FFC53090C46A40_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF7FFF_01
+0000000000800047_41600008E0000000_00
+000000001693872E_41B693872E000000_00
+FFFFFFFFF7FFFFFF_43EFFFFFFFFEFFFF_01
+000000007FBFFBFF_41DFEFFEFFC00000_00
+00000226A7845E35_4281353C22F1A800_00
+FFFFFFFFEFFFFFFF_43EFFFFFFFFDFFFF_01
+FFFFFFDFFFFFFBFD_43EFFFFFFBFFFFFF_01
+000000005433D14C_41D50CF453000000_00
+FFFFFFFFDFFFFFFF_43EFFFFFFFFBFFFF_01
+0001FFFFFFE0000E_42FFFFFFFE0000E0_00
+00F23E8068D3D84A_436E47D00D1A7B09_01
+FFFFFFFFBFFFFFFF_43EFFFFFFFF7FFFF_01
+F7FFBFFFFFFFBFFF_43EEFFF7FFFFFFF7_01
+0000BD29B7459087_42E7A536E8B210E0_00
+FFFFFFFF7FFFFFFF_43EFFFFFFFEFFFFF_01
+FFFFFFF8FFFFBFFF_43EFFFFFFF1FFFF7_01
+00000000002DDC06_4146EE0300000000_00
+FFFFFFFEFFFFFFFF_43EFFFFFFFDFFFFF_01
+FFFFFFF80001FFFF_43EFFFFFFF00003F_01
+0000000000012FF9_40F2FF9000000000_00
+FFFFFFFDFFFFFFFF_43EFFFFFFFBFFFFF_01
+004000040000FFFF_4350000100003FFF_01
+0000000000000001_3FF0000000000000_00
+FFFFFFFBFFFFFFFF_43EFFFFFFF7FFFFF_01
+C0000000007FFFFA_43E8000000000FFF_01
+0000000006053E2B_419814F8AC000000_00
+FFFFFFF7FFFFFFFF_43EFFFFFFEFFFFFF_01
+7FFE000007FFFFFF_43DFFF800001FFFF_01
+000000000000002D_4046800000000000_00
+FFFFFFEFFFFFFFFF_43EFFFFFFDFFFFFF_01
+F80000000001007E_43EF000000000020_01
+00000D48424AD9D6_42AA908495B3AC00_00
+FFFFFFDFFFFFFFFF_43EFFFFFFBFFFFFF_01
+FFFFFE0001FEFFFF_43EFFFFFC0003FDF_01
+000000000000033B_4089D80000000000_00
+FFFFFFBFFFFFFFFF_43EFFFFFF7FFFFFF_01
+0007FBFFFFFDFFFE_431FEFFFFFF7FFF8_00
+4A16BD4128090C83_43D285AF504A0243_01
+FFFFFF7FFFFFFFFF_43EFFFFFEFFFFFFF_01
+00FFF7FFFF7FFFFE_436FFEFFFFEFFFFF_01
+0000000000000086_4060C00000000000_00
+FFFFFEFFFFFFFFFF_43EFFFFFDFFFFFFF_01
+FBFFFFBFFFBFFFFF_43EF7FFFF7FFF7FF_01
+00000000000021BA_40C0DD0000000000_00
+FFFFFDFFFFFFFFFF_43EFFFFFBFFFFFFF_01
+0000000040000082_41D0000020800000_00
+0007A2BF5B689F89_431E8AFD6DA27E24_00
+FFFFFBFFFFFFFFFF_43EFFFFF7FFFFFFF_01
+0000001FF8000008_423FF80000080000_00
+387CAA7DE672DE8B_43CC3E553EF3396F_01
+FFFFF7FFFFFFFFFF_43EFFFFEFFFFFFFF_01
+07FFF80000000002_439FFFE000000000_01
+0000000030A1E5B8_41C850F2DC000000_00
+FFFFEFFFFFFFFFFF_43EFFFFDFFFFFFFF_01
+F7FFFFE00007FFFF_43EEFFFFFC0000FF_01
+000000000006ADFC_411AB7F000000000_00
+FFFFDFFFFFFFFFFF_43EFFFFBFFFFFFFF_01
+FFFFFF03FFFFFFC0_43EFFFFFE07FFFFF_01
+0A579475948F0032_43A4AF28EB291E00_01
+FFFFBFFFFFFFFFFF_43EFFFF7FFFFFFFF_01
+FC00000000003FF6_43EF800000000007_01
+00AE677AC313BF60_4365CCEF586277EC_00
+FFFF7FFFFFFFFFFF_43EFFFEFFFFFFFFF_01
+02000007FF7FFFFF_438000003FFBFFFF_01
+0000002E999639F1_42474CCB1CF88000_00
+FFFEFFFFFFFFFFFF_43EFFFDFFFFFFFFF_01
+FFFF83FFFFFFFFBE_43EFFFF07FFFFFFF_01
+000000000003537D_410A9BE800000000_00
+FFFDFFFFFFFFFFFF_43EFFFBFFFFFFFFF_01
+EFFFFFC00000003D_43EDFFFFF8000000_01
+000000121FEDFD35_42321FEDFD350000_00
+FFFBFFFFFFFFFFFF_43EFFF7FFFFFFFFF_01
+FFFFFFF0000007FE_43EFFFFFFE000000_01
+00000000001E0839_413E083900000000_00
+FFF7FFFFFFFFFFFF_43EFFEFFFFFFFFFF_01
+0000007FFFE000FF_425FFFF8003FC000_00
+0000000079F30F48_41DE7CC3D2000000_00
+FFEFFFFFFFFFFFFF_43EFFDFFFFFFFFFF_01
+FFFFFC13FFFFFFFD_43EFFFFF827FFFFF_01
+0000000000003B85_40CDC28000000000_00
+FFDFFFFFFFFFFFFF_43EFFBFFFFFFFFFF_01
+000008000007FFFE_42A000000FFFFC00_00
+32DB4409E5AE87E6_43C96DA204F2D743_01
+FFBFFFFFFFFFFFFF_43EFF7FFFFFFFFFF_01
+FFFFFFFFFFF7BFEE_43EFFFFFFFFFFEF7_01
+000000000000003D_404E800000000000_00
+FF7FFFFFFFFFFFFF_43EFEFFFFFFFFFFF_01
+000000001040FFFE_41B040FFFE000000_00
+00004909A09C13D3_42D242682704F4C0_00
+FEFFFFFFFFFFFFFF_43EFDFFFFFFFFFFF_01
+FFFFFF01FFFFFF7F_43EFFFFFE03FFFFF_01
+00000072E7D2575D_425CB9F495D74000_00
+FDFFFFFFFFFFFFFF_43EFBFFFFFFFFFFF_01
+FFFFFFFFFFFEFFDB_43EFFFFFFFFFFFDF_01
+0000000000000057_4055C00000000000_00
+FBFFFFFFFFFFFFFF_43EF7FFFFFFFFFFF_01
+100000001FFFFFF6_43B00000001FFFFF_01
+000000914B12EF51_426229625DEA2000_00
+F7FFFFFFFFFFFFFF_43EEFFFFFFFFFFFF_01
+0407FFFFFFFFFEFF_43901FFFFFFFFFFB_01
+000000769F3A5C2C_425DA7CE970B0000_00
+EFFFFFFFFFFFFFFF_43EDFFFFFFFFFFFF_01
+FFFFFFFDF7FFFFFD_43EFFFFFFFBEFFFF_01
+0000000000000002_4000000000000000_00
+DFFFFFFFFFFFFFFF_43EBFFFFFFFFFFFF_01
+FFFFFFFFFE0007FF_43EFFFFFFFFFC000_01
+000000000000009E_4063C00000000000_00
+BFFFFFFFFFFFFFFF_43E7FFFFFFFFFFFF_01
+FFF800000009FFFF_43EFFF000000013F_01
+0000000000087AA4_4120F54800000000_00
+7FFFFFFFFFFFFFFF_43DFFFFFFFFFFFFF_01
+4080000000FFFFFF_43D0200000003FFF_01
+000000001DE7601D_41BDE7601D000000_00
+3FFFFFFFFFFFFFFF_43CFFFFFFFFFFFFF_01
+FFCFFFFFFFBFFFFE_43EFF9FFFFFFF7FF_01
+000000000000004A_4052800000000000_00
+1FFFFFFFFFFFFFFF_43BFFFFFFFFFFFFF_01
+000080400000003F_42E00800000007E0_00
+00000000003F75A5_414FBAD280000000_00
+0FFFFFFFFFFFFFFF_43AFFFFFFFFFFFFF_01
+FFFFFFEFFFFFCFFE_43EFFFFFFDFFFFF9_01
+000000E775887420_426CEEB10E840000_00
+07FFFFFFFFFFFFFF_439FFFFFFFFFFFFF_01
+00000000000801FE_412003FC00000000_00
+0000000000A13FF1_416427FE20000000_00
+03FFFFFFFFFFFFFF_438FFFFFFFFFFFFF_01
+07FEFFFFFFFFFFEE_439FFBFFFFFFFFFF_01
+000000000000000C_4028000000000000_00
+01FFFFFFFFFFFFFF_437FFFFFFFFFFFFF_01
+0000000820000003_4220400000060000_00
+00000001AD105214_41FAD10521400000_00
+00FFFFFFFFFFFFFF_436FFFFFFFFFFFFF_01
+FFFFF00FFFFFFFBE_43EFFFFE01FFFFFF_01
+0000000000CC48E7_4169891CE0000000_00
+007FFFFFFFFFFFFF_435FFFFFFFFFFFFF_01
+00000FFFEF7FFFFF_42AFFFDEFFFFFE00_00
+00000000000BA6CB_41274D9600000000_00
+003FFFFFFFFFFFFF_434FFFFFFFFFFFFF_01
+FFFFFF7FBFFFFFBF_43EFFFFFEFF7FFFF_01
+0000000000024425_4102212800000000_00
+001FFFFFFFFFFFFF_433FFFFFFFFFFFFF_00
+200000001FFBFFFF_43C00000000FFDFF_01
+0000004E7115EC53_42539C457B14C000_00
+000FFFFFFFFFFFFF_432FFFFFFFFFFFFE_00
+FFFFF803FFFFFFBF_43EFFFFF007FFFFF_01
+0000002E539ADCFE_424729CD6E7F0000_00
+0007FFFFFFFFFFFF_431FFFFFFFFFFFFC_00
+FFFFFFFFFBFFFFFF_43EFFFFFFFFF7FFF_01
+000000D5084732F3_426AA108E65E6000_00
+0003FFFFFFFFFFFF_430FFFFFFFFFFFF8_00
+BFFF7FFFFFFFFE00_43E7FFEFFFFFFFFF_01
+0000000000000543_40950C0000000000_00
+0001FFFFFFFFFFFF_42FFFFFFFFFFFFF0_00
+0000001FFBFFE000_423FFBFFE0000000_00
+000000000000491B_40D246C000000000_00
+0000FFFFFFFFFFFF_42EFFFFFFFFFFFE0_00
+FC00200000001FFE_43EF800400000003_01
+0000016898822A24_4276898822A24000_00
+00007FFFFFFFFFFF_42DFFFFFFFFFFFC0_00
+3FFF03FFFFFFFFFE_43CFFF81FFFFFFFF_01
+0000000FFE18C7BF_422FFC318F7E0000_00
+00003FFFFFFFFFFF_42CFFFFFFFFFFF80_00
+FFFFFEFFFEFFFFFD_43EFFFFFDFFFDFFF_01
+02F03620C1266ED9_438781B106093376_01
+00001FFFFFFFFFFF_42BFFFFFFFFFFF00_00
+BF7EFFFFFFFFFFFF_43E7EFDFFFFFFFFF_01
+0000000000000055_4055400000000000_00
+00000FFFFFFFFFFF_42AFFFFFFFFFFE00_00
+FFFBFFFFF803FFFE_43EFFF7FFFFF007F_01
+0000000000168684_4136868400000000_00
+000007FFFFFFFFFF_429FFFFFFFFFFC00_00
+DFFFFFE00000001E_43EBFFFFFC000000_01
+0000000000000CF5_40A9EA0000000000_00
+000003FFFFFFFFFF_428FFFFFFFFFF800_00
+FFFF00400000FFFF_43EFFFE00800001F_01
+0000000000000022_4041000000000000_00
+000001FFFFFFFFFF_427FFFFFFFFFF000_00
+FBFFFFFFFFFFBDFE_43EF7FFFFFFFFFF7_01
+0000000000001BC9_40BBC90000000000_00
+000000FFFFFFFFFF_426FFFFFFFFFE000_00
+807FFFFFFFFFDFFE_43E00FFFFFFFFFFB_01
+000274E35A70CD76_4303A71AD3866BB0_00
+0000007FFFFFFFFF_425FFFFFFFFFC000_00
+0FFFFFFFFEFFFFFD_43AFFFFFFFFDFFFF_01
+0000000300E73AFC_42080739D7E00000_00
+0000003FFFFFFFFF_424FFFFFFFFF8000_00
+FFC000000001000E_43EFF80000000020_01
+00000000000615E9_411857A400000000_00
+0000001FFFFFFFFF_423FFFFFFFFF0000_00
+0001FFFFFFFFF3FD_42FFFFFFFFFF3FD0_00
+00000000000000B3_4066600000000000_00
+0000000FFFFFFFFF_422FFFFFFFFE0000_00
+000000001FFFBFFF_41BFFFBFFF000000_00
+0000006E6B141E1B_425B9AC50786C000_00
+00000007FFFFFFFF_421FFFFFFFFC0000_00
+FFFFFFFFF60007FF_43EFFFFFFFFEC000_01
+00000003AB310BA6_420D59885D300000_00
+00000003FFFFFFFF_420FFFFFFFF80000_00
+0003FFFFB7FFFFFF_430FFFFDBFFFFFF8_00
+0000000000000195_4079500000000000_00
+00000001FFFFFFFF_41FFFFFFFFF00000_00
+FFFFFFFF8000000B_43EFFFFFFFF00000_01
+00000059BA8D5559_42566EA355564000_00
+00000000FFFFFFFF_41EFFFFFFFE00000_00
+FBFEFFFFFFFFFFF9_43EF7FDFFFFFFFFF_01
+000001B6F062822D_427B6F062822D000_00
+000000007FFFFFFF_41DFFFFFFFC00000_00
+0001000000000082_42F0000000000820_00
+03CEAD9E2FB104A4_438E756CF17D8825_01
+000000003FFFFFFF_41CFFFFFFF800000_00
+000003FFFFFFFF7C_428FFFFFFFFBE000_00
+000000000D681E78_41AAD03CF0000000_00
+000000001FFFFFFF_41BFFFFFFF000000_00
+00002000400001FF_42C000200000FF80_00
+0000000000000058_4056000000000000_00
+000000000FFFFFFF_41AFFFFFFE000000_00
+3FFF80000000003E_43CFFFC000000000_01
+0000000000000095_4062A00000000000_00
+0000000007FFFFFF_419FFFFFFC000000_00
+010000BFFFFFFFFF_4370000BFFFFFFFF_01
+0000009697087B19_4262D2E10F632000_00
+0000000003FFFFFF_418FFFFFF8000000_00
+FBFFFFFFFFEEFFFD_43EF7FFFFFFFFDDF_01
+0000001E64BDFC55_423E64BDFC550000_00
+0000000001FFFFFF_417FFFFFF0000000_00
+FC00000001FFFFFE_43EF800000003FFF_01
+0000D156A62AB849_42EA2AD4C5570920_00
+0000000000FFFFFF_416FFFFFE0000000_00
+FFFFFFF83FEFFFFD_43EFFFFFFF07FDFF_01
+00035354EAE7C259_430A9AA7573E12C8_00
+00000000007FFFFF_415FFFFFC0000000_00
+FFFFFFFFFFFFFF7F_43EFFFFFFFFFFFFF_01
+00000000F4DF3C75_41EE9BE78EA00000_00
+00000000003FFFFF_414FFFFF80000000_00
+FFFA000000001FFF_43EFFF4000000003_01
+0000000000000003_4008000000000000_00
+00000000001FFFFF_413FFFFF00000000_00
+FFFFFFFFFF7FFE40_43EFFFFFFFFFEFFF_01
+0000005B5433CB9B_4256D50CF2E6C000_00
+00000000000FFFFF_412FFFFE00000000_00
+FFFFFDFFDFFDFFFD_43EFFFFFBFFBFFBF_01
+0000000000DEAE1F_416BD5C3E0000000_00
+000000000007FFFF_411FFFFC00000000_00
+FFFFFFFFF0080006_43EFFFFFFFFE0100_01
+000000007735DEC7_41DDCD77B1C00000_00
+000000000003FFFF_410FFFF800000000_00
+00000001FBFFFFFF_41FFBFFFFFF00000_00
+000007757D8B12ED_429DD5F62C4BB400_00
+000000000001FFFF_40FFFFF000000000_00
+FFFFFE07F7FFFFFF_43EFFFFFC0FEFFFF_01
+00002A654064E046_42C532A032702300_00
+000000000000FFFF_40EFFFE000000000_00
+08000000000017FF_43A000000000002F_01
+0000000000000007_401C000000000000_00
+0000000000007FFF_40DFFFC000000000_00
+07FFFFFFFFFFFDF6_439FFFFFFFFFFFF7_01
+00002D78B3D6C3B6_42C6BC59EB61DB00_00
+0000000000003FFF_40CFFF8000000000_00
+0000300004000000_42C8000200000000_00
+000000070B77F34F_421C2DDFCD3C0000_00
+0000000000001FFF_40BFFF0000000000_00
+FFFFFF80006FFFFE_43EFFFFFF0000DFF_01
+0000093EB4D67EC8_42A27D69ACFD9000_00
+0000000000000FFF_40AFFE0000000000_00
+BFFFDFFFFBFFFFFF_43E7FFFBFFFF7FFF_01
+0205CEAF34EA1DC7_43802E7579A750EE_01
+00000000000007FF_409FFC0000000000_00
+00004800007FFFFD_42D200001FFFFF40_00
+0000000000000003_4008000000000000_00
+00000000000003FF_408FF80000000000_00
+0000000200001000_4200000080000000_00
+00000000000760D0_411D834000000000_00
+00000000000001FF_407FF00000000000_00
+01003FFFFFFFFFFC_437003FFFFFFFFFF_01
+02C000708FF1BA51_43860003847F8DD2_01
+00000000000000FF_406FE00000000000_00
+F802000003FFFFFF_43EF004000007FFF_01
+4F9E07DCC0BDC061_43D3E781F7302F70_01
+000000000000007F_405FC00000000000_00
+03FF0000000000FF_438FF80000000007_01
+00000001B9B2A079_41FB9B2A07900000_00
+000000000000003F_404F800000000000_00
+FFF80000000080FF_43EFFF0000000010_01
+00000000005EB5B4_4157AD6D00000000_00
+000000000000001F_403F000000000000_00
+000000000077FBFE_415DFEFF80000000_00
+0000000000DAC607_416B58C0E0000000_00
+000000000000000F_402E000000000000_00
+FFFFFFFEF80000FF_43EFFFFFFFDF0000_01
+00000DC5B9D66984_42AB8B73ACD30800_00
+0000000000000007_401C000000000000_00
+C001FFFFFFF00000_43E8003FFFFFFE00_00
+00003D06B372AA06_42CE8359B9550300_00
+0000000000000003_4008000000000000_00
diff --git a/wally-pipelined/testbench/fp/undy.sh b/wally-pipelined/testbench/fp/undy.sh
new file mode 100755
index 000000000..887dbeaf1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/undy.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+sed -i 's/ /_/g' $1
From 1824b2af1392421f0f86b16d30021299199cbc1a Mon Sep 17 00:00:00 2001
From: bbracker
Date: Thu, 7 Oct 2021 18:55:00 -0400
Subject: [PATCH 07/10] fix div restarting bug
---
wally-pipelined/src/muldiv/intdivrestoring.sv | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/wally-pipelined/src/muldiv/intdivrestoring.sv b/wally-pipelined/src/muldiv/intdivrestoring.sv
index 5ab9b2b8c..12ce38759 100644
--- a/wally-pipelined/src/muldiv/intdivrestoring.sv
+++ b/wally-pipelined/src/muldiv/intdivrestoring.sv
@@ -125,7 +125,7 @@ module intdivrestoring (
DivDoneM = 1;
end
end else if (DivDoneM) begin
- DivDoneM = 0;
+ DivDoneM = StallM;
BusyE = 0;
end
From 55f6584e628f3bbda7f864f2648758ea4c16d0ba Mon Sep 17 00:00:00 2001
From: bbracker
Date: Thu, 7 Oct 2021 19:16:52 -0400
Subject: [PATCH 08/10] update wave-do
---
wally-pipelined/regression/linux-wave.do | 393 +++++++++++------------
1 file changed, 196 insertions(+), 197 deletions(-)
diff --git a/wally-pipelined/regression/linux-wave.do b/wally-pipelined/regression/linux-wave.do
index 7a0ee7bd9..7c7a300bd 100644
--- a/wally-pipelined/regression/linux-wave.do
+++ b/wally-pipelined/regression/linux-wave.do
@@ -2,6 +2,7 @@ onerror {resume}
quietly WaveActivateNextPane {} 0
add wave -noupdate /testbench/clk
add wave -noupdate /testbench/reset
+add wave -noupdate -radix unsigned /testbench/InstrCountW
add wave -noupdate /testbench/dut/hart/SATP_REGW
add wave -noupdate -expand -group {Execution Stage} /testbench/dut/hart/ifu/PCE
add wave -noupdate -expand -group {Execution Stage} /testbench/InstrEName
@@ -30,25 +31,26 @@ add wave -noupdate -expand -group HDU -group traps /testbench/dut/hart/priv/trap
add wave -noupdate -expand -group HDU -group interrupts /testbench/dut/hart/priv/trap/PendingIntsM
add wave -noupdate -expand -group HDU -group interrupts /testbench/dut/hart/priv/trap/CommittedM
add wave -noupdate -expand -group HDU -group interrupts /testbench/dut/hart/priv/trap/InstrValidM
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/BPPredWrongE
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/CSRWritePendingDEM
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/RetM
-add wave -noupdate -expand -group HDU -group hazards -color Pink /testbench/dut/hart/hzu/TrapM
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/LoadStallD
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/StoreStallD
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/ICacheStallF
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/hzu/LSUStall
-add wave -noupdate -expand -group HDU -group hazards /testbench/dut/hart/MulDivStallD
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/BPPredWrongE
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/CSRWritePendingDEM
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/RetM
+add wave -noupdate -expand -group HDU -expand -group hazards -color Pink /testbench/dut/hart/hzu/TrapM
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/LoadStallD
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/StoreStallD
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/ICacheStallF
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/LSUStall
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/MulDivStallD
+add wave -noupdate -expand -group HDU -expand -group hazards /testbench/dut/hart/hzu/DivBusyE
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/hzu/FlushF
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushD
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushE
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushM
add wave -noupdate -expand -group HDU -group Flush -color Yellow /testbench/dut/hart/FlushW
-add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallF
-add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallD
-add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallE
-add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallM
-add wave -noupdate -expand -group HDU -group Stall -color Orange /testbench/dut/hart/StallW
+add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallF
+add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallD
+add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallE
+add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallM
+add wave -noupdate -expand -group HDU -expand -group Stall -color Orange /testbench/dut/hart/StallW
add wave -noupdate -group Bpred -color Orange /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/GHR
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} /testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/BPPredF
add wave -noupdate -group Bpred -expand -group {branch update selection inputs} {/testbench/dut/hart/ifu/bpred/bpred/Predictor/DirPredictor/InstrClassE[0]}
@@ -158,12 +160,12 @@ add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/Write
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/ALUResultE
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcAE
add wave -noupdate -group {alu execution stage} /testbench/dut/hart/ieu/dp/SrcBE
-add wave -noupdate -group PCS /testbench/dut/hart/ifu/PCNextF
-add wave -noupdate -group PCS /testbench/dut/hart/PCF
-add wave -noupdate -group PCS /testbench/dut/hart/ifu/PCD
-add wave -noupdate -group PCS /testbench/dut/hart/PCE
-add wave -noupdate -group PCS /testbench/dut/hart/PCM
-add wave -noupdate -group PCS /testbench/PCW
+add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCNextF
+add wave -noupdate -expand -group PCS /testbench/dut/hart/PCF
+add wave -noupdate -expand -group PCS /testbench/dut/hart/ifu/PCD
+add wave -noupdate -expand -group PCS /testbench/dut/hart/PCE
+add wave -noupdate -expand -group PCS /testbench/dut/hart/PCM
+add wave -noupdate -expand -group PCS /testbench/PCW
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/InstrD
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcAE
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/SrcBE
@@ -175,41 +177,38 @@ add wave -noupdate -group muldiv /testbench/dut/hart/mdu/StallW
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/FlushM
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/FlushW
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/MulDivResultW
-add wave -noupdate -group muldiv /testbench/dut/hart/mdu/genblk1/div/start
-add wave -noupdate -group muldiv /testbench/dut/hart/mdu/DivDoneM
add wave -noupdate -group muldiv /testbench/dut/hart/mdu/DivBusyE
-add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/fsm1/CURRENT_STATE
-add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/N
-add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/D
-add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/Q
-add wave -noupdate -group divider /testbench/dut/hart/mdu/genblk1/div/rem0
-add wave -noupdate -group icache -color Gold /testbench/dut/hart/ifu/icache/controller/CurrState
-add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/controller/NextState
-add wave -noupdate -group icache /testbench/dut/hart/ifu/ITLBMissF
-add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/ITLBWriteF
-add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/ReadLineF
-add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/PCNextIndexF
-add wave -noupdate -group icache /testbench/dut/hart/ifu/icache/ReadLineF
-add wave -noupdate -group icache {/testbench/dut/hart/ifu/icache/MemWay[0]/ValidBits}
-add wave -noupdate -group icache {/testbench/dut/hart/ifu/icache/MemWay[1]/ValidBits}
-add wave -noupdate -group icache {/testbench/dut/hart/ifu/icache/MemWay[2]/ValidBits}
-add wave -noupdate -group icache {/testbench/dut/hart/ifu/icache/MemWay[3]/ValidBits}
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/hit
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spill
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/ICacheStallF
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/SavePC
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/UnalignedSelect
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn
-add wave -noupdate -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/FetchCount
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrReadF
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrAckF
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable
-add wave -noupdate -group icache -expand -group memory /testbench/dut/hart/ifu/icache/ICacheMemWriteData
+add wave -noupdate /testbench/dut/hart/mdu/genblk1/div/StartDivideE
+add wave -noupdate /testbench/dut/hart/mdu/genblk1/div/BusyE
+add wave -noupdate /testbench/dut/hart/mdu/genblk1/div/DivDoneM
+add wave -noupdate /testbench/dut/hart/mdu/genblk1/div/DivInitE
+add wave -noupdate -expand -group icache -color Gold /testbench/dut/hart/ifu/icache/controller/CurrState
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/controller/NextState
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/ITLBMissF
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/ITLBWriteF
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/ReadLineF
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/PCNextIndexF
+add wave -noupdate -expand -group icache /testbench/dut/hart/ifu/icache/ReadLineF
+add wave -noupdate -expand -group icache {/testbench/dut/hart/ifu/icache/MemWay[0]/ValidBits}
+add wave -noupdate -expand -group icache {/testbench/dut/hart/ifu/icache/MemWay[1]/ValidBits}
+add wave -noupdate -expand -group icache {/testbench/dut/hart/ifu/icache/MemWay[2]/ValidBits}
+add wave -noupdate -expand -group icache {/testbench/dut/hart/ifu/icache/MemWay[3]/ValidBits}
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/hit
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spill
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/ICacheStallF
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/SavePC
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/UnalignedSelect
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/spillSave
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntReset
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/PreCntEn
+add wave -noupdate -expand -group icache -expand -group {fsm out and control} /testbench/dut/hart/ifu/icache/controller/CntEn
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/FetchCountFlag
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/FetchCount
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrReadF
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/InstrAckF
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/controller/ICacheMemWriteEnable
+add wave -noupdate -expand -group icache -expand -group memory /testbench/dut/hart/ifu/icache/ICacheMemWriteData
add wave -noupdate -group AHB -color Gold /testbench/dut/hart/ebu/BusState
add wave -noupdate -group AHB /testbench/dut/hart/ebu/NextBusState
add wave -noupdate -group AHB -expand -group {input requests} /testbench/dut/hart/ebu/AtomicMaskedM
@@ -232,133 +231,133 @@ add wave -noupdate -group AHB /testbench/dut/hart/ebu/HADDRD
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HSIZED
add wave -noupdate -group AHB /testbench/dut/hart/ebu/HWRITED
add wave -noupdate -group AHB /testbench/dut/hart/ebu/StallW
-add wave -noupdate -expand -group lsu -expand -group {LSU ARB} /testbench/dut/hart/lsu/arbiter/SelPTW
-add wave -noupdate -expand -group lsu -expand -group dcache -color Gold /testbench/dut/hart/lsu/dcache/dcachefsm/CurrState
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/WalkerPageFaultM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/WriteDataM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SRAMBlockWriteEnableM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SRAMWordWriteEnableM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SRAMWayWriteEnable
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SRAMWordEnable
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SRAMBlockWayWriteEnableM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/SelAdrM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/ReadDataBlockM
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush -radix unsigned /testbench/dut/hart/lsu/dcache/FlushAdr
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/FlushWay
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/VictimDirtyWay
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/VictimTag
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/BasePAdrM
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/FetchCount
-add wave -noupdate -expand -group lsu -expand -group dcache -group flush /testbench/dut/hart/lsu/dcache/CacheableM
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/DCacheMemWriteData
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/SetValid}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/SetDirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[0]/CacheTagMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/DirtyBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/ValidBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[0]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[0]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word1 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[1]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word1 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[1]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word2 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[2]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word2 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[2]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word3 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[3]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word3 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[3]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/DirtyBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/ValidBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/SetDirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WriteWordEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[1]/CacheTagMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word0 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[0]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word0 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[0]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[1]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[1]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word2 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[2]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word2 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[2]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word3 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[3]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word3 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[3]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/SetValid}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/SetDirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[2]/CacheTagMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/DirtyBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/ValidBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word0 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[0]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word0 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[0]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word1 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[1]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word1 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[1]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[2]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[2]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word3 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[3]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word3 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[3]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/SetValid}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/SetDirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ClearDirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/VDWriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[3]/CacheTagMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/DirtyBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ValidBits}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word0 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[0]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word0 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[0]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word1 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[1]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word1 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[1]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word2 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[2]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word2 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[2]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[3]/CacheDataMem/WriteEnable}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[3]/CacheDataMem/StoredData}
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/SetValid
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/ClearValid
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/SetDirty
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/ClearDirty
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/RAdr
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/WayHit}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/Valid}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/Dirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/ReadTag}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WayHit}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/Valid}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/Dirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/ReadTag}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/WayHit}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/Valid}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/Dirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/ReadTag}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/WayHit}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/Valid}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/Dirty}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ReadTag}
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/WayHit
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataBlockWayMaskedM
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataWordM
-add wave -noupdate -expand -group lsu -expand -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataWordMuxM
-add wave -noupdate -expand -group lsu -expand -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimTag
-add wave -noupdate -expand -group lsu -expand -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimWay
-add wave -noupdate -expand -group lsu -expand -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimDirtyWay
-add wave -noupdate -expand -group lsu -expand -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimDirty
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/MemRWM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/MemAdrE
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/MemPAdrM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/Funct3M
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/Funct7M
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/AtomicM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/CacheableM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/FlushDCacheM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/WriteDataM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/ReadDataM
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {CPU side} /testbench/dut/hart/lsu/dcache/DCacheStall
-add wave -noupdate -expand -group lsu -expand -group dcache -group status /testbench/dut/hart/lsu/dcache/WayHit
-add wave -noupdate -expand -group lsu -expand -group dcache -group status -color {Medium Orchid} /testbench/dut/hart/lsu/dcache/CacheHit
-add wave -noupdate -expand -group lsu -expand -group dcache -group status /testbench/dut/hart/lsu/dcache/FetchCount
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBPAdr
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBRead
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBWrite
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBAck
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/HRDATA
-add wave -noupdate -expand -group lsu -expand -group dcache -expand -group {Memory Side} /testbench/dut/hart/lsu/dcache/HWDATA
-add wave -noupdate -expand -group lsu -expand -group dcache /testbench/dut/hart/lsu/dcache/FlushWay
+add wave -noupdate -expand -group lsu -group {LSU ARB} /testbench/dut/hart/lsu/arbiter/SelPTW
+add wave -noupdate -expand -group lsu -group dcache -color Gold /testbench/dut/hart/lsu/dcache/dcachefsm/CurrState
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/WalkerPageFaultM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/WriteDataM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SRAMBlockWriteEnableM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SRAMWordWriteEnableM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SRAMWayWriteEnable
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SRAMWordEnable
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SRAMBlockWayWriteEnableM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/SelAdrM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/ReadDataBlockM
+add wave -noupdate -expand -group lsu -group dcache -group flush -radix unsigned /testbench/dut/hart/lsu/dcache/FlushAdr
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/FlushWay
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/VictimDirtyWay
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/VictimTag
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/BasePAdrM
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/FetchCount
+add wave -noupdate -expand -group lsu -group dcache -group flush /testbench/dut/hart/lsu/dcache/CacheableM
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/DCacheMemWriteData
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/SetValid}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/SetDirty}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[0]/CacheTagMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/DirtyBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/ValidBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[0]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[0]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word1 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[1]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word1 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[1]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word2 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[2]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word2 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[2]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word3 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[3]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way0 -expand -group Way0Word3 {/testbench/dut/hart/lsu/dcache/MemWay[0]/word[3]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/DirtyBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/ValidBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/SetDirty}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WriteWordEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[1]/CacheTagMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word0 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[0]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word0 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[0]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[1]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[1]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word2 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[2]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word2 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[2]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word3 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[3]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way1 -expand -group Way1Word3 {/testbench/dut/hart/lsu/dcache/MemWay[1]/word[3]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/SetValid}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/SetDirty}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[2]/CacheTagMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/DirtyBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/ValidBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word0 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[0]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word0 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[0]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word1 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[1]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word1 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[1]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[2]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[2]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word3 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[3]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way2 -expand -group Way2Word3 {/testbench/dut/hart/lsu/dcache/MemWay[2]/word[3]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/SetValid}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/SetDirty}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ClearDirty}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/VDWriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -label TAG {/testbench/dut/hart/lsu/dcache/MemWay[3]/CacheTagMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/DirtyBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ValidBits}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word0 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[0]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word0 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[0]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word1 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[1]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word1 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[1]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word2 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[2]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word2 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[2]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[3]/CacheDataMem/WriteEnable}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group way3 -expand -group Way3Word3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/word[3]/CacheDataMem/StoredData}
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/SetValid
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/ClearValid
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/SetDirty
+add wave -noupdate -expand -group lsu -group dcache -expand -group {Cache SRAM writes} -group valid/dirty /testbench/dut/hart/lsu/dcache/ClearDirty
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/RAdr
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/WayHit}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/Valid}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/Dirty}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way0 {/testbench/dut/hart/lsu/dcache/MemWay[0]/ReadTag}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/WayHit}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/Valid}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/Dirty}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way1 {/testbench/dut/hart/lsu/dcache/MemWay[1]/ReadTag}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/WayHit}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/Valid}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/Dirty}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way2 {/testbench/dut/hart/lsu/dcache/MemWay[2]/ReadTag}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/WayHit}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/Valid}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/Dirty}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} -expand -group way3 {/testbench/dut/hart/lsu/dcache/MemWay[3]/ReadTag}
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/WayHit
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataBlockWayMaskedM
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataWordM
+add wave -noupdate -expand -group lsu -group dcache -group {Cache SRAM read} /testbench/dut/hart/lsu/dcache/ReadDataWordMuxM
+add wave -noupdate -expand -group lsu -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimTag
+add wave -noupdate -expand -group lsu -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimWay
+add wave -noupdate -expand -group lsu -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimDirtyWay
+add wave -noupdate -expand -group lsu -group dcache -group Victim /testbench/dut/hart/lsu/dcache/VictimDirty
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/MemRWM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/MemAdrE
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/MemPAdrM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/Funct3M
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/Funct7M
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/AtomicM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/CacheableM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/FlushDCacheM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/WriteDataM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/ReadDataM
+add wave -noupdate -expand -group lsu -group dcache -group {CPU side} /testbench/dut/hart/lsu/dcache/DCacheStall
+add wave -noupdate -expand -group lsu -group dcache -group status /testbench/dut/hart/lsu/dcache/WayHit
+add wave -noupdate -expand -group lsu -group dcache -group status -color {Medium Orchid} /testbench/dut/hart/lsu/dcache/CacheHit
+add wave -noupdate -expand -group lsu -group dcache -group status /testbench/dut/hart/lsu/dcache/FetchCount
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBPAdr
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBRead
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBWrite
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/AHBAck
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/HRDATA
+add wave -noupdate -expand -group lsu -group dcache -group {Memory Side} /testbench/dut/hart/lsu/dcache/HWDATA
+add wave -noupdate -expand -group lsu -group dcache /testbench/dut/hart/lsu/dcache/FlushWay
add wave -noupdate -expand -group lsu -group dtlb /testbench/dut/hart/lsu/dmmu/genblk1/tlb/tlbcontrol/EffectivePrivilegeMode
add wave -noupdate -expand -group lsu -group dtlb /testbench/dut/hart/lsu/dmmu/genblk1/tlb/tlbcontrol/Translate
add wave -noupdate -expand -group lsu -group dtlb /testbench/dut/hart/lsu/dmmu/genblk1/tlb/tlbcontrol/DisableTranslation
@@ -383,19 +382,19 @@ add wave -noupdate -expand -group lsu -group pma /testbench/dut/hart/lsu/dmmu/PM
add wave -noupdate -expand -group lsu -group pmp /testbench/dut/hart/lsu/dmmu/PMPInstrAccessFaultF
add wave -noupdate -expand -group lsu -group pmp /testbench/dut/hart/lsu/dmmu/PMPLoadAccessFaultM
add wave -noupdate -expand -group lsu -group pmp /testbench/dut/hart/lsu/dmmu/PMPStoreAccessFaultM
-add wave -noupdate -expand -group lsu -group ptwalker -color Gold /testbench/dut/hart/lsu/hptw/genblk1/WalkerState
-add wave -noupdate -expand -group lsu -group ptwalker /testbench/dut/hart/lsu/hptw/PCF
-add wave -noupdate -expand -group lsu -group ptwalker /testbench/dut/hart/lsu/hptw/genblk1/TranslationVAdr
-add wave -noupdate -expand -group lsu -group ptwalker /testbench/dut/hart/lsu/hptw/TranslationPAdr
-add wave -noupdate -expand -group lsu -group ptwalker /testbench/dut/hart/lsu/hptw/HPTWReadPTE
-add wave -noupdate -expand -group lsu -group ptwalker /testbench/dut/hart/lsu/hptw/PTE
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/ITLBMissF
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/DTLBMissM
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/ITLBWriteF
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/DTLBWriteM
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerInstrPageFaultF
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerLoadPageFaultM
-add wave -noupdate -expand -group lsu -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerStorePageFaultM
+add wave -noupdate -expand -group lsu -expand -group ptwalker -color Gold /testbench/dut/hart/lsu/hptw/genblk1/WalkerState
+add wave -noupdate -expand -group lsu -expand -group ptwalker /testbench/dut/hart/lsu/hptw/PCF
+add wave -noupdate -expand -group lsu -expand -group ptwalker /testbench/dut/hart/lsu/hptw/genblk1/TranslationVAdr
+add wave -noupdate -expand -group lsu -expand -group ptwalker /testbench/dut/hart/lsu/hptw/TranslationPAdr
+add wave -noupdate -expand -group lsu -expand -group ptwalker /testbench/dut/hart/lsu/hptw/HPTWReadPTE
+add wave -noupdate -expand -group lsu -expand -group ptwalker /testbench/dut/hart/lsu/hptw/PTE
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/ITLBMissF
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/DTLBMissM
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/ITLBWriteF
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/DTLBWriteM
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerInstrPageFaultF
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerLoadPageFaultM
+add wave -noupdate -expand -group lsu -expand -group ptwalker -expand -group types /testbench/dut/hart/lsu/hptw/WalkerStorePageFaultM
add wave -noupdate -group csr -color Gray90 -radix unsigned /testbench/dut/hart/priv/csr/genblk1/counters/genblk1/INSTRET_REGW
add wave -noupdate -group csr /testbench/dut/hart/priv/csr/genblk1/counters/genblk1/HPMCOUNTER_REGW
add wave -noupdate -group csr -expand -group machine /testbench/dut/hart/priv/csr/genblk1/csrm/MIE_REGW
@@ -516,8 +515,8 @@ add wave -noupdate /testbench/dut/uncore/dtim/memwrite
add wave -noupdate /testbench/dut/uncore/dtim/HWDATA
add wave -noupdate /testbench/dut/uncore/dtim/risingHREADYTim
TreeUpdate [SetDefaultTree]
-WaveRestoreCursors {{Cursor 23} {209183247 ns} 0} {{Cursor 9} {209026335 ns} 0}
-quietly wave cursor active 1
+WaveRestoreCursors {{Cursor 23} {209183247 ns} 0} {{Cursor 5} {37454355 ns} 0}
+quietly wave cursor active 2
configure wave -namecolwidth 250
configure wave -valuecolwidth 314
configure wave -justifyvalue left
@@ -532,4 +531,4 @@ configure wave -griddelta 40
configure wave -timeline 0
configure wave -timelineunits ns
update
-WaveRestoreZoom {209183151 ns} {209183343 ns}
+WaveRestoreZoom {37454022 ns} {37455158 ns}
From 6dd85b80a20691ad1779719d68692c93d2693c2f Mon Sep 17 00:00:00 2001
From: David Harris
Date: Thu, 7 Oct 2021 23:03:45 -0400
Subject: [PATCH 09/10] Included TestFloat and SoftFloat
---
.../testbench/fp/SoftFloat-3e/COPYING.txt | 37 +
.../testbench/fp/SoftFloat-3e/README.html | 49 +
.../testbench/fp/SoftFloat-3e/README.txt | 21 +
.../SoftFloat-3e/build/Linux-386-GCC/Makefile | 325 +
.../build/Linux-386-GCC/platform.h | 53 +
.../build/Linux-386-SSE2-GCC/Makefile | 325 +
.../build/Linux-386-SSE2-GCC/platform.h | 53 +
.../build/Linux-ARM-VFPv2-GCC/Makefile | 323 +
.../build/Linux-ARM-VFPv2-GCC/platform.h | 53 +
.../build/Linux-x86_64-GCC/Makefile | 390 ++
.../build/Linux-x86_64-GCC/platform.h | 54 +
.../SoftFloat-3e/build/Win32-MinGW/Makefile | 325 +
.../SoftFloat-3e/build/Win32-MinGW/platform.h | 53 +
.../build/Win32-SSE2-MinGW/Makefile | 325 +
.../build/Win32-SSE2-MinGW/platform.h | 53 +
.../build/Win64-MinGW-w64/Makefile | 390 ++
.../build/Win64-MinGW-w64/platform.h | 54 +
.../build/template-FAST_INT64/Makefile | 391 ++
.../build/template-FAST_INT64/platform.h | 50 +
.../build/template-not-FAST_INT64/Makefile | 325 +
.../build/template-not-FAST_INT64/platform.h | 50 +
.../SoftFloat-3e/doc/SoftFloat-history.html | 258 +
.../fp/SoftFloat-3e/doc/SoftFloat-source.html | 686 +++
.../fp/SoftFloat-3e/doc/SoftFloat.html | 1527 +++++
.../source/8086-SSE/extF80M_isSignalingNaN.c | 57 +
.../source/8086-SSE/f128M_isSignalingNaN.c | 60 +
.../source/8086-SSE/s_commonNaNToExtF80M.c | 56 +
.../source/8086-SSE/s_commonNaNToExtF80UI.c | 56 +
.../source/8086-SSE/s_commonNaNToF128M.c | 56 +
.../source/8086-SSE/s_commonNaNToF128UI.c | 55 +
.../source/8086-SSE/s_commonNaNToF16UI.c | 51 +
.../source/8086-SSE/s_commonNaNToF32UI.c | 51 +
.../source/8086-SSE/s_commonNaNToF64UI.c | 53 +
.../source/8086-SSE/s_extF80MToCommonNaN.c | 62 +
.../source/8086-SSE/s_extF80UIToCommonNaN.c | 62 +
.../source/8086-SSE/s_f128MToCommonNaN.c | 62 +
.../source/8086-SSE/s_f128UIToCommonNaN.c | 65 +
.../source/8086-SSE/s_f16UIToCommonNaN.c | 59 +
.../source/8086-SSE/s_f32UIToCommonNaN.c | 59 +
.../source/8086-SSE/s_f64UIToCommonNaN.c | 59 +
.../source/8086-SSE/s_propagateNaNExtF80M.c | 107 +
.../source/8086-SSE/s_propagateNaNExtF80UI.c | 106 +
.../source/8086-SSE/s_propagateNaNF128M.c | 76 +
.../source/8086-SSE/s_propagateNaNF128UI.c | 81 +
.../source/8086-SSE/s_propagateNaNF16UI.c | 63 +
.../source/8086-SSE/s_propagateNaNF32UI.c | 63 +
.../source/8086-SSE/s_propagateNaNF64UI.c | 63 +
.../source/8086-SSE/softfloat_raiseFlags.c | 52 +
.../SoftFloat-3e/source/8086-SSE/specialize.h | 376 ++
.../source/8086/extF80M_isSignalingNaN.c | 57 +
.../source/8086/f128M_isSignalingNaN.c | 60 +
.../source/8086/s_commonNaNToExtF80M.c | 56 +
.../source/8086/s_commonNaNToExtF80UI.c | 56 +
.../source/8086/s_commonNaNToF128M.c | 56 +
.../source/8086/s_commonNaNToF128UI.c | 55 +
.../source/8086/s_commonNaNToF16UI.c | 51 +
.../source/8086/s_commonNaNToF32UI.c | 51 +
.../source/8086/s_commonNaNToF64UI.c | 53 +
.../source/8086/s_extF80MToCommonNaN.c | 62 +
.../source/8086/s_extF80UIToCommonNaN.c | 62 +
.../source/8086/s_f128MToCommonNaN.c | 62 +
.../source/8086/s_f128UIToCommonNaN.c | 65 +
.../source/8086/s_f16UIToCommonNaN.c | 59 +
.../source/8086/s_f32UIToCommonNaN.c | 59 +
.../source/8086/s_f64UIToCommonNaN.c | 59 +
.../source/8086/s_propagateNaNExtF80M.c | 107 +
.../source/8086/s_propagateNaNExtF80UI.c | 106 +
.../source/8086/s_propagateNaNF128M.c | 108 +
.../source/8086/s_propagateNaNF128UI.c | 105 +
.../source/8086/s_propagateNaNF16UI.c | 84 +
.../source/8086/s_propagateNaNF32UI.c | 84 +
.../source/8086/s_propagateNaNF64UI.c | 84 +
.../source/8086/softfloat_raiseFlags.c | 52 +
.../fp/SoftFloat-3e/source/8086/specialize.h | 376 ++
.../extF80M_isSignalingNaN.c | 57 +
.../f128M_isSignalingNaN.c | 60 +
.../s_commonNaNToExtF80M.c | 57 +
.../s_commonNaNToExtF80UI.c | 57 +
.../ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c | 60 +
.../s_commonNaNToF128UI.c | 56 +
.../ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c | 5 +
.../ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c | 5 +
.../ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c | 5 +
.../s_extF80MToCommonNaN.c | 5 +
.../s_extF80UIToCommonNaN.c | 5 +
.../ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c | 5 +
.../s_f128UIToCommonNaN.c | 5 +
.../ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c | 5 +
.../ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c | 5 +
.../ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c | 5 +
.../s_propagateNaNExtF80M.c | 74 +
.../s_propagateNaNExtF80UI.c | 73 +
.../s_propagateNaNF128M.c | 68 +
.../s_propagateNaNF128UI.c | 73 +
.../s_propagateNaNF16UI.c | 58 +
.../s_propagateNaNF32UI.c | 58 +
.../s_propagateNaNF64UI.c | 58 +
.../softfloat_raiseFlags.c | 52 +
.../source/ARM-VFPv2-defaultNaN/specialize.h | 407 ++
.../source/ARM-VFPv2/extF80M_isSignalingNaN.c | 57 +
.../source/ARM-VFPv2/f128M_isSignalingNaN.c | 60 +
.../source/ARM-VFPv2/s_commonNaNToExtF80M.c | 56 +
.../source/ARM-VFPv2/s_commonNaNToExtF80UI.c | 56 +
.../source/ARM-VFPv2/s_commonNaNToF128M.c | 56 +
.../source/ARM-VFPv2/s_commonNaNToF128UI.c | 55 +
.../source/ARM-VFPv2/s_commonNaNToF16UI.c | 51 +
.../source/ARM-VFPv2/s_commonNaNToF32UI.c | 51 +
.../source/ARM-VFPv2/s_commonNaNToF64UI.c | 53 +
.../source/ARM-VFPv2/s_extF80MToCommonNaN.c | 62 +
.../source/ARM-VFPv2/s_extF80UIToCommonNaN.c | 62 +
.../source/ARM-VFPv2/s_f128MToCommonNaN.c | 62 +
.../source/ARM-VFPv2/s_f128UIToCommonNaN.c | 65 +
.../source/ARM-VFPv2/s_f16UIToCommonNaN.c | 59 +
.../source/ARM-VFPv2/s_f32UIToCommonNaN.c | 59 +
.../source/ARM-VFPv2/s_f64UIToCommonNaN.c | 59 +
.../source/ARM-VFPv2/s_propagateNaNExtF80M.c | 86 +
.../source/ARM-VFPv2/s_propagateNaNExtF80UI.c | 83 +
.../source/ARM-VFPv2/s_propagateNaNF128M.c | 77 +
.../source/ARM-VFPv2/s_propagateNaNF128UI.c | 83 +
.../source/ARM-VFPv2/s_propagateNaNF16UI.c | 63 +
.../source/ARM-VFPv2/s_propagateNaNF32UI.c | 63 +
.../source/ARM-VFPv2/s_propagateNaNF64UI.c | 63 +
.../source/ARM-VFPv2/softfloat_raiseFlags.c | 52 +
.../source/ARM-VFPv2/specialize.h | 376 ++
.../fp/SoftFloat-3e/source/extF80M_add.c | 100 +
.../fp/SoftFloat-3e/source/extF80M_div.c | 194 +
.../fp/SoftFloat-3e/source/extF80M_eq.c | 98 +
.../source/extF80M_eq_signaling.c | 92 +
.../fp/SoftFloat-3e/source/extF80M_le.c | 106 +
.../fp/SoftFloat-3e/source/extF80M_le_quiet.c | 112 +
.../fp/SoftFloat-3e/source/extF80M_lt.c | 106 +
.../fp/SoftFloat-3e/source/extF80M_lt_quiet.c | 112 +
.../fp/SoftFloat-3e/source/extF80M_mul.c | 139 +
.../fp/SoftFloat-3e/source/extF80M_rem.c | 204 +
.../SoftFloat-3e/source/extF80M_roundToInt.c | 176 +
.../fp/SoftFloat-3e/source/extF80M_sqrt.c | 180 +
.../fp/SoftFloat-3e/source/extF80M_sub.c | 100 +
.../fp/SoftFloat-3e/source/extF80M_to_f128M.c | 125 +
.../fp/SoftFloat-3e/source/extF80M_to_f16.c | 112 +
.../fp/SoftFloat-3e/source/extF80M_to_f32.c | 112 +
.../fp/SoftFloat-3e/source/extF80M_to_f64.c | 112 +
.../fp/SoftFloat-3e/source/extF80M_to_i32.c | 100 +
.../source/extF80M_to_i32_r_minMag.c | 120 +
.../fp/SoftFloat-3e/source/extF80M_to_i64.c | 97 +
.../source/extF80M_to_i64_r_minMag.c | 115 +
.../fp/SoftFloat-3e/source/extF80M_to_ui32.c | 101 +
.../source/extF80M_to_ui32_r_minMag.c | 111 +
.../fp/SoftFloat-3e/source/extF80M_to_ui64.c | 97 +
.../source/extF80M_to_ui64_r_minMag.c | 108 +
.../fp/SoftFloat-3e/source/extF80_add.c | 80 +
.../fp/SoftFloat-3e/source/extF80_div.c | 203 +
.../fp/SoftFloat-3e/source/extF80_eq.c | 73 +
.../SoftFloat-3e/source/extF80_eq_signaling.c | 67 +
.../source/extF80_isSignalingNaN.c | 51 +
.../fp/SoftFloat-3e/source/extF80_le.c | 73 +
.../fp/SoftFloat-3e/source/extF80_le_quiet.c | 78 +
.../fp/SoftFloat-3e/source/extF80_lt.c | 73 +
.../fp/SoftFloat-3e/source/extF80_lt_quiet.c | 78 +
.../fp/SoftFloat-3e/source/extF80_mul.c | 158 +
.../fp/SoftFloat-3e/source/extF80_rem.c | 225 +
.../SoftFloat-3e/source/extF80_roundToInt.c | 154 +
.../fp/SoftFloat-3e/source/extF80_sqrt.c | 176 +
.../fp/SoftFloat-3e/source/extF80_sub.c | 80 +
.../fp/SoftFloat-3e/source/extF80_to_f128.c | 75 +
.../fp/SoftFloat-3e/source/extF80_to_f16.c | 96 +
.../fp/SoftFloat-3e/source/extF80_to_f32.c | 96 +
.../fp/SoftFloat-3e/source/extF80_to_f64.c | 96 +
.../fp/SoftFloat-3e/source/extF80_to_i32.c | 83 +
.../source/extF80_to_i32_r_minMag.c | 97 +
.../fp/SoftFloat-3e/source/extF80_to_i64.c | 89 +
.../source/extF80_to_i64_r_minMag.c | 94 +
.../fp/SoftFloat-3e/source/extF80_to_ui32.c | 83 +
.../source/extF80_to_ui32_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/extF80_to_ui64.c | 84 +
.../source/extF80_to_ui64_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/f128M_add.c | 97 +
.../fp/SoftFloat-3e/source/f128M_div.c | 187 +
.../fp/SoftFloat-3e/source/f128M_eq.c | 100 +
.../SoftFloat-3e/source/f128M_eq_signaling.c | 92 +
.../fp/SoftFloat-3e/source/f128M_le.c | 93 +
.../fp/SoftFloat-3e/source/f128M_le_quiet.c | 96 +
.../fp/SoftFloat-3e/source/f128M_lt.c | 93 +
.../fp/SoftFloat-3e/source/f128M_lt_quiet.c | 96 +
.../fp/SoftFloat-3e/source/f128M_mul.c | 158 +
.../fp/SoftFloat-3e/source/f128M_mulAdd.c | 92 +
.../fp/SoftFloat-3e/source/f128M_rem.c | 182 +
.../fp/SoftFloat-3e/source/f128M_roundToInt.c | 223 +
.../fp/SoftFloat-3e/source/f128M_sqrt.c | 228 +
.../fp/SoftFloat-3e/source/f128M_sub.c | 97 +
.../fp/SoftFloat-3e/source/f128M_to_extF80M.c | 101 +
.../fp/SoftFloat-3e/source/f128M_to_f16.c | 113 +
.../fp/SoftFloat-3e/source/f128M_to_f32.c | 109 +
.../fp/SoftFloat-3e/source/f128M_to_f64.c | 112 +
.../fp/SoftFloat-3e/source/f128M_to_i32.c | 98 +
.../source/f128M_to_i32_r_minMag.c | 106 +
.../fp/SoftFloat-3e/source/f128M_to_i64.c | 102 +
.../source/f128M_to_i64_r_minMag.c | 124 +
.../fp/SoftFloat-3e/source/f128M_to_ui32.c | 98 +
.../source/f128M_to_ui32_r_minMag.c | 102 +
.../fp/SoftFloat-3e/source/f128M_to_ui64.c | 102 +
.../source/f128M_to_ui64_r_minMag.c | 114 +
.../fp/SoftFloat-3e/source/f128_add.c | 78 +
.../fp/SoftFloat-3e/source/f128_div.c | 199 +
.../fp/SoftFloat-3e/source/f128_eq.c | 73 +
.../SoftFloat-3e/source/f128_eq_signaling.c | 67 +
.../SoftFloat-3e/source/f128_isSignalingNaN.c | 51 +
.../fp/SoftFloat-3e/source/f128_le.c | 72 +
.../fp/SoftFloat-3e/source/f128_le_quiet.c | 78 +
.../fp/SoftFloat-3e/source/f128_lt.c | 72 +
.../fp/SoftFloat-3e/source/f128_lt_quiet.c | 78 +
.../fp/SoftFloat-3e/source/f128_mul.c | 163 +
.../fp/SoftFloat-3e/source/f128_mulAdd.c | 63 +
.../fp/SoftFloat-3e/source/f128_rem.c | 190 +
.../fp/SoftFloat-3e/source/f128_roundToInt.c | 172 +
.../fp/SoftFloat-3e/source/f128_sqrt.c | 201 +
.../fp/SoftFloat-3e/source/f128_sub.c | 78 +
.../fp/SoftFloat-3e/source/f128_to_extF80.c | 109 +
.../fp/SoftFloat-3e/source/f128_to_f16.c | 95 +
.../fp/SoftFloat-3e/source/f128_to_f32.c | 95 +
.../fp/SoftFloat-3e/source/f128_to_f64.c | 100 +
.../fp/SoftFloat-3e/source/f128_to_i32.c | 85 +
.../source/f128_to_i32_r_minMag.c | 100 +
.../fp/SoftFloat-3e/source/f128_to_i64.c | 95 +
.../source/f128_to_i64_r_minMag.c | 113 +
.../fp/SoftFloat-3e/source/f128_to_ui32.c | 86 +
.../source/f128_to_ui32_r_minMag.c | 89 +
.../fp/SoftFloat-3e/source/f128_to_ui64.c | 96 +
.../source/f128_to_ui64_r_minMag.c | 105 +
.../fp/SoftFloat-3e/source/f16_add.c | 70 +
.../fp/SoftFloat-3e/source/f16_div.c | 186 +
.../testbench/fp/SoftFloat-3e/source/f16_eq.c | 66 +
.../fp/SoftFloat-3e/source/f16_eq_signaling.c | 61 +
.../SoftFloat-3e/source/f16_isSignalingNaN.c | 51 +
.../testbench/fp/SoftFloat-3e/source/f16_le.c | 66 +
.../fp/SoftFloat-3e/source/f16_le_quiet.c | 71 +
.../testbench/fp/SoftFloat-3e/source/f16_lt.c | 66 +
.../fp/SoftFloat-3e/source/f16_lt_quiet.c | 71 +
.../fp/SoftFloat-3e/source/f16_mul.c | 140 +
.../fp/SoftFloat-3e/source/f16_mulAdd.c | 60 +
.../fp/SoftFloat-3e/source/f16_rem.c | 171 +
.../fp/SoftFloat-3e/source/f16_roundToInt.c | 120 +
.../fp/SoftFloat-3e/source/f16_sqrt.c | 136 +
.../fp/SoftFloat-3e/source/f16_sub.c | 70 +
.../fp/SoftFloat-3e/source/f16_to_extF80.c | 101 +
.../fp/SoftFloat-3e/source/f16_to_extF80M.c | 111 +
.../fp/SoftFloat-3e/source/f16_to_f128.c | 96 +
.../fp/SoftFloat-3e/source/f16_to_f128M.c | 111 +
.../fp/SoftFloat-3e/source/f16_to_f32.c | 93 +
.../fp/SoftFloat-3e/source/f16_to_f64.c | 93 +
.../fp/SoftFloat-3e/source/f16_to_i32.c | 87 +
.../SoftFloat-3e/source/f16_to_i32_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/f16_to_i64.c | 87 +
.../SoftFloat-3e/source/f16_to_i64_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/f16_to_ui32.c | 84 +
.../source/f16_to_ui32_r_minMag.c | 87 +
.../fp/SoftFloat-3e/source/f16_to_ui64.c | 96 +
.../source/f16_to_ui64_r_minMag.c | 87 +
.../fp/SoftFloat-3e/source/f32_add.c | 70 +
.../fp/SoftFloat-3e/source/f32_div.c | 180 +
.../testbench/fp/SoftFloat-3e/source/f32_eq.c | 66 +
.../fp/SoftFloat-3e/source/f32_eq_signaling.c | 61 +
.../SoftFloat-3e/source/f32_isSignalingNaN.c | 51 +
.../testbench/fp/SoftFloat-3e/source/f32_le.c | 66 +
.../fp/SoftFloat-3e/source/f32_le_quiet.c | 71 +
.../testbench/fp/SoftFloat-3e/source/f32_lt.c | 66 +
.../fp/SoftFloat-3e/source/f32_lt_quiet.c | 71 +
.../fp/SoftFloat-3e/source/f32_mul.c | 137 +
.../fp/SoftFloat-3e/source/f32_mulAdd.c | 60 +
.../fp/SoftFloat-3e/source/f32_rem.c | 168 +
.../fp/SoftFloat-3e/source/f32_roundToInt.c | 120 +
.../fp/SoftFloat-3e/source/f32_sqrt.c | 121 +
.../fp/SoftFloat-3e/source/f32_sub.c | 70 +
.../fp/SoftFloat-3e/source/f32_to_extF80.c | 101 +
.../fp/SoftFloat-3e/source/f32_to_extF80M.c | 111 +
.../fp/SoftFloat-3e/source/f32_to_f128.c | 96 +
.../fp/SoftFloat-3e/source/f32_to_f128M.c | 115 +
.../fp/SoftFloat-3e/source/f32_to_f16.c | 88 +
.../fp/SoftFloat-3e/source/f32_to_f64.c | 93 +
.../fp/SoftFloat-3e/source/f32_to_i32.c | 84 +
.../SoftFloat-3e/source/f32_to_i32_r_minMag.c | 89 +
.../fp/SoftFloat-3e/source/f32_to_i64.c | 96 +
.../SoftFloat-3e/source/f32_to_i64_r_minMag.c | 94 +
.../fp/SoftFloat-3e/source/f32_to_ui32.c | 84 +
.../source/f32_to_ui32_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/f32_to_ui64.c | 96 +
.../source/f32_to_ui64_r_minMag.c | 90 +
.../fp/SoftFloat-3e/source/f64_add.c | 74 +
.../fp/SoftFloat-3e/source/f64_div.c | 172 +
.../testbench/fp/SoftFloat-3e/source/f64_eq.c | 66 +
.../fp/SoftFloat-3e/source/f64_eq_signaling.c | 61 +
.../SoftFloat-3e/source/f64_isSignalingNaN.c | 51 +
.../testbench/fp/SoftFloat-3e/source/f64_le.c | 67 +
.../fp/SoftFloat-3e/source/f64_le_quiet.c | 72 +
.../testbench/fp/SoftFloat-3e/source/f64_lt.c | 67 +
.../fp/SoftFloat-3e/source/f64_lt_quiet.c | 72 +
.../fp/SoftFloat-3e/source/f64_mul.c | 150 +
.../fp/SoftFloat-3e/source/f64_mulAdd.c | 60 +
.../fp/SoftFloat-3e/source/f64_rem.c | 189 +
.../fp/SoftFloat-3e/source/f64_roundToInt.c | 120 +
.../fp/SoftFloat-3e/source/f64_sqrt.c | 133 +
.../fp/SoftFloat-3e/source/f64_sub.c | 74 +
.../fp/SoftFloat-3e/source/f64_to_extF80.c | 101 +
.../fp/SoftFloat-3e/source/f64_to_extF80M.c | 111 +
.../fp/SoftFloat-3e/source/f64_to_f128.c | 98 +
.../fp/SoftFloat-3e/source/f64_to_f128M.c | 117 +
.../fp/SoftFloat-3e/source/f64_to_f16.c | 88 +
.../fp/SoftFloat-3e/source/f64_to_f32.c | 88 +
.../fp/SoftFloat-3e/source/f64_to_i32.c | 82 +
.../SoftFloat-3e/source/f64_to_i32_r_minMag.c | 96 +
.../fp/SoftFloat-3e/source/f64_to_i64.c | 103 +
.../SoftFloat-3e/source/f64_to_i64_r_minMag.c | 100 +
.../fp/SoftFloat-3e/source/f64_to_ui32.c | 82 +
.../source/f64_to_ui32_r_minMag.c | 88 +
.../fp/SoftFloat-3e/source/f64_to_ui64.c | 103 +
.../source/f64_to_ui64_r_minMag.c | 93 +
.../fp/SoftFloat-3e/source/i32_to_extF80.c | 65 +
.../fp/SoftFloat-3e/source/i32_to_extF80M.c | 78 +
.../fp/SoftFloat-3e/source/i32_to_f128.c | 64 +
.../fp/SoftFloat-3e/source/i32_to_f128M.c | 81 +
.../fp/SoftFloat-3e/source/i32_to_f16.c | 71 +
.../fp/SoftFloat-3e/source/i32_to_f32.c | 58 +
.../fp/SoftFloat-3e/source/i32_to_f64.c | 65 +
.../fp/SoftFloat-3e/source/i64_to_extF80.c | 65 +
.../fp/SoftFloat-3e/source/i64_to_extF80M.c | 78 +
.../fp/SoftFloat-3e/source/i64_to_f128.c | 72 +
.../fp/SoftFloat-3e/source/i64_to_f128M.c | 92 +
.../fp/SoftFloat-3e/source/i64_to_f16.c | 70 +
.../fp/SoftFloat-3e/source/i64_to_f32.c | 70 +
.../fp/SoftFloat-3e/source/i64_to_f64.c | 58 +
.../SoftFloat-3e/source/include/internals.h | 278 +
.../fp/SoftFloat-3e/source/include/opts-GCC.h | 114 +
.../source/include/primitiveTypes.h | 85 +
.../SoftFloat-3e/source/include/primitives.h | 1160 ++++
.../SoftFloat-3e/source/include/softfloat.h | 372 ++
.../source/include/softfloat_types.h | 81 +
.../fp/SoftFloat-3e/source/s_add128.c | 55 +
.../fp/SoftFloat-3e/source/s_add256M.c | 65 +
.../fp/SoftFloat-3e/source/s_addCarryM.c | 70 +
.../fp/SoftFloat-3e/source/s_addComplCarryM.c | 70 +
.../fp/SoftFloat-3e/source/s_addExtF80M.c | 186 +
.../fp/SoftFloat-3e/source/s_addF128M.c | 211 +
.../testbench/fp/SoftFloat-3e/source/s_addM.c | 70 +
.../fp/SoftFloat-3e/source/s_addMagsExtF80.c | 156 +
.../fp/SoftFloat-3e/source/s_addMagsF128.c | 154 +
.../fp/SoftFloat-3e/source/s_addMagsF16.c | 183 +
.../fp/SoftFloat-3e/source/s_addMagsF32.c | 126 +
.../fp/SoftFloat-3e/source/s_addMagsF64.c | 128 +
.../SoftFloat-3e/source/s_approxRecip32_1.c | 66 +
.../source/s_approxRecipSqrt32_1.c | 73 +
.../source/s_approxRecipSqrt_1Ks.c | 49 +
.../SoftFloat-3e/source/s_approxRecip_1Ks.c | 49 +
.../fp/SoftFloat-3e/source/s_compare128M.c | 62 +
.../fp/SoftFloat-3e/source/s_compare96M.c | 62 +
.../source/s_compareNonnormExtF80M.c | 111 +
.../source/s_countLeadingZeros16.c | 60 +
.../source/s_countLeadingZeros32.c | 64 +
.../source/s_countLeadingZeros64.c | 73 +
.../source/s_countLeadingZeros8.c | 59 +
.../fp/SoftFloat-3e/source/s_eq128.c | 51 +
.../fp/SoftFloat-3e/source/s_invalidExtF80M.c | 49 +
.../fp/SoftFloat-3e/source/s_invalidF128M.c | 53 +
.../fp/SoftFloat-3e/source/s_isNaNF128M.c | 57 +
.../fp/SoftFloat-3e/source/s_le128.c | 51 +
.../fp/SoftFloat-3e/source/s_lt128.c | 51 +
.../fp/SoftFloat-3e/source/s_mul128By32.c | 58 +
.../fp/SoftFloat-3e/source/s_mul128MTo256M.c | 100 +
.../fp/SoftFloat-3e/source/s_mul128To256M.c | 71 +
.../source/s_mul64ByShifted32To128.c | 56 +
.../fp/SoftFloat-3e/source/s_mul64To128.c | 66 +
.../fp/SoftFloat-3e/source/s_mul64To128M.c | 68 +
.../fp/SoftFloat-3e/source/s_mulAddF128.c | 350 ++
.../fp/SoftFloat-3e/source/s_mulAddF128M.c | 382 ++
.../fp/SoftFloat-3e/source/s_mulAddF16.c | 226 +
.../fp/SoftFloat-3e/source/s_mulAddF32.c | 224 +
.../fp/SoftFloat-3e/source/s_mulAddF64.c | 496 ++
.../fp/SoftFloat-3e/source/s_negXM.c | 63 +
.../fp/SoftFloat-3e/source/s_normExtF80SigM.c | 52 +
.../source/s_normRoundPackMToExtF80M.c | 78 +
.../source/s_normRoundPackMToF128M.c | 73 +
.../source/s_normRoundPackToExtF80.c | 71 +
.../source/s_normRoundPackToF128.c | 81 +
.../source/s_normRoundPackToF16.c | 58 +
.../source/s_normRoundPackToF32.c | 58 +
.../source/s_normRoundPackToF64.c | 58 +
.../source/s_normSubnormalExtF80Sig.c | 52 +
.../source/s_normSubnormalF128Sig.c | 65 +
.../source/s_normSubnormalF128SigM.c | 61 +
.../source/s_normSubnormalF16Sig.c | 52 +
.../source/s_normSubnormalF32Sig.c | 52 +
.../source/s_normSubnormalF64Sig.c | 52 +
.../fp/SoftFloat-3e/source/s_remStepMBy32.c | 86 +
.../fp/SoftFloat-3e/source/s_roundMToI64.c | 102 +
.../fp/SoftFloat-3e/source/s_roundMToUI64.c | 98 +
.../source/s_roundPackMToExtF80M.c | 256 +
.../SoftFloat-3e/source/s_roundPackMToF128M.c | 178 +
.../SoftFloat-3e/source/s_roundPackToExtF80.c | 256 +
.../SoftFloat-3e/source/s_roundPackToF128.c | 171 +
.../fp/SoftFloat-3e/source/s_roundPackToF16.c | 113 +
.../fp/SoftFloat-3e/source/s_roundPackToF32.c | 113 +
.../fp/SoftFloat-3e/source/s_roundPackToF64.c | 117 +
.../fp/SoftFloat-3e/source/s_roundToI32.c | 98 +
.../fp/SoftFloat-3e/source/s_roundToI64.c | 101 +
.../fp/SoftFloat-3e/source/s_roundToUI32.c | 93 +
.../fp/SoftFloat-3e/source/s_roundToUI64.c | 97 +
.../fp/SoftFloat-3e/source/s_shiftLeftM.c | 91 +
.../SoftFloat-3e/source/s_shiftNormSigF128M.c | 78 +
.../SoftFloat-3e/source/s_shiftRightJam128.c | 69 +
.../source/s_shiftRightJam128Extra.c | 77 +
.../SoftFloat-3e/source/s_shiftRightJam256M.c | 126 +
.../SoftFloat-3e/source/s_shiftRightJam32.c | 51 +
.../SoftFloat-3e/source/s_shiftRightJam64.c | 51 +
.../source/s_shiftRightJam64Extra.c | 62 +
.../fp/SoftFloat-3e/source/s_shiftRightJamM.c | 101 +
.../fp/SoftFloat-3e/source/s_shiftRightM.c | 91 +
.../SoftFloat-3e/source/s_shortShiftLeft128.c | 55 +
.../source/s_shortShiftLeft64To96M.c | 56 +
.../SoftFloat-3e/source/s_shortShiftLeftM.c | 70 +
.../source/s_shortShiftRight128.c | 55 +
.../source/s_shortShiftRightExtendM.c | 73 +
.../source/s_shortShiftRightJam128.c | 60 +
.../source/s_shortShiftRightJam128Extra.c | 59 +
.../source/s_shortShiftRightJam64.c | 50 +
.../source/s_shortShiftRightJam64Extra.c | 56 +
.../source/s_shortShiftRightJamM.c | 72 +
.../SoftFloat-3e/source/s_shortShiftRightM.c | 70 +
.../fp/SoftFloat-3e/source/s_sub128.c | 55 +
.../fp/SoftFloat-3e/source/s_sub1XM.c | 60 +
.../fp/SoftFloat-3e/source/s_sub256M.c | 65 +
.../testbench/fp/SoftFloat-3e/source/s_subM.c | 70 +
.../fp/SoftFloat-3e/source/s_subMagsExtF80.c | 158 +
.../fp/SoftFloat-3e/source/s_subMagsF128.c | 139 +
.../fp/SoftFloat-3e/source/s_subMagsF16.c | 187 +
.../fp/SoftFloat-3e/source/s_subMagsF32.c | 143 +
.../fp/SoftFloat-3e/source/s_subMagsF64.c | 141 +
.../source/s_tryPropagateNaNExtF80M.c | 64 +
.../source/s_tryPropagateNaNF128M.c | 55 +
.../fp/SoftFloat-3e/source/softfloat_state.c | 52 +
.../fp/SoftFloat-3e/source/ui32_to_extF80.c | 59 +
.../fp/SoftFloat-3e/source/ui32_to_extF80M.c | 74 +
.../fp/SoftFloat-3e/source/ui32_to_f128.c | 60 +
.../fp/SoftFloat-3e/source/ui32_to_f128M.c | 76 +
.../fp/SoftFloat-3e/source/ui32_to_f16.c | 65 +
.../fp/SoftFloat-3e/source/ui32_to_f32.c | 57 +
.../fp/SoftFloat-3e/source/ui32_to_f64.c | 59 +
.../fp/SoftFloat-3e/source/ui64_to_extF80.c | 59 +
.../fp/SoftFloat-3e/source/ui64_to_extF80M.c | 74 +
.../fp/SoftFloat-3e/source/ui64_to_f128.c | 68 +
.../fp/SoftFloat-3e/source/ui64_to_f128M.c | 86 +
.../fp/SoftFloat-3e/source/ui64_to_f16.c | 64 +
.../fp/SoftFloat-3e/source/ui64_to_f32.c | 64 +
.../fp/SoftFloat-3e/source/ui64_to_f64.c | 59 +
.../testbench/fp/TestFloat-3e/COPYING.txt | 37 +
.../testbench/fp/TestFloat-3e/README.html | 82 +
.../testbench/fp/TestFloat-3e/README.txt | 26 +
.../TestFloat-3e/build/Linux-386-GCC/Makefile | 355 ++
.../build/Linux-386-GCC/platform.h | 49 +
.../build/Linux-386-SSE2-GCC/Makefile | 355 ++
.../build/Linux-386-SSE2-GCC/platform.h | 49 +
.../build/Linux-ARM-VFPv2-GCC/Makefile | 353 ++
.../build/Linux-ARM-VFPv2-GCC/platform.h | 49 +
.../build/Linux-x86_64-GCC/Makefile | 355 ++
.../build/Linux-x86_64-GCC/platform.h | 49 +
.../TestFloat-3e/build/Win32-MinGW/Makefile | 355 ++
.../TestFloat-3e/build/Win32-MinGW/platform.h | 49 +
.../build/Win32-SSE2-MinGW/Makefile | 355 ++
.../build/Win32-SSE2-MinGW/platform.h | 49 +
.../build/Win64-MinGW-w64/Makefile | 355 ++
.../build/Win64-MinGW-w64/platform.h | 49 +
.../fp/TestFloat-3e/build/template/Makefile | 353 ++
.../fp/TestFloat-3e/build/template/platform.h | 51 +
.../TestFloat-3e/doc/TestFloat-general.html | 1148 ++++
.../TestFloat-3e/doc/TestFloat-history.html | 272 +
.../fp/TestFloat-3e/doc/TestFloat-source.html | 639 ++
.../fp/TestFloat-3e/doc/testfloat.html | 286 +
.../fp/TestFloat-3e/doc/testfloat_gen.html | 367 ++
.../fp/TestFloat-3e/doc/testfloat_ver.html | 270 +
.../fp/TestFloat-3e/doc/testsoftfloat.html | 236 +
.../fp/TestFloat-3e/doc/timesoftfloat.html | 196 +
.../testbench/fp/TestFloat-3e/source/fail.c | 59 +
.../testbench/fp/TestFloat-3e/source/fail.h | 41 +
.../fp/TestFloat-3e/source/functionInfos.c | 290 +
.../fp/TestFloat-3e/source/functions.h | 324 +
.../fp/TestFloat-3e/source/functions_common.c | 60 +
.../fp/TestFloat-3e/source/genCases.h | 114 +
.../fp/TestFloat-3e/source/genCases_common.c | 58 +
.../fp/TestFloat-3e/source/genCases_extF80.c | 920 +++
.../fp/TestFloat-3e/source/genCases_f128.c | 1090 ++++
.../fp/TestFloat-3e/source/genCases_f16.c | 585 ++
.../fp/TestFloat-3e/source/genCases_f32.c | 664 +++
.../fp/TestFloat-3e/source/genCases_f64.c | 808 +++
.../fp/TestFloat-3e/source/genCases_i32.c | 362 ++
.../fp/TestFloat-3e/source/genCases_i64.c | 554 ++
.../fp/TestFloat-3e/source/genCases_ui32.c | 323 +
.../fp/TestFloat-3e/source/genCases_ui64.c | 483 ++
.../source/genCases_writeTestsTotal.c | 63 +
.../fp/TestFloat-3e/source/genLoops.c | 2890 +++++++++
.../fp/TestFloat-3e/source/genLoops.h | 354 ++
.../testbench/fp/TestFloat-3e/source/random.c | 138 +
.../testbench/fp/TestFloat-3e/source/random.h | 49 +
.../fp/TestFloat-3e/source/readHex.c | 190 +
.../fp/TestFloat-3e/source/readHex.h | 46 +
.../fp/TestFloat-3e/source/slowfloat.c | 3749 ++++++++++++
.../fp/TestFloat-3e/source/slowfloat.h | 298 +
.../source/standardFunctionInfos.c | 471 ++
.../fp/TestFloat-3e/source/subj-C/subjfloat.c | 856 +++
.../source/subj-C/subjfloat_config.h | 133 +
.../fp/TestFloat-3e/source/subjfloat.h | 516 ++
.../TestFloat-3e/source/subjfloat_functions.c | 1810 ++++++
.../fp/TestFloat-3e/source/testLoops.h | 578 ++
.../fp/TestFloat-3e/source/testLoops_common.c | 47 +
.../source/test_a_extF80_z_f128.c | 107 +
.../TestFloat-3e/source/test_a_extF80_z_f16.c | 107 +
.../TestFloat-3e/source/test_a_extF80_z_f32.c | 107 +
.../TestFloat-3e/source/test_a_extF80_z_f64.c | 107 +
.../source/test_a_extF80_z_i32_rx.c | 105 +
.../source/test_a_extF80_z_i32_x.c | 104 +
.../source/test_a_extF80_z_i64_rx.c | 106 +
.../source/test_a_extF80_z_i64_x.c | 105 +
.../source/test_a_extF80_z_ui32_rx.c | 103 +
.../source/test_a_extF80_z_ui32_x.c | 102 +
.../source/test_a_extF80_z_ui64_rx.c | 103 +
.../source/test_a_extF80_z_ui64_x.c | 102 +
.../source/test_a_f128_z_extF80.c | 107 +
.../TestFloat-3e/source/test_a_f128_z_f16.c | 107 +
.../TestFloat-3e/source/test_a_f128_z_f32.c | 107 +
.../TestFloat-3e/source/test_a_f128_z_f64.c | 107 +
.../source/test_a_f128_z_i32_rx.c | 104 +
.../TestFloat-3e/source/test_a_f128_z_i32_x.c | 103 +
.../source/test_a_f128_z_i64_rx.c | 105 +
.../TestFloat-3e/source/test_a_f128_z_i64_x.c | 104 +
.../source/test_a_f128_z_ui32_rx.c | 103 +
.../source/test_a_f128_z_ui32_x.c | 102 +
.../source/test_a_f128_z_ui64_rx.c | 103 +
.../source/test_a_f128_z_ui64_x.c | 102 +
.../TestFloat-3e/source/test_a_f16_z_extF80.c | 106 +
.../TestFloat-3e/source/test_a_f16_z_f128.c | 106 +
.../fp/TestFloat-3e/source/test_a_f16_z_f32.c | 104 +
.../fp/TestFloat-3e/source/test_a_f16_z_f64.c | 104 +
.../TestFloat-3e/source/test_a_f16_z_i32_rx.c | 104 +
.../TestFloat-3e/source/test_a_f16_z_i32_x.c | 103 +
.../TestFloat-3e/source/test_a_f16_z_i64_rx.c | 105 +
.../TestFloat-3e/source/test_a_f16_z_i64_x.c | 104 +
.../source/test_a_f16_z_ui32_rx.c | 103 +
.../TestFloat-3e/source/test_a_f16_z_ui32_x.c | 102 +
.../source/test_a_f16_z_ui64_rx.c | 103 +
.../TestFloat-3e/source/test_a_f16_z_ui64_x.c | 102 +
.../TestFloat-3e/source/test_a_f32_z_extF80.c | 106 +
.../TestFloat-3e/source/test_a_f32_z_f128.c | 106 +
.../fp/TestFloat-3e/source/test_a_f32_z_f16.c | 104 +
.../fp/TestFloat-3e/source/test_a_f32_z_f64.c | 104 +
.../TestFloat-3e/source/test_a_f32_z_i32_rx.c | 100 +
.../TestFloat-3e/source/test_a_f32_z_i32_x.c | 99 +
.../TestFloat-3e/source/test_a_f32_z_i64_rx.c | 101 +
.../TestFloat-3e/source/test_a_f32_z_i64_x.c | 100 +
.../source/test_a_f32_z_ui32_rx.c | 99 +
.../TestFloat-3e/source/test_a_f32_z_ui32_x.c | 98 +
.../source/test_a_f32_z_ui64_rx.c | 99 +
.../TestFloat-3e/source/test_a_f32_z_ui64_x.c | 98 +
.../TestFloat-3e/source/test_a_f64_z_extF80.c | 106 +
.../TestFloat-3e/source/test_a_f64_z_f128.c | 106 +
.../fp/TestFloat-3e/source/test_a_f64_z_f16.c | 104 +
.../fp/TestFloat-3e/source/test_a_f64_z_f32.c | 104 +
.../TestFloat-3e/source/test_a_f64_z_i32_rx.c | 104 +
.../TestFloat-3e/source/test_a_f64_z_i32_x.c | 103 +
.../TestFloat-3e/source/test_a_f64_z_i64_rx.c | 105 +
.../TestFloat-3e/source/test_a_f64_z_i64_x.c | 104 +
.../source/test_a_f64_z_ui32_rx.c | 103 +
.../TestFloat-3e/source/test_a_f64_z_ui32_x.c | 102 +
.../source/test_a_f64_z_ui64_rx.c | 103 +
.../TestFloat-3e/source/test_a_f64_z_ui64_x.c | 102 +
.../TestFloat-3e/source/test_a_i32_z_extF80.c | 101 +
.../TestFloat-3e/source/test_a_i32_z_f128.c | 101 +
.../fp/TestFloat-3e/source/test_a_i32_z_f16.c | 99 +
.../fp/TestFloat-3e/source/test_a_i32_z_f32.c | 95 +
.../fp/TestFloat-3e/source/test_a_i32_z_f64.c | 99 +
.../TestFloat-3e/source/test_a_i64_z_extF80.c | 101 +
.../TestFloat-3e/source/test_a_i64_z_f128.c | 101 +
.../fp/TestFloat-3e/source/test_a_i64_z_f16.c | 99 +
.../fp/TestFloat-3e/source/test_a_i64_z_f32.c | 95 +
.../fp/TestFloat-3e/source/test_a_i64_z_f64.c | 99 +
.../source/test_a_ui32_z_extF80.c | 101 +
.../TestFloat-3e/source/test_a_ui32_z_f128.c | 101 +
.../TestFloat-3e/source/test_a_ui32_z_f16.c | 99 +
.../TestFloat-3e/source/test_a_ui32_z_f32.c | 95 +
.../TestFloat-3e/source/test_a_ui32_z_f64.c | 99 +
.../source/test_a_ui64_z_extF80.c | 101 +
.../TestFloat-3e/source/test_a_ui64_z_f128.c | 101 +
.../TestFloat-3e/source/test_a_ui64_z_f16.c | 99 +
.../TestFloat-3e/source/test_a_ui64_z_f32.c | 95 +
.../TestFloat-3e/source/test_a_ui64_z_f64.c | 99 +
.../source/test_ab_extF80_z_bool.c | 104 +
.../TestFloat-3e/source/test_ab_f128_z_bool.c | 103 +
.../TestFloat-3e/source/test_ab_f16_z_bool.c | 103 +
.../TestFloat-3e/source/test_ab_f32_z_bool.c | 99 +
.../TestFloat-3e/source/test_ab_f64_z_bool.c | 103 +
.../fp/TestFloat-3e/source/test_abcz_f128.c | 125 +
.../fp/TestFloat-3e/source/test_abcz_f16.c | 111 +
.../fp/TestFloat-3e/source/test_abcz_f32.c | 107 +
.../fp/TestFloat-3e/source/test_abcz_f64.c | 111 +
.../fp/TestFloat-3e/source/test_abz_extF80.c | 113 +
.../fp/TestFloat-3e/source/test_abz_f128.c | 108 +
.../fp/TestFloat-3e/source/test_abz_f16.c | 108 +
.../fp/TestFloat-3e/source/test_abz_f32.c | 104 +
.../fp/TestFloat-3e/source/test_abz_f64.c | 108 +
.../fp/TestFloat-3e/source/test_az_extF80.c | 107 +
.../TestFloat-3e/source/test_az_extF80_rx.c | 112 +
.../fp/TestFloat-3e/source/test_az_f128.c | 107 +
.../fp/TestFloat-3e/source/test_az_f128_rx.c | 110 +
.../fp/TestFloat-3e/source/test_az_f16.c | 104 +
.../fp/TestFloat-3e/source/test_az_f16_rx.c | 109 +
.../fp/TestFloat-3e/source/test_az_f32.c | 100 +
.../fp/TestFloat-3e/source/test_az_f32_rx.c | 105 +
.../fp/TestFloat-3e/source/test_az_f64.c | 104 +
.../fp/TestFloat-3e/source/test_az_f64_rx.c | 109 +
.../fp/TestFloat-3e/source/testfloat.c | 1715 ++++++
.../fp/TestFloat-3e/source/testfloat_gen.c | 953 +++
.../fp/TestFloat-3e/source/testfloat_ver.c | 795 +++
.../fp/TestFloat-3e/source/testsoftfloat.c | 1127 ++++
.../fp/TestFloat-3e/source/timesoftfloat.c | 5060 ++++++++++++++++
.../fp/TestFloat-3e/source/uint128.c | 99 +
.../fp/TestFloat-3e/source/uint128.h | 76 +
.../fp/TestFloat-3e/source/uint128_inline.c | 56 +
.../fp/TestFloat-3e/source/verCases.h | 193 +
.../fp/TestFloat-3e/source/verCases_common.c | 138 +
.../fp/TestFloat-3e/source/verCases_inline.c | 138 +
.../source/verCases_writeFunctionName.c | 79 +
.../fp/TestFloat-3e/source/verLoops.c | 5283 +++++++++++++++++
.../fp/TestFloat-3e/source/verLoops.h | 320 +
.../fp/TestFloat-3e/source/writeCase.h | 97 +
.../TestFloat-3e/source/writeCase_a_extF80M.c | 55 +
.../TestFloat-3e/source/writeCase_a_f128M.c | 55 +
.../fp/TestFloat-3e/source/writeCase_a_f16.c | 55 +
.../fp/TestFloat-3e/source/writeCase_a_f32.c | 51 +
.../fp/TestFloat-3e/source/writeCase_a_f64.c | 55 +
.../fp/TestFloat-3e/source/writeCase_a_ui32.c | 51 +
.../fp/TestFloat-3e/source/writeCase_a_ui64.c | 51 +
.../source/writeCase_ab_extF80M.c | 62 +
.../TestFloat-3e/source/writeCase_ab_f128M.c | 57 +
.../fp/TestFloat-3e/source/writeCase_ab_f16.c | 57 +
.../fp/TestFloat-3e/source/writeCase_ab_f32.c | 53 +
.../fp/TestFloat-3e/source/writeCase_ab_f64.c | 57 +
.../TestFloat-3e/source/writeCase_abc_f128M.c | 61 +
.../TestFloat-3e/source/writeCase_abc_f16.c | 59 +
.../TestFloat-3e/source/writeCase_abc_f32.c | 55 +
.../TestFloat-3e/source/writeCase_abc_f64.c | 59 +
.../fp/TestFloat-3e/source/writeCase_z_bool.c | 59 +
.../TestFloat-3e/source/writeCase_z_extF80M.c | 67 +
.../TestFloat-3e/source/writeCase_z_f128M.c | 67 +
.../fp/TestFloat-3e/source/writeCase_z_f16.c | 67 +
.../fp/TestFloat-3e/source/writeCase_z_f32.c | 63 +
.../fp/TestFloat-3e/source/writeCase_z_f64.c | 67 +
.../fp/TestFloat-3e/source/writeCase_z_ui32.c | 62 +
.../fp/TestFloat-3e/source/writeCase_z_ui64.c | 62 +
.../fp/TestFloat-3e/source/writeHex.c | 224 +
.../fp/TestFloat-3e/source/writeHex.h | 61 +
655 files changed, 101460 insertions(+)
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/README.html
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/README.txt
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_mulAdd.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f128_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_mulAdd.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f16_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_mulAdd.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f32_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_add.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_div.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_eq.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_eq_signaling.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_isSignalingNaN.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_le.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_le_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_lt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_lt_quiet.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_mul.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_mulAdd.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_rem.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_roundToInt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_sqrt.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_sub.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_i32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_i32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_i64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_i64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_ui32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_ui32_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_ui64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/f64_to_ui64_r_minMag.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i32_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/i64_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/internals.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/opts-GCC.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/primitiveTypes.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/primitives.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/softfloat.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/include/softfloat_types.h
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_add128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_add256M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addCarryM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addComplCarryM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addMagsExtF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addMagsF128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addMagsF16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addMagsF32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_addMagsF64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_approxRecip32_1.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_approxRecipSqrt32_1.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_approxRecipSqrt_1Ks.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_approxRecip_1Ks.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_compare128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_compare96M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_compareNonnormExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_countLeadingZeros16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_countLeadingZeros32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_countLeadingZeros64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_countLeadingZeros8.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_eq128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_invalidExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_invalidF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_isNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_le128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_lt128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul128By32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul128MTo256M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul128To256M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul64ByShifted32To128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul64To128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mul64To128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mulAddF128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mulAddF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mulAddF16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mulAddF32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_mulAddF64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_negXM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normExtF80SigM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackMToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackMToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackToExtF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackToF128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackToF16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackToF32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normRoundPackToF64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalExtF80Sig.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalF128Sig.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalF128SigM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalF16Sig.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalF32Sig.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_normSubnormalF64Sig.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_remStepMBy32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundMToI64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundMToUI64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackMToExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackMToF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackToExtF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackToF128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackToF16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackToF32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundPackToF64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundToI32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundToI64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundToUI32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_roundToUI64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftLeftM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftNormSigF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam128Extra.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam256M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJam64Extra.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightJamM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shiftRightM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftLeft128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftLeft64To96M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftLeftM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRight128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightExtendM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightJam128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightJam128Extra.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightJam64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightJam64Extra.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightJamM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_shortShiftRightM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_sub128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_sub1XM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_sub256M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subM.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subMagsExtF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subMagsF128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subMagsF16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subMagsF32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_subMagsF64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_tryPropagateNaNExtF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/s_tryPropagateNaNF128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/softfloat_state.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui32_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_extF80.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_f128.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_f128M.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_f16.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_f32.c
create mode 100644 wally-pipelined/testbench/fp/SoftFloat-3e/source/ui64_to_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/COPYING.txt
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/README.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/README.txt
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-386-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-386-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-386-SSE2-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-386-SSE2-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-x86_64-GCC/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Linux-x86_64-GCC/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win32-MinGW/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win32-MinGW/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win32-SSE2-MinGW/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win32-SSE2-MinGW/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win64-MinGW-w64/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/Win64-MinGW-w64/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/template/Makefile
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/build/template/platform.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/TestFloat-general.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/TestFloat-history.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/TestFloat-source.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/testfloat.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/testfloat_gen.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/testfloat_ver.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/testsoftfloat.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/doc/timesoftfloat.html
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/fail.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/fail.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/functionInfos.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/functions.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/functions_common.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_common.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_i32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_i64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_ui32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_ui64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genCases_writeTestsTotal.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genLoops.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/genLoops.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/random.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/random.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/readHex.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/readHex.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/slowfloat.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/slowfloat.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/standardFunctionInfos.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/subj-C/subjfloat.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/subj-C/subjfloat_config.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/subjfloat.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/subjfloat_functions.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testLoops.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testLoops_common.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_i32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_i32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_i64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_i64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_ui32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_ui32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_ui64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_extF80_z_ui64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_i32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_i32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_i64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_i64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_ui32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_ui32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_ui64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f128_z_ui64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_i32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_i32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_i64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_i64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_ui32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_ui32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_ui64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f16_z_ui64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_i32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_i32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_i64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_i64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_ui32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_ui32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_ui64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f32_z_ui64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_i32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_i32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_i64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_i64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_ui32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_ui32_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_ui64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_f64_z_ui64_x.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i32_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i32_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i32_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i32_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i32_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i64_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i64_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i64_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i64_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_i64_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui32_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui32_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui32_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui32_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui32_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui64_z_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui64_z_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui64_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui64_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_a_ui64_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_ab_extF80_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_ab_f128_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_ab_f16_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_ab_f32_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_ab_f64_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abcz_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abcz_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abcz_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abcz_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abz_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abz_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abz_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abz_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_abz_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_extF80.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_extF80_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f128_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f16_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f32_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/test_az_f64_rx.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testfloat.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testfloat_gen.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testfloat_ver.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/testsoftfloat.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/timesoftfloat.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/uint128.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/uint128.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/uint128_inline.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verCases.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verCases_common.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verCases_inline.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verCases_writeFunctionName.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verLoops.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/verLoops.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase.h
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_f128M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_ui32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_a_ui64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_ab_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_ab_f128M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_ab_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_ab_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_ab_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_abc_f128M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_abc_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_abc_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_abc_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_bool.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_extF80M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_f128M.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_f16.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_f32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_f64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_ui32.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeCase_z_ui64.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeHex.c
create mode 100644 wally-pipelined/testbench/fp/TestFloat-3e/source/writeHex.h
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt b/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt
new file mode 100644
index 000000000..9c05d49ca
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/COPYING.txt
@@ -0,0 +1,37 @@
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/README.html b/wally-pipelined/testbench/fp/SoftFloat-3e/README.html
new file mode 100644
index 000000000..7989e0c26
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/README.html
@@ -0,0 +1,49 @@
+
+
+
+
+Berkeley SoftFloat Package Overview
+
+
+
+
+Package Overview for Berkeley SoftFloat Release 3e
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Berkeley SoftFloat is a software implementation of binary floating-point that
+conforms to the IEEE Standard for Floating-Point Arithmetic.
+SoftFloat is distributed in the form of C source code.
+Building the SoftFloat sources generates a library file (typically
+softfloat.a
or libsoftfloat.a
) containing the
+floating-point subroutines.
+
+
+
+The SoftFloat package is documented in the following files in the
+doc
subdirectory:
+
+
+
+Other files in the package comprise the source code for SoftFloat.
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt b/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt
new file mode 100644
index 000000000..f819baa5c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/README.txt
@@ -0,0 +1,21 @@
+
+Package Overview for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+Berkeley SoftFloat is a software implementation of binary floating-point
+that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat
+is distributed in the form of C source code. Building the SoftFloat sources
+generates a library file (typically "softfloat.a" or "libsoftfloat.a")
+containing the floating-point subroutines.
+
+The SoftFloat package is documented in the following files in the "doc"
+subdirectory:
+
+ SoftFloat.html Documentation for using the SoftFloat functions.
+ SoftFloat-source.html Documentation for building SoftFloat.
+ SoftFloat-history.html History of the major changes to SoftFloat.
+
+Other files in the package comprise the source code for SoftFloat.
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile
new file mode 100644
index 000000000..418160051
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile
new file mode 100644
index 000000000..1cf6f5e1a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-386-SSE2-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
new file mode 100644
index 000000000..2565fe56c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/Makefile
@@ -0,0 +1,323 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= ARM-VFPv2
+
+SOFTFLOAT_OPTS ?= -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-ARM-VFPv2-GCC/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile
new file mode 100644
index 000000000..570337825
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/Makefile
@@ -0,0 +1,390 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration -DSOFTFLOAT_FAST_INT64 \
+ $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h
new file mode 100644
index 000000000..2fccb6c09
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Linux-x86_64-GCC/platform.h
@@ -0,0 +1,54 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#define SOFTFLOAT_INTRINSIC_INT128 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile
new file mode 100644
index 000000000..418160051
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-MinGW/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile
new file mode 100644
index 000000000..1cf6f5e1a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ gcc -c -Werror-implicit-function-declaration $(SOFTFLOAT_OPTS) \
+ $(C_INCLUDES) -O2 -o $@
+MAKELIB = ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h
new file mode 100644
index 000000000..420aa4e04
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win32-SSE2-MinGW/platform.h
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile
new file mode 100644
index 000000000..05bbf5bb5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/Makefile
@@ -0,0 +1,390 @@
+
+#=============================================================================
+#
+# This Makefile is part of the SoftFloat IEEE Floating-Point Arithmetic
+# Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+SOURCE_DIR ?= ../../source
+SPECIALIZE_TYPE ?= 8086-SSE
+
+SOFTFLOAT_OPTS ?= \
+ -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+ -DSOFTFLOAT_FAST_DIV64TO32
+
+DELETE = rm -f
+C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+COMPILE_C = \
+ x86_64-w64-mingw32-gcc -c -Werror-implicit-function-declaration \
+ -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+MAKELIB = x86_64-w64-mingw32-ar crs $@
+
+OBJ = .o
+LIB = .a
+
+OTHER_HEADERS = $(SOURCE_DIR)/include/opts-GCC.h
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h
new file mode 100644
index 000000000..2fccb6c09
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/Win64-MinGW-w64/platform.h
@@ -0,0 +1,54 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#ifdef __GNUC_STDC_INLINE__
+#define INLINE inline
+#else
+#define INLINE extern inline
+#endif
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+#define SOFTFLOAT_BUILTIN_CLZ 1
+#define SOFTFLOAT_INTRINSIC_INT128 1
+#include "opts-GCC.h"
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile
new file mode 100644
index 000000000..c5005e6e3
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/Makefile
@@ -0,0 +1,391 @@
+
+#=============================================================================
+#
+# This Makefile template is part of the SoftFloat IEEE Floating-Point
+# Arithmetic Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+# Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+==> SOURCE_DIR ?= ../../source
+==> SPECIALIZE_TYPE ?= 8086
+
+==> SOFTFLOAT_OPTS ?= \
+==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+==> -DSOFTFLOAT_FAST_DIV64TO32
+
+==> DELETE = rm -f
+==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+==> COMPILE_C = \
+==> cc -c -DSOFTFLOAT_FAST_INT64 $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+==> MAKELIB = ar crs $@
+
+==> OBJ = .o
+==> LIB = .a
+
+==> OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_eq128$(OBJ) \
+ s_le128$(OBJ) \
+ s_lt128$(OBJ) \
+ s_shortShiftLeft128$(OBJ) \
+ s_shortShiftRight128$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJam64Extra$(OBJ) \
+ s_shortShiftRightJam128$(OBJ) \
+ s_shortShiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJam64Extra$(OBJ) \
+ s_shiftRightJam128$(OBJ) \
+ s_shiftRightJam128Extra$(OBJ) \
+ s_shiftRightJam256M$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_add128$(OBJ) \
+ s_add256M$(OBJ) \
+ s_sub128$(OBJ) \
+ s_sub256M$(OBJ) \
+ s_mul64ByShifted32To128$(OBJ) \
+ s_mul64To128$(OBJ) \
+ s_mul128By32$(OBJ) \
+ s_mul128To256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80UIToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80UI$(OBJ) \
+ s_propagateNaNExtF80UI$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128UIToCommonNaN$(OBJ) \
+ s_commonNaNToF128UI$(OBJ) \
+ s_propagateNaNF128UI$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_normSubnormalExtF80Sig$(OBJ) \
+ s_roundPackToExtF80$(OBJ) \
+ s_normRoundPackToExtF80$(OBJ) \
+ s_addMagsExtF80$(OBJ) \
+ s_subMagsExtF80$(OBJ) \
+ s_normSubnormalF128Sig$(OBJ) \
+ s_roundPackToF128$(OBJ) \
+ s_normRoundPackToF128$(OBJ) \
+ s_addMagsF128$(OBJ) \
+ s_subMagsF128$(OBJ) \
+ s_mulAddF128$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80_to_ui32$(OBJ) \
+ extF80_to_ui64$(OBJ) \
+ extF80_to_i32$(OBJ) \
+ extF80_to_i64$(OBJ) \
+ extF80_to_ui32_r_minMag$(OBJ) \
+ extF80_to_ui64_r_minMag$(OBJ) \
+ extF80_to_i32_r_minMag$(OBJ) \
+ extF80_to_i64_r_minMag$(OBJ) \
+ extF80_to_f16$(OBJ) \
+ extF80_to_f32$(OBJ) \
+ extF80_to_f64$(OBJ) \
+ extF80_to_f128$(OBJ) \
+ extF80_roundToInt$(OBJ) \
+ extF80_add$(OBJ) \
+ extF80_sub$(OBJ) \
+ extF80_mul$(OBJ) \
+ extF80_div$(OBJ) \
+ extF80_rem$(OBJ) \
+ extF80_sqrt$(OBJ) \
+ extF80_eq$(OBJ) \
+ extF80_le$(OBJ) \
+ extF80_lt$(OBJ) \
+ extF80_eq_signaling$(OBJ) \
+ extF80_le_quiet$(OBJ) \
+ extF80_lt_quiet$(OBJ) \
+ extF80_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128_to_ui32$(OBJ) \
+ f128_to_ui64$(OBJ) \
+ f128_to_i32$(OBJ) \
+ f128_to_i64$(OBJ) \
+ f128_to_ui32_r_minMag$(OBJ) \
+ f128_to_ui64_r_minMag$(OBJ) \
+ f128_to_i32_r_minMag$(OBJ) \
+ f128_to_i64_r_minMag$(OBJ) \
+ f128_to_f16$(OBJ) \
+ f128_to_f32$(OBJ) \
+ f128_to_extF80$(OBJ) \
+ f128_to_f64$(OBJ) \
+ f128_roundToInt$(OBJ) \
+ f128_add$(OBJ) \
+ f128_sub$(OBJ) \
+ f128_mul$(OBJ) \
+ f128_mulAdd$(OBJ) \
+ f128_div$(OBJ) \
+ f128_rem$(OBJ) \
+ f128_sqrt$(OBJ) \
+ f128_eq$(OBJ) \
+ f128_le$(OBJ) \
+ f128_lt$(OBJ) \
+ f128_eq_signaling$(OBJ) \
+ f128_le_quiet$(OBJ) \
+ f128_lt_quiet$(OBJ) \
+ f128_isSignalingNaN$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h
new file mode 100644
index 000000000..b63e2a720
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-FAST_INT64/platform.h
@@ -0,0 +1,50 @@
+
+/*============================================================================
+
+This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+// Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define INLINE inline
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define THREAD_LOCAL _Thread_local
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile
new file mode 100644
index 000000000..49fddfd02
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/Makefile
@@ -0,0 +1,325 @@
+
+#=============================================================================
+#
+# This Makefile template is part of the SoftFloat IEEE Floating-Point
+# Arithmetic Package, Release 3e, by John R. Hauser.
+#
+# Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+# University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions, and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions, and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#=============================================================================
+
+# Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+==> SOURCE_DIR ?= ../../source
+==> SPECIALIZE_TYPE ?= 8086
+
+==> SOFTFLOAT_OPTS ?= \
+==> -DSOFTFLOAT_ROUND_ODD -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 \
+==> -DSOFTFLOAT_FAST_DIV64TO32
+
+==> DELETE = rm -f
+==> C_INCLUDES = -I. -I$(SOURCE_DIR)/$(SPECIALIZE_TYPE) -I$(SOURCE_DIR)/include
+==> COMPILE_C = cc -c $(SOFTFLOAT_OPTS) $(C_INCLUDES) -O2 -o $@
+==> MAKELIB = ar crs $@
+
+==> OBJ = .o
+==> LIB = .a
+
+==> OTHER_HEADERS =
+
+.PHONY: all
+all: softfloat$(LIB)
+
+OBJS_PRIMITIVES = \
+ s_compare96M$(OBJ) \
+ s_compare128M$(OBJ) \
+ s_shortShiftLeft64To96M$(OBJ) \
+ s_shortShiftLeftM$(OBJ) \
+ s_shiftLeftM$(OBJ) \
+ s_shortShiftRightM$(OBJ) \
+ s_shortShiftRightJam64$(OBJ) \
+ s_shortShiftRightJamM$(OBJ) \
+ s_shiftRightJam32$(OBJ) \
+ s_shiftRightJam64$(OBJ) \
+ s_shiftRightJamM$(OBJ) \
+ s_shiftRightM$(OBJ) \
+ s_countLeadingZeros8$(OBJ) \
+ s_countLeadingZeros16$(OBJ) \
+ s_countLeadingZeros32$(OBJ) \
+ s_countLeadingZeros64$(OBJ) \
+ s_addM$(OBJ) \
+ s_addCarryM$(OBJ) \
+ s_addComplCarryM$(OBJ) \
+ s_negXM$(OBJ) \
+ s_sub1XM$(OBJ) \
+ s_subM$(OBJ) \
+ s_mul64To128M$(OBJ) \
+ s_mul128MTo256M$(OBJ) \
+ s_approxRecip_1Ks$(OBJ) \
+ s_approxRecip32_1$(OBJ) \
+ s_approxRecipSqrt_1Ks$(OBJ) \
+ s_approxRecipSqrt32_1$(OBJ) \
+ s_remStepMBy32$(OBJ) \
+
+OBJS_SPECIALIZE = \
+ softfloat_raiseFlags$(OBJ) \
+ s_f16UIToCommonNaN$(OBJ) \
+ s_commonNaNToF16UI$(OBJ) \
+ s_propagateNaNF16UI$(OBJ) \
+ s_f32UIToCommonNaN$(OBJ) \
+ s_commonNaNToF32UI$(OBJ) \
+ s_propagateNaNF32UI$(OBJ) \
+ s_f64UIToCommonNaN$(OBJ) \
+ s_commonNaNToF64UI$(OBJ) \
+ s_propagateNaNF64UI$(OBJ) \
+ extF80M_isSignalingNaN$(OBJ) \
+ s_extF80MToCommonNaN$(OBJ) \
+ s_commonNaNToExtF80M$(OBJ) \
+ s_propagateNaNExtF80M$(OBJ) \
+ f128M_isSignalingNaN$(OBJ) \
+ s_f128MToCommonNaN$(OBJ) \
+ s_commonNaNToF128M$(OBJ) \
+ s_propagateNaNF128M$(OBJ) \
+
+OBJS_OTHERS = \
+ s_roundToUI32$(OBJ) \
+ s_roundMToUI64$(OBJ) \
+ s_roundToI32$(OBJ) \
+ s_roundMToI64$(OBJ) \
+ s_normSubnormalF16Sig$(OBJ) \
+ s_roundPackToF16$(OBJ) \
+ s_normRoundPackToF16$(OBJ) \
+ s_addMagsF16$(OBJ) \
+ s_subMagsF16$(OBJ) \
+ s_mulAddF16$(OBJ) \
+ s_normSubnormalF32Sig$(OBJ) \
+ s_roundPackToF32$(OBJ) \
+ s_normRoundPackToF32$(OBJ) \
+ s_addMagsF32$(OBJ) \
+ s_subMagsF32$(OBJ) \
+ s_mulAddF32$(OBJ) \
+ s_normSubnormalF64Sig$(OBJ) \
+ s_roundPackToF64$(OBJ) \
+ s_normRoundPackToF64$(OBJ) \
+ s_addMagsF64$(OBJ) \
+ s_subMagsF64$(OBJ) \
+ s_mulAddF64$(OBJ) \
+ s_tryPropagateNaNExtF80M$(OBJ) \
+ s_invalidExtF80M$(OBJ) \
+ s_normExtF80SigM$(OBJ) \
+ s_roundPackMToExtF80M$(OBJ) \
+ s_normRoundPackMToExtF80M$(OBJ) \
+ s_addExtF80M$(OBJ) \
+ s_compareNonnormExtF80M$(OBJ) \
+ s_isNaNF128M$(OBJ) \
+ s_tryPropagateNaNF128M$(OBJ) \
+ s_invalidF128M$(OBJ) \
+ s_shiftNormSigF128M$(OBJ) \
+ s_roundPackMToF128M$(OBJ) \
+ s_normRoundPackMToF128M$(OBJ) \
+ s_addF128M$(OBJ) \
+ s_mulAddF128M$(OBJ) \
+ softfloat_state$(OBJ) \
+ ui32_to_f16$(OBJ) \
+ ui32_to_f32$(OBJ) \
+ ui32_to_f64$(OBJ) \
+ ui32_to_extF80M$(OBJ) \
+ ui32_to_f128M$(OBJ) \
+ ui64_to_f16$(OBJ) \
+ ui64_to_f32$(OBJ) \
+ ui64_to_f64$(OBJ) \
+ ui64_to_extF80M$(OBJ) \
+ ui64_to_f128M$(OBJ) \
+ i32_to_f16$(OBJ) \
+ i32_to_f32$(OBJ) \
+ i32_to_f64$(OBJ) \
+ i32_to_extF80M$(OBJ) \
+ i32_to_f128M$(OBJ) \
+ i64_to_f16$(OBJ) \
+ i64_to_f32$(OBJ) \
+ i64_to_f64$(OBJ) \
+ i64_to_extF80M$(OBJ) \
+ i64_to_f128M$(OBJ) \
+ f16_to_ui32$(OBJ) \
+ f16_to_ui64$(OBJ) \
+ f16_to_i32$(OBJ) \
+ f16_to_i64$(OBJ) \
+ f16_to_ui32_r_minMag$(OBJ) \
+ f16_to_ui64_r_minMag$(OBJ) \
+ f16_to_i32_r_minMag$(OBJ) \
+ f16_to_i64_r_minMag$(OBJ) \
+ f16_to_f32$(OBJ) \
+ f16_to_f64$(OBJ) \
+ f16_to_extF80M$(OBJ) \
+ f16_to_f128M$(OBJ) \
+ f16_roundToInt$(OBJ) \
+ f16_add$(OBJ) \
+ f16_sub$(OBJ) \
+ f16_mul$(OBJ) \
+ f16_mulAdd$(OBJ) \
+ f16_div$(OBJ) \
+ f16_rem$(OBJ) \
+ f16_sqrt$(OBJ) \
+ f16_eq$(OBJ) \
+ f16_le$(OBJ) \
+ f16_lt$(OBJ) \
+ f16_eq_signaling$(OBJ) \
+ f16_le_quiet$(OBJ) \
+ f16_lt_quiet$(OBJ) \
+ f16_isSignalingNaN$(OBJ) \
+ f32_to_ui32$(OBJ) \
+ f32_to_ui64$(OBJ) \
+ f32_to_i32$(OBJ) \
+ f32_to_i64$(OBJ) \
+ f32_to_ui32_r_minMag$(OBJ) \
+ f32_to_ui64_r_minMag$(OBJ) \
+ f32_to_i32_r_minMag$(OBJ) \
+ f32_to_i64_r_minMag$(OBJ) \
+ f32_to_f16$(OBJ) \
+ f32_to_f64$(OBJ) \
+ f32_to_extF80M$(OBJ) \
+ f32_to_f128M$(OBJ) \
+ f32_roundToInt$(OBJ) \
+ f32_add$(OBJ) \
+ f32_sub$(OBJ) \
+ f32_mul$(OBJ) \
+ f32_mulAdd$(OBJ) \
+ f32_div$(OBJ) \
+ f32_rem$(OBJ) \
+ f32_sqrt$(OBJ) \
+ f32_eq$(OBJ) \
+ f32_le$(OBJ) \
+ f32_lt$(OBJ) \
+ f32_eq_signaling$(OBJ) \
+ f32_le_quiet$(OBJ) \
+ f32_lt_quiet$(OBJ) \
+ f32_isSignalingNaN$(OBJ) \
+ f64_to_ui32$(OBJ) \
+ f64_to_ui64$(OBJ) \
+ f64_to_i32$(OBJ) \
+ f64_to_i64$(OBJ) \
+ f64_to_ui32_r_minMag$(OBJ) \
+ f64_to_ui64_r_minMag$(OBJ) \
+ f64_to_i32_r_minMag$(OBJ) \
+ f64_to_i64_r_minMag$(OBJ) \
+ f64_to_f16$(OBJ) \
+ f64_to_f32$(OBJ) \
+ f64_to_extF80M$(OBJ) \
+ f64_to_f128M$(OBJ) \
+ f64_roundToInt$(OBJ) \
+ f64_add$(OBJ) \
+ f64_sub$(OBJ) \
+ f64_mul$(OBJ) \
+ f64_mulAdd$(OBJ) \
+ f64_div$(OBJ) \
+ f64_rem$(OBJ) \
+ f64_sqrt$(OBJ) \
+ f64_eq$(OBJ) \
+ f64_le$(OBJ) \
+ f64_lt$(OBJ) \
+ f64_eq_signaling$(OBJ) \
+ f64_le_quiet$(OBJ) \
+ f64_lt_quiet$(OBJ) \
+ f64_isSignalingNaN$(OBJ) \
+ extF80M_to_ui32$(OBJ) \
+ extF80M_to_ui64$(OBJ) \
+ extF80M_to_i32$(OBJ) \
+ extF80M_to_i64$(OBJ) \
+ extF80M_to_ui32_r_minMag$(OBJ) \
+ extF80M_to_ui64_r_minMag$(OBJ) \
+ extF80M_to_i32_r_minMag$(OBJ) \
+ extF80M_to_i64_r_minMag$(OBJ) \
+ extF80M_to_f16$(OBJ) \
+ extF80M_to_f32$(OBJ) \
+ extF80M_to_f64$(OBJ) \
+ extF80M_to_f128M$(OBJ) \
+ extF80M_roundToInt$(OBJ) \
+ extF80M_add$(OBJ) \
+ extF80M_sub$(OBJ) \
+ extF80M_mul$(OBJ) \
+ extF80M_div$(OBJ) \
+ extF80M_rem$(OBJ) \
+ extF80M_sqrt$(OBJ) \
+ extF80M_eq$(OBJ) \
+ extF80M_le$(OBJ) \
+ extF80M_lt$(OBJ) \
+ extF80M_eq_signaling$(OBJ) \
+ extF80M_le_quiet$(OBJ) \
+ extF80M_lt_quiet$(OBJ) \
+ f128M_to_ui32$(OBJ) \
+ f128M_to_ui64$(OBJ) \
+ f128M_to_i32$(OBJ) \
+ f128M_to_i64$(OBJ) \
+ f128M_to_ui32_r_minMag$(OBJ) \
+ f128M_to_ui64_r_minMag$(OBJ) \
+ f128M_to_i32_r_minMag$(OBJ) \
+ f128M_to_i64_r_minMag$(OBJ) \
+ f128M_to_f16$(OBJ) \
+ f128M_to_f32$(OBJ) \
+ f128M_to_f64$(OBJ) \
+ f128M_to_extF80M$(OBJ) \
+ f128M_roundToInt$(OBJ) \
+ f128M_add$(OBJ) \
+ f128M_sub$(OBJ) \
+ f128M_mul$(OBJ) \
+ f128M_mulAdd$(OBJ) \
+ f128M_div$(OBJ) \
+ f128M_rem$(OBJ) \
+ f128M_sqrt$(OBJ) \
+ f128M_eq$(OBJ) \
+ f128M_le$(OBJ) \
+ f128M_lt$(OBJ) \
+ f128M_eq_signaling$(OBJ) \
+ f128M_le_quiet$(OBJ) \
+ f128M_lt_quiet$(OBJ) \
+
+OBJS_ALL = $(OBJS_PRIMITIVES) $(OBJS_SPECIALIZE) $(OBJS_OTHERS)
+
+$(OBJS_ALL): \
+ $(OTHER_HEADERS) platform.h $(SOURCE_DIR)/include/primitiveTypes.h \
+ $(SOURCE_DIR)/include/primitives.h
+$(OBJS_SPECIALIZE) $(OBJS_OTHERS): \
+ $(SOURCE_DIR)/include/softfloat_types.h $(SOURCE_DIR)/include/internals.h \
+ $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/specialize.h \
+ $(SOURCE_DIR)/include/softfloat.h
+
+$(OBJS_PRIMITIVES) $(OBJS_OTHERS): %$(OBJ): $(SOURCE_DIR)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$*.c
+
+$(OBJS_SPECIALIZE): %$(OBJ): $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/%.c
+ $(COMPILE_C) $(SOURCE_DIR)/$(SPECIALIZE_TYPE)/$*.c
+
+softfloat$(LIB): $(OBJS_ALL)
+ $(DELETE) $@
+ $(MAKELIB) $^
+
+.PHONY: clean
+clean:
+ $(DELETE) $(OBJS_ALL) softfloat$(LIB)
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h
new file mode 100644
index 000000000..b63e2a720
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/build/template-not-FAST_INT64/platform.h
@@ -0,0 +1,50 @@
+
+/*============================================================================
+
+This C header template is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+// Edit lines marked with `==>'. See "SoftFloat-source.html".
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define LITTLEENDIAN 1
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define INLINE inline
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+==> #define THREAD_LOCAL _Thread_local
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html
new file mode 100644
index 000000000..daa48ca3b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-history.html
@@ -0,0 +1,258 @@
+
+
+
+
+Berkeley SoftFloat History
+
+
+
+
+History of Berkeley SoftFloat, to Release 3e
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Release 3e (2018 January)
+
+
+
+-
+Changed the default numeric code for optional rounding mode
odd
+(round to odd, also known as jamming) from 5 to 6.
+
+ -
+Modified the behavior of rounding mode
odd
when rounding to an
+integer value (either conversion to an integer format or a
+‘roundToInt
’ function).
+Previously, for those cases only, rounding mode odd
acted the same
+as rounding to minimum magnitude.
+Now all operations are rounded consistently.
+
+ -
+Fixed some errors in the specialization code modeling Intel x86 floating-point,
+specifically the integers returned on invalid operations and the propagation of
+NaN payloads in a few rare cases.
+
+
-
+Added specialization code modeling ARM floating-point, conforming to VFPv2 or
+later.
+
+
-
+Added an example target for ARM processors.
+
+
-
+Fixed a minor bug whereby function
f16_to_ui64
might return a
+different integer than expected in the case that the floating-point operand is
+negative.
+
+ -
+Added example target-specific optimization for GCC, employing GCC instrinsics
+and support for 128-bit integer arithmetic.
+
+
-
+Made other minor improvements.
+
+
+
+
+Release 3d (2017 August)
+
+
+
+-
+Fixed bugs in the square root functions for 64-bit
+double-precision, 80-bit double-extended-precision, and
+128-bit quadruple-precision.
+For 64-bit double-precision (
f64_sqrt
), the result
+could sometimes be off by 1 unit in the last place
+(1 ulp) from what it should be.
+For the larger formats, the square root could be wrong in a large portion of
+the less-significant bits.
+(A bug in f128_sqrt
was first reported by Alexei Sibidanov.)
+
+
+
+
+Release 3c (2017 February)
+
+
+
+-
+Added optional rounding mode
odd
(round to odd, also known as
+jamming).
+
+ -
+Corrected the documentation concerning non-canonical representations in
+80-bit double-extended-precision.
+
+
+
+
+Release 3b (2016 July)
+
+
+
+-
+Implemented the common 16-bit “half-precision”
+floating-point format (
float16_t
).
+
+ -
+Made the integer values returned on invalid conversions to integer formats
+be determined by the port-specific specialization instead of being the same for
+all ports.
+
+
-
+Added preprocessor macro
THREAD_LOCAL
to allow the floating-point
+state (modes and exception flags) to be made per-thread.
+
+ -
+Modified the provided Makefiles to allow some options to be overridden from the
+
make
command.
+
+ -
+Made other minor improvements.
+
+
+
+
+Release 3a (2015 October)
+
+
+
+-
+Replaced the license text supplied by the University of California, Berkeley.
+
+
+
+
+Release 3 (2015 February)
+
+
+
+-
+Complete rewrite, funded by the University of California, Berkeley, and
+consequently having a different use license than earlier releases.
+Major changes included renaming most types and functions, upgrading some
+algorithms, restructuring the source files, and making SoftFloat into a true
+library.
+
+
-
+Added functions to convert between floating-point and unsigned integers, both
+32-bit and 64-bit (
uint32_t
and
+uint64_t
).
+
+ -
+Added functions for fused multiply-add, for all supported floating-point
+formats except 80-bit double-extended-precision.
+
+
-
+Added support for a fifth rounding mode,
near_maxMag
(round to
+nearest, with ties to maximum magnitude, away from zero).
+
+ -
+Dropped the
timesoftfloat
program (now part of the Berkeley
+TestFloat package).
+
+
+
+
+Release 2c (2015 January)
+
+
+
+-
+Fixed mistakes affecting some 64-bit processors.
+
+
-
+Further improved the documentation and the wording for the legal restrictions
+on using SoftFloat releases through 2c (not applicable to
+Release 3 or later).
+
+
+
+
+Release 2b (2002 May)
+
+
+
+-
+Made minor updates to the documentation, including improved wording for the
+legal restrictions on using SoftFloat.
+
+
+
+
+Release 2a (1998 December)
+
+
+
+-
+Added functions to convert between 64-bit integers
+(
int64
) and all supported floating-point formats.
+
+ -
+Fixed a bug in all 64-bit-version square root functions except
+
float32_sqrt
that caused the result sometimes to be off by
+1 unit in the last place (1 ulp) from what it should
+be.
+(Bug discovered by Paul Donahue.)
+
+ -
+Improved the Makefiles.
+
+
+
+Release 2 (1997 June)
+
+
+
+-
+Created the 64-bit (
bits64
) version, adding the
+floatx80
and float128
formats.
+
+ -
+Changed the source directory structure, splitting the sources into a
+
bits32
and a bits64
version.
+Renamed environment.h
to milieu.h
to avoid confusion
+with environment variables.
+
+ -
+Fixed a small error that caused
float64_round_to_int
often to
+round the wrong way in nearest/even mode when the operand was between
+220 and 221 and halfway between two integers.
+
+
+
+
+Release 1a (1996 July)
+
+
+
+-
+Corrected a mistake that caused borderline underflow cases not to raise the
+underflow flag when they should have.
+(Problem reported by Doug Priest.)
+
+
-
+Added the
float_detect_tininess
variable to control whether
+tininess is detected before or after rounding.
+
+
+
+
+Release 1 (1996 July)
+
+
+
+-
+Original release, based on work done for the International Computer Science
+Institute (ICSI) in Berkeley, California.
+
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html
new file mode 100644
index 000000000..d4b85f7b0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat-source.html
@@ -0,0 +1,686 @@
+
+
+
+
+Berkeley SoftFloat Source Documentation
+
+
+
+
+Berkeley SoftFloat Release 3e: Source Documentation
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Contents
+
+
+
+
+
+1. Introduction |
+2. Limitations |
+3. Acknowledgments and License |
+4. SoftFloat Package Directory Structure |
+5. Issues for Porting SoftFloat to a New Target |
+
+ |
+ 5.1. Standard Headers <stdbool.h> and
+ <stdint.h> |
+
+ | 5.2. Specializing Floating-Point Behavior |
+ | 5.3. Macros for Build Options |
+ | 5.4. Adapting a Template Target Directory |
+
+ | 5.5. Target-Specific Optimization of Primitive Functions |
+
+6. Testing SoftFloat |
+
+ 7. Providing SoftFloat as a Common Library for Applications |
+
+8. Contact Information |
+
+
+
+
+1. Introduction
+
+
+This document gives information needed for compiling and/or porting Berkeley
+SoftFloat, a library of C functions implementing binary floating-point
+conforming to the IEEE Standard for Floating-Point Arithmetic.
+For basic documentation about SoftFloat refer to
+SoftFloat.html
.
+
+
+
+The source code for SoftFloat is intended to be relatively machine-independent
+and should be compilable with any ISO-Standard C compiler that also supports
+64-bit integers.
+SoftFloat has been successfully compiled with the GNU C Compiler
+(gcc
) for several platforms.
+
+
+
+Release 3 of SoftFloat was a complete rewrite relative to
+Release 2 or earlier.
+Changes to the interface of SoftFloat functions are documented in
+SoftFloat.html
.
+The current version of SoftFloat is Release 3e.
+
+
+
+2. Limitations
+
+
+SoftFloat assumes the computer has an addressable byte size of either 8 or
+16 bits.
+(Nearly all computers in use today have 8-bit bytes.)
+
+
+
+SoftFloat is written in C and is designed to work with other C code.
+The C compiler used must conform at a minimum to the 1989 ANSI standard for the
+C language (same as the 1990 ISO standard) and must in addition support basic
+arithmetic on 64-bit integers.
+Earlier releases of SoftFloat included implementations of 32-bit
+single-precision and 64-bit double-precision floating-point that
+did not require 64-bit integers, but this option is not supported
+starting with Release 3.
+Since 1999, ISO standards for C have mandated compiler support for
+64-bit integers.
+A compiler conforming to the 1999 C Standard or later is recommended but not
+strictly required.
+
+
+
+C Standard header files <stdbool.h>
and
+<stdint.h>
are required for defining standard Boolean and
+integer types.
+If these headers are not supplied with the C compiler, minimal substitutes must
+be provided.
+SoftFloat’s dependence on these headers is detailed later in
+section 5.1, Standard Headers <stdbool.h>
+and <stdint.h>
.
+
+
+
+3. Acknowledgments and License
+
+
+The SoftFloat package was written by me, John R. Hauser.
+Release 3 of SoftFloat was a completely new implementation
+supplanting earlier releases.
+The project to create Release 3 (now through 3e) was
+done in the employ of the University of California, Berkeley, within the
+Department of Electrical Engineering and Computer Sciences, first for the
+Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+The work was officially overseen by Prof. Krste Asanovic, with funding provided
+by these sources:
+
+
+
+
+
+
+Par Lab: |
+ |
+
+Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
+(Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
+NVIDIA, Oracle, and Samsung.
+ |
+
+
+ASPIRE Lab: |
+ |
+
+DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
+ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
+Oracle, and Samsung.
+ |
+
+
+
+
+
+
+The following applies to the whole of SoftFloat Release 3e as well
+as to each source file individually.
+
+
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California.
+All rights reserved.
+
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+
+-
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions, and the following disclaimer.
+
+
+ -
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions, and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+
+ -
+
+Neither the name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+
+
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”,
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+4. SoftFloat Package Directory Structure
+
+
+Because SoftFloat is targeted to multiple platforms, its source code is
+slightly scattered between target-specific and target-independent directories
+and files.
+The supplied directory structure is as follows:
+
+
+doc
+source
+ include
+ 8086
+ 8086-SSE
+ ARM-VFPv2
+ ARM-VFPv2-defaultNaN
+build
+ template-FAST_INT64
+ template-not-FAST_INT64
+ Linux-386-GCC
+ Linux-386-SSE2-GCC
+ Linux-x86_64-GCC
+ Linux-ARM-VFPv2-GCC
+ Win32-MinGW
+ Win32-SSE2-MinGW
+ Win64-MinGW-w64
+
+
+The majority of the SoftFloat sources are provided in the source
+directory.
+The include
subdirectory contains several header files
+(unsurprisingly), while the other subdirectories of source
contain
+source files that specialize the floating-point behavior to match particular
+processor families:
+
+
+8086
+-
+Intel’s older, 8087-derived floating-point, extended to all supported
+floating-point types
+
+8086-SSE
+-
+Intel’s x86 processors with Streaming SIMD Extensions (SSE) and later
+compatible extensions, having 8087 behavior for 80-bit
+double-extended-precision (
extFloat80_t
) and SSE behavior for
+other floating-point types
+
+ARM-VFPv2
+-
+ARM’s VFPv2 or later floating-point, with NaN payload propagation
+
+ARM-VFPv2-defaultNaN
+-
+ARM’s VFPv2 or later floating-point, with the “default NaN”
+option
+
+
+
+If other specializations are attempted, these would be expected to be other
+subdirectories of source
alongside the ones listed above.
+Specialization is covered later, in section 5.2, Specializing
+Floating-Point Behavior.
+
+
+
+The build
directory is intended to contain a subdirectory for each
+target platform for which a build of the SoftFloat library may be created.
+For each build target, the target’s subdirectory is where all derived
+object files and the completed SoftFloat library (typically
+softfloat.a
or libsoftfloat.a
) are created.
+The two template
subdirectories are not actual build targets but
+contain sample files for creating new target directories.
+(The meaning of FAST_INT64
will be explained later.)
+
+
+
+Ignoring the template
directories, the supplied target directories
+are intended to follow a naming system of
+<execution-environment>-<compiler>
.
+For the example targets,
+<execution-environment>
is
+Linux-386
, Linux-386-SSE2
,
+Linux-x86_64
,
+Linux-ARM-VFPv2
, Win32
,
+Win32-SSE2
, or Win64
, and
+<compiler>
is GCC
,
+MinGW
, or MinGW-w64
.
+
+
+
+All of the supplied target directories are merely examples that may or may not
+be correct for compiling on any particular system.
+Despite requests, there are currently no plans to include and maintain in the
+SoftFloat package the build files needed for a great many users’
+compilation environments, which can span a huge range of operating systems,
+compilers, and other tools.
+
+
+
+As supplied, each target directory contains two files:
+
+
+Makefile
+platform.h
+
+
+The provided Makefile
is written for GNU make
.
+A build of SoftFloat for the specific target is begun by executing the
+make
command with the target directory as the current directory.
+A completely different build tool can be used if an appropriate
+Makefile
equivalent is created.
+
+
+
+The platform.h
header file exists to provide a location for
+additional C declarations specific to the build target.
+Every C source file of SoftFloat contains a #include
for
+platform.h
.
+In many cases, the contents of platform.h
can be as simple as one
+or two lines of code.
+At the other extreme, to get maximal performance from SoftFloat, it may be
+desirable to include in header platform.h
(directly or via
+#include
) declarations for numerous target-specific optimizations.
+Such possibilities are discussed in the next section, Issues for Porting
+SoftFloat to a New Target.
+If the target’s compiler or library has bugs or other shortcomings,
+workarounds for these issues may also be possible with target-specific
+declarations in platform.h
, avoiding the need to modify the main
+SoftFloat sources.
+
+
+
+5. Issues for Porting SoftFloat to a New Target
+
+5.1. Standard Headers <stdbool.h>
and <stdint.h>
+
+
+The SoftFloat sources make use of standard headers
+<stdbool.h>
and <stdint.h>
, which have
+been part of the ISO C Standard Library since 1999.
+With any recent compiler, these standard headers are likely to be supported,
+even if the compiler does not claim complete conformance to the latest ISO C
+Standard.
+For older or nonstandard compilers, substitutes for
+<stdbool.h>
and <stdint.h>
may need to be
+created.
+SoftFloat depends on these names from <stdbool.h>
:
+
+
+bool
+true
+false
+
+
+and on these names from <stdint.h>
:
+
+
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+UINT64_C
+INT64_C
+uint_least8_t
+uint_fast8_t
+uint_fast16_t
+uint_fast32_t
+uint_fast64_t
+int_fast8_t
+int_fast16_t
+int_fast32_t
+int_fast64_t
+
+
+
+
+
+5.2. Specializing Floating-Point Behavior
+
+
+The IEEE Floating-Point Standard allows for some flexibility in a conforming
+implementation, particularly concerning NaNs.
+The SoftFloat source
directory is supplied with some
+specialization subdirectories containing possible definitions for this
+implementation-specific behavior.
+For example, the 8086
and 8086-SSE
+subdirectories have source files that specialize SoftFloat’s behavior to
+match that of Intel’s x86 line of processors.
+The files in a specialization subdirectory must determine:
+
+-
+whether tininess for underflow is detected before or after rounding by default;
+
-
+how signaling NaNs are distinguished from quiet NaNs;
+
-
+what (if anything) special happens when exceptions are raised;
+
-
+the default generated quiet NaNs;
+
-
+how NaNs are propagated from function inputs to output; and
+
-
+the integer results returned when conversions to integer type raise the
+invalid exception.
+
+
+
+
+As provided, the build process for a target expects to involve exactly
+one specialization directory that defines all of these
+implementation-specific details for the target.
+A specialization directory such as 8086
is expected to contain a
+header file called specialize.h
, together with whatever other
+source files are needed to complete the specialization.
+
+
+
+A new build target may use an existing specialization, such as the ones
+provided by the 8086
and 8086-SSE
+subdirectories.
+If a build target needs a new specialization, different from any existing ones,
+it is recommended that a new specialization directory be created for this
+purpose.
+The specialize.h
header file from any of the provided
+specialization subdirectories can be used as a model for what definitions are
+needed.
+
+
+
+5.3. Macros for Build Options
+
+
+The SoftFloat source files adapt the floating-point implementation according to
+several C preprocessor macros:
+
+
+LITTLEENDIAN
+-
+Must be defined for little-endian machines; must not be defined for big-endian
+machines.
+
INLINE
+-
+Specifies the sequence of tokens used to indicate that a C function should be
+inlined.
+If macro
INLINE_LEVEL
is defined with a value of 1 or higher, this
+macro must be defined; otherwise, this macro is ignored and need not be
+defined.
+For compilers that conform to the C Standard’s rules for inline
+functions, this macro can be defined as the single keyword inline
.
+For other compilers that follow a convention pre-dating the standardization of
+inline
, this macro may need to be defined to extern
+inline
.
+ THREAD_LOCAL
+-
+Can be defined to a sequence of tokens that, when appearing at the start of a
+variable declaration, indicates to the C compiler that the variable is
+per-thread, meaning that each execution thread gets its own separate
+instance of the variable.
+This macro is used in header
softfloat.h
in the declarations of
+variables softfloat_roundingMode
,
+softfloat_detectTininess
, extF80_roundingPrecision
,
+and softfloat_exceptionFlags
.
+If macro THREAD_LOCAL
is left undefined, these variables will
+default to being ordinary global variables.
+Depending on the compiler, possible valid definitions of this macro include
+_Thread_local
and __thread
.
+
+
+SOFTFLOAT_ROUND_ODD
+-
+Can be defined to enable support for optional rounding mode
+
softfloat_round_odd
.
+
+
+INLINE_LEVEL
+-
+Can be defined to an integer to determine the degree of inlining requested of
+the compiler.
+Larger numbers request that more inlining be done.
+If this macro is not defined or is defined to a value less than 1
+(zero or negative), no inlining is requested.
+The maximum effective value is no higher than 5.
+Defining this macro to a value greater than 5 is the same as defining it
+to 5.
+
SOFTFLOAT_FAST_INT64
+-
+Can be defined to indicate that the build target’s implementation of
+64-bit arithmetic is efficient.
+For newer 64-bit processors, this macro should usually be defined.
+For very small microprocessors whose buses and registers are 8-bit
+or 16-bit in size, this macro should usually not be defined.
+Whether this macro should be defined for a 32-bit processor may
+depend on the target machine and the applications that will use SoftFloat.
+
SOFTFLOAT_FAST_DIV32TO16
+-
+Can be defined to indicate that the target’s division operator
+in C (written as
/
) is reasonably efficient for
+dividing a 32-bit unsigned integer by a 16-bit
+unsigned integer.
+Setting this macro may affect the performance of function f16_div
.
+ SOFTFLOAT_FAST_DIV64TO32
+-
+Can be defined to indicate that the target’s division operator
+in C (written as
/
) is reasonably efficient for
+dividing a 64-bit unsigned integer by a 32-bit
+unsigned integer.
+Setting this macro may affect the performance of division, remainder, and
+square root operations other than f16_div
.
+
+
+
+
+
+Following the usual custom for C, for most of these macros (all
+except INLINE
, THREAD_LOCAL
, and
+INLINE_LEVEL
), the content of any definition is irrelevant;
+what matters is a macro’s effect on #ifdef
directives.
+
+
+
+It is recommended that any definitions of macros LITTLEENDIAN
,
+INLINE
, and THREAD_LOCAL
be made in a build
+target’s platform.h
header file, because these macros are
+expected to be determined inflexibly by the target machine and compiler.
+The other five macros select options and control optimization, and thus might
+be better located in the target’s Makefile (or its equivalent).
+
+
+
+5.4. Adapting a Template Target Directory
+
+
+In the build
directory, two template
subdirectories
+provide models for new target directories.
+Two different templates exist because different functions are needed in the
+SoftFloat library depending on whether macro SOFTFLOAT_FAST_INT64
+is defined.
+If macro SOFTFLOAT_FAST_INT64
will be defined,
+template-FAST_INT64
is the template to use;
+otherwise, template-not-FAST_INT64
is the appropriate
+template.
+A new target directory can be created by copying the correct template directory
+and editing the files inside.
+To avoid confusion, it would be wise to refrain from editing the files within a
+template directory directly.
+
+
+
+5.5. Target-Specific Optimization of Primitive Functions
+
+
+Header file primitives.h
(in directory
+source/include
) declares macros and functions for numerous
+underlying arithmetic operations upon which many of SoftFloat’s
+floating-point functions are ultimately built.
+The SoftFloat sources include implementations of all of these functions/macros,
+written as standard C code, so a complete and correct SoftFloat library can be
+created using only the supplied code for all functions.
+However, for many targets, SoftFloat’s performance can be improved by
+substituting target-specific implementations of some of the functions/macros
+declared in primitives.h
.
+
+
+
+For example, primitives.h
declares a function called
+softfloat_countLeadingZeros32
that takes an unsigned
+32-bit integer as an argument and returns the number of the
+integer’s most-significant bits that are zeros.
+While the SoftFloat sources include an implementation of this function written
+in standard C, many processors can perform this same function
+directly in only one or two machine instructions.
+An alternative, target-specific implementation that maps to those instructions
+is likely to be more efficient than the generic C code from the SoftFloat
+package.
+
+
+
+A build target can replace the supplied version of any function or macro of
+primitives.h
by defining a macro with the same name in the
+target’s platform.h
header file.
+For this purpose, it may be helpful for platform.h
to
+#include
header file primitiveTypes.h
, which defines
+types used for arguments and results of functions declared in
+primitives.h
.
+When a desired replacement implementation is a function, not a macro, it is
+sufficient for platform.h
to include the line
+
+
+#define <function-name> <function-name>
+
+
+where <function-name>
is the name of the
+function.
+This technically defines <function-name>
+as a macro, but one that resolves to the same name, which may then be a
+function.
+(A preprocessor that conforms to the C Standard is required to limit recursive
+macro expansion from being applied more than once.)
+
+
+
+The supplied header file opts-GCC.h
(in directory
+source/include
) provides an example of target-specific
+optimization for the GCC compiler.
+Each GCC target example in the build
directory has
+
+#include "opts-GCC.h"
+
+in its platform.h
header file.
+Before opts-GCC.h
is included, the following macros must be
+defined (or not) to control which features are invoked:
+
+
+SOFTFLOAT_BUILTIN_CLZ
+-
+If defined, SoftFloat’s internal
+‘
countLeadingZeros
’ functions use intrinsics
+__builtin_clz
and __builtin_clzll
.
+
+SOFTFLOAT_INTRINSIC_INT128
+-
+If defined, SoftFloat makes use of GCC’s nonstandard 128-bit
+integer type
__int128
.
+
+
+
+On some machines, these improvements are observed to increase the speeds of
+f64_mul
and f128_mul
by around 20 to 25%, although
+other functions receive less dramatic boosts, or none at all.
+Results can vary greatly across different platforms.
+
+
+
+6. Testing SoftFloat
+
+
+SoftFloat can be tested using the testsoftfloat
program by the
+same author.
+This program is part of the Berkeley TestFloat package available at the Web
+page
+http://www.jhauser.us/arithmetic/TestFloat.html
.
+The TestFloat package also has a program called timesoftfloat
that
+measures the speed of SoftFloat’s floating-point functions.
+
+
+
+7. Providing SoftFloat as a Common Library for Applications
+
+
+Header file softfloat.h
defines the SoftFloat interface as seen by
+clients.
+If the SoftFloat library will be made a common library for programs on a
+system, the supplied softfloat.h
has a couple of deficiencies for
+this purpose:
+
+-
+As supplied,
softfloat.h
depends on another header,
+softfloat_types.h
, that is not intended for public use but which
+must also be visible to the programmer’s compiler.
+ -
+More troubling, at the time
softfloat.h
is included in a C source
+file, macros SOFTFLOAT_FAST_INT64
and THREAD_LOCAL
+must be defined, or not defined, consistent with how these macro were defined
+when the SoftFloat library was built.
+
+In the situation that new programs may regularly #include
header
+file softfloat.h
, it is recommended that a custom, self-contained
+version of this header file be created that eliminates these issues.
+
+
+
+8. Contact Information
+
+
+At the time of this writing, the most up-to-date information about SoftFloat
+and the latest release can be found at the Web page
+http://www.jhauser.us/arithmetic/SoftFloat.html
.
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html
new file mode 100644
index 000000000..bb41770ec
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/doc/SoftFloat.html
@@ -0,0 +1,1527 @@
+
+
+
+
+Berkeley SoftFloat Library Interface
+
+
+
+
+Berkeley SoftFloat Release 3e: Library Interface
+
+
+John R. Hauser
+2018 January 20
+
+
+
+Contents
+
+
+
+
+
+1. Introduction |
+2. Limitations |
+3. Acknowledgments and License |
+4. Types and Functions |
+ | 4.1. Boolean and Integer Types |
+ | 4.2. Floating-Point Types |
+ | 4.3. Supported Floating-Point Functions |
+
+ |
+ 4.4. Non-canonical Representations in extFloat80_t |
+
+ | 4.5. Conventions for Passing Arguments and Results |
+5. Reserved Names |
+6. Mode Variables |
+ | 6.1. Rounding Mode |
+ | 6.2. Underflow Detection |
+
+ |
+ 6.3. Rounding Precision for the 80-Bit Extended Format |
+
+7. Exceptions and Exception Flags |
+8. Function Details |
+ | 8.1. Conversions from Integer to Floating-Point |
+ | 8.2. Conversions from Floating-Point to Integer |
+ | 8.3. Conversions Among Floating-Point Types |
+ | 8.4. Basic Arithmetic Functions |
+ | 8.5. Fused Multiply-Add Functions |
+ | 8.6. Remainder Functions |
+ | 8.7. Round-to-Integer Functions |
+ | 8.8. Comparison Functions |
+ | 8.9. Signaling NaN Test Functions |
+ | 8.10. Raise-Exception Function |
+9. Changes from SoftFloat Release 2 |
+ | 9.1. Name Changes |
+ | 9.2. Changes to Function Arguments |
+ | 9.3. Added Capabilities |
+ | 9.4. Better Compatibility with the C Language |
+ | 9.5. New Organization as a Library |
+ | 9.6. Optimization Gains (and Losses) |
+10. Future Directions |
+11. Contact Information |
+
+
+
+
+1. Introduction
+
+
+Berkeley SoftFloat is a software implementation of binary floating-point that
+conforms to the IEEE Standard for Floating-Point Arithmetic.
+The current release supports five binary formats: 16-bit
+half-precision, 32-bit single-precision, 64-bit
+double-precision, 80-bit double-extended-precision, and
+128-bit quadruple-precision.
+The following functions are supported for each format:
+
+-
+addition, subtraction, multiplication, division, and square root;
+
-
+fused multiply-add as defined by the IEEE Standard, except for
+80-bit double-extended-precision;
+
-
+remainder as defined by the IEEE Standard;
+
-
+round to integral value;
+
-
+comparisons;
+
-
+conversions to/from other supported formats; and
+
-
+conversions to/from 32-bit and 64-bit integers,
+signed and unsigned.
+
+All operations required by the original 1985 version of the IEEE Floating-Point
+Standard are implemented, except for conversions to and from decimal.
+
+
+
+This document gives information about the types defined and the routines
+implemented by SoftFloat.
+It does not attempt to define or explain the IEEE Floating-Point Standard.
+Information about the standard is available elsewhere.
+
+
+
+The current version of SoftFloat is Release 3e.
+This release modifies the behavior of the rarely used odd rounding mode
+(round to odd, also known as jamming), and also adds some new
+specialization and optimization examples for those compiling SoftFloat.
+
+
+
+The previous Release 3d fixed bugs that were found in the square
+root functions for the 64-bit, 80-bit, and
+128-bit floating-point formats.
+(Thanks to Alexei Sibidanov at the University of Victoria for reporting an
+incorrect result.)
+The bugs affected all prior Release-3 versions of SoftFloat
+through 3c.
+The flaw in the 64-bit floating-point square root function was of
+very minor impact, causing a 1-ulp error (1 unit in
+the last place) a few times out of a billion.
+The bugs in the 80-bit and 128-bit square root
+functions were more serious.
+Although incorrect results again occurred only a few times out of a billion,
+when they did occur a large portion of the less-significant bits could be
+wrong.
+
+
+
+Among earlier releases, 3b was notable for adding support for the
+16-bit half-precision format.
+For more about the evolution of SoftFloat releases, see
+SoftFloat-history.html
.
+
+
+
+The functional interface of SoftFloat Release 3 and later differs
+in many details from the releases that came before.
+For specifics of these differences, see section 9 below,
+Changes from SoftFloat Release 2.
+
+
+
+2. Limitations
+
+
+SoftFloat assumes the computer has an addressable byte size of 8 or
+16 bits.
+(Nearly all computers in use today have 8-bit bytes.)
+
+
+
+SoftFloat is written in C and is designed to work with other C code.
+The C compiler used must conform at a minimum to the 1989 ANSI standard for the
+C language (same as the 1990 ISO standard) and must in addition support basic
+arithmetic on 64-bit integers.
+Earlier releases of SoftFloat included implementations of 32-bit
+single-precision and 64-bit double-precision floating-point that
+did not require 64-bit integers, but this option is not supported
+starting with Release 3.
+Since 1999, ISO standards for C have mandated compiler support for
+64-bit integers.
+A compiler conforming to the 1999 C Standard or later is recommended but not
+strictly required.
+
+
+
+Most operations not required by the original 1985 version of the IEEE
+Floating-Point Standard but added in the 2008 version are not yet supported in
+SoftFloat Release 3e.
+
+
+
+3. Acknowledgments and License
+
+
+The SoftFloat package was written by me, John R. Hauser.
+Release 3 of SoftFloat was a completely new implementation
+supplanting earlier releases.
+The project to create Release 3 (now through 3e) was
+done in the employ of the University of California, Berkeley, within the
+Department of Electrical Engineering and Computer Sciences, first for the
+Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab.
+The work was officially overseen by Prof. Krste Asanovic, with funding provided
+by these sources:
+
+
+
+
+
+
+Par Lab: |
+ |
+
+Microsoft (Award #024263), Intel (Award #024894), and U.C. Discovery
+(Award #DIG07-10227), with additional support from Par Lab affiliates Nokia,
+NVIDIA, Oracle, and Samsung.
+ |
+
+
+ASPIRE Lab: |
+ |
+
+DARPA PERFECT program (Award #HR0011-12-2-0016), with additional support from
+ASPIRE industrial sponsor Intel and ASPIRE affiliates Google, Nokia, NVIDIA,
+Oracle, and Samsung.
+ |
+
+
+
+
+
+
+The following applies to the whole of SoftFloat Release 3e as well
+as to each source file individually.
+
+
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California.
+All rights reserved.
+
+
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+
+-
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions, and the following disclaimer.
+
+
+ -
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions, and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+
+ -
+
+Neither the name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+
+
+
+
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”,
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED.
+IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+4. Types and Functions
+
+
+The types and functions of SoftFloat are declared in header file
+softfloat.h
.
+
+
+4.1. Boolean and Integer Types
+
+
+Header file softfloat.h
depends on standard headers
+<stdbool.h>
and <stdint.h>
to define type
+bool
and several integer types.
+These standard headers have been part of the ISO C Standard Library since 1999.
+With any recent compiler, they are likely to be supported, even if the compiler
+does not claim complete conformance to the latest ISO C Standard.
+For older or nonstandard compilers, a port of SoftFloat may have substitutes
+for these headers.
+Header softfloat.h
depends only on the name bool
from
+<stdbool.h>
and on these type names from
+<stdint.h>
:
+
+
+uint16_t
+uint32_t
+uint64_t
+int32_t
+int64_t
+uint_fast8_t
+uint_fast32_t
+uint_fast64_t
+int_fast32_t
+int_fast64_t
+
+
+
+
+
+4.2. Floating-Point Types
+
+
+The softfloat.h
header defines five floating-point types:
+
+
+
+float16_t |
+16-bit half-precision binary format |
+
+
+float32_t |
+32-bit single-precision binary format |
+
+
+float64_t |
+64-bit double-precision binary format |
+
+
+extFloat80_t |
+80-bit double-extended-precision binary format (old Intel or
+Motorola format) |
+
+
+float128_t |
+128-bit quadruple-precision binary format |
+
+
+
+The non-extended types are each exactly the size specified:
+16 bits for float16_t
, 32 bits for
+float32_t
, 64 bits for float64_t
, and
+128 bits for float128_t
.
+Aside from these size requirements, the definitions of all these types may
+differ for different ports of SoftFloat to specific systems.
+A given port of SoftFloat may or may not define some of the floating-point
+types as aliases for the C standard types float
,
+double
, and long
double
.
+
+
+
+Header file softfloat.h
also defines a structure,
+struct
extFloat80M
, for the representation of
+80-bit double-extended-precision floating-point values in memory.
+This structure is the same size as type extFloat80_t
and contains
+at least these two fields (not necessarily in this order):
+
+
+uint16_t signExp;
+uint64_t signif;
+
+
+Field signExp
contains the sign and exponent of the floating-point
+value, with the sign in the most significant bit (bit 15) and the
+encoded exponent in the other 15 bits.
+Field signif
is the complete 64-bit significand of
+the floating-point value.
+(In the usual encoding for 80-bit extended floating-point, the
+leading 1 bit of normalized numbers is not implicit but is stored
+in the most significant bit of the significand.)
+
+
+4.3. Supported Floating-Point Functions
+
+
+SoftFloat implements these arithmetic operations for its floating-point types:
+
+-
+conversions between any two floating-point formats;
+
-
+for each floating-point format, conversions to and from signed and unsigned
+32-bit and 64-bit integers;
+
-
+for each format, the usual addition, subtraction, multiplication, division, and
+square root operations;
+
-
+for each format except
extFloat80_t
, the fused multiply-add
+operation defined by the IEEE Standard;
+ -
+for each format, the floating-point remainder operation defined by the IEEE
+Standard;
+
-
+for each format, a “round to integer” operation that rounds to the
+nearest integer value in the same format; and
+
-
+comparisons between two values in the same floating-point format.
+
+
+
+
+The following operations required by the 2008 IEEE Floating-Point Standard are
+not supported in SoftFloat Release 3e:
+
+-
+nextUp, nextDown, minNum, maxNum, minNumMag,
+maxNumMag, scaleB, and logB;
+
-
+conversions between floating-point formats and decimal or hexadecimal character
+sequences;
+
-
+all “quiet-computation” operations (copy, negate,
+abs, and copySign, which all involve only simple copying and/or
+manipulation of the floating-point sign bit); and
+
-
+all “non-computational” operations other than isSignaling
+(which is supported).
+
+
+
+4.4. Non-canonical Representations in extFloat80_t
+
+
+Because the 80-bit double-extended-precision format,
+extFloat80_t
, stores an explicit leading significand bit, many
+finite floating-point numbers are encodable in this type in multiple equivalent
+forms.
+Of these multiple encodings, there is always a unique one with the least
+encoded exponent value, and this encoding is considered the canonical
+representation of the floating-point number.
+Any other equivalent representations (having a higher encoded exponent value)
+are non-canonical.
+For a value in the subnormal range (including zero), the canonical
+representation always has an encoded exponent of zero and a leading significand
+bit of 0.
+For finite values outside the subnormal range, the canonical representation
+always has an encoded exponent that is nonzero and a leading significand bit
+of 1.
+
+
+
+For an infinity or NaN, the leading significand bit is similarly expected to
+be 1.
+An infinity or NaN with a leading significand bit of 0 is again
+considered non-canonical.
+Hence, altogether, to be canonical, a value of type extFloat80_t
+must have a leading significand bit of 1, unless the value is
+subnormal or zero, in which case the leading significand bit and the encoded
+exponent must both be zero.
+
+
+
+SoftFloat’s functions are not guaranteed to operate as expected when
+inputs of type extFloat80_t
are non-canonical.
+Assuming all of a function’s extFloat80_t
inputs (if any)
+are canonical, function outputs of type extFloat80_t
will always
+be canonical.
+
+
+4.5. Conventions for Passing Arguments and Results
+
+
+Values that are at most 64 bits in size (i.e., not the
+80-bit or 128-bit floating-point formats) are in all
+cases passed as function arguments by value.
+Likewise, when an output of a function is no more than 64 bits, it
+is always returned directly as the function result.
+Thus, for example, the SoftFloat function for adding two 64-bit
+floating-point values has this simple signature:
+
+float64_t f64_add( float64_t, float64_t );
+
+
+
+
+The story is more complex when function inputs and outputs are
+80-bit and 128-bit floating-point.
+For these types, SoftFloat always provides a function that passes these larger
+values into or out of the function indirectly, via pointers.
+For example, for adding two 128-bit floating-point values,
+SoftFloat supplies this function:
+
+void f128M_add( const float128_t *, const float128_t *, float128_t * );
+
+The first two arguments point to the values to be added, and the last argument
+points to the location where the sum will be stored.
+The M
in the name f128M_add
is mnemonic for the fact
+that the 128-bit inputs and outputs are “in memory”,
+pointed to by pointer arguments.
+
+
+
+All ports of SoftFloat implement these pass-by-pointer functions for
+types extFloat80_t
and float128_t
.
+At the same time, SoftFloat ports may also implement alternate versions of
+these same functions that pass extFloat80_t
and
+float128_t
by value, like the smaller formats.
+Thus, besides the function with name f128M_add
shown above, a
+SoftFloat port may also supply an equivalent function with this signature:
+
+float128_t f128_add( float128_t, float128_t );
+
+
+
+
+As a general rule, on computers where the machine word size is
+32 bits or smaller, only the pass-by-pointer versions of functions
+(e.g., f128M_add
) are provided for types extFloat80_t
+and float128_t
, because passing such large types directly can have
+significant extra cost.
+On computers where the word size is 64 bits or larger, both
+function versions (f128M_add
and f128_add
) are
+provided, because the cost of passing by value is then more reasonable.
+Applications that must be portable accross both classes of computers must use
+the pointer-based functions, as these are always implemented.
+However, if it is known that SoftFloat includes the by-value functions for all
+platforms of interest, programmers can use whichever version they prefer.
+
+
+
+5. Reserved Names
+
+
+In addition to the variables and functions documented here, SoftFloat defines
+some symbol names for its own private use.
+These private names always begin with the prefix
+‘softfloat_
’.
+When a program includes header softfloat.h
or links with the
+SoftFloat library, all names with prefix ‘softfloat_
’
+are reserved for possible use by SoftFloat.
+Applications that use SoftFloat should not define their own names with this
+prefix, and should reference only such names as are documented.
+
+
+
+6. Mode Variables
+
+
+The following global variables control rounding mode, underflow detection, and
+the 80-bit extended format’s rounding precision:
+
+softfloat_roundingMode
+softfloat_detectTininess
+extF80_roundingPrecision
+
+These mode variables are covered in the next several subsections.
+For some SoftFloat ports, these variables may be per-thread (declared
+thread_local
), meaning that different execution threads have their
+own separate copies of the variables.
+
+
+6.1. Rounding Mode
+
+
+All five rounding modes defined by the 2008 IEEE Floating-Point Standard are
+implemented for all operations that require rounding.
+Some ports of SoftFloat may also implement the round-to-odd mode.
+
+
+
+The rounding mode is selected by the global variable
+
+uint_fast8_t softfloat_roundingMode;
+
+This variable may be set to one of the values
+
+
+
+softfloat_round_near_even |
+round to nearest, with ties to even |
+
+
+softfloat_round_near_maxMag |
+round to nearest, with ties to maximum magnitude (away from zero) |
+
+
+softfloat_round_minMag |
+round to minimum magnitude (toward zero) |
+
+
+softfloat_round_min |
+round to minimum (down) |
+
+
+softfloat_round_max |
+round to maximum (up) |
+
+
+softfloat_round_odd |
+round to odd (jamming), if supported by the SoftFloat port |
+
+
+
+Variable softfloat_roundingMode
is initialized to
+softfloat_round_near_even
.
+
+
+
+When softfloat_round_odd
is the rounding mode for a function that
+rounds to an integer value (either conversion to an integer format or a
+‘roundToInt
’ function), if the input is not already an
+integer, the rounded result is the closest odd integer.
+For other operations, this rounding mode acts as though the floating-point
+result is first rounded to minimum magnitude, the same as
+softfloat_round_minMag
, and then, if the result is inexact, the
+least-significant bit of the result is set to 1.
+Rounding to odd is also known as jamming.
+
+
+6.2. Underflow Detection
+
+
+In the terminology of the IEEE Standard, SoftFloat can detect tininess for
+underflow either before or after rounding.
+The choice is made by the global variable
+
+uint_fast8_t softfloat_detectTininess;
+
+which can be set to either
+
+softfloat_tininess_beforeRounding
+softfloat_tininess_afterRounding
+
+Detecting tininess after rounding is usually better because it results in fewer
+spurious underflow signals.
+The other option is provided for compatibility with some systems.
+Like most systems (and as required by the newer 2008 IEEE Standard), SoftFloat
+always detects loss of accuracy for underflow as an inexact result.
+
+
+6.3. Rounding Precision for the 80-Bit Extended Format
+
+
+For extFloat80_t
only, the rounding precision of the basic
+arithmetic operations is controlled by the global variable
+
+uint_fast8_t extF80_roundingPrecision;
+
+The operations affected are:
+
+extF80_add
+extF80_sub
+extF80_mul
+extF80_div
+extF80_sqrt
+
+When extF80_roundingPrecision
is set to its default value of 80,
+these operations are rounded to the full precision of the 80-bit
+double-extended-precision format, like occurs for other formats.
+Setting extF80_roundingPrecision
to 32 or to 64 causes the
+operations listed to be rounded to 32-bit precision (equivalent to
+float32_t
) or to 64-bit precision (equivalent to
+float64_t
), respectively.
+When rounding to reduced precision, additional bits in the result significand
+beyond the rounding point are set to zero.
+The consequences of setting extF80_roundingPrecision
to a value
+other than 32, 64, or 80 is not specified.
+Operations other than the ones listed above are not affected by
+extF80_roundingPrecision
.
+
+
+
+7. Exceptions and Exception Flags
+
+
+All five exception flags required by the IEEE Floating-Point Standard are
+implemented.
+Each flag is stored as a separate bit in the global variable
+
+uint_fast8_t softfloat_exceptionFlags;
+
+The positions of the exception flag bits within this variable are determined by
+the bit masks
+
+softfloat_flag_inexact
+softfloat_flag_underflow
+softfloat_flag_overflow
+softfloat_flag_infinite
+softfloat_flag_invalid
+
+Variable softfloat_exceptionFlags
is initialized to all zeros,
+meaning no exceptions.
+
+
+
+For some SoftFloat ports, softfloat_exceptionFlags
may be
+per-thread (declared thread_local
), meaning that different
+execution threads have their own separate instances of it.
+
+
+
+An individual exception flag can be cleared with the statement
+
+softfloat_exceptionFlags &= ~softfloat_flag_<exception>;
+
+where <exception>
is the appropriate name.
+To raise a floating-point exception, function softfloat_raiseFlags
+should normally be used.
+
+
+
+When SoftFloat detects an exception other than inexact, it calls
+softfloat_raiseFlags
.
+The default version of this function simply raises the corresponding exception
+flags.
+Particular ports of SoftFloat may support alternate behavior, such as exception
+traps, by modifying the default softfloat_raiseFlags
.
+A program may also supply its own softfloat_raiseFlags
function to
+override the one from the SoftFloat library.
+
+
+
+Because inexact results occur frequently under most circumstances (and thus are
+hardly exceptional), SoftFloat does not ordinarily call
+softfloat_raiseFlags
for inexact exceptions.
+It does always raise the inexact exception flag as required.
+
+
+
+8. Function Details
+
+
+In this section, <float>
appears in function names as
+a substitute for one of these abbreviations:
+
+
+
+f16 |
+indicates float16_t , passed by value |
+
+
+f32 |
+indicates float32_t , passed by value |
+
+
+f64 |
+indicates float64_t , passed by value |
+
+
+extF80M |
+indicates extFloat80_t , passed indirectly via pointers |
+
+
+extF80 |
+indicates extFloat80_t , passed by value |
+
+
+f128M |
+indicates float128_t , passed indirectly via pointers |
+
+
+f128 |
+indicates float128_t , passed by value |
+
+
+
+The circumstances under which values of floating-point types
+extFloat80_t
and float128_t
may be passed either by
+value or indirectly via pointers was discussed earlier in
+section 4.5, Conventions for Passing Arguments and Results.
+
+
+8.1. Conversions from Integer to Floating-Point
+
+
+All conversions from a 32-bit or 64-bit integer,
+signed or unsigned, to a floating-point format are supported.
+Functions performing these conversions have these names:
+
+ui32_to_<float>
+ui64_to_<float>
+i32_to_<float>
+i64_to_<float>
+
+Conversions from 32-bit integers to 64-bit
+double-precision and larger formats are always exact, and likewise conversions
+from 64-bit integers to 80-bit
+double-extended-precision and 128-bit quadruple-precision are also
+always exact.
+
+
+
+Each conversion function takes one input of the appropriate type and generates
+one output.
+The following illustrates the signatures of these functions in cases when the
+floating-point result is passed either by value or via pointers:
+
+
+float64_t i32_to_f64( int32_t a );
+
+
+void i32_to_f128M( int32_t a, float128_t *destPtr );
+
+
+
+
+8.2. Conversions from Floating-Point to Integer
+
+
+Conversions from a floating-point format to a 32-bit or
+64-bit integer, signed or unsigned, are supported with these
+functions:
+
+<float>_to_ui32
+<float>_to_ui64
+<float>_to_i32
+<float>_to_i64
+
+The functions have signatures as follows, depending on whether the
+floating-point input is passed by value or via pointers:
+
+
+int_fast32_t f64_to_i32( float64_t a, uint_fast8_t roundingMode, bool exact );
+
+
+int_fast32_t
+ f128M_to_i32( const float128_t *aPtr, uint_fast8_t roundingMode, bool exact );
+
+
+
+
+
+The roundingMode
argument specifies the rounding mode for
+the conversion.
+The variable that usually indicates rounding mode,
+softfloat_roundingMode
, is ignored.
+Argument exact
determines whether the inexact
+exception flag is raised if the conversion is not exact.
+If exact
is true
, the inexact flag may
+be raised;
+otherwise, it will not be, even if the conversion is inexact.
+
+
+
+A conversion from floating-point to integer format raises the invalid
+exception if the source value cannot be rounded to a representable integer of
+the desired size (32 or 64 bits).
+In such circumstances, the integer result returned is determined by the
+particular port of SoftFloat, although typically this value will be either the
+maximum or minimum value of the integer format.
+The functions that convert to integer types never raise the floating-point
+overflow exception.
+
+
+
+Because languages such as C require that conversions to integers
+be rounded toward zero, the following functions are provided for improved speed
+and convenience:
+
+<float>_to_ui32_r_minMag
+<float>_to_ui64_r_minMag
+<float>_to_i32_r_minMag
+<float>_to_i64_r_minMag
+
+These functions round only toward zero (to minimum magnitude).
+The signatures for these functions are the same as above without the redundant
+roundingMode
argument:
+
+
+int_fast32_t f64_to_i32_r_minMag( float64_t a, bool exact );
+
+
+int_fast32_t f128M_to_i32_r_minMag( const float128_t *aPtr, bool exact );
+
+
+
+
+8.3. Conversions Among Floating-Point Types
+
+
+Conversions between floating-point formats are done by functions with these
+names:
+
+<float>_to_<float>
+
+All combinations of source and result type are supported where the source and
+result are different formats.
+There are four different styles of signature for these functions, depending on
+whether the input and the output floating-point values are passed by value or
+via pointers:
+
+
+float32_t f64_to_f32( float64_t a );
+
+
+float32_t f128M_to_f32( const float128_t *aPtr );
+
+
+void f32_to_f128M( float32_t a, float128_t *destPtr );
+
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *destPtr );
+
+
+
+
+
+Conversions from a smaller to a larger floating-point format are always exact
+and so require no rounding.
+
+
+8.4. Basic Arithmetic Functions
+
+
+The following basic arithmetic functions are provided:
+
+<float>_add
+<float>_sub
+<float>_mul
+<float>_div
+<float>_sqrt
+
+Each floating-point operation takes two operands, except for sqrt
+(square root) which takes only one.
+The operands and result are all of the same floating-point format.
+Signatures for these functions take the following forms:
+
+
+float64_t f64_add( float64_t a, float64_t b );
+
+
+void
+ f128M_add(
+ const float128_t *aPtr, const float128_t *bPtr, float128_t *destPtr );
+
+
+float64_t f64_sqrt( float64_t a );
+
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *destPtr );
+
+
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
and bPtr
point to the input
+operands, and the last argument, destPtr
, points to the
+location where the result is stored.
+
+
+
+Rounding of the 80-bit double-extended-precision
+(extFloat80_t
) functions is affected by variable
+extF80_roundingPrecision
, as explained earlier in
+section 6.3,
+Rounding Precision for the 80-Bit Extended Format.
+
+
+8.5. Fused Multiply-Add Functions
+
+
+The 2008 version of the IEEE Floating-Point Standard defines a fused
+multiply-add operation that does a combined multiplication and addition
+with only a single rounding.
+SoftFloat implements fused multiply-add with functions
+
+<float>_mulAdd
+
+Unlike other operations, fused multiple-add is not supported for the
+80-bit double-extended-precision format,
+extFloat80_t
.
+
+
+
+Depending on whether floating-point values are passed by value or via pointers,
+the fused multiply-add functions have signatures of these forms:
+
+
+float64_t f64_mulAdd( float64_t a, float64_t b, float64_t c );
+
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *destPtr
+ );
+
+
+The functions compute
+(a
× b
)
+ + c
+with a single rounding.
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
, bPtr
, and
+cPtr
point to operands a
,
+b
, and c
respectively, and
+destPtr
points to the location where the result is stored.
+
+
+
+If one of the multiplication operands a
and
+b
is infinite and the other is zero, these functions raise
+the invalid exception even if operand c
is a quiet NaN.
+
+
+8.6. Remainder Functions
+
+
+For each format, SoftFloat implements the remainder operation defined by the
+IEEE Floating-Point Standard.
+The remainder functions have names
+
+<float>_rem
+
+Each remainder operation takes two floating-point operands of the same format
+and returns a result in the same format.
+Depending on whether floating-point values are passed by value or via pointers,
+the remainder functions have signatures of these forms:
+
+
+float64_t f64_rem( float64_t a, float64_t b );
+
+
+void
+ f128M_rem(
+ const float128_t *aPtr, const float128_t *bPtr, float128_t *destPtr );
+
+
+When floating-point values are passed indirectly through pointers, arguments
+aPtr
and bPtr
point to operands
+a
and b
respectively, and
+destPtr
points to the location where the result is stored.
+
+
+
+The IEEE Standard remainder operation computes the value
+a
+ − n × b
,
+where n is the integer closest to
+a
÷ b
.
+If a
÷ b
is exactly
+halfway between two integers, n is the even integer closest to
+a
÷ b
.
+The IEEE Standard’s remainder operation is always exact and so requires
+no rounding.
+
+
+
+Depending on the relative magnitudes of the operands, the remainder
+functions can take considerably longer to execute than the other SoftFloat
+functions.
+This is an inherent characteristic of the remainder operation itself and is not
+a flaw in the SoftFloat implementation.
+
+
+8.7. Round-to-Integer Functions
+
+
+For each format, SoftFloat implements the round-to-integer operation specified
+by the IEEE Floating-Point Standard.
+These functions are named
+
+<float>_roundToInt
+
+Each round-to-integer operation takes a single floating-point operand.
+This operand is rounded to an integer according to a specified rounding mode,
+and the resulting integer value is returned in the same floating-point format.
+(Note that the result is not an integer type.)
+
+
+
+The signatures of the round-to-integer functions are similar to those for
+conversions to an integer type:
+
+
+float64_t f64_roundToInt( float64_t a, uint_fast8_t roundingMode, bool exact );
+
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *destPtr
+ );
+
+
+When floating-point values are passed indirectly through pointers,
+aPtr
points to the input operand and
+destPtr
points to the location where the result is stored.
+
+
+
+The roundingMode
argument specifies the rounding mode to
+apply.
+The variable that usually indicates rounding mode,
+softfloat_roundingMode
, is ignored.
+Argument exact
determines whether the inexact
+exception flag is raised if the conversion is not exact.
+If exact
is true
, the inexact flag may
+be raised;
+otherwise, it will not be, even if the conversion is inexact.
+
+
+8.8. Comparison Functions
+
+
+For each format, the following floating-point comparison functions are
+provided:
+
+<float>_eq
+<float>_le
+<float>_lt
+
+Each comparison takes two operands of the same type and returns a Boolean.
+The abbreviation eq
stands for “equal” (=);
+le
stands for “less than or equal” (≤);
+and lt
stands for “less than” (<).
+Depending on whether the floating-point operands are passed by value or via
+pointers, the comparison functions have signatures of these forms:
+
+
+bool f64_eq( float64_t a, float64_t b );
+
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr );
+
+
+
+
+
+The usual greater-than (>), greater-than-or-equal (≥), and not-equal
+(≠) comparisons are easily obtained from the functions provided.
+The not-equal function is just the logical complement of the equal function.
+The greater-than-or-equal function is identical to the less-than-or-equal
+function with the arguments in reverse order, and likewise the greater-than
+function is identical to the less-than function with the arguments reversed.
+
+
+
+The IEEE Floating-Point Standard specifies that the less-than-or-equal and
+less-than comparisons by default raise the invalid exception if either
+operand is any kind of NaN.
+Equality comparisons, on the other hand, are defined by default to raise the
+invalid exception only for signaling NaNs, not quiet NaNs.
+For completeness, SoftFloat provides these complementary functions:
+
+<float>_eq_signaling
+<float>_le_quiet
+<float>_lt_quiet
+
+The signaling
equality comparisons are identical to the default
+equality comparisons except that the invalid exception is raised for any
+NaN input, not just for signaling NaNs.
+Similarly, the quiet
comparison functions are identical to their
+default counterparts except that the invalid exception is not raised for
+quiet NaNs.
+
+
+8.9. Signaling NaN Test Functions
+
+
+Functions for testing whether a floating-point value is a signaling NaN are
+provided with these names:
+
+<float>_isSignalingNaN
+
+The functions take one floating-point operand and return a Boolean indicating
+whether the operand is a signaling NaN.
+Accordingly, the functions have the forms
+
+
+bool f64_isSignalingNaN( float64_t a );
+
+
+bool f128M_isSignalingNaN( const float128_t *aPtr );
+
+
+
+
+8.10. Raise-Exception Function
+
+
+SoftFloat provides a single function for raising floating-point exceptions:
+
+
+void softfloat_raiseFlags( uint_fast8_t exceptions );
+
+
+The exceptions
argument is a mask indicating the set of
+exceptions to raise.
+(See earlier section 7, Exceptions and Exception Flags.)
+In addition to setting the specified exception flags in variable
+softfloat_exceptionFlags
, the softfloat_raiseFlags
+function may cause a trap or abort appropriate for the current system.
+
+
+
+9. Changes from SoftFloat Release 2
+
+
+Apart from a change in the legal use license, Release 3 of
+SoftFloat introduced numerous technical differences compared to earlier
+releases.
+
+
+9.1. Name Changes
+
+
+The most obvious and pervasive difference compared to Release 2
+is that the names of most functions and variables have changed, even when the
+behavior has not.
+First, the floating-point types, the mode variables, the exception flags
+variable, the function to raise exceptions, and various associated constants
+have been renamed as follows:
+
+
+
+old name, Release 2: |
+new name, Release 3: |
+
+
+float32 |
+float32_t |
+
+
+float64 |
+float64_t |
+
+
+floatx80 |
+extFloat80_t |
+
+
+float128 |
+float128_t |
+
+
+float_rounding_mode |
+softfloat_roundingMode |
+
+
+float_round_nearest_even |
+softfloat_round_near_even |
+
+
+float_round_to_zero |
+softfloat_round_minMag |
+
+
+float_round_down |
+softfloat_round_min |
+
+
+float_round_up |
+softfloat_round_max |
+
+
+float_detect_tininess |
+softfloat_detectTininess |
+
+
+float_tininess_before_rounding |
+softfloat_tininess_beforeRounding |
+
+
+float_tininess_after_rounding |
+softfloat_tininess_afterRounding |
+
+
+floatx80_rounding_precision |
+extF80_roundingPrecision |
+
+
+float_exception_flags |
+softfloat_exceptionFlags |
+
+
+float_flag_inexact |
+softfloat_flag_inexact |
+
+
+float_flag_underflow |
+softfloat_flag_underflow |
+
+
+float_flag_overflow |
+softfloat_flag_overflow |
+
+
+float_flag_divbyzero |
+softfloat_flag_infinite |
+
+
+float_flag_invalid |
+softfloat_flag_invalid |
+
+
+float_raise |
+softfloat_raiseFlags |
+
+
+
+
+
+
+Furthermore, Release 3 adopted the following new abbreviations for
+function names:
+
+
+
+used in names in Release 2: |
+used in names in Release 3: |
+
+ int32 | i32 |
+ int64 | i64 |
+ float32 | f32 |
+ float64 | f64 |
+ floatx80 | extF80 |
+ float128 | f128 |
+
+
+Thus, for example, the function to add two 32-bit floating-point
+numbers, previously called float32_add
in Release 2,
+is now f32_add
.
+Lastly, there have been a few other changes to function names:
+
+
+
+used in names in Release 2: |
+used in names in Release 3: |
+relevant functions: |
+
+
+_round_to_zero |
+_r_minMag |
+conversions from floating-point to integer (section 8.2) |
+
+
+round_to_int |
+roundToInt |
+round-to-integer functions (section 8.7) |
+
+
+is_signaling_nan |
+isSignalingNaN |
+signaling NaN test functions (section 8.9) |
+
+
+
+
+
+9.2. Changes to Function Arguments
+
+
+Besides simple name changes, some operations were given a different interface
+in Release 3 than they had in Release 2:
+
+
+-
+
+Since Release 3, integer arguments and results of functions have
+standard types from header <stdint.h>
, such as
+uint32_t
, whereas previously their types could be defined
+differently for each port of SoftFloat, usually using traditional C types such
+as unsigned
int
.
+Likewise, functions in Release 3 and later pass Booleans as
+standard type bool
from <stdbool.h>
, whereas
+previously these were again passed as a port-specific type (usually
+int
).
+
+
+ -
+
+As explained earlier in section 4.5, Conventions for Passing
+Arguments and Results, SoftFloat functions in Release 3 and
+later may pass 80-bit and 128-bit floating-point
+values through pointers, meaning that functions take pointer arguments and then
+read or write floating-point values at the locations indicated by the pointers.
+In Release 2, floating-point arguments and results were always
+passed by value, regardless of their size.
+
+
+ -
+
+Functions that round to an integer have additional
+roundingMode
and exact
arguments that
+they did not have in Release 2.
+Refer to sections 8.2 and 8.7 for descriptions of these functions
+since Release 3.
+For Release 2, the rounding mode, when needed, was taken from the
+same global variable that affects the basic arithmetic operations (now called
+softfloat_roundingMode
but previously known as
+float_rounding_mode
).
+Also, for Release 2, if the original floating-point input was not
+an exact integer value, and if the invalid exception was not raised by
+the function, the inexact exception was always raised.
+Release 2 had no option to suppress raising inexact in this
+case.
+Applications using SoftFloat Release 3 or later can get the same
+effect as Release 2 by passing variable
+softfloat_roundingMode
for argument
+roundingMode
and true
for argument
+exact
.
+
+
+
+
+
+9.3. Added Capabilities
+
+
+With Release 3, some new features have been added that were not
+present in Release 2:
+
+
+-
+
+A port of SoftFloat can now define any of the floating-point types
+float32_t
, float64_t
, extFloat80_t
, and
+float128_t
as aliases for C’s standard floating-point types
+float
, double
, and long
+double
, using either #define
or typedef
.
+This potential convenience was not supported under Release 2.
+
+
+
+(Note, however, that there may be a performance cost to defining
+SoftFloat’s floating-point types this way, depending on the platform and
+the applications using SoftFloat.
+Ports of SoftFloat may choose to forgo the convenience in favor of better
+speed.)
+
+
+
+
-
+As of Release 3b, 16-bit half-precision,
+
float16_t
, is supported.
+
+
+
+
-
+Functions have been added for converting between the floating-point types and
+unsigned integers.
+Release 2 supported only signed integers, not unsigned.
+
+
+
+
-
+Fused multiply-add functions have been added for all floating-point formats
+except 80-bit double-extended-precision,
+
extFloat80_t
.
+
+
+
+
-
+New rounding modes are supported:
+
softfloat_round_near_maxMag
(round to nearest, with ties to
+maximum magnitude, away from zero), and, as of Release 3c,
+optional softfloat_round_odd
(round to odd, also known as
+jamming).
+
+
+
+
+
+9.4. Better Compatibility with the C Language
+
+
+Release 3 of SoftFloat was written to conform better to the ISO C
+Standard’s rules for portability.
+For example, older releases of SoftFloat employed type conversions in ways
+that, while commonly practiced, are not fully defined by the C Standard.
+Such problematic type conversions have generally been replaced by the use of
+unions, the behavior around which is more strictly regulated these days.
+
+
+9.5. New Organization as a Library
+
+
+Starting with Release 3, SoftFloat now builds as a library.
+Previously, SoftFloat compiled into a single, monolithic object file containing
+all the SoftFloat functions, with the consequence that a program linking with
+SoftFloat would get every SoftFloat function in its binary file even if only a
+few functions were actually used.
+With SoftFloat in the form of a library, a program that is linked by a standard
+linker will include only those functions of SoftFloat that it needs and no
+others.
+
+
+9.6. Optimization Gains (and Losses)
+
+
+Individual SoftFloat functions have been variously improved in
+Release 3 compared to earlier releases.
+In particular, better, faster algorithms have been deployed for the operations
+of division, square root, and remainder.
+For functions operating on the larger 80-bit and
+128-bit formats, extFloat80_t
and
+float128_t
, code size has also generally been reduced.
+
+
+
+However, because Release 2 compiled all of SoftFloat together as a
+single object file, compilers could make optimizations across function calls
+when one SoftFloat function calls another.
+Now that the functions of SoftFloat are compiled separately and only afterward
+linked together into a program, there is not usually the same opportunity to
+optimize across function calls.
+Some loss of speed has been observed due to this change.
+
+
+
+10. Future Directions
+
+
+The following improvements are anticipated for future releases of SoftFloat:
+
+-
+more functions from the 2008 version of the IEEE Floating-Point Standard;
+
-
+consistent, defined behavior for non-canonical representations of extended
+format
extFloat80_t
(discussed in section 4.4,
+Non-canonical Representations in extFloat80_t
).
+
+
+
+
+
+11. Contact Information
+
+
+At the time of this writing, the most up-to-date information about SoftFloat
+and the latest release can be found at the Web page
+http://www.jhauser.us/arithmetic/SoftFloat.html
.
+
+
+
+
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..3405b3ba4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| `zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..cb7424f43
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c
new file mode 100644
index 000000000..e7ea80258
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
+| `zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..7a9423bea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..d4e458a94
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..ed6c2268f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..1182be3c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..00baf35f8
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..ab6311ef2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..55ec25b58
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument `aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..f838f02aa
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..c1e242d23
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..b21ba6603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..6529d2ee5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..ea1d57a78
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80M.c
@@ -0,0 +1,107 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by `zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ bool isSigNaNA;
+ const struct extFloat80M *sPtr;
+ bool isSigNaNB;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiMagA64, uiMagB64;
+
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ sPtr = aSPtr;
+ if ( ! bSPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ uiB64 = bSPtr->signExp;
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ uiB0 = bSPtr->signif;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
+ goto copy;
+ } else {
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
+ goto copyB;
+ }
+ }
+ uiB64 = bSPtr->signExp;
+ returnLargerUIMag:
+ uiA64 = aSPtr->signExp;
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto copyB;
+ if ( uiMagB64 < uiMagA64 ) goto copy;
+ uiA0 = aSPtr->signif;
+ uiB0 = bSPtr->signif;
+ if ( uiA0 < uiB0 ) goto copyB;
+ if ( uiB0 < uiA0 ) goto copy;
+ if ( uiA64 < uiB64 ) goto copy;
+ copyB:
+ sPtr = bSPtr;
+ copy:
+ zSPtr->signExp = sPtr->signExp;
+ zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..cc3f0f42c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNExtF80UI.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA0, uiNonsigB0;
+ uint_fast16_t uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
+ uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiA64 < uiB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiNonsigB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiNonsigA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c
new file mode 100644
index 000000000..aa903bf80
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128M.c
@@ -0,0 +1,76 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by `zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
+| and `zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ bool isSigNaNA;
+ const uint32_t *ptr;
+
+ ptr = aWPtr;
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ if (
+ isSigNaNA
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto copy;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
+ copy:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..1c1c2f4a0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF128UI.c
@@ -0,0 +1,81 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating `uiA64' and
+| `uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating `uiB64' and `uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ }
+ if ( isNaNF128UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v64 |= UINT64_C( 0x0000800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..4e87ff41f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF16UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | 0x0200;
+ }
+ return (isNaNF16UI( uiA ) ? uiA : uiB) | 0x0200;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..e1a875525
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF32UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | 0x00400000;
+ }
+ return (isNaNF32UI( uiA ) ? uiA : uiB) | 0x00400000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..1af349f3e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/s_propagateNaNF64UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting `uiA' and `uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either `uiA' or `uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) return uiA | UINT64_C( 0x0008000000000000 );
+ }
+ return (isNaNF64UI( uiA ) ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c
new file mode 100644
index 000000000..3115306be
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by `flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply `softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h
new file mode 100644
index 000000000..5fe119a1e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086-SSE/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_afterRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0xFFFFFFFF
+#define ui32_fromNaN 0xFFFFFFFF
+#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN (-0x7FFFFFFF - 1)
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0xFE00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0xFFC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0xFFFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0xFFFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..3405b3ba4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| `zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..cb7424f43
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c
new file mode 100644
index 000000000..e7ea80258
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by `zWPtr'. Argument
+| `zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..7a9423bea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..d4e458a94
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..ed6c2268f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..1182be3c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by `aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..00baf35f8
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by `aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by `zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..ab6311ef2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..55ec25b58
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by `aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by `zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument `aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..f838f02aa
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating `uiA64' and `uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..c1e242d23
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..b21ba6603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..6529d2ee5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming `uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by `zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..ea1d57a78
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c
@@ -0,0 +1,107 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by `aSPtr' and `bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by `zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ bool isSigNaNA;
+ const struct extFloat80M *sPtr;
+ bool isSigNaNB;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiMagA64, uiMagB64;
+
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ sPtr = aSPtr;
+ if ( ! bSPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ uiB64 = bSPtr->signExp;
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ uiB0 = bSPtr->signif;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto copyB;
+ goto copy;
+ } else {
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto copy;
+ goto copyB;
+ }
+ }
+ uiB64 = bSPtr->signExp;
+ returnLargerUIMag:
+ uiA64 = aSPtr->signExp;
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto copyB;
+ if ( uiMagB64 < uiMagA64 ) goto copy;
+ uiA0 = aSPtr->signif;
+ uiB0 = bSPtr->signif;
+ if ( uiA0 < uiB0 ) goto copyB;
+ if ( uiB0 < uiA0 ) goto copy;
+ if ( uiA64 < uiB64 ) goto copy;
+ copyB:
+ sPtr = bSPtr;
+ copy:
+ zSPtr->signExp = sPtr->signExp;
+ zSPtr->signif = sPtr->signif | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..cc3f0f42c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNExtF80UI.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA0, uiNonsigB0;
+ uint_fast16_t uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNExtF80UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA0 = uiA0 | UINT64_C( 0xC000000000000000 );
+ uiNonsigB0 = uiB0 | UINT64_C( 0xC000000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNExtF80UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & 0x7FFF;
+ uiMagB64 = uiB64 & 0x7FFF;
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiA64 < uiB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiNonsigB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiNonsigA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c
new file mode 100644
index 000000000..06554fbfe
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128M.c
@@ -0,0 +1,108 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| `aWPtr' and `bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by `zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of `aWPtr', `bWPtr',
+| and `zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ bool isSigNaNA;
+ const uint32_t *ptr;
+ bool isSigNaNB;
+ uint32_t uiA96, uiB96, wordMagA, wordMagB;
+
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ ptr = aWPtr;
+ if ( ! bWPtr ) {
+ if ( isSigNaNA ) softfloat_raiseFlags( softfloat_flag_invalid );
+ goto copy;
+ }
+ isSigNaNB = f128M_isSignalingNaN( (const float128_t *) bWPtr );
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerUIMag;
+ if ( softfloat_isNaNF128M( bWPtr ) ) goto copyB;
+ goto copy;
+ } else {
+ if ( softfloat_isNaNF128M( aWPtr ) ) goto copy;
+ goto copyB;
+ }
+ }
+ returnLargerUIMag:
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ wordMagA = uiA96 & 0x7FFFFFFF;
+ wordMagB = uiB96 & 0x7FFFFFFF;
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 2 )];
+ wordMagB = bWPtr[indexWord( 4, 2 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 1 )];
+ wordMagB = bWPtr[indexWord( 4, 1 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ wordMagA = aWPtr[indexWord( 4, 0 )];
+ wordMagB = bWPtr[indexWord( 4, 0 )];
+ if ( wordMagA < wordMagB ) goto copyB;
+ if ( wordMagB < wordMagA ) goto copy;
+ if ( uiA96 < uiB96 ) goto copy;
+ copyB:
+ ptr = bWPtr;
+ copy:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..46b9f5f2c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF128UI.c
@@ -0,0 +1,105 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA64, uiNonsigB64, uiMagA64, uiMagB64;
+ struct uint128 uiZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ isSigNaNB = softfloat_isSigNaNF128UI( uiB64, uiB0 );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA64 = uiA64 | UINT64_C( 0x0000800000000000 );
+ uiNonsigB64 = uiB64 | UINT64_C( 0x0000800000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ if ( isNaNF128UI( uiB64, uiB0 ) ) goto returnB;
+ goto returnA;
+ } else {
+ if ( isNaNF128UI( uiA64, uiA0 ) ) goto returnA;
+ goto returnB;
+ }
+ }
+ returnLargerMag:
+ uiMagA64 = uiA64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ uiMagB64 = uiB64 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( uiMagA64 < uiMagB64 ) goto returnB;
+ if ( uiMagB64 < uiMagA64 ) goto returnA;
+ if ( uiA0 < uiB0 ) goto returnB;
+ if ( uiB0 < uiA0 ) goto returnA;
+ if ( uiNonsigA64 < uiNonsigB64 ) goto returnA;
+ returnB:
+ uiZ.v64 = uiNonsigB64;
+ uiZ.v0 = uiB0;
+ return uiZ;
+ returnA:
+ uiZ.v64 = uiNonsigA64;
+ uiZ.v0 = uiA0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..89cc0fe97
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast16_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF16UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | 0x0200;
+ uiNonsigB = uiB | 0x0200;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF16UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF16UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & 0x7FFF;
+ uiMagB = uiB & 0x7FFF;
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..aeb6024ac
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF32UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast32_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF32UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | 0x00400000;
+ uiNonsigB = uiB | 0x00400000;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF32UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF32UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & 0x7FFFFFFF;
+ uiMagB = uiB & 0x7FFFFFFF;
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..dabad4024
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/s_propagateNaNF64UI.c
@@ -0,0 +1,84 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2018 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA, isSigNaNB;
+ uint_fast64_t uiNonsigA, uiNonsigB, uiMagA, uiMagB;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ isSigNaNB = softfloat_isSigNaNF64UI( uiB );
+ /*------------------------------------------------------------------------
+ | Make NaNs non-signaling.
+ *------------------------------------------------------------------------*/
+ uiNonsigA = uiA | UINT64_C( 0x0008000000000000 );
+ uiNonsigB = uiB | UINT64_C( 0x0008000000000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isSigNaNA | isSigNaNB ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) {
+ if ( isSigNaNB ) goto returnLargerMag;
+ return isNaNF64UI( uiB ) ? uiNonsigB : uiNonsigA;
+ } else {
+ return isNaNF64UI( uiA ) ? uiNonsigA : uiNonsigB;
+ }
+ }
+ returnLargerMag:
+ uiMagA = uiA & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ uiMagB = uiB & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( uiMagA < uiMagB ) return uiNonsigB;
+ if ( uiMagB < uiMagA ) return uiNonsigA;
+ return (uiNonsigA < uiNonsigB) ? uiNonsigA : uiNonsigB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c
new file mode 100644
index 000000000..3115306be
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by `flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply `softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h
new file mode 100644
index 000000000..5fe119a1e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/8086/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_afterRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0xFFFFFFFF
+#define ui32_fromNaN 0xFFFFFFFF
+#define i32_fromPosOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN (-0x7FFFFFFF - 1)
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNaN UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define i64_fromPosOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0xFE00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0xFFC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0xFFF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0xFFFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0xFFFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0xFFFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..54a50dc35
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80M.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat_types.h"
+
+#define softfloat_commonNaNToExtF80M softfloat_commonNaNToExtF80M
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..5b698f664
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToExtF80UI.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToExtF80UI softfloat_commonNaNToExtF80UI
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c
new file mode 100644
index 000000000..b22baa816
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128M.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToF128M softfloat_commonNaNToF128M
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..70f0cf1c6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF128UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "primitiveTypes.h"
+
+#define softfloat_commonNaNToF128UI softfloat_commonNaNToF128UI
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF16UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF32UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_commonNaNToF64UI.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80MToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_extF80UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128MToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f128UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f16UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f32UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..7c7d5c82e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_f64UIToCommonNaN.c
@@ -0,0 +1,5 @@
+
+/*----------------------------------------------------------------------------
+| This file intentionally contains no code.
+*----------------------------------------------------------------------------*/
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..1c6510c7e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80M.c
@@ -0,0 +1,74 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ uint_fast16_t ui64;
+ uint_fast64_t ui0;
+
+ ui64 = aSPtr->signExp;
+ ui0 = aSPtr->signif;
+ if (
+ softfloat_isSigNaNExtF80UI( ui64, ui0 )
+ || (bSPtr
+ && (ui64 = bSPtr->signExp,
+ ui0 = bSPtr->signif,
+ softfloat_isSigNaNExtF80UI( ui64, ui0 )))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..e1bb1555a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNExtF80UI.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ struct uint128 uiZ;
+
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c
new file mode 100644
index 000000000..9bddee955
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128M.c
@@ -0,0 +1,68 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+
+ if (
+ f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..57fddd158
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF128UI.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitiveTypes.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ struct uint128 uiZ;
+
+ if (
+ softfloat_isSigNaNF128UI( uiA64, uiA0 )
+ || softfloat_isSigNaNF128UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..0b08e0039
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF16UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF16UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..cab740358
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF32UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF32UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..83b91d3a9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/s_propagateNaNF64UI.c
@@ -0,0 +1,58 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return defaultNaNF64UI;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c
new file mode 100644
index 000000000..61046da3c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by 'flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply 'softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h
new file mode 100644
index 000000000..2c481a259
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2-defaultNaN/specialize.h
@@ -0,0 +1,407 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_beforeRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0
+#define ui32_fromNaN 0
+#define i32_fromPosOverflow 0x7FFFFFFF
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow 0
+#define ui64_fromNaN 0
+#define i64_fromPosOverflow INT64_C( 0x7FFFFFFFFFFFFFFF )
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN { char _unused; };
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0x7E00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f16UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x0200) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF16UI( aPtr ) ((uint_fast16_t) defaultNaNF16UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0x7FC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f32UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & 0x00400000) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF32UI( aPtr ) ((uint_fast32_t) defaultNaNF32UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0x7FF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f64UIToCommonNaN( uiA, zPtr ) if ( ! ((uiA) & UINT64_C( 0x0008000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#define softfloat_commonNaNToF64UI( aPtr ) ((uint_fast64_t) defaultNaNF64UI)
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0x7FFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_extF80UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA0) & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToExtF80UI
+INLINE
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+ uiZ.v64 = defaultNaNExtF80UI64;
+ uiZ.v0 = defaultNaNExtF80UI0;
+ return uiZ;
+}
+#else
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0x7FFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_f128UIToCommonNaN( uiA64, uiA0, zPtr ) if ( ! ((uiA64) & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToF128UI
+INLINE
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+ uiZ.v64 = defaultNaNF128UI64;
+ uiZ.v0 = defaultNaNF128UI0;
+ return uiZ;
+}
+#else
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+#endif
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+#define softfloat_extF80MToCommonNaN( aSPtr, zPtr ) if ( ! ((aSPtr)->signif & UINT64_C( 0x4000000000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToExtF80M
+INLINE
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+ zSPtr->signExp = defaultNaNExtF80UI64;
+ zSPtr->signif = defaultNaNExtF80UI0;
+}
+#else
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0x7FFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+#define softfloat_f128MToCommonNaN( aWPtr, zPtr ) if ( ! ((aWPtr)[indexWordHi( 4 )] & UINT64_C( 0x0000800000000000 )) ) softfloat_raiseFlags( softfloat_flag_invalid )
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+#if defined INLINE && ! defined softfloat_commonNaNToF128M
+INLINE
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+ zWPtr[indexWord( 4, 3 )] = defaultNaNF128UI96;
+ zWPtr[indexWord( 4, 2 )] = defaultNaNF128UI64;
+ zWPtr[indexWord( 4, 1 )] = defaultNaNF128UI32;
+ zWPtr[indexWord( 4, 0 )] = defaultNaNF128UI0;
+}
+#else
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+#endif
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c
new file mode 100644
index 000000000..85ee211c2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/extF80M_isSignalingNaN.c
@@ -0,0 +1,57 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool extF80M_isSignalingNaN( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint64_t uiA0;
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ if ( (aSPtr->signExp & 0x7FFF) != 0x7FFF ) return false;
+ uiA0 = aSPtr->signif;
+ return
+ ! (uiA0 & UINT64_C( 0x4000000000000000 ))
+ && (uiA0 & UINT64_C( 0x3FFFFFFFFFFFFFFF));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c
new file mode 100644
index 000000000..79a707771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/f128M_isSignalingNaN.c
@@ -0,0 +1,60 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+*----------------------------------------------------------------------------*/
+bool f128M_isSignalingNaN( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ if ( (uiA96 & 0x7FFF8000) != 0x7FFF0000 ) return false;
+ return
+ ((uiA96 & 0x00007FFF) != 0)
+ || ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c
new file mode 100644
index 000000000..543400bc1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr )
+{
+
+ zSPtr->signExp = packToExtF80UI64( aPtr->sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c
new file mode 100644
index 000000000..6cf1d1191
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToExtF80UI.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ.v64 = (uint_fast16_t) aPtr->sign<<15 | 0x7FFF;
+ uiZ.v0 = UINT64_C( 0xC000000000000000 ) | aPtr->v64>>1;
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c
new file mode 100644
index 000000000..4e8ede07f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128M.c
@@ -0,0 +1,56 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr )
+{
+
+ softfloat_shortShiftRight128M( (const uint32_t *) &aPtr->v0, 16, zWPtr );
+ zWPtr[indexWordHi( 4 )] |= (uint32_t) aPtr->sign<<31 | 0x7FFF8000;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c
new file mode 100644
index 000000000..f938c3f2d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF128UI.c
@@ -0,0 +1,55 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN *aPtr )
+{
+ struct uint128 uiZ;
+
+ uiZ = softfloat_shortShiftRight128( aPtr->v64, aPtr->v0, 16 );
+ uiZ.v64 |= (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FFF800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c
new file mode 100644
index 000000000..6cd4fc192
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF16UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast16_t) aPtr->sign<<15 | 0x7E00 | aPtr->v64>>54;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c
new file mode 100644
index 000000000..7b38167f0
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF32UI.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr )
+{
+
+ return (uint_fast32_t) aPtr->sign<<31 | 0x7FC00000 | aPtr->v64>>41;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c
new file mode 100644
index 000000000..14847029d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_commonNaNToF64UI.c
@@ -0,0 +1,53 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr )
+{
+
+ return
+ (uint_fast64_t) aPtr->sign<<63 | UINT64_C( 0x7FF8000000000000 )
+ | aPtr->v64>>12;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c
new file mode 100644
index 000000000..82216cf41
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr )
+{
+
+ if ( extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = signExtF80UI64( aSPtr->signExp );
+ zPtr->v64 = aSPtr->signif<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c
new file mode 100644
index 000000000..2559fb6d2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_extF80UIToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA64>>15;
+ zPtr->v64 = uiA0<<1;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c
new file mode 100644
index 000000000..322d25ab1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128MToCommonNaN.c
@@ -0,0 +1,62 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr )
+{
+
+ if ( f128M_isSignalingNaN( (const float128_t *) aWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = aWPtr[indexWordHi( 4 )]>>31;
+ softfloat_shortShiftLeft128M( aWPtr, 16, (uint32_t *) &zPtr->v0 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c
new file mode 100644
index 000000000..843c187a7
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f128UIToCommonNaN.c
@@ -0,0 +1,65 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "primitives.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr )
+{
+ struct uint128 NaNSig;
+
+ if ( softfloat_isSigNaNF128UI( uiA64, uiA0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ NaNSig = softfloat_shortShiftLeft128( uiA64, uiA0, 16 );
+ zPtr->sign = uiA64>>63;
+ zPtr->v64 = NaNSig.v64;
+ zPtr->v0 = NaNSig.v0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c
new file mode 100644
index 000000000..f5fe58770
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f16UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF16UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>15;
+ zPtr->v64 = (uint_fast64_t) uiA<<54;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c
new file mode 100644
index 000000000..58726a357
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f32UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF32UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>31;
+ zPtr->v64 = (uint_fast64_t) uiA<<41;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c
new file mode 100644
index 000000000..03761e433
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_f64UIToCommonNaN.c
@@ -0,0 +1,59 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr )
+{
+
+ if ( softfloat_isSigNaNF64UI( uiA ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ zPtr->sign = uiA>>63;
+ zPtr->v64 = uiA<<12;
+ zPtr->v0 = 0;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c
new file mode 100644
index 000000000..f10ed0b62
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80M.c
@@ -0,0 +1,86 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ )
+{
+ const struct extFloat80M *sPtr;
+ bool isSigNaNA;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+
+ sPtr = aSPtr;
+ isSigNaNA = extF80M_isSignalingNaN( (const extFloat80_t *) aSPtr );
+ if (
+ isSigNaNA
+ || (bSPtr
+ && extF80M_isSignalingNaN( (const extFloat80_t *) bSPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto copyNonsig;
+ goto copyNonsigB;
+ }
+ uiZ64 = sPtr->signExp;
+ uiZ0 = sPtr->signif;
+ if ( isNaNExtF80UI( uiZ64, uiZ0 ) ) goto returnNonsig;
+ copyNonsigB:
+ sPtr = bSPtr;
+ copyNonsig:
+ uiZ64 = sPtr->signExp;
+ uiZ0 = sPtr->signif;
+ returnNonsig:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0 | UINT64_C( 0xC000000000000000 );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c
new file mode 100644
index 000000000..bd23c2473
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNExtF80UI.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNExtF80UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ goto returnNonsigB;
+ }
+ if ( isNaNExtF80UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ returnNonsigB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v0 | UINT64_C( 0xC000000000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c
new file mode 100644
index 000000000..23e766a19
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128M.c
@@ -0,0 +1,77 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr )
+{
+ const uint32_t *ptr;
+ bool isSigNaNA;
+
+ ptr = aWPtr;
+ isSigNaNA = f128M_isSignalingNaN( (const float128_t *) aWPtr );
+ if (
+ isSigNaNA
+ || (bWPtr && f128M_isSignalingNaN( (const float128_t *) bWPtr ))
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( ! isSigNaNA ) ptr = bWPtr;
+ goto copyNonsig;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) ) ptr = bWPtr;
+ copyNonsig:
+ zWPtr[indexWordHi( 4 )] = ptr[indexWordHi( 4 )] | 0x00008000;
+ zWPtr[indexWord( 4, 2 )] = ptr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = ptr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = ptr[indexWord( 4, 0 )];
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c
new file mode 100644
index 000000000..b8882d77c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF128UI.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ )
+{
+ bool isSigNaNA;
+ struct uint128 uiZ;
+
+ isSigNaNA = softfloat_isSigNaNF128UI( uiA64, uiA0 );
+ if ( isSigNaNA || softfloat_isSigNaNF128UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ if ( isSigNaNA ) goto returnNonsigA;
+ goto returnNonsigB;
+ }
+ if ( isNaNF128UI( uiA64, uiA0 ) ) {
+ returnNonsigA:
+ uiZ.v64 = uiA64;
+ uiZ.v0 = uiA0;
+ } else {
+ returnNonsigB:
+ uiZ.v64 = uiB64;
+ uiZ.v0 = uiB0;
+ }
+ uiZ.v64 |= UINT64_C( 0x0000800000000000 );
+ return uiZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c
new file mode 100644
index 000000000..e33332874
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF16UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF16UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF16UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | 0x0200;
+ }
+ return isNaNF16UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c
new file mode 100644
index 000000000..c7508ae7c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF32UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF32UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF32UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | 0x00400000;
+ }
+ return isNaNF32UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c
new file mode 100644
index 000000000..8c6776381
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/s_propagateNaNF64UI.c
@@ -0,0 +1,63 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB )
+{
+ bool isSigNaNA;
+
+ isSigNaNA = softfloat_isSigNaNF64UI( uiA );
+ if ( isSigNaNA || softfloat_isSigNaNF64UI( uiB ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return (isSigNaNA ? uiA : uiB) | UINT64_C( 0x0008000000000000 );
+ }
+ return isNaNF64UI( uiA ) ? uiA : uiB;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c
new file mode 100644
index 000000000..61046da3c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/softfloat_raiseFlags.c
@@ -0,0 +1,52 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include "platform.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Raises the exceptions specified by 'flags'. Floating-point traps can be
+| defined here if desired. It is currently not possible for such a trap
+| to substitute a result value. If traps are not implemented, this routine
+| should be simply 'softfloat_exceptionFlags |= flags;'.
+*----------------------------------------------------------------------------*/
+void softfloat_raiseFlags( uint_fast8_t flags )
+{
+
+ softfloat_exceptionFlags |= flags;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h
new file mode 100644
index 000000000..5321f33bc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/ARM-VFPv2/specialize.h
@@ -0,0 +1,376 @@
+
+/*============================================================================
+
+This C header file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#ifndef specialize_h
+#define specialize_h 1
+
+#include
+#include
+#include "primitiveTypes.h"
+#include "softfloat.h"
+
+/*----------------------------------------------------------------------------
+| Default value for 'softfloat_detectTininess'.
+*----------------------------------------------------------------------------*/
+#define init_detectTininess softfloat_tininess_beforeRounding
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 32-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui32_fromPosOverflow 0xFFFFFFFF
+#define ui32_fromNegOverflow 0
+#define ui32_fromNaN 0
+#define i32_fromPosOverflow 0x7FFFFFFF
+#define i32_fromNegOverflow (-0x7FFFFFFF - 1)
+#define i32_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| The values to return on conversions to 64-bit integer formats that raise an
+| invalid exception.
+*----------------------------------------------------------------------------*/
+#define ui64_fromPosOverflow UINT64_C( 0xFFFFFFFFFFFFFFFF )
+#define ui64_fromNegOverflow 0
+#define ui64_fromNaN 0
+#define i64_fromPosOverflow INT64_C( 0x7FFFFFFFFFFFFFFF )
+#define i64_fromNegOverflow (-INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1)
+#define i64_fromNaN 0
+
+/*----------------------------------------------------------------------------
+| "Common NaN" structure, used to transfer NaN representations from one format
+| to another.
+*----------------------------------------------------------------------------*/
+struct commonNaN {
+ bool sign;
+#ifdef LITTLEENDIAN
+ uint64_t v0, v64;
+#else
+ uint64_t v64, v0;
+#endif
+};
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 16-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF16UI 0x7E00
+
+/*----------------------------------------------------------------------------
+| Returns true when 16-bit unsigned integer 'uiA' has the bit pattern of a
+| 16-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF16UI( uiA ) ((((uiA) & 0x7E00) == 0x7C00) && ((uiA) & 0x01FF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 16-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f16UIToCommonNaN( uint_fast16_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 16-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast16_t softfloat_commonNaNToF16UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 16-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast16_t
+ softfloat_propagateNaNF16UI( uint_fast16_t uiA, uint_fast16_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 32-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF32UI 0x7FC00000
+
+/*----------------------------------------------------------------------------
+| Returns true when 32-bit unsigned integer 'uiA' has the bit pattern of a
+| 32-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF32UI( uiA ) ((((uiA) & 0x7FC00000) == 0x7F800000) && ((uiA) & 0x003FFFFF))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 32-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f32UIToCommonNaN( uint_fast32_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 32-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast32_t softfloat_commonNaNToF32UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 32-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast32_t
+ softfloat_propagateNaNF32UI( uint_fast32_t uiA, uint_fast32_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 64-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF64UI UINT64_C( 0x7FF8000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when 64-bit unsigned integer 'uiA' has the bit pattern of a
+| 64-bit floating-point signaling NaN.
+| Note: This macro evaluates its argument more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF64UI( uiA ) ((((uiA) & UINT64_C( 0x7FF8000000000000 )) == UINT64_C( 0x7FF0000000000000 )) && ((uiA) & UINT64_C( 0x0007FFFFFFFFFFFF )))
+
+/*----------------------------------------------------------------------------
+| Assuming 'uiA' has the bit pattern of a 64-bit floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void softfloat_f64UIToCommonNaN( uint_fast64_t uiA, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 64-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+uint_fast64_t softfloat_commonNaNToF64UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting 'uiA' and 'uiB' as the bit patterns of two 64-bit floating-
+| point values, at least one of which is a NaN, returns the bit pattern of
+| the combined NaN result. If either 'uiA' or 'uiB' has the pattern of a
+| signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+uint_fast64_t
+ softfloat_propagateNaNF64UI( uint_fast64_t uiA, uint_fast64_t uiB );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 80-bit extended floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNExtF80UI64 0x7FFF
+#define defaultNaNExtF80UI0 UINT64_C( 0xC000000000000000 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 80-bit unsigned integer formed from concatenating
+| 16-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of an 80-bit extended
+| floating-point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNExtF80UI( uiA64, uiA0 ) ((((uiA64) & 0x7FFF) == 0x7FFF) && ! ((uiA0) & UINT64_C( 0x4000000000000000 )) && ((uiA0) & UINT64_C( 0x3FFFFFFFFFFFFFFF )))
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of an 80-bit extended floating-point NaN, converts
+| this NaN to the common NaN form, and stores the resulting common NaN at the
+| location pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80UIToCommonNaN(
+ uint_fast16_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and returns the bit pattern of this value as an unsigned
+| integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToExtF80UI( const struct commonNaN *aPtr );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as an 80-bit extended floating-point value, and likewise interpreting
+| the unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 80-bit extended floating-point value, and assuming at least on of these
+| floating-point values is a NaN, returns the bit pattern of the combined NaN
+| result. If either original floating-point value is a signaling NaN, the
+| invalid exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNExtF80UI(
+ uint_fast16_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast16_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI64 UINT64_C( 0x7FFF800000000000 )
+#define defaultNaNF128UI0 UINT64_C( 0 )
+
+/*----------------------------------------------------------------------------
+| Returns true when the 128-bit unsigned integer formed from concatenating
+| 64-bit 'uiA64' and 64-bit 'uiA0' has the bit pattern of a 128-bit floating-
+| point signaling NaN.
+| Note: This macro evaluates its arguments more than once.
+*----------------------------------------------------------------------------*/
+#define softfloat_isSigNaNF128UI( uiA64, uiA0 ) ((((uiA64) & UINT64_C( 0x7FFF800000000000 )) == UINT64_C( 0x7FFF000000000000 )) && ((uiA0) || ((uiA64) & UINT64_C( 0x00007FFFFFFFFFFF ))))
+
+/*----------------------------------------------------------------------------
+| Assuming the unsigned integer formed from concatenating 'uiA64' and 'uiA0'
+| has the bit pattern of a 128-bit floating-point NaN, converts this NaN to
+| the common NaN form, and stores the resulting common NaN at the location
+| pointed to by 'zPtr'. If the NaN is a signaling NaN, the invalid exception
+| is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128UIToCommonNaN(
+ uint_fast64_t uiA64, uint_fast64_t uiA0, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and returns the bit pattern of this value as an unsigned integer.
+*----------------------------------------------------------------------------*/
+struct uint128 softfloat_commonNaNToF128UI( const struct commonNaN * );
+
+/*----------------------------------------------------------------------------
+| Interpreting the unsigned integer formed from concatenating 'uiA64' and
+| 'uiA0' as a 128-bit floating-point value, and likewise interpreting the
+| unsigned integer formed from concatenating 'uiB64' and 'uiB0' as another
+| 128-bit floating-point value, and assuming at least on of these floating-
+| point values is a NaN, returns the bit pattern of the combined NaN result.
+| If either original floating-point value is a signaling NaN, the invalid
+| exception is raised.
+*----------------------------------------------------------------------------*/
+struct uint128
+ softfloat_propagateNaNF128UI(
+ uint_fast64_t uiA64,
+ uint_fast64_t uiA0,
+ uint_fast64_t uiB64,
+ uint_fast64_t uiB0
+ );
+
+#else
+
+/*----------------------------------------------------------------------------
+| The following functions are needed only when 'SOFTFLOAT_FAST_INT64' is not
+| defined.
+*----------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+| Assuming the 80-bit extended floating-point value pointed to by 'aSPtr' is
+| a NaN, converts this NaN to the common NaN form, and stores the resulting
+| common NaN at the location pointed to by 'zPtr'. If the NaN is a signaling
+| NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_extF80MToCommonNaN(
+ const struct extFloat80M *aSPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into an 80-bit extended
+| floating-point NaN, and stores this NaN at the location pointed to by
+| 'zSPtr'.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToExtF80M(
+ const struct commonNaN *aPtr, struct extFloat80M *zSPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 80-bit extended floating-point values
+| pointed to by 'aSPtr' and 'bSPtr' is a NaN, stores the combined NaN result
+| at the location pointed to by 'zSPtr'. If either original floating-point
+| value is a signaling NaN, the invalid exception is raised.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNExtF80M(
+ const struct extFloat80M *aSPtr,
+ const struct extFloat80M *bSPtr,
+ struct extFloat80M *zSPtr
+ );
+
+/*----------------------------------------------------------------------------
+| The bit pattern for a default generated 128-bit floating-point NaN.
+*----------------------------------------------------------------------------*/
+#define defaultNaNF128UI96 0x7FFF8000
+#define defaultNaNF128UI64 0
+#define defaultNaNF128UI32 0
+#define defaultNaNF128UI0 0
+
+/*----------------------------------------------------------------------------
+| Assuming the 128-bit floating-point value pointed to by 'aWPtr' is a NaN,
+| converts this NaN to the common NaN form, and stores the resulting common
+| NaN at the location pointed to by 'zPtr'. If the NaN is a signaling NaN,
+| the invalid exception is raised. Argument 'aWPtr' points to an array of
+| four 32-bit elements that concatenate in the platform's normal endian order
+| to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_f128MToCommonNaN( const uint32_t *aWPtr, struct commonNaN *zPtr );
+
+/*----------------------------------------------------------------------------
+| Converts the common NaN pointed to by 'aPtr' into a 128-bit floating-point
+| NaN, and stores this NaN at the location pointed to by 'zWPtr'. Argument
+| 'zWPtr' points to an array of four 32-bit elements that concatenate in the
+| platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_commonNaNToF128M( const struct commonNaN *aPtr, uint32_t *zWPtr );
+
+/*----------------------------------------------------------------------------
+| Assuming at least one of the two 128-bit floating-point values pointed to by
+| 'aWPtr' and 'bWPtr' is a NaN, stores the combined NaN result at the location
+| pointed to by 'zWPtr'. If either original floating-point value is a
+| signaling NaN, the invalid exception is raised. Each of 'aWPtr', 'bWPtr',
+| and 'zWPtr' points to an array of four 32-bit elements that concatenate in
+| the platform's normal endian order to form a 128-bit floating-point value.
+*----------------------------------------------------------------------------*/
+void
+ softfloat_propagateNaNF128M(
+ const uint32_t *aWPtr, const uint32_t *bWPtr, uint32_t *zWPtr );
+
+#endif
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c
new file mode 100644
index 000000000..02e415fcc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_add.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_add(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ signA = signExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsExtF80 : softfloat_subMagsExtF80;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ extF80M_add(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ softfloat_addExtF80M(
+ (const struct extFloat80M *) aPtr,
+ (const struct extFloat80M *) bPtr,
+ (struct extFloat80M *) zPtr,
+ false
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c
new file mode 100644
index 000000000..4d543ce9e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_div.c
@@ -0,0 +1,194 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_div(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_div( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_div(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA;
+ uint_fast16_t uiB64;
+ int32_t expB;
+ bool signZ;
+ uint64_t sigA, x64;
+ int32_t expZ;
+ int shiftDist;
+ uint32_t y[3], recip32, sigB[3];
+ int ix;
+ uint32_t q, qs[2];
+ uint_fast16_t uiZ64;
+ uint64_t uiZ0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ expB = expExtF80UI64( uiB64 );
+ signZ = signExtF80UI64( uiA64 ) ^ signExtF80UI64( uiB64 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if ( expA == 0x7FFF ) {
+ if ( expB == 0x7FFF ) goto invalid;
+ goto infinity;
+ }
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigA = aSPtr->signif;
+ x64 = bSPtr->signif;
+ if ( ! expB ) expB = 1;
+ if ( ! (x64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! x64 ) {
+ if ( ! sigA ) goto invalid;
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ expB += softfloat_normExtF80SigM( &x64 );
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFF;
+ shiftDist = 29;
+ if ( sigA < x64 ) {
+ --expZ;
+ shiftDist = 30;
+ }
+ softfloat_shortShiftLeft64To96M( sigA, shiftDist, y );
+ recip32 = softfloat_approxRecip32_1( x64>>32 );
+ sigB[indexWord( 3, 0 )] = (uint32_t) x64<<30;
+ x64 >>= 2;
+ sigB[indexWord( 3, 2 )] = x64>>32;
+ sigB[indexWord( 3, 1 )] = x64;
+ ix = 2;
+ for (;;) {
+ x64 = (uint64_t) y[indexWordHi( 3 )] * recip32;
+ q = (x64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ softfloat_remStep96MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 3 )] & 0x80000000 ) {
+ --q;
+ softfloat_add96M( y, sigB, y );
+ }
+ qs[ix] = q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 0x3FFFFF) < 2 ) {
+ softfloat_remStep96MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 3 )] & 0x80000000 ) {
+ --q;
+ softfloat_add96M( y, sigB, y );
+ } else if ( softfloat_compare96M( sigB, y ) <= 0 ) {
+ ++q;
+ softfloat_sub96M( y, sigB, y );
+ }
+ if (
+ y[indexWordLo( 3 )] || y[indexWord( 3, 1 )] || y[indexWord( 3, 2 )]
+ ) {
+ q |= 1;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ x64 = (uint64_t) q<<9;
+ y[indexWord( 3, 0 )] = x64;
+ x64 = ((uint64_t) qs[0]<<6) + (x64>>32);
+ y[indexWord( 3, 1 )] = x64;
+ y[indexWord( 3, 2 )] = (qs[1]<<3) + (x64>>32);
+ softfloat_roundPackMToExtF80M(
+ signZ, expZ, y, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c
new file mode 100644
index 000000000..e17aa2435
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq.c
@@ -0,0 +1,98 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_eq( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_eq( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_eq( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( uiA0 == uiB0 ) {
+ return (uiA64 == uiB64) || ! uiA0;
+ } else {
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return ! softfloat_compareNonnormExtF80M( aSPtr, bSPtr );
+ }
+ return false;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c
new file mode 100644
index 000000000..c4a732239
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_eq_signaling.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_eq_signaling( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_eq_signaling( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_eq_signaling( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( uiA0 == uiB0 ) {
+ return (uiA64 == uiB64) || ! uiA0;
+ } else {
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return ! softfloat_compareNonnormExtF80M( aSPtr, bSPtr );
+ }
+ return false;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c
new file mode 100644
index 000000000..e54eb9eea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_le( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_le( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_le( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA || ! (uiA0 | uiB0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) <= 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return true;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c
new file mode 100644
index 000000000..943f26206
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_le_quiet.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_le_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_le_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_le_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA || ! (uiA0 | uiB0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) <= 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return true;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c
new file mode 100644
index 000000000..cbc562f64
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt.c
@@ -0,0 +1,106 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_lt( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_lt( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_lt( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA && ((uiA0 | uiB0) != 0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) < 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return false;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c
new file mode 100644
index 000000000..650586d02
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_lt_quiet.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool extF80M_lt_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+
+ return extF80_lt_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool extF80M_lt_quiet( const extFloat80_t *aPtr, const extFloat80_t *bPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint64_t uiA0;
+ uint_fast16_t uiB64;
+ uint64_t uiB0;
+ bool signA, ltMags;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ signA = signExtF80UI64( uiA64 );
+ if ( (uiA64 ^ uiB64) & 0x8000 ) {
+ /*--------------------------------------------------------------------
+ | Signs are different.
+ *--------------------------------------------------------------------*/
+ return signA && ((uiA0 | uiB0) != 0);
+ } else {
+ /*--------------------------------------------------------------------
+ | Signs are the same.
+ *--------------------------------------------------------------------*/
+ if ( ! ((uiA0 & uiB0) & UINT64_C( 0x8000000000000000 )) ) {
+ return (softfloat_compareNonnormExtF80M( aSPtr, bSPtr ) < 0);
+ }
+ if ( uiA64 == uiB64 ) {
+ if ( uiA0 == uiB0 ) return false;
+ ltMags = (uiA0 < uiB0);
+ } else {
+ ltMags = (uiA64 < uiB64);
+ }
+ return signA ^ ltMags;
+ }
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c
new file mode 100644
index 000000000..281394f71
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_mul.c
@@ -0,0 +1,139 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_mul(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_mul( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_mul(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA;
+ uint_fast16_t uiB64;
+ int32_t expB;
+ bool signZ;
+ uint_fast16_t exp, uiZ64;
+ uint64_t uiZ0, sigA, sigB;
+ int32_t expZ;
+ uint32_t sigProd[4], *extSigZPtr;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ expB = expExtF80UI64( uiB64 );
+ signZ = signExtF80UI64( uiA64 ) ^ signExtF80UI64( uiB64 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if (
+ (! aSPtr->signif && (expA != 0x7FFF))
+ || (! bSPtr->signif && (expB != 0x7FFF))
+ ) {
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ }
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ sigA = aSPtr->signif;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ if ( ! expB ) expB = 1;
+ sigB = bSPtr->signif;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto zero;
+ expB += softfloat_normExtF80SigM( &sigB );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x3FFE;
+ softfloat_mul64To128M( sigA, sigB, sigProd );
+ if ( sigProd[indexWordLo( 4 )] ) sigProd[indexWord( 4, 1 )] |= 1;
+ extSigZPtr = &sigProd[indexMultiwordHi( 4, 3 )];
+ if ( sigProd[indexWordHi( 4 )] < 0x80000000 ) {
+ --expZ;
+ softfloat_add96M( extSigZPtr, extSigZPtr, extSigZPtr );
+ }
+ softfloat_roundPackMToExtF80M(
+ signZ, expZ, extSigZPtr, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = uiZ0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c
new file mode 100644
index 000000000..4aff18ae9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_rem.c
@@ -0,0 +1,204 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_rem(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_rem( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ extF80M_rem(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64;
+ int32_t expA, expB;
+ uint64_t x64;
+ bool signRem;
+ uint64_t sigA;
+ int32_t expDiff;
+ uint32_t rem[3], x[3], sig32B, q, recip32, rem2[3], *remPtr, *altRemPtr;
+ uint32_t *newRemPtr, wordMeanRem;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ expA = expExtF80UI64( uiA64 );
+ expB = expExtF80UI64( bSPtr->signExp );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNExtF80M( aSPtr, bSPtr, zSPtr ) ) return;
+ if ( expA == 0x7FFF ) goto invalid;
+ /*--------------------------------------------------------------------
+ | If we get here, then argument b is an infinity and `expB' is 0x7FFF;
+ | Doubling `expB' is an easy way to ensure that `expDiff' later is
+ | less than -1, which will result in returning a canonicalized version
+ | of argument a.
+ *--------------------------------------------------------------------*/
+ expB += expB;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ x64 = bSPtr->signif;
+ if ( ! (x64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! x64 ) goto invalid;
+ expB += softfloat_normExtF80SigM( &x64 );
+ }
+ signRem = signExtF80UI64( uiA64 );
+ if ( ! expA ) expA = 1;
+ sigA = aSPtr->signif;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) {
+ expA = 0;
+ goto copyA;
+ }
+ expA += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < -1 ) goto copyA;
+ rem[indexWord( 3, 2 )] = sigA>>34;
+ rem[indexWord( 3, 1 )] = sigA>>2;
+ rem[indexWord( 3, 0 )] = (uint32_t) sigA<<30;
+ x[indexWord( 3, 0 )] = (uint32_t) x64<<30;
+ sig32B = x64>>32;
+ x64 >>= 2;
+ x[indexWord( 3, 2 )] = x64>>32;
+ x[indexWord( 3, 1 )] = x64;
+ if ( expDiff < 1 ) {
+ if ( expDiff ) {
+ --expB;
+ softfloat_add96M( x, x, x );
+ q = 0;
+ } else {
+ q = (softfloat_compare96M( x, rem ) <= 0);
+ if ( q ) softfloat_sub96M( rem, x, rem );
+ }
+ } else {
+ recip32 = softfloat_approxRecip32_1( sig32B );
+ expDiff -= 30;
+ for (;;) {
+ x64 = (uint64_t) rem[indexWordHi( 3 )] * recip32;
+ if ( expDiff < 0 ) break;
+ q = (x64 + 0x80000000)>>32;
+ softfloat_remStep96MBy32( rem, 29, x, q, rem );
+ if ( rem[indexWordHi( 3 )] & 0x80000000 ) {
+ softfloat_add96M( rem, x, rem );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (x64>>32)>>(~expDiff & 31);
+ softfloat_remStep96MBy32( rem, expDiff + 30, x, q, rem );
+ if ( rem[indexWordHi( 3 )] & 0x80000000 ) {
+ remPtr = rem;
+ altRemPtr = rem2;
+ softfloat_add96M( remPtr, x, altRemPtr );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ remPtr = rem;
+ altRemPtr = rem2;
+ do {
+ ++q;
+ newRemPtr = altRemPtr;
+ softfloat_sub96M( remPtr, x, newRemPtr );
+ altRemPtr = remPtr;
+ remPtr = newRemPtr;
+ } while ( ! (remPtr[indexWordHi( 3 )] & 0x80000000) );
+ selectRem:
+ softfloat_add96M( remPtr, altRemPtr, x );
+ wordMeanRem = x[indexWordHi( 3 )];
+ if (
+ (wordMeanRem & 0x80000000)
+ || (! wordMeanRem && (q & 1) && ! x[indexWord( 3, 0 )]
+ && ! x[indexWord( 3, 1 )])
+ ) {
+ remPtr = altRemPtr;
+ }
+ if ( remPtr[indexWordHi( 3 )] & 0x80000000 ) {
+ signRem = ! signRem;
+ softfloat_negX96M( remPtr );
+ }
+ softfloat_normRoundPackMToExtF80M( signRem, expB + 2, remPtr, 80, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ if ( expA < 1 ) {
+ sigA >>= 1 - expA;
+ expA = 0;
+ }
+ zSPtr->signExp = packToExtF80UI64( signRem, expA );
+ zSPtr->signif = sigA;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c
new file mode 100644
index 000000000..2e8572957
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_roundToInt.c
@@ -0,0 +1,176 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_roundToInt(
+ const extFloat80_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ extFloat80_t *zPtr
+ )
+{
+
+ *zPtr = extF80_roundToInt( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+void
+ extF80M_roundToInt(
+ const extFloat80_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ extFloat80_t *zPtr
+ )
+{
+ const struct extFloat80M *aSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64, signUI64;
+ int32_t exp;
+ uint64_t sigA;
+ uint_fast16_t uiZ64;
+ uint64_t sigZ, lastBitMask, roundBitsMask;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ exp = expExtF80UI64( uiA64 );
+ sigA = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( !(sigA & UINT64_C( 0x8000000000000000 )) && (exp != 0x7FFF) ) {
+ if ( !sigA ) {
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sigA );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp <= 0x3FFE ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !(sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( signUI64 ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !signUI64 ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ mag1:
+ uiZ64 = signUI64 | 0x3FFF;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x403E <= exp ) {
+ if ( exp == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_propagateNaNExtF80M( aSPtr, 0, zSPtr );
+ return;
+ }
+ sigZ = UINT64_C( 0x8000000000000000 );
+ } else {
+ sigZ = sigA;
+ }
+ uiZ64 = signUI64 | exp;
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ64 = signUI64 | exp;
+ lastBitMask = (uint64_t) 1<<(0x403E - exp);
+ roundBitsMask = lastBitMask - 1;
+ sigZ = sigA;
+ if ( roundingMode == softfloat_round_near_maxMag ) {
+ sigZ += lastBitMask>>1;
+ } else if ( roundingMode == softfloat_round_near_even ) {
+ sigZ += lastBitMask>>1;
+ if ( !(sigZ & roundBitsMask) ) sigZ &= ~lastBitMask;
+ } else if (
+ roundingMode == (signUI64 ? softfloat_round_min : softfloat_round_max)
+ ) {
+ sigZ += roundBitsMask;
+ }
+ sigZ &= ~roundBitsMask;
+ if ( !sigZ ) {
+ ++uiZ64;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ }
+ if ( sigZ != sigA ) {
+#ifdef SOFTFLOAT_ROUND_ODD
+ if ( roundingMode == softfloat_round_odd ) sigZ |= lastBitMask;
+#endif
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ uiZ:
+ zSPtr->signExp = uiZ64;
+ zSPtr->signif = sigZ;
+ return;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c
new file mode 100644
index 000000000..7ee91e0e5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sqrt.c
@@ -0,0 +1,180 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void extF80M_sqrt( const extFloat80_t *aPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = extF80_sqrt( *aPtr );
+
+}
+
+#else
+
+void extF80M_sqrt( const extFloat80_t *aPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr;
+ struct extFloat80M *zSPtr;
+ uint_fast16_t uiA64, signUI64;
+ int32_t expA;
+ uint64_t rem64;
+ int32_t expZ;
+ uint32_t rem96[3], sig32A, recipSqrt32, sig32Z, q;
+ uint64_t sig64Z, x64;
+ uint32_t rem32, term[4], rem[4], extSigZ[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ expA = expExtF80UI64( uiA64 );
+ rem64 = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( rem64 & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_propagateNaNExtF80M( aSPtr, 0, zSPtr );
+ return;
+ }
+ if ( signUI64 ) goto invalid;
+ rem64 = UINT64_C( 0x8000000000000000 );
+ goto copyA;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (rem64 & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! rem64 ) {
+ uiA64 = signUI64;
+ goto copyA;
+ }
+ expA += softfloat_normExtF80SigM( &rem64 );
+ }
+ if ( signUI64 ) goto invalid;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFF;
+ expA &= 1;
+ softfloat_shortShiftLeft64To96M( rem64, 30 - expA, rem96 );
+ sig32A = rem64>>32;
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) sig32Z >>= 1;
+ rem64 =
+ ((uint64_t) rem96[indexWord( 3, 2 )]<<32 | rem96[indexWord( 3, 1 )])
+ - (uint64_t) sig32Z * sig32Z;
+ rem96[indexWord( 3, 2 )] = rem64>>32;
+ rem96[indexWord( 3, 1 )] = rem64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ sig64Z = ((uint64_t) sig32Z<<32) + ((uint64_t) q<<3);
+ term[indexWord( 3, 2 )] = 0;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = ((uint64_t) sig32Z<<32) + sig64Z;
+ term[indexWord( 3, 1 )] = x64>>32;
+ term[indexWord( 3, 0 )] = x64;
+ softfloat_remStep96MBy32(
+ rem96, 29, term, q, &rem[indexMultiwordHi( 4, 3 )] );
+ rem32 = rem[indexWord( 4, 3 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ sig64Z -= 1<<3;
+ }
+ rem64 = (uint64_t) rem32<<32 | rem[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32) + 2;
+ if ( rem64>>34 ) q += recipSqrt32;
+ x64 = (uint64_t) q<<7;
+ extSigZ[indexWord( 3, 0 )] = x64;
+ x64 = (sig64Z<<1) + (x64>>32);
+ extSigZ[indexWord( 3, 2 )] = x64>>32;
+ extSigZ[indexWord( 3, 1 )] = x64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xFFFFFF) <= 2 ) {
+ q &= ~(uint32_t) 0xFFFF;
+ extSigZ[indexWordLo( 3 )] = q<<7;
+ x64 = sig64Z + (q>>27);
+ term[indexWord( 4, 3 )] = 0;
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ term[indexWord( 4, 0 )] = q<<5;
+ rem[indexWord( 4, 0 )] = 0;
+ softfloat_remStep128MBy32( rem, 28, term, q, rem );
+ q = rem[indexWordHi( 4 )];
+ if ( q & 0x80000000 ) {
+ softfloat_sub1X96M( extSigZ );
+ } else {
+ if ( q || rem[indexWord( 4, 1 )] || rem[indexWord( 4, 2 )] ) {
+ extSigZ[indexWordLo( 3 )] |= 1;
+ }
+ }
+ }
+ softfloat_roundPackMToExtF80M(
+ 0, expZ, extSigZ, extF80_roundingPrecision, zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidExtF80M( zSPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zSPtr->signExp = uiA64;
+ zSPtr->signif = rem64;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c
new file mode 100644
index 000000000..5d1895c7a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_sub.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ extF80M_sub(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+ const struct extFloat80M *aSPtr, *bSPtr;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ aSPtr = (const struct extFloat80M *) aPtr;
+ bSPtr = (const struct extFloat80M *) bPtr;
+ uiA64 = aSPtr->signExp;
+ uiA0 = aSPtr->signif;
+ signA = signExtF80UI64( uiA64 );
+ uiB64 = bSPtr->signExp;
+ uiB0 = bSPtr->signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsExtF80 : softfloat_addMagsExtF80;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ extF80M_sub(
+ const extFloat80_t *aPtr, const extFloat80_t *bPtr, extFloat80_t *zPtr )
+{
+
+ softfloat_addExtF80M(
+ (const struct extFloat80M *) aPtr,
+ (const struct extFloat80M *) bPtr,
+ (struct extFloat80M *) zPtr,
+ true
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c
new file mode 100644
index 000000000..da81e8d6b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f128M.c
@@ -0,0 +1,125 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *zPtr )
+{
+
+ *zPtr = extF80_to_f128( *aPtr );
+
+}
+
+#else
+
+void extF80M_to_f128M( const extFloat80_t *aPtr, float128_t *zPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint32_t *zWPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint32_t uiZ96;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zWPtr[indexWord( 4, 0 )] = 0;
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ softfloat_commonNaNToF128M( &commonNaN, zWPtr );
+ return;
+ }
+ uiZ96 = packToF128UI96( sign, 0x7FFF, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp ) --exp;
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ96 = packToF128UI96( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zWPtr[indexWord( 4, 1 )] = (uint32_t) sig<<17;
+ sig >>= 15;
+ zWPtr[indexWord( 4, 2 )] = sig;
+ if ( exp < 0 ) {
+ zWPtr[indexWordHi( 4 )] = sig>>32;
+ softfloat_shiftRight96M(
+ &zWPtr[indexMultiwordHi( 4, 3 )],
+ -exp,
+ &zWPtr[indexMultiwordHi( 4, 3 )]
+ );
+ exp = 0;
+ sig = (uint64_t) zWPtr[indexWordHi( 4 )]<<32;
+ }
+ zWPtr[indexWordHi( 4 )] = packToF128UI96( sign, exp, sig>>32 );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ zWPtr[indexWord( 4, 3 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c
new file mode 100644
index 000000000..5ae38d0c4
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f16.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float16_t extF80M_to_f16( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f16( *aPtr );
+
+}
+
+#else
+
+float16_t extF80M_to_f16( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint16_t uiZ, sig16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig16 = softfloat_shortShiftRightJam64( sig, 49 );
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, sig16 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c
new file mode 100644
index 000000000..47cf224dc
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f32.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float32_t extF80M_to_f32( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f32( *aPtr );
+
+}
+
+#else
+
+float32_t extF80M_to_f32( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint32_t uiZ, sig32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig32 = softfloat_shortShiftRightJam64( sig, 33 );
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, sig32 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c
new file mode 100644
index 000000000..5f8f4aa29
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_f64.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float64_t extF80M_to_f64( const extFloat80_t *aPtr )
+{
+
+ return extF80_to_f64( *aPtr );
+
+}
+
+#else
+
+float64_t extF80M_to_f64( const extFloat80_t *aPtr )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ struct commonNaN commonNaN;
+ uint64_t uiZ;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80MToCommonNaN( aSPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (sig & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sig ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ exp += softfloat_normExtF80SigM( &sig );
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig = softfloat_shortShiftRightJam64( sig, 1 );
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF64( sign, exp, sig );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c
new file mode 100644
index 000000000..06394e341
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast32_t
+ extF80M_to_i32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_i32( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+int_fast32_t
+ extF80M_to_i32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) {
+ if ( sig>>32 ) goto invalid;
+ if ( -32 < shiftDist ) {
+ sig <<= -shiftDist;
+ } else {
+ if ( (uint32_t) sig ) goto invalid;
+ }
+ } else {
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ }
+ return softfloat_roundToI32( sign, sig, roundingMode, exact );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ? i32_fromNaN
+ : sign ? i32_fromNegOverflow : i32_fromPosOverflow;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c
new file mode 100644
index 000000000..5f5cf599d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i32_r_minMag.c
@@ -0,0 +1,120 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast32_t extF80M_to_i32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_i32_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+int_fast32_t extF80M_to_i32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign, raiseInexact;
+ int32_t z;
+ uint64_t shiftedSig;
+ uint32_t absZ;
+ union { uint32_t ui; int32_t i; } u;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ raiseInexact = exact;
+ z = 0;
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ raiseInexact = false;
+ if ( shiftDist < 0 ) {
+ if ( sig>>32 || (shiftDist <= -31) ) goto invalid;
+ shiftedSig = (uint64_t) (uint32_t) sig<<-shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ absZ = shiftedSig;
+ } else {
+ shiftedSig = sig;
+ if ( shiftDist ) shiftedSig >>= shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ absZ = shiftedSig;
+ if ( exact && shiftDist ) {
+ raiseInexact = ((uint64_t) absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast64_t
+ extF80M_to_i64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_i64( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+int_fast64_t
+ extF80M_to_i64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ uint32_t extSig[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ extSig[indexWord( 3, 2 )] = sig>>32;
+ extSig[indexWord( 3, 1 )] = sig;
+ extSig[indexWord( 3, 0 )] = 0;
+ if ( shiftDist ) softfloat_shiftRightJam96M( extSig, shiftDist, extSig );
+ return softfloat_roundMToI64( sign, extSig, roundingMode, exact );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c
new file mode 100644
index 000000000..ec9b92844
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_i64_r_minMag.c
@@ -0,0 +1,115 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+int_fast64_t extF80M_to_i64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_i64_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+int_fast64_t extF80M_to_i64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign, raiseInexact;
+ int64_t z;
+ uint64_t absZ;
+ union { uint64_t ui; int64_t i; } u;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ raiseInexact = exact;
+ z = 0;
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ raiseInexact = false;
+ if ( shiftDist < 0 ) {
+ if ( shiftDist <= -63 ) goto invalid;
+ shiftDist = -shiftDist;
+ absZ = sig<>shiftDist != sig ) goto invalid;
+ } else {
+ absZ = sig;
+ if ( shiftDist ) absZ >>= shiftDist;
+ if ( exact && shiftDist ) raiseInexact = (absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast32_t
+ extF80M_to_ui32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_ui32( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+uint_fast32_t
+ extF80M_to_ui32(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) {
+ if ( sig>>32 ) goto invalid;
+ if ( -32 < shiftDist ) {
+ sig <<= -shiftDist;
+ } else {
+ if ( (uint32_t) sig ) goto invalid;
+ }
+ } else {
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ }
+ return softfloat_roundToUI32( sign, sig, roundingMode, exact );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui32_fromNaN
+ : sign ? ui32_fromNegOverflow : ui32_fromPosOverflow;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c
new file mode 100644
index 000000000..e28b08d70
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui32_r_minMag.c
@@ -0,0 +1,111 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast32_t extF80M_to_ui32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_ui32_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+uint_fast32_t extF80M_to_ui32_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign;
+ uint64_t shiftedSig;
+ uint32_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 0 ) {
+ if ( sign || sig>>32 || (shiftDist <= -31) ) goto invalid;
+ shiftedSig = (uint64_t) (uint32_t) sig<<-shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ z = shiftedSig;
+ } else {
+ shiftedSig = sig;
+ if ( shiftDist ) shiftedSig >>= shiftDist;
+ if ( shiftedSig>>32 ) goto invalid;
+ z = shiftedSig;
+ if ( sign && z ) goto invalid;
+ if ( exact && shiftDist && ((uint64_t) z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast64_t
+ extF80M_to_ui64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+
+ return extF80_to_ui64( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+uint_fast64_t
+ extF80M_to_ui64(
+ const extFloat80_t *aPtr, uint_fast8_t roundingMode, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ bool sign;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ uint32_t extSig[3];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ extSig[indexWord( 3, 2 )] = sig>>32;
+ extSig[indexWord( 3, 1 )] = sig;
+ extSig[indexWord( 3, 0 )] = 0;
+ if ( shiftDist ) softfloat_shiftRightJam96M( extSig, shiftDist, extSig );
+ return softfloat_roundMToUI64( sign, extSig, roundingMode, exact );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c
new file mode 100644
index 000000000..87d80897b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80M_to_ui64_r_minMag.c
@@ -0,0 +1,108 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+uint_fast64_t extF80M_to_ui64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+
+ return extF80_to_ui64_r_minMag( *aPtr, exact );
+
+}
+
+#else
+
+uint_fast64_t extF80M_to_ui64_r_minMag( const extFloat80_t *aPtr, bool exact )
+{
+ const struct extFloat80M *aSPtr;
+ uint_fast16_t uiA64;
+ int32_t exp;
+ uint64_t sig;
+ int32_t shiftDist;
+ bool sign;
+ uint64_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aSPtr = (const struct extFloat80M *) aPtr;
+ uiA64 = aSPtr->signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = aSPtr->signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! sig && (exp != 0x7FFF) ) return 0;
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 0 ) {
+ if ( sign || (shiftDist <= -63) ) goto invalid;
+ shiftDist = -shiftDist;
+ z = sig<>shiftDist != sig ) goto invalid;
+ } else {
+ z = sig;
+ if ( shiftDist ) z >>= shiftDist;
+ if ( sign && z ) goto invalid;
+ if ( exact && shiftDist && (z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_add( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ return softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ return softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsExtF80 : softfloat_subMagsExtF80;
+ return (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c
new file mode 100644
index 000000000..28dfb13de
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_div.c
@@ -0,0 +1,203 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_div( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ bool signZ;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ struct uint128 rem;
+ uint_fast32_t recip32;
+ uint_fast64_t sigZ;
+ int ix;
+ uint_fast64_t q64;
+ uint_fast32_t q;
+ struct uint128 term;
+ uint_fast64_t sigZExtra;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ goto invalid;
+ }
+ goto infinity;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) {
+ if ( ! sigA ) goto invalid;
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFF;
+ if ( sigA < sigB ) {
+ --expZ;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 32 );
+ } else {
+ rem = softfloat_shortShiftLeft128( 0, sigA, 31 );
+ }
+ recip32 = softfloat_approxRecip32_1( sigB>>32 );
+ sigZ = 0;
+ ix = 2;
+ for (;;) {
+ q64 = (uint_fast64_t) (uint32_t) (rem.v64>>2) * recip32;
+ q = (q64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ --q;
+ rem = softfloat_add128( rem.v64, rem.v0, sigB>>32, sigB<<32 );
+ }
+ sigZ = (sigZ<<29) + q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 0x3FFFFF) < 2 ) {
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ term = softfloat_shortShiftLeft128( 0, sigB, 32 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ --q;
+ rem = softfloat_add128( rem.v64, rem.v0, term.v64, term.v0 );
+ } else if ( softfloat_le128( term.v64, term.v0, rem.v64, rem.v0 ) ) {
+ ++q;
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ }
+ if ( rem.v64 | rem.v0 ) q |= 1;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigZ = (sigZ<<6) + (q>>23);
+ sigZExtra = (uint64_t) ((uint_fast64_t) q<<41);
+ return
+ softfloat_roundPackToExtF80(
+ signZ, expZ, sigZ, sigZExtra, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c
new file mode 100644
index 000000000..efcbc3714
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_eq( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ return
+ (uiA0 == uiB0)
+ && ((uiA64 == uiB64) || (! uiA0 && ! ((uiA64 | uiB64) & 0x7FFF)));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c
new file mode 100644
index 000000000..193b191e6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_eq_signaling.c
@@ -0,0 +1,67 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+bool extF80_eq_signaling( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ return
+ (uiA0 == uiB0)
+ && ((uiA64 == uiB64) || (! uiA0 && ! ((uiA64 | uiB64) & 0x7FFF)));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c
new file mode 100644
index 000000000..33d2abd7e
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_isSignalingNaN.c
@@ -0,0 +1,51 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_isSignalingNaN( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+
+ uA.f = a;
+ return softfloat_isSigNaNExtF80UI( uA.s.signExp, uA.s.signif );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c
new file mode 100644
index 000000000..4e23c5142
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_le( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 == uiB64) && (uiA0 == uiB0))
+ || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c
new file mode 100644
index 000000000..9839e47f9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_le_quiet.c
@@ -0,0 +1,78 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_le_quiet( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 == uiB64) && (uiA0 == uiB0))
+ || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c
new file mode 100644
index 000000000..a4ac69fa6
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt.c
@@ -0,0 +1,73 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_lt( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA && (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 != uiB64) || (uiA0 != uiB0))
+ && (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c
new file mode 100644
index 000000000..00f4d4768
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_lt_quiet.c
@@ -0,0 +1,78 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+bool extF80_lt_quiet( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signA, signB;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
+ if (
+ softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
+ || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ signA = signExtF80UI64( uiA64 );
+ signB = signExtF80UI64( uiB64 );
+ return
+ (signA != signB)
+ ? signA && (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
+ : ((uiA64 != uiB64) || (uiA0 != uiB0))
+ && (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c
new file mode 100644
index 000000000..39ce4012c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_mul.c
@@ -0,0 +1,158 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_mul( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ bool signZ;
+ uint_fast64_t magBits;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ struct uint128 sig128Z, uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if (
+ (sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ || ((expB == 0x7FFF) && (sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF )))
+ ) {
+ goto propagateNaN;
+ }
+ magBits = expB | sigB;
+ goto infArg;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ magBits = expA | sigA;
+ goto infArg;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x3FFE;
+ sig128Z = softfloat_mul64To128( sigA, sigB );
+ if ( sig128Z.v64 < UINT64_C( 0x8000000000000000 ) ) {
+ --expZ;
+ sig128Z =
+ softfloat_add128(
+ sig128Z.v64, sig128Z.v0, sig128Z.v64, sig128Z.v0 );
+ }
+ return
+ softfloat_roundPackToExtF80(
+ signZ, expZ, sig128Z.v64, sig128Z.v0, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infArg:
+ if ( ! magBits ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ } else {
+ uiZ64 = packToExtF80UI64( signZ, 0x7FFF );
+ uiZ0 = UINT64_C( 0x8000000000000000 );
+ }
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signZ, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c
new file mode 100644
index 000000000..5ad977526
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_rem.c
@@ -0,0 +1,225 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_rem( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ int_fast32_t expB;
+ uint_fast64_t sigB;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expDiff;
+ struct uint128 rem, shiftedSigB;
+ uint_fast32_t q, recip32;
+ uint_fast64_t q64;
+ struct uint128 term, altRem, meanRem;
+ bool signRem;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ expB = expExtF80UI64( uiB64 );
+ sigB = uiB0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if (
+ (sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ || ((expB == 0x7FFF) && (sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF )))
+ ) {
+ goto propagateNaN;
+ }
+ goto invalid;
+ }
+ if ( expB == 0x7FFF ) {
+ if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
+ /*--------------------------------------------------------------------
+ | Argument b is an infinity. Doubling `expB' is an easy way to ensure
+ | that `expDiff' later is less than -1, which will result in returning
+ | a canonicalized version of argument a.
+ *--------------------------------------------------------------------*/
+ expB += expB;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expB ) expB = 1;
+ if ( ! (sigB & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigB ) goto invalid;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigB );
+ expB += normExpSig.exp;
+ sigB = normExpSig.sig;
+ }
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) {
+ expA = 0;
+ goto copyA;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < -1 ) goto copyA;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 32 );
+ shiftedSigB = softfloat_shortShiftLeft128( 0, sigB, 32 );
+ if ( expDiff < 1 ) {
+ if ( expDiff ) {
+ --expB;
+ shiftedSigB = softfloat_shortShiftLeft128( 0, sigB, 33 );
+ q = 0;
+ } else {
+ q = (sigB <= sigA);
+ if ( q ) {
+ rem =
+ softfloat_sub128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ }
+ }
+ } else {
+ recip32 = softfloat_approxRecip32_1( sigB>>32 );
+ expDiff -= 30;
+ for (;;) {
+ q64 = (uint_fast64_t) (uint32_t) (rem.v64>>2) * recip32;
+ if ( expDiff < 0 ) break;
+ q = (q64 + 0x80000000)>>32;
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ rem =
+ softfloat_add128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (q64>>32)>>(~expDiff & 31);
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, expDiff + 30 );
+ term = softfloat_mul64ByShifted32To128( sigB, q );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ altRem =
+ softfloat_add128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ do {
+ altRem = rem;
+ ++q;
+ rem =
+ softfloat_sub128(
+ rem.v64, rem.v0, shiftedSigB.v64, shiftedSigB.v0 );
+ } while ( ! (rem.v64 & UINT64_C( 0x8000000000000000 )) );
+ selectRem:
+ meanRem = softfloat_add128( rem.v64, rem.v0, altRem.v64, altRem.v0 );
+ if (
+ (meanRem.v64 & UINT64_C( 0x8000000000000000 ))
+ || (! (meanRem.v64 | meanRem.v0) && (q & 1))
+ ) {
+ rem = altRem;
+ }
+ signRem = signA;
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ signRem = ! signRem;
+ rem = softfloat_sub128( 0, 0, rem.v64, rem.v0 );
+ }
+ return
+ softfloat_normRoundPackToExtF80(
+ signRem, rem.v64 | rem.v0 ? expB + 32 : 0, rem.v64, rem.v0, 80 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ propagateNaN:
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, uiB64, uiB0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ if ( expA < 1 ) {
+ sigA >>= 1 - expA;
+ expA = 0;
+ }
+ uiZ64 = packToExtF80UI64( signA, expA );
+ uiZ0 = sigA;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c
new file mode 100644
index 000000000..6c12d84c9
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_roundToInt.c
@@ -0,0 +1,154 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t
+ extF80_roundToInt( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64, signUI64;
+ int_fast32_t exp;
+ uint_fast64_t sigA;
+ uint_fast16_t uiZ64;
+ uint_fast64_t sigZ;
+ struct exp32_sig64 normExpSig;
+ struct uint128 uiZ;
+ uint_fast64_t lastBitMask, roundBitsMask;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ signUI64 = uiA64 & packToExtF80UI64( 1, 0 );
+ exp = expExtF80UI64( uiA64 );
+ sigA = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( !(sigA & UINT64_C( 0x8000000000000000 )) && (exp != 0x7FFF) ) {
+ if ( !sigA ) {
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ }
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ exp += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x403E <= exp ) {
+ if ( exp == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, sigA, 0, 0 );
+ uiZ64 = uiZ.v64;
+ sigZ = uiZ.v0;
+ goto uiZ;
+ }
+ sigZ = UINT64_C( 0x8000000000000000 );
+ } else {
+ sigZ = sigA;
+ }
+ uiZ64 = signUI64 | exp;
+ goto uiZ;
+ }
+ if ( exp <= 0x3FFE ) {
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !(sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( signUI64 ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !signUI64 ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ uiZ64 = signUI64;
+ sigZ = 0;
+ goto uiZ;
+ mag1:
+ uiZ64 = signUI64 | 0x3FFF;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ64 = signUI64 | exp;
+ lastBitMask = (uint_fast64_t) 1<<(0x403E - exp);
+ roundBitsMask = lastBitMask - 1;
+ sigZ = sigA;
+ if ( roundingMode == softfloat_round_near_maxMag ) {
+ sigZ += lastBitMask>>1;
+ } else if ( roundingMode == softfloat_round_near_even ) {
+ sigZ += lastBitMask>>1;
+ if ( !(sigZ & roundBitsMask) ) sigZ &= ~lastBitMask;
+ } else if (
+ roundingMode == (signUI64 ? softfloat_round_min : softfloat_round_max)
+ ) {
+ sigZ += roundBitsMask;
+ }
+ sigZ &= ~roundBitsMask;
+ if ( !sigZ ) {
+ ++uiZ64;
+ sigZ = UINT64_C( 0x8000000000000000 );
+ }
+ if ( sigZ != sigA ) {
+#ifdef SOFTFLOAT_ROUND_ODD
+ if ( roundingMode == softfloat_round_odd ) sigZ |= lastBitMask;
+#endif
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = sigZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c
new file mode 100644
index 000000000..af8c496e1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sqrt.c
@@ -0,0 +1,176 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_sqrt( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ int_fast32_t expA;
+ uint_fast64_t sigA;
+ struct uint128 uiZ;
+ uint_fast16_t uiZ64;
+ uint_fast64_t uiZ0;
+ struct exp32_sig64 normExpSig;
+ int_fast32_t expZ;
+ uint_fast32_t sig32A, recipSqrt32, sig32Z;
+ struct uint128 rem;
+ uint_fast64_t q, x64, sigZ;
+ struct uint128 y, term;
+ uint_fast64_t sigZExtra;
+ union { struct extFloat80M s; extFloat80_t f; } uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ expA = expExtF80UI64( uiA64 );
+ sigA = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA == 0x7FFF ) {
+ if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ uiZ = softfloat_propagateNaNExtF80UI( uiA64, uiA0, 0, 0 );
+ uiZ64 = uiZ.v64;
+ uiZ0 = uiZ.v0;
+ goto uiZ;
+ }
+ if ( ! signA ) return a;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( signA ) {
+ if ( ! sigA ) goto zero;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! expA ) expA = 1;
+ if ( ! (sigA & UINT64_C( 0x8000000000000000 )) ) {
+ if ( ! sigA ) goto zero;
+ normExpSig = softfloat_normSubnormalExtF80Sig( sigA );
+ expA += normExpSig.exp;
+ sigA = normExpSig.sig;
+ }
+ /*------------------------------------------------------------------------
+ | (`sig32Z' is guaranteed to be a lower bound on the square root of
+ | `sig32A', which makes `sig32Z' also a lower bound on the square root of
+ | `sigA'.)
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFF;
+ expA &= 1;
+ sig32A = sigA>>32;
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint_fast64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) {
+ sig32Z >>= 1;
+ rem = softfloat_shortShiftLeft128( 0, sigA, 61 );
+ } else {
+ rem = softfloat_shortShiftLeft128( 0, sigA, 62 );
+ }
+ rem.v64 -= (uint_fast64_t) sig32Z * sig32Z;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem.v64>>2) * (uint_fast64_t) recipSqrt32)>>32;
+ x64 = (uint_fast64_t) sig32Z<<32;
+ sigZ = x64 + (q<<3);
+ y = softfloat_shortShiftLeft128( rem.v64, rem.v0, 29 );
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ term = softfloat_mul64ByShifted32To128( x64 + sigZ, q );
+ rem = softfloat_sub128( y.v64, y.v0, term.v64, term.v0 );
+ if ( ! (rem.v64 & UINT64_C( 0x8000000000000000 )) ) break;
+ --q;
+ sigZ -= 1<<3;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((rem.v64>>2) * recipSqrt32)>>32) + 2;
+ x64 = sigZ;
+ sigZ = (sigZ<<1) + (q>>25);
+ sigZExtra = (uint64_t) (q<<39);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xFFFFFF) <= 2 ) {
+ q &= ~(uint_fast64_t) 0xFFFF;
+ sigZExtra = (uint64_t) (q<<39);
+ term = softfloat_mul64ByShifted32To128( x64 + (q>>27), q );
+ x64 = (uint32_t) (q<<5) * (uint_fast64_t) (uint32_t) q;
+ term = softfloat_add128( term.v64, term.v0, 0, x64 );
+ rem = softfloat_shortShiftLeft128( rem.v64, rem.v0, 28 );
+ rem = softfloat_sub128( rem.v64, rem.v0, term.v64, term.v0 );
+ if ( rem.v64 & UINT64_C( 0x8000000000000000 ) ) {
+ if ( ! sigZExtra ) --sigZ;
+ --sigZExtra;
+ } else {
+ if ( rem.v64 | rem.v0 ) sigZExtra |= 1;
+ }
+ }
+ return
+ softfloat_roundPackToExtF80(
+ 0, expZ, sigZ, sigZExtra, extF80_roundingPrecision );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ uiZ64 = defaultNaNExtF80UI64;
+ uiZ0 = defaultNaNExtF80UI0;
+ goto uiZ;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ64 = packToExtF80UI64( signA, 0 );
+ uiZ0 = 0;
+ uiZ:
+ uZ.s.signExp = uiZ64;
+ uZ.s.signif = uiZ0;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c
new file mode 100644
index 000000000..770c7563a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_sub.c
@@ -0,0 +1,80 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+extFloat80_t extF80_sub( extFloat80_t a, extFloat80_t b )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool signA;
+ union { struct extFloat80M s; extFloat80_t f; } uB;
+ uint_fast16_t uiB64;
+ uint_fast64_t uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ extFloat80_t
+ (*magsFuncPtr)(
+ uint_fast16_t, uint_fast64_t, uint_fast16_t, uint_fast64_t, bool );
+#endif
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ signA = signExtF80UI64( uiA64 );
+ uB.f = b;
+ uiB64 = uB.s.signExp;
+ uiB0 = uB.s.signif;
+ signB = signExtF80UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ return softfloat_subMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ return softfloat_addMagsExtF80( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsExtF80 : softfloat_addMagsExtF80;
+ return (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c
new file mode 100644
index 000000000..4de90ae31
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f128.c
@@ -0,0 +1,75 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float128_t extF80_to_f128( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ uint_fast16_t exp;
+ uint_fast64_t frac;
+ struct commonNaN commonNaN;
+ struct uint128 uiZ;
+ bool sign;
+ struct uint128 frac128;
+ union ui128_f128 uZ;
+
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ exp = expExtF80UI64( uiA64 );
+ frac = uiA0 & UINT64_C( 0x7FFFFFFFFFFFFFFF );
+ if ( (exp == 0x7FFF) && frac ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF128UI( &commonNaN );
+ } else {
+ sign = signExtF80UI64( uiA64 );
+ frac128 = softfloat_shortShiftLeft128( 0, frac, 49 );
+ uiZ.v64 = packToF128UI64( sign, exp, frac128.v64 );
+ uiZ.v0 = frac128.v0;
+ }
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c
new file mode 100644
index 000000000..5919403fb
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f16.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float16_t extF80_to_f16( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast16_t uiZ, sig16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig16 = softfloat_shortShiftRightJam64( sig, 49 );
+ if ( ! (exp | sig16) ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, sig16 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c
new file mode 100644
index 000000000..77fcfdc11
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f32.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float32_t extF80_to_f32( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast32_t uiZ, sig32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig32 = softfloat_shortShiftRightJam64( sig, 33 );
+ if ( ! (exp | sig32) ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, sig32 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c
new file mode 100644
index 000000000..410d6622c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_f64.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+float64_t extF80_to_f64( extFloat80_t a )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ uint_fast64_t uiA0;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ struct commonNaN commonNaN;
+ uint_fast64_t uiZ;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ uiA0 = uA.s.signif;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uiA0;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ! (exp | sig) ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) {
+ softfloat_extF80UIToCommonNaN( uiA64, uiA0, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sig = softfloat_shortShiftRightJam64( sig, 1 );
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int_fast32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF64( sign, exp, sig );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c
new file mode 100644
index 000000000..9acdc3c9b
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast32_t
+ extF80_to_i32( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+#if (i32_fromNaN != i32_fromPosOverflow) || (i32_fromNaN != i32_fromNegOverflow)
+ if ( (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
+#if (i32_fromNaN == i32_fromPosOverflow)
+ sign = 0;
+#elif (i32_fromNaN == i32_fromNegOverflow)
+ sign = 1;
+#else
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return i32_fromNaN;
+#endif
+ }
+#endif
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) shiftDist = 1;
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ return softfloat_roundToI32( sign, sig, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c
new file mode 100644
index 000000000..03224678a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i32_r_minMag.c
@@ -0,0 +1,97 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast32_t extF80_to_i32_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ int_fast32_t absZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist < 33 ) {
+ if (
+ (uiA64 == packToExtF80UI64( 1, 0x401E ))
+ && (sig < UINT64_C( 0x8000000100000000 ))
+ ) {
+ if ( exact && (sig & UINT64_C( 0x00000000FFFFFFFF )) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return -0x7FFFFFFF - 1;
+ }
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i32_fromNaN
+ : sign ? i32_fromNegOverflow : i32_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ absZ = sig>>shiftDist;
+ if ( exact && ((uint_fast64_t) (uint_fast32_t) absZ<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast64_t
+ extF80_to_i64( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ uint_fast64_t sigExtra;
+ struct uint64_extra sig64Extra;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist <= 0 ) {
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ if ( shiftDist ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ sigExtra = 0;
+ } else {
+ /*--------------------------------------------------------------------
+ *--------------------------------------------------------------------*/
+ sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftDist );
+ sig = sig64Extra.v;
+ sigExtra = sig64Extra.extra;
+ }
+ return softfloat_roundToI64( sign, sig, sigExtra, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c
new file mode 100644
index 000000000..8871d01d1
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_i64_r_minMag.c
@@ -0,0 +1,94 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+int_fast64_t extF80_to_i64_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ int_fast64_t absZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( shiftDist <= 0 ) {
+ if (
+ (uiA64 == packToExtF80UI64( 1, 0x403E ))
+ && (sig == UINT64_C( 0x8000000000000000 ))
+ ) {
+ return -INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;
+ }
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? i64_fromNaN
+ : sign ? i64_fromNegOverflow : i64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ absZ = sig>>shiftDist;
+ if ( exact && (uint64_t) (sig<<(-shiftDist & 63)) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return sign ? -absZ : absZ;
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c
new file mode 100644
index 000000000..581297731
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32.c
@@ -0,0 +1,83 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast32_t
+ extF80_to_ui32( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+#if (ui32_fromNaN != ui32_fromPosOverflow) || (ui32_fromNaN != ui32_fromNegOverflow)
+ if ( (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF )) ) {
+#if (ui32_fromNaN == ui32_fromPosOverflow)
+ sign = 0;
+#elif (ui32_fromNaN == ui32_fromNegOverflow)
+ sign = 1;
+#else
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return ui32_fromNaN;
+#endif
+ }
+#endif
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x4032 - exp;
+ if ( shiftDist <= 0 ) shiftDist = 1;
+ sig = softfloat_shiftRightJam64( sig, shiftDist );
+ return softfloat_roundToUI32( sign, sig, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c
new file mode 100644
index 000000000..be2c53b1d
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui32_r_minMag.c
@@ -0,0 +1,88 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast32_t extF80_to_ui32_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ uint_fast32_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( sign || (shiftDist < 32) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui32_fromNaN
+ : sign ? ui32_fromNegOverflow : ui32_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ z = sig>>shiftDist;
+ if ( exact && ((uint_fast64_t) z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast64_t
+ extF80_to_ui64( extFloat80_t a, uint_fast8_t roundingMode, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ bool sign;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ uint_fast64_t sigExtra;
+ struct uint64_extra sig64Extra;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ sign = signExtF80UI64( uiA64 );
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( shiftDist < 0 ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sigExtra = 0;
+ if ( shiftDist ) {
+ sig64Extra = softfloat_shiftRightJam64Extra( sig, 0, shiftDist );
+ sig = sig64Extra.v;
+ sigExtra = sig64Extra.extra;
+ }
+ return softfloat_roundToUI64( sign, sig, sigExtra, roundingMode, exact );
+
+}
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c
new file mode 100644
index 000000000..eca688c65
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/extF80_to_ui64_r_minMag.c
@@ -0,0 +1,88 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+uint_fast64_t extF80_to_ui64_r_minMag( extFloat80_t a, bool exact )
+{
+ union { struct extFloat80M s; extFloat80_t f; } uA;
+ uint_fast16_t uiA64;
+ int_fast32_t exp;
+ uint_fast64_t sig;
+ int_fast32_t shiftDist;
+ bool sign;
+ uint_fast64_t z;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uA.f = a;
+ uiA64 = uA.s.signExp;
+ exp = expExtF80UI64( uiA64 );
+ sig = uA.s.signif;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ shiftDist = 0x403E - exp;
+ if ( 64 <= shiftDist ) {
+ if ( exact && (exp | sig) ) {
+ softfloat_exceptionFlags |= softfloat_flag_inexact;
+ }
+ return 0;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ sign = signExtF80UI64( uiA64 );
+ if ( sign || (shiftDist < 0) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return
+ (exp == 0x7FFF) && (sig & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+ ? ui64_fromNaN
+ : sign ? ui64_fromNegOverflow : ui64_fromPosOverflow;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ z = sig>>shiftDist;
+ if ( exact && (z<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_add( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint64_t *aWPtr, *bWPtr;
+ uint_fast64_t uiA64, uiA0;
+ bool signA;
+ uint_fast64_t uiB64, uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ float128_t
+ (*magsFuncPtr)(
+ uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast64_t, bool );
+#endif
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ signA = signF128UI64( uiA64 );
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ signB = signF128UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_addMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_subMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_addMagsF128 : softfloat_subMagsF128;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ f128M_add( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ softfloat_addF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (uint32_t *) zPtr,
+ false
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c
new file mode 100644
index 000000000..b443548f5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_div.c
@@ -0,0 +1,187 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_div( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_div( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_div( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr, uiA96;
+ bool signA;
+ int32_t expA;
+ uint32_t uiB96;
+ bool signB;
+ int32_t expB;
+ bool signZ;
+ uint32_t y[5], sigB[4];
+ int32_t expZ;
+ uint32_t recip32;
+ int ix;
+ uint64_t q64;
+ uint32_t q, qs[3], uiZ96;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ expA = expF128UI96( uiA96 );
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signB = signF128UI96( uiB96 );
+ expB = expF128UI96( uiB96 );
+ signZ = signA ^ signB;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ if ( expA == 0x7FFF ) {
+ if ( expB == 0x7FFF ) goto invalid;
+ goto infinity;
+ }
+ goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13, y );
+ expB = softfloat_shiftNormSigF128M( bWPtr, 13, sigB );
+ if ( expA == -128 ) {
+ if ( expB == -128 ) goto invalid;
+ goto zero;
+ }
+ if ( expB == -128 ) {
+ softfloat_raiseFlags( softfloat_flag_infinite );
+ goto infinity;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA - expB + 0x3FFE;
+ if ( softfloat_compare128M( y, sigB ) < 0 ) {
+ --expZ;
+ softfloat_add128M( y, y, y );
+ }
+ recip32 =
+ softfloat_approxRecip32_1(
+ ((uint64_t) sigB[indexWord( 4, 3 )]<<32 | sigB[indexWord( 4, 2 )])
+ >>30
+ );
+ ix = 3;
+ for (;;) {
+ q64 = (uint64_t) y[indexWordHi( 4 )] * recip32;
+ q = (q64 + 0x80000000)>>32;
+ --ix;
+ if ( ix < 0 ) break;
+ softfloat_remStep128MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 4 )] & 0x80000000 ) {
+ --q;
+ softfloat_add128M( y, sigB, y );
+ }
+ qs[ix] = q;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( ((q + 1) & 7) < 2 ) {
+ softfloat_remStep128MBy32( y, 29, sigB, q, y );
+ if ( y[indexWordHi( 4 )] & 0x80000000 ) {
+ --q;
+ softfloat_add128M( y, sigB, y );
+ } else if ( softfloat_compare128M( sigB, y ) <= 0 ) {
+ ++q;
+ softfloat_sub128M( y, sigB, y );
+ }
+ if (
+ y[indexWordLo( 4 )] || y[indexWord( 4, 1 )]
+ || (y[indexWord( 4, 2 )] | y[indexWord( 4, 3 )])
+ ) {
+ q |= 1;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q64 = (uint64_t) q<<28;
+ y[indexWord( 5, 0 )] = q64;
+ q64 = ((uint64_t) qs[0]<<25) + (q64>>32);
+ y[indexWord( 5, 1 )] = q64;
+ q64 = ((uint64_t) qs[1]<<22) + (q64>>32);
+ y[indexWord( 5, 2 )] = q64;
+ q64 = ((uint64_t) qs[2]<<19) + (q64>>32);
+ y[indexWord( 5, 3 )] = q64;
+ y[indexWord( 5, 4 )] = q64>>32;
+ softfloat_roundPackMToF128M( signZ, expZ, y, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ infinity:
+ uiZ96 = packToF128UI96( signZ, 0x7FFF, 0 );
+ goto uiZ96;
+ zero:
+ uiZ96 = packToF128UI96( signZ, 0, 0 );
+ uiZ96:
+ zWPtr[indexWordHi( 4 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c
new file mode 100644
index 000000000..497fdbf6f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq.c
@@ -0,0 +1,100 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_eq( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_eq( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t wordA, wordB, uiA96, uiB96;
+ bool possibleOppositeZeros;
+ uint32_t mashWord;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ possibleOppositeZeros = false;
+ if ( uiA96 != uiB96 ) {
+ possibleOppositeZeros = (((uiA96 | uiB96) & 0x7FFFFFFF) == 0);
+ if ( ! possibleOppositeZeros ) goto false_checkSigNaNs;
+ }
+ mashWord = wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ mashWord |= wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ if ( wordA != wordB ) goto false_checkSigNaNs;
+ if ( possibleOppositeZeros && ((mashWord | wordA | wordB) != 0) ) {
+ goto false_checkSigNaNs;
+ }
+ if ( ! softfloat_isNaNF128M( aWPtr ) && ! softfloat_isNaNF128M( bWPtr ) ) {
+ return true;
+ }
+ false_checkSigNaNs:
+ if (
+ f128M_isSignalingNaN( (const float128_t *) aWPtr )
+ || f128M_isSignalingNaN( (const float128_t *) bWPtr )
+ ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c
new file mode 100644
index 000000000..a9fa4d510
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_eq_signaling.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_eq_signaling( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_eq_signaling( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_eq_signaling( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t wordA, wordB, uiA96, uiB96;
+ bool possibleOppositeZeros;
+ uint32_t mashWord;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA != wordB ) return false;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ possibleOppositeZeros = false;
+ if ( uiA96 != uiB96 ) {
+ possibleOppositeZeros = (((uiA96 | uiB96) & 0x7FFFFFFF) == 0);
+ if ( ! possibleOppositeZeros ) return false;
+ }
+ mashWord = wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA != wordB ) return false;
+ mashWord |= wordA | wordB;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return
+ (wordA == wordB)
+ && (! possibleOppositeZeros || ((mashWord | wordA | wordB) == 0));
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c
new file mode 100644
index 000000000..7306e45c3
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le.c
@@ -0,0 +1,93 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_le( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_le( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_le( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signA ) return true;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return false;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) == 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) <= 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c
new file mode 100644
index 000000000..d9e442942
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_le_quiet.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_le_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_le_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_le_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ if ( f128M_isSignalingNaN( aPtr ) || f128M_isSignalingNaN( bPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signA ) return true;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return false;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return false;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) == 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) <= 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c
new file mode 100644
index 000000000..d2f797fea
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt.c
@@ -0,0 +1,93 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_lt( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_lt( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_lt( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signB ) return false;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return true;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) != 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) < 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c
new file mode 100644
index 000000000..adbddea71
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_lt_quiet.c
@@ -0,0 +1,96 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+bool f128M_lt_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+
+ return f128_lt_quiet( *aPtr, *bPtr );
+
+}
+
+#else
+
+bool f128M_lt_quiet( const float128_t *aPtr, const float128_t *bPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t uiA96, uiB96;
+ bool signA, signB;
+ uint32_t wordA, wordB;
+
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ if ( softfloat_isNaNF128M( aWPtr ) || softfloat_isNaNF128M( bWPtr ) ) {
+ if ( f128M_isSignalingNaN( aPtr ) || f128M_isSignalingNaN( bPtr ) ) {
+ softfloat_raiseFlags( softfloat_flag_invalid );
+ }
+ return false;
+ }
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ signB = signF128UI96( uiB96 );
+ if ( signA != signB ) {
+ if ( signB ) return false;
+ if ( (uiA96 | uiB96) & 0x7FFFFFFF ) return true;
+ wordA = aWPtr[indexWord( 4, 2 )];
+ wordB = bWPtr[indexWord( 4, 2 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 1 )];
+ wordB = bWPtr[indexWord( 4, 1 )];
+ if ( wordA | wordB ) return true;
+ wordA = aWPtr[indexWord( 4, 0 )];
+ wordB = bWPtr[indexWord( 4, 0 )];
+ return ((wordA | wordB) != 0);
+ }
+ if ( signA ) {
+ aWPtr = (const uint32_t *) bPtr;
+ bWPtr = (const uint32_t *) aPtr;
+ }
+ return (softfloat_compare128M( aWPtr, bWPtr ) < 0);
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c
new file mode 100644
index 000000000..4b8292a27
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mul.c
@@ -0,0 +1,158 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_mul( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_mul( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_mul( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr;
+ uint32_t uiA96;
+ int32_t expA;
+ uint32_t uiB96;
+ int32_t expB;
+ bool signZ;
+ const uint32_t *ptr;
+ uint32_t uiZ96, sigA[4];
+ uint_fast8_t shiftDist;
+ uint32_t sigB[4];
+ int32_t expZ;
+ uint32_t sigProd[8], *extSigZPtr;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ expA = expF128UI96( uiA96 );
+ uiB96 = bWPtr[indexWordHi( 4 )];
+ expB = expF128UI96( uiB96 );
+ signZ = signF128UI96( uiA96 ) ^ signF128UI96( uiB96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ ptr = aWPtr;
+ if ( ! expA ) goto possiblyInvalid;
+ if ( ! expB ) {
+ ptr = bWPtr;
+ possiblyInvalid:
+ if (
+ ! fracF128UI96( ptr[indexWordHi( 4 )] )
+ && ! (ptr[indexWord( 4, 2 )] | ptr[indexWord( 4, 1 )]
+ | ptr[indexWord( 4, 0 )])
+ ) {
+ softfloat_invalidF128M( zWPtr );
+ return;
+ }
+ }
+ uiZ96 = packToF128UI96( signZ, 0x7FFF, 0 );
+ goto uiZ96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA ) {
+ sigA[indexWordHi( 4 )] = fracF128UI96( uiA96 ) | 0x00010000;
+ sigA[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ sigA[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ sigA[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+ } else {
+ expA = softfloat_shiftNormSigF128M( aWPtr, 0, sigA );
+ if ( expA == -128 ) goto zero;
+ }
+ if ( expB ) {
+ sigB[indexWordHi( 4 )] = fracF128UI96( uiB96 ) | 0x00010000;
+ sigB[indexWord( 4, 2 )] = bWPtr[indexWord( 4, 2 )];
+ sigB[indexWord( 4, 1 )] = bWPtr[indexWord( 4, 1 )];
+ sigB[indexWord( 4, 0 )] = bWPtr[indexWord( 4, 0 )];
+ } else {
+ expB = softfloat_shiftNormSigF128M( bWPtr, 0, sigB );
+ if ( expB == -128 ) goto zero;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expZ = expA + expB - 0x4000;
+ softfloat_mul128MTo256M( sigA, sigB, sigProd );
+ if (
+ sigProd[indexWord( 8, 2 )]
+ || (sigProd[indexWord( 8, 1 )] | sigProd[indexWord( 8, 0 )])
+ ) {
+ sigProd[indexWord( 8, 3 )] |= 1;
+ }
+ extSigZPtr = &sigProd[indexMultiwordHi( 8, 5 )];
+ shiftDist = 16;
+ if ( extSigZPtr[indexWordHi( 5 )] & 2 ) {
+ ++expZ;
+ shiftDist = 15;
+ }
+ softfloat_shortShiftLeft160M( extSigZPtr, shiftDist, extSigZPtr );
+ softfloat_roundPackMToF128M( signZ, expZ, extSigZPtr, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ zero:
+ uiZ96 = packToF128UI96( signZ, 0, 0 );
+ uiZ96:
+ zWPtr[indexWordHi( 4 )] = uiZ96;
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c
new file mode 100644
index 000000000..2b0b7fe26
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_mulAdd.c
@@ -0,0 +1,92 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *zPtr
+ )
+{
+ const uint64_t *aWPtr, *bWPtr, *cWPtr;
+ uint_fast64_t uiA64, uiA0;
+ uint_fast64_t uiB64, uiB0;
+ uint_fast64_t uiC64, uiC0;
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ cWPtr = (const uint64_t *) cPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ uiC64 = cWPtr[indexWord( 2, 1 )];
+ uiC0 = cWPtr[indexWord( 2, 0 )];
+ *zPtr = softfloat_mulAddF128( uiA64, uiA0, uiB64, uiB0, uiC64, uiC0, 0 );
+
+}
+
+#else
+
+void
+ f128M_mulAdd(
+ const float128_t *aPtr,
+ const float128_t *bPtr,
+ const float128_t *cPtr,
+ float128_t *zPtr
+ )
+{
+
+ softfloat_mulAddF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (const uint32_t *) cPtr,
+ (uint32_t *) zPtr,
+ 0
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c
new file mode 100644
index 000000000..39aafdd6a
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_rem.c
@@ -0,0 +1,182 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_rem( *aPtr, *bPtr );
+
+}
+
+#else
+
+void
+ f128M_rem( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr, *bWPtr;
+ uint32_t *zWPtr, uiA96;
+ int32_t expA, expB;
+ uint32_t x[4], rem1[5], *remPtr;
+ bool signRem;
+ int32_t expDiff;
+ uint32_t q, recip32;
+ uint64_t q64;
+ uint32_t rem2[5], *altRemPtr, *newRemPtr, wordMeanRem;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ bWPtr = (const uint32_t *) bPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ expA = expF128UI96( uiA96 );
+ expB = expF128UI96( bWPtr[indexWordHi( 4 )] );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (expA == 0x7FFF) || (expB == 0x7FFF) ) {
+ if ( softfloat_tryPropagateNaNF128M( aWPtr, bWPtr, zWPtr ) ) return;
+ if ( expA == 0x7FFF ) goto invalid;
+ goto copyA;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( expA < expB - 1 ) goto copyA;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expB = softfloat_shiftNormSigF128M( bWPtr, 13, x );
+ if ( expB == -128 ) goto invalid;
+ remPtr = &rem1[indexMultiwordLo( 5, 4 )];
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13, remPtr );
+ if ( expA == -128 ) goto copyA;
+ signRem = signF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expDiff = expA - expB;
+ if ( expDiff < 1 ) {
+ if ( expDiff < -1 ) goto copyA;
+ if ( expDiff ) {
+ --expB;
+ softfloat_add128M( x, x, x );
+ q = 0;
+ } else {
+ q = (softfloat_compare128M( x, remPtr ) <= 0);
+ if ( q ) softfloat_sub128M( remPtr, x, remPtr );
+ }
+ } else {
+ recip32 =
+ softfloat_approxRecip32_1(
+ ((uint64_t) x[indexWord( 4, 3 )]<<32 | x[indexWord( 4, 2 )])
+ >>30
+ );
+ expDiff -= 30;
+ for (;;) {
+ q64 = (uint64_t) remPtr[indexWordHi( 4 )] * recip32;
+ if ( expDiff < 0 ) break;
+ q = (q64 + 0x80000000)>>32;
+ softfloat_remStep128MBy32( remPtr, 29, x, q, remPtr );
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ softfloat_add128M( remPtr, x, remPtr );
+ }
+ expDiff -= 29;
+ }
+ /*--------------------------------------------------------------------
+ | (`expDiff' cannot be less than -29 here.)
+ *--------------------------------------------------------------------*/
+ q = (uint32_t) (q64>>32)>>(~expDiff & 31);
+ softfloat_remStep128MBy32( remPtr, expDiff + 30, x, q, remPtr );
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ altRemPtr = &rem2[indexMultiwordLo( 5, 4 )];
+ softfloat_add128M( remPtr, x, altRemPtr );
+ goto selectRem;
+ }
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ altRemPtr = &rem2[indexMultiwordLo( 5, 4 )];
+ do {
+ ++q;
+ newRemPtr = altRemPtr;
+ softfloat_sub128M( remPtr, x, newRemPtr );
+ altRemPtr = remPtr;
+ remPtr = newRemPtr;
+ } while ( ! (remPtr[indexWordHi( 4 )] & 0x80000000) );
+ selectRem:
+ softfloat_add128M( remPtr, altRemPtr, x );
+ wordMeanRem = x[indexWordHi( 4 )];
+ if (
+ (wordMeanRem & 0x80000000)
+ || (! wordMeanRem && (q & 1) && ! x[indexWord( 4, 0 )]
+ && ! (x[indexWord( 4, 2 )] | x[indexWord( 4, 1 )]))
+ ) {
+ remPtr = altRemPtr;
+ }
+ if ( remPtr[indexWordHi( 4 )] & 0x80000000 ) {
+ signRem = ! signRem;
+ softfloat_negX128M( remPtr );
+ }
+ remPtr -= indexMultiwordLo( 5, 4 );
+ remPtr[indexWordHi( 5 )] = 0;
+ softfloat_normRoundPackMToF128M( signRem, expB + 18, remPtr, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zWPtr[indexWordHi( 4 )] = uiA96;
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c
new file mode 100644
index 000000000..b96d742b2
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_roundToInt.c
@@ -0,0 +1,223 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2017 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *zPtr
+ )
+{
+
+ *zPtr = f128_roundToInt( *aPtr, roundingMode, exact );
+
+}
+
+#else
+
+void
+ f128M_roundToInt(
+ const float128_t *aPtr,
+ uint_fast8_t roundingMode,
+ bool exact,
+ float128_t *zPtr
+ )
+{
+ const uint32_t *aWPtr;
+ uint32_t *zWPtr;
+ uint32_t ui96;
+ int32_t exp;
+ uint32_t sigExtra;
+ bool sign;
+ uint_fast8_t bitPos;
+ bool roundNear;
+ unsigned int index, lastIndex;
+ bool extra;
+ uint32_t wordA, bit, wordZ;
+ uint_fast8_t carry;
+ uint32_t extrasMask;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ ui96 = aWPtr[indexWordHi( 4 )];
+ exp = expF128UI96( ui96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp < 0x3FFF ) {
+ zWPtr[indexWord( 4, 2 )] = 0;
+ zWPtr[indexWord( 4, 1 )] = 0;
+ zWPtr[indexWord( 4, 0 )] = 0;
+ sigExtra = aWPtr[indexWord( 4, 2 )];
+ if ( !sigExtra ) {
+ sigExtra = aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )];
+ }
+ if ( !sigExtra && !(ui96 & 0x7FFFFFFF) ) goto ui96;
+ if ( exact ) softfloat_exceptionFlags |= softfloat_flag_inexact;
+ sign = signF128UI96( ui96 );
+ switch ( roundingMode ) {
+ case softfloat_round_near_even:
+ if ( !fracF128UI96( ui96 ) && !sigExtra ) break;
+ case softfloat_round_near_maxMag:
+ if ( exp == 0x3FFE ) goto mag1;
+ break;
+ case softfloat_round_min:
+ if ( sign ) goto mag1;
+ break;
+ case softfloat_round_max:
+ if ( !sign ) goto mag1;
+ break;
+#ifdef SOFTFLOAT_ROUND_ODD
+ case softfloat_round_odd:
+ goto mag1;
+#endif
+ }
+ ui96 = packToF128UI96( sign, 0, 0 );
+ goto ui96;
+ mag1:
+ ui96 = packToF128UI96( sign, 0x3FFF, 0 );
+ goto ui96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( 0x406F <= exp ) {
+ if (
+ (exp == 0x7FFF)
+ && (fracF128UI96( ui96 )
+ || (aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )]))
+ ) {
+ softfloat_propagateNaNF128M( aWPtr, 0, zWPtr );
+ return;
+ }
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+ goto ui96;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ bitPos = 0x406F - exp;
+ roundNear =
+ (roundingMode == softfloat_round_near_maxMag)
+ || (roundingMode == softfloat_round_near_even);
+ bitPos -= roundNear;
+ index = indexWordLo( 4 );
+ lastIndex = indexWordHi( 4 );
+ extra = 0;
+ for (;;) {
+ wordA = aWPtr[index];
+ if ( bitPos < 32 ) break;
+ if ( wordA ) extra = 1;
+ zWPtr[index] = 0;
+ index += wordIncr;
+ bitPos -= 32;
+ }
+ bit = (uint32_t) 1<
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *zPtr )
+{
+
+ *zPtr = f128_sqrt( *aPtr );
+
+}
+
+#else
+
+void f128M_sqrt( const float128_t *aPtr, float128_t *zPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t *zWPtr;
+ uint32_t uiA96;
+ bool signA;
+ int32_t rawExpA;
+ uint32_t rem[6];
+ int32_t expA, expZ;
+ uint64_t rem64;
+ uint32_t sig32A, recipSqrt32, sig32Z, qs[3], q;
+ uint64_t sig64Z;
+ uint32_t term[5];
+ uint64_t x64;
+ uint32_t y[5], rem32;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zWPtr = (uint32_t *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ signA = signF128UI96( uiA96 );
+ rawExpA = expF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( rawExpA == 0x7FFF ) {
+ if (
+ fracF128UI96( uiA96 )
+ || (aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ ) {
+ softfloat_propagateNaNF128M( aWPtr, 0, zWPtr );
+ return;
+ }
+ if ( ! signA ) goto copyA;
+ goto invalid;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ expA = softfloat_shiftNormSigF128M( aWPtr, 13 - (rawExpA & 1), rem );
+ if ( expA == -128 ) goto copyA;
+ if ( signA ) goto invalid;
+ /*------------------------------------------------------------------------
+ | (`sig32Z' is guaranteed to be a lower bound on the square root of
+ | `sig32A', which makes `sig32Z' also a lower bound on the square root of
+ | `sigA'.)
+ *------------------------------------------------------------------------*/
+ expZ = ((expA - 0x3FFF)>>1) + 0x3FFE;
+ expA &= 1;
+ rem64 = (uint64_t) rem[indexWord( 4, 3 )]<<32 | rem[indexWord( 4, 2 )];
+ if ( expA ) {
+ if ( ! rawExpA ) {
+ softfloat_shortShiftRight128M( rem, 1, rem );
+ rem64 >>= 1;
+ }
+ sig32A = rem64>>29;
+ } else {
+ sig32A = rem64>>30;
+ }
+ recipSqrt32 = softfloat_approxRecipSqrt32_1( expA, sig32A );
+ sig32Z = ((uint64_t) sig32A * recipSqrt32)>>32;
+ if ( expA ) sig32Z >>= 1;
+ qs[2] = sig32Z;
+ rem64 -= (uint64_t) sig32Z * sig32Z;
+ rem[indexWord( 4, 3 )] = rem64>>32;
+ rem[indexWord( 4, 2 )] = rem64;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ sig64Z = ((uint64_t) sig32Z<<32) + ((uint64_t) q<<3);
+ term[indexWord( 4, 3 )] = 0;
+ term[indexWord( 4, 0 )] = 0;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = ((uint64_t) sig32Z<<32) + sig64Z;
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ softfloat_remStep128MBy32( rem, 29, term, q, y );
+ rem32 = y[indexWord( 4, 3 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ sig64Z -= 1<<3;
+ }
+ qs[1] = q;
+ rem64 = (uint64_t) rem32<<32 | y[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = ((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32;
+ if ( rem64>>34 ) q += recipSqrt32;
+ sig64Z <<= 1;
+ /*------------------------------------------------------------------------
+ | (Repeating this loop is a rare occurrence.)
+ *------------------------------------------------------------------------*/
+ for (;;) {
+ x64 = sig64Z + (q>>26);
+ term[indexWord( 4, 2 )] = x64>>32;
+ term[indexWord( 4, 1 )] = x64;
+ term[indexWord( 4, 0 )] = q<<6;
+ softfloat_remStep128MBy32(
+ y, 29, term, q, &rem[indexMultiwordHi( 6, 4 )] );
+ rem32 = rem[indexWordHi( 6 )];
+ if ( ! (rem32 & 0x80000000) ) break;
+ --q;
+ }
+ qs[0] = q;
+ rem64 = (uint64_t) rem32<<32 | rem[indexWord( 6, 4 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ q = (((uint32_t) (rem64>>2) * (uint64_t) recipSqrt32)>>32) + 2;
+ if ( rem64>>34 ) q += recipSqrt32;
+ x64 = (uint64_t) q<<27;
+ y[indexWord( 5, 0 )] = x64;
+ x64 = ((uint64_t) qs[0]<<24) + (x64>>32);
+ y[indexWord( 5, 1 )] = x64;
+ x64 = ((uint64_t) qs[1]<<21) + (x64>>32);
+ y[indexWord( 5, 2 )] = x64;
+ x64 = ((uint64_t) qs[2]<<18) + (x64>>32);
+ y[indexWord( 5, 3 )] = x64;
+ y[indexWord( 5, 4 )] = x64>>32;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( (q & 0xF) <= 2 ) {
+ q &= ~3;
+ y[indexWordLo( 5 )] = q<<27;
+ term[indexWord( 5, 4 )] = 0;
+ term[indexWord( 5, 3 )] = 0;
+ term[indexWord( 5, 2 )] = 0;
+ term[indexWord( 5, 1 )] = q>>6;
+ term[indexWord( 5, 0 )] = q<<26;
+ softfloat_sub160M( y, term, term );
+ rem[indexWord( 6, 1 )] = 0;
+ rem[indexWord( 6, 0 )] = 0;
+ softfloat_remStep160MBy32(
+ &rem[indexMultiwordLo( 6, 5 )],
+ 14,
+ term,
+ q,
+ &rem[indexMultiwordLo( 6, 5 )]
+ );
+ rem32 = rem[indexWord( 6, 4 )];
+ if ( rem32 & 0x80000000 ) {
+ softfloat_sub1X160M( y );
+ } else {
+ if (
+ rem32 || rem[indexWord( 6, 0 )] || rem[indexWord( 6, 1 )]
+ || (rem[indexWord( 6, 3 )] | rem[indexWord( 6, 2 )])
+ ) {
+ y[indexWordLo( 5 )] |= 1;
+ }
+ }
+ }
+ softfloat_roundPackMToF128M( 0, expZ, y, zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ invalid:
+ softfloat_invalidF128M( zWPtr );
+ return;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ copyA:
+ zWPtr[indexWordHi( 4 )] = uiA96;
+ zWPtr[indexWord( 4, 2 )] = aWPtr[indexWord( 4, 2 )];
+ zWPtr[indexWord( 4, 1 )] = aWPtr[indexWord( 4, 1 )];
+ zWPtr[indexWord( 4, 0 )] = aWPtr[indexWord( 4, 0 )];
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c
new file mode 100644
index 000000000..5d65c799f
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_sub.c
@@ -0,0 +1,97 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void
+ f128M_sub( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+ const uint64_t *aWPtr, *bWPtr;
+ uint_fast64_t uiA64, uiA0;
+ bool signA;
+ uint_fast64_t uiB64, uiB0;
+ bool signB;
+#if ! defined INLINE_LEVEL || (INLINE_LEVEL < 2)
+ float128_t
+ (*magsFuncPtr)(
+ uint_fast64_t, uint_fast64_t, uint_fast64_t, uint_fast64_t, bool );
+#endif
+
+ aWPtr = (const uint64_t *) aPtr;
+ bWPtr = (const uint64_t *) bPtr;
+ uiA64 = aWPtr[indexWord( 2, 1 )];
+ uiA0 = aWPtr[indexWord( 2, 0 )];
+ signA = signF128UI64( uiA64 );
+ uiB64 = bWPtr[indexWord( 2, 1 )];
+ uiB0 = bWPtr[indexWord( 2, 0 )];
+ signB = signF128UI64( uiB64 );
+#if defined INLINE_LEVEL && (2 <= INLINE_LEVEL)
+ if ( signA == signB ) {
+ *zPtr = softfloat_subMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ } else {
+ *zPtr = softfloat_addMagsF128( uiA64, uiA0, uiB64, uiB0, signA );
+ }
+#else
+ magsFuncPtr =
+ (signA == signB) ? softfloat_subMagsF128 : softfloat_addMagsF128;
+ *zPtr = (*magsFuncPtr)( uiA64, uiA0, uiB64, uiB0, signA );
+#endif
+
+}
+
+#else
+
+void
+ f128M_sub( const float128_t *aPtr, const float128_t *bPtr, float128_t *zPtr )
+{
+
+ softfloat_addF128M(
+ (const uint32_t *) aPtr,
+ (const uint32_t *) bPtr,
+ (uint32_t *) zPtr,
+ true
+ );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c
new file mode 100644
index 000000000..b0340c794
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_extF80M.c
@@ -0,0 +1,101 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+void f128M_to_extF80M( const float128_t *aPtr, extFloat80_t *zPtr )
+{
+
+ *zPtr = f128_to_extF80( *aPtr );
+
+}
+
+#else
+
+void f128M_to_extF80M( const float128_t *aPtr, extFloat80_t *zPtr )
+{
+ const uint32_t *aWPtr;
+ struct extFloat80M *zSPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ struct commonNaN commonNaN;
+ uint32_t sig[4];
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ zSPtr = (struct extFloat80M *) zPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( softfloat_isNaNF128M( aWPtr ) ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ softfloat_commonNaNToExtF80M( &commonNaN, zSPtr );
+ return;
+ }
+ zSPtr->signExp = packToExtF80UI64( sign, 0x7FFF );
+ zSPtr->signif = UINT64_C( 0x8000000000000000 );
+ return;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp = softfloat_shiftNormSigF128M( aWPtr, 15, sig );
+ if ( exp == -128 ) {
+ zSPtr->signExp = packToExtF80UI64( sign, 0 );
+ zSPtr->signif = 0;
+ return;
+ }
+ if ( sig[indexWord( 4, 0 )] ) sig[indexWord( 4, 1 )] |= 1;
+ softfloat_roundPackMToExtF80M(
+ sign, exp, &sig[indexMultiwordHi( 4, 3 )], 80, zSPtr );
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c
new file mode 100644
index 000000000..95109a771
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f16.c
@@ -0,0 +1,113 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float16_t f128M_to_f16( const float128_t *aPtr )
+{
+
+ return f128_to_f16( *aPtr );
+
+}
+
+#else
+
+float16_t f128M_to_f16( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint32_t frac32;
+ struct commonNaN commonNaN;
+ uint16_t uiZ, frac16;
+ union ui16_f16 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac32 =
+ fracF128UI96( uiA96 )
+ | ((aWPtr[indexWord( 4, 2 )] | aWPtr[indexWord( 4, 1 )]
+ | aWPtr[indexWord( 4, 0 )])
+ != 0);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac32 ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF16UI( &commonNaN );
+ } else {
+ uiZ = packToF16UI( sign, 0x1F, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac16 = frac32>>2 | (frac32 & 3);
+ if ( ! (exp | frac16) ) {
+ uiZ = packToF16UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3FF1;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x40 ) exp = -0x40;
+ }
+ return softfloat_roundPackToF16( sign, exp, frac16 | 0x4000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c
new file mode 100644
index 000000000..4542deb0c
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f32.c
@@ -0,0 +1,109 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float32_t f128M_to_f32( const float128_t *aPtr )
+{
+
+ return f128_to_f32( *aPtr );
+
+}
+
+#else
+
+float32_t f128M_to_f32( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint64_t frac64;
+ struct commonNaN commonNaN;
+ uint32_t uiZ, frac32;
+ union ui32_f32 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac64 =
+ (uint64_t) fracF128UI96( uiA96 )<<32 | aWPtr[indexWord( 4, 2 )]
+ | ((aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )]) != 0);
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac64 ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF32UI( &commonNaN );
+ } else {
+ uiZ = packToF32UI( sign, 0xFF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac32 = softfloat_shortShiftRightJam64( frac64, 18 );
+ if ( ! (exp | frac32) ) {
+ uiZ = packToF32UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3F81;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return softfloat_roundPackToF32( sign, exp, frac32 | 0x40000000 );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c
new file mode 100644
index 000000000..6213bb7f5
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_f64.c
@@ -0,0 +1,112 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include
+#include "platform.h"
+#include "internals.h"
+#include "specialize.h"
+#include "softfloat.h"
+
+#ifdef SOFTFLOAT_FAST_INT64
+
+float64_t f128M_to_f64( const float128_t *aPtr )
+{
+
+ return f128_to_f64( *aPtr );
+
+}
+
+#else
+
+float64_t f128M_to_f64( const float128_t *aPtr )
+{
+ const uint32_t *aWPtr;
+ uint32_t uiA96;
+ bool sign;
+ int32_t exp;
+ uint64_t frac64;
+ struct commonNaN commonNaN;
+ uint64_t uiZ;
+ uint32_t frac32;
+ union ui64_f64 uZ;
+
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ aWPtr = (const uint32_t *) aPtr;
+ uiA96 = aWPtr[indexWordHi( 4 )];
+ sign = signF128UI96( uiA96 );
+ exp = expF128UI96( uiA96 );
+ frac64 = (uint64_t) fracF128UI96( uiA96 )<<32 | aWPtr[indexWord( 4, 2 )];
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ if ( exp == 0x7FFF ) {
+ if ( frac64 || aWPtr[indexWord( 4, 1 )] | aWPtr[indexWord( 4, 0 )] ) {
+ softfloat_f128MToCommonNaN( aWPtr, &commonNaN );
+ uiZ = softfloat_commonNaNToF64UI( &commonNaN );
+ } else {
+ uiZ = packToF64UI( sign, 0x7FF, 0 );
+ }
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ frac32 = aWPtr[indexWord( 4, 1 )];
+ frac64 = frac64<<14 | frac32>>18;
+ if ( (frac32 & 0x0003FFFF) || aWPtr[indexWord( 4, 0 )] ) frac64 |= 1;
+ if ( ! (exp | frac64) ) {
+ uiZ = packToF64UI( sign, 0, 0 );
+ goto uiZ;
+ }
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ exp -= 0x3C01;
+ if ( sizeof (int_fast16_t) < sizeof (int32_t) ) {
+ if ( exp < -0x1000 ) exp = -0x1000;
+ }
+ return
+ softfloat_roundPackToF64(
+ sign, exp, frac64 | UINT64_C( 0x4000000000000000 ) );
+ /*------------------------------------------------------------------------
+ *------------------------------------------------------------------------*/
+ uiZ:
+ uZ.ui = uiZ;
+ return uZ.f;
+
+}
+
+#endif
+
diff --git a/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c
new file mode 100644
index 000000000..54cc6f603
--- /dev/null
+++ b/wally-pipelined/testbench/fp/SoftFloat-3e/source/f128M_to_i32.c
@@ -0,0 +1,98 @@
+
+/*============================================================================
+
+This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
+Package, Release 3e, by John R. Hauser.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=============================================================================*/
+
+#include
+#include