initial commit
authorYunsup Lee <yunsup@cs.berkeley.edu>
Mon, 22 Apr 2013 21:56:59 +0000 (14:56 -0700)
committerYunsup Lee <yunsup@cs.berkeley.edu>
Mon, 22 Apr 2013 21:56:59 +0000 (14:56 -0700)
189 files changed:
env/p/link.ld [new file with mode: 0644]
env/p/riscv_test.h [new file with mode: 0644]
env/pm/link.ld [new file with mode: 0644]
env/pm/riscv_test.h [new file with mode: 0644]
env/pt/link.ld [new file with mode: 0644]
env/pt/pcr.h [new file with mode: 0644]
env/pt/riscv_test.h [new file with mode: 0644]
env/v/entry.S [new file with mode: 0644]
env/v/link.ld [new file with mode: 0644]
env/v/pcr.h [new file with mode: 0644]
env/v/riscv_test.h [new file with mode: 0644]
env/v/vm.c [new file with mode: 0644]
isa/macros/scalar/test_macros.h [new file with mode: 0644]
isa/macros/vector/test_macros.h [new file with mode: 0644]
isa/rv64si/Makefile [new file with mode: 0644]
isa/rv64si/coreid.S [new file with mode: 0644]
isa/rv64si/ipi.S [new file with mode: 0644]
isa/rv64sv/Makefile [new file with mode: 0644]
isa/rv64sv/illegal_tvec_cmd.S [new file with mode: 0644]
isa/rv64sv/illegal_tvec_regid.S [new file with mode: 0644]
isa/rv64sv/illegal_vt_inst.S [new file with mode: 0644]
isa/rv64sv/illegal_vt_regid.S [new file with mode: 0644]
isa/rv64sv/ma_utld.S [new file with mode: 0644]
isa/rv64sv/ma_utsd.S [new file with mode: 0644]
isa/rv64sv/ma_vld.S [new file with mode: 0644]
isa/rv64sv/ma_vsd.S [new file with mode: 0644]
isa/rv64sv/ma_vt_inst.S [new file with mode: 0644]
isa/rv64uf/Makefile [new file with mode: 0644]
isa/rv64uf/fadd.S [new file with mode: 0644]
isa/rv64uf/fcmp.S [new file with mode: 0644]
isa/rv64uf/fcvt.S [new file with mode: 0644]
isa/rv64uf/fcvt_w.S [new file with mode: 0644]
isa/rv64uf/fmadd.S [new file with mode: 0644]
isa/rv64uf/fmin.S [new file with mode: 0644]
isa/rv64uf/fsgnj.S [new file with mode: 0644]
isa/rv64uf/ldst.S [new file with mode: 0644]
isa/rv64uf/move.S [new file with mode: 0644]
isa/rv64uf/structural.S [new file with mode: 0644]
isa/rv64ui/Makefile [new file with mode: 0644]
isa/rv64ui/add.S [new file with mode: 0644]
isa/rv64ui/addi.S [new file with mode: 0644]
isa/rv64ui/addiw.S [new file with mode: 0644]
isa/rv64ui/addw.S [new file with mode: 0644]
isa/rv64ui/amoadd_d.S [new file with mode: 0644]
isa/rv64ui/amoadd_w.S [new file with mode: 0644]
isa/rv64ui/amoand_d.S [new file with mode: 0644]
isa/rv64ui/amoand_w.S [new file with mode: 0644]
isa/rv64ui/amomax_d.S [new file with mode: 0644]
isa/rv64ui/amomax_w.S [new file with mode: 0644]
isa/rv64ui/amomaxu_d.S [new file with mode: 0644]
isa/rv64ui/amomaxu_w.S [new file with mode: 0644]
isa/rv64ui/amomin_d.S [new file with mode: 0644]
isa/rv64ui/amomin_w.S [new file with mode: 0644]
isa/rv64ui/amominu_d.S [new file with mode: 0644]
isa/rv64ui/amominu_w.S [new file with mode: 0644]
isa/rv64ui/amoor_d.S [new file with mode: 0644]
isa/rv64ui/amoor_w.S [new file with mode: 0644]
isa/rv64ui/amoswap_d.S [new file with mode: 0644]
isa/rv64ui/amoswap_w.S [new file with mode: 0644]
isa/rv64ui/and.S [new file with mode: 0644]
isa/rv64ui/andi.S [new file with mode: 0644]
isa/rv64ui/auipc.S [new file with mode: 0644]
isa/rv64ui/beq.S [new file with mode: 0644]
isa/rv64ui/bge.S [new file with mode: 0644]
isa/rv64ui/bgeu.S [new file with mode: 0644]
isa/rv64ui/blt.S [new file with mode: 0644]
isa/rv64ui/bltu.S [new file with mode: 0644]
isa/rv64ui/bne.S [new file with mode: 0644]
isa/rv64ui/div.S [new file with mode: 0644]
isa/rv64ui/divu.S [new file with mode: 0644]
isa/rv64ui/divuw.S [new file with mode: 0644]
isa/rv64ui/divw.S [new file with mode: 0644]
isa/rv64ui/example.S [new file with mode: 0644]
isa/rv64ui/fence_i.S [new file with mode: 0644]
isa/rv64ui/j.S [new file with mode: 0644]
isa/rv64ui/jal.S [new file with mode: 0644]
isa/rv64ui/jalr.S [new file with mode: 0644]
isa/rv64ui/jalr_j.S [new file with mode: 0644]
isa/rv64ui/jalr_r.S [new file with mode: 0644]
isa/rv64ui/lb.S [new file with mode: 0644]
isa/rv64ui/lbu.S [new file with mode: 0644]
isa/rv64ui/ld.S [new file with mode: 0644]
isa/rv64ui/lh.S [new file with mode: 0644]
isa/rv64ui/lhu.S [new file with mode: 0644]
isa/rv64ui/lrsc.S [new file with mode: 0644]
isa/rv64ui/lui.S [new file with mode: 0644]
isa/rv64ui/lw.S [new file with mode: 0644]
isa/rv64ui/lwu.S [new file with mode: 0644]
isa/rv64ui/mul.S [new file with mode: 0644]
isa/rv64ui/mulh.S [new file with mode: 0644]
isa/rv64ui/mulhsu.S [new file with mode: 0644]
isa/rv64ui/mulhu.S [new file with mode: 0644]
isa/rv64ui/mulw.S [new file with mode: 0644]
isa/rv64ui/or.S [new file with mode: 0644]
isa/rv64ui/ori.S [new file with mode: 0644]
isa/rv64ui/rdnpc.S [new file with mode: 0644]
isa/rv64ui/rem.S [new file with mode: 0644]
isa/rv64ui/remu.S [new file with mode: 0644]
isa/rv64ui/remuw.S [new file with mode: 0644]
isa/rv64ui/remw.S [new file with mode: 0644]
isa/rv64ui/sb.S [new file with mode: 0644]
isa/rv64ui/sd.S [new file with mode: 0644]
isa/rv64ui/sh.S [new file with mode: 0644]
isa/rv64ui/simple.S [new file with mode: 0644]
isa/rv64ui/sll.S [new file with mode: 0644]
isa/rv64ui/slli.S [new file with mode: 0644]
isa/rv64ui/slliw.S [new file with mode: 0644]
isa/rv64ui/sllw.S [new file with mode: 0644]
isa/rv64ui/slt.S [new file with mode: 0644]
isa/rv64ui/slti.S [new file with mode: 0644]
isa/rv64ui/sltiu.S [new file with mode: 0644]
isa/rv64ui/sltu.S [new file with mode: 0644]
isa/rv64ui/sra.S [new file with mode: 0644]
isa/rv64ui/srai.S [new file with mode: 0644]
isa/rv64ui/sraiw.S [new file with mode: 0644]
isa/rv64ui/sraw.S [new file with mode: 0644]
isa/rv64ui/srl.S [new file with mode: 0644]
isa/rv64ui/srli.S [new file with mode: 0644]
isa/rv64ui/srliw.S [new file with mode: 0644]
isa/rv64ui/srlw.S [new file with mode: 0644]
isa/rv64ui/sub.S [new file with mode: 0644]
isa/rv64ui/subw.S [new file with mode: 0644]
isa/rv64ui/sw.S [new file with mode: 0644]
isa/rv64ui/xor.S [new file with mode: 0644]
isa/rv64ui/xori.S [new file with mode: 0644]
isa/rv64uv/Makefile [new file with mode: 0644]
isa/rv64uv/amoadd_d.S [new file with mode: 0644]
isa/rv64uv/amoadd_w.S [new file with mode: 0644]
isa/rv64uv/amoand_d.S [new file with mode: 0644]
isa/rv64uv/amoand_w.S [new file with mode: 0644]
isa/rv64uv/amomax_d.S [new file with mode: 0644]
isa/rv64uv/amomax_w.S [new file with mode: 0644]
isa/rv64uv/amomaxu_d.S [new file with mode: 0644]
isa/rv64uv/amomaxu_w.S [new file with mode: 0644]
isa/rv64uv/amomin_d.S [new file with mode: 0644]
isa/rv64uv/amomin_w.S [new file with mode: 0644]
isa/rv64uv/amominu_d.S [new file with mode: 0644]
isa/rv64uv/amominu_w.S [new file with mode: 0644]
isa/rv64uv/amoor_d.S [new file with mode: 0644]
isa/rv64uv/amoor_w.S [new file with mode: 0644]
isa/rv64uv/amoswap_d.S [new file with mode: 0644]
isa/rv64uv/amoswap_w.S [new file with mode: 0644]
isa/rv64uv/beq.S [new file with mode: 0644]
isa/rv64uv/bge.S [new file with mode: 0644]
isa/rv64uv/bgeu.S [new file with mode: 0644]
isa/rv64uv/blt.S [new file with mode: 0644]
isa/rv64uv/bltu.S [new file with mode: 0644]
isa/rv64uv/bne.S [new file with mode: 0644]
isa/rv64uv/data_d.h [new file with mode: 0644]
isa/rv64uv/data_fd.h [new file with mode: 0644]
isa/rv64uv/data_fw.h [new file with mode: 0644]
isa/rv64uv/data_w.h [new file with mode: 0644]
isa/rv64uv/fcvt.S [new file with mode: 0644]
isa/rv64uv/fence.S [new file with mode: 0644]
isa/rv64uv/fld.S [new file with mode: 0644]
isa/rv64uv/flw.S [new file with mode: 0644]
isa/rv64uv/fma.S [new file with mode: 0644]
isa/rv64uv/fmovn.S [new file with mode: 0644]
isa/rv64uv/fmovz.S [new file with mode: 0644]
isa/rv64uv/fsd.S [new file with mode: 0644]
isa/rv64uv/fsw.S [new file with mode: 0644]
isa/rv64uv/imul.S [new file with mode: 0644]
isa/rv64uv/lb.S [new file with mode: 0644]
isa/rv64uv/lbu.S [new file with mode: 0644]
isa/rv64uv/ld.S [new file with mode: 0644]
isa/rv64uv/lh.S [new file with mode: 0644]
isa/rv64uv/lhu.S [new file with mode: 0644]
isa/rv64uv/lw.S [new file with mode: 0644]
isa/rv64uv/lwu.S [new file with mode: 0644]
isa/rv64uv/movn.S [new file with mode: 0644]
isa/rv64uv/movz.S [new file with mode: 0644]
isa/rv64uv/sb.S [new file with mode: 0644]
isa/rv64uv/sd.S [new file with mode: 0644]
isa/rv64uv/sh.S [new file with mode: 0644]
isa/rv64uv/sw.S [new file with mode: 0644]
isa/rv64uv/utidx.S [new file with mode: 0644]
isa/rv64uv/vfmvv.S [new file with mode: 0644]
isa/rv64uv/vmsv.S [new file with mode: 0644]
isa/rv64uv/vmvv.S [new file with mode: 0644]
isa/rv64uv/vsetvl.S [new file with mode: 0644]
isa/rv64uv/vvadd_branch.S [new file with mode: 0644]
isa/rv64uv/vvadd_d.S [new file with mode: 0644]
isa/rv64uv/vvadd_fd.S [new file with mode: 0644]
isa/rv64uv/vvadd_fw.S [new file with mode: 0644]
isa/rv64uv/vvadd_w.S [new file with mode: 0644]
isa/rv64uv/vvcfg.S [new file with mode: 0644]
isa/rv64uv/vvcfgivl.S [new file with mode: 0644]
isa/rv64uv/vvmul_d.S [new file with mode: 0644]
isa/rv64uv/wakeup.S [new file with mode: 0644]

diff --git a/env/p/link.ld b/env/p/link.ld
new file mode 100644 (file)
index 0000000..6b19389
--- /dev/null
@@ -0,0 +1,44 @@
+/*======================================================================*/
+/* Proxy kernel linker script                                           */
+/*======================================================================*/
+/* This is the linker script used when building the proxy kernel. */
+
+/*----------------------------------------------------------------------*/
+/* Setup                                                                */
+/*----------------------------------------------------------------------*/
+
+/* The OUTPUT_ARCH command specifies the machine architecture where the
+   argument is one of the names used in the BFD library. More
+   specifically one of the entires in bfd/cpu-mips.c */
+
+OUTPUT_ARCH( "riscv" )
+
+/* The ENTRY command specifies the entry point (ie. first instruction
+   to execute). The symbol _start should be defined in each test. */
+
+ENTRY( _start )
+
+/*----------------------------------------------------------------------*/
+/* Sections                                                             */
+/*----------------------------------------------------------------------*/
+
+SECTIONS
+{
+
+  /* text: test code section */
+  . = 0x00002000;
+  .text :
+  {
+    *(.text)
+  }
+
+  /* data: Initialized data segment */
+  .data :
+  {
+    *(.data)
+  }
+
+  /* End of uninitalized data segement */
+  _end = .;
+}
+
diff --git a/env/p/riscv_test.h b/env/p/riscv_test.h
new file mode 100644 (file)
index 0000000..a4f9668
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ENV_PHYSICAL_SINGLE_CORE_H
+#define _ENV_PHYSICAL_SINGLE_CORE_H
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_RV64U                                                    \
+
+#define RVTEST_RV64S                                                    \
+
+#define RVTEST_FP_ENABLE                                                \
+  setpcr cr0, 2;                                                        \
+  mfpcr a0, cr0;                                                        \
+  and   a0, a0, 2;                                                      \
+  beqz  a0, 1f;                                                         \
+  mtfsr x0;                                                             \
+1:
+
+#define RVTEST_PASS_NOFP                                                \
+  RVTEST_FP_ENABLE                                                      \
+  bnez a0, 2f;                                                          \
+  RVTEST_PASS                                                           \
+2:                                                                      \
+
+#define RVTEST_VEC_ENABLE                                               \
+  mfpcr a0, cr0;                                                        \
+  ori   a0, a0, 4;                                                      \
+  mtpcr a0, cr0;                                                        \
+  li    a0, 0xff;                                                       \
+  mtpcr a0, cr18;                                                       \
+
+#define RVTEST_CODE_BEGIN                                               \
+        .text;                                                          \
+        .align  4;                                                      \
+        .global _start;                                                 \
+_start:                                                                 \
+        RVTEST_FP_ENABLE                                                \
+        RVTEST_VEC_ENABLE                                               \
+        mfpcr a0, cr10; 1: bnez a0, 1b;                                 \
+
+//-----------------------------------------------------------------------
+// End Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_CODE_END                                                 \
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_PASS                                                     \
+        fence;                                                          \
+        li  x1, 1;                                                      \
+        mtpcr x1, cr30;                                                 \
+1:      b 1b;                                                           \
+
+#define RVTEST_FAIL                                                     \
+        fence;                                                          \
+        beqz x28, 1f;                                                   \
+        sll x28, x28, 1;                                                \
+        or x28, x28, 1;                                                 \
+        mtpcr x28, cr30;                                                \
+1:      b 1b;                                                           \
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_DATA_BEGIN
+#define RVTEST_DATA_END
+
+//#define RVTEST_DATA_BEGIN .align 4; .global begin_signature; begin_signature:
+//#define RVTEST_DATA_END .align 4; .global end_signature; end_signature:
+
+#endif
diff --git a/env/pm/link.ld b/env/pm/link.ld
new file mode 100644 (file)
index 0000000..6b19389
--- /dev/null
@@ -0,0 +1,44 @@
+/*======================================================================*/
+/* Proxy kernel linker script                                           */
+/*======================================================================*/
+/* This is the linker script used when building the proxy kernel. */
+
+/*----------------------------------------------------------------------*/
+/* Setup                                                                */
+/*----------------------------------------------------------------------*/
+
+/* The OUTPUT_ARCH command specifies the machine architecture where the
+   argument is one of the names used in the BFD library. More
+   specifically one of the entires in bfd/cpu-mips.c */
+
+OUTPUT_ARCH( "riscv" )
+
+/* The ENTRY command specifies the entry point (ie. first instruction
+   to execute). The symbol _start should be defined in each test. */
+
+ENTRY( _start )
+
+/*----------------------------------------------------------------------*/
+/* Sections                                                             */
+/*----------------------------------------------------------------------*/
+
+SECTIONS
+{
+
+  /* text: test code section */
+  . = 0x00002000;
+  .text :
+  {
+    *(.text)
+  }
+
+  /* data: Initialized data segment */
+  .data :
+  {
+    *(.data)
+  }
+
+  /* End of uninitalized data segement */
+  _end = .;
+}
+
diff --git a/env/pm/riscv_test.h b/env/pm/riscv_test.h
new file mode 100644 (file)
index 0000000..102e6e0
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef _ENV_PHYSICAL_MULTI_CORE_H
+#define _ENV_PHYSICAL_MULTI_CORE_H
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_RV64U                                                    \
+
+#define RVTEST_RV64S                                                    \
+
+#define RVTEST_FP_ENABLE                                                \
+  setpcr cr0, 2;                                                        \
+  mfpcr a0, cr0;                                                        \
+  and   a0, a0, 2;                                                      \
+  beqz  a0, 1f;                                                         \
+  mtfsr x0;                                                             \
+1:
+
+#define RVTEST_PASS_NOFP                                                \
+  RVTEST_FP_ENABLE                                                      \
+  bnez a0, 2f;                                                          \
+  RVTEST_PASS                                                           \
+2:                                                                      \
+
+#define RVTEST_VEC_ENABLE                                               \
+  mfpcr a0, cr0;                                                        \
+  ori   a0, a0, 4;                                                      \
+  mtpcr a0, cr0;                                                        \
+  li    a0, 0xff;                                                       \
+  mtpcr a0, cr18;                                                       \
+
+#define RVTEST_CODE_BEGIN                                               \
+        .text;                                                          \
+        .align  4;                                                      \
+        .global _start;                                                 \
+_start:                                                                 \
+        RVTEST_FP_ENABLE                                                \
+        RVTEST_VEC_ENABLE                                               \
+
+//-----------------------------------------------------------------------
+// End Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_CODE_END                                                 \
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_FAIL                                                     \
+        fence;                                                          \
+        beqz x28, 1f;                                                   \
+        sll x28, x28, 1;                                                \
+        or x28, x28, 1;                                                 \
+        mtpcr x28, cr30;                                                \
+1:      b 1b;                                                           \
+
+#define RVTEST_PASS                                                     \
+        fence;                                                          \
+        li  x1, 1;                                                      \
+        mtpcr x1, cr30;                                                 \
+1:      b 1b;                                                           \
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_DATA_BEGIN
+#define RVTEST_DATA_END
+
+//#define RVTEST_DATA_BEGIN .align 4; .global begin_signature; begin_signature:
+//#define RVTEST_DATA_END .align 4; .global end_signature; end_signature:
+
+#endif
diff --git a/env/pt/link.ld b/env/pt/link.ld
new file mode 100644 (file)
index 0000000..6b19389
--- /dev/null
@@ -0,0 +1,44 @@
+/*======================================================================*/
+/* Proxy kernel linker script                                           */
+/*======================================================================*/
+/* This is the linker script used when building the proxy kernel. */
+
+/*----------------------------------------------------------------------*/
+/* Setup                                                                */
+/*----------------------------------------------------------------------*/
+
+/* The OUTPUT_ARCH command specifies the machine architecture where the
+   argument is one of the names used in the BFD library. More
+   specifically one of the entires in bfd/cpu-mips.c */
+
+OUTPUT_ARCH( "riscv" )
+
+/* The ENTRY command specifies the entry point (ie. first instruction
+   to execute). The symbol _start should be defined in each test. */
+
+ENTRY( _start )
+
+/*----------------------------------------------------------------------*/
+/* Sections                                                             */
+/*----------------------------------------------------------------------*/
+
+SECTIONS
+{
+
+  /* text: test code section */
+  . = 0x00002000;
+  .text :
+  {
+    *(.text)
+  }
+
+  /* data: Initialized data segment */
+  .data :
+  {
+    *(.data)
+  }
+
+  /* End of uninitalized data segement */
+  _end = .;
+}
+
diff --git a/env/pt/pcr.h b/env/pt/pcr.h
new file mode 100644 (file)
index 0000000..72043b7
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef _RISCV_PCR_H
+#define _RISCV_PCR_H
+
+#define SR_ET    0x00000001
+#define SR_EF    0x00000002
+#define SR_EV    0x00000004
+#define SR_EC    0x00000008
+#define SR_PS    0x00000010
+#define SR_S     0x00000020
+#define SR_U64   0x00000040
+#define SR_S64   0x00000080
+#define SR_VM    0x00000100
+#define SR_IM    0x00FF0000
+#define SR_ZERO  ~(SR_ET|SR_EF|SR_EV|SR_EC|SR_PS|SR_S|SR_U64|SR_S64|SR_VM|SR_IM)
+#define SR_IM_SHIFT 16
+
+#define PCR_SR       0
+#define PCR_EPC      1
+#define PCR_BADVADDR 2
+#define PCR_EVEC     3
+#define PCR_COUNT    4
+#define PCR_COMPARE  5
+#define PCR_CAUSE    6
+#define PCR_PTBR     7
+#define PCR_SEND_IPI 8
+#define PCR_CLR_IPI  9
+#define PCR_COREID   10
+#define PCR_IMPL     11
+#define PCR_K0       12
+#define PCR_K1       13
+#define PCR_VECBANK  18
+#define PCR_VECCFG   19
+#define PCR_RESET    29
+#define PCR_TOHOST   30
+#define PCR_FROMHOST 31
+
+#define IMPL_ISASIM 1
+#define IMPL_ROCKET 2
+
+#define IRQ_IPI   5
+#define IRQ_TIMER 7
+
+#define CAUSE_MISALIGNED_FETCH 0
+#define CAUSE_FAULT_FETCH 1
+#define CAUSE_ILLEGAL_INSTRUCTION 2
+#define CAUSE_PRIVILEGED_INSTRUCTION 3
+#define CAUSE_FP_DISABLED 4
+#define CAUSE_SYSCALL 6
+#define CAUSE_BREAKPOINT 7
+#define CAUSE_MISALIGNED_LOAD 8
+#define CAUSE_MISALIGNED_STORE 9
+#define CAUSE_FAULT_LOAD 10
+#define CAUSE_FAULT_STORE 11
+#define CAUSE_VECTOR_DISABLED 12
+#define CAUSE_VECTOR_BANK 13
+
+#define CAUSE_VECTOR_MISALIGNED_FETCH 24
+#define CAUSE_VECTOR_FAULT_FETCH 25
+#define CAUSE_VECTOR_ILLEGAL_INSTRUCTION 26
+#define CAUSE_VECTOR_ILLEGAL_COMMAND 27
+#define CAUSE_VECTOR_MISALIGNED_LOAD 28
+#define CAUSE_VECTOR_MISALIGNED_STORE 29
+#define CAUSE_VECTOR_FAULT_LOAD 30
+#define CAUSE_VECTOR_FAULT_STORE 31
+
+#ifdef __riscv
+
+#define ASM_CR(r)   _ASM_CR(r)
+#define _ASM_CR(r)  cr##r
+
+#ifndef __ASSEMBLER__
+
+#define mtpcr(reg,val) ({ long __tmp = (long)(val), __tmp2; \
+          asm volatile ("mtpcr %0,%1,cr%2" : "=r"(__tmp2) : "r"(__tmp),"i"(reg)); \
+          __tmp2; })
+
+#define mfpcr(reg) ({ long __tmp; \
+          asm volatile ("mfpcr %0,cr%1" : "=r"(__tmp) : "i"(reg)); \
+          __tmp; })
+
+#define setpcr(reg,val) ({ long __tmp; \
+          asm volatile ("setpcr %0,cr%2,%1" : "=r"(__tmp) : "i"(val), "i"(reg)); \
+          __tmp; })
+
+#define clearpcr(reg,val) ({ long __tmp; \
+          asm volatile ("clearpcr %0,cr%2,%1" : "=r"(__tmp) : "i"(val), "i"(reg)); \
+          __tmp; })
+
+#endif
+
+#endif
+
+#endif
diff --git a/env/pt/riscv_test.h b/env/pt/riscv_test.h
new file mode 100644 (file)
index 0000000..4c42803
--- /dev/null
@@ -0,0 +1,236 @@
+#ifndef _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
+#define _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
+
+#include "pcr.h"
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_RV64U                                                    \
+
+#define RVTEST_FP_ENABLE                                                \
+  setpcr cr0, 2;                                                        \
+  mfpcr a0, cr0;                                                        \
+  and   a0, a0, 2;                                                      \
+  beqz  a0, 1f;                                                         \
+  mtfsr x0;                                                             \
+1:
+
+#define RVTEST_PASS_NOFP                                                \
+  RVTEST_FP_ENABLE                                                      \
+  bnez a0, 2f;                                                          \
+  RVTEST_PASS                                                           \
+2:                                                                      \
+
+#define RVTEST_VEC_ENABLE                                               \
+  mfpcr a0, cr0;                                                        \
+  ori   a0, a0, 4;                                                      \
+  mtpcr a0, cr0;                                                        \
+  li    a0, 0xff;                                                       \
+  mtpcr a0, cr18;                                                       \
+
+#define RVTEST_CODE_BEGIN                                               \
+        .text;                                                          \
+        .align  4;                                                      \
+        .global _start;                                                 \
+_start:                                                                 \
+        RVTEST_FP_ENABLE                                                \
+        RVTEST_VEC_ENABLE                                               \
+        mfpcr a0, cr10; 1: bnez a0, 1b;                                 \
+        ENABLE_TIMER_INTERRUPT                                          \
+
+//-----------------------------------------------------------------------
+// End Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_CODE_END                                                 \
+        XCPT_HANDLER                                                    \
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_PASS                                                     \
+        fence;                                                          \
+        li  x1, 1;                                                      \
+        mtpcr x1, cr30;                                                 \
+1:      b 1b;                                                           \
+
+#define RVTEST_FAIL                                                     \
+        fence;                                                          \
+        beqz x28, 1f;                                                   \
+        sll x28, x28, 1;                                                \
+        or x28, x28, 1;                                                 \
+        mtpcr x28, cr30;                                                \
+1:      b 1b;                                                           \
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_DATA_BEGIN                                               \
+        .align 3; \
+regspill:                          \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+evac:                              \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+        .dword 0xdeadbeefcafebabe; \
+
+#define RVTEST_DATA_END
+
+//#define RVTEST_DATA_BEGIN .align 4; .global begin_signature; begin_signature:
+//#define RVTEST_DATA_END .align 4; .global end_signature; end_signature:
+
+//-----------------------------------------------------------------------
+// Misc
+//-----------------------------------------------------------------------
+
+#define ENABLE_TIMER_INTERRUPT \
+        mtpcr x0,ASM_CR(PCR_CLR_IPI);\
+        mfpcr a0,ASM_CR(PCR_SR);     \
+        li a1, SR_ET|SR_IM;          \
+        or a0,a0,a1;                 \
+        mtpcr a0,ASM_CR(PCR_SR);     \
+        la a0,handler;               \
+        mtpcr a0,ASM_CR(PCR_EVEC);   \
+        mtpcr x0,ASM_CR(PCR_COUNT);  \
+        addi a0,x0,60;               \
+        mtpcr a0,ASM_CR(PCR_COMPARE);\
+
+#define XCPT_HANDLER \
+handler: \
+        mtpcr a0,ASM_CR(PCR_K0);     \
+        mtpcr a1,ASM_CR(PCR_K1);     \
+        la a0,regspill;              \
+        sd a2,0(a0);                 \
+        sd a3,8(a0);                 \
+        sd a4,16(a0);                \
+        sd a5,24(a0);                \
+        sd s0,32(a0);                \
+        sd s1,40(a0);                \
+        mfpcr s1,ASM_CR(PCR_VECBANK);\
+        mfpcr s0,ASM_CR(PCR_VECCFG); \
+        la a0,evac;                  \
+        vxcptevac a0;                \
+        mtpcr s1,ASM_CR(PCR_VECBANK);\
+        srli a1,s0,12;               \
+        andi a1,a1,0x3f;             \
+        srli a2,s0,18;               \
+        andi a2,a2,0x3f;             \
+        vvcfg a1,a2;                 \
+        li a2,0xfff;                 \
+        and a1,s0,a2;                \
+        vsetvl a1,a1;                \
+        vxcpthold;                   \
+        li a5,0;                     \
+handler_loop: \
+        ld a1,0(a0);                 \
+        addi a0,a0,8;                \
+        blt a1,x0,done;              \
+        srli a2,a1,32;               \
+        andi a2,a2,0x1;              \
+        beq a2,x0,vcnt;              \
+vcmd: \
+        beq a5,x0,vcmd_skip;         \
+        venqcmd a4,a3;               \
+vcmd_skip: \
+        li a5,1;                     \
+        move a4,a1;                  \
+        srli a3,a4,36;               \
+        andi a3,a3,0x1;              \
+vimm1: \
+        srli a2,a4,35;               \
+        andi a2,a2,0x1;              \
+        beq a2,x0,vimm2;             \
+        ld a1,0(a0);                 \
+        addi a0,a0,8;                \
+        venqimm1 a1,a3;              \
+vimm2: \
+        srli a2,a4,34;               \
+        andi a2,a2,0x1;              \
+        beq a2,x0,end;               \
+        ld a1,0(a0);                 \
+        addi a0,a0,8;                \
+        venqimm2 a1,a3;              \
+        j end;                       \
+vcnt: \
+        ld a2,0(a0);                 \
+        srli a2,a2,31;               \
+        andi a2,a2,0x2;              \
+        or a3,a3,a2;                 \
+        venqcnt a1,a3;               \
+end: \
+        j handler_loop;              \
+done: \
+        beq a5,x0,done_skip;         \
+        venqcmd a4,a3;               \
+done_skip: \
+        la a0,regspill;              \
+        ld a2,0(a0);                 \
+        ld a3,8(a0);                 \
+        ld a4,16(a0);                \
+        ld a5,24(a0);                \
+        ld s0,32(a0);                \
+        ld s1,40(a0);                \
+        mfpcr a0,ASM_CR(PCR_COUNT);  \
+        addi a0,a0,60;               \
+        mtpcr a0,ASM_CR(PCR_COMPARE);\
+        mfpcr a0,ASM_CR(PCR_K0);     \
+        mfpcr a1,ASM_CR(PCR_K1);     \
+        eret;                        \
+
+#endif
diff --git a/env/v/entry.S b/env/v/entry.S
new file mode 100644 (file)
index 0000000..35eaae3
--- /dev/null
@@ -0,0 +1,171 @@
+#include "riscv_test.h"
+
+#ifdef __riscv64
+# define STORE    sd
+# define LOAD     ld
+# define REGBYTES 8
+#else
+# define STORE    sw
+# define LOAD     lw
+# define REGBYTES 4
+#endif
+
+  .text
+  .global _start
+_start:
+  la sp, stack_top
+  li a1, 1337
+  la a0, userstart
+  j vm_boot
+
+save_tf:  # write the trap frame onto the stack
+
+  # save gprs
+  STORE  x3,3*REGBYTES(x2)
+  STORE  x4,4*REGBYTES(x2)
+  STORE  x5,5*REGBYTES(x2)
+  STORE  x6,6*REGBYTES(x2)
+  STORE  x7,7*REGBYTES(x2)
+  STORE  x8,8*REGBYTES(x2)
+  STORE  x9,9*REGBYTES(x2)
+  STORE  x10,10*REGBYTES(x2)
+  STORE  x11,11*REGBYTES(x2)
+  STORE  x12,12*REGBYTES(x2)
+  STORE  x13,13*REGBYTES(x2)
+  STORE  x14,14*REGBYTES(x2)
+  STORE  x15,15*REGBYTES(x2)
+  STORE  x16,16*REGBYTES(x2)
+  STORE  x17,17*REGBYTES(x2)
+  STORE  x18,18*REGBYTES(x2)
+  STORE  x19,19*REGBYTES(x2)
+  STORE  x20,20*REGBYTES(x2)
+  STORE  x21,21*REGBYTES(x2)
+  STORE  x22,22*REGBYTES(x2)
+  STORE  x23,23*REGBYTES(x2)
+  STORE  x24,24*REGBYTES(x2)
+  STORE  x25,25*REGBYTES(x2)
+  STORE  x26,26*REGBYTES(x2)
+  STORE  x27,27*REGBYTES(x2)
+  STORE  x28,28*REGBYTES(x2)
+  STORE  x29,29*REGBYTES(x2)
+  STORE  x30,30*REGBYTES(x2)
+  STORE  x31,31*REGBYTES(x2)
+
+  mfpcr  x3,ASM_CR(PCR_K0)
+  STORE  x3,1*REGBYTES(x2)          # x1 is in PCR_K0
+  mfpcr  x3,ASM_CR(PCR_K1)
+  STORE  x3,2*REGBYTES(x2)          # x2 is in PCR_K1
+
+  # get sr, epc, badvaddr, cause
+  mfpcr  x3,ASM_CR(PCR_SR)          # sr
+  STORE  x3,32*REGBYTES(x2)
+  mfpcr  x4,ASM_CR(PCR_EPC)          # epc
+  STORE  x4,33*REGBYTES(x2)
+  mfpcr  x3,ASM_CR(PCR_BADVADDR)      # badvaddr
+  STORE  x3,34*REGBYTES(x2)
+  mfpcr  x3,ASM_CR(PCR_CAUSE)        # cause
+  STORE  x3,35*REGBYTES(x2)
+
+  # get faulting insn, if it wasn't a fetch-related trap
+  li    x5, CAUSE_MISALIGNED_FETCH
+  li    x6, CAUSE_FAULT_FETCH
+  beq   x3, x5, 1f
+  beq   x3, x6, 1f
+  lh    x3,0(x4)
+  lh    x4,2(x4)
+  sh    x3,  36*REGBYTES(x2)
+  sh    x4,2+36*REGBYTES(x2)
+1:
+
+  mfpcr  x3,ASM_CR(PCR_VECBANK)        # vecbank
+  STORE  x3,37*REGBYTES(x2)
+  mfpcr  x3,ASM_CR(PCR_VECCFG)        # veccfg
+  STORE  x3,38*REGBYTES(x2)
+
+  ret
+
+  .globl  pop_tf
+pop_tf:  # write the trap frame onto the stack
+  # restore gprs
+  LOAD  a1,32*REGBYTES(a0)  # restore sr (should disable interrupts)
+  mtpcr  a1,ASM_CR(PCR_SR)
+
+  LOAD  x1,1*REGBYTES(a0)
+  mtpcr  x1,ASM_CR(PCR_K0)
+  LOAD  x1,2*REGBYTES(a0)
+  mtpcr x1,ASM_CR(PCR_K1)
+  move  x1,a0
+  LOAD  x3,3*REGBYTES(x1)
+  LOAD  x4,4*REGBYTES(x1)
+  LOAD  x5,5*REGBYTES(x1)
+  LOAD  x6,6*REGBYTES(x1)
+  LOAD  x7,7*REGBYTES(x1)
+  LOAD  x8,8*REGBYTES(x1)
+  LOAD  x9,9*REGBYTES(x1)
+  LOAD  x10,10*REGBYTES(x1)
+  LOAD  x11,11*REGBYTES(x1)
+  LOAD  x12,12*REGBYTES(x1)
+  LOAD  x13,13*REGBYTES(x1)
+  LOAD  x14,14*REGBYTES(x1)
+  LOAD  x15,15*REGBYTES(x1)
+  LOAD  x16,16*REGBYTES(x1)
+  LOAD  x17,17*REGBYTES(x1)
+  LOAD  x18,18*REGBYTES(x1)
+  LOAD  x19,19*REGBYTES(x1)
+  LOAD  x20,20*REGBYTES(x1)
+  LOAD  x21,21*REGBYTES(x1)
+  LOAD  x22,22*REGBYTES(x1)
+  LOAD  x23,23*REGBYTES(x1)
+  LOAD  x24,24*REGBYTES(x1)
+  LOAD  x25,25*REGBYTES(x1)
+  LOAD  x26,26*REGBYTES(x1)
+  LOAD  x27,27*REGBYTES(x1)
+  LOAD  x28,28*REGBYTES(x1)
+  LOAD  x29,29*REGBYTES(x1)
+  LOAD  x30,30*REGBYTES(x1)
+  LOAD  x31,31*REGBYTES(x1)
+
+  # gtfo!
+  LOAD  x2,33*REGBYTES(x1)
+  mtpcr x2,ASM_CR(PCR_EPC)
+  mfpcr x1,ASM_CR(PCR_K0)
+  mfpcr x2,ASM_CR(PCR_K1)
+  eret
+
+  .global  trap_entry
+trap_entry:
+  mtpcr ra,ASM_CR(PCR_K0)
+  mtpcr x2,ASM_CR(PCR_K1)
+
+  # coming from kernel?
+  mfpcr ra,ASM_CR(PCR_SR)
+  and   ra,ra,SR_PS
+  bnez  ra, 1f
+
+  # no, so start at the top of the stack
+  la    x2,stack_top+MAX_TEST_PAGES*PGSIZE-SIZEOF_TRAPFRAME_T
+  jal   save_tf
+  move  sp,x2
+  setpcr ASM_CR(PCR_SR), SR_ET
+  move  a0,x2
+  mfpcr ra,ASM_CR(PCR_SR)
+  and   ra,ra,SR_EV
+  beqz  ra, 2f
+  addi  x2,x2,39*REGBYTES
+  vxcptsave x2
+2:jal   handle_trap
+
+  # when coming from kernel, continue below its stack
+1:add   x2, sp, -SIZEOF_TRAPFRAME_T
+  jal   save_tf
+  move  sp,x2
+  setpcr ASM_CR(PCR_SR), SR_ET
+  move  a0,x2
+  jal   handle_trap
+
+  .bss
+  .global stack_bot
+  .global stack_top
+stack_bot:
+  .skip  32768
+stack_top:
diff --git a/env/v/link.ld b/env/v/link.ld
new file mode 100644 (file)
index 0000000..4efeaaa
--- /dev/null
@@ -0,0 +1,50 @@
+/*======================================================================*/
+/* Proxy kernel linker script                                           */
+/*======================================================================*/
+/* This is the linker script used when building the proxy kernel. */
+
+/*----------------------------------------------------------------------*/
+/* Setup                                                                */
+/*----------------------------------------------------------------------*/
+
+/* The OUTPUT_ARCH command specifies the machine architecture where the
+   argument is one of the names used in the BFD library. More
+   specifically one of the entires in bfd/cpu-mips.c */
+
+OUTPUT_ARCH( "riscv" )
+
+/* The ENTRY command specifies the entry point (ie. first instruction
+   to execute). The symbol _start should be defined in each test. */
+
+ENTRY( _start )
+
+/*----------------------------------------------------------------------*/
+/* Sections                                                             */
+/*----------------------------------------------------------------------*/
+
+SECTIONS
+{
+
+  /* text: test code section */
+  . = 0x00002000;
+  .text :
+  {
+    *(.text)
+  }
+
+  /* data: Initialized data segment */
+  .data ALIGN(0x2000):
+  {
+    *(.data)
+  }
+
+  /* bss: Initialized bss segment */
+  .bss ALIGN(0x2000):
+  {
+    *(.bss)
+  }
+
+  /* End of uninitalized bss segement */
+  _end = .;
+}
+
diff --git a/env/v/pcr.h b/env/v/pcr.h
new file mode 100644 (file)
index 0000000..72043b7
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef _RISCV_PCR_H
+#define _RISCV_PCR_H
+
+#define SR_ET    0x00000001
+#define SR_EF    0x00000002
+#define SR_EV    0x00000004
+#define SR_EC    0x00000008
+#define SR_PS    0x00000010
+#define SR_S     0x00000020
+#define SR_U64   0x00000040
+#define SR_S64   0x00000080
+#define SR_VM    0x00000100
+#define SR_IM    0x00FF0000
+#define SR_ZERO  ~(SR_ET|SR_EF|SR_EV|SR_EC|SR_PS|SR_S|SR_U64|SR_S64|SR_VM|SR_IM)
+#define SR_IM_SHIFT 16
+
+#define PCR_SR       0
+#define PCR_EPC      1
+#define PCR_BADVADDR 2
+#define PCR_EVEC     3
+#define PCR_COUNT    4
+#define PCR_COMPARE  5
+#define PCR_CAUSE    6
+#define PCR_PTBR     7
+#define PCR_SEND_IPI 8
+#define PCR_CLR_IPI  9
+#define PCR_COREID   10
+#define PCR_IMPL     11
+#define PCR_K0       12
+#define PCR_K1       13
+#define PCR_VECBANK  18
+#define PCR_VECCFG   19
+#define PCR_RESET    29
+#define PCR_TOHOST   30
+#define PCR_FROMHOST 31
+
+#define IMPL_ISASIM 1
+#define IMPL_ROCKET 2
+
+#define IRQ_IPI   5
+#define IRQ_TIMER 7
+
+#define CAUSE_MISALIGNED_FETCH 0
+#define CAUSE_FAULT_FETCH 1
+#define CAUSE_ILLEGAL_INSTRUCTION 2
+#define CAUSE_PRIVILEGED_INSTRUCTION 3
+#define CAUSE_FP_DISABLED 4
+#define CAUSE_SYSCALL 6
+#define CAUSE_BREAKPOINT 7
+#define CAUSE_MISALIGNED_LOAD 8
+#define CAUSE_MISALIGNED_STORE 9
+#define CAUSE_FAULT_LOAD 10
+#define CAUSE_FAULT_STORE 11
+#define CAUSE_VECTOR_DISABLED 12
+#define CAUSE_VECTOR_BANK 13
+
+#define CAUSE_VECTOR_MISALIGNED_FETCH 24
+#define CAUSE_VECTOR_FAULT_FETCH 25
+#define CAUSE_VECTOR_ILLEGAL_INSTRUCTION 26
+#define CAUSE_VECTOR_ILLEGAL_COMMAND 27
+#define CAUSE_VECTOR_MISALIGNED_LOAD 28
+#define CAUSE_VECTOR_MISALIGNED_STORE 29
+#define CAUSE_VECTOR_FAULT_LOAD 30
+#define CAUSE_VECTOR_FAULT_STORE 31
+
+#ifdef __riscv
+
+#define ASM_CR(r)   _ASM_CR(r)
+#define _ASM_CR(r)  cr##r
+
+#ifndef __ASSEMBLER__
+
+#define mtpcr(reg,val) ({ long __tmp = (long)(val), __tmp2; \
+          asm volatile ("mtpcr %0,%1,cr%2" : "=r"(__tmp2) : "r"(__tmp),"i"(reg)); \
+          __tmp2; })
+
+#define mfpcr(reg) ({ long __tmp; \
+          asm volatile ("mfpcr %0,cr%1" : "=r"(__tmp) : "i"(reg)); \
+          __tmp; })
+
+#define setpcr(reg,val) ({ long __tmp; \
+          asm volatile ("setpcr %0,cr%2,%1" : "=r"(__tmp) : "i"(val), "i"(reg)); \
+          __tmp; })
+
+#define clearpcr(reg,val) ({ long __tmp; \
+          asm volatile ("clearpcr %0,cr%2,%1" : "=r"(__tmp) : "i"(val), "i"(reg)); \
+          __tmp; })
+
+#endif
+
+#endif
+
+#endif
diff --git a/env/v/riscv_test.h b/env/v/riscv_test.h
new file mode 100644 (file)
index 0000000..4d9cceb
--- /dev/null
@@ -0,0 +1,129 @@
+#ifndef _ENV_VIRTUAL_SINGLE_CORE_H
+#define _ENV_VIRTUAL_SINGLE_CORE_H
+
+//-----------------------------------------------------------------------
+// Begin Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_RV64U                                                    \
+
+#define RVTEST_RV64S                                                    \
+
+#define RVTEST_FP_ENABLE                                                \
+  mfpcr t0, cr0;                                                        \
+  or    t0, t0, 2;                                                      \
+  mtpcr t0, cr0;                                                        \
+  mtfsr x0;                                                             \
+
+#define RVTEST_VEC_ENABLE                                               \
+  mfpcr t0, cr0;                                                        \
+  ori   t0, t0, 4;                                                      \
+  mtpcr t0, cr0;                                                        \
+  li    t0, 0xff;                                                       \
+  mtpcr t0, cr11;                                                       \
+
+#define RVTEST_CODE_BEGIN                                               \
+        .text;                                                          \
+        .align  13;                                                     \
+        .global userstart;                                              \
+userstart:                                                              \
+
+//-----------------------------------------------------------------------
+// End Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_CODE_END                                                 \
+
+//-----------------------------------------------------------------------
+// Pass/Fail Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_PASS li a0, 1; syscall;
+#define RVTEST_FAIL sll a0, x28, 1; 1:beqz a0, 1b; or a0, a0, 1; syscall;
+
+#define RVTEST_PASS_NOFP li a0, 1234; syscall;
+
+//-----------------------------------------------------------------------
+// Data Section Macro
+//-----------------------------------------------------------------------
+
+#define RVTEST_DATA_BEGIN
+#define RVTEST_DATA_END
+
+//#define RVTEST_DATA_BEGIN .align 4; .global begin_signature; begin_signature:
+//#define RVTEST_DATA_END .align 4; .global end_signature; end_signature:
+
+//-----------------------------------------------------------------------
+// Supervisor mode definitions and macros
+//-----------------------------------------------------------------------
+
+#include "pcr.h"
+
+#define vvcfg(nxregs, nfregs) ({ \
+          asm volatile ("vvcfg %0,%1" : : "r"(nxregs), "r"(nfregs)); })
+
+#define vsetvl(vl) ({ long __tmp; \
+          asm volatile ("vsetvl %0,%1" : "=r"(__tmp) : "r"(vl)); })
+
+#define vcfg(word) ({ vvcfg((word)>>12, (word)>>18); vsetvl((word)); })
+
+#define dword_bit_cmd(dw) ((dw >> 32) & 0x1)
+#define dword_bit_cnt(dw) (!dword_bit_cmd(dw))
+#define dword_bit_imm1(dw) ((dw >> 35) & 0x1)
+#define dword_bit_imm2(dw) ((dw >> 34) & 0x1)
+#define dword_bit_pf(dw) ((dw >> 36) & 0x1)
+
+#define fencevl() ({ \
+          asm volatile ("fence.v.l" ::: "memory"); })
+
+#define vxcptkill() ({ \
+          asm volatile ("vxcptkill"); })
+
+#define vxcpthold() ({ \
+          asm volatile ("vxcpthold"); })
+
+#define venqcmd(bits, pf) ({ \
+          asm volatile ("venqcmd %0,%1" : : "r"(bits), "r"(pf)); })
+
+#define venqimm1(bits, pf) ({ \
+          asm volatile ("venqimm1 %0,%1" : : "r"(bits), "r"(pf)); })
+
+#define venqimm2(bits, pf) ({ \
+          asm volatile ("venqimm2 %0,%1" : : "r"(bits), "r"(pf)); })
+#define venqcnt(bits, pf) ({ \
+          asm volatile ("venqcnt %0,%1" :: "r"(bits), "r"(pf)); })
+
+#define MAX_TEST_PAGES 63 // this must be the period of the LFSR below
+#define LFSR_NEXT(x) (((((x)^((x)>>1)) & 1) << 5) | ((x) >> 1))
+
+#define PGSHIFT 13
+#define PGSIZE (1 << PGSHIFT)
+
+#define SIZEOF_TRAPFRAME_T 1336
+
+#ifndef __ASSEMBLER__
+
+
+typedef unsigned long pte_t;
+#define LEVELS (sizeof(pte_t) == sizeof(uint64_t) ? 3 : 2)
+#define PTIDXBITS (PGSHIFT - (sizeof(pte_t) == 8 ? 3 : 2))
+#define VPN_BITS (PTIDXBITS * LEVELS)
+#define VA_BITS (VPN_BITS + PGSHIFT)
+#define PTES_PER_PT (PGSIZE/sizeof(pte_t))
+
+typedef struct
+{
+  long gpr[32];
+  long sr;
+  long epc;
+  long badvaddr;
+  long cause;
+  long insn;
+  long vecbank;
+  long veccfg;
+  long evac[128];
+} trapframe_t;
+#endif
+
+#endif
diff --git a/env/v/vm.c b/env/v/vm.c
new file mode 100644 (file)
index 0000000..37ef19e
--- /dev/null
@@ -0,0 +1,263 @@
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "riscv_test.h"
+
+void trap_entry();
+void pop_tf(trapframe_t*);
+
+static void cputchar(int x)
+{
+  while (mtpcr(PCR_TOHOST, 0x0101000000000000 | (unsigned char)x));
+}
+
+static void cputstring(const char* s)
+{
+  while(*s)
+    cputchar(*s++);
+  cputchar('\n');
+}
+
+static void terminate(int code)
+{
+  while (mtpcr(PCR_TOHOST, code));
+}
+
+#define stringify1(x) #x
+#define stringify(x) stringify1(x)
+#define assert(x) do { \
+  if (x) break; \
+  cputstring("Assertion failed: " stringify(x)); \
+  terminate(3); \
+  while(1); \
+} while(0)
+
+#define RELOC(x) ((typeof(x))((char*)(x) + (PGSIZE*MAX_TEST_PAGES)))
+
+typedef struct { pte_t addr; void* next; } freelist_t;
+
+pte_t l1pt[PTES_PER_PT] __attribute__((aligned(PGSIZE)));
+pte_t l2pt[PTES_PER_PT] __attribute__((aligned(PGSIZE)));
+pte_t l3pt[PTES_PER_PT] __attribute__((aligned(PGSIZE)));
+freelist_t user_mapping[MAX_TEST_PAGES];
+freelist_t freelist_nodes[MAX_TEST_PAGES];
+freelist_t *freelist_head, *freelist_tail;
+
+void printhex(uint64_t x)
+{
+  char str[17];
+  for (int i = 0; i < 16; i++)
+  {
+    str[15-i] = (x & 0xF) + ((x & 0xF) < 10 ? '0' : 'a'-10);
+    x >>= 4;
+  }
+  str[16] = 0;
+
+  cputstring(str);
+}
+
+void evict(unsigned long addr)
+{
+  assert(addr >= PGSIZE && addr < RELOC(0L));
+  addr = addr/PGSIZE*PGSIZE;
+
+  freelist_t* node = RELOC(&user_mapping[addr/PGSIZE]);
+  if (node->addr)
+  {
+    memcpy((void*)RELOC(addr), (void*)addr, PGSIZE);
+    RELOC(&user_mapping[addr/PGSIZE])->addr = 0;
+
+    if (*RELOC(&freelist_tail) == 0)
+      *RELOC(&freelist_head) = *RELOC(&freelist_tail) = node;
+    else
+    {
+      (*RELOC(&freelist_tail))->next = node;
+      *RELOC(&freelist_tail) = node;
+    }
+  }
+}
+
+void handle_fault(unsigned long addr)
+{
+  assert(addr >= PGSIZE && addr < RELOC(0L));
+  addr = addr/PGSIZE*PGSIZE;
+
+  freelist_t* node = *RELOC(&freelist_head);
+  assert(node);
+  *RELOC(&freelist_head) = node->next;
+  if (*RELOC(&freelist_head) == *RELOC(&freelist_tail))
+    *RELOC(&freelist_tail) = 0;
+
+  *RELOC(&l3pt[addr/PGSIZE]) = node->addr | 0x3F2;
+  mtpcr(PCR_PTBR, l1pt);
+
+  assert(RELOC(&user_mapping[addr/PGSIZE])->addr == 0);
+  *RELOC(&user_mapping[addr/PGSIZE]) = *node;
+  memcpy((void*)addr, (void*)RELOC(addr), PGSIZE);
+
+  __builtin___clear_cache(0,0);
+}
+
+void emulate_vxcptsave(trapframe_t* tf)
+{
+  long where = tf->gpr[(tf->insn >> 22) & 0x1F];
+
+  asm volatile ("vxcptevac %0" : : "r"(where));
+  fencevl();
+}
+
+void do_vxcptrestore(long* where)
+{
+  vxcpthold();
+
+  int idx = 0;
+  long dword, cmd, pf;
+  int first = 1;
+
+  while (1)
+  {
+    dword = where[idx++];
+
+    if (dword < 0) break;
+
+    if (dword_bit_cnt(dword))
+    {
+      venqcnt(dword, pf | (dword_bit_cmd(where[idx]) << 1));
+    }
+    else
+    {
+      if (!first)
+      {
+        venqcmd(cmd, pf);
+      }
+
+      first = 0;
+      cmd = dword;
+      pf = dword_bit_pf(cmd);
+
+      if (dword_bit_imm1(cmd))
+      {
+        venqimm1(where[idx++], pf);
+      }
+      if (dword_bit_imm2(cmd))
+      {
+        venqimm2(where[idx++], pf);
+      }
+    }
+  }
+  if (!first)
+  {
+    venqcmd(cmd, pf);
+  }
+}
+
+void emulate_vxcptrestore(trapframe_t* tf)
+{
+  long* where = (long*)tf->gpr[(tf->insn >> 22) & 0x1F];
+  vxcptkill();
+  vcfg(tf->veccfg);
+  do_vxcptrestore(where);
+}
+
+void restore_vector(trapframe_t* tf)
+{
+  mtpcr(PCR_VECBANK, tf->vecbank);
+  vcfg(tf->veccfg);
+
+  if (mfpcr(PCR_IMPL) == IMPL_ROCKET)
+    do_vxcptrestore(tf->evac);
+  else
+    asm volatile("vxcptrestore %0" : : "r"(tf->evac) : "memory");
+}
+
+void handle_trap(trapframe_t* tf)
+{
+  if (tf->cause == CAUSE_SYSCALL)
+  {
+    int n = tf->gpr[18];
+    if (n == 1234) // TEST_PASS_NOFP
+    {
+      if (mfpcr(PCR_SR) & SR_EF)
+      {
+        tf->epc += 4;
+        goto out;
+      }
+      n = 1;
+    }
+
+    for (long i = 1; i < MAX_TEST_PAGES; i++)
+      evict(i*PGSIZE);
+
+    terminate(n);
+    while(1);
+  }
+  else if (tf->cause == CAUSE_FAULT_FETCH)
+    handle_fault(tf->epc);
+  else if (tf->cause == CAUSE_ILLEGAL_INSTRUCTION)
+  {
+    if ((tf->insn & 0xF83FFFFF) == 0x37B)
+      emulate_vxcptsave(tf);
+    else if ((tf->insn & 0xF83FFFFF) == 0x77B)
+      emulate_vxcptrestore(tf);
+    else
+      assert(0);
+    tf->epc += 4;
+  }
+  else if (tf->cause == CAUSE_FAULT_LOAD || tf->cause == CAUSE_FAULT_STORE ||
+           tf->cause == CAUSE_VECTOR_FAULT_LOAD || tf->cause == CAUSE_VECTOR_FAULT_STORE ||
+           tf->cause == CAUSE_VECTOR_FAULT_FETCH)
+    handle_fault(tf->badvaddr);
+  else
+    assert(0);
+
+out:
+  if (!(tf->sr & SR_PS) && (tf->sr & SR_EV))
+    restore_vector(tf);
+  pop_tf(tf);
+}
+
+void vm_boot(long test_addr, long seed)
+{
+  while (mfpcr(PCR_COREID) > 0); // only core 0 proceeds
+
+  assert(SIZEOF_TRAPFRAME_T == sizeof(trapframe_t));
+
+  seed = 1 + (seed % MAX_TEST_PAGES);
+  freelist_head = RELOC(&freelist_nodes[0]);
+  freelist_tail = RELOC(&freelist_nodes[MAX_TEST_PAGES-1]);
+  for (long i = 0; i < MAX_TEST_PAGES; i++)
+  {
+    freelist_nodes[i].addr = (MAX_TEST_PAGES+i)*PGSIZE;
+    freelist_nodes[i].next = RELOC(&freelist_nodes[i+1]);
+    seed = LFSR_NEXT(seed);
+  }
+  freelist_nodes[MAX_TEST_PAGES-1].next = 0;
+
+  assert(MAX_TEST_PAGES*2 < PTES_PER_PT);
+  l1pt[0] = (pte_t)l2pt | 1;
+  l2pt[0] = (pte_t)l3pt | 1;
+  for (long i = 0; i < MAX_TEST_PAGES; i++)
+    l3pt[i] = l3pt[i+MAX_TEST_PAGES] = (i*PGSIZE) | 0x382;
+
+  mtpcr(PCR_PTBR, l1pt);
+  mtpcr(PCR_SR, mfpcr(PCR_SR) | SR_VM | SR_EF);
+
+  if (mfpcr(PCR_SR) & SR_EF)
+    asm volatile ("mtfsr x0");
+
+  // relocate
+  long adjustment = RELOC(0L), tmp;
+  mtpcr(PCR_EVEC, (char*)&trap_entry + adjustment);
+  asm volatile ("add sp, sp, %1; rdpc %0; addi %0, %0, 16; add %0, %0, %1; jr %0" : "=&r"(tmp) : "r"(adjustment));
+
+  memset(RELOC(&l3pt[0]), 0, MAX_TEST_PAGES*sizeof(pte_t));
+  mtpcr(PCR_PTBR, l1pt);
+
+  trapframe_t tf;
+  memset(&tf, 0, sizeof(tf));
+  tf.sr = SR_EF | SR_EV | SR_S | SR_U64 | SR_S64 | SR_VM;
+  tf.epc = test_addr;
+
+  pop_tf(&tf);
+}
diff --git a/isa/macros/scalar/test_macros.h b/isa/macros/scalar/test_macros.h
new file mode 100644 (file)
index 0000000..21ecdce
--- /dev/null
@@ -0,0 +1,690 @@
+#ifndef __TEST_MACROS_SCALAR_H
+#define __TEST_MACROS_SCALAR_H
+
+#define TEST_DATA
+
+#-----------------------------------------------------------------------
+# Helper macros
+#-----------------------------------------------------------------------
+
+#define TEST_CASE( testnum, testreg, correctval, code... ) \
+test_ ## testnum: \
+    code; \
+    li  x29, correctval; \
+    li  x28, testnum; \
+    bne testreg, x29, fail;
+
+#define TEST_CASE_JUMP( testnum, testreg, correctval, code... ) \
+test_ ## testnum: \
+    code; \
+    li  x29, correctval; \
+    li  x28, testnum; \
+    beq testreg, x29, pass_ ## testnum; \
+    j fail; \
+pass_ ## testnum: \
+
+# We use a macro hack to simpify code generation for various numbers
+# of bubble cycles.
+
+#define TEST_INSERT_NOPS_0
+#define TEST_INSERT_NOPS_1  nop; TEST_INSERT_NOPS_0
+#define TEST_INSERT_NOPS_2  nop; TEST_INSERT_NOPS_1
+#define TEST_INSERT_NOPS_3  nop; TEST_INSERT_NOPS_2
+#define TEST_INSERT_NOPS_4  nop; TEST_INSERT_NOPS_3
+#define TEST_INSERT_NOPS_5  nop; TEST_INSERT_NOPS_4
+#define TEST_INSERT_NOPS_6  nop; TEST_INSERT_NOPS_5
+#define TEST_INSERT_NOPS_7  nop; TEST_INSERT_NOPS_6
+#define TEST_INSERT_NOPS_8  nop; TEST_INSERT_NOPS_7
+#define TEST_INSERT_NOPS_9  nop; TEST_INSERT_NOPS_8
+#define TEST_INSERT_NOPS_10 nop; TEST_INSERT_NOPS_9
+
+#-----------------------------------------------------------------------
+# Tests for instructions with immediate operand
+#-----------------------------------------------------------------------
+
+#define TEST_IMM_OP( testnum, inst, result, val1, imm ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x1, val1; \
+      inst x3, x1, imm; \
+    )
+
+#define TEST_IMM_SRC1_EQ_DEST( testnum, inst, result, val1, imm ) \
+    TEST_CASE( testnum, x1, result, \
+      li  x1, val1; \
+      inst x1, x1, imm; \
+    )
+
+#define TEST_IMM_DEST_BYPASS( testnum, nop_cycles, inst, result, val1, imm ) \
+    TEST_CASE( testnum, x6, result, \
+      li  x4, 0; \
+1:    li  x1, val1; \
+      inst x3, x1, imm; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x6, x3, 0; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#define TEST_IMM_SRC1_BYPASS( testnum, nop_cycles, inst, result, val1, imm ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x4, 0; \
+1:    li  x1, val1; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      inst x3, x1, imm; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#define TEST_IMM_ZEROSRC1( testnum, inst, result, imm ) \
+    TEST_CASE( testnum, x1, result, \
+      inst x1, x0, imm; \
+    )
+
+#define TEST_IMM_ZERODEST( testnum, inst, val1, imm ) \
+    TEST_CASE( testnum, x0, 0, \
+      li  x1, val1; \
+      inst x0, x1, imm; \
+    )
+
+#-----------------------------------------------------------------------
+# Tests for vector config instructions
+#-----------------------------------------------------------------------
+
+#define TEST_VVCFGIVL( testnum, nxpr, nfpr, bank, vl, result ) \
+    TEST_CASE_JUMP( testnum, x1, result, \
+      li x2, bank; \
+      mtpcr x2, cr18; \
+      li x1, vl; \
+      vvcfgivl x1,x1,nxpr,nfpr; \
+    )
+
+#define TEST_VVCFG( testnum, nxpr, nfpr, bank, vl, result ) \
+    TEST_CASE_JUMP( testnum, x1, result, \
+      li x2, bank; \
+      mtpcr x2, cr18; \
+      li x1, nxpr; \
+      li x2, nfpr; \
+      vvcfg x1,x2; \
+      li x1, vl; \
+      vsetvl x1,x1; \
+    )
+
+#define TEST_VSETVL( testnum, nxpr, nfpr, bank, vl, result ) \
+    TEST_CASE_JUMP( testnum, x1, result, \
+      li x2, bank; \
+      mtpcr x2, cr18; \
+      vvcfgivl x0,x0,nxpr,nfpr; \
+      li x1, vl; \
+      vsetvl x1, x1; \
+    )
+
+#-----------------------------------------------------------------------
+# Tests for an instruction with register operands
+#-----------------------------------------------------------------------
+
+#define TEST_R_OP( testnum, inst, result, val1 ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x1, val1; \
+      inst x3, x1; \
+    )
+
+#define TEST_R_SRC1_EQ_DEST( testnum, inst, result, val1 ) \
+    TEST_CASE( testnum, x1, result, \
+      li  x1, val1; \
+      inst x1, x1; \
+    )
+
+#define TEST_R_DEST_BYPASS( testnum, nop_cycles, inst, result, val1 ) \
+    TEST_CASE( testnum, x6, result, \
+      li  x4, 0; \
+1:    li  x1, val1; \
+      inst x3, x1; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x6, x3, 0; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#-----------------------------------------------------------------------
+# Tests for an instruction with register-register operands
+#-----------------------------------------------------------------------
+
+#define TEST_RR_OP( testnum, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x3, x1, x2; \
+    )
+
+#define TEST_RR_SRC1_EQ_DEST( testnum, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x1, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x1, x1, x2; \
+    )
+
+#define TEST_RR_SRC2_EQ_DEST( testnum, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x2, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x2, x1, x2; \
+    )
+
+#define TEST_RR_SRC12_EQ_DEST( testnum, inst, result, val1 ) \
+    TEST_CASE( testnum, x1, result, \
+      li  x1, val1; \
+      inst x1, x1, x1; \
+    )
+
+#define TEST_RR_DEST_BYPASS( testnum, nop_cycles, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x6, result, \
+      li  x4, 0; \
+1:    li  x1, val1; \
+      li  x2, val2; \
+      inst x3, x1, x2; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x6, x3, 0; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#define TEST_RR_SRC12_BYPASS( testnum, src1_nops, src2_nops, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x4, 0; \
+1:    li  x1, val1; \
+      TEST_INSERT_NOPS_ ## src1_nops \
+      li  x2, val2; \
+      TEST_INSERT_NOPS_ ## src2_nops \
+      inst x3, x1, x2; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#define TEST_RR_SRC21_BYPASS( testnum, src1_nops, src2_nops, inst, result, val1, val2 ) \
+    TEST_CASE( testnum, x3, result, \
+      li  x4, 0; \
+1:    li  x2, val2; \
+      TEST_INSERT_NOPS_ ## src1_nops \
+      li  x1, val1; \
+      TEST_INSERT_NOPS_ ## src2_nops \
+      inst x3, x1, x2; \
+      addi  x4, x4, 1; \
+      li  x5, 2; \
+      bne x4, x5, 1b \
+    )
+
+#define TEST_RR_ZEROSRC1( testnum, inst, result, val ) \
+    TEST_CASE( testnum, x2, result, \
+      li x1, val; \
+      inst x2, x0, x1; \
+    )
+
+#define TEST_RR_ZEROSRC2( testnum, inst, result, val ) \
+    TEST_CASE( testnum, x2, result, \
+      li x1, val; \
+      inst x2, x1, x0; \
+    )
+
+#define TEST_RR_ZEROSRC12( testnum, inst, result ) \
+    TEST_CASE( testnum, x1, result, \
+      inst x1, x0, x0; \
+    )
+
+#define TEST_RR_ZERODEST( testnum, inst, val1, val2 ) \
+    TEST_CASE( testnum, x0, 0, \
+      li x1, val1; \
+      li x2, val2; \
+      inst x0, x1, x2; \
+    )
+
+#-----------------------------------------------------------------------
+# Test memory instructions
+#-----------------------------------------------------------------------
+
+#define TEST_LD_OP( testnum, inst, result, offset, base ) \
+    TEST_CASE( testnum, x3, result, \
+      la  x1, base; \
+      inst x3, offset(x1); \
+    )
+
+#define TEST_ST_OP( testnum, load_inst, store_inst, result, offset, base ) \
+    TEST_CASE( testnum, x3, result, \
+      la  x1, base; \
+      li  x2, result; \
+      store_inst x2, offset(x1); \
+      load_inst x3, offset(x1); \
+    )
+
+#define TEST_LD_DEST_BYPASS( testnum, nop_cycles, inst, result, offset, base ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x1, base; \
+    inst x3, offset(x1); \
+    TEST_INSERT_NOPS_ ## nop_cycles \
+    addi  x6, x3, 0; \
+    li  x29, result; \
+    bne x6, x29, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b; \
+
+#define TEST_LD_SRC1_BYPASS( testnum, nop_cycles, inst, result, offset, base ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x1, base; \
+    TEST_INSERT_NOPS_ ## nop_cycles \
+    inst x3, offset(x1); \
+    li  x29, result; \
+    bne x3, x29, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#define TEST_ST_SRC12_BYPASS( testnum, src1_nops, src2_nops, load_inst, store_inst, result, offset, base ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x1, result; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    la  x2, base; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    store_inst x1, offset(x2); \
+    load_inst x3, offset(x2); \
+    li  x29, result; \
+    bne x3, x29, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#define TEST_ST_SRC21_BYPASS( testnum, src1_nops, src2_nops, load_inst, store_inst, result, offset, base ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x2, base; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    la  x1, result; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    store_inst x1, offset(x2); \
+    load_inst x3, offset(x2); \
+    li  x29, result; \
+    bne x3, x29, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#-----------------------------------------------------------------------
+# Test branch instructions
+#-----------------------------------------------------------------------
+
+#define TEST_BR1_OP_TAKEN( testnum, inst, val1 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x1, val1; \
+    inst x1, 2f; \
+    bne x0, x28, fail; \
+1:  bne x0, x28, 3f; \
+2:  inst x1, 1b; \
+    bne x0, x28, fail; \
+3:
+
+#define TEST_BR1_OP_NOTTAKEN( testnum, inst, val1 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x1, val1; \
+    inst x1, 1f; \
+    bne x0, x28, 2f; \
+1:  bne x0, x28, fail; \
+2:  inst x1, 1b; \
+3:
+
+#define TEST_BR1_SRC1_BYPASS( testnum, nop_cycles, inst, val1 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  li  x1, val1; \
+    TEST_INSERT_NOPS_ ## nop_cycles \
+    inst x1, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#define TEST_BR2_OP_TAKEN( testnum, inst, val1, val2 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x1, val1; \
+    li  x2, val2; \
+    inst x1, x2, 2f; \
+    bne x0, x28, fail; \
+1:  bne x0, x28, 3f; \
+2:  inst x1, x2, 1b; \
+    bne x0, x28, fail; \
+3:
+
+#define TEST_BR2_OP_NOTTAKEN( testnum, inst, val1, val2 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x1, val1; \
+    li  x2, val2; \
+    inst x1, x2, 1f; \
+    bne x0, x28, 2f; \
+1:  bne x0, x28, fail; \
+2:  inst x1, x2, 1b; \
+3:
+
+#define TEST_BR2_SRC12_BYPASS( testnum, src1_nops, src2_nops, inst, val1, val2 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  li  x1, val1; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    li  x2, val2; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    inst x1, x2, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#define TEST_BR2_SRC21_BYPASS( testnum, src1_nops, src2_nops, inst, val1, val2 ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  li  x2, val2; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    li  x1, val1; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    inst x1, x2, fail; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#-----------------------------------------------------------------------
+# Test jump instructions
+#-----------------------------------------------------------------------
+
+#define TEST_JR_SRC1_BYPASS( testnum, nop_cycles, inst ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x6, 2f; \
+    TEST_INSERT_NOPS_ ## nop_cycles \
+    inst x6; \
+    bne x0, x28, fail; \
+2:  addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#define TEST_JALR_SRC1_BYPASS( testnum, nop_cycles, inst ) \
+test_ ## testnum: \
+    li  x28, testnum; \
+    li  x4, 0; \
+1:  la  x6, 2f; \
+    TEST_INSERT_NOPS_ ## nop_cycles \
+    inst x19, x6, 0; \
+    bne x0, x28, fail; \
+2:  addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b \
+
+#-----------------------------------------------------------------------
+# Tests floating-point instructions
+#-----------------------------------------------------------------------
+
+#define TEST_FP_OP_S_INTERNAL( testnum, result, val1, val2, val3, code... ) \
+test_ ## testnum: \
+  li  x28, testnum; \
+  la  a0, test_ ## testnum ## _data ;\
+  flw f0, 0(a0); \
+  flw f1, 4(a0); \
+  flw f2, 8(a0); \
+  lw  a3, 12(a0); \
+  code; \
+  bne a0, a3, fail; \
+  b 1f; \
+  .align 2; \
+  test_ ## testnum ## _data: \
+  .float val1; \
+  .float val2; \
+  .float val3; \
+  .result; \
+1:
+
+#define TEST_FP_OP_D_INTERNAL( testnum, result, val1, val2, val3, code... ) \
+test_ ## testnum: \
+  li  x28, testnum; \
+  la  a0, test_ ## testnum ## _data ;\
+  fld f0, 0(a0); \
+  fld f1, 8(a0); \
+  fld f2, 16(a0); \
+  ld  a3, 24(a0); \
+  code; \
+  bne a0, a3, fail; \
+  b 1f; \
+  .align 3; \
+  test_ ## testnum ## _data: \
+  .double val1; \
+  .double val2; \
+  .double val3; \
+  .result; \
+1:
+
+#define TEST_FCVT_S_D( testnum, result, val1 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, double result, val1, 0.0, 0.0, \
+                    fcvt.s.d f3, f0; fcvt.d.s f3, f3; mftx.d a0, f3)
+
+#define TEST_FCVT_D_S( testnum, result, val1 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, float result, val1, 0.0, 0.0, \
+                    fcvt.d.s f3, f0; fcvt.s.d f3, f3; mftx.s a0, f3)
+
+#define TEST_FP_OP1_S( testnum, inst, result, val1 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, float result, val1, 0.0, 0.0, \
+                    inst f3, f0; mftx.s a0, f3)
+
+#define TEST_FP_OP1_D( testnum, inst, result, val1 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, double result, val1, 0.0, 0.0, \
+                    inst f3, f0; mftx.d a0, f3)
+
+#define TEST_FP_OP2_S( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, float result, val1, val2, 0.0, \
+                    inst f3, f0, f1; mftx.s a0, f3)
+
+#define TEST_FP_OP2_D( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, double result, val1, val2, 0.0, \
+                    inst f3, f0, f1; mftx.d a0, f3)
+
+#define TEST_FP_OP3_S( testnum, inst, result, val1, val2, val3 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, float result, val1, val2, val3, \
+                    inst f3, f0, f1, f2; mftx.s a0, f3)
+
+#define TEST_FP_OP3_D( testnum, inst, result, val1, val2, val3 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, double result, val1, val2, val3, \
+                    inst f3, f0, f1, f2; mftx.d a0, f3)
+
+#define TEST_FP_INT_OP_S( testnum, inst, result, val1, rm ) \
+  TEST_FP_OP_S_INTERNAL( testnum, word result, val1, 0.0, 0.0, \
+                    inst a0, f0, rm)
+
+#define TEST_FP_INT_OP_D( testnum, inst, result, val1, rm ) \
+  TEST_FP_OP_D_INTERNAL( testnum, dword result, val1, 0.0, 0.0, \
+                    inst a0, f0, rm)
+
+#define TEST_FP_CMP_OP_S( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, word result, val1, val2, 0.0, \
+                    inst a0, f0, f1)
+
+#define TEST_FP_CMP_OP_D( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, dword result, val1, val2, 0.0, \
+                    inst a0, f0, f1)
+
+#define TEST_INT_FP_OP_S( testnum, inst, result, val1 ) \
+test_ ## testnum: \
+  li  x28, testnum; \
+  la  a0, test_ ## testnum ## _data ;\
+  lw  a3, 0(a0); \
+  li  a0, val1; \
+  inst f0, a0; \
+  mftx.s a0, f0; \
+  bne a0, a3, fail; \
+  b 1f; \
+  .align 2; \
+  test_ ## testnum ## _data: \
+  .float result; \
+1:
+
+#define TEST_INT_FP_OP_D( testnum, inst, result, val1 ) \
+test_ ## testnum: \
+  li  x28, testnum; \
+  la  a0, test_ ## testnum ## _data ;\
+  ld  a3, 0(a0); \
+  li  a0, val1; \
+  inst f0, a0; \
+  mftx.d a0, f0; \
+  bne a0, a3, fail; \
+  b 1f; \
+  .align 3; \
+  test_ ## testnum ## _data: \
+  .double result; \
+1:
+
+#define TEST_ILLEGAL_VT_REGID( testnum, nxreg, nfreg, inst, reg1, reg2, reg3) \
+  mfpcr a0,cr0; \
+  li a1,1; \
+  slli a3,a1,8; \
+  or a0,a0,a1; \
+  mtpcr a0,cr0; \
+  la a0, handler ## testnum; \
+  mtpcr a0, cr3; \
+  li a0, 4; \
+  vvcfgivl a0, a0, nxreg, nfreg; \
+  la a0, src1; \
+  la a1, src2; \
+  vld vx2, a0; \
+  vld vx3, a1; \
+  lui a0,%hi(vtcode1 ## testnum); \
+  vf %lo(vtcode1 ## testnum)(a0); \
+  la a3, dest; \
+  vsd vx2, a3; \
+  fence.v.l; \
+vtcode1 ## testnum: \
+  add x2, x2, x3; \
+illegal ## testnum: \
+  inst reg1, reg2, reg3; \
+  stop; \
+vtcode2 ## testnum: \
+  add x2, x2, x3; \
+  stop; \
+handler ## testnum: \
+  vxcptkill; \
+  li x28,2; \
+  mfpcr a0,cr6; \
+  li a1,26; \
+  bne a0,a1,fail; \
+  mfpcr a0,cr2; \
+  la a1,illegal ## testnum; \
+  bne a0,a1,fail; \
+  li a0,4; \
+  vvcfgivl a0,a0,32,0; \
+  la a0,src1; \
+  la a1,src2; \
+  vld vx2,a0; \
+  vld vx3,a1; \
+  lui a0,%hi(vtcode2 ## testnum); \
+  vf %lo(vtcode2 ## testnum)(a0); \
+  la a3,dest; \
+  vsd vx2,a3; \
+  fence.v.l; \
+  ld a1,0(a3); \
+  li a2,5; \
+  li x28,2; \
+  bne a1,a2,fail; \
+  ld a1,8(a3); \
+  li x28,3; \
+  bne a1,a2,fail; \
+  ld a1,16(a3); \
+  li x28,4; \
+  bne a1,a2,fail; \
+  ld a1,24(a3); \
+  li x28,5; \
+  bne a1,a2,fail; \
+
+#define TEST_ILLEGAL_TVEC_REGID( testnum, nxreg, nfreg, inst, reg1, reg2, aux) \
+  mfpcr a0,cr0; \
+  li a1,1; \
+  slli a2,a1,8; \
+  or a0,a0,a1; \
+  mtpcr a0,cr0; \
+  la a0, handler ## testnum; \
+  mtpcr a0, cr3; \
+  li a0, 4; \
+  vvcfgivl a0, a0, nxreg, nfreg; \
+  la a0, src1; \
+  la a1, src2; \
+  vld vx2, a0; \
+  vld vx3, a1; \
+  lui a0,%hi(vtcode1 ## testnum); \
+  vf %lo(vtcode1 ## testnum)(a0); \
+  la reg2, dest; \
+illegal ## testnum: \
+  inst reg1, reg2; \
+  la a3, dest; \
+  vsd vx2, a3; \
+  fence.v.l; \
+vtcode1 ## testnum: \
+  add x2, x2, x3; \
+  stop; \
+vtcode2 ## testnum: \
+  add x2, x2, x3; \
+  stop; \
+handler ## testnum: \
+  vxcptkill; \
+  li x28,2; \
+  mfpcr a0,cr6; \
+  li a1,27; \
+  bne a0,a1,fail; \
+  mfpcr a0, cr2; \
+  li a1, aux; \
+  bne a0, a1, fail; \
+  li a0,4; \
+  vvcfgivl a0,a0,32,0; \
+  la a0,src1; \
+  la a1,src2; \
+  vld vx2,a0; \
+  vld vx3,a1; \
+  lui a0,%hi(vtcode2 ## testnum); \
+  vf %lo(vtcode2 ## testnum)(a0); \
+  la a3,dest; \
+  vsd vx2,a3; \
+  fence.v.l; \
+  ld a1,0(a3); \
+  li a2,5; \
+  li x28,2; \
+  bne a1,a2,fail; \
+  ld a1,8(a3); \
+  li x28,3; \
+  bne a1,a2,fail; \
+  ld a1,16(a3); \
+  li x28,4; \
+  bne a1,a2,fail; \
+  ld a1,24(a3); \
+  li x28,5; \
+  bne a1,a2,fail; \
+
+#-----------------------------------------------------------------------
+# Pass and fail code (assumes test num is in x28)
+#-----------------------------------------------------------------------
+
+
+#define TEST_PASSFAIL \
+        bne x0, x28, pass; \
+fail: \
+        RVTEST_FAIL \
+pass: \
+        RVTEST_PASS \
+
+#endif
diff --git a/isa/macros/vector/test_macros.h b/isa/macros/vector/test_macros.h
new file mode 100644 (file)
index 0000000..a367291
--- /dev/null
@@ -0,0 +1,584 @@
+#ifndef __TEST_MACROS_VECTOR_H
+#define __TEST_MACROS_VECTOR_H
+
+#define TEST_DATA \
+        .data; \
+        .align 3; \
+dst: \
+        .skip 16384; \
+
+#-----------------------------------------------------------------------
+# Helper macros
+#-----------------------------------------------------------------------
+
+#define TEST_CASE( testnum, testreg, correctval, code... ) \
+  TEST_CASE_NREG( testnum, 32, 32, testreg, correctval, code )
+
+# We use j fail, because for some cases branches are not enough to jump to fail
+
+#define TEST_CASE_NREG( testnum, nxreg, nfreg, testreg, correctval, code... ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,nxreg,nfreg; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  vsd v ## testreg, a4; \
+  fence.v.l; \
+  li a1,correctval; \
+  li a2,0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  ld a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,8; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  j next ## testnum; \
+vtcode ## testnum : \
+  code; \
+  stop; \
+next ## testnum :
+
+# We use a macro hack to simpify code generation for various numbers
+# of bubble cycles.
+
+#define TEST_INSERT_NOPS_0
+#define TEST_INSERT_NOPS_1  nop; TEST_INSERT_NOPS_0
+#define TEST_INSERT_NOPS_2  nop; TEST_INSERT_NOPS_1
+#define TEST_INSERT_NOPS_3  nop; TEST_INSERT_NOPS_2
+#define TEST_INSERT_NOPS_4  nop; TEST_INSERT_NOPS_3
+#define TEST_INSERT_NOPS_5  nop; TEST_INSERT_NOPS_4
+#define TEST_INSERT_NOPS_6  nop; TEST_INSERT_NOPS_5
+#define TEST_INSERT_NOPS_7  nop; TEST_INSERT_NOPS_6
+#define TEST_INSERT_NOPS_8  nop; TEST_INSERT_NOPS_7
+#define TEST_INSERT_NOPS_9  nop; TEST_INSERT_NOPS_8
+#define TEST_INSERT_NOPS_10 nop; TEST_INSERT_NOPS_9
+
+#-----------------------------------------------------------------------
+# Tests for instructions with immediate operand
+#-----------------------------------------------------------------------
+
+#define TEST_IMM_OP( testnum, inst, result, val1, imm ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x1, val1; \
+      inst x3, x1, imm; \
+    )
+
+#define TEST_IMM_SRC1_EQ_DEST( testnum, inst, result, val1, imm ) \
+    TEST_CASE_NREG( testnum, 2, 0, x1, result, \
+      li  x1, val1; \
+      inst x1, x1, imm; \
+    )
+
+#define TEST_IMM_DEST_BYPASS( testnum, nop_cycles, inst, result, val1, imm ) \
+    TEST_CASE_NREG( testnum, 5, 0, x4, result, \
+      li  x1, val1; \
+      inst x3, x1, imm; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x4, x3, 0; \
+    )
+
+#define TEST_IMM_SRC1_BYPASS( testnum, nop_cycles, inst, result, val1, imm ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x1, val1; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      inst x3, x1, imm; \
+    )
+
+#define TEST_IMM_ZEROSRC1( testnum, inst, result, imm ) \
+    TEST_CASE_NREG( testnum, 2, 0, x1, result, \
+      inst x1, x0, imm; \
+    )
+
+#define TEST_IMM_ZERODEST( testnum, inst, val1, imm ) \
+    TEST_CASE_NREG( testnum, 2, 0, x0, 0, \
+      li  x1, val1; \
+      inst x0, x1, imm; \
+    )
+
+#-----------------------------------------------------------------------
+# Tests for an instruction with register operands
+#-----------------------------------------------------------------------
+
+#define TEST_R_OP( testnum, inst, result, val1 ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x1, val1; \
+      inst x3, x1; \
+    )
+
+#define TEST_R_SRC1_EQ_DEST( testnum, inst, result, val1 ) \
+    TEST_CASE_NREG( testnum, 2, 0, x1, result, \
+      li  x1, val1; \
+      inst x1, x1; \
+    )
+
+#define TEST_R_DEST_BYPASS( testnum, nop_cycles, inst, result, val1 ) \
+    TEST_CASE_NREG( testnum, 5, 0, x4, result, \
+      li  x1, val1; \
+      inst x3, x1; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x4, x3, 0; \
+    )
+
+#-----------------------------------------------------------------------
+# Tests for an instruction with register-register operands
+#-----------------------------------------------------------------------
+
+#define TEST_RR_OP( testnum, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x3, x1, x2; \
+    )
+
+#define TEST_RR_SRC1_EQ_DEST( testnum, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 3, 0, x1, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x1, x1, x2; \
+    )
+
+#define TEST_RR_SRC2_EQ_DEST( testnum, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 3, 0, x2, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x2, x1, x2; \
+    )
+
+#define TEST_RR_SRC12_EQ_DEST( testnum, inst, result, val1 ) \
+    TEST_CASE_NREG( testnum, 2, 0, x1, result, \
+      li  x1, val1; \
+      inst x1, x1, x1; \
+    )
+
+#define TEST_RR_DEST_BYPASS( testnum, nop_cycles, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 5, 0, x4, result, \
+      li  x1, val1; \
+      li  x2, val2; \
+      inst x3, x1, x2; \
+      TEST_INSERT_NOPS_ ## nop_cycles \
+      addi  x4, x3, 0; \
+    )
+
+#define TEST_RR_SRC12_BYPASS( testnum, src1_nops, src2_nops, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x1, val1; \
+      TEST_INSERT_NOPS_ ## src1_nops \
+      li  x2, val2; \
+      TEST_INSERT_NOPS_ ## src2_nops \
+      inst x3, x1, x2; \
+    )
+
+#define TEST_RR_SRC21_BYPASS( testnum, src1_nops, src2_nops, inst, result, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, result, \
+      li  x2, val2; \
+      TEST_INSERT_NOPS_ ## src1_nops \
+      li  x1, val1; \
+      TEST_INSERT_NOPS_ ## src2_nops \
+      inst x3, x1, x2; \
+    )
+
+#define TEST_RR_ZEROSRC1( testnum, inst, result, val ) \
+    TEST_CASE_NREG( testnum, 3, 0, x2, result, \
+      li x1, val; \
+      inst x2, x0, x1; \
+    )
+
+#define TEST_RR_ZEROSRC2( testnum, inst, result, val ) \
+    TEST_CASE_NREG( testnum, 3, 0, x2, result, \
+      li x1, val; \
+      inst x2, x1, x0; \
+    )
+
+#define TEST_RR_ZEROSRC12( testnum, inst, result ) \
+    TEST_CASE_NREG( testnum, 2, 0, x1, result, \
+      inst x1, x0, x0; \
+    )
+
+#define TEST_RR_ZERODEST( testnum, inst, val1, val2 ) \
+    TEST_CASE_NREG( testnum, 3, 0, x0, 0, \
+      li x1, val1; \
+      li x2, val2; \
+      inst x0, x1, x2; \
+    )
+
+#-----------------------------------------------------------------------
+# Test branch instructions
+#-----------------------------------------------------------------------
+
+#define TEST_BR2_OP_TAKEN( testnum, inst, val1, val2) \
+    TEST_CASE_NREG( testnum, 4, 0, x3, 0, \
+      li x1, val1; \
+      li x2, val2; \
+      add x3, x0, x0; \
+      inst x1, x2, 2f; \
+      addi x3, x3, 1; \
+1:    j 3f; \
+      addi x3, x3, 4; \
+2:    inst x1, x2, 1b; \
+      addi x3, x3, 2; \
+3: \
+    )
+
+#define TEST_BR2_OP_NOTTAKEN( testnum, inst, val1, val2 ) \
+  TEST_CASE_NREG( testnum, 4, 0, x3, 0, \
+    li  x1, val1; \
+    li  x2, val2; \
+    add x3, x0, x0; \
+    inst x1, x2, 1f; \
+    j 2f; \
+1:  addi x3, x3, 1; \
+    j 3f; \
+2:  inst x1, x2, 1b; \
+3: \
+                  )
+
+#define TEST_BR2_SRC12_BYPASS( testnum, src1_nops, src2_nops, inst, val1, val2 ) \
+  TEST_CASE_NREG( testnum, 6, 0, x3, 0, \
+    add x3, x0, x0; \
+    li  x4, 0; \
+1:  li  x1, val1; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    li  x2, val2; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    inst x1, x2, 2f; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x5, 1b; \
+    j 3f; \
+2:  add x3, x3, 1; \
+3:  \
+  )
+
+#define TEST_BR2_SRC21_BYPASS( testnum, src1_nops, src2_nops, inst, val1, val2 ) \
+  TEST_CASE_NREG( testnum, 6, 0, x3, 0, \
+    add x3, x0, x0; \
+    li  x4, 0; \
+1:  li  x2, val2; \
+    TEST_INSERT_NOPS_ ## src1_nops \
+    li  x1, val1; \
+    TEST_INSERT_NOPS_ ## src2_nops \
+    inst x1, x2, 2f; \
+    addi  x4, x4, 1; \
+    li  x5, 2; \
+    bne x4, x4, 1b; \
+    j 3f; \
+2:  add x3, x3, 1; \
+3: \
+                  )
+
+#define TEST_BR2_DIVERGED_ODD_EVEN( testnum, inst, n, result, code...)   \
+  TEST_CASE_NREG( testnum, 5, 0, x3, result, \
+    utidx x1; \
+    andi x2, x1, 1;\
+    add x3, x0, x0; \
+    li x4, n; \
+1: \
+    beq x0, x2, 2f; \
+    code; \
+    j 3f; \
+2: \
+    code; \
+3: \
+    addi x4, x4, -1; \
+    bne x4, x0, 1b; \
+                  )
+
+#define TEST_BR2_DIVERGED_FULL12( testnum, inst, n, result, code... )    \
+  TEST_CASE_NREG( testnum, 5, 0, x3, result, \
+    utidx x1; \
+    sltiu x2, x1, 1; \
+    add x3, x0, x0; \
+    li x4, n; \
+1: \
+    inst x2, x4, 2f; \
+    addi x1, x1, -1; \
+    sltiu x2, x1, 1; \
+    j 1b; \
+2: \
+    code; \
+                 )
+
+#define TEST_BR2_DIVERGED_FULL21( testnum, inst, n, result, code... )    \
+  TEST_CASE_NREG( testnum, 5, 0, x3, result, \
+    utidx x1; \
+    sltiu x2, x1, 1; \
+    add x3, x0, x0; \
+    li x4, n; \
+1: \
+    inst x4, x2, 2f; \
+    addi x1, x1, -1; \
+    sltiu x2, x1, 1; \
+    j 1b; \
+2: \
+    code; \
+                 )
+
+#define TEST_CASE_NREG_MEM( testnum, nxreg, nfreg, correctval, code... ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,nxreg,nfreg; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  fence.v.l; \
+  li a1,correctval; \
+  li a2,0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  ld a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,8; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  j next ## testnum; \
+vtcode ## testnum : \
+  code; \
+  stop; \
+next ## testnum :
+
+#define TEST_BR2_DIVERGED_MEM_FULL12( testnum, inst, n) \
+  TEST_CASE_NREG_MEM( testnum, 7, 0, 1, \
+    utidx x5; \
+    slli x5, x5, 3; \
+    la x6, dst; \
+    add x5, x5, x6; \
+    sd x0, 0(x5); \
+    utidx x1; \
+    sltiu x2, x1, 1; \
+    li x4, n; \
+1: \
+    inst x2, x4, 2f; \
+    addi x1, x1, -1; \
+    sltiu x2, x1, 1; \
+    j 1b; \
+2: \
+    ld x3, 0(x5); \
+    addi x3, x3, 1; \
+    sd x3, 0(x5); \
+                 )
+
+#define TEST_BR2_DIVERGED_MEM_FULL21( testnum, inst, n) \
+  TEST_CASE_NREG_MEM( testnum, 7, 0, 1, \
+    utidx x5; \
+    slli x5, x5, 3; \
+    la x6, dst; \
+    add x5, x5, x6; \
+    sd x0, 0(x5); \
+    utidx x1; \
+    sltiu x2, x1, 1; \
+    li x4, n; \
+1: \
+    inst x4, x2, 2f; \
+    addi x1, x1, -1; \
+    sltiu x2, x1, 1; \
+    j 1b; \
+2: \
+    ld x3, 0(x5); \
+    addi x3, x3, 1; \
+    sd x3, 0(x5); \
+                 )
+
+#-----------------------------------------------------------------------
+# Tests floating-point instructions
+#-----------------------------------------------------------------------
+
+#define TEST_FP_OP_S_INTERNAL_NREG( testnum, nxreg, nfreg, result, val1, val2, val3, code... ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,nxreg,nfreg; \
+  la  a5, test_ ## testnum ## _data ;\
+  vflstw vf0, a5, x0; \
+  addi a5,a5,4; \
+  vflstw vf1, a5, x0; \
+  addi a5,a5,4; \
+  vflstw vf2, a5, x0; \
+  addi a5,a5,4; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  vsw vx1, a4; \
+  fence.v.l; \
+  lw  a1, 0(a5); \
+  li a2, 0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  lw a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,4; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  b 1f; \
+vtcode ## testnum : \
+  code; \
+  stop; \
+  .align 2; \
+  test_ ## testnum ## _data: \
+  .float val1; \
+  .float val2; \
+  .float val3; \
+  .result; \
+1:
+
+#define TEST_FP_OP_D_INTERNAL_NREG( testnum, nxreg, nfreg, result, val1, val2, val3, code... ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,nxreg,nfreg; \
+  la  a5, test_ ## testnum ## _data ;\
+  vflstd vf0, a5, x0; \
+  addi a5,a5,8; \
+  vflstd vf1, a5, x0; \
+  addi a5,a5,8; \
+  vflstd vf2, a5, x0; \
+  addi a5,a5,8; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  vsd vx1, a4; \
+  fence.v.l; \
+  ld  a1, 0(a5); \
+  li a2, 0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  ld a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,8; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  b 1f; \
+vtcode ## testnum : \
+  code; \
+  stop; \
+  .align 3; \
+  test_ ## testnum ## _data: \
+  .double val1; \
+  .double val2; \
+  .double val3; \
+  .result; \
+1:
+
+#define TEST_FCVT_S_D( testnum, result, val1 ) \
+  TEST_FP_OP_D_INTERNAL_NREG( testnum, 2, 4, double result, val1, 0.0, 0.0, \
+                    fcvt.s.d f3, f0; fcvt.d.s f3, f3; mftx.d x1, f3)
+
+#define TEST_FCVT_D_S( testnum, result, val1 ) \
+  TEST_FP_OP_S_INTERNAL_NREG( testnum, 2, 4, float result, val1, 0.0, 0.0, \
+                    fcvt.d.s f3, f0; fcvt.s.d f3, f3; mftx.s x1, f3)
+
+#define TEST_FP_OP2_S( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_S_INTERNAL_NREG( testnum, 2, 4, float result, val1, val2, 0.0, \
+                    inst f3, f0, f1; mftx.s x1, f3)
+
+#define TEST_FP_OP2_D( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_D_INTERNAL_NREG( testnum, 2, 4, double result, val1, val2, 0.0, \
+                    inst f3, f0, f1; mftx.d x1, f3)
+
+#define TEST_FP_OP3_S( testnum, inst, result, val1, val2, val3 ) \
+  TEST_FP_OP_S_INTERNAL_NREG( testnum, 2, 4, float result, val1, val2, val3, \
+                    inst f3, f0, f1, f2; mftx.s x1, f3)
+
+#define TEST_FP_OP3_D( testnum, inst, result, val1, val2, val3 ) \
+  TEST_FP_OP_D_INTERNAL_NREG( testnum, 2, 4, double result, val1, val2, val3, \
+                    inst f3, f0, f1, f2; mftx.d x1, f3)
+
+#define TEST_FP_INT_OP_S( testnum, inst, result, val1, rm ) \
+  TEST_FP_OP_S_INTERNAL_NREG( testnum, 2, 4, word result, val1, 0.0, 0.0, \
+                    inst x1, f0, rm)
+
+#define TEST_FP_INT_OP_D( testnum, inst, result, val1, rm ) \
+  TEST_FP_OP_D_INTERNAL_NREG( testnum, 2, 4, dword result, val1, 0.0, 0.0, \
+                    inst x1, f0, rm)
+
+#define TEST_FP_CMP_OP_S( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_S_INTERNAL_NREG( testnum, 2, 4, word result, val1, val2, 0.0, \
+                    inst x1, f0, f1)
+
+#define TEST_FP_CMP_OP_D( testnum, inst, result, val1, val2 ) \
+  TEST_FP_OP_D_INTERNAL_NREG( testnum, 2, 4, dword result, val1, val2, 0.0, \
+                    inst x1, f0, f1)
+
+#define TEST_INT_FP_OP_S( testnum, inst, result, val1 ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,2,1; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  vsw vx1, a4; \
+  fence.v.l; \
+  la  a5, test_ ## testnum ## _data ;\
+  lw  a1, 0(a5); \
+  li a2, 0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  lw a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,4; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  b 1f; \
+vtcode ## testnum : \
+  li x1, val1; \
+  inst f0, x1; \
+  mftx.s x1, f0; \
+  stop; \
+  .align 2; \
+  test_ ## testnum ## _data: \
+  .float result; \
+1:
+
+#define TEST_INT_FP_OP_D( testnum, inst, result, val1 ) \
+test_ ## testnum: \
+  li a3,2048; \
+  vvcfgivl a3,a3,2,1; \
+  lui a0,%hi(vtcode ## testnum ); \
+  vf %lo(vtcode ## testnum )(a0); \
+  la a4,dst; \
+  vsd vx1, a4; \
+  fence.v.l; \
+  la  a5, test_ ## testnum ## _data ;\
+  ld  a1, 0(a5); \
+  li a2, 0; \
+  li x28, testnum; \
+test_loop ## testnum: \
+  ld a0,0(a4); \
+  beq a0,a1,skip ## testnum; \
+  j fail; \
+skip ## testnum : \
+  addi a4,a4,8; \
+  addi a2,a2,1; \
+  bne a2,a3,test_loop ## testnum; \
+  b 1f; \
+vtcode ## testnum : \
+  li x1, val1; \
+  inst f0, x1; \
+  mftx.d x1, f0; \
+  stop; \
+  .align 3; \
+  test_ ## testnum ## _data: \
+  .double result; \
+1:
+
+#-----------------------------------------------------------------------
+# Pass and fail code (assumes test num is in x28)
+#-----------------------------------------------------------------------
+
+#define TEST_PASSFAIL \
+        bne x0, x28, pass; \
+fail: \
+        RVTEST_FAIL \
+pass: \
+        RVTEST_PASS \
+
+#endif
diff --git a/isa/rv64si/Makefile b/isa/rv64si/Makefile
new file mode 100644 (file)
index 0000000..c6db077
--- /dev/null
@@ -0,0 +1,99 @@
+#=======================================================================
+# Makefile for riscv-tests
+#-----------------------------------------------------------------------
+
+default: all
+
+#--------------------------------------------------------------------
+# Sources
+#--------------------------------------------------------------------
+
+rv64si_sc_tests = \
+       coreid \
+
+rv64si_mc_tests = \
+       ipi \
+
+rv64si_sc_vec_tests = \
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+RISCV_GCC = riscv-gcc
+RISCV_GCC_OPTS = -nostdlib -nostartfiles
+RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
+RISCV_SIM = riscv-isa-run
+
+#------------------------------------------------------------
+# Build assembly tests
+
+%.hex: %
+       elf2hex 16 16384 $< > $@
+
+%.dump: %
+       $(RISCV_OBJDUMP) $< > $@
+
+%.out: %
+       $(RISCV_SIM) $< 2> $@
+
+rv64si_p_tests_bin = $(addprefix rv64si-p-, $(rv64si_sc_tests))
+rv64si_p_tests_dump = $(addsuffix .dump, $(rv64si_p_tests_bin))
+rv64si_p_tests_hex = $(addsuffix .hex, $(rv64si_p_tests_bin))
+rv64si_p_tests_out  = $(addsuffix .out,  $(rv64si_p_tests_bin))
+
+$(rv64si_p_tests_bin): rv64si-p-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
+
+rv64si_pm_tests_bin = $(addprefix rv64si-pm-, $(rv64si_mc_tests))
+rv64si_pm_tests_dump = $(addsuffix .dump, $(rv64si_pm_tests_bin))
+rv64si_pm_tests_hex = $(addsuffix .hex, $(rv64si_pm_tests_bin))
+rv64si_pm_tests_out  = $(addsuffix .out,  $(rv64si_pm_tests_bin))
+
+$(rv64si_pm_tests_bin): rv64si-pm-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
+
+rv64si_p_vec_tests_bin = $(addprefix rv64si-p-vec-, $(rv64si_sc_vec_tests))
+rv64si_p_vec_tests_dump = $(addsuffix .dump, $(rv64si_p_vec_tests_bin))
+rv64si_p_vec_tests_hex = $(addsuffix .hex, $(rv64si_p_vec_tests_bin))
+rv64si_p_vec_tests_out  = $(addsuffix .out,  $(rv64si_p_vec_tests_bin))
+
+$(rv64si_p_vec_tests_bin): rv64si-p-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
+
+rv64si_pt_vec_tests_bin = $(addprefix rv64si-pt-vec-, $(rv64si_sc_vec_tests))
+rv64si_pt_vec_tests_dump = $(addsuffix .dump, $(rv64si_pt_vec_tests_bin))
+rv64si_pt_vec_tests_hex = $(addsuffix .hex, $(rv64si_pt_vec_tests_bin))
+rv64si_pt_vec_tests_out  = $(addsuffix .out,  $(rv64si_pt_vec_tests_bin))
+
+$(rv64si_pt_vec_tests_bin): rv64si-pt-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
+
+riscv-: \
+       $(rv64si_p_tests_dump) $(rv64si_p_tests_hex) \
+       $(rv64si_pm_tests_dump) $(rv64si_pm_tests_hex) \
+       $(rv64si_p_vec_tests_dump) $(rv64si_p_vec_tests_hex) \
+       $(rv64si_pt_vec_tests_dump) $(rv64si_pt_vec_tests_hex) \
+
+out = $(rv64si_p_tests_out) $(rv64si_pm_tests_out) $(rv64si_p_vec_tests_out)
+
+run: $(out)
+       echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
+              $(out); echo;
+
+junk += \
+  $(rv64si_p_tests_bin) $(rv64si_p_tests_dump) $(rv64si_p_tests_hex) $(rv64si_p_tests_out) \
+  $(rv64si_pm_tests_bin) $(rv64si_pm_tests_dump) $(rv64si_pm_tests_hex) $(rv64si_pm_tests_out) \
+  $(rv64si_p_vec_tests_bin) $(rv64si_p_vec_tests_dump) $(rv64si_p_vec_tests_hex) $(rv64si_p_vec_tests_out) \
+  $(rv64si_pt_vec_tests_bin) $(rv64si_pt_vec_tests_dump) $(rv64si_pt_vec_tests_hex) $(rv64si_pt_vec_tests_out) \
+
+#------------------------------------------------------------
+# Default
+
+all: riscv-
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+       rm -rf $(junk)
diff --git a/isa/rv64si/coreid.S b/isa/rv64si/coreid.S
new file mode 100644 (file)
index 0000000..2b7ffc3
--- /dev/null
@@ -0,0 +1,29 @@
+#*****************************************************************************
+# coreid.S
+#-----------------------------------------------------------------------------
+#
+# Test coreid.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_CASE( 2, x1, 0x0, mfpcr x1, cr12 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64si/ipi.S b/isa/rv64si/ipi.S
new file mode 100644 (file)
index 0000000..92ae149
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# ipi.S
+#-----------------------------------------------------------------------------
+#
+# Test interprocessor interrupts.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  # clear pending IPIs then enable interrupts
+  la a0, handler
+  mtpcr a0, cr3
+  mtpcr x0, cr9
+  mfpcr a0, cr0
+  li a1, 0x00ff0001
+  or a0, a0, a1
+  mtpcr a0, cr0
+
+  # wait for all cores to boot
+  la a0, coreid
+  li a1, 1
+  amoadd.w x0, a1, 0(a0)
+  lw a3, 4(x0)
+  1: lw a1, 0(a0)
+  blt a1, a3, 1b
+
+  # IPI dominoes
+  mfpcr a0, cr10
+  1: bnez a0, 1b
+  add a0, a0, 1
+  rem a0, a0, a3
+  mtpcr a0, cr8
+  1: b 1b
+
+  handler:
+  mfpcr a0, cr10
+  bnez a0, 2f
+  RVTEST_PASS
+
+  TEST_PASSFAIL
+
+  2: add a0, a0, 1
+  rem a0, a0, a3
+  mtpcr a0, cr8
+  1: b 1b
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+coreid: .word 0
+foo: .word 0
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/Makefile b/isa/rv64sv/Makefile
new file mode 100644 (file)
index 0000000..670f8d9
--- /dev/null
@@ -0,0 +1,101 @@
+#=======================================================================
+# Makefile for riscv-tests
+#-----------------------------------------------------------------------
+
+default: all
+
+#--------------------------------------------------------------------
+# Sources
+#--------------------------------------------------------------------
+
+rv64sv_sc_tests = \
+       illegal_tvec_cmd illegal_tvec_regid \
+       illegal_vt_inst illegal_vt_regid \
+       ma_utld ma_utsd ma_vld ma_vsd \
+       ma_vt_inst \
+
+rv64sv_mc_tests = \
+
+rv64sv_sc_vec_tests = \
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+RISCV_GCC = riscv-gcc
+RISCV_GCC_OPTS = -nostdlib -nostartfiles
+RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
+RISCV_SIM = riscv-isa-run
+
+#------------------------------------------------------------
+# Build assembly tests
+
+%.hex: %
+       elf2hex 16 16384 $< > $@
+
+%.dump: %
+       $(RISCV_OBJDUMP) $< > $@
+
+%.out: %
+       $(RISCV_SIM) $< 2> $@
+
+rv64sv_p_tests_bin = $(addprefix rv64sv-p-, $(rv64sv_sc_tests))
+rv64sv_p_tests_dump = $(addsuffix .dump, $(rv64sv_p_tests_bin))
+rv64sv_p_tests_hex = $(addsuffix .hex, $(rv64sv_p_tests_bin))
+rv64sv_p_tests_out  = $(addsuffix .out,  $(rv64sv_p_tests_bin))
+
+$(rv64sv_p_tests_bin): rv64sv-p-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
+
+rv64sv_pm_tests_bin = $(addprefix rv64sv-pm-, $(rv64sv_mc_tests))
+rv64sv_pm_tests_dump = $(addsuffix .dump, $(rv64sv_pm_tests_bin))
+rv64sv_pm_tests_hex = $(addsuffix .hex, $(rv64sv_pm_tests_bin))
+rv64sv_pm_tests_out  = $(addsuffix .out,  $(rv64sv_pm_tests_bin))
+
+$(rv64sv_pm_tests_bin): rv64sv-pm-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
+
+rv64sv_p_vec_tests_bin = $(addprefix rv64sv-p-vec-, $(rv64sv_sc_vec_tests))
+rv64sv_p_vec_tests_dump = $(addsuffix .dump, $(rv64sv_p_vec_tests_bin))
+rv64sv_p_vec_tests_hex = $(addsuffix .hex, $(rv64sv_p_vec_tests_bin))
+rv64sv_p_vec_tests_out  = $(addsuffix .out,  $(rv64sv_p_vec_tests_bin))
+
+$(rv64sv_p_vec_tests_bin): rv64sv-p-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
+
+rv64sv_pt_vec_tests_bin = $(addprefix rv64sv-pt-vec-, $(rv64sv_sc_vec_tests))
+rv64sv_pt_vec_tests_dump = $(addsuffix .dump, $(rv64sv_pt_vec_tests_bin))
+rv64sv_pt_vec_tests_hex = $(addsuffix .hex, $(rv64sv_pt_vec_tests_bin))
+rv64sv_pt_vec_tests_out  = $(addsuffix .out,  $(rv64sv_pt_vec_tests_bin))
+
+$(rv64sv_pt_vec_tests_bin): rv64sv-pt-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
+
+riscv-: \
+       $(rv64sv_p_tests_dump) $(rv64sv_p_tests_hex) \
+       $(rv64sv_pm_tests_dump) $(rv64sv_pm_tests_hex) \
+       $(rv64sv_p_vec_tests_dump) $(rv64sv_p_vec_tests_hex) \
+       $(rv64sv_pt_vec_tests_dump) $(rv64sv_pt_vec_tests_hex) \
+
+out =
+
+run: $(out)
+       echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
+              $(out); echo;
+
+junk += \
+  $(rv64sv_p_tests_bin) $(rv64sv_p_tests_dump) $(rv64sv_p_tests_hex) $(rv64sv_p_tests_out) \
+  $(rv64sv_pm_tests_bin) $(rv64sv_pm_tests_dump) $(rv64sv_pm_tests_hex) $(rv64sv_pm_tests_out) \
+  $(rv64sv_p_vec_tests_bin) $(rv64sv_p_vec_tests_dump) $(rv64sv_p_vec_tests_hex) $(rv64sv_p_vec_tests_out) \
+  $(rv64sv_pt_vec_tests_bin) $(rv64sv_pt_vec_tests_dump) $(rv64sv_pt_vec_tests_hex) $(rv64sv_pt_vec_tests_out) \
+
+#------------------------------------------------------------
+# Default
+
+all: riscv-
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+       rm -rf $(junk)
diff --git a/isa/rv64sv/illegal_tvec_cmd.S b/isa/rv64sv/illegal_tvec_cmd.S
new file mode 100644 (file)
index 0000000..d6d8d38
--- /dev/null
@@ -0,0 +1,112 @@
+#*****************************************************************************
+# illegal_tvec_cmd.S
+#-----------------------------------------------------------------------------
+#
+# Test illegal tvec command trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3, dest+1
+  vmsv vx1, a3
+  addi a3, x0, 0x1
+  sll a3, a3, 12
+  venqcmd a3, x0
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  fence.v.l
+
+vtcode1:
+  lw x2, 0(x1)
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,27
+  bne a3,a4,fail
+
+  # check vec irq aux
+  mfpcr a3,cr2
+  addi a4, x0, 0x1
+  sll a4, a4, 12
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/illegal_tvec_regid.S b/isa/rv64sv/illegal_tvec_regid.S
new file mode 100644 (file)
index 0000000..4f48f8f
--- /dev/null
@@ -0,0 +1,51 @@
+#*****************************************************************************
+# illegal_tvec_regid.S
+#-----------------------------------------------------------------------------
+#
+# Test illegal tvec regid trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a0,cr0
+  li a1,1
+  slli a2,a1,8
+  or a0,a0,a1 # enable traps
+  mtpcr a0,cr0
+
+  TEST_ILLEGAL_TVEC_REGID(2, 5, 5, vsd, vx7, a2, 0x931c7)
+  TEST_ILLEGAL_TVEC_REGID(3, 5, 5, vld, vx7, a2, 0x831c7)
+
+  TEST_ILLEGAL_TVEC_REGID(4, 5, 5, vfsd, vf7, a2, 0x9b9e7)
+  TEST_ILLEGAL_TVEC_REGID(5, 5, 5, vfld, vf7, a2, 0x8b9e7)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/illegal_vt_inst.S b/isa/rv64sv/illegal_vt_inst.S
new file mode 100644 (file)
index 0000000..d749104
--- /dev/null
@@ -0,0 +1,112 @@
+#*****************************************************************************
+# illegal_vt_inst.S
+#-----------------------------------------------------------------------------
+#
+# Test illegal vt instruction trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  fence.v.l
+
+vtcode1:
+  add x2,x2,x3
+illegal:
+  .word 0x0
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,26
+  bne a3,a4,fail
+
+  # check badvaddr
+  mfpcr a3,cr2
+  la a4,illegal
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/illegal_vt_regid.S b/isa/rv64sv/illegal_vt_regid.S
new file mode 100644 (file)
index 0000000..8baa918
--- /dev/null
@@ -0,0 +1,53 @@
+#*****************************************************************************
+# xcpt_illegal_vt_regid.S
+#-----------------------------------------------------------------------------
+#
+# Test illegal vt regid trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a0,cr0
+  li a1,1
+  slli a2,a1,8
+  or a0,a0,a1 # enable traps
+  mtpcr a0,cr0
+
+  TEST_ILLEGAL_VT_REGID(2, 5, 5, add, x7, x1, x2)
+  TEST_ILLEGAL_VT_REGID(3, 5, 5, add, x1, x7, x2)
+  TEST_ILLEGAL_VT_REGID(4, 5, 5, add, x1, x2, x7)
+
+  TEST_ILLEGAL_VT_REGID(5, 5, 5, fadd.d, f7, f1, f2)
+  TEST_ILLEGAL_VT_REGID(6, 5, 5, fadd.d, f1, f7, f2)
+  TEST_ILLEGAL_VT_REGID(7, 5, 5, fadd.d, f1, f2, f7)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/ma_utld.S b/isa/rv64sv/ma_utld.S
new file mode 100644 (file)
index 0000000..a71c4a1
--- /dev/null
@@ -0,0 +1,108 @@
+#*****************************************************************************
+# ma_utld.S
+#-----------------------------------------------------------------------------
+#
+# Test misaligned ut ld trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3, dest+1
+  vmsv vx1, a3
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  fence.v.l
+
+vtcode1:
+  lw x2, 0(x1)
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,28
+  bne a3,a4,fail
+
+  # check vec irq aux
+  mfpcr a3,cr2
+  la a4,dest+1
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/ma_utsd.S b/isa/rv64sv/ma_utsd.S
new file mode 100644 (file)
index 0000000..6bdfcd5
--- /dev/null
@@ -0,0 +1,110 @@
+#*****************************************************************************
+# ma_utsd.S
+#-----------------------------------------------------------------------------
+#
+# Test misaligned ut sd trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3, dest+1
+  vmsv vx1, a3
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a3, dest+1
+  vsd vx1, a3
+  fence.v.l
+
+vtcode1:
+  sw x2, 0(x1)
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,29
+  bne a3,a4,fail
+
+  # check vec irq aux
+  mfpcr a3,cr2
+  la a4, dest+1
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/ma_vld.S b/isa/rv64sv/ma_vld.S
new file mode 100644 (file)
index 0000000..ef862c4
--- /dev/null
@@ -0,0 +1,109 @@
+#*****************************************************************************
+# ma_vld.S
+#-----------------------------------------------------------------------------
+#
+# Test misaligned vector ld trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3, dest+1
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  fence.v.l
+
+vtcode1:
+  add x2,x2,x3
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,28
+  bne a3,a4,fail
+
+  # check vec irq aux
+  mfpcr a3,cr2
+  la a4,dest+1
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/ma_vsd.S b/isa/rv64sv/ma_vsd.S
new file mode 100644 (file)
index 0000000..b82eb98
--- /dev/null
@@ -0,0 +1,112 @@
+#*****************************************************************************
+# ma_vsd.S
+#-----------------------------------------------------------------------------
+#
+# Test misaligned vector sd trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3, src1
+  la a4, src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a3, dest+1
+  vsd vx1, a3
+  fence.v.l
+
+vtcode1:
+  add x2,x2,x3
+  stop
+
+vtcode2:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,29
+  bne a3,a4,fail
+
+  # check vec irq aux
+  mfpcr a3,cr2
+  la a4,dest+1
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64sv/ma_vt_inst.S b/isa/rv64sv/ma_vt_inst.S
new file mode 100644 (file)
index 0000000..c8b7acb
--- /dev/null
@@ -0,0 +1,102 @@
+#*****************************************************************************
+# ma_vt_inst.S
+#-----------------------------------------------------------------------------
+#
+# Test misaligned vt instruction trap.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64S
+RVTEST_CODE_BEGIN
+
+  mfpcr a3,cr0
+  li a4,1
+  slli a5,a4,8
+  or a3,a3,a4 # enable traps
+  mtpcr a3,cr0
+
+  la a3,handler
+  mtpcr a3,cr3 # set exception handler
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  lui a0,%hi(vtcode1+2)
+  vf %lo(vtcode1+2)(a0)
+1:      j 1b
+
+vtcode1:
+  add x2,x2,x3
+  stop
+
+handler:
+  vxcptkill
+
+  li x28,2
+
+  # check cause
+  mfpcr a3,cr6
+  li a4,24
+  bne a3,a4,fail
+
+  # check badvaddr
+  mfpcr a3,cr2
+  la a4,vtcode1+2
+  bne a3,a4,fail
+
+  # make sure vector unit has cleared out
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/Makefile b/isa/rv64uf/Makefile
new file mode 100644 (file)
index 0000000..65470ed
--- /dev/null
@@ -0,0 +1,120 @@
+#=======================================================================
+# Makefile for riscv-tests
+#-----------------------------------------------------------------------
+
+default: all
+
+#--------------------------------------------------------------------
+# Sources
+#--------------------------------------------------------------------
+
+rv64uf_sc_tests = \
+       fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
+       ldst move structural \
+
+rv64uf_mc_tests =\
+
+rv64uf_sc_vec_tests = \
+       fadd fcmp fcvt fcvt_w fmadd fmin fsgnj \
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+RISCV_GCC = riscv-gcc
+RISCV_GCC_OPTS = -nostdlib -nostartfiles
+RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
+RISCV_SIM = riscv-isa-run
+
+#------------------------------------------------------------
+# Build assembly tests
+
+%.hex: %
+       elf2hex 16 16384 $< > $@
+
+%.dump: %
+       $(RISCV_OBJDUMP) $< > $@
+
+%.out: %
+       $(RISCV_SIM) $< 2> $@
+
+rv64uf_p_tests_bin = $(addprefix rv64uf-p-, $(rv64uf_sc_tests))
+rv64uf_p_tests_dump = $(addsuffix .dump, $(rv64uf_p_tests_bin))
+rv64uf_p_tests_hex = $(addsuffix .hex, $(rv64uf_p_tests_bin))
+rv64uf_p_tests_out  = $(addsuffix .out,  $(rv64uf_p_tests_bin))
+
+$(rv64uf_p_tests_bin): rv64uf-p-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
+
+rv64uf_pm_tests_bin = $(addprefix rv64uf-pm-, $(rv64uf_mc_tests))
+rv64uf_pm_tests_dump = $(addsuffix .dump, $(rv64uf_pm_tests_bin))
+rv64uf_pm_tests_hex = $(addsuffix .hex, $(rv64uf_pm_tests_bin))
+rv64uf_pm_tests_out  = $(addsuffix .out,  $(rv64uf_pm_tests_bin))
+
+$(rv64uf_pm_tests_bin): rv64uf-pm-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
+
+rv64uf_v_tests_bin = $(addprefix rv64uf-v-, $(rv64uf_sc_tests))
+rv64uf_v_tests_dump = $(addsuffix .dump, $(rv64uf_v_tests_bin))
+rv64uf_v_tests_hex = $(addsuffix .hex, $(rv64uf_v_tests_bin))
+rv64uf_v_tests_out  = $(addsuffix .out,  $(rv64uf_v_tests_bin))
+
+$(rv64uf_v_tests_bin): rv64uf-v-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/scalar -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+rv64uf_p_vec_tests_bin = $(addprefix rv64uf-p-vec-, $(rv64uf_sc_vec_tests))
+rv64uf_p_vec_tests_dump = $(addsuffix .dump, $(rv64uf_p_vec_tests_bin))
+rv64uf_p_vec_tests_hex = $(addsuffix .hex, $(rv64uf_p_vec_tests_bin))
+rv64uf_p_vec_tests_out  = $(addsuffix .out,  $(rv64uf_p_vec_tests_bin))
+
+$(rv64uf_p_vec_tests_bin): rv64uf-p-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
+
+rv64uf_pt_vec_tests_bin = $(addprefix rv64uf-pt-vec-, $(rv64uf_sc_vec_tests))
+rv64uf_pt_vec_tests_dump = $(addsuffix .dump, $(rv64uf_pt_vec_tests_bin))
+rv64uf_pt_vec_tests_hex = $(addsuffix .hex, $(rv64uf_pt_vec_tests_bin))
+rv64uf_pt_vec_tests_out  = $(addsuffix .out,  $(rv64uf_pt_vec_tests_bin))
+
+$(rv64uf_pt_vec_tests_bin): rv64uf-pt-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
+
+rv64uf_v_vec_tests_bin = $(addprefix rv64uf-v-vec-, $(rv64uf_sc_vec_tests))
+rv64uf_v_vec_tests_dump = $(addsuffix .dump, $(rv64uf_v_vec_tests_bin))
+rv64uf_v_vec_tests_hex = $(addsuffix .hex, $(rv64uf_v_vec_tests_bin))
+rv64uf_v_vec_tests_out  = $(addsuffix .out,  $(rv64uf_v_vec_tests_bin))
+
+$(rv64uf_v_vec_tests_bin): rv64uf-v-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/vector -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+riscv-: \
+       $(rv64uf_p_tests_dump) $(rv64uf_p_tests_hex) \
+       $(rv64uf_pm_tests_dump) $(rv64uf_pm_tests_hex) \
+       $(rv64uf_v_tests_dump) $(rv64uf_v_tests_hex) \
+       $(rv64uf_p_vec_tests_dump) $(rv64uf_p_vec_tests_hex) \
+       $(rv64uf_pt_vec_tests_dump) $(rv64uf_pt_vec_tests_hex) \
+       $(rv64uf_v_vec_tests_dump) $(rv64uf_v_vec_tests_hex) \
+
+out = $(rv64uf_p_tests_out) $(rv64uf_pm_tests_out) $(rv64uf_v_tests_out) $(rv64uf_p_vec_tests_out) $(rv64uf_v_vec_tests_out)
+
+run: $(out)
+       echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
+              $(out); echo;
+
+junk += \
+  $(rv64uf_p_tests_bin) $(rv64uf_p_tests_dump) $(rv64uf_p_tests_hex) $(rv64uf_p_tests_out) \
+  $(rv64uf_pm_tests_bin) $(rv64uf_pm_tests_dump) $(rv64uf_pm_tests_hex) $(rv64uf_pm_tests_out) \
+  $(rv64uf_v_tests_bin) $(rv64uf_v_tests_dump) $(rv64uf_v_tests_hex) $(rv64uf_v_tests_out) \
+  $(rv64uf_p_vec_tests_bin) $(rv64uf_p_vec_tests_dump) $(rv64uf_p_vec_tests_hex) $(rv64uf_p_vec_tests_out) \
+  $(rv64uf_pt_vec_tests_bin) $(rv64uf_pt_vec_tests_dump) $(rv64uf_pt_vec_tests_hex) $(rv64uf_pt_vec_tests_out) \
+  $(rv64uf_v_vec_tests_bin) $(rv64uf_v_vec_tests_dump) $(rv64uf_v_vec_tests_hex) $(rv64uf_v_vec_tests_out) \
+
+#------------------------------------------------------------
+# Default
+
+all: riscv-
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+       rm -rf $(junk)
diff --git a/isa/rv64uf/fadd.S b/isa/rv64uf/fadd.S
new file mode 100644 (file)
index 0000000..58f44be
--- /dev/null
@@ -0,0 +1,51 @@
+#*****************************************************************************
+# fadd.S
+#-----------------------------------------------------------------------------
+#
+# Test f{add|sub|mul}.{s|d} instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_OP2_S( 2,  fadd.s,                3.5,        2.5,        1.0 );
+  TEST_FP_OP2_S( 3,  fadd.s,              -1234,    -1235.1,        1.1 );
+  TEST_FP_OP2_S( 4,  fadd.s,         3.14159265, 3.14159265, 0.00000001 );
+
+  TEST_FP_OP2_D( 5,  fadd.d,                3.5,        2.5,        1.0 );
+  TEST_FP_OP2_D( 6,  fadd.d,              -1234,    -1235.1,        1.1 );
+  TEST_FP_OP2_D( 7,  fadd.d,         3.14159266, 3.14159265, 0.00000001 );
+
+  TEST_FP_OP2_S(12,  fsub.s,                1.5,        2.5,        1.0 );
+  TEST_FP_OP2_S(13,  fsub.s,              -1234,    -1235.1,       -1.1 );
+  TEST_FP_OP2_S(14,  fsub.s,         3.14159265, 3.14159265, 0.00000001 );
+
+  TEST_FP_OP2_D(15,  fsub.d,                1.5,        2.5,        1.0 );
+  TEST_FP_OP2_D(16,  fsub.d,              -1234,    -1235.1,       -1.1 );
+  TEST_FP_OP2_D(17,  fsub.d, 3.1415926400000001, 3.14159265, 0.00000001 );
+
+  TEST_FP_OP2_S(22,  fmul.s,                2.5,        2.5,        1.0 );
+  TEST_FP_OP2_S(23,  fmul.s,            1358.61,    -1235.1,       -1.1 );
+  TEST_FP_OP2_S(24,  fmul.s,      3.14159265e-8, 3.14159265, 0.00000001 );
+
+  TEST_FP_OP2_D(25,  fmul.d,                2.5,        2.5,        1.0 );
+  TEST_FP_OP2_D(26,  fmul.d,            1358.61,    -1235.1,       -1.1 );
+  TEST_FP_OP2_D(27,  fmul.d,      3.14159265e-8, 3.14159265, 0.00000001 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fcmp.S b/isa/rv64uf/fcmp.S
new file mode 100644 (file)
index 0000000..845db3c
--- /dev/null
@@ -0,0 +1,35 @@
+#*****************************************************************************
+# fcmp.S
+#-----------------------------------------------------------------------------
+#
+# Test f{eq|lt|le}.{s|d} instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_CMP_OP_S( 2, feq.s, 1, -1.36, -1.36)
+  TEST_FP_CMP_OP_S( 3, fle.s, 1, -1.36, -1.36)
+  TEST_FP_CMP_OP_S( 4, flt.s, 0, -1.36, -1.36)
+
+  TEST_FP_CMP_OP_S( 5, feq.s, 0, -1.37, -1.36)
+  TEST_FP_CMP_OP_S( 6, fle.s, 1, -1.37, -1.36)
+  TEST_FP_CMP_OP_S( 7, flt.s, 1, -1.37, -1.36)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fcvt.S b/isa/rv64uf/fcvt.S
new file mode 100644 (file)
index 0000000..bb9a9c4
--- /dev/null
@@ -0,0 +1,54 @@
+#*****************************************************************************
+# fcvt.S
+#-----------------------------------------------------------------------------
+#
+# Test fcvt.{s|d}.{wu|w|lu|l}, fcvt.s.d, and fcvt.d.s instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_INT_FP_OP_S( 2,  fcvt.s.w,                   2.0,  2);
+  TEST_INT_FP_OP_S( 3,  fcvt.s.w,                  -2.0, -2);
+
+  TEST_INT_FP_OP_S( 4, fcvt.s.wu,                   2.0,  2);
+  TEST_INT_FP_OP_S( 5, fcvt.s.wu,           4.2949673e9, -2);
+
+  TEST_INT_FP_OP_S( 6,  fcvt.s.l,                   2.0,  2);
+  TEST_INT_FP_OP_S( 7,  fcvt.s.l,                  -2.0, -2);
+
+  TEST_INT_FP_OP_S( 8, fcvt.s.lu,                   2.0,  2);
+  TEST_INT_FP_OP_S( 9, fcvt.s.lu,          1.8446744e19, -2);
+
+  TEST_INT_FP_OP_D(12,  fcvt.d.w,                   2.0,  2);
+  TEST_INT_FP_OP_D(13,  fcvt.d.w,                  -2.0, -2);
+
+  TEST_INT_FP_OP_D(14, fcvt.d.wu,                   2.0,  2);
+  TEST_INT_FP_OP_D(15, fcvt.d.wu,            4294967294, -2);
+
+  TEST_INT_FP_OP_D(16,  fcvt.d.l,                   2.0,  2);
+  TEST_INT_FP_OP_D(17,  fcvt.d.l,                  -2.0, -2);
+
+  TEST_INT_FP_OP_D(18, fcvt.d.lu,                   2.0,  2);
+  TEST_INT_FP_OP_D(19, fcvt.d.lu, 1.8446744073709552e19, -2);
+
+  TEST_FCVT_S_D(20, -1.5, -1.5)
+  TEST_FCVT_D_S(21, -1.5, -1.5)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fcvt_w.S b/isa/rv64uf/fcvt_w.S
new file mode 100644 (file)
index 0000000..e2e1686
--- /dev/null
@@ -0,0 +1,83 @@
+#*****************************************************************************
+# fcvt_w.S
+#-----------------------------------------------------------------------------
+#
+# Test fcvt{wu|w|lu|l}.{s|d} instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_INT_OP_S( 2,  fcvt.w.s, -1, -1.1, rtz);
+  TEST_FP_INT_OP_S( 3,  fcvt.w.s, -1, -1.0, rtz);
+  TEST_FP_INT_OP_S( 4,  fcvt.w.s,  0, -0.9, rtz);
+  TEST_FP_INT_OP_S( 5,  fcvt.w.s,  0,  0.9, rtz);
+  TEST_FP_INT_OP_S( 6,  fcvt.w.s,  1,  1.0, rtz);
+  TEST_FP_INT_OP_S( 7,  fcvt.w.s,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_S(12, fcvt.wu.s, -1, -3.0, rtz); # invalid
+  TEST_FP_INT_OP_S(13, fcvt.wu.s, -1, -1.0, rtz); # invalid
+  TEST_FP_INT_OP_S(14, fcvt.wu.s,  0, -0.9, rtz);
+  TEST_FP_INT_OP_S(15, fcvt.wu.s,  0,  0.9, rtz);
+  TEST_FP_INT_OP_S(16, fcvt.wu.s,  1,  1.0, rtz);
+  TEST_FP_INT_OP_S(17, fcvt.wu.s,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_S(22,  fcvt.l.s, -1, -1.1, rtz);
+  TEST_FP_INT_OP_S(23,  fcvt.l.s, -1, -1.0, rtz);
+  TEST_FP_INT_OP_S(24,  fcvt.l.s,  0, -0.9, rtz);
+  TEST_FP_INT_OP_S(25,  fcvt.l.s,  0,  0.9, rtz);
+  TEST_FP_INT_OP_S(26,  fcvt.l.s,  1,  1.0, rtz);
+  TEST_FP_INT_OP_S(27,  fcvt.l.s,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_S(32, fcvt.lu.s, -1, -3.0, rtz); # invalid
+  TEST_FP_INT_OP_S(33, fcvt.lu.s, -1, -1.0, rtz); # invalid
+  TEST_FP_INT_OP_S(34, fcvt.lu.s,  0, -0.9, rtz);
+  TEST_FP_INT_OP_S(35, fcvt.lu.s,  0,  0.9, rtz);
+  TEST_FP_INT_OP_S(36, fcvt.lu.s,  1,  1.0, rtz);
+  TEST_FP_INT_OP_S(37, fcvt.lu.s,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_D(42,  fcvt.w.d, -1, -1.1, rtz);
+  TEST_FP_INT_OP_D(43,  fcvt.w.d, -1, -1.0, rtz);
+  TEST_FP_INT_OP_D(44,  fcvt.w.d,  0, -0.9, rtz);
+  TEST_FP_INT_OP_D(45,  fcvt.w.d,  0,  0.9, rtz);
+  TEST_FP_INT_OP_D(46,  fcvt.w.d,  1,  1.0, rtz);
+  TEST_FP_INT_OP_D(47,  fcvt.w.d,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_D(52, fcvt.wu.d, -1, -3.0, rtz); # invalid
+  TEST_FP_INT_OP_D(53, fcvt.wu.d, -1, -1.0, rtz); # invalid
+  TEST_FP_INT_OP_D(54, fcvt.wu.d,  0, -0.9, rtz);
+  TEST_FP_INT_OP_D(55, fcvt.wu.d,  0,  0.9, rtz);
+  TEST_FP_INT_OP_D(56, fcvt.wu.d,  1,  1.0, rtz);
+  TEST_FP_INT_OP_D(57, fcvt.wu.d,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_D(62,  fcvt.l.d, -1, -1.1, rtz);
+  TEST_FP_INT_OP_D(63,  fcvt.l.d, -1, -1.0, rtz);
+  TEST_FP_INT_OP_D(64,  fcvt.l.d,  0, -0.9, rtz);
+  TEST_FP_INT_OP_D(65,  fcvt.l.d,  0,  0.9, rtz);
+  TEST_FP_INT_OP_D(66,  fcvt.l.d,  1,  1.0, rtz);
+  TEST_FP_INT_OP_D(67,  fcvt.l.d,  1,  1.1, rtz);
+
+  TEST_FP_INT_OP_D(72, fcvt.lu.d, -1, -3.0, rtz); # invalid
+  TEST_FP_INT_OP_D(73, fcvt.lu.d, -1, -1.0, rtz); # invalid
+  TEST_FP_INT_OP_D(74, fcvt.lu.d,  0, -0.9, rtz);
+  TEST_FP_INT_OP_D(75, fcvt.lu.d,  0,  0.9, rtz);
+  TEST_FP_INT_OP_D(76, fcvt.lu.d,  1,  1.0, rtz);
+  TEST_FP_INT_OP_D(77, fcvt.lu.d,  1,  1.1, rtz);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fmadd.S b/isa/rv64uf/fmadd.S
new file mode 100644 (file)
index 0000000..76e5e9f
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# fmadd.S
+#-----------------------------------------------------------------------------
+#
+# Test f[n]m{add|sub}.s and f[n]m{add|sub}.d instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_OP3_S( 2,  fmadd.s,                 3.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_S( 3,  fmadd.s,              1236.2, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_S( 4,  fmadd.s,               -12.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_D( 5,  fmadd.d,                 3.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_D( 6,  fmadd.d,  1236.1999999999999, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_D( 7,  fmadd.d,               -12.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_S( 8, fnmadd.s,                -3.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_S( 9, fnmadd.s,             -1236.2, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_S(10, fnmadd.s,                12.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_D(11, fnmadd.d,                -3.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_D(12, fnmadd.d, -1236.1999999999999, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_D(13, fnmadd.d,                12.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_S(14,  fmsub.s,                 1.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_S(15,  fmsub.s,                1234, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_S(16,  fmsub.s,                -8.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_D(17,  fmsub.d,                 1.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_D(18,  fmsub.d,                1234, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_D(19,  fmsub.d,                -8.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_S(20, fnmsub.s,                -1.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_S(21, fnmsub.s,               -1234, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_S(22, fnmsub.s,                 8.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_FP_OP3_D(23, fnmsub.d,                -1.5,  1.0,        2.5,        1.0 );
+  TEST_FP_OP3_D(24, fnmsub.d,               -1234, -1.0,    -1235.1,        1.1 );
+  TEST_FP_OP3_D(25, fnmsub.d,                 8.0,  2.0,       -5.0,       -2.0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fmin.S b/isa/rv64uf/fmin.S
new file mode 100644 (file)
index 0000000..0041ea5
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# fmin.S
+#-----------------------------------------------------------------------------
+#
+# Test f{min|max}.{s|d} instructinos.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_OP2_S( 2,  fmin.s,        1.0,        2.5,        1.0 );
+  TEST_FP_OP2_S( 3,  fmin.s,    -1235.1,    -1235.1,        1.1 );
+  TEST_FP_OP2_S( 4,  fmin.s,    -1235.1,        1.1,    -1235.1 );
+  TEST_FP_OP2_S( 5,  fmin.s,    -1235.1,        NaN,    -1235.1 );
+  TEST_FP_OP2_S( 6,  fmin.s, 0.00000001, 3.14159265, 0.00000001 );
+  TEST_FP_OP2_S( 7,  fmin.s,       -2.0,       -1.0,       -2.0 );
+
+  TEST_FP_OP2_S(12,  fmax.s,        2.5,        2.5,        1.0 );
+  TEST_FP_OP2_S(13,  fmax.s,        1.1,    -1235.1,        1.1 );
+  TEST_FP_OP2_S(14,  fmax.s,        1.1,        1.1,    -1235.1 );
+  TEST_FP_OP2_S(15,  fmax.s,    -1235.1,        NaN,    -1235.1 );
+  TEST_FP_OP2_S(16,  fmax.s, 3.14159265, 3.14159265, 0.00000001 );
+  TEST_FP_OP2_S(17,  fmax.s,       -1.0,       -1.0,       -2.0 );
+
+  TEST_FP_OP2_D(22,  fmin.d,        1.0,        2.5,        1.0 );
+  TEST_FP_OP2_D(23,  fmin.d,    -1235.1,    -1235.1,        1.1 );
+  TEST_FP_OP2_D(24,  fmin.d,    -1235.1,        1.1,    -1235.1 );
+  TEST_FP_OP2_D(25,  fmin.d,    -1235.1,        NaN,    -1235.1 );
+  TEST_FP_OP2_D(26,  fmin.d, 0.00000001, 3.14159265, 0.00000001 );
+  TEST_FP_OP2_D(27,  fmin.d,       -2.0,       -1.0,       -2.0 );
+
+  TEST_FP_OP2_D(32,  fmax.d,        2.5,        2.5,        1.0 );
+  TEST_FP_OP2_D(33,  fmax.d,        1.1,    -1235.1,        1.1 );
+  TEST_FP_OP2_D(34,  fmax.d,        1.1,        1.1,    -1235.1 );
+  TEST_FP_OP2_D(35,  fmax.d,    -1235.1,        NaN,    -1235.1 );
+  TEST_FP_OP2_D(36,  fmax.d, 3.14159265, 3.14159265, 0.00000001 );
+  TEST_FP_OP2_D(37,  fmax.d,       -1.0,       -1.0,       -2.0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/fsgnj.S b/isa/rv64uf/fsgnj.S
new file mode 100644 (file)
index 0000000..0d2124b
--- /dev/null
@@ -0,0 +1,57 @@
+#*****************************************************************************
+# fsgnj.S
+#-----------------------------------------------------------------------------
+#
+# Test fsgn{j|jn|x}.{s|d} instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_FP_OP2_S( 2,  fsgnj.s, -6.3,  6.3, -1.0 );
+  TEST_FP_OP2_S( 3,  fsgnj.s,  7.3,  7.3,  2.0 );
+  TEST_FP_OP2_S( 4,  fsgnj.s, -8.3, -8.3, -3.0 );
+  TEST_FP_OP2_S( 5,  fsgnj.s,  9.3, -9.3,  4.0 );
+
+  TEST_FP_OP2_S(12, fsgnjn.s,  6.3,  6.3, -1.0 );
+  TEST_FP_OP2_S(13, fsgnjn.s, -7.3,  7.3,  2.0 );
+  TEST_FP_OP2_S(14, fsgnjn.s,  8.3, -8.3, -3.0 );
+  TEST_FP_OP2_S(15, fsgnjn.s, -9.3, -9.3,  4.0 );
+
+  TEST_FP_OP2_S(22, fsgnjx.s, -6.3,  6.3, -1.0 );
+  TEST_FP_OP2_S(23, fsgnjx.s,  7.3,  7.3,  2.0 );
+  TEST_FP_OP2_S(24, fsgnjx.s,  8.3, -8.3, -3.0 );
+  TEST_FP_OP2_S(25, fsgnjx.s, -9.3, -9.3,  4.0 );
+
+  TEST_FP_OP2_D(32,  fsgnj.d, -6.3,  6.3, -1.0 );
+  TEST_FP_OP2_D(33,  fsgnj.d,  7.3,  7.3,  2.0 );
+  TEST_FP_OP2_D(34,  fsgnj.d, -8.3, -8.3, -3.0 );
+  TEST_FP_OP2_D(35,  fsgnj.d,  9.3, -9.3,  4.0 );
+
+  TEST_FP_OP2_D(42, fsgnjn.d,  6.3,  6.3, -1.0 );
+  TEST_FP_OP2_D(43, fsgnjn.d, -7.3,  7.3,  2.0 );
+  TEST_FP_OP2_D(44, fsgnjn.d,  8.3, -8.3, -3.0 );
+  TEST_FP_OP2_D(45, fsgnjn.d, -9.3, -9.3,  4.0 );
+
+  TEST_FP_OP2_D(52, fsgnjx.d, -6.3,  6.3, -1.0 );
+  TEST_FP_OP2_D(53, fsgnjx.d,  7.3,  7.3,  2.0 );
+  TEST_FP_OP2_D(54, fsgnjx.d,  8.3, -8.3, -3.0 );
+  TEST_FP_OP2_D(55, fsgnjx.d, -9.3, -9.3,  4.0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/ldst.S b/isa/rv64uf/ldst.S
new file mode 100644 (file)
index 0000000..6e4c028
--- /dev/null
@@ -0,0 +1,30 @@
+#*****************************************************************************
+# ldst.S
+#-----------------------------------------------------------------------------
+#
+# This test verifies that flw, fld, fsw, and fsd work properly.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a0, 0x4000000040400000, la a1, tdat; flw f1, 4(a1); fsw f1, 12(a1); ld a0, 8(a1))
+  TEST_CASE(3, a0, 0x400000003f800000, la a1, tdat; fld f2, 0(a1); fsd f2, 8(a1); ld a0, 8(a1))
+
+  TEST_PASSFAIL
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+.word 0x3f800000
+.word 0x40000000
+.word 0x40400000
+.word 0x40800000
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/move.S b/isa/rv64uf/move.S
new file mode 100644 (file)
index 0000000..f06e324
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# move.S
+#-----------------------------------------------------------------------------
+#
+# This test verifies that mxtf.[s,d], mftx.[s,d], mtfsr, mffsr,
+# and fsgnj[x|n].[s|d] work properly.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+li a0, 1
+mtfsr a0
+
+  TEST_CASE(2, a1, 1, li a0, 0x1234; mtfsr a1, a0)
+  TEST_CASE(3, a0, 0x34, mffsr a0)
+  TEST_CASE(4, a0, 0x34, mffsr a0)
+
+  TEST_CASE(5, a0, 0xFFFFFFFFBF812345, li a1, 0xFFFFFFFFBF812345; mxtf.s f0, a1; mftx.s a0, f0)
+  TEST_CASE(6, a0, 0x3FF02468A0000000, li a1, 0x3FF02468A0000000; mxtf.d f1, a1; mftx.d a0, f1)
+
+  TEST_CASE(7, a0, 0xFFFFFFFFBF812345, li a1, 0xFFFFFFFFBF812345; mxtf.s f0, a1; fsgnj.s f1, f0, f0; mftx.s a0, f1)
+  TEST_CASE(8, a0, 0x000000004BA98765, li a1, 0xFFFFFFFFCBA98765; mxtf.s f0, a1; fsgnjx.s f1, f0, f0; mftx.s a0, f1)
+  TEST_CASE(9, a0, 0x000000005EADBEEF, li a1, 0xFFFFFFFFDEADBEEF; mxtf.s f0, a1; fsgnjn.s f1, f0, f0; mftx.s a0, f1)
+  TEST_CASE(10, a0, 0xBFF02468A0001000, li a1, 0x3FF02468A0001000; li a2, -1; mxtf.d f1, a1; mxtf.d f2, a2; fsgnj.d f0, f1, f2; mftx.d a0, f0)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uf/structural.S b/isa/rv64uf/structural.S
new file mode 100644 (file)
index 0000000..0c74ab5
--- /dev/null
@@ -0,0 +1,56 @@
+#*****************************************************************************
+# structural.S
+#-----------------------------------------------------------------------------
+#
+# This test verifies that the FPU correctly obviates structural hazards on its
+# writeback port (e.g. fadd followed by fsgnj)
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+li x25, 1
+
+li x2, 0x3FF0000000000000
+li x1, 0x3F800000
+
+#define TEST(nops, errcode)     \
+  mxtf.d  f4, x0    ;\
+  mxtf.s  f3, x0    ;\
+  mxtf.d  f2, x2    ;\
+  mxtf.s  f1, x1    ;\
+  b 1f ;\
+  .align 5        ;\
+1:fmul.d  f4, f2, f2  ;\
+  nops          ;\
+  fsgnj.s f3, f1, f1 ;\
+  mftx.d  x4, f4    ;\
+  mftx.s  x3, f3    ;\
+  beq     x1, x3, 2f  ;\
+  RVTEST_FAIL ;\
+2:beq     x2, x4, 2f  ;\
+  RVTEST_FAIL; \
+2:mxtf.d  f2, zero    ;\
+  mxtf.s  f1, zero    ;\
+
+TEST(;,2)
+TEST(nop,4)
+TEST(nop;nop,6)
+TEST(nop;nop;nop,8)
+TEST(nop;nop;nop;nop,10)
+TEST(nop;nop;nop;nop;nop,12)
+TEST(nop;nop;nop;nop;nop;nop,14)
+
+RVTEST_PASS
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/Makefile b/isa/rv64ui/Makefile
new file mode 100644 (file)
index 0000000..0efb128
--- /dev/null
@@ -0,0 +1,151 @@
+#=======================================================================
+# Makefile for riscv-tests
+#-----------------------------------------------------------------------
+
+default: all
+
+#--------------------------------------------------------------------
+# Sources
+#--------------------------------------------------------------------
+
+rv64ui_sc_tests = \
+       add addi addiw addw \
+       amoadd_d amoand_d amomax_d amomaxu_d amomin_d amominu_d amoor_d amoswap_d \
+       amoadd_w amoand_w amomax_w amomaxu_w amomin_w amominu_w amoor_w amoswap_w \
+       and andi \
+       auipc \
+       beq bge bgeu blt bltu bne \
+       div divu divuw divw \
+       example simple \
+       fence_i \
+       j jal jalr jalr_j jalr_r \
+       lb lbu lh lhu lw lwu ld \
+       lui \
+       mul mulh mulhsu mulhu mulw \
+       or ori \
+       rem remu remuw remw \
+       sb sh sw sd \
+       sll slli slliw sllw \
+       slt slti sltiu sltu \
+       sra srai sraiw sraw \
+       srl srli srliw srlw \
+       sub subw \
+       xor xori \
+
+rv64ui_mc_tests =\
+       lrsc
+
+rv64ui_sc_vec_tests = \
+       add addi addiw addw \
+       and andi \
+       lui \
+       mul mulh mulhsu mulhu mulw \
+       or ori \
+       sll slli slliw sllw \
+       slt slti sltiu sltu \
+       sra srai sraiw sraw \
+       srl srli srliw srlw \
+       sub subw \
+       xor xori \
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+RISCV_GCC = riscv-gcc
+RISCV_GCC_OPTS = -nostdlib -nostartfiles
+RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
+RISCV_SIM = riscv-isa-run
+
+#------------------------------------------------------------
+# Build assembly tests
+
+%.hex: %
+       elf2hex 16 16384 $< > $@
+
+%.dump: %
+       $(RISCV_OBJDUMP) $< > $@
+
+%.out: %
+       $(RISCV_SIM) $< 2> $@
+
+rv64ui_p_tests_bin = $(addprefix rv64ui-p-, $(rv64ui_sc_tests))
+rv64ui_p_tests_dump = $(addsuffix .dump, $(rv64ui_p_tests_bin))
+rv64ui_p_tests_hex = $(addsuffix .hex, $(rv64ui_p_tests_bin))
+rv64ui_p_tests_out  = $(addsuffix .out,  $(rv64ui_p_tests_bin))
+
+$(rv64ui_p_tests_bin): rv64ui-p-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
+
+rv64ui_pm_tests_bin = $(addprefix rv64ui-pm-, $(rv64ui_mc_tests))
+rv64ui_pm_tests_dump = $(addsuffix .dump, $(rv64ui_pm_tests_bin))
+rv64ui_pm_tests_hex = $(addsuffix .hex, $(rv64ui_pm_tests_bin))
+rv64ui_pm_tests_out  = $(addsuffix .out,  $(rv64ui_pm_tests_bin))
+
+$(rv64ui_pm_tests_bin): rv64ui-pm-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
+
+rv64ui_v_tests_bin = $(addprefix rv64ui-v-, $(rv64ui_sc_tests))
+rv64ui_v_tests_dump = $(addsuffix .dump, $(rv64ui_v_tests_bin))
+rv64ui_v_tests_hex = $(addsuffix .hex, $(rv64ui_v_tests_bin))
+rv64ui_v_tests_out  = $(addsuffix .out,  $(rv64ui_v_tests_bin))
+
+$(rv64ui_v_tests_bin): rv64ui-v-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/scalar -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+rv64ui_p_vec_tests_bin = $(addprefix rv64ui-p-vec-, $(rv64ui_sc_vec_tests))
+rv64ui_p_vec_tests_dump = $(addsuffix .dump, $(rv64ui_p_vec_tests_bin))
+rv64ui_p_vec_tests_hex = $(addsuffix .hex, $(rv64ui_p_vec_tests_bin))
+rv64ui_p_vec_tests_out  = $(addsuffix .out,  $(rv64ui_p_vec_tests_bin))
+
+$(rv64ui_p_vec_tests_bin): rv64ui-p-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
+
+rv64ui_pt_vec_tests_bin = $(addprefix rv64ui-pt-vec-, $(rv64ui_sc_vec_tests))
+rv64ui_pt_vec_tests_dump = $(addsuffix .dump, $(rv64ui_pt_vec_tests_bin))
+rv64ui_pt_vec_tests_hex = $(addsuffix .hex, $(rv64ui_pt_vec_tests_bin))
+rv64ui_pt_vec_tests_out  = $(addsuffix .out,  $(rv64ui_pt_vec_tests_bin))
+
+$(rv64ui_pt_vec_tests_bin): rv64ui-pt-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
+
+rv64ui_v_vec_tests_bin = $(addprefix rv64ui-v-vec-, $(rv64ui_sc_vec_tests))
+rv64ui_v_vec_tests_dump = $(addsuffix .dump, $(rv64ui_v_vec_tests_bin))
+rv64ui_v_vec_tests_hex = $(addsuffix .hex, $(rv64ui_v_vec_tests_bin))
+rv64ui_v_vec_tests_out  = $(addsuffix .out,  $(rv64ui_v_vec_tests_bin))
+
+$(rv64ui_v_vec_tests_bin): rv64ui-v-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/vector -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+riscv-: \
+       $(rv64ui_p_tests_dump) $(rv64ui_p_tests_hex) \
+       $(rv64ui_pm_tests_dump) $(rv64ui_pm_tests_hex) \
+       $(rv64ui_v_tests_dump) $(rv64ui_v_tests_hex) \
+       $(rv64ui_p_vec_tests_dump) $(rv64ui_p_vec_tests_hex) \
+       $(rv64ui_pt_vec_tests_dump) $(rv64ui_pt_vec_tests_hex) \
+       $(rv64ui_v_vec_tests_dump) $(rv64ui_v_vec_tests_hex) \
+
+out = $(rv64ui_p_tests_out) $(rv64ui_pm_tests_out) $(rv64ui_v_tests_out) $(rv64ui_p_vec_tests_out) $(rv64ui_v_vec_tests_out)
+
+run: $(out)
+       echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
+              $(out); echo;
+
+junk += \
+  $(rv64ui_p_tests_bin) $(rv64ui_p_tests_dump) $(rv64ui_p_tests_hex) $(rv64ui_p_tests_out) \
+  $(rv64ui_pm_tests_bin) $(rv64ui_pm_tests_dump) $(rv64ui_pm_tests_hex) $(rv64ui_pm_tests_out) \
+  $(rv64ui_v_tests_bin) $(rv64ui_v_tests_dump) $(rv64ui_v_tests_hex) $(rv64ui_v_tests_out) \
+  $(rv64ui_p_vec_tests_bin) $(rv64ui_p_vec_tests_dump) $(rv64ui_p_vec_tests_hex) $(rv64ui_p_vec_tests_out) \
+  $(rv64ui_pt_vec_tests_bin) $(rv64ui_pt_vec_tests_dump) $(rv64ui_pt_vec_tests_hex) $(rv64ui_pt_vec_tests_out) \
+  $(rv64ui_v_vec_tests_bin) $(rv64ui_v_vec_tests_dump) $(rv64ui_v_vec_tests_hex) $(rv64ui_v_vec_tests_out) \
+
+#------------------------------------------------------------
+# Default
+
+all: riscv-
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+       rm -rf $(junk)
diff --git a/isa/rv64ui/add.S b/isa/rv64ui/add.S
new file mode 100644 (file)
index 0000000..2b45eda
--- /dev/null
@@ -0,0 +1,83 @@
+#*****************************************************************************
+# add.S
+#-----------------------------------------------------------------------------
+#
+# Test add instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  add, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  add, 0x00000002, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  add, 0x0000000a, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  add, 0xffffffffffff8000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  add, 0xffffffff80000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  add, 0xffffffff7fff8000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 8,  add, 0x0000000000007fff, 0x0000000000000000, 0x0000000000007fff );
+  TEST_RR_OP( 9,  add, 0x000000007fffffff, 0x000000007fffffff, 0x0000000000000000 );
+  TEST_RR_OP( 10, add, 0x0000000080007ffe, 0x000000007fffffff, 0x0000000000007fff );
+
+  TEST_RR_OP( 11, add, 0xffffffff80007fff, 0xffffffff80000000, 0x0000000000007fff );
+  TEST_RR_OP( 12, add, 0x000000007fff7fff, 0x000000007fffffff, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 13, add, 0xffffffffffffffff, 0x0000000000000000, 0xffffffffffffffff );
+  TEST_RR_OP( 14, add, 0x0000000000000000, 0xffffffffffffffff, 0x0000000000000001 );
+  TEST_RR_OP( 15, add, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff );
+
+  TEST_RR_OP( 16, add, 0x0000000080000000, 0x0000000000000001, 0x000000007fffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 17, add, 24, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 18, add, 25, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 19, add, 26, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 20, 0, add, 24, 13, 11 );
+  TEST_RR_DEST_BYPASS( 21, 1, add, 25, 14, 11 );
+  TEST_RR_DEST_BYPASS( 22, 2, add, 26, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 23, 0, 0, add, 24, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 1, add, 25, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 25, 0, 2, add, 26, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 0, add, 24, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 27, 1, 1, add, 25, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 28, 2, 0, add, 26, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 29, 0, 0, add, 24, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 1, add, 25, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 31, 0, 2, add, 26, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 0, add, 24, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 33, 1, 1, add, 25, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 34, 2, 0, add, 26, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 35, add, 15, 15 );
+  TEST_RR_ZEROSRC2( 36, add, 32, 32 );
+  TEST_RR_ZEROSRC12( 37, add, 0 );
+  TEST_RR_ZERODEST( 38, add, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/addi.S b/isa/rv64ui/addi.S
new file mode 100644 (file)
index 0000000..c32d729
--- /dev/null
@@ -0,0 +1,69 @@
+#*****************************************************************************
+# addi.S
+#-----------------------------------------------------------------------------
+#
+# Test addi instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  addi, 0x00000000, 0x00000000, 0x000 );
+  TEST_IMM_OP( 3,  addi, 0x00000002, 0x00000001, 0x001 );
+  TEST_IMM_OP( 4,  addi, 0x0000000a, 0x00000003, 0x007 );
+
+  TEST_IMM_OP( 5,  addi, 0xfffffffffffff800, 0x0000000000000000, 0x800 );
+  TEST_IMM_OP( 6,  addi, 0xffffffff80000000, 0xffffffff80000000, 0x000 );
+  TEST_IMM_OP( 7,  addi, 0xffffffff7ffff800, 0xffffffff80000000, 0x800 );
+
+  TEST_IMM_OP( 8,  addi, 0x00000000000007ff, 0x00000000, 0x7ff );
+  TEST_IMM_OP( 9,  addi, 0x000000007fffffff, 0x7fffffff, 0x000 );
+  TEST_IMM_OP( 10, addi, 0x00000000800007fe, 0x7fffffff, 0x7ff );
+
+  TEST_IMM_OP( 11, addi, 0xffffffff800007ff, 0xffffffff80000000, 0x7ff );
+  TEST_IMM_OP( 12, addi, 0x000000007ffff7ff, 0x000000007fffffff, 0x800 );
+
+  TEST_IMM_OP( 13, addi, 0xffffffffffffffff, 0x0000000000000000, 0xfff );
+  TEST_IMM_OP( 14, addi, 0x0000000000000000, 0xffffffffffffffff, 0x001 );
+  TEST_IMM_OP( 15, addi, 0xfffffffffffffffe, 0xffffffffffffffff, 0xfff );
+
+  TEST_IMM_OP( 16, addi, 0x0000000080000000, 0x7fffffff, 0x001 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, addi, 24, 13, 11 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, addi, 24, 13, 11 );
+  TEST_IMM_DEST_BYPASS( 19, 1, addi, 23, 13, 10 );
+  TEST_IMM_DEST_BYPASS( 20, 2, addi, 22, 13,  9 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, addi, 24, 13, 11 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, addi, 23, 13, 10 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, addi, 22, 13,  9 );
+
+  TEST_IMM_ZEROSRC1( 24, addi, 32, 32 );
+  TEST_IMM_ZERODEST( 25, addi, 33, 50 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/addiw.S b/isa/rv64ui/addiw.S
new file mode 100644 (file)
index 0000000..db9220a
--- /dev/null
@@ -0,0 +1,69 @@
+#*****************************************************************************
+# addiw.S
+#-----------------------------------------------------------------------------
+#
+# Test addiw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  addiw, 0x00000000, 0x00000000, 0x000 );
+  TEST_IMM_OP( 3,  addiw, 0x00000002, 0x00000001, 0x001 );
+  TEST_IMM_OP( 4,  addiw, 0x0000000a, 0x00000003, 0x007 );
+
+  TEST_IMM_OP( 5,  addiw, 0xfffffffffffff800, 0x0000000000000000, 0x800 );
+  TEST_IMM_OP( 6,  addiw, 0xffffffff80000000, 0xffffffff80000000, 0x000 );
+  TEST_IMM_OP( 7,  addiw, 0x000000007ffff800, 0xffffffff80000000, 0x800 );
+
+  TEST_IMM_OP( 8,  addiw, 0x00000000000007ff, 0x00000000, 0x7ff );
+  TEST_IMM_OP( 9,  addiw, 0x000000007fffffff, 0x7fffffff, 0x000 );
+  TEST_IMM_OP( 10, addiw, 0xffffffff800007fe, 0x7fffffff, 0x7ff );
+
+  TEST_IMM_OP( 11, addiw, 0xffffffff800007ff, 0xffffffff80000000, 0x7ff );
+  TEST_IMM_OP( 12, addiw, 0x000000007ffff7ff, 0x000000007fffffff, 0x800 );
+
+  TEST_IMM_OP( 13, addiw, 0xffffffffffffffff, 0x0000000000000000, 0xfff );
+  TEST_IMM_OP( 14, addiw, 0x0000000000000000, 0xffffffffffffffff, 0x001 );
+  TEST_IMM_OP( 15, addiw, 0xfffffffffffffffe, 0xffffffffffffffff, 0xfff );
+
+  TEST_IMM_OP( 16, addiw, 0xffffffff80000000, 0x7fffffff, 0x001 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, addiw, 24, 13, 11 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, addiw, 24, 13, 11 );
+  TEST_IMM_DEST_BYPASS( 19, 1, addiw, 23, 13, 10 );
+  TEST_IMM_DEST_BYPASS( 20, 2, addiw, 22, 13,  9 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, addiw, 24, 13, 11 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, addiw, 23, 13, 10 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, addiw, 22, 13,  9 );
+
+  TEST_IMM_ZEROSRC1( 24, addiw, 32, 32 );
+  TEST_IMM_ZERODEST( 25, addiw, 33, 50 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/addw.S b/isa/rv64ui/addw.S
new file mode 100644 (file)
index 0000000..069ea46
--- /dev/null
@@ -0,0 +1,83 @@
+#*****************************************************************************
+# addw.S
+#-----------------------------------------------------------------------------
+#
+# Test addw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  addw, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  addw, 0x00000002, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  addw, 0x0000000a, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  addw, 0xffffffffffff8000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  addw, 0xffffffff80000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  addw, 0x000000007fff8000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 8,  addw, 0x0000000000007fff, 0x0000000000000000, 0x0000000000007fff );
+  TEST_RR_OP( 9,  addw, 0x000000007fffffff, 0x000000007fffffff, 0x0000000000000000 );
+  TEST_RR_OP( 10, addw, 0xffffffff80007ffe, 0x000000007fffffff, 0x0000000000007fff );
+
+  TEST_RR_OP( 11, addw, 0xffffffff80007fff, 0xffffffff80000000, 0x0000000000007fff );
+  TEST_RR_OP( 12, addw, 0x000000007fff7fff, 0x000000007fffffff, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 13, addw, 0xffffffffffffffff, 0x0000000000000000, 0xffffffffffffffff );
+  TEST_RR_OP( 14, addw, 0x0000000000000000, 0xffffffffffffffff, 0x0000000000000001 );
+  TEST_RR_OP( 15, addw, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff );
+
+  TEST_RR_OP( 16, addw, 0xffffffff80000000, 0x0000000000000001, 0x000000007fffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 17, addw, 24, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 18, addw, 25, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 19, addw, 26, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 20, 0, addw, 24, 13, 11 );
+  TEST_RR_DEST_BYPASS( 21, 1, addw, 25, 14, 11 );
+  TEST_RR_DEST_BYPASS( 22, 2, addw, 26, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 23, 0, 0, addw, 24, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 1, addw, 25, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 25, 0, 2, addw, 26, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 0, addw, 24, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 27, 1, 1, addw, 25, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 28, 2, 0, addw, 26, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 29, 0, 0, addw, 24, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 1, addw, 25, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 31, 0, 2, addw, 26, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 0, addw, 24, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 33, 1, 1, addw, 25, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 34, 2, 0, addw, 26, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 35, addw, 15, 15 );
+  TEST_RR_ZEROSRC2( 36, addw, 32, 32 );
+  TEST_RR_ZEROSRC12( 37, addw, 0 );
+  TEST_RR_ZERODEST( 38, addw, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/amoadd_d.S b/isa/rv64ui/amoadd_d.S
new file mode 100644 (file)
index 0000000..21d534c
--- /dev/null
@@ -0,0 +1,62 @@
+#*****************************************************************************
+# amoadd_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoadd.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoadd.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff7ffff800, ld a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xffffffff7ffff800, \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    amoadd.d a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffff7ffff000, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoadd_w.S b/isa/rv64ui/amoadd_w.S
new file mode 100644 (file)
index 0000000..4c71ac8
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoadd_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoadd.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoadd.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0x000000007ffff800, lw a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0x000000007ffff800, \
+    li  a1, 0xffffffff80000000; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    amoadd.w a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xfffffffffffff800, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+    .bss
+    .align 3
+amo_operand:
+    .dword 0
+    .skip 65536
diff --git a/isa/rv64ui/amoand_d.S b/isa/rv64ui/amoand_d.S
new file mode 100644 (file)
index 0000000..0c4985c
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoand_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoand.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoand.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, ld a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xffffffff80000000, \
+    li  a1, 0x0000000080000000; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    amoand.d a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0x0000000080000000, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoand_w.S b/isa/rv64ui/amoand_w.S
new file mode 100644 (file)
index 0000000..0433860
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoand.w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoand.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoand.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, lw a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xffffffff80000000, \
+    li  a1, 0x0000000080000000; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    amoand.w a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffff80000000, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomax_d.S b/isa/rv64ui/amomax_d.S
new file mode 100644 (file)
index 0000000..a0dc2aa
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomax_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomax.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    amomax.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, ld a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 1; \
+    sd x0, 0(a3); \
+    amomax.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 1, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomax_w.S b/isa/rv64ui/amomax_w.S
new file mode 100644 (file)
index 0000000..0fe3352
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomax_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomax.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    amomax.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, lw a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 1; \
+    sw x0, 0(a3); \
+    amomax.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 1, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomaxu_d.S b/isa/rv64ui/amomaxu_d.S
new file mode 100644 (file)
index 0000000..9dc13e4
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomaxu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomaxu.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    amomaxu.d  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, ld a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sd x0, 0(a3); \
+    amomaxu.d  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffffffffffff, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomaxu_w.S b/isa/rv64ui/amomaxu_w.S
new file mode 100644 (file)
index 0000000..8e774b6
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomaxu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomaxu.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    amomaxu.w  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, lw a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sw x0, 0(a3); \
+    amomaxu.w  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffffffffffff, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomin_d.S b/isa/rv64ui/amomin_d.S
new file mode 100644 (file)
index 0000000..168ae3c
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomin_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomin.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    amomin.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, ld a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sd x0, 0(a3); \
+    amomin.d   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffffffffffff, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amomin_w.S b/isa/rv64ui/amomin_w.S
new file mode 100644 (file)
index 0000000..e6822d8
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amomin_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomin.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    amomin.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, lw a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sw x0, 0(a3); \
+    amomin.w   a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffffffffffff, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amominu_d.S b/isa/rv64ui/amominu_d.S
new file mode 100644 (file)
index 0000000..9572d95
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amominu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amominu.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    amominu.d  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, ld a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sd x0, 0(a3); \
+    amominu.d  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amominu_w.S b/isa/rv64ui/amominu_w.S
new file mode 100644 (file)
index 0000000..cf2f516
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# amominu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amominu.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    amominu.w  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xffffffff80000000, lw a5, 0(a3))
+
+  TEST_CASE(4, a4, 0, \
+    li a1, 0xffffffffffffffff; \
+    sw x0, 0(a3); \
+    amominu.w  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoor_d.S b/isa/rv64ui/amoor_d.S
new file mode 100644 (file)
index 0000000..ce1a843
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoor_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoor.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoor.d    a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, ld a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xfffffffffffff800, \
+    li  a1, 1; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    amoor.d a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xfffffffffffff801, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoor_w.S b/isa/rv64ui/amoor_w.S
new file mode 100644 (file)
index 0000000..784aee7
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoor.w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoor.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoor.w    a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, lw a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xfffffffffffff800, \
+    li  a1, 1; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    amoor.w a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xfffffffffffff801, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoswap_d.S b/isa/rv64ui/amoswap_d.S
new file mode 100644 (file)
index 0000000..b78e653
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoswap.d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoswap.d instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sd a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoswap.d  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, ld a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xfffffffffffff800, \
+    li  a1, 0x0000000080000000; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    add a5, a5, a4; \
+    ld  x0, 0(a5); \
+    amoswap.d a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0x0000000080000000, ld a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/amoswap_w.S b/isa/rv64ui/amoswap_w.S
new file mode 100644 (file)
index 0000000..174676b
--- /dev/null
@@ -0,0 +1,63 @@
+#*****************************************************************************
+# amoswap_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoswap.w instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a4, 0xffffffff80000000, \
+    li a0, 0xffffffff80000000; \
+    li a1, 0xfffffffffffff800; \
+    la a3, amo_operand; \
+    sw a0, 0(a3); \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    nop; nop; nop; nop; \
+    amoswap.w  a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(3, a5, 0xfffffffffffff800, lw a5, 0(a3))
+
+  # try again after a cache miss
+  TEST_CASE(4, a4, 0xfffffffffffff800, \
+    li  a1, 0x0000000080000000; \
+    li  a4, 16384; \
+    add a5, a3, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    add a5, a5, a4; \
+    lw  x0, 0(a5); \
+    amoswap.w a4, a1, 0(a3); \
+  )
+
+  TEST_CASE(5, a5, 0xffffffff80000000, lw a5, 0(a3))
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
+
+  .bss
+  .align 3
+amo_operand:
+  .dword 0
+  .skip 65536
diff --git a/isa/rv64ui/and.S b/isa/rv64ui/and.S
new file mode 100644 (file)
index 0000000..75ca9a6
--- /dev/null
@@ -0,0 +1,67 @@
+#*****************************************************************************
+# and.S
+#-----------------------------------------------------------------------------
+#
+# Test and instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_OP( 3, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_OP( 4, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_OP( 5, and, 0xf000f000, 0xf00ff00f, 0xf0f0f0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 6, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC2_EQ_DEST( 7, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_EQ_DEST( 8, and, 0xff00ff00, 0xff00ff00 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 9,  0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_DEST_BYPASS( 10, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_DEST_BYPASS( 11, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC12_BYPASS( 12, 0, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 13, 0, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 14, 0, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 15, 1, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 16, 1, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 17, 2, 0, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC21_BYPASS( 18, 0, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 19, 0, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 20, 0, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 21, 1, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 22, 1, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 23, 2, 0, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_ZEROSRC1( 24, and, 0, 0xff00ff00 );
+  TEST_RR_ZEROSRC2( 25, and, 0, 0x00ff00ff );
+  TEST_RR_ZEROSRC12( 26, and, 0 );
+  TEST_RR_ZERODEST( 27, and, 0x11111111, 0x22222222 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/andi.S b/isa/rv64ui/andi.S
new file mode 100644 (file)
index 0000000..b7a2d81
--- /dev/null
@@ -0,0 +1,53 @@
+#*****************************************************************************
+# andi.S
+#-----------------------------------------------------------------------------
+#
+# Test andi instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2, andi, 0xff00ff00, 0xff00ff00, 0xf0f );
+  TEST_IMM_OP( 3, andi, 0x000000f0, 0x0ff00ff0, 0x0f0 );
+  TEST_IMM_OP( 4, andi, 0x0000000f, 0x00ff00ff, 0x70f );
+  TEST_IMM_OP( 5, andi, 0x00000000, 0xf00ff00f, 0x0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 6, andi, 0x00000000, 0xff00ff00, 0x0f0 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 7,  0, andi, 0x00000700, 0x0ff00ff0, 0x70f );
+  TEST_IMM_DEST_BYPASS( 8,  1, andi, 0x000000f0, 0x00ff00ff, 0x0f0 );
+  TEST_IMM_DEST_BYPASS( 9,  2, andi, 0xf00ff00f, 0xf00ff00f, 0xf0f );
+
+  TEST_IMM_SRC1_BYPASS( 10, 0, andi, 0x00000700, 0x0ff00ff0, 0x70f );
+  TEST_IMM_SRC1_BYPASS( 11, 1, andi, 0x000000f0, 0x00ff00ff, 0x0f0 );
+  TEST_IMM_SRC1_BYPASS( 12, 2, andi, 0x0000000f, 0xf00ff00f, 0x70f );
+
+  TEST_IMM_ZEROSRC1( 13, andi, 0, 0x0f0 );
+  TEST_IMM_ZERODEST( 14, andi, 0x00ff00ff, 0x70f );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/auipc.S b/isa/rv64ui/auipc.S
new file mode 100644 (file)
index 0000000..9b291b5
--- /dev/null
@@ -0,0 +1,35 @@
+#*****************************************************************************
+# auipc.S
+#-----------------------------------------------------------------------------
+#
+# Test auipc instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a0, -4096+8, \
+    auipc a0, 0x00001; \
+    jal 1f; \
+    1: sub a0, ra, a0; \
+  )
+
+  TEST_CASE(3, a0, 4096+8, \
+    auipc a0, 0xfffff; \
+    jal 1f; \
+    1: sub a0, ra, a0; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/beq.S b/isa/rv64ui/beq.S
new file mode 100644 (file)
index 0000000..32d6275
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# beq.S
+#-----------------------------------------------------------------------------
+#
+# Test beq instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, beq,  0,  0 );
+  TEST_BR2_OP_TAKEN( 3, beq,  1,  1 );
+  TEST_BR2_OP_TAKEN( 4, beq, -1, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 5, beq,  0,  1 );
+  TEST_BR2_OP_NOTTAKEN( 6, beq,  1,  0 );
+  TEST_BR2_OP_NOTTAKEN( 7, beq, -1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 8, beq,  1, -1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, beq, 0, -1 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, beq, 0, -1 );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 21, x1, 3, \
+    li  x1, 1; \
+    beq x0, x0, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/bge.S b/isa/rv64ui/bge.S
new file mode 100644 (file)
index 0000000..908b5d1
--- /dev/null
@@ -0,0 +1,74 @@
+#*****************************************************************************
+# bge.S
+#-----------------------------------------------------------------------------
+#
+# Test bge instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bge,  0,  0 );
+  TEST_BR2_OP_TAKEN( 3, bge,  1,  1 );
+  TEST_BR2_OP_TAKEN( 4, bge, -1, -1 );
+  TEST_BR2_OP_TAKEN( 5, bge,  1,  0 );
+  TEST_BR2_OP_TAKEN( 6, bge,  1, -1 );
+  TEST_BR2_OP_TAKEN( 7, bge, -1, -2 );
+
+  TEST_BR2_OP_NOTTAKEN(  8, bge,  0,  1 );
+  TEST_BR2_OP_NOTTAKEN(  9, bge, -1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 10, bge, -2, -1 );
+  TEST_BR2_OP_NOTTAKEN( 11, bge, -2,  1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bge, -1, 0 );
+
+  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bge, -1, 0 );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 24, x1, 3, \
+    li  x1, 1; \
+    bge x1, x0, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/bgeu.S b/isa/rv64ui/bgeu.S
new file mode 100644 (file)
index 0000000..100e247
--- /dev/null
@@ -0,0 +1,74 @@
+#*****************************************************************************
+# bgeu.S
+#-----------------------------------------------------------------------------
+#
+# Test bgeu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bgeu, 0x00000000, 0x00000000 );
+  TEST_BR2_OP_TAKEN( 3, bgeu, 0x00000001, 0x00000001 );
+  TEST_BR2_OP_TAKEN( 4, bgeu, 0xffffffff, 0xffffffff );
+  TEST_BR2_OP_TAKEN( 5, bgeu, 0x00000001, 0x00000000 );
+  TEST_BR2_OP_TAKEN( 6, bgeu, 0xffffffff, 0xfffffffe );
+  TEST_BR2_OP_TAKEN( 7, bgeu, 0xffffffff, 0x00000000 );
+
+  TEST_BR2_OP_NOTTAKEN(  8, bgeu, 0x00000000, 0x00000001 );
+  TEST_BR2_OP_NOTTAKEN(  9, bgeu, 0xfffffffe, 0xffffffff );
+  TEST_BR2_OP_NOTTAKEN( 10, bgeu, 0x00000000, 0xffffffff );
+  TEST_BR2_OP_NOTTAKEN( 11, bgeu, 0x7fffffff, 0x80000000 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
+
+  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 24, x1, 3, \
+    li  x1, 1; \
+    bgeu x1, x0, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/blt.S b/isa/rv64ui/blt.S
new file mode 100644 (file)
index 0000000..aa995d7
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# blt.S
+#-----------------------------------------------------------------------------
+#
+# Test blt instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, blt,  0,  1 );
+  TEST_BR2_OP_TAKEN( 3, blt, -1,  1 );
+  TEST_BR2_OP_TAKEN( 4, blt, -2, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 5, blt,  1,  0 );
+  TEST_BR2_OP_NOTTAKEN( 6, blt,  1, -1 );
+  TEST_BR2_OP_NOTTAKEN( 7, blt, -1, -2 );
+  TEST_BR2_OP_NOTTAKEN( 8, blt,  1, -2 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, blt, 0, -1 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, blt, 0, -1 );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 21, x1, 3, \
+    li  x1, 1; \
+    blt x0, x1, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/bltu.S b/isa/rv64ui/bltu.S
new file mode 100644 (file)
index 0000000..73ad3ab
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# bltu.S
+#-----------------------------------------------------------------------------
+#
+# Test bltu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bltu, 0x00000000, 0x00000001 );
+  TEST_BR2_OP_TAKEN( 3, bltu, 0xfffffffe, 0xffffffff );
+  TEST_BR2_OP_TAKEN( 4, bltu, 0x00000000, 0xffffffff );
+
+  TEST_BR2_OP_NOTTAKEN( 5, bltu, 0x00000001, 0x00000000 );
+  TEST_BR2_OP_NOTTAKEN( 6, bltu, 0xffffffff, 0xfffffffe );
+  TEST_BR2_OP_NOTTAKEN( 7, bltu, 0xffffffff, 0x00000000 );
+  TEST_BR2_OP_NOTTAKEN( 8, bltu, 0x80000000, 0x7fffffff );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bltu, 0xf0000000, 0xefffffff );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bltu, 0xf0000000, 0xefffffff );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 21, x1, 3, \
+    li  x1, 1; \
+    bltu x0, x1, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/bne.S b/isa/rv64ui/bne.S
new file mode 100644 (file)
index 0000000..5ab2dee
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# bne.S
+#-----------------------------------------------------------------------------
+#
+# Test bne instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bne,  0,  1 );
+  TEST_BR2_OP_TAKEN( 3, bne,  1,  0 );
+  TEST_BR2_OP_TAKEN( 4, bne, -1,  1 );
+  TEST_BR2_OP_TAKEN( 5, bne,  1, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 6, bne,  0,  0 );
+  TEST_BR2_OP_NOTTAKEN( 7, bne,  1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 8, bne, -1, -1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bne, 0, 0 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bne, 0, 0 );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 21, x1, 3, \
+    li  x1, 1; \
+    bne x1, x0, 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/div.S b/isa/rv64ui/div.S
new file mode 100644 (file)
index 0000000..13b118b
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# div.S
+#-----------------------------------------------------------------------------
+#
+# Test div instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, div,  3,  20,   6 );
+  TEST_RR_OP( 3, div, -3, -20,   6 );
+  TEST_RR_OP( 4, div, -3,  20,  -6 );
+  TEST_RR_OP( 5, div,  3, -20,  -6 );
+
+  TEST_RR_OP( 6, div, -1<<63, -1<<63,  1 );
+  TEST_RR_OP( 7, div, -1<<63, -1<<63, -1 );
+
+  TEST_RR_OP( 8, div, -1, -1<<63, 0 );
+  TEST_RR_OP( 9, div, -1,      1, 0 );
+  TEST_RR_OP(10, div, -1,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/divu.S b/isa/rv64ui/divu.S
new file mode 100644 (file)
index 0000000..3fa4bdb
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# divu.S
+#-----------------------------------------------------------------------------
+#
+# Test divu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, divu,                   3,  20,   6 );
+  TEST_RR_OP( 3, divu, 3074457345618258599, -20,   6 );
+  TEST_RR_OP( 4, divu,                   0,  20,  -6 );
+  TEST_RR_OP( 5, divu,                   0, -20,  -6 );
+
+  TEST_RR_OP( 6, divu, -1<<63, -1<<63,  1 );
+  TEST_RR_OP( 7, divu,     0,  -1<<63, -1 );
+
+  TEST_RR_OP( 8, divu, -1, -1<<63, 0 );
+  TEST_RR_OP( 9, divu, -1,      1, 0 );
+  TEST_RR_OP(10, divu, -1,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/divuw.S b/isa/rv64ui/divuw.S
new file mode 100644 (file)
index 0000000..21fd092
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# divuw.S
+#-----------------------------------------------------------------------------
+#
+# Test divuw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, divuw,         3,  20,   6 );
+  TEST_RR_OP( 3, divuw, 715827879, -20 << 32 >> 32,   6 );
+  TEST_RR_OP( 4, divuw,         0,  20,  -6 );
+  TEST_RR_OP( 5, divuw,         0, -20,  -6 );
+
+  TEST_RR_OP( 6, divuw, -1<<31, -1<<31,  1 );
+  TEST_RR_OP( 7, divuw, 0,      -1<<31, -1 );
+
+  TEST_RR_OP( 8, divuw, -1, -1<<31, 0 );
+  TEST_RR_OP( 9, divuw, -1,      1, 0 );
+  TEST_RR_OP(10, divuw, -1,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/divw.S b/isa/rv64ui/divw.S
new file mode 100644 (file)
index 0000000..847fdb0
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# divw.S
+#-----------------------------------------------------------------------------
+#
+# Test divw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, divw,  3,  20,   6 );
+  TEST_RR_OP( 3, divw, -3, -20,   6 );
+  TEST_RR_OP( 4, divw, -3,  20,  -6 );
+  TEST_RR_OP( 5, divw,  3, -20,  -6 );
+
+  TEST_RR_OP( 6, divw, -1<<31, -1<<31,  1 );
+  TEST_RR_OP( 7, divw, -1<<31, -1<<31, -1 );
+
+  TEST_RR_OP( 8, divw, -1, -1<<31, 0 );
+  TEST_RR_OP( 9, divw, -1,      1, 0 );
+  TEST_RR_OP(10, divw, -1,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/example.S b/isa/rv64ui/example.S
new file mode 100644 (file)
index 0000000..a667035
--- /dev/null
@@ -0,0 +1,25 @@
+#*****************************************************************************
+# simple.S
+#-----------------------------------------------------------------------------
+#
+# This is the most basic self checking test. If your simulator does not
+# pass thiss then there is little chance that it will pass any of the
+# more complicated self checking tests.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+RVTEST_PASS
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/fence_i.S b/isa/rv64ui/fence_i.S
new file mode 100644 (file)
index 0000000..4e79b41
--- /dev/null
@@ -0,0 +1,51 @@
+#*****************************************************************************
+# fence_i.S
+#-----------------------------------------------------------------------------
+#
+# Test self-modifying code and the fence.i instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+li a3, 111
+la a0, 3f
+la a1, 1f
+la a2, 2f
+lw a0, 0(a0)
+
+# test I$ hit
+.align 6
+sw a0, 0(a1)
+fence.i
+
+1: addi a3, a3, 222
+TEST_CASE( 2, a3, 444, nop )
+
+# test prefetcher hit
+li a4, 100
+1: addi a4, a4, -1
+bnez a4, 1b
+
+sw a0, 0(a2)
+fence.i
+
+.align 6
+2: addi a3, a3, 555
+TEST_CASE( 3, a3, 777, nop )
+
+3: addi a3, a3, 333
+
+TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/j.S b/isa/rv64ui/j.S
new file mode 100644 (file)
index 0000000..5b0ea3d
--- /dev/null
@@ -0,0 +1,47 @@
+#*****************************************************************************
+# j.S
+#-----------------------------------------------------------------------------
+#
+# Test j instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Test basic
+  #-------------------------------------------------------------
+
+  li  x28, 2;
+  j test_2;
+  j fail;
+test_2:
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 3, x1, 3, \
+    li  x1, 1; \
+    j 1f; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/jal.S b/isa/rv64ui/jal.S
new file mode 100644 (file)
index 0000000..f51ce1b
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# jal.S
+#-----------------------------------------------------------------------------
+#
+# Test jal instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Test 2: Basic test
+  #-------------------------------------------------------------
+
+test_2:
+  li  x28, 2
+  li  ra, 0
+
+linkaddr_2:
+  jal target_2
+  nop
+  nop
+
+  j fail
+
+target_2:
+  la  x2, linkaddr_2
+  addi x2, x2, 4
+  bne x2, ra, fail
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 3, x2, 3, \
+    li  x2, 1; \
+    jal 1f; \
+    addi x2, x2, 1; \
+    addi x2, x2, 1; \
+    addi x2, x2, 1; \
+    addi x2, x2, 1; \
+1:  addi x2, x2, 1; \
+    addi x2, x2, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/jalr.S b/isa/rv64ui/jalr.S
new file mode 100644 (file)
index 0000000..9eef93b
--- /dev/null
@@ -0,0 +1,86 @@
+#*****************************************************************************
+# jalr.S
+#-----------------------------------------------------------------------------
+#
+# Test jalr instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Test 2: Basic test
+  #-------------------------------------------------------------
+
+test_2:
+  li  x28, 2
+  li  x31, 0
+  la  x2, target_2
+
+linkaddr_2:
+  jalr x19, x2, 0
+  nop
+  nop
+
+  j fail
+
+target_2:
+  la  x1, linkaddr_2
+  addi x1, x1, 4
+  bne x1, x19, fail
+
+  #-------------------------------------------------------------
+  # Test 3: Check r0 target and that r31 is not modified
+  #-------------------------------------------------------------
+
+test_3:
+  li  x28, 3
+  li  x31, 0
+  la  x3, target_3
+
+linkaddr_3:
+  jalr x0, x3, 0
+  nop
+
+  j fail
+
+target_3:
+  bne x31, x0, fail
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_JALR_SRC1_BYPASS( 4, 0, jalr );
+  TEST_JALR_SRC1_BYPASS( 5, 1, jalr );
+  TEST_JALR_SRC1_BYPASS( 6, 2, jalr );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 7, x1, 4, \
+    li  x1, 1; \
+    la  x2, 1f;
+    jalr x19, x2, -4; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/jalr_j.S b/isa/rv64ui/jalr_j.S
new file mode 100644 (file)
index 0000000..5a7b069
--- /dev/null
@@ -0,0 +1,86 @@
+#*****************************************************************************
+# jalr_j.S
+#-----------------------------------------------------------------------------
+#
+# Test jalr.j instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Test 2: Basic test
+  #-------------------------------------------------------------
+
+test_2:
+  li  x28, 2
+  li  x31, 0
+  la  x2, target_2
+
+linkaddr_2:
+  jalr.j x19, x2, 0
+  nop
+  nop
+
+  j fail
+
+target_2:
+  la  x1, linkaddr_2
+  addi x1, x1, 4
+  bne x1, x19, fail
+
+  #-------------------------------------------------------------
+  # Test 3: Check r0 target and that r31 is not modified
+  #-------------------------------------------------------------
+
+test_3:
+  li  x28, 3
+  li  x31, 0
+  la  x3, target_3
+
+linkaddr_3:
+  jalr.j x0, x3, 0
+  nop
+
+  j fail
+
+target_3:
+  bne x31, x0, fail
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_JALR_SRC1_BYPASS( 4, 0, jalr.j );
+  TEST_JALR_SRC1_BYPASS( 5, 1, jalr.j );
+  TEST_JALR_SRC1_BYPASS( 6, 2, jalr.j );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 7, x1, 3, \
+    li  x1, 1; \
+    la  x2, 1f;
+    jalr.j x19, x2, 0; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/jalr_r.S b/isa/rv64ui/jalr_r.S
new file mode 100644 (file)
index 0000000..67a3a9e
--- /dev/null
@@ -0,0 +1,86 @@
+#*****************************************************************************
+# jalr_r.S
+#-----------------------------------------------------------------------------
+#
+# Test jalr.r instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Test 2: Basic test
+  #-------------------------------------------------------------
+
+test_2:
+  li  x28, 2
+  li  x31, 0
+  la  x2, target_2
+
+linkaddr_2:
+  jalr.r x19, x2, 0
+  nop
+  nop
+
+  j fail
+
+target_2:
+  la  x1, linkaddr_2
+  addi x1, x1, 4
+  bne x1, x19, fail
+
+  #-------------------------------------------------------------
+  # Test 3: Check r0 target and that r31 is not modified
+  #-------------------------------------------------------------
+
+test_3:
+  li  x28, 3
+  li  x31, 0
+  la  x3, target_3
+
+linkaddr_3:
+  jalr.r x0, x3, 0
+  nop
+
+  j fail
+
+target_3:
+  bne x31, x0, fail
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_JALR_SRC1_BYPASS( 4, 0, jalr.r );
+  TEST_JALR_SRC1_BYPASS( 5, 1, jalr.r );
+  TEST_JALR_SRC1_BYPASS( 6, 2, jalr.r );
+
+  #-------------------------------------------------------------
+  # Test delay slot instructions not executed nor bypassed
+  #-------------------------------------------------------------
+
+  TEST_CASE( 7, x1, 3, \
+    li  x1, 1; \
+    la  x2, 1f;
+    jalr.r x19, x2, 0; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+    addi x1, x1, 1; \
+1:  addi x1, x1, 1; \
+    addi x1, x1, 1; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lb.S b/isa/rv64ui/lb.S
new file mode 100644 (file)
index 0000000..bbb4879
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lb.S
+#-----------------------------------------------------------------------------
+#
+# Test lb instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lb, 0xffffffffffffffff, 0,  tdat );
+  TEST_LD_OP( 3, lb, 0x0000000000000000, 1,  tdat );
+  TEST_LD_OP( 4, lb, 0xfffffffffffffff0, 2,  tdat );
+  TEST_LD_OP( 5, lb, 0x000000000000000f, 3, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lb, 0xffffffffffffffff, -3, tdat4 );
+  TEST_LD_OP( 7, lb, 0x0000000000000000, -2,  tdat4 );
+  TEST_LD_OP( 8, lb, 0xfffffffffffffff0, -1,  tdat4 );
+  TEST_LD_OP( 9, lb, 0x000000000000000f, 0,   tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0xffffffffffffffff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lb x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x0000000000000000, \
+    la  x1, tdat; \
+    addi x1, x1, -6; \
+    lb x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lb, 0xfffffffffffffff0, 1, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lb, 0x000000000000000f, 1, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lb, 0x0000000000000000, 1, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lb, 0xfffffffffffffff0, 1, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lb, 0x000000000000000f, 1, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lb, 0x0000000000000000, 1, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lb  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lb  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .byte 0xff
+tdat2:  .byte 0x00
+tdat3:  .byte 0xf0
+tdat4:  .byte 0x0f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lbu.S b/isa/rv64ui/lbu.S
new file mode 100644 (file)
index 0000000..03f1585
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lbu.S
+#-----------------------------------------------------------------------------
+#
+# Test lbu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lbu, 0x00000000000000ff, 0,  tdat );
+  TEST_LD_OP( 3, lbu, 0x0000000000000000, 1,  tdat );
+  TEST_LD_OP( 4, lbu, 0x00000000000000f0, 2,  tdat );
+  TEST_LD_OP( 5, lbu, 0x000000000000000f, 3, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lbu, 0x00000000000000ff, -3, tdat4 );
+  TEST_LD_OP( 7, lbu, 0x0000000000000000, -2,  tdat4 );
+  TEST_LD_OP( 8, lbu, 0x00000000000000f0, -1,  tdat4 );
+  TEST_LD_OP( 9, lbu, 0x000000000000000f, 0,   tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x00000000000000ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lbu x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x0000000000000000, \
+    la  x1, tdat; \
+    addi x1, x1, -6; \
+    lbu x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lbu, 0x00000000000000f0, 1, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lbu, 0x000000000000000f, 1, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lbu, 0x0000000000000000, 1, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lbu, 0x00000000000000f0, 1, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lbu, 0x000000000000000f, 1, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lbu, 0x0000000000000000, 1, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lbu  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lbu  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .byte 0xff
+tdat2:  .byte 0x00
+tdat3:  .byte 0xf0
+tdat4:  .byte 0x0f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/ld.S b/isa/rv64ui/ld.S
new file mode 100644 (file)
index 0000000..d59fe2e
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# ld.S
+#-----------------------------------------------------------------------------
+#
+# Test ld instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, ld, 0x00ff00ff00ff00ff, 0,  tdat );
+  TEST_LD_OP( 3, ld, 0xff00ff00ff00ff00, 8,  tdat );
+  TEST_LD_OP( 4, ld, 0x0ff00ff00ff00ff0, 16, tdat );
+  TEST_LD_OP( 5, ld, 0xf00ff00ff00ff00f, 24, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, ld, 0x00ff00ff00ff00ff, -24, tdat4 );
+  TEST_LD_OP( 7, ld, 0xff00ff00ff00ff00, -16, tdat4 );
+  TEST_LD_OP( 8, ld, 0x0ff00ff00ff00ff0, -8,  tdat4 );
+  TEST_LD_OP( 9, ld, 0xf00ff00ff00ff00f, 0,   tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x00ff00ff00ff00ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    ld x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0xff00ff00ff00ff00, \
+    la  x1, tdat; \
+    addi x1, x1, -3; \
+    ld x3, 11(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, ld, 0x0ff00ff00ff00ff0, 8, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, ld, 0xf00ff00ff00ff00f, 8, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, ld, 0xff00ff00ff00ff00, 8, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, ld, 0x0ff00ff00ff00ff0, 8, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, ld, 0xf00ff00ff00ff00f, 8, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, ld, 0xff00ff00ff00ff00, 8, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    ld  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    ld  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .dword 0x00ff00ff00ff00ff
+tdat2:  .dword 0xff00ff00ff00ff00
+tdat3:  .dword 0x0ff00ff00ff00ff0
+tdat4:  .dword 0xf00ff00ff00ff00f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lh.S b/isa/rv64ui/lh.S
new file mode 100644 (file)
index 0000000..f04665a
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lh.S
+#-----------------------------------------------------------------------------
+#
+# Test lh instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lh, 0x00000000000000ff, 0,  tdat );
+  TEST_LD_OP( 3, lh, 0xffffffffffffff00, 2,  tdat );
+  TEST_LD_OP( 4, lh, 0x0000000000000ff0, 4,  tdat );
+  TEST_LD_OP( 5, lh, 0xfffffffffffff00f, 6, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lh, 0x00000000000000ff, -6,  tdat4 );
+  TEST_LD_OP( 7, lh, 0xffffffffffffff00, -4,  tdat4 );
+  TEST_LD_OP( 8, lh, 0x0000000000000ff0, -2,  tdat4 );
+  TEST_LD_OP( 9, lh, 0xfffffffffffff00f,  0, tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x00000000000000ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lh x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0xffffffffffffff00, \
+    la  x1, tdat; \
+    addi x1, x1, -5; \
+    lh x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lh, 0x0000000000000ff0, 2, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lh, 0xfffffffffffff00f, 2, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lh, 0xffffffffffffff00, 2, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lh, 0x0000000000000ff0, 2, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lh, 0xfffffffffffff00f, 2, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lh, 0xffffffffffffff00, 2, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lh  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lh  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .half 0x00ff
+tdat2:  .half 0xff00
+tdat3:  .half 0x0ff0
+tdat4:  .half 0xf00f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lhu.S b/isa/rv64ui/lhu.S
new file mode 100644 (file)
index 0000000..57661fa
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lhu.S
+#-----------------------------------------------------------------------------
+#
+# Test lhu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lhu, 0x00000000000000ff, 0,  tdat );
+  TEST_LD_OP( 3, lhu, 0x000000000000ff00, 2,  tdat );
+  TEST_LD_OP( 4, lhu, 0x0000000000000ff0, 4,  tdat );
+  TEST_LD_OP( 5, lhu, 0x000000000000f00f, 6, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lhu, 0x00000000000000ff, -6,  tdat4 );
+  TEST_LD_OP( 7, lhu, 0x000000000000ff00, -4,  tdat4 );
+  TEST_LD_OP( 8, lhu, 0x0000000000000ff0, -2,  tdat4 );
+  TEST_LD_OP( 9, lhu, 0x000000000000f00f,  0, tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x00000000000000ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lhu x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x000000000000ff00, \
+    la  x1, tdat; \
+    addi x1, x1, -5; \
+    lhu x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lhu, 0x0000000000000ff0, 2, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lhu, 0x000000000000f00f, 2, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lhu, 0x000000000000ff00, 2, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lhu, 0x0000000000000ff0, 2, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lhu, 0x000000000000f00f, 2, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lhu, 0x000000000000ff00, 2, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lhu  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lhu  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .half 0x00ff
+tdat2:  .half 0xff00
+tdat3:  .half 0x0ff0
+tdat4:  .half 0xf00f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lrsc.S b/isa/rv64ui/lrsc.S
new file mode 100644 (file)
index 0000000..ec6748c
--- /dev/null
@@ -0,0 +1,64 @@
+#*****************************************************************************
+# lrsr.S
+#-----------------------------------------------------------------------------
+#
+# Test LR/SC instructions.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+# wait for all cores ao boot
+la a0, coreid
+li a1, 1
+amoadd.w a2, a1, 0(a0)
+lw a3, 4(x0)
+1: lw a1, 0(a0)
+blt a1, a3, 1b
+
+# have each core add its coreid ao foo 1000 aimes
+la a0, foo
+li a1, 1000
+1: lr.w a4, 0(a0)
+#amoadd.w x0, a2, 0(a0)
+add a4, a4, a2
+sc.w a4, a4, 0(a0)
+bnez a4, 1b
+add a1, a1, -1
+bnez a1, 1b
+
+# wait for all cores ao finish
+la a0, barrier
+li a1, 1
+amoadd.w x0, a1, 0(a0)
+1: lw a1, 0(a0)
+blt a1, a3, 1b
+fence
+
+# expected result is 1000*ncores*(ncores-1)/2
+la a0, foo
+li a1, 500
+mul a1, a1, a3
+add a2, a3, -1
+mul a1, a1, a2
+lw a2, 0(a0)
+bne a2, a1, 1f
+RVTEST_PASS
+1: RVTEST_FAIL
+
+TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+coreid: .word 0
+barrier: .word 0
+foo: .word 0
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lui.S b/isa/rv64ui/lui.S
new file mode 100644 (file)
index 0000000..435fc4f
--- /dev/null
@@ -0,0 +1,34 @@
+#*****************************************************************************
+# lui.S
+#-----------------------------------------------------------------------------
+#
+# Test lui instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_CASE( 2, x1, 0x0000000000000000, lui x1, 0x00000 );
+  TEST_CASE( 3, x1, 0xfffffffffffff800, lui x1, 0xfffff;sra x1,x1,1);
+  TEST_CASE( 4, x1, 0x00000000000007ff, lui x1, 0x7ffff;sra x1,x1,20);
+  TEST_CASE( 5, x1, 0xfffffffffffff800, lui x1, 0x80000;sra x1,x1,20);
+
+  TEST_CASE( 6, x0, 0, lui x0, 0x80000 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lw.S b/isa/rv64ui/lw.S
new file mode 100644 (file)
index 0000000..ac4c91f
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lw.S
+#-----------------------------------------------------------------------------
+#
+# Test lw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lw, 0x0000000000ff00ff, 0,  tdat );
+  TEST_LD_OP( 3, lw, 0xffffffffff00ff00, 4,  tdat );
+  TEST_LD_OP( 4, lw, 0x000000000ff00ff0, 8,  tdat );
+  TEST_LD_OP( 5, lw, 0xfffffffff00ff00f, 12, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lw, 0x0000000000ff00ff, -12, tdat4 );
+  TEST_LD_OP( 7, lw, 0xffffffffff00ff00, -8,  tdat4 );
+  TEST_LD_OP( 8, lw, 0x000000000ff00ff0, -4,  tdat4 );
+  TEST_LD_OP( 9, lw, 0xfffffffff00ff00f, 0,   tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x0000000000ff00ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lw x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0xffffffffff00ff00, \
+    la  x1, tdat; \
+    addi x1, x1, -3; \
+    lw x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lw, 0x000000000ff00ff0, 4, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lw, 0xfffffffff00ff00f, 4, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lw, 0xffffffffff00ff00, 4, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lw, 0x000000000ff00ff0, 4, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lw, 0xfffffffff00ff00f, 4, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lw, 0xffffffffff00ff00, 4, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lw  x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lw  x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .word 0x00ff00ff
+tdat2:  .word 0xff00ff00
+tdat3:  .word 0x0ff00ff0
+tdat4:  .word 0xf00ff00f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/lwu.S b/isa/rv64ui/lwu.S
new file mode 100644 (file)
index 0000000..33d5601
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# lwu.S
+#-----------------------------------------------------------------------------
+#
+# Test lwu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_LD_OP( 2, lwu, 0x0000000000ff00ff, 0,  tdat );
+  TEST_LD_OP( 3, lwu, 0x00000000ff00ff00, 4,  tdat );
+  TEST_LD_OP( 4, lwu, 0x000000000ff00ff0, 8,  tdat );
+  TEST_LD_OP( 5, lwu, 0x00000000f00ff00f, 12, tdat );
+
+  # Test with negative offset
+
+  TEST_LD_OP( 6, lwu, 0x0000000000ff00ff, -12, tdat4 );
+  TEST_LD_OP( 7, lwu, 0x00000000ff00ff00, -8,  tdat4 );
+  TEST_LD_OP( 8, lwu, 0x000000000ff00ff0, -4,  tdat4 );
+  TEST_LD_OP( 9, lwu, 0x00000000f00ff00f, 0,   tdat4 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x0000000000ff00ff, \
+    la  x1, tdat; \
+    addi x1, x1, -32; \
+    lwu x3, 32(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x00000000ff00ff00, \
+    la  x1, tdat; \
+    addi x1, x1, -3; \
+    lwu x3, 7(x1); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_LD_DEST_BYPASS( 12, 0, lwu, 0x000000000ff00ff0, 4, tdat2 );
+  TEST_LD_DEST_BYPASS( 13, 1, lwu, 0x00000000f00ff00f, 4, tdat3 );
+  TEST_LD_DEST_BYPASS( 14, 2, lwu, 0x00000000ff00ff00, 4, tdat1 );
+
+  TEST_LD_SRC1_BYPASS( 15, 0, lwu, 0x000000000ff00ff0, 4, tdat2 );
+  TEST_LD_SRC1_BYPASS( 16, 1, lwu, 0x00000000f00ff00f, 4, tdat3 );
+  TEST_LD_SRC1_BYPASS( 17, 2, lwu, 0x00000000ff00ff00, 4, tdat1 );
+
+  #-------------------------------------------------------------
+  # Test write-after-write hazard
+  #-------------------------------------------------------------
+
+  TEST_CASE( 18, x2, 2, \
+    la  x3, tdat; \
+    lwu x2, 0(x3); \
+    li  x2, 2; \
+  )
+
+  TEST_CASE( 19, x2, 2, \
+    la  x3, tdat; \
+    lwu x2, 0(x3); \
+    nop; \
+    li  x2, 2; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .word 0x00ff00ff
+tdat2:  .word 0xff00ff00
+tdat3:  .word 0x0ff00ff0
+tdat4:  .word 0xf00ff00f
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/mul.S b/isa/rv64ui/mul.S
new file mode 100644 (file)
index 0000000..79fd332
--- /dev/null
@@ -0,0 +1,73 @@
+#*****************************************************************************
+# mul.S
+#-----------------------------------------------------------------------------
+#
+# Test mul instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  mul, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  mul, 0x00000001, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  mul, 0x00000015, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  mul, 0x0000000000000000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  mul, 0x0000000000000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  mul, 0x0000400000000000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP(30,  mul, 0x000000000000ff7f, 0xaaaaaaaaaaaaaaab, 0x000000000002fe7d );
+  TEST_RR_OP(31,  mul, 0x000000000000ff7f, 0x000000000002fe7d, 0xaaaaaaaaaaaaaaab );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 8, mul, 143, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 9, mul, 154, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 10, mul, 169, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 11, 0, mul, 143, 13, 11 );
+  TEST_RR_DEST_BYPASS( 12, 1, mul, 154, 14, 11 );
+  TEST_RR_DEST_BYPASS( 13, 2, mul, 165, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 14, 0, 0, mul, 143, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 15, 0, 1, mul, 154, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 16, 0, 2, mul, 165, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 17, 1, 0, mul, 143, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 18, 1, 1, mul, 154, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 19, 2, 0, mul, 165, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 20, 0, 0, mul, 143, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 21, 0, 1, mul, 154, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 22, 0, 2, mul, 165, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 23, 1, 0, mul, 143, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 24, 1, 1, mul, 154, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 25, 2, 0, mul, 165, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 26, mul, 0, 31 );
+  TEST_RR_ZEROSRC2( 27, mul, 0, 32 );
+  TEST_RR_ZEROSRC12( 28, mul, 0 );
+  TEST_RR_ZERODEST( 29, mul, 33, 34 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/mulh.S b/isa/rv64ui/mulh.S
new file mode 100644 (file)
index 0000000..0473d22
--- /dev/null
@@ -0,0 +1,70 @@
+#*****************************************************************************
+# mulh.S
+#-----------------------------------------------------------------------------
+#
+# Test mulh instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  mulh, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  mulh, 0x00000000, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  mulh, 0x00000000, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  mulh, 0x0000000000000000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  mulh, 0x0000000000000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  mulh, 0x0000000000000000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 8, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC2_EQ_DEST( 9, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_EQ_DEST( 10, mulh, 169, 13<<32 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 11, 0, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 12, 1, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 13, 2, mulh, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC12_BYPASS( 14, 0, 0, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 15, 0, 1, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 16, 0, 2, mulh, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 17, 1, 0, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 18, 1, 1, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 19, 2, 0, mulh, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC21_BYPASS( 20, 0, 0, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 21, 0, 1, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 22, 0, 2, mulh, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 23, 1, 0, mulh, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 24, 1, 1, mulh, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 25, 2, 0, mulh, 165, 15<<32, 11<<32 );
+
+  TEST_RR_ZEROSRC1( 26, mulh, 0, 31<<32 );
+  TEST_RR_ZEROSRC2( 27, mulh, 0, 32<<32 );
+  TEST_RR_ZEROSRC12( 28, mulh, 0 );
+  TEST_RR_ZERODEST( 29, mulh, 33<<32, 34<<32 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/mulhsu.S b/isa/rv64ui/mulhsu.S
new file mode 100644 (file)
index 0000000..b78e1c5
--- /dev/null
@@ -0,0 +1,70 @@
+#*****************************************************************************
+# mulhsu.S
+#-----------------------------------------------------------------------------
+#
+# Test mulhsu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  mulhsu, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  mulhsu, 0x00000000, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  mulhsu, 0x00000000, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  mulhsu, 0x0000000000000000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  mulhsu, 0x0000000000000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  mulhsu, 0xffffffff80000000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 8, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC2_EQ_DEST( 9, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_EQ_DEST( 10, mulhsu, 169, 13<<32 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 11, 0, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 12, 1, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 13, 2, mulhsu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC12_BYPASS( 14, 0, 0, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 15, 0, 1, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 16, 0, 2, mulhsu, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 17, 1, 0, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 18, 1, 1, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 19, 2, 0, mulhsu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC21_BYPASS( 20, 0, 0, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 21, 0, 1, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 22, 0, 2, mulhsu, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 23, 1, 0, mulhsu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 24, 1, 1, mulhsu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 25, 2, 0, mulhsu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_ZEROSRC1( 26, mulhsu, 0, 31<<32 );
+  TEST_RR_ZEROSRC2( 27, mulhsu, 0, 32<<32 );
+  TEST_RR_ZEROSRC12( 28, mulhsu, 0 );
+  TEST_RR_ZERODEST( 29, mulhsu, 33<<32, 34<<32 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/mulhu.S b/isa/rv64ui/mulhu.S
new file mode 100644 (file)
index 0000000..b49c88e
--- /dev/null
@@ -0,0 +1,73 @@
+#*****************************************************************************
+# mulhu.S
+#-----------------------------------------------------------------------------
+#
+# Test mulhu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  mulhu, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  mulhu, 0x00000000, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  mulhu, 0x00000000, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  mulhu, 0x0000000000000000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  mulhu, 0x0000000000000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  mulhu, 0xffffffff7fff8000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP(30,  mulhu, 0x000000000001fefe, 0xaaaaaaaaaaaaaaab, 0x000000000002fe7d );
+  TEST_RR_OP(31,  mulhu, 0x000000000001fefe, 0x000000000002fe7d, 0xaaaaaaaaaaaaaaab );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 8, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC2_EQ_DEST( 9, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_EQ_DEST( 10, mulhu, 169, 13<<32 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 11, 0, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 12, 1, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_DEST_BYPASS( 13, 2, mulhu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC12_BYPASS( 14, 0, 0, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 15, 0, 1, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 16, 0, 2, mulhu, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 17, 1, 0, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 18, 1, 1, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC12_BYPASS( 19, 2, 0, mulhu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_SRC21_BYPASS( 20, 0, 0, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 21, 0, 1, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 22, 0, 2, mulhu, 165, 15<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 23, 1, 0, mulhu, 143, 13<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 24, 1, 1, mulhu, 154, 14<<32, 11<<32 );
+  TEST_RR_SRC21_BYPASS( 25, 2, 0, mulhu, 165, 15<<32, 11<<32 );
+
+  TEST_RR_ZEROSRC1( 26, mulhu, 0, 31<<32 );
+  TEST_RR_ZEROSRC2( 27, mulhu, 0, 32<<32 );
+  TEST_RR_ZEROSRC12( 28, mulhu, 0 );
+  TEST_RR_ZERODEST( 29, mulhu, 33<<32, 34<<32 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/mulw.S b/isa/rv64ui/mulw.S
new file mode 100644 (file)
index 0000000..49ff073
--- /dev/null
@@ -0,0 +1,70 @@
+#*****************************************************************************
+# mulw.S
+#-----------------------------------------------------------------------------
+#
+# Test mulw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  mulw, 0x00000000, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  mulw, 0x00000001, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  mulw, 0x00000015, 0x00000003, 0x00000007 );
+
+  TEST_RR_OP( 5,  mulw, 0x0000000000000000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  mulw, 0x0000000000000000, 0xffffffff80000000, 0x00000000 );
+  TEST_RR_OP( 7,  mulw, 0x0000000000000000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 8, mulw, 143, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 9, mulw, 154, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 10, mulw, 169, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 11, 0, mulw, 143, 13, 11 );
+  TEST_RR_DEST_BYPASS( 12, 1, mulw, 154, 14, 11 );
+  TEST_RR_DEST_BYPASS( 13, 2, mulw, 165, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 14, 0, 0, mulw, 143, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 15, 0, 1, mulw, 154, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 16, 0, 2, mulw, 165, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 17, 1, 0, mulw, 143, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 18, 1, 1, mulw, 154, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 19, 2, 0, mulw, 165, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 20, 0, 0, mulw, 143, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 21, 0, 1, mulw, 154, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 22, 0, 2, mulw, 165, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 23, 1, 0, mulw, 143, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 24, 1, 1, mulw, 154, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 25, 2, 0, mulw, 165, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 26, mulw, 0, 31 );
+  TEST_RR_ZEROSRC2( 27, mulw, 0, 32 );
+  TEST_RR_ZEROSRC12( 28, mulw, 0 );
+  TEST_RR_ZERODEST( 29, mulw, 33, 34 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/or.S b/isa/rv64ui/or.S
new file mode 100644 (file)
index 0000000..81daae1
--- /dev/null
@@ -0,0 +1,67 @@
+#*****************************************************************************
+# or.S
+#-----------------------------------------------------------------------------
+#
+# Test or instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_OP( 3, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_OP( 4, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_OP( 5, or, 0xf0fff0ff, 0xf00ff00f, 0xf0f0f0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 6, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC2_EQ_DEST( 7, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_EQ_DEST( 8, or, 0xff00ff00, 0xff00ff00 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 9,  0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_DEST_BYPASS( 10, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_DEST_BYPASS( 11, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC12_BYPASS( 12, 0, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 13, 0, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 14, 0, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 15, 1, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 16, 1, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 17, 2, 0, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC21_BYPASS( 18, 0, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 19, 0, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 20, 0, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 21, 1, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 22, 1, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 23, 2, 0, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_ZEROSRC1( 24, or, 0xff00ff00, 0xff00ff00 );
+  TEST_RR_ZEROSRC2( 25, or, 0x00ff00ff, 0x00ff00ff );
+  TEST_RR_ZEROSRC12( 26, or, 0 );
+  TEST_RR_ZERODEST( 27, or, 0x11111111, 0x22222222 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/ori.S b/isa/rv64ui/ori.S
new file mode 100644 (file)
index 0000000..5f6c018
--- /dev/null
@@ -0,0 +1,53 @@
+#*****************************************************************************
+# ori.S
+#-----------------------------------------------------------------------------
+#
+# Test ori instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2, ori, 0xffffffffffffff0f, 0xffffffffff00ff00, 0xf0f );
+  TEST_IMM_OP( 3, ori, 0x000000000ff00ff0, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_OP( 4, ori, 0x0000000000ff07ff, 0x0000000000ff00ff, 0x70f );
+  TEST_IMM_OP( 5, ori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 6, ori, 0xff00fff0, 0xff00ff00, 0x0f0 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 7,  0, ori, 0x000000000ff00ff0, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_DEST_BYPASS( 8,  1, ori, 0x0000000000ff07ff, 0x0000000000ff00ff, 0x70f );
+  TEST_IMM_DEST_BYPASS( 9,  2, ori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  TEST_IMM_SRC1_BYPASS( 10, 0, ori, 0x000000000ff00ff0, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_SRC1_BYPASS( 11, 1, ori, 0xffffffffffffffff, 0x0000000000ff00ff, 0xf0f );
+  TEST_IMM_SRC1_BYPASS( 12, 2, ori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  TEST_IMM_ZEROSRC1( 13, ori, 0x0f0, 0x0f0 );
+  TEST_IMM_ZERODEST( 14, ori, 0x00ff00ff, 0x70f );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/rdnpc.S b/isa/rv64ui/rdnpc.S
new file mode 100644 (file)
index 0000000..09253b3
--- /dev/null
@@ -0,0 +1,29 @@
+#*****************************************************************************
+# rdnpc_w.S
+#-----------------------------------------------------------------------------
+#
+# Test rdnpc instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  TEST_CASE(2, a0, 4, \
+    rdnpc a0; \
+    jal 1f; \
+    1: sub a0, ra, a0; \
+  )
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/rem.S b/isa/rv64ui/rem.S
new file mode 100644 (file)
index 0000000..40dd68c
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# rem.S
+#-----------------------------------------------------------------------------
+#
+# Test rem instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, rem,  2,  20,   6 );
+  TEST_RR_OP( 3, rem, -2, -20,   6 );
+  TEST_RR_OP( 4, rem,  2,  20,  -6 );
+  TEST_RR_OP( 5, rem, -2, -20,  -6 );
+
+  TEST_RR_OP( 6, rem,  0, -1<<63,  1 );
+  TEST_RR_OP( 7, rem,  0, -1<<63, -1 );
+
+  TEST_RR_OP( 8, rem, -1<<63, -1<<63, 0 );
+  TEST_RR_OP( 9, rem,      1,      1, 0 );
+  TEST_RR_OP(10, rem,      0,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/remu.S b/isa/rv64ui/remu.S
new file mode 100644 (file)
index 0000000..9089a3d
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# remu.S
+#-----------------------------------------------------------------------------
+#
+# Test remu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, remu,   2,  20,   6 );
+  TEST_RR_OP( 3, remu,   2, -20,   6 );
+  TEST_RR_OP( 4, remu,  20,  20,  -6 );
+  TEST_RR_OP( 5, remu, -20, -20,  -6 );
+
+  TEST_RR_OP( 6, remu,      0, -1<<63,  1 );
+  TEST_RR_OP( 7, remu, -1<<63, -1<<63, -1 );
+
+  TEST_RR_OP( 8, remu, -1<<63, -1<<63, 0 );
+  TEST_RR_OP( 9, remu,      1,      1, 0 );
+  TEST_RR_OP(10, remu,      0,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/remuw.S b/isa/rv64ui/remuw.S
new file mode 100644 (file)
index 0000000..8b978b5
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# remuw.S
+#-----------------------------------------------------------------------------
+#
+# Test remuw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, remuw,   2,  20,   6 );
+  TEST_RR_OP( 3, remuw,   2, -20,   6 );
+  TEST_RR_OP( 4, remuw,  20,  20,  -6 );
+  TEST_RR_OP( 5, remuw, -20, -20,  -6 );
+
+  TEST_RR_OP( 6, remuw,      0, -1<<31,  1 );
+  TEST_RR_OP( 7, remuw, -1<<31, -1<<31, -1 );
+
+  TEST_RR_OP( 8, remuw, -1<<31, -1<<31, 0 );
+  TEST_RR_OP( 9, remuw,      1,      1, 0 );
+  TEST_RR_OP(10, remuw,      0,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/remw.S b/isa/rv64ui/remw.S
new file mode 100644 (file)
index 0000000..26820e3
--- /dev/null
@@ -0,0 +1,39 @@
+#*****************************************************************************
+# remw.S
+#-----------------------------------------------------------------------------
+#
+# Test remw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, remw,  2,  20,   6 );
+  TEST_RR_OP( 3, remw, -2, -20,   6 );
+  TEST_RR_OP( 4, remw,  2,  20,  -6 );
+  TEST_RR_OP( 5, remw, -2, -20,  -6 );
+
+  TEST_RR_OP( 6, remw,  0, -1<<31,  1 );
+  TEST_RR_OP( 7, remw,  0, -1<<31, -1 );
+
+  TEST_RR_OP( 8, remw, -1<<31, -1<<31, 0 );
+  TEST_RR_OP( 9, remw,      1,      1, 0 );
+  TEST_RR_OP(10, remw,      0,      0, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sb.S b/isa/rv64ui/sb.S
new file mode 100644 (file)
index 0000000..e072cd5
--- /dev/null
@@ -0,0 +1,100 @@
+#*****************************************************************************
+# sb.S
+#-----------------------------------------------------------------------------
+#
+# Test sb instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_ST_OP( 2, lb, sb, 0xffffffffffffffaa, 0, tdat );
+  TEST_ST_OP( 3, lb, sb, 0x0000000000000000, 1, tdat );
+#ifdef __RISCVEL
+  TEST_ST_OP( 4, lh, sb, 0xffffffffffffefa0, 2, tdat );
+#elif defined(__RISCVEB)
+#else
+  TEST_ST_OP( 4, lh, sb, 0xffffffffffffa0ef, 2, tdat );
+#error unknown endianness!
+#endif
+  TEST_ST_OP( 5, lb, sb, 0x000000000000000a, 3, tdat );
+
+  # Test with negative offset
+
+  TEST_ST_OP( 6, lb, sb, 0xffffffffffffffaa, -3, tdat8 );
+  TEST_ST_OP( 7, lb, sb, 0x0000000000000000, -2, tdat8 );
+  TEST_ST_OP( 8, lb, sb, 0xffffffffffffffa0, -1, tdat8 );
+  TEST_ST_OP( 9, lb, sb, 0x000000000000000a, 0,  tdat8 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x78, \
+    la  x1, tdat9; \
+    li  x2, 0x12345678; \
+    addi x4, x1, -32; \
+    sb x2, 32(x4); \
+    lb x3, 0(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0xffffffffffffff98, \
+    la  x1, tdat9; \
+    li  x2, 0x00003098; \
+    addi x1, x1, -6; \
+    sb x2, 7(x1); \
+    la  x4, tdat10; \
+    lb x3, 0(x4); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_ST_SRC12_BYPASS( 12, 0, 0, lb, sb, 0xffffffffffffffdd, 0, tdat );
+  TEST_ST_SRC12_BYPASS( 13, 0, 1, lb, sb, 0xffffffffffffffcd, 1, tdat );
+  TEST_ST_SRC12_BYPASS( 14, 0, 2, lb, sb, 0xffffffffffffffcc, 2, tdat );
+  TEST_ST_SRC12_BYPASS( 15, 1, 0, lb, sb, 0xffffffffffffffbc, 3, tdat );
+  TEST_ST_SRC12_BYPASS( 16, 1, 1, lb, sb, 0xffffffffffffffbb, 4, tdat );
+  TEST_ST_SRC12_BYPASS( 17, 2, 0, lb, sb, 0xffffffffffffffab, 5, tdat );
+
+  TEST_ST_SRC21_BYPASS( 18, 0, 0, lb, sb, 0x33, 0, tdat );
+  TEST_ST_SRC21_BYPASS( 19, 0, 1, lb, sb, 0x23, 1, tdat );
+  TEST_ST_SRC21_BYPASS( 20, 0, 2, lb, sb, 0x22, 2, tdat );
+  TEST_ST_SRC21_BYPASS( 21, 1, 0, lb, sb, 0x12, 3, tdat );
+  TEST_ST_SRC21_BYPASS( 22, 1, 1, lb, sb, 0x11, 4, tdat );
+  TEST_ST_SRC21_BYPASS( 23, 2, 0, lb, sb, 0x01, 5, tdat );
+
+  li a0, 0xef
+  la a1, tdat
+  sb a0, 3(a1)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .byte 0xef
+tdat2:  .byte 0xef
+tdat3:  .byte 0xef
+tdat4:  .byte 0xef
+tdat5:  .byte 0xef
+tdat6:  .byte 0xef
+tdat7:  .byte 0xef
+tdat8:  .byte 0xef
+tdat9:  .byte 0xef
+tdat10: .byte 0xef
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sd.S b/isa/rv64ui/sd.S
new file mode 100644 (file)
index 0000000..6f6cb45
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# sd.S
+#-----------------------------------------------------------------------------
+#
+# Test sd instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_ST_OP( 2, ld, sd, 0x00aa00aa00aa00aa, 0,  tdat );
+  TEST_ST_OP( 3, ld, sd, 0xaa00aa00aa00aa00, 8,  tdat );
+  TEST_ST_OP( 4, ld, sd, 0x0aa00aa00aa00aa0, 16,  tdat );
+  TEST_ST_OP( 5, ld, sd, 0xa00aa00aa00aa00a, 24, tdat );
+
+  # Test with negative offset
+
+  TEST_ST_OP( 6, ld, sd, 0x00aa00aa00aa00aa, -24, tdat8 );
+  TEST_ST_OP( 7, ld, sd, 0xaa00aa00aa00aa00, -16, tdat8 );
+  TEST_ST_OP( 8, ld, sd, 0x0aa00aa00aa00aa0, -8,  tdat8 );
+  TEST_ST_OP( 9, ld, sd, 0xa00aa00aa00aa00a, 0,   tdat8 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x1234567812345678, \
+    la  x1, tdat9; \
+    li  x2, 0x1234567812345678; \
+    addi x4, x1, -32; \
+    sd x2, 32(x4); \
+    ld x3, 0(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x5821309858213098, \
+    la  x1, tdat9; \
+    li  x2, 0x5821309858213098; \
+    addi x1, x1, -3; \
+    sd x2, 11(x1); \
+    la  x4, tdat10; \
+    ld x3, 0(x4); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_ST_SRC12_BYPASS( 12, 0, 0, ld, sd, 0xabbccdd, 0,  tdat );
+  TEST_ST_SRC12_BYPASS( 13, 0, 1, ld, sd, 0xaabbccd, 8,  tdat );
+  TEST_ST_SRC12_BYPASS( 14, 0, 2, ld, sd, 0xdaabbcc, 16, tdat );
+  TEST_ST_SRC12_BYPASS( 15, 1, 0, ld, sd, 0xddaabbc, 24, tdat );
+  TEST_ST_SRC12_BYPASS( 16, 1, 1, ld, sd, 0xcddaabb, 32, tdat );
+  TEST_ST_SRC12_BYPASS( 17, 2, 0, ld, sd, 0xccddaab, 40, tdat );
+
+  TEST_ST_SRC21_BYPASS( 18, 0, 0, ld, sd, 0x00112233, 0,  tdat );
+  TEST_ST_SRC21_BYPASS( 19, 0, 1, ld, sd, 0x30011223, 8,  tdat );
+  TEST_ST_SRC21_BYPASS( 20, 0, 2, ld, sd, 0x33001122, 16, tdat );
+  TEST_ST_SRC21_BYPASS( 21, 1, 0, ld, sd, 0x23300112, 24, tdat );
+  TEST_ST_SRC21_BYPASS( 22, 1, 1, ld, sd, 0x22330011, 32, tdat );
+  TEST_ST_SRC21_BYPASS( 23, 2, 0, ld, sd, 0x12233001, 40, tdat );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .dword 0xdeadbeefdeadbeef
+tdat2:  .dword 0xdeadbeefdeadbeef
+tdat3:  .dword 0xdeadbeefdeadbeef
+tdat4:  .dword 0xdeadbeefdeadbeef
+tdat5:  .dword 0xdeadbeefdeadbeef
+tdat6:  .dword 0xdeadbeefdeadbeef
+tdat7:  .dword 0xdeadbeefdeadbeef
+tdat8:  .dword 0xdeadbeefdeadbeef
+tdat9:  .dword 0xdeadbeefdeadbeef
+tdat10: .dword 0xdeadbeefdeadbeef
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sh.S b/isa/rv64ui/sh.S
new file mode 100644 (file)
index 0000000..e68f31a
--- /dev/null
@@ -0,0 +1,100 @@
+#*****************************************************************************
+# sh.S
+#-----------------------------------------------------------------------------
+#
+# Test sh instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_ST_OP( 2, lh, sh, 0x00000000000000aa, 0, tdat );
+  TEST_ST_OP( 3, lh, sh, 0xffffffffffffaa00, 2, tdat );
+#ifdef __RISCVEL
+  TEST_ST_OP( 4, lw, sh, 0xffffffffbeef0aa0, 4, tdat );
+#elif defined(__RISCVEB)
+#else
+  TEST_ST_OP( 4, lw, sh, 0x000000000aa0beef, 4, tdat );
+#error unknown endianness!
+#endif
+  TEST_ST_OP( 5, lh, sh, 0xffffffffffffa00a, 6, tdat );
+
+  # Test with negative offset
+
+  TEST_ST_OP( 6, lh, sh, 0x00000000000000aa, -6, tdat8 );
+  TEST_ST_OP( 7, lh, sh, 0xffffffffffffaa00, -4, tdat8 );
+  TEST_ST_OP( 8, lh, sh, 0x0000000000000aa0, -2, tdat8 );
+  TEST_ST_OP( 9, lh, sh, 0xffffffffffffa00a, 0,  tdat8 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x5678, \
+    la  x1, tdat9; \
+    li  x2, 0x12345678; \
+    addi x4, x1, -32; \
+    sh x2, 32(x4); \
+    lh x3, 0(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x3098, \
+    la  x1, tdat9; \
+    li  x2, 0x00003098; \
+    addi x1, x1, -5; \
+    sh x2, 7(x1); \
+    la  x4, tdat10; \
+    lh x3, 0(x4); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_ST_SRC12_BYPASS( 12, 0, 0, lh, sh, 0xffffffffffffccdd, 0,  tdat );
+  TEST_ST_SRC12_BYPASS( 13, 0, 1, lh, sh, 0xffffffffffffbccd, 2,  tdat );
+  TEST_ST_SRC12_BYPASS( 14, 0, 2, lh, sh, 0xffffffffffffbbcc, 4,  tdat );
+  TEST_ST_SRC12_BYPASS( 15, 1, 0, lh, sh, 0xffffffffffffabbc, 6, tdat );
+  TEST_ST_SRC12_BYPASS( 16, 1, 1, lh, sh, 0xffffffffffffaabb, 8, tdat );
+  TEST_ST_SRC12_BYPASS( 17, 2, 0, lh, sh, 0xffffffffffffdaab, 10, tdat );
+
+  TEST_ST_SRC21_BYPASS( 18, 0, 0, lh, sh, 0x2233, 0,  tdat );
+  TEST_ST_SRC21_BYPASS( 19, 0, 1, lh, sh, 0x1223, 2,  tdat );
+  TEST_ST_SRC21_BYPASS( 20, 0, 2, lh, sh, 0x1122, 4,  tdat );
+  TEST_ST_SRC21_BYPASS( 21, 1, 0, lh, sh, 0x0112, 6, tdat );
+  TEST_ST_SRC21_BYPASS( 22, 1, 1, lh, sh, 0x0011, 8, tdat );
+  TEST_ST_SRC21_BYPASS( 23, 2, 0, lh, sh, 0x3001, 10, tdat );
+
+  li a0, 0xbeef
+  la a1, tdat
+  sh a0, 6(a1)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .half 0xbeef
+tdat2:  .half 0xbeef
+tdat3:  .half 0xbeef
+tdat4:  .half 0xbeef
+tdat5:  .half 0xbeef
+tdat6:  .half 0xbeef
+tdat7:  .half 0xbeef
+tdat8:  .half 0xbeef
+tdat9:  .half 0xbeef
+tdat10: .half 0xbeef
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/simple.S b/isa/rv64ui/simple.S
new file mode 100644 (file)
index 0000000..a667035
--- /dev/null
@@ -0,0 +1,25 @@
+#*****************************************************************************
+# simple.S
+#-----------------------------------------------------------------------------
+#
+# This is the most basic self checking test. If your simulator does not
+# pass thiss then there is little chance that it will pass any of the
+# more complicated self checking tests.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+RVTEST_PASS
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sll.S b/isa/rv64ui/sll.S
new file mode 100644 (file)
index 0000000..935da3d
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# sll.S
+#-----------------------------------------------------------------------------
+#
+# Test sll instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sll, 0x0000000000000001, 0x0000000000000001, 0  );
+  TEST_RR_OP( 3,  sll, 0x0000000000000002, 0x0000000000000001, 1  );
+  TEST_RR_OP( 4,  sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_OP( 5,  sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_OP( 6,  sll, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_RR_OP( 7,  sll, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_RR_OP( 8,  sll, 0xfffffffffffffffe, 0xffffffffffffffff, 1  );
+  TEST_RR_OP( 9,  sll, 0xffffffffffffff80, 0xffffffffffffffff, 7  );
+  TEST_RR_OP( 10, sll, 0xffffffffffffc000, 0xffffffffffffffff, 14 );
+  TEST_RR_OP( 11, sll, 0xffffffff80000000, 0xffffffffffffffff, 31 );
+
+  TEST_RR_OP( 12, sll, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_RR_OP( 13, sll, 0x0000000042424242, 0x0000000021212121, 1  );
+  TEST_RR_OP( 14, sll, 0x0000001090909080, 0x0000000021212121, 7  );
+  TEST_RR_OP( 15, sll, 0x0000084848484000, 0x0000000021212121, 14 );
+  TEST_RR_OP( 16, sll, 0x1090909080000000, 0x0000000021212121, 31 );
+
+  # Verify that shifts only use bottom six bits
+
+  TEST_RR_OP( 17, sll, 0x0000000021212121, 0x0000000021212121, 0xffffffffffffffc0 );
+  TEST_RR_OP( 18, sll, 0x0000000042424242, 0x0000000021212121, 0xffffffffffffffc1 );
+  TEST_RR_OP( 19, sll, 0x0000001090909080, 0x0000000021212121, 0xffffffffffffffc7 );
+  TEST_RR_OP( 20, sll, 0x0000084848484000, 0x0000000021212121, 0xffffffffffffffce );
+  TEST_RR_OP( 21, sll, 0x8000000000000000, 0x0000000021212121, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, sll, 0x00000080, 0x00000001, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, sll, 0x00004000, 0x00000001, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, sll, 24, 3 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, sll, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, sll, 0x0000000080000000, 0x0000000000000001, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, sll, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, sll, 0x0000000080000000, 0x0000000000000001, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, sll, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, sll, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, sll, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_RR_ZEROSRC1( 40, sll, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, sll, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, sll, 0 );
+  TEST_RR_ZERODEST( 43, sll, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/slli.S b/isa/rv64ui/slli.S
new file mode 100644 (file)
index 0000000..aeb5ce9
--- /dev/null
@@ -0,0 +1,66 @@
+#*****************************************************************************
+# slli.S
+#-----------------------------------------------------------------------------
+#
+# Test slli instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  slli, 0x0000000000000001, 0x0000000000000001, 0  );
+  TEST_IMM_OP( 3,  slli, 0x0000000000000002, 0x0000000000000001, 1  );
+  TEST_IMM_OP( 4,  slli, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_OP( 5,  slli, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_OP( 6,  slli, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_OP( 7,  slli, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_IMM_OP( 8,  slli, 0xfffffffffffffffe, 0xffffffffffffffff, 1  );
+  TEST_IMM_OP( 9,  slli, 0xffffffffffffff80, 0xffffffffffffffff, 7  );
+  TEST_IMM_OP( 10, slli, 0xffffffffffffc000, 0xffffffffffffffff, 14 );
+  TEST_IMM_OP( 11, slli, 0xffffffff80000000, 0xffffffffffffffff, 31 );
+
+  TEST_IMM_OP( 12, slli, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_IMM_OP( 13, slli, 0x0000000042424242, 0x0000000021212121, 1  );
+  TEST_IMM_OP( 14, slli, 0x0000001090909080, 0x0000000021212121, 7  );
+  TEST_IMM_OP( 15, slli, 0x0000084848484000, 0x0000000021212121, 14 );
+  TEST_IMM_OP( 16, slli, 0x1090909080000000, 0x0000000021212121, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, slli, 0x00000080, 0x00000001, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, slli, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, slli, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, slli, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, slli, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_SRC1_BYPASS( 22, 1, slli, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, slli, 0x0000000080000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, slli, 0, 32 );
+  TEST_IMM_ZERODEST( 25, slli, 33, 50 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/slliw.S b/isa/rv64ui/slliw.S
new file mode 100644 (file)
index 0000000..7cc7c41
--- /dev/null
@@ -0,0 +1,66 @@
+#*****************************************************************************
+# slliw.S
+#-----------------------------------------------------------------------------
+#
+# Test slliw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  slliw, 0x0000000000000001, 0x0000000000000001, 0  );
+  TEST_IMM_OP( 3,  slliw, 0x0000000000000002, 0x0000000000000001, 1  );
+  TEST_IMM_OP( 4,  slliw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_OP( 5,  slliw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_OP( 6,  slliw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_OP( 7,  slliw, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_IMM_OP( 8,  slliw, 0xfffffffffffffffe, 0xffffffffffffffff, 1  );
+  TEST_IMM_OP( 9,  slliw, 0xffffffffffffff80, 0xffffffffffffffff, 7  );
+  TEST_IMM_OP( 10, slliw, 0xffffffffffffc000, 0xffffffffffffffff, 14 );
+  TEST_IMM_OP( 11, slliw, 0xffffffff80000000, 0xffffffffffffffff, 31 );
+
+  TEST_IMM_OP( 12, slliw, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_IMM_OP( 13, slliw, 0x0000000042424242, 0x0000000021212121, 1  );
+  TEST_IMM_OP( 14, slliw, 0xffffffff90909080, 0x0000000021212121, 7  );
+  TEST_IMM_OP( 15, slliw, 0x0000000048484000, 0x0000000021212121, 14 );
+  TEST_IMM_OP( 16, slliw, 0xffffffff80000000, 0x0000000021212121, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, slliw, 0x00000080, 0x00000001, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, slliw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, slliw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, slliw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, slliw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_IMM_SRC1_BYPASS( 22, 1, slliw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, slliw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, slliw, 0, 31 );
+  TEST_IMM_ZERODEST( 25, slliw, 31, 28 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sllw.S b/isa/rv64ui/sllw.S
new file mode 100644 (file)
index 0000000..4663be3
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# sllw.S
+#-----------------------------------------------------------------------------
+#
+# Test sllw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sllw, 0x0000000000000001, 0x0000000000000001, 0  );
+  TEST_RR_OP( 3,  sllw, 0x0000000000000002, 0x0000000000000001, 1  );
+  TEST_RR_OP( 4,  sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_OP( 5,  sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_OP( 6,  sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_RR_OP( 7,  sllw, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_RR_OP( 8,  sllw, 0xfffffffffffffffe, 0xffffffffffffffff, 1  );
+  TEST_RR_OP( 9,  sllw, 0xffffffffffffff80, 0xffffffffffffffff, 7  );
+  TEST_RR_OP( 10, sllw, 0xffffffffffffc000, 0xffffffffffffffff, 14 );
+  TEST_RR_OP( 11, sllw, 0xffffffff80000000, 0xffffffffffffffff, 31 );
+
+  TEST_RR_OP( 12, sllw, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_RR_OP( 13, sllw, 0x0000000042424242, 0x0000000021212121, 1  );
+  TEST_RR_OP( 14, sllw, 0xffffffff90909080, 0x0000000021212121, 7  );
+  TEST_RR_OP( 15, sllw, 0x0000000048484000, 0x0000000021212121, 14 );
+  TEST_RR_OP( 16, sllw, 0xffffffff80000000, 0x0000000021212121, 31 );
+
+  # Verify that shifts only use bottom five bits
+
+  TEST_RR_OP( 17, sllw, 0x0000000021212121, 0x0000000021212121, 0xffffffffffffffe0 );
+  TEST_RR_OP( 18, sllw, 0x0000000042424242, 0x0000000021212121, 0xffffffffffffffe1 );
+  TEST_RR_OP( 19, sllw, 0xffffffff90909080, 0x0000000021212121, 0xffffffffffffffe7 );
+  TEST_RR_OP( 20, sllw, 0x0000000048484000, 0x0000000021212121, 0xffffffffffffffee );
+  TEST_RR_OP( 21, sllw, 0xffffffff80000000, 0x0000000021212121, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, sllw, 0x00000080, 0x00000001, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, sllw, 0x00004000, 0x00000001, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, sllw, 24, 3 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, sllw, 0x0000000000000080, 0x0000000000000001, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, sllw, 0x0000000000004000, 0x0000000000000001, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, sllw, 0xffffffff80000000, 0x0000000000000001, 31 );
+
+  TEST_RR_ZEROSRC1( 40, sllw, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, sllw, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, sllw, 0 );
+  TEST_RR_ZERODEST( 43, sllw, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/slt.S b/isa/rv64ui/slt.S
new file mode 100644 (file)
index 0000000..ee3203a
--- /dev/null
@@ -0,0 +1,82 @@
+#*****************************************************************************
+# slt.S
+#-----------------------------------------------------------------------------
+#
+# Test slt instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  slt, 0, 0x0000000000000000, 0x0000000000000000 );
+  TEST_RR_OP( 3,  slt, 0, 0x0000000000000001, 0x0000000000000001 );
+  TEST_RR_OP( 4,  slt, 1, 0x0000000000000003, 0x0000000000000007 );
+  TEST_RR_OP( 5,  slt, 0, 0x0000000000000007, 0x0000000000000003 );
+
+  TEST_RR_OP( 6,  slt, 0, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 7,  slt, 1, 0xffffffff80000000, 0x0000000000000000 );
+  TEST_RR_OP( 8,  slt, 1, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 9,  slt, 1, 0x0000000000000000, 0x0000000000007fff );
+  TEST_RR_OP( 10, slt, 0, 0x000000007fffffff, 0x0000000000000000 );
+  TEST_RR_OP( 11, slt, 0, 0x000000007fffffff, 0x0000000000007fff );
+
+  TEST_RR_OP( 12, slt, 1, 0xffffffff80000000, 0x0000000000007fff );
+  TEST_RR_OP( 13, slt, 0, 0x000000007fffffff, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 14, slt, 0, 0x0000000000000000, 0xffffffffffffffff );
+  TEST_RR_OP( 15, slt, 1, 0xffffffffffffffff, 0x0000000000000001 );
+  TEST_RR_OP( 16, slt, 0, 0xffffffffffffffff, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 17, slt, 0, 14, 13 );
+  TEST_RR_SRC2_EQ_DEST( 18, slt, 1, 11, 13 );
+  TEST_RR_SRC12_EQ_DEST( 19, slt, 0, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 20, 0, slt, 1, 11, 13 );
+  TEST_RR_DEST_BYPASS( 21, 1, slt, 0, 14, 13 );
+  TEST_RR_DEST_BYPASS( 22, 2, slt, 1, 12, 13 );
+
+  TEST_RR_SRC12_BYPASS( 23, 0, 0, slt, 0, 14, 13 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 1, slt, 1, 11, 13 );
+  TEST_RR_SRC12_BYPASS( 25, 0, 2, slt, 0, 15, 13 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 0, slt, 1, 10, 13 );
+  TEST_RR_SRC12_BYPASS( 27, 1, 1, slt, 0, 16, 13 );
+  TEST_RR_SRC12_BYPASS( 28, 2, 0, slt, 1,  9, 13 );
+
+  TEST_RR_SRC21_BYPASS( 29, 0, 0, slt, 0, 17, 13 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 1, slt, 1,  8, 13 );
+  TEST_RR_SRC21_BYPASS( 31, 0, 2, slt, 0, 18, 13 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 0, slt, 1,  7, 13 );
+  TEST_RR_SRC21_BYPASS( 33, 1, 1, slt, 0, 19, 13 );
+  TEST_RR_SRC21_BYPASS( 34, 2, 0, slt, 1,  6, 13 );
+
+  TEST_RR_ZEROSRC1( 35, slt, 0, -1 );
+  TEST_RR_ZEROSRC2( 36, slt, 1, -1 );
+  TEST_RR_ZEROSRC12( 37, slt, 0 );
+  TEST_RR_ZERODEST( 38, slt, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/slti.S b/isa/rv64ui/slti.S
new file mode 100644 (file)
index 0000000..77dc52c
--- /dev/null
@@ -0,0 +1,68 @@
+#*****************************************************************************
+# slti.S
+#-----------------------------------------------------------------------------
+#
+# Test slti instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  slti, 0, 0x0000000000000000, 0x000 );
+  TEST_IMM_OP( 3,  slti, 0, 0x0000000000000001, 0x001 );
+  TEST_IMM_OP( 4,  slti, 1, 0x0000000000000003, 0x007 );
+  TEST_IMM_OP( 5,  slti, 0, 0x0000000000000007, 0x003 );
+
+  TEST_IMM_OP( 6,  slti, 0, 0x0000000000000000, 0x800 );
+  TEST_IMM_OP( 7,  slti, 1, 0xffffffff80000000, 0x000 );
+  TEST_IMM_OP( 8,  slti, 1, 0xffffffff80000000, 0x800 );
+
+  TEST_IMM_OP( 9,  slti, 1, 0x0000000000000000, 0x7ff );
+  TEST_IMM_OP( 10, slti, 0, 0x000000007fffffff, 0x000 );
+  TEST_IMM_OP( 11, slti, 0, 0x000000007fffffff, 0x7ff );
+
+  TEST_IMM_OP( 12, slti, 1, 0xffffffff80000000, 0x7ff );
+  TEST_IMM_OP( 13, slti, 0, 0x000000007fffffff, 0x800 );
+
+  TEST_IMM_OP( 14, slti, 0, 0x0000000000000000, 0xfff );
+  TEST_IMM_OP( 15, slti, 1, 0xffffffffffffffff, 0x001 );
+  TEST_IMM_OP( 16, slti, 0, 0xffffffffffffffff, 0xfff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, sltiu, 1, 11, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, slti, 0, 15, 10 );
+  TEST_IMM_DEST_BYPASS( 19, 1, slti, 1, 10, 16 );
+  TEST_IMM_DEST_BYPASS( 20, 2, slti, 0, 16,  9 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, slti, 1, 11, 15 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, slti, 0, 17,  8 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, slti, 1, 12, 14 );
+
+  TEST_IMM_ZEROSRC1( 24, slti, 0, 0xfff );
+  TEST_IMM_ZERODEST( 25, slti, 0x00ff00ff, 0xfff );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sltiu.S b/isa/rv64ui/sltiu.S
new file mode 100644 (file)
index 0000000..0617e38
--- /dev/null
@@ -0,0 +1,68 @@
+#*****************************************************************************
+# sltiu.S
+#-----------------------------------------------------------------------------
+#
+# Test sltiu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  sltiu, 0, 0x0000000000000000, 0x000 );
+  TEST_IMM_OP( 3,  sltiu, 0, 0x0000000000000001, 0x001 );
+  TEST_IMM_OP( 4,  sltiu, 1, 0x0000000000000003, 0x007 );
+  TEST_IMM_OP( 5,  sltiu, 0, 0x0000000000000007, 0x003 );
+
+  TEST_IMM_OP( 6,  sltiu, 1, 0x0000000000000000, 0x800 );
+  TEST_IMM_OP( 7,  sltiu, 0, 0xffffffff80000000, 0x000 );
+  TEST_IMM_OP( 8,  sltiu, 1, 0xffffffff80000000, 0x800 );
+
+  TEST_IMM_OP( 9,  sltiu, 1, 0x0000000000000000, 0x7ff );
+  TEST_IMM_OP( 10, sltiu, 0, 0x000000007fffffff, 0x000 );
+  TEST_IMM_OP( 11, sltiu, 0, 0x000000007fffffff, 0x7ff );
+
+  TEST_IMM_OP( 12, sltiu, 0, 0xffffffff80000000, 0x7ff );
+  TEST_IMM_OP( 13, sltiu, 1, 0x000000007fffffff, 0x800 );
+
+  TEST_IMM_OP( 14, sltiu, 1, 0x0000000000000000, 0xfff );
+  TEST_IMM_OP( 15, sltiu, 0, 0xffffffffffffffff, 0x001 );
+  TEST_IMM_OP( 16, sltiu, 0, 0xffffffffffffffff, 0xfff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, sltiu, 1, 11, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, sltiu, 0, 15, 10 );
+  TEST_IMM_DEST_BYPASS( 19, 1, sltiu, 1, 10, 16 );
+  TEST_IMM_DEST_BYPASS( 20, 2, sltiu, 0, 16,  9 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, sltiu, 1, 11, 15 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, sltiu, 0, 17,  8 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, sltiu, 1, 12, 14 );
+
+  TEST_IMM_ZEROSRC1( 24, sltiu, 1, 0xfff );
+  TEST_IMM_ZERODEST( 25, sltiu, 0x00ff00ff, 0xfff );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sltu.S b/isa/rv64ui/sltu.S
new file mode 100644 (file)
index 0000000..f853d95
--- /dev/null
@@ -0,0 +1,82 @@
+#*****************************************************************************
+# sltu.S
+#-----------------------------------------------------------------------------
+#
+# Test sltu instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sltu, 0, 0x00000000, 0x00000000 );
+  TEST_RR_OP( 3,  sltu, 0, 0x00000001, 0x00000001 );
+  TEST_RR_OP( 4,  sltu, 1, 0x00000003, 0x00000007 );
+  TEST_RR_OP( 5,  sltu, 0, 0x00000007, 0x00000003 );
+
+  TEST_RR_OP( 6,  sltu, 1, 0x00000000, 0xffff8000 );
+  TEST_RR_OP( 7,  sltu, 0, 0x80000000, 0x00000000 );
+  TEST_RR_OP( 8,  sltu, 1, 0x80000000, 0xffff8000 );
+
+  TEST_RR_OP( 9,  sltu, 1, 0x00000000, 0x00007fff );
+  TEST_RR_OP( 10, sltu, 0, 0x7fffffff, 0x00000000 );
+  TEST_RR_OP( 11, sltu, 0, 0x7fffffff, 0x00007fff );
+
+  TEST_RR_OP( 12, sltu, 0, 0x80000000, 0x00007fff );
+  TEST_RR_OP( 13, sltu, 1, 0x7fffffff, 0xffff8000 );
+
+  TEST_RR_OP( 14, sltu, 1, 0x00000000, 0xffffffff );
+  TEST_RR_OP( 15, sltu, 0, 0xffffffff, 0x00000001 );
+  TEST_RR_OP( 16, sltu, 0, 0xffffffff, 0xffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 17, sltu, 0, 14, 13 );
+  TEST_RR_SRC2_EQ_DEST( 18, sltu, 1, 11, 13 );
+  TEST_RR_SRC12_EQ_DEST( 19, sltu, 0, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 20, 0, sltu, 1, 11, 13 );
+  TEST_RR_DEST_BYPASS( 21, 1, sltu, 0, 14, 13 );
+  TEST_RR_DEST_BYPASS( 22, 2, sltu, 1, 12, 13 );
+
+  TEST_RR_SRC12_BYPASS( 23, 0, 0, sltu, 0, 14, 13 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 1, sltu, 1, 11, 13 );
+  TEST_RR_SRC12_BYPASS( 25, 0, 2, sltu, 0, 15, 13 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 0, sltu, 1, 10, 13 );
+  TEST_RR_SRC12_BYPASS( 27, 1, 1, sltu, 0, 16, 13 );
+  TEST_RR_SRC12_BYPASS( 28, 2, 0, sltu, 1,  9, 13 );
+
+  TEST_RR_SRC21_BYPASS( 29, 0, 0, sltu, 0, 17, 13 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 1, sltu, 1,  8, 13 );
+  TEST_RR_SRC21_BYPASS( 31, 0, 2, sltu, 0, 18, 13 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 0, sltu, 1,  7, 13 );
+  TEST_RR_SRC21_BYPASS( 33, 1, 1, sltu, 0, 19, 13 );
+  TEST_RR_SRC21_BYPASS( 34, 2, 0, sltu, 1,  6, 13 );
+
+  TEST_RR_ZEROSRC1( 35, sltu, 1, -1 );
+  TEST_RR_ZEROSRC2( 36, sltu, 0, -1 );
+  TEST_RR_ZEROSRC12( 37, sltu, 0 );
+  TEST_RR_ZERODEST( 38, sltu, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sra.S b/isa/rv64ui/sra.S
new file mode 100644 (file)
index 0000000..2dca12e
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# sra.S
+#-----------------------------------------------------------------------------
+#
+# Test sra instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sra, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_RR_OP( 3,  sra, 0xffffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_RR_OP( 4,  sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_OP( 5,  sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_OP( 6,  sra, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_RR_OP( 7,  sra, 0x000000007fffffff, 0x000000007fffffff, 0  );
+  TEST_RR_OP( 8,  sra, 0x000000003fffffff, 0x000000007fffffff, 1  );
+  TEST_RR_OP( 9,  sra, 0x0000000000ffffff, 0x000000007fffffff, 7  );
+  TEST_RR_OP( 10, sra, 0x000000000001ffff, 0x000000007fffffff, 14 );
+  TEST_RR_OP( 11, sra, 0x0000000000000000, 0x000000007fffffff, 31 );
+
+  TEST_RR_OP( 12, sra, 0xffffffff81818181, 0xffffffff81818181, 0  );
+  TEST_RR_OP( 13, sra, 0xffffffffc0c0c0c0, 0xffffffff81818181, 1  );
+  TEST_RR_OP( 14, sra, 0xffffffffff030303, 0xffffffff81818181, 7  );
+  TEST_RR_OP( 15, sra, 0xfffffffffffe0606, 0xffffffff81818181, 14 );
+  TEST_RR_OP( 16, sra, 0xffffffffffffffff, 0xffffffff81818181, 31 );
+
+  # Verify that shifts only use bottom five bits
+
+  TEST_RR_OP( 17, sra, 0xffffffff81818181, 0xffffffff81818181, 0xffffffffffffffc0 );
+  TEST_RR_OP( 18, sra, 0xffffffffc0c0c0c0, 0xffffffff81818181, 0xffffffffffffffc1 );
+  TEST_RR_OP( 19, sra, 0xffffffffff030303, 0xffffffff81818181, 0xffffffffffffffc7 );
+  TEST_RR_OP( 20, sra, 0xfffffffffffe0606, 0xffffffff81818181, 0xffffffffffffffce );
+  TEST_RR_OP( 21, sra, 0xffffffffffffffff, 0xffffffff81818181, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, sra, 0, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, sra, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, sra, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, sra, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, sra, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, sra, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, sra, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, sra, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_ZEROSRC1( 40, sra, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, sra, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, sra, 0 );
+  TEST_RR_ZERODEST( 43, sra, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/srai.S b/isa/rv64ui/srai.S
new file mode 100644 (file)
index 0000000..4923254
--- /dev/null
@@ -0,0 +1,66 @@
+#*****************************************************************************
+# srai.S
+#-----------------------------------------------------------------------------
+#
+# Test srai instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  srai, 0xffffff8000000000, 0xffffff8000000000, 0  );
+  TEST_IMM_OP( 3,  srai, 0xffffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_IMM_OP( 4,  srai, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_OP( 5,  srai, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_OP( 6,  srai, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_OP( 7,  srai, 0x000000007fffffff, 0x000000007fffffff, 0  );
+  TEST_IMM_OP( 8,  srai, 0x000000003fffffff, 0x000000007fffffff, 1  );
+  TEST_IMM_OP( 9,  srai, 0x0000000000ffffff, 0x000000007fffffff, 7  );
+  TEST_IMM_OP( 10, srai, 0x000000000001ffff, 0x000000007fffffff, 14 );
+  TEST_IMM_OP( 11, srai, 0x0000000000000000, 0x000000007fffffff, 31 );
+
+  TEST_IMM_OP( 12, srai, 0xffffffff81818181, 0xffffffff81818181, 0  );
+  TEST_IMM_OP( 13, srai, 0xffffffffc0c0c0c0, 0xffffffff81818181, 1  );
+  TEST_IMM_OP( 14, srai, 0xffffffffff030303, 0xffffffff81818181, 7  );
+  TEST_IMM_OP( 15, srai, 0xfffffffffffe0606, 0xffffffff81818181, 14 );
+  TEST_IMM_OP( 16, srai, 0xffffffffffffffff, 0xffffffff81818181, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, srai, 0xffffffffff000000, 0xffffffff80000000, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, srai, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, srai, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, srai, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, srai, 0xffffffffff000000, 0xffffffff80000000, 7 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, srai, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, srai, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, srai, 0, 32 );
+  TEST_IMM_ZERODEST( 25, srai, 33, 50 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sraiw.S b/isa/rv64ui/sraiw.S
new file mode 100644 (file)
index 0000000..a66f81b
--- /dev/null
@@ -0,0 +1,69 @@
+#*****************************************************************************
+# sraiw.S
+#-----------------------------------------------------------------------------
+#
+# Test sraiw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  sraiw, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_IMM_OP( 3,  sraiw, 0xffffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_IMM_OP( 4,  sraiw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_OP( 5,  sraiw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_OP( 6,  sraiw, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_OP( 7,  sraiw, 0x000000007fffffff, 0x000000007fffffff, 0  );
+  TEST_IMM_OP( 8,  sraiw, 0x000000003fffffff, 0x000000007fffffff, 1  );
+  TEST_IMM_OP( 9,  sraiw, 0x0000000000ffffff, 0x000000007fffffff, 7  );
+  TEST_IMM_OP( 10, sraiw, 0x000000000001ffff, 0x000000007fffffff, 14 );
+  TEST_IMM_OP( 11, sraiw, 0x0000000000000000, 0x000000007fffffff, 31 );
+
+  TEST_IMM_OP( 12, sraiw, 0xffffffff81818181, 0xffffffff81818181, 0  );
+  TEST_IMM_OP( 13, sraiw, 0xffffffffc0c0c0c0, 0xffffffff81818181, 1  );
+  TEST_IMM_OP( 14, sraiw, 0xffffffffff030303, 0xffffffff81818181, 7  );
+  TEST_IMM_OP( 15, sraiw, 0xfffffffffffe0606, 0xffffffff81818181, 14 );
+  TEST_IMM_OP( 16, sraiw, 0xffffffffffffffff, 0xffffffff81818181, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, sraiw, 0xffffffffff000000, 0xffffffff80000000, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, sraiw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, sraiw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, sraiw, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, sraiw, 0xffffffffff000000, 0xffffffff80000000, 7 );
+  TEST_IMM_SRC1_BYPASS( 22, 1, sraiw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, sraiw, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, sraiw, 0, 31 );
+  TEST_IMM_ZERODEST( 25, sraiw, 31, 28 );
+
+  TEST_IMM_OP( 26, sraiw, 0x0000000000000000, 0x00e0000000000000, 28)
+  TEST_IMM_OP( 27, sraiw, 0xffffffffff000000, 0x00000000f0000000, 4)
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sraw.S b/isa/rv64ui/sraw.S
new file mode 100644 (file)
index 0000000..e6a2951
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# sraw.S
+#-----------------------------------------------------------------------------
+#
+# Test sraw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sraw, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_RR_OP( 3,  sraw, 0xffffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_RR_OP( 4,  sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_OP( 5,  sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_OP( 6,  sraw, 0xffffffffffffffff, 0xffffffff80000001, 31 );
+
+  TEST_RR_OP( 7,  sraw, 0x000000007fffffff, 0x000000007fffffff, 0  );
+  TEST_RR_OP( 8,  sraw, 0x000000003fffffff, 0x000000007fffffff, 1  );
+  TEST_RR_OP( 9,  sraw, 0x0000000000ffffff, 0x000000007fffffff, 7  );
+  TEST_RR_OP( 10, sraw, 0x000000000001ffff, 0x000000007fffffff, 14 );
+  TEST_RR_OP( 11, sraw, 0x0000000000000000, 0x000000007fffffff, 31 );
+
+  TEST_RR_OP( 12, sraw, 0xffffffff81818181, 0xffffffff81818181, 0  );
+  TEST_RR_OP( 13, sraw, 0xffffffffc0c0c0c0, 0xffffffff81818181, 1  );
+  TEST_RR_OP( 14, sraw, 0xffffffffff030303, 0xffffffff81818181, 7  );
+  TEST_RR_OP( 15, sraw, 0xfffffffffffe0606, 0xffffffff81818181, 14 );
+  TEST_RR_OP( 16, sraw, 0xffffffffffffffff, 0xffffffff81818181, 31 );
+
+  # Verify that shifts only use bottom five bits
+
+  TEST_RR_OP( 17, sraw, 0xffffffff81818181, 0xffffffff81818181, 0xffffffffffffffe0 );
+  TEST_RR_OP( 18, sraw, 0xffffffffc0c0c0c0, 0xffffffff81818181, 0xffffffffffffffe1 );
+  TEST_RR_OP( 19, sraw, 0xffffffffff030303, 0xffffffff81818181, 0xffffffffffffffe7 );
+  TEST_RR_OP( 20, sraw, 0xfffffffffffe0606, 0xffffffff81818181, 0xffffffffffffffee );
+  TEST_RR_OP( 21, sraw, 0xffffffffffffffff, 0xffffffff81818181, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, sraw, 0, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, sraw, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, sraw, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, sraw, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, sraw, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, sraw, 0xffffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, sraw, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, sraw, 0xffffffffffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_ZEROSRC1( 40, sraw, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, sraw, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, sraw, 0 );
+  TEST_RR_ZERODEST( 43, sraw, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/srl.S b/isa/rv64ui/srl.S
new file mode 100644 (file)
index 0000000..2087b90
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# srl.S
+#-----------------------------------------------------------------------------
+#
+# Test srl instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  srl, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_RR_OP( 3,  srl, 0x7fffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_RR_OP( 4,  srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_OP( 5,  srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_OP( 6,  srl, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+
+  TEST_RR_OP( 7,  srl, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_RR_OP( 8,  srl, 0x7fffffffffffffff, 0xffffffffffffffff, 1  );
+  TEST_RR_OP( 9,  srl, 0x01ffffffffffffff, 0xffffffffffffffff, 7  );
+  TEST_RR_OP( 10, srl, 0x0003ffffffffffff, 0xffffffffffffffff, 14 );
+  TEST_RR_OP( 11, srl, 0x00000001ffffffff, 0xffffffffffffffff, 31 );
+
+  TEST_RR_OP( 12, srl, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_RR_OP( 13, srl, 0x0000000010909090, 0x0000000021212121, 1  );
+  TEST_RR_OP( 14, srl, 0x0000000000424242, 0x0000000021212121, 7  );
+  TEST_RR_OP( 15, srl, 0x0000000000008484, 0x0000000021212121, 14 );
+  TEST_RR_OP( 16, srl, 0x0000000000000000, 0x0000000021212121, 31 );
+
+  # Verify that shifts only use bottom five bits
+
+  TEST_RR_OP( 17, srl, 0x0000000021212121, 0x0000000021212121, 0xffffffffffffffc0 );
+  TEST_RR_OP( 18, srl, 0x0000000010909090, 0x0000000021212121, 0xffffffffffffffc1 );
+  TEST_RR_OP( 19, srl, 0x0000000000424242, 0x0000000021212121, 0xffffffffffffffc7 );
+  TEST_RR_OP( 20, srl, 0x0000000000008484, 0x0000000021212121, 0xffffffffffffffce );
+  TEST_RR_OP( 21, srl, 0x0000000000000000, 0x0000000021212121, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, srl, 0, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+
+  TEST_RR_ZEROSRC1( 40, srl, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, srl, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, srl, 0 );
+  TEST_RR_ZERODEST( 43, srl, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/srli.S b/isa/rv64ui/srli.S
new file mode 100644 (file)
index 0000000..755db14
--- /dev/null
@@ -0,0 +1,66 @@
+#*****************************************************************************
+# srli.S
+#-----------------------------------------------------------------------------
+#
+# Test srli instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  srli, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_IMM_OP( 3,  srli, 0x7fffffffc0000000, 0xffffffff80000000, 1  );
+  TEST_IMM_OP( 4,  srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_OP( 5,  srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_OP( 6,  srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_OP( 7,  srli, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_IMM_OP( 8,  srli, 0x7fffffffffffffff, 0xffffffffffffffff, 1  );
+  TEST_IMM_OP( 9,  srli, 0x01ffffffffffffff, 0xffffffffffffffff, 7  );
+  TEST_IMM_OP( 10, srli, 0x0003ffffffffffff, 0xffffffffffffffff, 14 );
+  TEST_IMM_OP( 11, srli, 0x00000001ffffffff, 0xffffffffffffffff, 31 );
+
+  TEST_IMM_OP( 12, srli, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_IMM_OP( 13, srli, 0x0000000010909090, 0x0000000021212121, 1  );
+  TEST_IMM_OP( 14, srli, 0x0000000000424242, 0x0000000021212121, 7  );
+  TEST_IMM_OP( 15, srli, 0x0000000000008484, 0x0000000021212121, 14 );
+  TEST_IMM_OP( 16, srli, 0x0000000000000000, 0x0000000021212121, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, srli, 0x01ffffffff000000, 0xffffffff80000000, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
+  TEST_IMM_SRC1_BYPASS( 22, 1, srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, srli, 0, 32 );
+  TEST_IMM_ZERODEST( 25, srli, 33, 50 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/srliw.S b/isa/rv64ui/srliw.S
new file mode 100644 (file)
index 0000000..d4159d1
--- /dev/null
@@ -0,0 +1,66 @@
+#*****************************************************************************
+# srliw.S
+#-----------------------------------------------------------------------------
+#
+# Test srliw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2,  srliw, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_IMM_OP( 3,  srliw, 0x0000000040000000, 0xffffffff80000000, 1  );
+  TEST_IMM_OP( 4,  srliw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_IMM_OP( 5,  srliw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_IMM_OP( 6,  srliw, 0x0000000000000001, 0xffffffff80000001, 31 );
+
+  TEST_IMM_OP( 7,  srliw, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_IMM_OP( 8,  srliw, 0x000000007fffffff, 0xffffffffffffffff, 1  );
+  TEST_IMM_OP( 9,  srliw, 0x0000000001ffffff, 0xffffffffffffffff, 7  );
+  TEST_IMM_OP( 10, srliw, 0x000000000003ffff, 0xffffffffffffffff, 14 );
+  TEST_IMM_OP( 11, srliw, 0x0000000000000001, 0xffffffffffffffff, 31 );
+
+  TEST_IMM_OP( 12, srliw, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_IMM_OP( 13, srliw, 0x0000000010909090, 0x0000000021212121, 1  );
+  TEST_IMM_OP( 14, srliw, 0x0000000000424242, 0x0000000021212121, 7  );
+  TEST_IMM_OP( 15, srliw, 0x0000000000008484, 0x0000000021212121, 14 );
+  TEST_IMM_OP( 16, srliw, 0x0000000000000000, 0x0000000021212121, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 17, srliw, 0x0000000001000000, 0xffffffff80000000, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 18, 0, srliw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, srliw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, srliw, 0x0000000000000001, 0xffffffff80000001, 31 );
+
+  TEST_IMM_SRC1_BYPASS( 21, 0, srliw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_IMM_SRC1_BYPASS( 22, 1, srliw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, srliw, 0x0000000000000001, 0xffffffff80000001, 31 );
+
+  TEST_IMM_ZEROSRC1( 24, srliw, 0, 31 );
+  TEST_IMM_ZERODEST( 25, srliw, 31, 28 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/srlw.S b/isa/rv64ui/srlw.S
new file mode 100644 (file)
index 0000000..d103611
--- /dev/null
@@ -0,0 +1,88 @@
+#*****************************************************************************
+# srlw.S
+#-----------------------------------------------------------------------------
+#
+# Test srlw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  srlw, 0xffffffff80000000, 0xffffffff80000000, 0  );
+  TEST_RR_OP( 3,  srlw, 0x0000000040000000, 0xffffffff80000000, 1  );
+  TEST_RR_OP( 4,  srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_OP( 5,  srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_OP( 6,  srlw, 0x0000000000000001, 0xffffffff80000001, 31 );
+
+  TEST_RR_OP( 7,  srlw, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
+  TEST_RR_OP( 8,  srlw, 0x000000007fffffff, 0xffffffffffffffff, 1  );
+  TEST_RR_OP( 9,  srlw, 0x0000000001ffffff, 0xffffffffffffffff, 7  );
+  TEST_RR_OP( 10, srlw, 0x000000000003ffff, 0xffffffffffffffff, 14 );
+  TEST_RR_OP( 11, srlw, 0x0000000000000001, 0xffffffffffffffff, 31 );
+
+  TEST_RR_OP( 12, srlw, 0x0000000021212121, 0x0000000021212121, 0  );
+  TEST_RR_OP( 13, srlw, 0x0000000010909090, 0x0000000021212121, 1  );
+  TEST_RR_OP( 14, srlw, 0x0000000000424242, 0x0000000021212121, 7  );
+  TEST_RR_OP( 15, srlw, 0x0000000000008484, 0x0000000021212121, 14 );
+  TEST_RR_OP( 16, srlw, 0x0000000000000000, 0x0000000021212121, 31 );
+
+  # Verify that shifts only use bottom five bits
+
+  TEST_RR_OP( 17, srlw, 0x0000000021212121, 0x0000000021212121, 0xffffffffffffffe0 );
+  TEST_RR_OP( 18, srlw, 0x0000000010909090, 0x0000000021212121, 0xffffffffffffffe1 );
+  TEST_RR_OP( 19, srlw, 0x0000000000424242, 0x0000000021212121, 0xffffffffffffffe7 );
+  TEST_RR_OP( 20, srlw, 0x0000000000008484, 0x0000000021212121, 0xffffffffffffffee );
+  TEST_RR_OP( 21, srlw, 0x0000000000000000, 0x0000000021212121, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 22, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_EQ_DEST( 24, srlw, 0, 7 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 25, 0, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, srlw, 0x0000000000000001, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, srlw, 0x0000000000000001, 0xffffffff80000000, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, srlw, 0x0000000000000001, 0xffffffff80000000, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, srlw, 0x0000000000000001, 0xffffffff80000000, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, srlw, 0x0000000001000000, 0xffffffff80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, srlw, 0x0000000000020000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, srlw, 0x0000000000000001, 0xffffffff80000000, 31 );
+
+  TEST_RR_ZEROSRC1( 40, srlw, 0, 15 );
+  TEST_RR_ZEROSRC2( 41, srlw, 32, 32 );
+  TEST_RR_ZEROSRC12( 42, srlw, 0 );
+  TEST_RR_ZERODEST( 43, srlw, 1024, 2048 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sub.S b/isa/rv64ui/sub.S
new file mode 100644 (file)
index 0000000..7180e08
--- /dev/null
@@ -0,0 +1,81 @@
+#*****************************************************************************
+# sub.S
+#-----------------------------------------------------------------------------
+#
+# Test sub instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  sub, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 );
+  TEST_RR_OP( 3,  sub, 0x0000000000000000, 0x0000000000000001, 0x0000000000000001 );
+  TEST_RR_OP( 4,  sub, 0xfffffffffffffffc, 0x0000000000000003, 0x0000000000000007 );
+
+  TEST_RR_OP( 5,  sub, 0x0000000000008000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  sub, 0xffffffff80000000, 0xffffffff80000000, 0x0000000000000000 );
+  TEST_RR_OP( 7,  sub, 0xffffffff80008000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 8,  sub, 0xffffffffffff8001, 0x0000000000000000, 0x0000000000007fff );
+  TEST_RR_OP( 9,  sub, 0x000000007fffffff, 0x000000007fffffff, 0x0000000000000000 );
+  TEST_RR_OP( 10, sub, 0x000000007fff8000, 0x000000007fffffff, 0x0000000000007fff );
+
+  TEST_RR_OP( 11, sub, 0xffffffff7fff8001, 0xffffffff80000000, 0x0000000000007fff );
+  TEST_RR_OP( 12, sub, 0x0000000080007fff, 0x000000007fffffff, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 13, sub, 0x0000000000000001, 0x0000000000000000, 0xffffffffffffffff );
+  TEST_RR_OP( 14, sub, 0xfffffffffffffffe, 0xffffffffffffffff, 0x0000000000000001 );
+  TEST_RR_OP( 15, sub, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 16, sub, 2, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 17, sub, 3, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 18, sub, 0, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 19, 0, sub, 2, 13, 11 );
+  TEST_RR_DEST_BYPASS( 20, 1, sub, 3, 14, 11 );
+  TEST_RR_DEST_BYPASS( 21, 2, sub, 4, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 22, 0, 0, sub, 2, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 23, 0, 1, sub, 3, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 2, sub, 4, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 25, 1, 0, sub, 2, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 1, sub, 3, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 27, 2, 0, sub, 4, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 28, 0, 0, sub, 2, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 29, 0, 1, sub, 3, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 2, sub, 4, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 31, 1, 0, sub, 2, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 1, sub, 3, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 33, 2, 0, sub, 4, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 34, sub, 15, -15 );
+  TEST_RR_ZEROSRC2( 35, sub, 32, 32 );
+  TEST_RR_ZEROSRC12( 36, sub, 0 );
+  TEST_RR_ZERODEST( 37, sub, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/subw.S b/isa/rv64ui/subw.S
new file mode 100644 (file)
index 0000000..b54f608
--- /dev/null
@@ -0,0 +1,81 @@
+#*****************************************************************************
+# subw.S
+#-----------------------------------------------------------------------------
+#
+# Test subw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2,  subw, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 );
+  TEST_RR_OP( 3,  subw, 0x0000000000000000, 0x0000000000000001, 0x0000000000000001 );
+  TEST_RR_OP( 4,  subw, 0xfffffffffffffffc, 0x0000000000000003, 0x0000000000000007 );
+
+  TEST_RR_OP( 5,  subw, 0x0000000000008000, 0x0000000000000000, 0xffffffffffff8000 );
+  TEST_RR_OP( 6,  subw, 0xffffffff80000000, 0xffffffff80000000, 0x0000000000000000 );
+  TEST_RR_OP( 7,  subw, 0xffffffff80008000, 0xffffffff80000000, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 8,  subw, 0xffffffffffff8001, 0x0000000000000000, 0x0000000000007fff );
+  TEST_RR_OP( 9,  subw, 0x000000007fffffff, 0x000000007fffffff, 0x0000000000000000 );
+  TEST_RR_OP( 10, subw, 0x000000007fff8000, 0x000000007fffffff, 0x0000000000007fff );
+
+  TEST_RR_OP( 11, subw, 0x000000007fff8001, 0xffffffff80000000, 0x0000000000007fff );
+  TEST_RR_OP( 12, subw, 0xffffffff80007fff, 0x000000007fffffff, 0xffffffffffff8000 );
+
+  TEST_RR_OP( 13, subw, 0x0000000000000001, 0x0000000000000000, 0xffffffffffffffff );
+  TEST_RR_OP( 14, subw, 0xfffffffffffffffe, 0xffffffffffffffff, 0x0000000000000001 );
+  TEST_RR_OP( 15, subw, 0x0000000000000000, 0xffffffffffffffff, 0xffffffffffffffff );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 16, subw, 2, 13, 11 );
+  TEST_RR_SRC2_EQ_DEST( 17, subw, 3, 14, 11 );
+  TEST_RR_SRC12_EQ_DEST( 18, subw, 0, 13 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 19, 0, subw, 2, 13, 11 );
+  TEST_RR_DEST_BYPASS( 20, 1, subw, 3, 14, 11 );
+  TEST_RR_DEST_BYPASS( 21, 2, subw, 4, 15, 11 );
+
+  TEST_RR_SRC12_BYPASS( 22, 0, 0, subw, 2, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 23, 0, 1, subw, 3, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 24, 0, 2, subw, 4, 15, 11 );
+  TEST_RR_SRC12_BYPASS( 25, 1, 0, subw, 2, 13, 11 );
+  TEST_RR_SRC12_BYPASS( 26, 1, 1, subw, 3, 14, 11 );
+  TEST_RR_SRC12_BYPASS( 27, 2, 0, subw, 4, 15, 11 );
+
+  TEST_RR_SRC21_BYPASS( 28, 0, 0, subw, 2, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 29, 0, 1, subw, 3, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 30, 0, 2, subw, 4, 15, 11 );
+  TEST_RR_SRC21_BYPASS( 31, 1, 0, subw, 2, 13, 11 );
+  TEST_RR_SRC21_BYPASS( 32, 1, 1, subw, 3, 14, 11 );
+  TEST_RR_SRC21_BYPASS( 33, 2, 0, subw, 4, 15, 11 );
+
+  TEST_RR_ZEROSRC1( 34, subw, 15, -15 );
+  TEST_RR_ZEROSRC2( 35, subw, 32, 32 );
+  TEST_RR_ZEROSRC12( 36, subw, 0 );
+  TEST_RR_ZERODEST( 37, subw, 16, 30 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/sw.S b/isa/rv64ui/sw.S
new file mode 100644 (file)
index 0000000..a6f2b50
--- /dev/null
@@ -0,0 +1,90 @@
+#*****************************************************************************
+# sw.S
+#-----------------------------------------------------------------------------
+#
+# Test sw instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Basic tests
+  #-------------------------------------------------------------
+
+  TEST_ST_OP( 2, lw, sw, 0x0000000000aa00aa, 0,  tdat );
+  TEST_ST_OP( 3, lw, sw, 0xffffffffaa00aa00, 4,  tdat );
+  TEST_ST_OP( 4, lw, sw, 0x000000000aa00aa0, 8,  tdat );
+  TEST_ST_OP( 5, lw, sw, 0xffffffffa00aa00a, 12, tdat );
+
+  # Test with negative offset
+
+  TEST_ST_OP( 6, lw, sw, 0x0000000000aa00aa, -12, tdat8 );
+  TEST_ST_OP( 7, lw, sw, 0xffffffffaa00aa00, -8,  tdat8 );
+  TEST_ST_OP( 8, lw, sw, 0x000000000aa00aa0, -4,  tdat8 );
+  TEST_ST_OP( 9, lw, sw, 0xffffffffa00aa00a, 0,   tdat8 );
+
+  # Test with a negative base
+
+  TEST_CASE( 10, x3, 0x12345678, \
+    la  x1, tdat9; \
+    li  x2, 0x12345678; \
+    addi x4, x1, -32; \
+    sw x2, 32(x4); \
+    lw x3, 0(x1); \
+  )
+
+  # Test with unaligned base
+
+  TEST_CASE( 11, x3, 0x58213098, \
+    la  x1, tdat9; \
+    li  x2, 0x58213098; \
+    addi x1, x1, -3; \
+    sw x2, 7(x1); \
+    la  x4, tdat10; \
+    lw x3, 0(x4); \
+  )
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_ST_SRC12_BYPASS( 12, 0, 0, lw, sw, 0xffffffffaabbccdd, 0,  tdat );
+  TEST_ST_SRC12_BYPASS( 13, 0, 1, lw, sw, 0xffffffffdaabbccd, 4,  tdat );
+  TEST_ST_SRC12_BYPASS( 14, 0, 2, lw, sw, 0xffffffffddaabbcc, 8,  tdat );
+  TEST_ST_SRC12_BYPASS( 15, 1, 0, lw, sw, 0xffffffffcddaabbc, 12, tdat );
+  TEST_ST_SRC12_BYPASS( 16, 1, 1, lw, sw, 0xffffffffccddaabb, 16, tdat );
+  TEST_ST_SRC12_BYPASS( 17, 2, 0, lw, sw, 0xffffffffbccddaab, 20, tdat );
+
+  TEST_ST_SRC21_BYPASS( 18, 0, 0, lw, sw, 0x00112233, 0,  tdat );
+  TEST_ST_SRC21_BYPASS( 19, 0, 1, lw, sw, 0x30011223, 4,  tdat );
+  TEST_ST_SRC21_BYPASS( 20, 0, 2, lw, sw, 0x33001122, 8,  tdat );
+  TEST_ST_SRC21_BYPASS( 21, 1, 0, lw, sw, 0x23300112, 12, tdat );
+  TEST_ST_SRC21_BYPASS( 22, 1, 1, lw, sw, 0x22330011, 16, tdat );
+  TEST_ST_SRC21_BYPASS( 23, 2, 0, lw, sw, 0x12233001, 20, tdat );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+tdat:
+tdat1:  .word 0xdeadbeef
+tdat2:  .word 0xdeadbeef
+tdat3:  .word 0xdeadbeef
+tdat4:  .word 0xdeadbeef
+tdat5:  .word 0xdeadbeef
+tdat6:  .word 0xdeadbeef
+tdat7:  .word 0xdeadbeef
+tdat8:  .word 0xdeadbeef
+tdat9:  .word 0xdeadbeef
+tdat10: .word 0xdeadbeef
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/xor.S b/isa/rv64ui/xor.S
new file mode 100644 (file)
index 0000000..172a15a
--- /dev/null
@@ -0,0 +1,67 @@
+#*****************************************************************************
+# xor.S
+#-----------------------------------------------------------------------------
+#
+# Test xor instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_RR_OP( 2, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_OP( 3, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_OP( 4, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_OP( 5, xor, 0x00ff00ff, 0xf00ff00f, 0xf0f0f0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_RR_SRC1_EQ_DEST( 6, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC2_EQ_DEST( 7, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_EQ_DEST( 8, xor, 0x00000000, 0xff00ff00 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_RR_DEST_BYPASS( 9,  0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_DEST_BYPASS( 10, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_DEST_BYPASS( 11, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC12_BYPASS( 12, 0, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 13, 0, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 14, 0, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 15, 1, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC12_BYPASS( 16, 1, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC12_BYPASS( 17, 2, 0, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_SRC21_BYPASS( 18, 0, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 19, 0, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 20, 0, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 21, 1, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
+  TEST_RR_SRC21_BYPASS( 22, 1, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
+  TEST_RR_SRC21_BYPASS( 23, 2, 0, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
+
+  TEST_RR_ZEROSRC1( 24, xor, 0xff00ff00, 0xff00ff00 );
+  TEST_RR_ZEROSRC2( 25, xor, 0x00ff00ff, 0x00ff00ff );
+  TEST_RR_ZEROSRC12( 26, xor, 0 );
+  TEST_RR_ZERODEST( 27, xor, 0x11111111, 0x22222222 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64ui/xori.S b/isa/rv64ui/xori.S
new file mode 100644 (file)
index 0000000..4f95ea7
--- /dev/null
@@ -0,0 +1,53 @@
+#*****************************************************************************
+# xori.S
+#-----------------------------------------------------------------------------
+#
+# Test xori instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Logical tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_OP( 2, xori, 0xffffffffff00f00f, 0x0000000000ff0f00, 0xf0f );
+  TEST_IMM_OP( 3, xori, 0x000000000ff00f00, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_OP( 4, xori, 0x0000000000ff0ff0, 0x0000000000ff08ff, 0x70f );
+  TEST_IMM_OP( 5, xori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_SRC1_EQ_DEST( 6, xori, 0xffffffffff00f00f, 0xffffffffff00f700, 0x70f );
+
+   #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_IMM_DEST_BYPASS( 7,  0, xori, 0x000000000ff00f00, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_DEST_BYPASS( 8,  1, xori, 0x0000000000ff0ff0, 0x0000000000ff08ff, 0x70f );
+  TEST_IMM_DEST_BYPASS( 9,  2, xori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  TEST_IMM_SRC1_BYPASS( 10, 0, xori, 0x000000000ff00f00, 0x000000000ff00ff0, 0x0f0 );
+  TEST_IMM_SRC1_BYPASS( 11, 1, xori, 0x0000000000ff0ff0, 0x0000000000ff0fff, 0x00f );
+  TEST_IMM_SRC1_BYPASS( 12, 2, xori, 0xfffffffff00ff0ff, 0xfffffffff00ff00f, 0x0f0 );
+
+  TEST_IMM_ZEROSRC1( 13, xori, 0x0f0, 0x0f0 );
+  TEST_IMM_ZERODEST( 14, xori, 0x00ff00ff, 0x70f );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/Makefile b/isa/rv64uv/Makefile
new file mode 100644 (file)
index 0000000..1c41cca
--- /dev/null
@@ -0,0 +1,135 @@
+#=======================================================================
+# Makefile for riscv-tests
+#-----------------------------------------------------------------------
+
+default: all
+
+#--------------------------------------------------------------------
+# Sources
+#--------------------------------------------------------------------
+
+rv64uv_sc_tests = \
+       wakeup fence \
+       vvcfgivl vvcfg vsetvl \
+       vfmvv vmsv vmvv \
+       utidx \
+       lb lbu lh lhu lw lwu ld \
+       sb sh sw sd \
+       fld flw \
+       fsd fsw \
+       amoadd_d amoand_d amomax_d amomaxu_d amomin_d amominu_d amoor_d amoswap_d \
+       amoadd_w amoand_w amomax_w amomaxu_w amomin_w amominu_w amoor_w amoswap_w \
+       imul \
+       movn movz \
+       fcvt fma \
+       fmovn fmovz \
+       vvadd_d vvadd_w vvadd_fd vvadd_fw \
+       vvmul_d \
+       vvadd_branch \
+
+rv64uv_mc_tests = \
+
+rv64uv_sc_vec_tests = \
+       beq bge bgeu blt bltu bne \
+
+#--------------------------------------------------------------------
+# Build rules
+#--------------------------------------------------------------------
+
+RISCV_GCC = riscv-gcc
+RISCV_GCC_OPTS = -nostdlib -nostartfiles
+RISCV_OBJDUMP = riscv-objdump --disassemble-all --disassemble-zeroes --section=.text --section=.data --section=.bss
+RISCV_SIM = riscv-isa-run
+
+#------------------------------------------------------------
+# Build assembly tests
+
+%.hex: %
+       elf2hex 16 16384 $< > $@
+
+%.dump: %
+       $(RISCV_OBJDUMP) $< > $@
+
+%.out: %
+       $(RISCV_SIM) $< 2> $@
+
+rv64uv_p_tests_bin = $(addprefix rv64uv-p-, $(rv64uv_sc_tests))
+rv64uv_p_tests_dump = $(addsuffix .dump, $(rv64uv_p_tests_bin))
+rv64uv_p_tests_hex = $(addsuffix .hex, $(rv64uv_p_tests_bin))
+rv64uv_p_tests_out  = $(addsuffix .out,  $(rv64uv_p_tests_bin))
+
+$(rv64uv_p_tests_bin): rv64uv-p-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/scalar -T../../env/p/link.ld $< -o $@
+
+rv64uv_pm_tests_bin = $(addprefix rv64uv-pm-, $(rv64uv_mc_tests))
+rv64uv_pm_tests_dump = $(addsuffix .dump, $(rv64uv_pm_tests_bin))
+rv64uv_pm_tests_hex = $(addsuffix .hex, $(rv64uv_pm_tests_bin))
+rv64uv_pm_tests_out  = $(addsuffix .out,  $(rv64uv_pm_tests_bin))
+
+$(rv64uv_pm_tests_bin): rv64uv-pm-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pm -I../macros/scalar -T../../env/pm/link.ld $< -o $@
+
+rv64uv_v_tests_bin = $(addprefix rv64uv-v-, $(rv64uv_sc_tests))
+rv64uv_v_tests_dump = $(addsuffix .dump, $(rv64uv_v_tests_bin))
+rv64uv_v_tests_hex = $(addsuffix .hex, $(rv64uv_v_tests_bin))
+rv64uv_v_tests_out  = $(addsuffix .out,  $(rv64uv_v_tests_bin))
+
+$(rv64uv_v_tests_bin): rv64uv-v-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/scalar -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+rv64uv_p_vec_tests_bin = $(addprefix rv64uv-p-vec-, $(rv64uv_sc_vec_tests))
+rv64uv_p_vec_tests_dump = $(addsuffix .dump, $(rv64uv_p_vec_tests_bin))
+rv64uv_p_vec_tests_hex = $(addsuffix .hex, $(rv64uv_p_vec_tests_bin))
+rv64uv_p_vec_tests_out  = $(addsuffix .out,  $(rv64uv_p_vec_tests_bin))
+
+$(rv64uv_p_vec_tests_bin): rv64uv-p-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/p -I../macros/vector -T../../env/p/link.ld $< -o $@
+
+rv64uv_pt_vec_tests_bin = $(addprefix rv64uv-pt-vec-, $(rv64uv_sc_vec_tests))
+rv64uv_pt_vec_tests_dump = $(addsuffix .dump, $(rv64uv_pt_vec_tests_bin))
+rv64uv_pt_vec_tests_hex = $(addsuffix .hex, $(rv64uv_pt_vec_tests_bin))
+rv64uv_pt_vec_tests_out  = $(addsuffix .out,  $(rv64uv_pt_vec_tests_bin))
+
+$(rv64uv_pt_vec_tests_bin): rv64uv-pt-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -I../../env/pt -I../macros/vector -T../../env/pt/link.ld $< -o $@
+
+rv64uv_v_vec_tests_bin = $(addprefix rv64uv-v-vec-, $(rv64uv_sc_vec_tests))
+rv64uv_v_vec_tests_dump = $(addsuffix .dump, $(rv64uv_v_vec_tests_bin))
+rv64uv_v_vec_tests_hex = $(addsuffix .hex, $(rv64uv_v_vec_tests_bin))
+rv64uv_v_vec_tests_out  = $(addsuffix .out,  $(rv64uv_v_vec_tests_bin))
+
+$(rv64uv_v_vec_tests_bin): rv64uv-v-vec-%: %.S
+       $(RISCV_GCC) $(RISCV_GCC_OPTS) -std=gnu99 -O2 -I../../env/v -I../macros/vector -T../../env/v/link.ld ../../env/v/entry.S ../../env/v/vm.c $< -lc -o $@
+
+riscv-: \
+       $(rv64uv_p_tests_dump) $(rv64uv_p_tests_hex) \
+       $(rv64uv_pm_tests_dump) $(rv64uv_pm_tests_hex) \
+       $(rv64uv_v_tests_dump) $(rv64uv_v_tests_hex) \
+       $(rv64uv_p_vec_tests_dump) $(rv64uv_p_vec_tests_hex) \
+       $(rv64uv_pt_vec_tests_dump) $(rv64uv_pt_vec_tests_hex) \
+       $(rv64uv_v_vec_tests_dump) $(rv64uv_v_vec_tests_hex) \
+
+out = $(rv64uv_p_tests_out) $(rv64uv_pm_tests_out)
+
+run: $(out)
+       echo; perl -ne 'print "  [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
+              $(out); echo;
+
+junk += \
+  $(rv64uv_p_tests_bin) $(rv64uv_p_tests_dump) $(rv64uv_p_tests_hex) $(rv64uv_p_tests_out) \
+  $(rv64uv_pm_tests_bin) $(rv64uv_pm_tests_dump) $(rv64uv_pm_tests_hex) $(rv64uv_pm_tests_out) \
+  $(rv64uv_v_tests_bin) $(rv64uv_v_tests_dump) $(rv64uv_v_tests_hex) $(rv64uv_v_tests_out) \
+  $(rv64uv_p_vec_tests_bin) $(rv64uv_p_vec_tests_dump) $(rv64uv_p_vec_tests_hex) $(rv64uv_p_vec_tests_out) \
+  $(rv64uv_pt_vec_tests_bin) $(rv64uv_pt_vec_tests_dump) $(rv64uv_pt_vec_tests_hex) $(rv64uv_pt_vec_tests_out) \
+  $(rv64uv_v_vec_tests_bin) $(rv64uv_v_vec_tests_dump) $(rv64uv_v_vec_tests_hex) $(rv64uv_v_vec_tests_out) \
+
+#------------------------------------------------------------
+# Default
+
+all: riscv-
+
+#------------------------------------------------------------
+# Clean up
+
+clean:
+       rm -rf $(junk)
diff --git a/isa/rv64uv/amoadd_d.S b/isa/rv64uv/amoadd_d.S
new file mode 100644 (file)
index 0000000..053f791
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoadd_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoadd.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  li a5,1
+  vmsv vx3,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  amoadd.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoadd_w.S b/isa/rv64uv/amoadd_w.S
new file mode 100644 (file)
index 0000000..cf006a7
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoadd_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoadd.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  li a5,1
+  vmsv vx3,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  amoadd.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoand_d.S b/isa/rv64uv/amoand_d.S
new file mode 100644 (file)
index 0000000..5167ce6
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoand_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoand.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  li x3,-1
+  amoand.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoand_w.S b/isa/rv64uv/amoand_w.S
new file mode 100644 (file)
index 0000000..111291b
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoand_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoand.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  li x3,-1
+  amoand.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomax_d.S b/isa/rv64uv/amomax_d.S
new file mode 100644 (file)
index 0000000..e29e6e7
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amomax_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomax.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomax.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomax_w.S b/isa/rv64uv/amomax_w.S
new file mode 100644 (file)
index 0000000..2f7ebf4
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amomax_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amomax.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomax.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomaxu_d.S b/isa/rv64uv/amomaxu_d.S
new file mode 100644 (file)
index 0000000..59a8a28
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amomaxu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomaxu.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomaxu.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword -1
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomaxu_w.S b/isa/rv64uv/amomaxu_w.S
new file mode 100644 (file)
index 0000000..2a97c71
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amomaxu_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amomaxu.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomaxu.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word -1
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomin_d.S b/isa/rv64uv/amomin_d.S
new file mode 100644 (file)
index 0000000..01e1feb
--- /dev/null
@@ -0,0 +1,62 @@
+#*****************************************************************************
+# amomin_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amomin.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a5)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a5,a5,8
+  addi a1,a1,1
+  addi a2,a2,-1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3, x3, 3
+  add x2, x2, x3
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomin.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .skip 16384
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amomin_w.S b/isa/rv64uv/amomin_w.S
new file mode 100644 (file)
index 0000000..bac8400
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# amomin_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amomin.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  addi a2,a2,-1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amomin.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amominu_d.S b/isa/rv64uv/amominu_d.S
new file mode 100644 (file)
index 0000000..0951bab
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amominu_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amominu.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amominu.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amominu_w.S b/isa/rv64uv/amominu_w.S
new file mode 100644 (file)
index 0000000..67e5f93
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# amominu_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amominu.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  li x1,-1
+  mul x3,x3,x1
+  amominu.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoor_d.S b/isa/rv64uv/amoor_d.S
new file mode 100644 (file)
index 0000000..b26f963
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoor_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoor.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  li x3,7
+  amoor.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword -1
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoor_w.S b/isa/rv64uv/amoor_w.S
new file mode 100644 (file)
index 0000000..4d18c10
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoor_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoor.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a2,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  li x3,7
+  amoor.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word -1
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoswap_d.S b/isa/rv64uv/amoswap_d.S
new file mode 100644 (file)
index 0000000..0858277
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoswap_d.S
+#-----------------------------------------------------------------------------
+#
+# Test amoswap.d instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a1,0
+loop:
+  ld a0,0(a6)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  amoswap.d x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .dword 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/amoswap_w.S b/isa/rv64uv/amoswap_w.S
new file mode 100644 (file)
index 0000000..ae6f1da
--- /dev/null
@@ -0,0 +1,55 @@
+#*****************************************************************************
+# amoswap_w.S
+#-----------------------------------------------------------------------------
+#
+# Test amoswap.w instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,0
+
+  la a5,amodest
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsw vx1,a6
+  fence.v.l
+
+  li a1,0
+loop:
+  lw a0,0(a6)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a6,a6,4
+  addi a1,a1,1
+  bne a1,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  addi x3,x3,1
+  amoswap.w x1,x3,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+amodest:
+  .word 0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/beq.S b/isa/rv64uv/beq.S
new file mode 100644 (file)
index 0000000..aa6f2ff
--- /dev/null
@@ -0,0 +1,94 @@
+#*****************************************************************************
+# beq.S
+#-----------------------------------------------------------------------------
+#
+# Test beq instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, beq,  0,  0 );
+  TEST_BR2_OP_TAKEN( 3, beq,  1,  1 );
+  TEST_BR2_OP_TAKEN( 4, beq, -1, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 5, beq,  0,  1 );
+  TEST_BR2_OP_NOTTAKEN( 6, beq,  1,  0 );
+  TEST_BR2_OP_NOTTAKEN( 7, beq, -1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 8, beq,  1, -1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, beq, 0, -1 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, beq, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, beq, 0, -1 );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, beq, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, beq, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, beq, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, beq, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, beq, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, beq, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  
+  TEST_BR2_DIVERGED_FULL12( 30, beq, 1, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL12( 31, beq, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL12( 32, beq, 1);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/bge.S b/isa/rv64uv/bge.S
new file mode 100644 (file)
index 0000000..06d15de
--- /dev/null
@@ -0,0 +1,97 @@
+#*****************************************************************************
+# bge.S
+#-----------------------------------------------------------------------------
+#
+# Test bge instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bge,  0,  0 );
+  TEST_BR2_OP_TAKEN( 3, bge,  1,  1 );
+  TEST_BR2_OP_TAKEN( 4, bge, -1, -1 );
+  TEST_BR2_OP_TAKEN( 5, bge,  1,  0 );
+  TEST_BR2_OP_TAKEN( 6, bge,  1, -1 );
+  TEST_BR2_OP_TAKEN( 7, bge, -1, -2 );
+
+  TEST_BR2_OP_NOTTAKEN(  8, bge,  0,  1 );
+  TEST_BR2_OP_NOTTAKEN(  9, bge, -1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 10, bge, -2, -1 );
+  TEST_BR2_OP_NOTTAKEN( 11, bge, -2,  1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bge, -1, 0 );
+
+  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bge, -1, 0 );
+  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bge, -1, 0 );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, bge, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, bge, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, bge, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, bge, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, bge, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, bge, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  ) 
+  TEST_BR2_DIVERGED_FULL12( 30, bge, 1, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL12( 31, bge, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL12( 32, bge, 1);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/bgeu.S b/isa/rv64uv/bgeu.S
new file mode 100644 (file)
index 0000000..5f54670
--- /dev/null
@@ -0,0 +1,97 @@
+#*****************************************************************************
+# bgeu.S
+#-----------------------------------------------------------------------------
+#
+# Test bgeu instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bgeu, 0x00000000, 0x00000000 );
+  TEST_BR2_OP_TAKEN( 3, bgeu, 0x00000001, 0x00000001 );
+  TEST_BR2_OP_TAKEN( 4, bgeu, 0xffffffff, 0xffffffff );
+  TEST_BR2_OP_TAKEN( 5, bgeu, 0x00000001, 0x00000000 );
+  TEST_BR2_OP_TAKEN( 6, bgeu, 0xffffffff, 0xfffffffe );
+  TEST_BR2_OP_TAKEN( 7, bgeu, 0xffffffff, 0x00000000 );
+
+  TEST_BR2_OP_NOTTAKEN(  8, bgeu, 0x00000000, 0x00000001 );
+  TEST_BR2_OP_NOTTAKEN(  9, bgeu, 0xfffffffe, 0xffffffff );
+  TEST_BR2_OP_NOTTAKEN( 10, bgeu, 0x00000000, 0xffffffff );
+  TEST_BR2_OP_NOTTAKEN( 11, bgeu, 0x7fffffff, 0x80000000 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
+
+  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
+  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, bgeu, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, bgeu, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, bgeu, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, bgeu, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, bgeu, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, bgeu, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )        
+
+  TEST_BR2_DIVERGED_FULL12( 30, bgeu, 1, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL12( 31, bgeu, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL12( 32, bgeu, 1);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/blt.S b/isa/rv64uv/blt.S
new file mode 100644 (file)
index 0000000..913c55f
--- /dev/null
@@ -0,0 +1,94 @@
+#*****************************************************************************
+# blt.S
+#-----------------------------------------------------------------------------
+#
+# Test blt instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, blt,  0,  1 );
+  TEST_BR2_OP_TAKEN( 3, blt, -1,  1 );
+  TEST_BR2_OP_TAKEN( 4, blt, -2, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 5, blt,  1,  0 );
+  TEST_BR2_OP_NOTTAKEN( 6, blt,  1, -1 );
+  TEST_BR2_OP_NOTTAKEN( 7, blt, -1, -2 );
+  TEST_BR2_OP_NOTTAKEN( 8, blt,  1, -2 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, blt, 0, -1 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, blt, 0, -1 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, blt, 0, -1 );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, blt, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, blt, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, blt, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, blt, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, blt, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, blt, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  
+  TEST_BR2_DIVERGED_FULL21( 30, blt, 0, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL21( 31, blt, 0, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL21( 32, blt, 0);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/bltu.S b/isa/rv64uv/bltu.S
new file mode 100644 (file)
index 0000000..5629791
--- /dev/null
@@ -0,0 +1,94 @@
+#*****************************************************************************
+# bltu.S
+#-----------------------------------------------------------------------------
+#
+# Test bltu instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bltu, 0x00000000, 0x00000001 );
+  TEST_BR2_OP_TAKEN( 3, bltu, 0xfffffffe, 0xffffffff );
+  TEST_BR2_OP_TAKEN( 4, bltu, 0x00000000, 0xffffffff );
+
+  TEST_BR2_OP_NOTTAKEN( 5, bltu, 0x00000001, 0x00000000 );
+  TEST_BR2_OP_NOTTAKEN( 6, bltu, 0xffffffff, 0xfffffffe );
+  TEST_BR2_OP_NOTTAKEN( 7, bltu, 0xffffffff, 0x00000000 );
+  TEST_BR2_OP_NOTTAKEN( 8, bltu, 0x80000000, 0x7fffffff );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bltu, 0xf0000000, 0xefffffff );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bltu, 0xf0000000, 0xefffffff );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bltu, 0xf0000000, 0xefffffff );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, bltu, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, bltu, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, bltu, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, bltu, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, bltu, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, bltu, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  
+  TEST_BR2_DIVERGED_FULL21( 30, bltu, 0, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL21( 31, bltu, 0, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL21( 32, bltu, 0 );
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/bne.S b/isa/rv64uv/bne.S
new file mode 100644 (file)
index 0000000..a6b2347
--- /dev/null
@@ -0,0 +1,94 @@
+#*****************************************************************************
+# bne.S
+#-----------------------------------------------------------------------------
+#
+# Test bne instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Branch tests
+  #-------------------------------------------------------------
+
+  # Each test checks both forward and backward branches
+
+  TEST_BR2_OP_TAKEN( 2, bne,  0,  1 );
+  TEST_BR2_OP_TAKEN( 3, bne,  1,  0 );
+  TEST_BR2_OP_TAKEN( 4, bne, -1,  1 );
+  TEST_BR2_OP_TAKEN( 5, bne,  1, -1 );
+
+  TEST_BR2_OP_NOTTAKEN( 6, bne,  0,  0 );
+  TEST_BR2_OP_NOTTAKEN( 7, bne,  1,  1 );
+  TEST_BR2_OP_NOTTAKEN( 8, bne, -1, -1 );
+
+  #-------------------------------------------------------------
+  # Bypassing tests
+  #-------------------------------------------------------------
+
+  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bne, 0, 0 );
+
+  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bne, 0, 0 );
+  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bne, 0, 0 );
+
+  #-------------------------------------------------------------
+  # Test when uts diverge
+  #-------------------------------------------------------------
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 24, bne, 1, 1, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 25, bne, 2, 2, \
+    addi x3, x3, 1; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 26, bne, 3, 3, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_ODD_EVEN( 27, bne, 1, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 28, bne, 2, 400, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  TEST_BR2_DIVERGED_ODD_EVEN( 29, bne, 3, 163216, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+  
+  TEST_BR2_DIVERGED_FULL12( 30, bne, 0, 1, \
+    addi x3, x3, 1; \
+  )
+
+  TEST_BR2_DIVERGED_FULL12( 31, bne, 0, 16, \
+    addi x3, x3, 4; \
+    mul x3, x3, x3; \
+  )
+
+  TEST_BR2_DIVERGED_MEM_FULL12( 32, bne, 0);
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/data_d.h b/isa/rv64uv/data_d.h
new file mode 100644 (file)
index 0000000..9e351af
--- /dev/null
@@ -0,0 +1,4096 @@
+.dword 0xd1dd560bfe643843
+.dword 0xc8ad10b2feb2c113
+.dword 0xa6ce19b8a92a9e4a
+.dword 0x6fb83883fbe60922
+.dword 0xcd6d2e7ead7330da
+.dword 0xb755598a5cfbe06d
+.dword 0x1fed84bdc9a118eb
+.dword 0x24b3f3d23d84f322
+.dword 0x1d3a988f53778458
+.dword 0x9f730b0a1f140995
+.dword 0x374b360639302b65
+.dword 0xc88b9497f9b5efd5
+.dword 0x0f172d3a9a63bd97
+.dword 0xc972275f26cd737e
+.dword 0x0c78f61b7c470f8a
+.dword 0x4def0e021a99b81b
+.dword 0x4390f30c5a5c55b8
+.dword 0xeaf430769db34de0
+.dword 0x8e8fc37e74e9f4db
+.dword 0xcc629a32e15f65e2
+.dword 0x3da9bb4a9f413e61
+.dword 0xe9df9acc0f5e994f
+.dword 0x6108c0f41e90f5f0
+.dword 0x4d68eaa08a12cb08
+.dword 0xc84eae79e5090721
+.dword 0xdda11817b153d6c0
+.dword 0x43ea43ba3915460a
+.dword 0xd16801093aaa5b85
+.dword 0x2994fe94a0eb82bb
+.dword 0xf61250031eed5ad4
+.dword 0xe0f751364c4ac72b
+.dword 0xa41a38b4ba19bbed
+.dword 0x82b6eafa646fe2b1
+.dword 0x13a5f5e58e6486ad
+.dword 0x18f7896d7e7e91fa
+.dword 0x9e24f5c9e78fce0a
+.dword 0x95daaa5911e1d92a
+.dword 0x8f83bb408747dced
+.dword 0xec1c6c26df3c7a01
+.dword 0x8a41db8ebdc862ba
+.dword 0xbacfff7cbc9779cf
+.dword 0x83f82f31eb3dfad1
+.dword 0xfcc145f5029a8625
+.dword 0x510ce08546de5450
+.dword 0xc95124e7a14b9be3
+.dword 0xf64185fd81ab3a1c
+.dword 0x80c59f913c179195
+.dword 0x63d1ad007bb6424f
+.dword 0xbb6594c2764d5430
+.dword 0xfcd8ad0c37625f81
+.dword 0x55250db2b9467d0c
+.dword 0x48f5fc7eb263c237
+.dword 0x8630a803c867c593
+.dword 0xb17acfbaf144ad8a
+.dword 0xc27f45373274a219
+.dword 0xa67a5eb493dd5d22
+.dword 0x7bd384d0529fe47c
+.dword 0x01689905e11f4fab
+.dword 0xcd92dad51c4cc758
+.dword 0xa7053373be73acc3
+.dword 0x58f3527f398d5897
+.dword 0x76ea566bbae082fc
+.dword 0x4b2e9e1fbfcd19f0
+.dword 0xf8d97e36c686f2cf
+.dword 0x1b063a61787a89d5
+.dword 0x21265b64c1aded0a
+.dword 0x2f74685489b32b9d
+.dword 0x46489c4b8e0bd6f9
+.dword 0x4d28452001969d33
+.dword 0xc313e0df8cf90326
+.dword 0xb36e27445eec8f63
+.dword 0x3dce9fdd33780a33
+.dword 0x35d9282a83ed0792
+.dword 0x23f70a663acddbcb
+.dword 0xdfb488c67e6aadce
+.dword 0x7c096383619903bf
+.dword 0x40c7d6230dbe4453
+.dword 0xf1bdf56435ffdd8b
+.dword 0xb924953b36ad21ea
+.dword 0xe1922d720dc0f8e1
+.dword 0xca14881a5df36203
+.dword 0x10a51671ac227124
+.dword 0xe2aa78ac2953c159
+.dword 0x171cfb746137ac31
+.dword 0xfcd02cbb7fdbe20a
+.dword 0x8aec2c2562b80399
+.dword 0x6637173b837c7ba4
+.dword 0x66c9a4593cd8f718
+.dword 0x322953399499feb0
+.dword 0x9e35467828344bd2
+.dword 0x2003f9037983dab7
+.dword 0x295feaa4c5a648ef
+.dword 0xe248eb724dc0af80
+.dword 0xc52e7cf9faa370df
+.dword 0x9bf39a432db2919c
+.dword 0x5b239a556fa41c76
+.dword 0x1a24dc91239d9112
+.dword 0x24ad2069ddee64cd
+.dword 0xea4f902196d947c0
+.dword 0xd5719f41843de606
+.dword 0x96fadc26cc9a8ba2
+.dword 0x7fd63232190f9123
+.dword 0x85207de84fec4c69
+.dword 0x8dc5783bc47d2c80
+.dword 0x6c160891342377aa
+.dword 0x49ec2102949335df
+.dword 0xf9695f0d9beb313d
+.dword 0xb34950eea2c82924
+.dword 0xbd7b3d5898810087
+.dword 0x77aa89bc4dc41491
+.dword 0x2e59cbe79c5bd82d
+.dword 0x078b9cc820dfe05d
+.dword 0x1eba8e9468b547ca
+.dword 0xb1b9daa17cdadb65
+.dword 0x7b37cf022a5adc98
+.dword 0x82888b22c8f68319
+.dword 0x6544296994275855
+.dword 0xe8d8812685ec86b1
+.dword 0xde5a4e0842d29105
+.dword 0x3d390dd88fb762c2
+.dword 0xf47e82a8f281e113
+.dword 0x2701325622dbd103
+.dword 0x9154ffa1df56d1ff
+.dword 0x00c6f0e72c06b9b8
+.dword 0x4479c0ec8c6184f3
+.dword 0x3213379c6178bd76
+.dword 0x5dca6933a79335d5
+.dword 0xc24c6205ed579d4e
+.dword 0xdb0e51b4f2ed17c6
+.dword 0xc5685607d07b507d
+.dword 0x72c0e2c99f389e46
+.dword 0xa02764c6311e00e5
+.dword 0x7870ab738532148b
+.dword 0x7f874adb52beb4e8
+.dword 0x50c52ee79a1e0c1d
+.dword 0x88819d99d98db336
+.dword 0x67e66fb35f47355b
+.dword 0x3d81206ea88f9da6
+.dword 0xaccd3715c7cd9ba2
+.dword 0x8902c29993381ba5
+.dword 0xaae370c7c4b22462
+.dword 0xd2b1dce4e3ac015e
+.dword 0x4773d5916e630bd9
+.dword 0x572483aa9b5aab6f
+.dword 0x9959377b18d62c2e
+.dword 0x13d85103af1c087d
+.dword 0x53b4588c0e888696
+.dword 0xe6be9aae2ff9cd78
+.dword 0xd0c9c214b646121e
+.dword 0xce92bccecd471d91
+.dword 0xe410f67c75821e12
+.dword 0xbcf589be794f3597
+.dword 0x3fd392c04e9ebf38
+.dword 0x00c4d6def0f5eee5
+.dword 0xd341d5fadc428055
+.dword 0x02c3de7dfc9ed665
+.dword 0x1541ca277ab8a0e8
+.dword 0x1ff674a29b47321f
+.dword 0xa61585db7469805e
+.dword 0xdb0d78bb11294171
+.dword 0xb39564524ec390fc
+.dword 0x404c5780c7c92c6d
+.dword 0x9978d380a279a59b
+.dword 0x05f8453bbe5f2ea7
+.dword 0xf5b95d08a6f5e9ca
+.dword 0x011564847183c638
+.dword 0x27449d3768949e29
+.dword 0xd19c3c475be504c7
+.dword 0x1ba532f154514419
+.dword 0x271a184dec4d50f5
+.dword 0xd4b7214f425152c0
+.dword 0xc0a64a59f49984c8
+.dword 0xbedf75cf2e92fa53
+.dword 0xcb2a6b36ad092221
+.dword 0xd313c13f893c846f
+.dword 0x94c85bde9dc14441
+.dword 0x276c2e7a23632691
+.dword 0x1bf9ed15f7a69997
+.dword 0xc60669a46e455c83
+.dword 0x075a73e0536aa746
+.dword 0x11b7f38be5644e36
+.dword 0x8aa5ff3e6174bf35
+.dword 0x9df5b4009d054b4c
+.dword 0x3bfc811145580f03
+.dword 0x81e402cbe8b64d83
+.dword 0x349e298c1970fdd1
+.dword 0x0b84c13325cbe531
+.dword 0x521d02b009ff742d
+.dword 0x8db4b0afd217672c
+.dword 0x1b8a834d538edc3a
+.dword 0x6d889357053a83cc
+.dword 0xd7a6902112814aac
+.dword 0x0d9be52bb75f46bf
+.dword 0xf3e2a43cc1838123
+.dword 0x6a303ab7e4a27df9
+.dword 0x4bda7d162afc46f8
+.dword 0x81f509722ae331ed
+.dword 0xd4932203319c4807
+.dword 0x0d8ce3014cf5b3b1
+.dword 0x4c0bce3b426f5c7f
+.dword 0x46cdf6a058f38e2e
+.dword 0xd7ecb3a7e644b4a8
+.dword 0x30497a1d437a84d2
+.dword 0x579807c2f78e9269
+.dword 0xd479cbd321d063ff
+.dword 0x32f2e17eb3704d78
+.dword 0x7cb3a430fd53347d
+.dword 0x81da87c223931855
+.dword 0x7f7c8515af7e6d94
+.dword 0xfb31918732476f09
+.dword 0xdd46de64278340bd
+.dword 0x45aea039f0cf434c
+.dword 0x481c81edd0222ad7
+.dword 0x84e7f5d6b3130e83
+.dword 0x88eb9e6bbd70ac95
+.dword 0x57ad83ec0b4f5035
+.dword 0x2f1beb5ed965cf9e
+.dword 0x489e25d9c7001f40
+.dword 0xb9a2dcc04439c03a
+.dword 0xcc46d982f2713f82
+.dword 0x64cd0d87d2e1f590
+.dword 0x99d1ea6f299d8b04
+.dword 0x6f9885a53a4e8ece
+.dword 0xbe15edb832582600
+.dword 0xc4334f7edcfadfb8
+.dword 0x6b8ab1b030b854d9
+.dword 0x2985c16c98c65cc4
+.dword 0x52be6770ed652698
+.dword 0x40b60876842cf669
+.dword 0x62d456ab5f49623c
+.dword 0xee2cc0db5681638e
+.dword 0xee3955379349279c
+.dword 0x60173695a3434359
+.dword 0xefeca0bd53b054f0
+.dword 0x78437787a15025ad
+.dword 0xf30550cea298ac56
+.dword 0x3d3461fbf18b8a48
+.dword 0xfe154f122661e197
+.dword 0xf97d15afab0fde11
+.dword 0x0a661d32c6445e70
+.dword 0x55896f0932475d50
+.dword 0x919c02a488900c0d
+.dword 0x0d17bd1bc093365b
+.dword 0xd0771fd3aeb0cc8b
+.dword 0xc2d5865c1a81a63b
+.dword 0x1445601c461cb041
+.dword 0x98939ab354407b78
+.dword 0x4f05db9d67c21cd2
+.dword 0x299949ec9fcd27d2
+.dword 0x71bae81e4dceb789
+.dword 0x9134805d4981121f
+.dword 0x032e7a111873258d
+.dword 0xaee56313b867829a
+.dword 0xdaf93af909122b99
+.dword 0x25615ef79a26e618
+.dword 0xdef32d7125df5d67
+.dword 0x08c1de6c31316024
+.dword 0x0f92950b9f70d2be
+.dword 0x2b13429896974b4d
+.dword 0xdac02d4e195094c7
+.dword 0x19f01f955c6d31af
+.dword 0x4b8bb4861073fbce
+.dword 0x021ab06dcb8680ba
+.dword 0x528a0be02a7d95e7
+.dword 0xeaa6b7893be5de4f
+.dword 0x75eb4cf4d9ff4c96
+.dword 0x0b56d96aa69e2e29
+.dword 0x61b2a2d9b3750b70
+.dword 0xc32f1d6b38a4e55e
+.dword 0xd4801bbc2ef013d2
+.dword 0x8049c25eb2e04f4d
+.dword 0x20eec01b898e66ee
+.dword 0x4ff66e613e7ab9a2
+.dword 0x53e5519a2b26f860
+.dword 0xa35df38d4fb89249
+.dword 0x28628d0677e42f97
+.dword 0xf007be486b8c983e
+.dword 0x442beb3e99c6f4c3
+.dword 0x6e5f7d8b6e55c134
+.dword 0x41855991a61dd297
+.dword 0x05fb5db0e8f111d4
+.dword 0xbc689aef8391f7ed
+.dword 0x75172f9f8d95c16b
+.dword 0x39dcecc2e0d37df6
+.dword 0xe41da50c2fed64ae
+.dword 0x8993cb9fc8167514
+.dword 0xefe88b831e4a909b
+.dword 0xad5940ad9a7f20c9
+.dword 0x3fc9843888820439
+.dword 0xe6c29d98b469c179
+.dword 0x7b1c5638cdaaa3c8
+.dword 0xdb8fe11acaafbf95
+.dword 0x50fd8d3aed235491
+.dword 0x011e855cc83ea2f3
+.dword 0x7969c71fc88748e6
+.dword 0x6dd82014171f468c
+.dword 0x3a0eb6f4a91a55c2
+.dword 0x3767ce48a2c731e1
+.dword 0x0b908ace533b95fe
+.dword 0xcad63b406be18a52
+.dword 0xfd5bf304f35e9591
+.dword 0x1d2587ea75dc991f
+.dword 0x7e79a36823de0733
+.dword 0xedd1c3f254ea5c10
+.dword 0x8ae23cc59aa99c90
+.dword 0x19b5ef815d1d92cc
+.dword 0x92dfc3356340cb82
+.dword 0xc20331724d0e11bb
+.dword 0x3b25c6c5415c5ca1
+.dword 0x2cf7e8a9526c5a03
+.dword 0xb30d631b68fe23ed
+.dword 0x72856af2eaea1708
+.dword 0xf666385f81d5f5d5
+.dword 0x25c9a36eca87d630
+.dword 0x6018bf0c601937b4
+.dword 0xa891ed26e9ed1f57
+.dword 0x46f2bdc5b8b0188b
+.dword 0x578d9ce58b9fb66a
+.dword 0xe619e98c701bb5e3
+.dword 0x479499b408e2a91d
+.dword 0x43a60ad1369ebbe6
+.dword 0x75801126ed6c736d
+.dword 0xa3837807050a5228
+.dword 0xa0a34411d487fdab
+.dword 0xcac739c7d5dc0279
+.dword 0x3c9bd11e417e14ef
+.dword 0xf88d4b5dea0a2c1c
+.dword 0x5644030ac41413aa
+.dword 0x32e41bf9760af296
+.dword 0x07fc6d47a8cab1ac
+.dword 0x84fdf8f053dc7efa
+.dword 0xef8246fd624d3fd2
+.dword 0xc051c3bf1c41689e
+.dword 0xd5e4742a74b12fb6
+.dword 0x536c430313d955a8
+.dword 0xb82d98208a99c0c0
+.dword 0xd7a5347fe8196ffa
+.dword 0x3331f548ca4783fd
+.dword 0x173abfb46f5a26fe
+.dword 0x5c2de61e8dd700f9
+.dword 0x1d2187ab567ed37f
+.dword 0x72be7acee392f743
+.dword 0x34094b4249c6d646
+.dword 0xfb02124760c26f7e
+.dword 0x99f975e05daa46a7
+.dword 0x821d33c78c66038e
+.dword 0xb1b2cad5492ae3b5
+.dword 0xa3682f77f34987b8
+.dword 0x03434455f4af6f1f
+.dword 0x1a58466129e23d81
+.dword 0x5388f1bada07557f
+.dword 0xf38aa948236a7b91
+.dword 0x510e98c13c7dfafa
+.dword 0xdc70ce93022bfcf2
+.dword 0x52575af6bc0d1cfe
+.dword 0xf5098269e9af3667
+.dword 0xb95405e44057e2f6
+.dword 0x22655f65ecd6002d
+.dword 0xb629e5a5af33efec
+.dword 0x5e54d4d7bb2640e8
+.dword 0xcdf648c80659cd57
+.dword 0x4bb45e8ea16aee25
+.dword 0x6132e4a6b027a4fc
+.dword 0xc0238b7944dfe489
+.dword 0x8e1a6b240f1908b2
+.dword 0x4baa8e719727bd36
+.dword 0xb623efc3f0c90d83
+.dword 0x9e9224130c9e6e95
+.dword 0x3c1ba4349205775d
+.dword 0x531ff2a61037495e
+.dword 0x77b2baa674ee029c
+.dword 0x29b9daee9739ec2d
+.dword 0x842e7b785487469c
+.dword 0x60a905492a2c8ecb
+.dword 0x7fa4a13ddea8bb8c
+.dword 0x70877908426c945e
+.dword 0x15fd3901fbda0111
+.dword 0xea04ebd46eb894bb
+.dword 0xe89b903b8deccf88
+.dword 0x4088d12ad27ddc79
+.dword 0x9a6b8cb536b3919d
+.dword 0xf35c18b7a418d2a9
+.dword 0x8b826c62f3584ac4
+.dword 0x629e5cc40b100785
+.dword 0x27d4b7cc809958a9
+.dword 0x75aef5c63d6f3b80
+.dword 0x57bbc80a51e8c6a7
+.dword 0x2eff9e4a4ab02aff
+.dword 0xfb9dda844d0cc279
+.dword 0xb21b43769d81a0d3
+.dword 0xa5de15d1879eecda
+.dword 0xd78f4b7f9b9e4f3c
+.dword 0x84394766b1e08361
+.dword 0x04917ead828287f0
+.dword 0x123c0d0da75719a3
+.dword 0x791a6b6d3132cb0b
+.dword 0xa83dc58526be55b0
+.dword 0x702831d2a11478f9
+.dword 0xd39a03a27372634f
+.dword 0x5d2e45b3a2b83cea
+.dword 0x5650dfd3af2428f7
+.dword 0x5932080fd1508b33
+.dword 0xde4c32ff64f18b26
+.dword 0xc855d16d0a32b6cd
+.dword 0x6bea83b85dbc31cf
+.dword 0xf663a2f2769718e2
+.dword 0x52062a7055d129f3
+.dword 0xa7c1e023d6fe88cc
+.dword 0x9ef5434f58a540d9
+.dword 0x70c827b2208ea7e3
+.dword 0x26b533fb76fbb49a
+.dword 0x531207201481a52c
+.dword 0x1613bf63f875c086
+.dword 0x4292c827f68f67b7
+.dword 0x7021ba8898459bec
+.dword 0xe75803e90366cf79
+.dword 0xa4750518442fa7ce
+.dword 0x45e662a58ffd42e9
+.dword 0xb5bcdc00c6e4ef62
+.dword 0x0b6c587157e09364
+.dword 0x5b6f4dad23744b94
+.dword 0x08f6fdfcd476b9b7
+.dword 0xe2276cbffc225d0a
+.dword 0x43b5d10961472c56
+.dword 0x0fcab937c4ea9ddc
+.dword 0xae8350e4159dacf1
+.dword 0xf03f40562b497efe
+.dword 0xcbfd5ca0650a2138
+.dword 0xe1378bfb2b15044e
+.dword 0x4d136b609a6459cb
+.dword 0x036630fe3e2969ad
+.dword 0xe7c2f379a028f782
+.dword 0x1222c4e1e55b4d63
+.dword 0x3a8be79ca735d9b1
+.dword 0xcdacc0efe7f42717
+.dword 0xf73fb62f5e2ff936
+.dword 0xb893f19f67a6eafc
+.dword 0x239474ad8a3541fd
+.dword 0xd81d95094f7faa72
+.dword 0xe2973fe14adeedf1
+.dword 0xa896243573784281
+.dword 0x33db6b13d9c9a6ae
+.dword 0x0f40c9820d70fe2c
+.dword 0x7725290f43cd8117
+.dword 0xaa822cbb7e936cff
+.dword 0xa5814f3053f29882
+.dword 0x6fc64e07d96fa140
+.dword 0xd8ffca9dd2e7e729
+.dword 0x440282d262e05e85
+.dword 0x76938f9ff4d4b595
+.dword 0x5338dc8eb840d68c
+.dword 0xd43ab1ae3628bad0
+.dword 0xac46770a4a8fd339
+.dword 0x9f9010bcbe1d4cc0
+.dword 0x7a273573abb12c47
+.dword 0x51d6d1a02b4068de
+.dword 0xa0fae18f788cbeb9
+.dword 0x24e20e4f2c86c9fc
+.dword 0xda5f3900d9a29571
+.dword 0x52f011b218721f81
+.dword 0x6c2fe91d0fef5afb
+.dword 0x5bf7a9c2539468e3
+.dword 0x3b30eb491b4d49af
+.dword 0xa0e7eddff50481eb
+.dword 0x696d4f66e661b9d5
+.dword 0xc9317686cb3382b7
+.dword 0xc49a0caa0f0c814c
+.dword 0x7691a49f2bcf1337
+.dword 0xc2b0b67325efe884
+.dword 0x816cca3a8cfabb0f
+.dword 0x08f616fcf9b4be6c
+.dword 0xddf9ac2138ba92e7
+.dword 0x536e63e4ee4ad567
+.dword 0x6de85b6c10cdc88b
+.dword 0x51499397d1382a0c
+.dword 0x618fb6eaa4d73311
+.dword 0x05b098f3516982f6
+.dword 0x52905b77daad8b9c
+.dword 0xead67445a4edfe51
+.dword 0xb920f3260cd41978
+.dword 0xc5b933020869d59d
+.dword 0x4971db1c51c5acfe
+.dword 0x8e9246d906b8753a
+.dword 0xd32c924bae751955
+.dword 0x68ce556dfb0398a7
+.dword 0x6b1cabbc59d57fb8
+.dword 0xe107d1b0692ea69f
+.dword 0xa78253883770d055
+.dword 0xe867ec19c06e083d
+.dword 0xb58b1c24363cb667
+.dword 0x76964fefaf59a46c
+.dword 0x9cc0d9695e1bb44a
+.dword 0xb7ae7b4bceede08b
+.dword 0xa7e914b93a7f8dfd
+.dword 0xbb2742555fbb2777
+.dword 0x95de5120c57f0b7e
+.dword 0xfe2b6134af70718c
+.dword 0x0389825836498a28
+.dword 0x99fac57629216ba6
+.dword 0x5459049124b499a8
+.dword 0x719f0d45d2957358
+.dword 0x65002394142736f2
+.dword 0x29683bcec5931f19
+.dword 0xe282e00b80c557df
+.dword 0x67cc14fe84877e89
+.dword 0x7c3448c5cc8948c8
+.dword 0x8b9f6ae359e69858
+.dword 0xf9c74e960f8403e9
+.dword 0x6670636b192fd9df
+.dword 0x4091d9833bfe5732
+.dword 0x0acb40b08b431cf7
+.dword 0x521f7d97954e5efe
+.dword 0x31fca2879918c45e
+.dword 0xf9f518647add8ed9
+.dword 0x618aaaafb04939b2
+.dword 0x9459e57fbbc0f9ce
+.dword 0x0607f8bfcd08071a
+.dword 0xe87db3f2d2922454
+.dword 0x8395771f890796b0
+.dword 0x2a1cad36f39e7686
+.dword 0xa6a87dafe66e7f3c
+.dword 0x5041a5581b77d456
+.dword 0xaf7c6b161a81dd2d
+.dword 0x901438c62e4136d3
+.dword 0xc41bc198458c8157
+.dword 0x8fbb2c9a89bba2e7
+.dword 0xcfcc25cf362932d8
+.dword 0xffa50320cdd7df5e
+.dword 0x63a47099304b47b4
+.dword 0x231ca77143d0287f
+.dword 0xb9638c48d2879fcd
+.dword 0x1af74aae60af526b
+.dword 0x95101277b7f2da83
+.dword 0xf86c2435122a3459
+.dword 0xfb6bea245d26f594
+.dword 0x6e9a6b31f43a876b
+.dword 0xda5cb0cdd5124eae
+.dword 0x040455b82b154554
+.dword 0x3b7d39944cf9be0a
+.dword 0xde48bb4823d63379
+.dword 0x1818b79b7b2e73b9
+.dword 0x326bfb8b460a36a9
+.dword 0xc6097ad8d8c5c65c
+.dword 0x6910d19649e0d95c
+.dword 0x5900af93cfeab3ca
+.dword 0xbb476f4759a0b5aa
+.dword 0x849115eee126adac
+.dword 0xd81ebab61dff756a
+.dword 0x115ca79e4a908a01
+.dword 0x0c73d4c7f79b0319
+.dword 0x585151a828bb28c3
+.dword 0x3304576f0efa7e40
+.dword 0x2c8d673f4249401e
+.dword 0x840133ccde0559b8
+.dword 0x471c196d36b8d165
+.dword 0xa4823d62fa737e17
+.dword 0x0f63304aced9bb21
+.dword 0x975e26c4d142c388
+.dword 0xb4812607aec82b2b
+.dword 0x5fd8fad8aad7c4cb
+.dword 0x505e10bfaf752c98
+.dword 0x137ab63794cd7b69
+.dword 0x2ec0c61fe557a266
+.dword 0x5f49e3064a31daa5
+.dword 0x433f59fcba9ef542
+.dword 0xad2f7cd6f2aa4cfd
+.dword 0x1b019310eb16b9a0
+.dword 0x37d670a514d37fb1
+.dword 0x084808699d0ba9f1
+.dword 0xa4d18a50d647f5d3
+.dword 0xc6bf1bf79c23c829
+.dword 0xf31a06636b421343
+.dword 0x56dfb168f545ea31
+.dword 0x3afc406b06db2f01
+.dword 0xa054eaa2453b4c60
+.dword 0x31cbadb4229a6d4e
+.dword 0x327da7ca2a556e36
+.dword 0x836759b8d08f121b
+.dword 0xc7858525346722ea
+.dword 0xdde347a2d9ebcf57
+.dword 0x638c58082b0c4970
+.dword 0x3c199d3ecfbeaed9
+.dword 0x29c052f958778c2a
+.dword 0x724515cfc5387057
+.dword 0x78f282f4f89077a3
+.dword 0x9111e055553e5c5e
+.dword 0x9812e398437d16a2
+.dword 0xa9d42b9c8fa11bdf
+.dword 0xa2736705d9baf11e
+.dword 0x557d53a7b1b132eb
+.dword 0x9032eb7788b88239
+.dword 0x0d6fa526917ed714
+.dword 0xb2921b7c2b90b7d6
+.dword 0x63dd0ec709cc8c8f
+.dword 0x4e5220f85d5468da
+.dword 0x8387a60852e48085
+.dword 0x39444cbf0cd7da39
+.dword 0x64227a11245e9c88
+.dword 0x68f35853f6f1b3de
+.dword 0x1b9ada2d8843f434
+.dword 0x29c09aaf28d184c1
+.dword 0xe7dcf61036105d81
+.dword 0x9697c3d538fdc6bb
+.dword 0xac25cfd4c8dfc69f
+.dword 0x98b16f739be4dcea
+.dword 0xc3b875ceed9acfb3
+.dword 0x151974b5654524a6
+.dword 0xdd816f286d978533
+.dword 0xb678ceeaddf6fec5
+.dword 0x8589ef72a42acfb8
+.dword 0x879566c4ee80f0ae
+.dword 0xb2183229ab4ee19a
+.dword 0x161469a933ba844a
+.dword 0xe3f7861442468813
+.dword 0x6a13b2545830ac8c
+.dword 0x3c363b2be15e80e3
+.dword 0xa17df31c88b6099d
+.dword 0x256dc8c771bb1965
+.dword 0x46a76d41476e9ad5
+.dword 0x50b11253885894e9
+.dword 0x92d4081104aee65a
+.dword 0x9e5329de95c407a1
+.dword 0x89f0c1140702b554
+.dword 0x721d74a2f89cf0c8
+.dword 0xdf950c115535d882
+.dword 0x4d19d23bdaff13cb
+.dword 0x3a83473f088c128c
+.dword 0x8c8c8da28ee7f0f8
+.dword 0x7cb2d08145274963
+.dword 0xf724bedb7b7747bd
+.dword 0xa2f10605415e6e20
+.dword 0xa2aaa9de3390e183
+.dword 0x55c6b064df3c3915
+.dword 0x7b6fb157685e70f6
+.dword 0x04ca037b804bc762
+.dword 0x2877414611880ede
+.dword 0xb78675127111dc50
+.dword 0x90453d2ac970f604
+.dword 0xee415adf837e0a41
+.dword 0x7b7ce9a132506e87
+.dword 0x486ed007fd03f111
+.dword 0x2f61f2582382af16
+.dword 0x9ca10cb6ad950bba
+.dword 0x0b55d05307b583ca
+.dword 0x1782922ffd6157e3
+.dword 0x93d023377fef0506
+.dword 0xd3fef7e9a1ce0247
+.dword 0x178d8ec0c8930202
+.dword 0x8f2cf473f8805818
+.dword 0x3d0468fd2f3ac9eb
+.dword 0xbf897aabf87daf1e
+.dword 0xeca0d43995c41c26
+.dword 0x036bd67bd6b5553f
+.dword 0x952a71731e71b768
+.dword 0x494295d36216182d
+.dword 0x677bd97cd7ed911e
+.dword 0xa10a14a6294adb74
+.dword 0x32330fa3ca1aa177
+.dword 0xe09b7f58f76f3f9a
+.dword 0x1de94f62c4054b8f
+.dword 0x6d33e1018290d58e
+.dword 0x79e98ee675f09856
+.dword 0x695e80544305af9e
+.dword 0x9481103b65cc6610
+.dword 0x5eb478898ee25df8
+.dword 0xcf02af8eb88f1b88
+.dword 0x3eab188188eee9a2
+.dword 0x1456aec41e2368ab
+.dword 0xe7fa43a64e3f7cce
+.dword 0xee95f538ad6b02c0
+.dword 0xf6bad0ffe3a153d8
+.dword 0x579113779862b7fe
+.dword 0x9a20f9d9363be22d
+.dword 0xc004c81b33f063f5
+.dword 0x3af36307b4e0c1ff
+.dword 0xf23a61021f7ff991
+.dword 0x0bdb43ca3752bf1e
+.dword 0x3f0fc42075b4931c
+.dword 0x6ab1cd8534a0f8a7
+.dword 0x393b8ee241fdfbbc
+.dword 0xb3ade7c37d93fb29
+.dword 0xb46613e70ed6f8e2
+.dword 0x4c400514b09f1093
+.dword 0x50890ca553d21687
+.dword 0xe6e920ddabcc9636
+.dword 0xfe9d76cc53b161b8
+.dword 0x380870eb2bb651ac
+.dword 0xa5d0c50444466371
+.dword 0x0d63a03299badb53
+.dword 0x4839adc18775fb7b
+.dword 0x428b13903692e2a9
+.dword 0xb969681dddbb79d6
+.dword 0x523b1134cb4d3f70
+.dword 0xa482fd0f21b0c329
+.dword 0x39d8d98a79b58293
+.dword 0x2aa281e2aff0c946
+.dword 0xef2b4440ebc617b2
+.dword 0xf7afcb4abe126d46
+.dword 0xd292b47569e4467b
+.dword 0xc2d05b0de05cc004
+.dword 0x6fdad9c500594ce9
+.dword 0xc3c712a4080298e5
+.dword 0xd0a87dcf0aace801
+.dword 0xee3c6c5b7910d302
+.dword 0x3ac54dbaeef5693e
+.dword 0x53fd81c2563408a0
+.dword 0xeed1eb6db965ba11
+.dword 0x732261a140372d7b
+.dword 0xd7c2df006de32818
+.dword 0xf05bd11d207fd0a4
+.dword 0x1fa8a2aa16d5be85
+.dword 0x434765ba8b1351f5
+.dword 0x7240fee13f34196f
+.dword 0x0e240f26da5cb5b6
+.dword 0x26af64eef68b2213
+.dword 0x88efd5f91957a9aa
+.dword 0xb0f9e38e96855cfe
+.dword 0x6ebafb18274f024d
+.dword 0x735250c20877966f
+.dword 0x97435791db46bdf9
+.dword 0xf893470c74edf498
+.dword 0xc8634393d1304c32
+.dword 0xb4d94f7a29f7a66d
+.dword 0x6702b3167c74ce3b
+.dword 0x9e565859608654c1
+.dword 0x30203a2db5a784db
+.dword 0x9bd2aee0bac40cdb
+.dword 0x58e011f1baee3113
+.dword 0x3c9aa4f2aae1dc7a
+.dword 0xe4a246bb1c82c1d9
+.dword 0xb30c7d1b43334e61
+.dword 0x3c02899e3396a6e5
+.dword 0x35c931d226f19671
+.dword 0xff7df2e14cf62be7
+.dword 0x6584408a2cac8947
+.dword 0xc2b0e1690c4a05e9
+.dword 0x2156eba6d34c51b8
+.dword 0x1513c43c509f0cf1
+.dword 0x276ae36600624475
+.dword 0x397275c725d98430
+.dword 0x0da66c040e2438c2
+.dword 0xc072df1ebb7e6baf
+.dword 0x27b4f8f88b77dc21
+.dword 0x495fc7b093c70f82
+.dword 0x2f8bdf5527040f65
+.dword 0x258c21ea823c71f4
+.dword 0xbaad8ba2fb2ff685
+.dword 0x39ef8cfa6b758500
+.dword 0x3392fd669b46a4c7
+.dword 0xa0b221c0d0e469ef
+.dword 0x1f0e86f4f8e89860
+.dword 0x1d0117826d613f8f
+.dword 0x20ac89fb3b8f3fbd
+.dword 0x9c8c038b899a76c4
+.dword 0xc60797173aed8fae
+.dword 0x7062889f1abe4119
+.dword 0xfbb9dba68b52e0db
+.dword 0x663b28a612698760
+.dword 0x587b2c7a9165c229
+.dword 0xc0bd009cfafd7d99
+.dword 0xe0c0785838f4d4c7
+.dword 0x0f9b68c4ebeca907
+.dword 0x0501682dc45839a2
+.dword 0x6783f072a015135c
+.dword 0xd5d4a4697281703a
+.dword 0x607f2258adf65c2c
+.dword 0x57e7629abc456855
+.dword 0x45130776d05d0b01
+.dword 0xab9bd21849eb153f
+.dword 0x91d9a151065b41ba
+.dword 0x5313d0d4af32ad6c
+.dword 0x0b2dcc9176f2e7aa
+.dword 0x22f9504cb5d02a2f
+.dword 0x6e081af5ef37b409
+.dword 0xd9534b8ad2336b90
+.dword 0x57ed5b56f0dd24d6
+.dword 0xe115304b2b6f8fb3
+.dword 0x2b90a2469c5b6f65
+.dword 0xd645744a6aef376d
+.dword 0x2389370afe0f76e6
+.dword 0xd092f63879eaa7c4
+.dword 0xeb96553cbd57dd40
+.dword 0xf5663e7f682ca4b1
+.dword 0x73e9f4115cc41882
+.dword 0x99522cf732fb7769
+.dword 0xaf3738cc397e480b
+.dword 0xee35c32c1d2e501f
+.dword 0xce306910aab8f272
+.dword 0x8acc4d345d99aef3
+.dword 0xccd33d5af24c3b5d
+.dword 0x5f1475c72449012e
+.dword 0x1889e5913adc4935
+.dword 0xee4a1104ccc79a30
+.dword 0x387597feb6480145
+.dword 0x45323cfd9462faf2
+.dword 0x67aa9c99bfe05037
+.dword 0xf2630bfe0b7f1da1
+.dword 0x843d4555f00b1ba6
+.dword 0xae67c448ee0da58d
+.dword 0x91f6ccd3360ac704
+.dword 0xf4d076ef3bd854cd
+.dword 0xd61513a9a6199296
+.dword 0x64dfb47a59ea9757
+.dword 0xe363e5c30902b12a
+.dword 0x7d071e27f51cfe3e
+.dword 0xb7b8488a2f9084cc
+.dword 0xdc9c342a05aa76b4
+.dword 0xc5532a253f397a74
+.dword 0x45ca2df61c3b72be
+.dword 0xc1d38e0a6288a6a8
+.dword 0x507d303b5ec65ecc
+.dword 0x2ff83c812e087274
+.dword 0x51dbb5d96b172012
+.dword 0xd19e88c6c98495e1
+.dword 0x3fe7a978b229afa8
+.dword 0xc2bea9a902e407d0
+.dword 0x17c66c76323985c1
+.dword 0x4776e518e7f2f346
+.dword 0x8add3f33865b3627
+.dword 0x30ef89f5f2fc1adb
+.dword 0xa9d275f1eae132d9
+.dword 0x6935f4354d9fd807
+.dword 0xb8121af8eb2e4ccd
+.dword 0x96b9db6fe216a2e4
+.dword 0x6a323829af6e5c0b
+.dword 0x8b08ed3af1dc55be
+.dword 0x1366231f29498da7
+.dword 0xd8252ca9e0b9f265
+.dword 0xbce1d51a7032cf52
+.dword 0x3715a21e453dac8b
+.dword 0x3e0ec0449ef39ac2
+.dword 0xa8a3ceee4618514e
+.dword 0x9b93a41be1bfc22d
+.dword 0x9891260482318e54
+.dword 0xf542e4d011ac702c
+.dword 0xe690c2aa178bb681
+.dword 0x1ad05d8cdd255ce8
+.dword 0x7be183f3b77efa03
+.dword 0xb7c5081329dd1321
+.dword 0x6560a01681f02c4d
+.dword 0xccbbd64bd7d50f5a
+.dword 0xb995713fea7e73c1
+.dword 0x435a03d70b26bac6
+.dword 0xecf62566c9cd25dd
+.dword 0xfd2a86dea2dc8e02
+.dword 0x963960d5a6b24289
+.dword 0xd3036a8ba18d6dea
+.dword 0xbe42fc18b8f50e88
+.dword 0xb329646bec55e8ca
+.dword 0x37e19f01faf0549c
+.dword 0xd559f239862ba9ae
+.dword 0x7dd79fe3d6845941
+.dword 0x9c5647075e06d77a
+.dword 0xc6c6674263d87f80
+.dword 0x662e22f775c5453a
+.dword 0x073179afb6dc1f11
+.dword 0xb80328b036267047
+.dword 0x36502b4fe5a71a30
+.dword 0xfe09bc6946e47ffb
+.dword 0x89b670c6a919b32b
+.dword 0x02444495cc14ceba
+.dword 0xac55121b668d9bb1
+.dword 0xd641df0d2d12c761
+.dword 0xb48bfc7fff59ec05
+.dword 0x39694c33709530e8
+.dword 0x09c7813986727446
+.dword 0xa0a776b2ffa3221e
+.dword 0x8a9e8eb3c6014b19
+.dword 0x1f6fcf3e6137ca51
+.dword 0xc8ba0da5f23a80e3
+.dword 0xe5a5c94e4a2729cb
+.dword 0x424db5a1bfe90d40
+.dword 0xdddb0755f6728e2c
+.dword 0xa928d967dcdd28c3
+.dword 0x72b5909485061fad
+.dword 0x75bacafcd11a3501
+.dword 0x2943cb35188d6924
+.dword 0x6231dc3862825b59
+.dword 0xe23625967beeedc5
+.dword 0xee2853dbdb487e98
+.dword 0x7c2dbb949a5579d3
+.dword 0x85384177569a6d29
+.dword 0x9f3947cfb4ffbb82
+.dword 0x3fcaaa09ae6ad0d9
+.dword 0x14119d276abde4e1
+.dword 0xee5a5c48a7a0677d
+.dword 0xffd1d90b204bec0e
+.dword 0x7925fc81fdf05b43
+.dword 0xb79705a0b0f59582
+.dword 0xc4eb741d4bff254b
+.dword 0xce6f0f97f4904a37
+.dword 0xfc6adaaa76b7b363
+.dword 0xd84f23a808202168
+.dword 0x341b0d32d3e1f143
+.dword 0x95035547de9d5fbb
+.dword 0x1fb1bbe166bc439a
+.dword 0x248d1ba1171d6844
+.dword 0x872398be63b902cb
+.dword 0x71e0e5e99fc4f6be
+.dword 0x2a6615d719de7e6d
+.dword 0xaabec7e2471e6174
+.dword 0x9dff5f34680b916d
+.dword 0x08fb3ef47f0d5913
+.dword 0x09d9a2522f18c9cd
+.dword 0x9f78d7d35cce88fd
+.dword 0x57d4b09bd1c04aeb
+.dword 0x691c28422caf6f75
+.dword 0x6939b1cec965ec8e
+.dword 0x8ea73443238bb41f
+.dword 0xdd40f388ec00e49f
+.dword 0x7409667f8af598de
+.dword 0x626019a04bc7821c
+.dword 0x81f744233d0ed8de
+.dword 0x83182a415aa7a6d4
+.dword 0xb6a6291d02e59826
+.dword 0x3e150ae7965adca5
+.dword 0x3b7edd39c832b679
+.dword 0xc11ae3fd7f8dd3da
+.dword 0x7f63701f8516624f
+.dword 0x4cc43aab3e7a03a7
+.dword 0x7f7133743d8661cd
+.dword 0x13a2dc1d25843b39
+.dword 0x1b3a1267111b79db
+.dword 0xfc005594b82e78d4
+.dword 0xe539458fa35086e3
+.dword 0x82d19b53f4ff1af9
+.dword 0xb470ed1c2c01fab7
+.dword 0xf047382ebc115f19
+.dword 0x462fef32a7346653
+.dword 0x11eff057f99c40bf
+.dword 0xf9e4e8ca7bf92729
+.dword 0x218ea6737cc99059
+.dword 0x392130918a8c451d
+.dword 0x452f83c27b1d65fe
+.dword 0x3d8adcf058d0ae9c
+.dword 0x047ad1c21d16358e
+.dword 0x4547d2eab39c7eb0
+.dword 0xbdebabc611aee4de
+.dword 0x8588fb0e85de262b
+.dword 0x85a4a6bd8534d7fc
+.dword 0x20fea9c6c48fdb82
+.dword 0xa750e39675304a53
+.dword 0xe0c7674930db95ac
+.dword 0x3c2c1ad8441cffca
+.dword 0x5a473c7fbb8a213c
+.dword 0xe63df8d45033076b
+.dword 0xb3d45622dccc6874
+.dword 0x3dc3a1086b7daa50
+.dword 0x2fa7a7b9e9c34776
+.dword 0xca4849d471cb8118
+.dword 0xe4d8fba59e7136bc
+.dword 0xe30c6be200983a2f
+.dword 0x859c2ef03c1d1f93
+.dword 0xfc57e586353dda07
+.dword 0x1c281c4a7236b9c9
+.dword 0x18fa48125d365048
+.dword 0xf55284ac416e7095
+.dword 0x300d8f22fb0c6545
+.dword 0x7ba136e2edab6187
+.dword 0xb97f6e96567e4e46
+.dword 0x7c5668145d968bbd
+.dword 0xd6e1acc345aec0a8
+.dword 0x6b6b8ef14e4c5185
+.dword 0x76f8cf4fda392543
+.dword 0x4ef5293822cc31d7
+.dword 0x3a72346cc0235bd4
+.dword 0x4348005e90f90c49
+.dword 0x18a7c847fa0095be
+.dword 0xd990c09046656fb7
+.dword 0x688adb05b73c0b07
+.dword 0xc23d45417ba0516e
+.dword 0x751feae2025ec1b8
+.dword 0xd5fd4134af29f1d1
+.dword 0x087a3642d3232f51
+.dword 0x007abec19b0dbeb8
+.dword 0x3ad16780897746a6
+.dword 0xc04ae9a705eae0c1
+.dword 0x2fc5f6903f090c9f
+.dword 0x562814ddaff75381
+.dword 0x4fd8998c7d665406
+.dword 0x7a344878a09d1ba5
+.dword 0xe5d9837a83786e4f
+.dword 0x54832c72714ba772
+.dword 0x68e7abbc8ce55234
+.dword 0x242f38874f1e938d
+.dword 0xc6eb16786d9eb512
+.dword 0x4db6803cbbc9b54f
+.dword 0xcb146dadc236262a
+.dword 0xcd7da0f7d930b223
+.dword 0x5714ad8a4db12f75
+.dword 0x98acf23c08444fe6
+.dword 0xad821e51cc261aad
+.dword 0x63a6b58bf35e4783
+.dword 0x94e39546af43349a
+.dword 0xd2759b03583e232f
+.dword 0x98d32fc193789572
+.dword 0xf1cd7acf2a620d7f
+.dword 0x408070dbfb6ccfc9
+.dword 0xcef25879d76e86e8
+.dword 0x29c241fe76a4d24b
+.dword 0xb0af23b399a45276
+.dword 0xa1f31449aaba8650
+.dword 0x1ce8ed66156df589
+.dword 0x52c45c3ba903c748
+.dword 0x34fe1538857dc63a
+.dword 0x0e5c52cc6aff95b6
+.dword 0xc4ca01863304c716
+.dword 0xcb103be1a1ce15ec
+.dword 0x3a69bc0755370b4a
+.dword 0xcaebbe664aa7b8cc
+.dword 0x84a7096de7a8625a
+.dword 0xbe6403c52e67f6ac
+.dword 0xda42e73cf2a80a64
+.dword 0x66198eb0bd22eea6
+.dword 0x30914d5b6f2960fc
+.dword 0xa5a67c758fc604dc
+.dword 0x0cf6201346d4422a
+.dword 0x0ff933633ac69b76
+.dword 0xffffd58311f6e306
+.dword 0xba653791be9cd078
+.dword 0x3f3b380a50805702
+.dword 0x1ce8b9a2d96b83a7
+.dword 0xe8717edaf6fc7252
+.dword 0xdaa60d02e4bac6b0
+.dword 0xcb1c2af5152d6405
+.dword 0x27b4dc140cb5752f
+.dword 0x767856247a5a4cc0
+.dword 0x5dc8713bbb08c3e0
+.dword 0xefdb38e607a26713
+.dword 0xa1b9ff629449e65d
+.dword 0x103a0445c007c5e6
+.dword 0xcac396be21475e5e
+.dword 0xfbfeeb06a61a4afb
+.dword 0x98ae4357d7a5d22a
+.dword 0x6bdaf900640dfa01
+.dword 0xff15b01cb0f725d0
+.dword 0xbdb8067596a3368f
+.dword 0x94395064e025eedf
+.dword 0x72e906728aed28ce
+.dword 0x574450d7537501bd
+.dword 0x04139dec84fafbf6
+.dword 0x440df9e488545168
+.dword 0x860f9ade9a5ec412
+.dword 0xd1a3e3cf305e7e04
+.dword 0xc012badaa61d9ef9
+.dword 0xb0ffa3df5ccce160
+.dword 0xea594e6c08dd9b35
+.dword 0xc6e1f532c7d4ea29
+.dword 0xbd52d16da66a268d
+.dword 0x436dd479a6347d54
+.dword 0xc20bea2ac306509f
+.dword 0xb2e9667920141660
+.dword 0x73efb64a72c66038
+.dword 0x068bb1b3c75235c8
+.dword 0x9deaf7d03c435b7b
+.dword 0x529fe9439894ea30
+.dword 0xbf0ec3a879ba8579
+.dword 0x67c6049a7b2998e0
+.dword 0x91cd00fda674d8aa
+.dword 0x0426161d2ca73fee
+.dword 0xe4f6449daf618f2f
+.dword 0x4ddaa882eddab6a1
+.dword 0xd778ff53443760aa
+.dword 0x7b65724997917f0c
+.dword 0x7ee7f953639f669e
+.dword 0x82f1bc6b42592020
+.dword 0x348f31ed4f99d80c
+.dword 0xf6c93b6b98c6e76e
+.dword 0xe7557eacc2f4e9ca
+.dword 0x2de9223a634b8571
+.dword 0x14606ebb604de1c2
+.dword 0x8209bdc00d809118
+.dword 0xb9a18b9dd3a4ec81
+.dword 0x8df48516a75f2146
+.dword 0x677c8cf466585900
+.dword 0xb9cbc99bc718cb3f
+.dword 0xe9c201f4719f6daf
+.dword 0x5ac79f3e08a29040
+.dword 0x662b9ae656089779
+.dword 0x95c5040663d62c5d
+.dword 0xf718fae632798c33
+.dword 0x2abbeb5c75798e60
+.dword 0x79ac104f23131ede
+.dword 0x08402832f50aaafc
+.dword 0x014f39eba514314f
+.dword 0x319fbdf5b19b1d53
+.dword 0xa270d8af834390e5
+.dword 0x3e2923dc0c934f7c
+.dword 0x0caacad108ffbe60
+.dword 0x6977840ade64f69d
+.dword 0xb332bbaca062d0b8
+.dword 0x850fe36a1d4126ad
+.dword 0xdbe0c8d8fdf21f1d
+.dword 0x45ec1fe757dc7552
+.dword 0x59bbc4a263ff5340
+.dword 0x2bbb32a9377f9bd8
+.dword 0x0a1763ea3c8b189b
+.dword 0x3d83bb533fe2843b
+.dword 0x101d9943c93ce986
+.dword 0xa11f5fbd4198a9cb
+.dword 0xc283ab6096a404c3
+.dword 0x6053d859eb153336
+.dword 0xa26fb5a2cef758c6
+.dword 0x2c249c990c42fe7c
+.dword 0x28b654ed040c2900
+.dword 0x80ba75d7b2a08123
+.dword 0xe3a379fbbde3936f
+.dword 0x04fc44458e1eeac1
+.dword 0xb665b659b269ac52
+.dword 0x321b6395f55e981c
+.dword 0xddd1b7c85df03525
+.dword 0xe75e3c2224794825
+.dword 0xfef5c755bb81ad9a
+.dword 0x137f8e8791feb606
+.dword 0xecf6f01134f7c8c6
+.dword 0xd2ecdd76a7b4c40b
+.dword 0x4f028f79a7840468
+.dword 0x87deb25832fe2ff3
+.dword 0x85f815319a33daf6
+.dword 0x8caa44c3057cde78
+.dword 0xafc9e1d5f34e8654
+.dword 0x091619e36b703ad3
+.dword 0x533134f3e11d6862
+.dword 0x6c659a30d5b515fc
+.dword 0xa0a61b52014b9d13
+.dword 0x0c6ab68d99016837
+.dword 0x4eaf0eace6870975
+.dword 0x901e534eecff2ff9
+.dword 0x78c56b987deacebd
+.dword 0xadb7eceb55c3e054
+.dword 0x08d9704cf7f02099
+.dword 0x61050ca05c5b82d9
+.dword 0x13b949c62c2ce75a
+.dword 0x9734742a6be77c77
+.dword 0x511e8dc57ac02889
+.dword 0x7cd5b1f31a60e72d
+.dword 0xd3ad9580fead9a68
+.dword 0x60b5e6ac25cd6a91
+.dword 0x6ded5175b8bb3b97
+.dword 0x245bb279cfdc8289
+.dword 0xf119c68b10b9ca24
+.dword 0x43b649dffdf03cec
+.dword 0x794195461aacb9c6
+.dword 0xecbf4bbe58f50be8
+.dword 0x7fdf926dabca9f4c
+.dword 0x1f756cf3b348575b
+.dword 0x9d05df1b27925e1b
+.dword 0xa406ad462150b800
+.dword 0xf9c70e20f9a8c29a
+.dword 0x060376dc8d9607d0
+.dword 0x5dbcd385c1ace8b9
+.dword 0xcf03a574076ed17c
+.dword 0x2ddb3cdccc122759
+.dword 0xd64f9b15ddcbdc4d
+.dword 0x98c5d26a61cd991c
+.dword 0x3eaf2594c735fd2b
+.dword 0xf23ce296b09fe190
+.dword 0x0ffe6445aed4fe39
+.dword 0xd7e6245d4522f5d1
+.dword 0x94f89590586611f9
+.dword 0xd0792269a0b2eb60
+.dword 0x291e7bbe77a27e66
+.dword 0xc4168cb5a0f64cf3
+.dword 0x16307a06eaa4e4d2
+.dword 0x282ed7a62d9c7a50
+.dword 0x66775d54742bea60
+.dword 0xe18eaf28d85e6078
+.dword 0x43cb972accf90485
+.dword 0x8e8bea1e77fd61bc
+.dword 0x3378ef84defe60f6
+.dword 0x20d4255c4d17436a
+.dword 0x9b3caa63312de8cb
+.dword 0x82a0c5426d6da7f0
+.dword 0xdce515f75f9cc307
+.dword 0xaac3f647ab2f9ca2
+.dword 0xb616941618df3a30
+.dword 0x34dfc8fb9498d88b
+.dword 0xf9d07b666b85c5f0
+.dword 0xc3c9497558c18bfd
+.dword 0x86d7de158f803ea0
+.dword 0x67a61a29ac9db8ea
+.dword 0xd81a28819ce22ad3
+.dword 0x2726c8988e03abac
+.dword 0x7c54cfbf621b981f
+.dword 0x71c51599cae6ac93
+.dword 0xe4e6edc163f39623
+.dword 0xb0b0a6c9ccb6ab77
+.dword 0x8d32fdc91509e712
+.dword 0x844127b751ff868f
+.dword 0x31d2b1fe2c82a697
+.dword 0xcf24be6e7d153581
+.dword 0x0d345dbd7c2a93d1
+.dword 0x993a289f058a9fdc
+.dword 0xe5da16b72564d533
+.dword 0xf36e38a9c7fada9f
+.dword 0x103dbf3da59c37bd
+.dword 0x6f0336752c0a734b
+.dword 0x9bf1650c4e4ae9d7
+.dword 0x4da1bb1aa135344d
+.dword 0x935aa0e1b4e334ef
+.dword 0x535ea1e608ebc050
+.dword 0xd0e8841c11a608a2
+.dword 0xf6ec735ba7046df6
+.dword 0x3de82773ac2d0de6
+.dword 0x0923368b128480a7
+.dword 0xc26fe4bef7c62682
+.dword 0xd8f7e0359072f2c0
+.dword 0x313b1fb616251765
+.dword 0x4cf7e31756a2b408
+.dword 0xb02ce68f36618b85
+.dword 0x256548d5d75a7fb1
+.dword 0x5110da13f1ee1d30
+.dword 0xb575866d223b84f7
+.dword 0xb08887478e7db0ca
+.dword 0x23eb45345683e5ae
+.dword 0x82e849aeb4c0c248
+.dword 0xa6793a84249beb14
+.dword 0x5968b53952099c13
+.dword 0x30724e6d39c32816
+.dword 0x86965eaa9fcf933c
+.dword 0x8574c1c168b64c29
+.dword 0xaa3db5cd1daa7782
+.dword 0x8cb987ab690bb531
+.dword 0xf15edccbd49e858c
+.dword 0x20870bc7d0871053
+.dword 0x624e1b971368b2c9
+.dword 0x596cd5788b816428
+.dword 0x3576b648c705b44b
+.dword 0x65c9fcdcb748ae8b
+.dword 0x41dac6101b539266
+.dword 0xb53c84c4790e9739
+.dword 0x409ec51ae9e22670
+.dword 0xe0b2d9e0d6d77dea
+.dword 0x86a332165010176d
+.dword 0x603a89645456eded
+.dword 0x201044587517a1da
+.dword 0x7100d568d4d25ec3
+.dword 0xd11bf52421deb103
+.dword 0xd7a35e791cc4bc2f
+.dword 0x0b16bc62b8985482
+.dword 0x5589c69c55a7158d
+.dword 0x07a11f9dc13ea91c
+.dword 0x59eb0aad60a363e3
+.dword 0x4eb745addc8ecaa7
+.dword 0xb0a62fe60a56e619
+.dword 0x48ebe2d85177b73d
+.dword 0xa3c040a6e10f10f2
+.dword 0x28732e10de97c716
+.dword 0x79eaba8f4effc030
+.dword 0xe40fb142bbb0a4a4
+.dword 0x78071cf7591c36c1
+.dword 0x7e059bc004bf6b47
+.dword 0x6b88c1fddf556b8c
+.dword 0xa30ca8abd1153a2a
+.dword 0x938d08c18c4e2056
+.dword 0x5788848caa84feab
+.dword 0xc0a15bbb40b3aac7
+.dword 0xdc84d5cb0cc9278b
+.dword 0x32f9bc958285af4d
+.dword 0x99c65d3a819ab366
+.dword 0xfe3ea828bc26b89a
+.dword 0x656911320170684e
+.dword 0x1d339d1e5674234e
+.dword 0x4776a67448c53f5e
+.dword 0xbd2e6531df449fd2
+.dword 0xbb7e00cf0bab7f22
+.dword 0xc04e66b901c31be5
+.dword 0x04fca0cb60a2d671
+.dword 0x293350650d8e876f
+.dword 0x280800593345f4a6
+.dword 0x28c310b35db94ec4
+.dword 0x1863264e0dccc796
+.dword 0xfcacbb76ec101b39
+.dword 0xc0f074caea645187
+.dword 0xc7f8e5e58f4bfea4
+.dword 0x86a059e17a3fc4f2
+.dword 0x4c43fd55287a271a
+.dword 0x7c300917221affdb
+.dword 0x250a41ad7544dd82
+.dword 0x9581541ac60b40ef
+.dword 0x1bb78d20362721e1
+.dword 0x8b4f39be1e23a770
+.dword 0x0d8158273dbdffa6
+.dword 0xf8e7b95d205fd2ef
+.dword 0x78972bc4ff6e5ccb
+.dword 0x56508f652fbdd67c
+.dword 0x3e9302a251bc1430
+.dword 0xb93ecd48f8dd0af0
+.dword 0xdb3a24f8433dee99
+.dword 0xbf3bcfacca04e3d9
+.dword 0x2c2c2ea028bb9117
+.dword 0x4f217854a0eae82b
+.dword 0xf3cf9aafb0f5e18f
+.dword 0x919114b95aedfefc
+.dword 0x3f9dee600786446d
+.dword 0xf133d68f883de548
+.dword 0xf9b5fef9fd8e1216
+.dword 0xbce9679a85ef18b0
+.dword 0xb646a79288de4101
+.dword 0xd268d4b04b9392f6
+.dword 0x94880eeae2dc47b1
+.dword 0x1a13346e6daac5af
+.dword 0xcb6724388fbfd205
+.dword 0x5ce11da73600c247
+.dword 0x8ace1c26267813f0
+.dword 0x4969791d673b17f6
+.dword 0xe466f43a63e254d5
+.dword 0x77ef7d31ed2c4638
+.dword 0xb507ef5462dd8fdb
+.dword 0x46cbf3d7f15ea15a
+.dword 0x4fdd28cd4fa7d058
+.dword 0x1cf00783f5fcc998
+.dword 0x5937ffd391b4121c
+.dword 0x726ae85085543f2f
+.dword 0x9e8a1986bc7835af
+.dword 0xcf059b74bef98e39
+.dword 0x2e34ea17943e089e
+.dword 0x59d68c41a9060935
+.dword 0xa1f86969353497eb
+.dword 0x6ff8c7cd3b95d066
+.dword 0xe966813fe37da9c3
+.dword 0x168c9fbcf131b279
+.dword 0x21a19c664333ba87
+.dword 0xa039b296cecb44c0
+.dword 0x5b6791c257ea3474
+.dword 0x9bfb380bba3ebc7a
+.dword 0xd264935b7a2c52e5
+.dword 0xed6f840a7a95ec26
+.dword 0x4f6d747e7d51c112
+.dword 0xe02632a236b87b35
+.dword 0x8cb6cad4b10b932c
+.dword 0xa627d0ae263001e5
+.dword 0x423c22be491a271f
+.dword 0x2abe8dd49875982d
+.dword 0xe0c0b499061ab01a
+.dword 0x9de43d01f33ad0bc
+.dword 0x1a153c896933958b
+.dword 0x3aa29c9f1f59a3da
+.dword 0x87d59bb62911b70b
+.dword 0xd042241301cc6966
+.dword 0x41dbc7a0926a2af3
+.dword 0x2339414d7985a7d8
+.dword 0x9be230972380054e
+.dword 0x8515503c1f196170
+.dword 0x2341deebda0bd0c7
+.dword 0xbf23fc52088a84d7
+.dword 0xdf670442edad4300
+.dword 0x1487d3b0aced4255
+.dword 0x289d60010f59a14d
+.dword 0x19cf0c94bf75df73
+.dword 0xa63f366db50086a7
+.dword 0xdd99a837e6f6d0f7
+.dword 0xd269ea82a43e2680
+.dword 0x0cea9a94e8e86a5d
+.dword 0xb425e94b746fc4cb
+.dword 0x53a21e388ec5b864
+.dword 0x9e93a88fbf3026df
+.dword 0xaf3d1a43e419e1ff
+.dword 0x3999a803e95f730e
+.dword 0x2559d6e6a92855ff
+.dword 0x9e2bdf4b552c301a
+.dword 0x81e852c259f7f85d
+.dword 0x1012bff1f3b468e9
+.dword 0xb1a87851bcd10849
+.dword 0x16c60dd766c983d0
+.dword 0x0b1accd3328d67e6
+.dword 0x38db2350e1a68ea5
+.dword 0xe33ac904f36039d5
+.dword 0x719fe7660c78585f
+.dword 0xf2cf3baff4749b5a
+.dword 0x2e072b4e9023bf6b
+.dword 0xbdf7b96a378f05f5
+.dword 0xf6c7da343c8f38a1
+.dword 0xca69e002baa4e9ec
+.dword 0xa9084561d410e7c8
+.dword 0x5ac807f594a59f3c
+.dword 0xd8064d8bb8e70aea
+.dword 0x7f4ccf8475a8c4b3
+.dword 0xca51ace155b99d5e
+.dword 0xf43edbae5b665134
+.dword 0xf955ec5c586c8b3d
+.dword 0x3a15e61aa99a9582
+.dword 0xd44a5dfa82712ead
+.dword 0x8f326a5d1b698dbb
+.dword 0x73702909d9b9563a
+.dword 0xdb0835796661d394
+.dword 0x3192afebccf680f4
+.dword 0x5ef155c22d97b4b8
+.dword 0xfe4db4098367a7da
+.dword 0x8c311b963b36cf1d
+.dword 0x720ac74a72372b8d
+.dword 0x1b4afc683d5f148e
+.dword 0xafa46f23cd2a5c80
+.dword 0xc5b002eba8553a40
+.dword 0xeb4c528045b4dc12
+.dword 0x215712e1d50f21c3
+.dword 0xce17dc7bf5fb0668
+.dword 0x4066d4577d005577
+.dword 0xc19fd54f74b14667
+.dword 0x6c53b7e5e99f4749
+.dword 0x15ed1d81092fa588
+.dword 0x7bc73b2a8c58dc6a
+.dword 0x3f6e403579bde65a
+.dword 0xad28967f5d65a235
+.dword 0xcff1a5e0c233fd6b
+.dword 0x5ae558926c64c508
+.dword 0x9e70341e6951206e
+.dword 0xb0aeb450a3243a8b
+.dword 0xbe856bb6d0c499d8
+.dword 0xc3104984da52d674
+.dword 0xdf03ddbb9d5b35e3
+.dword 0x9aca323fd0e022ca
+.dword 0xc4abbc5e9a3db7ad
+.dword 0x1377077b2bf118b2
+.dword 0xc78589ae2da51183
+.dword 0xbe256271658322be
+.dword 0xfc36a32db3e1e44e
+.dword 0x7bbba30f6f42d241
+.dword 0xb34edfb6d9e09e6d
+.dword 0x4b0658b4f158886a
+.dword 0xb36b9f6168bd2462
+.dword 0x0d317ebd4210d27a
+.dword 0x01ee7ae8352ce7b9
+.dword 0x52f8e6f0d5005b9b
+.dword 0xec3e32b84451b991
+.dword 0x1be1f9524426832e
+.dword 0x8c3630858b626f7a
+.dword 0xdd50b29b662b7182
+.dword 0x950138996a94ecb0
+.dword 0xb425e69fe94546d4
+.dword 0x988d4893a222960e
+.dword 0xb119b56739fa633c
+.dword 0xa26a49fa7332d73b
+.dword 0x4fec81c26b1b5f8b
+.dword 0x71514d4170c63994
+.dword 0x558bbdf1054f343c
+.dword 0x90f8d36be4011fff
+.dword 0x09b0d5eb17d9ffdb
+.dword 0xf99885359fbef3ec
+.dword 0xecc70b026d675d9c
+.dword 0xf67e29607f9a718f
+.dword 0xdf2150a0ea587be1
+.dword 0x92b0c3e398257066
+.dword 0xb7e91fb379879b11
+.dword 0x6cb18cc9ebaa7103
+.dword 0x6a611cd26867aa85
+.dword 0x55c54f5bdbc43b45
+.dword 0x0deb40e3ec19f233
+.dword 0xbd2c9a5c8e7f46fe
+.dword 0xbe533b4114a91115
+.dword 0x2d429963b96f9c94
+.dword 0x628832c47e5aba23
+.dword 0x239478d49d6b17f3
+.dword 0xcd398595e9762221
+.dword 0xd00047fa5dad314f
+.dword 0x2fe75683dd962445
+.dword 0x028ee7cdc060f73a
+.dword 0x332719613f3cf42c
+.dword 0x4678bf75e1261115
+.dword 0xf226e7a5a94a0d1a
+.dword 0x68ce463f77e7728a
+.dword 0x2336821e3d72ad52
+.dword 0x94b2300d1bf5bcd1
+.dword 0xd5db83b07aaf46e9
+.dword 0xe01d2bd5d4778b1b
+.dword 0x36edb320f6ad919f
+.dword 0xee6925ba338f799c
+.dword 0x15700e00880ed4c2
+.dword 0xabe44b2ea832bf08
+.dword 0x31099c26092004c1
+.dword 0x25acf6d5db4b24f3
+.dword 0xa2f36d0fda62109b
+.dword 0x9b645a23cec03a6d
+.dword 0x48337869133e8440
+.dword 0x390f7085959443ba
+.dword 0x298d08a4e0dae8c6
+.dword 0xe59c374fe6fa8c12
+.dword 0x2dc35e8df492f0d3
+.dword 0x2e575982a8c9a64f
+.dword 0x40ca31ee6c980fdc
+.dword 0xd070342ee4f1759a
+.dword 0x58f6028426f55720
+.dword 0xa048fd9f395e3631
+.dword 0x96556803d34ddcc2
+.dword 0x08e4820ed1fedc38
+.dword 0x9d3c515a3a7a346a
+.dword 0xd3aa5a1a4b866344
+.dword 0x071831577b1bb720
+.dword 0x3f46777c8d7a210d
+.dword 0x1d081ba1857fe9eb
+.dword 0xbadb90f3f0ec1219
+.dword 0x1cb90b28195e6e5d
+.dword 0x0424fd8ac8816471
+.dword 0xbb9d9742dc5cae1e
+.dword 0x799031d0651f7c08
+.dword 0xa33e4adf7031d4c4
+.dword 0xba393d9cbe9ebb49
+.dword 0x19c5653c9d802fa1
+.dword 0x0116a201f873c995
+.dword 0xf53012051916bf30
+.dword 0x6d00644dd4109fc3
+.dword 0x656ba51b8cce5a17
+.dword 0x54d8ad7dc964f272
+.dword 0x5b6fa5a3dcc02c1a
+.dword 0x348cc40d95246486
+.dword 0x2fef7596a2fe8de4
+.dword 0x28c8452eff2464e1
+.dword 0xe47945e3b2c77b8e
+.dword 0xcc27702cb5e1146e
+.dword 0xa507a73b4c2812fa
+.dword 0x04f35ab64010f547
+.dword 0x004b9f29d02c63c3
+.dword 0x2e81e01ff91599f8
+.dword 0x2767fa6d612cc78e
+.dword 0x22250957a47914e1
+.dword 0x351c72d3cf9fc225
+.dword 0xf0c1cb8c7d7af456
+.dword 0x0907f5f43334002f
+.dword 0x1f2e2e2e481503a6
+.dword 0x20e220cc9e9de423
+.dword 0xa04eea4282876785
+.dword 0x46b8385d55fc74b2
+.dword 0xe71204b5099b0800
+.dword 0xc7fb1b46a98a62ff
+.dword 0x712d3bba796113b7
+.dword 0x99189e877393e059
+.dword 0xc6efa5e0cfd54c2d
+.dword 0xc2f5136c7bb59aba
+.dword 0x94c08ee01438dbaa
+.dword 0x06d848de57d72cf4
+.dword 0xb384158e824a6bb2
+.dword 0x8a37642b10803244
+.dword 0xb1a053c93797ed8d
+.dword 0xc6221609dabd77cc
+.dword 0xd7855e73e06b7fff
+.dword 0x295dc7d4d926b9f3
+.dword 0x1aef637fd081f7b8
+.dword 0x73e0b03c7173e5ad
+.dword 0x4740948366a101ed
+.dword 0x4f302fea5f3a5cac
+.dword 0xaa08946bcb9bb34e
+.dword 0x53b9d7062b6af12b
+.dword 0x43e6f3e8aa46d4cc
+.dword 0xbe057906286cbf46
+.dword 0xf24ff14551531ba1
+.dword 0xa8e98c0079ec3512
+.dword 0x225553027ff83899
+.dword 0x3502a7cac2870ce5
+.dword 0xe3b7216709469ed3
+.dword 0xd92d7b64eea8efee
+.dword 0xf406db69b791ca11
+.dword 0xad0723f36e3d280c
+.dword 0x143dd4581488acce
+.dword 0x5143efb8b389d685
+.dword 0x026882880c7c0c2b
+.dword 0x4136a3bbff6f2daf
+.dword 0x02af565742ab89b7
+.dword 0x2b4badd61d4bc376
+.dword 0x19adedd191336774
+.dword 0x83e9b60927fad706
+.dword 0x93db69e6786add5a
+.dword 0xdbbbd7654756caac
+.dword 0x5fee609be2e02dc7
+.dword 0xf84dae43a9438593
+.dword 0x44900fa8af674575
+.dword 0x183c49e61752ef92
+.dword 0x4f36dbd404edad67
+.dword 0xc45cf51e070d1122
+.dword 0x95503f1cfe6eb82c
+.dword 0x293f78124470a110
+.dword 0xfb45727033e8f58b
+.dword 0xf87e05c8b4b62716
+.dword 0x60b7b99491376d4d
+.dword 0x12c3cfbe822208ac
+.dword 0xbcc17c63d4a46fdb
+.dword 0x9151ef80badd3ab1
+.dword 0xe5b2545d2a4047f8
+.dword 0x9a33f44c3c7ffe51
+.dword 0xa1a7a52c43486bcb
+.dword 0x2ff83d3ef652c772
+.dword 0xd09122104292b3fb
+.dword 0x88568e0f4ca262a6
+.dword 0x16a920dd7128f1cf
+.dword 0x0abd992a75b38ede
+.dword 0xa9f7a8e37b7107f0
+.dword 0xa37f90d4509b8a20
+.dword 0x5f976e4b28e0ac93
+.dword 0x0ff75d1c6c5c328b
+.dword 0x04474d9499c25aad
+.dword 0xf17129e3b1b68834
+.dword 0xbd5777d6b6a10d11
+.dword 0x1e7683a3a3302aba
+.dword 0x8515218e567dca18
+.dword 0xc29c316e4ba54dfc
+.dword 0x98142462f20ae667
+.dword 0x43a335d99c1e63ce
+.dword 0x03a92c5b2a84e45d
+.dword 0x32d8be9c805756b0
+.dword 0x2e44a29ba8c1d289
+.dword 0xa2ac5ec0879b3ae9
+.dword 0x4e603a992eea79aa
+.dword 0xd6e2a30b64b993de
+.dword 0x0d708fded387603b
+.dword 0x1c25aeba033dfdde
+.dword 0xd0ea656c45f466c7
+.dword 0xd8e3d9f195570dae
+.dword 0x70902b39085d7c1b
+.dword 0x83c0ef614fd26e58
+.dword 0x51295bfc3fe793f8
+.dword 0x5c2e0dedb7ce3f94
+.dword 0x0201b2eda8f5b26c
+.dword 0x27b506d948ea9fe1
+.dword 0x8931375a38b23656
+.dword 0x80c9c7cd0ce65106
+.dword 0xb152a293a17d7669
+.dword 0xb2dbaeef81411ecb
+.dword 0xae3c922ab4ed27a3
+.dword 0x2e2f021763e3d758
+.dword 0xc55c3d3f42d41ebb
+.dword 0x9a56e6ced7f9bf36
+.dword 0x87fc1fcc95c92acd
+.dword 0x3448ffed6a598aba
+.dword 0xc135adf0a3b2dc67
+.dword 0x35a4a0481c835b77
+.dword 0x8909428a856f0c3c
+.dword 0x9eb1fbee3ed9f418
+.dword 0xa7206af8c35de368
+.dword 0x45cb99bcadec2962
+.dword 0x2f9dc4897c28fe2a
+.dword 0x6048d5b0b9d3f48a
+.dword 0xf298f4b5fdee461f
+.dword 0xc9e2e3327074cbeb
+.dword 0x15419f6ea8f8abea
+.dword 0x577353706588dbe4
+.dword 0x726cecbc587cf036
+.dword 0xb685bb9a9a91f6d7
+.dword 0x87518ff324f49903
+.dword 0xc996ae529338a54a
+.dword 0x31190d36b8f891c6
+.dword 0x6ea42fc1ce9a2025
+.dword 0x49fe0fdea074bd51
+.dword 0x516296482d73c877
+.dword 0x963eda20f14554e3
+.dword 0x9baed58b783bfa34
+.dword 0x9ee94c4b26655fc2
+.dword 0x5ae0fba79a7a3e70
+.dword 0x16848486d481fa0f
+.dword 0x603ca484daad4b56
+.dword 0x42a8ad9c41eab355
+.dword 0xbedf4d7e42011cf7
+.dword 0xf2e161f76c6c7580
+.dword 0x50b6fc1bcd39d155
+.dword 0x48b08a618f304aed
+.dword 0xbaa8861e7c2d86ac
+.dword 0xaf88dd7f215d585c
+.dword 0x96674c59544d17f0
+.dword 0x225f1c569acdf500
+.dword 0xc308975aac1a52fa
+.dword 0x5e7d3b10aa444210
+.dword 0xbcc43102ba0ea626
+.dword 0x15a688e743d0440b
+.dword 0x9193f969d47a02bc
+.dword 0xa26f0a0a96c2fb52
+.dword 0xaf9d46570378d4ea
+.dword 0x199cf7afe54466f9
+.dword 0x8203ca257d944348
+.dword 0x3c09445929df50ad
+.dword 0x1e076a5a2715e8ac
+.dword 0x994471c4d3c6148f
+.dword 0xbbdcc616d821e67c
+.dword 0x1a44ac4b5ad23c5c
+.dword 0xa87b51eb6d9402a9
+.dword 0xab1172e16d90c517
+.dword 0x3fda147325bb153a
+.dword 0x9103372c89bc698d
+.dword 0xc5c79e94aabbfc4d
+.dword 0x6c5bbe00292f9431
+.dword 0xb80bab2d37b925bb
+.dword 0xd23784bf3bd2ce3c
+.dword 0xb8a4360783ea3ef4
+.dword 0xa803b890b7295f89
+.dword 0x08ced245d5a4dced
+.dword 0x24d2f3a39d61822f
+.dword 0x893eac50bc4e75c0
+.dword 0x6f104eb11abdd404
+.dword 0xd3c5cdb15ac99909
+.dword 0x806df0d0a688735f
+.dword 0xf8f51aae5335bb6b
+.dword 0x7ea48cc132c0c8e2
+.dword 0x2cba233999817ce4
+.dword 0x4e5b839997f23b78
+.dword 0xdae53377ae444ba9
+.dword 0x58f6f09efc0855cf
+.dword 0x5c35c3d3413ba98e
+.dword 0x3730a31076ed1fd4
+.dword 0x5f33edd2e0c781b1
+.dword 0xfac3433d093c9862
+.dword 0xa1cde823f734ff78
+.dword 0xa3463d1556804ba9
+.dword 0x365711b101a81105
+.dword 0x4bcb3658b9b3b0b9
+.dword 0x209c270ef6baa79b
+.dword 0x8e665354be69986f
+.dword 0xbba083aa0926dcb9
+.dword 0xc53492b29736945b
+.dword 0xab338ea8264abc5c
+.dword 0x8f7f16ad74da5aed
+.dword 0xb512c2d330fb312a
+.dword 0x867579f3aa76dc21
+.dword 0x7db31b54cc794152
+.dword 0x27bea4837c2817b4
+.dword 0x8d1979b133364186
+.dword 0xe87bff50c6a96ac3
+.dword 0xf81c1fa5f757634b
+.dword 0x4faaac1503b1d09e
+.dword 0x6224ef799af8ff89
+.dword 0x25e43a6ad7146227
+.dword 0xd40be0ebfc97d5ce
+.dword 0xeb0e94c24c8e793e
+.dword 0xad22010afa7d616c
+.dword 0x641cc16f75ade332
+.dword 0x0dfb4047fc7014e2
+.dword 0x472c4a675a0cef63
+.dword 0x2d51925fed70af96
+.dword 0x6af3ab9db762e39a
+.dword 0xd0ea7ecb85e53d7e
+.dword 0x5c0a7f7df8d001dd
+.dword 0x97970c21b6a047af
+.dword 0x7ef924289e46672d
+.dword 0xe38b6614407e0b47
+.dword 0xdc7349d9fe13373d
+.dword 0xc1a23f3d5a71eded
+.dword 0xcfcab45d8188921e
+.dword 0x717d0c2e44940f8b
+.dword 0xc48a8219864b3c61
+.dword 0xa62a923ace9fa4a0
+.dword 0x5e92a6f89dd56d73
+.dword 0xcc30fdb9c4535cd4
+.dword 0x23e35b68bafe8e49
+.dword 0x974deb861d20fa75
+.dword 0x4072fa23a0e15c15
+.dword 0xc7390f8eed3b25a6
+.dword 0x0fbb049653269885
+.dword 0xe9e8bebf49e4170d
+.dword 0x419dd150e882a92a
+.dword 0xba0988cd707fec4f
+.dword 0xbcd96ce5e9213afc
+.dword 0x5e9875728cb0ddde
+.dword 0x8764f8507ee48732
+.dword 0x3bbf3f5d6647db6d
+.dword 0x35b41e74e2e2eace
+.dword 0xfc4d4fa30b68248a
+.dword 0xdcacc9b0b0edcb15
+.dword 0xa41f29dc65dfe3cb
+.dword 0xa45f4e481e83f18d
+.dword 0xbd6d6d111e30cf79
+.dword 0x5aa10b7463ca3901
+.dword 0xbe53b55a1f96c939
+.dword 0xd030224ace4f05d1
+.dword 0x2ac17b94849d6c07
+.dword 0xc5cb6740b3148347
+.dword 0xf340d9309fca1790
+.dword 0xe8b4dea78fc80e87
+.dword 0x4f76ee8e1e48516b
+.dword 0x34dcc154348d6748
+.dword 0x4abe5730ffff15c0
+.dword 0x21e0503a819b31f9
+.dword 0xc96587309fa23e42
+.dword 0xc1833e0270c2bcd8
+.dword 0xa99ac8aa2712abb3
+.dword 0xc8b49d777a23d760
+.dword 0x61e9962f28477d65
+.dword 0x99a87d4c1387c977
+.dword 0x8510216b8527d878
+.dword 0x013dd19fd506ee55
+.dword 0x6deaee1b25d9c4f8
+.dword 0xa88d701409c8dfbf
+.dword 0x168c9d4d0acf98b2
+.dword 0xe3b9c081649a43f3
+.dword 0xe561759c1ce9d817
+.dword 0x9f522e8e34014439
+.dword 0x6d7a1e9cf0dc4de1
+.dword 0x563cf38c08a15dce
+.dword 0xe0599eacbd83b532
+.dword 0xc9e2545960f57f86
+.dword 0x42e0def8d52d8810
+.dword 0xd895d8c5237d5796
+.dword 0xad3dc0b2ec7dcf04
+.dword 0x5dd5d29d5093ae1f
+.dword 0xa657447ee3462b9b
+.dword 0xce12c4679b63f721
+.dword 0x63cd898ea3144b5d
+.dword 0x646d03b8f62abf0d
+.dword 0x745e257cc2d76f3e
+.dword 0x26c7e8041f2bba6f
+.dword 0x7599e4147cc6ccf5
+.dword 0xcb14aef62beb4cd1
+.dword 0x0b741f82cb0b1ea0
+.dword 0x8821d8bbbaa3a323
+.dword 0x597d76881215051d
+.dword 0xf007e61582d53a58
+.dword 0x763bc21355a09e01
+.dword 0x21b1c4bf620f1338
+.dword 0x1177eff319520c69
+.dword 0x5e4c88467d4d3511
+.dword 0x9bee5d3b94069b07
+.dword 0x654b26beb81be7c0
+.dword 0xd9a39bf9b1ad87f3
+.dword 0xacb0d4a6ab6e6a96
+.dword 0xaf9afc1075bcf202
+.dword 0xf50290b99a653932
+.dword 0xa832ce393f9a4a25
+.dword 0xede42e9a6b4d47ea
+.dword 0xe0e6f121bc9cdac7
+.dword 0x227794f6edde9de3
+.dword 0x8ded7612ba6be119
+.dword 0xa46500a11252d357
+.dword 0xf5c0d64279f49f1e
+.dword 0x6c413acdc02dc89d
+.dword 0xd9ed0eab2c993b44
+.dword 0xdeb70e5655b01951
+.dword 0xad19cb575494047f
+.dword 0x6cde6ec65b295592
+.dword 0x886ca03a84563934
+.dword 0xb99a282f04454bfc
+.dword 0xb6139b12a56e33ed
+.dword 0xbe3949b50eaede12
+.dword 0x2ed2e50033897605
+.dword 0x0e504e63c1d3b1ec
+.dword 0xf9c503fe810d6700
+.dword 0xf7f87ee4dd2f86bd
+.dword 0x99dee84c2c85eff5
+.dword 0x95cf7122fe5511bb
+.dword 0x797130b44f736632
+.dword 0xffcf9c1a69a8cf85
+.dword 0x3c2e7b4a50da4ac1
+.dword 0x7af6bc8543e9d21a
+.dword 0x169d32b2595507f0
+.dword 0x128741ef678e3d1c
+.dword 0xcd74ddbe254b7267
+.dword 0xed810389dd7d8a74
+.dword 0xf3055f64993ba448
+.dword 0xf1938fd09fd69b98
+.dword 0x8d9b8dcc36eee7e1
+.dword 0x52933400f9cc21ff
+.dword 0xb71ae1531f3afcbc
+.dword 0x6bf79b7aad2c6679
+.dword 0xc3f9eef096dd485e
+.dword 0xfac68f7bcb3842a3
+.dword 0xd6d2d22314bf7348
+.dword 0xd4c21076b4a52821
+.dword 0xaeedab74f418482e
+.dword 0x93f630d0e77aa9d5
+.dword 0x8b34f6b6d49d6f23
+.dword 0x48a16a2a0ecabfe4
+.dword 0x30235735587286e0
+.dword 0x99e56e4c26074bbd
+.dword 0x4393b3e4cf51f8e9
+.dword 0xed0865524a1029fa
+.dword 0xb95c0e7e7ef2ac3c
+.dword 0x30c2f0295e030b8b
+.dword 0x739c2b227d05d49a
+.dword 0xa4fb32a988e51bb7
+.dword 0xe6b75f98a85ac6ca
+.dword 0x758f14666e5be9eb
+.dword 0x5b1cc1558c1afa01
+.dword 0xb3d1c48db5a67068
+.dword 0x6d200b34853ce829
+.dword 0xc3219f80cb28a510
+.dword 0xc8cc11ba1be5bd93
+.dword 0xe2e9c8a06722d9a5
+.dword 0x9643b35e05912e63
+.dword 0xb4ebdcb98066cbf2
+.dword 0x918e65f87aa0f31e
+.dword 0x3d60eb641f7f5dd7
+.dword 0xd193ff34d39c9677
+.dword 0x33b060b261e456a9
+.dword 0xf28ed8470f2af50c
+.dword 0xe6e54a1ed7c415c4
+.dword 0x440b2f5aaedddee9
+.dword 0xb34a1c267871edfb
+.dword 0xe53295282a22f0b0
+.dword 0x4feea6e8b0bcd498
+.dword 0xf9406911517ce780
+.dword 0xed7d6d6bd2225760
+.dword 0xd2171e25246e2046
+.dword 0xee586642f5547259
+.dword 0xdef02db0af37eaf4
+.dword 0x594b29374d184bc0
+.dword 0xc630502a6e8c178e
+.dword 0x227561b845b65f7a
+.dword 0x34b22dc9febb01b8
+.dword 0xfa78a44657867247
+.dword 0xdf18c2290d07d180
+.dword 0x1c9babf668bc08c6
+.dword 0x8d00363a480248e0
+.dword 0x9c3d5fb6d01b262a
+.dword 0x51a48069ca72ef09
+.dword 0x089674bbfc18b4e7
+.dword 0xda412a57216fa816
+.dword 0x2060e1dd472e48d4
+.dword 0xe0f0b037c7855c09
+.dword 0xad171d1b03d574d6
+.dword 0x0b53bcb877c06ad5
+.dword 0x45aa3fb3998479c9
+.dword 0x118c91e81fcac16a
+.dword 0x783e00c129d9c490
+.dword 0xe260f156bc3c1e74
+.dword 0x253dffce26c0c570
+.dword 0x9546e77a8ce588f4
+.dword 0xeddf7c219a7dbd64
+.dword 0x5389537fb082c090
+.dword 0x8671c36d6a73319d
+.dword 0x8b8db463a4ca7e0b
+.dword 0xbde6290349b6e71f
+.dword 0x0ed9c247ffbcb0f0
+.dword 0xd7571aab637aa84b
+.dword 0x87fb84144c2ede69
+.dword 0x717645dc1020216e
+.dword 0xcfd86b1c80370b11
+.dword 0x8867e5eaf1a61d8c
+.dword 0x97ea5afc3ae7ce4f
+.dword 0x7bede7ba44fd22f0
+.dword 0xc59269e4787b9312
+.dword 0xcdf339ea4176ba41
+.dword 0xb5d57d82ef7394f9
+.dword 0x4d34d054e568ba7a
+.dword 0x3441cf4f720f7c24
+.dword 0xa9cf854125b440d8
+.dword 0xac817efd32d3c353
+.dword 0x0b7baef942d122ae
+.dword 0xe4020fe4998bd2d6
+.dword 0x04a04cbe225bd6fb
+.dword 0x042b98c67d798537
+.dword 0x6fc03e5e7225cde5
+.dword 0x3827b6b86a50e1fb
+.dword 0x12396dc7fb39a074
+.dword 0xfed67ef1e3fc384f
+.dword 0x5a56dcd96d8213f6
+.dword 0x3319b23a48629359
+.dword 0x2e87cddb6f240e2d
+.dword 0x09c5b77d1c4749d8
+.dword 0x1ea805130ff17124
+.dword 0x2e64aacb49acff82
+.dword 0xaea925830476298c
+.dword 0x228ed2f3778e13f0
+.dword 0xc29d8a9e6c491f0d
+.dword 0x502253169ce3f065
+.dword 0xc0c7c4b205233073
+.dword 0x24ba3ce8334efbc0
+.dword 0x3521b3bee3f9c151
+.dword 0xef1eca80ee394a02
+.dword 0xa2f9ea27b058852d
+.dword 0x47ca80af6b090a3a
+.dword 0x1893cb6ee9d2b5ac
+.dword 0x70fcf1392ac57b55
+.dword 0x045104496edd9789
+.dword 0xff30701dafefe57b
+.dword 0x344358166de1c4b0
+.dword 0x736391ac6e75ca0e
+.dword 0x486a37effe78af17
+.dword 0x2a46e858af7253b6
+.dword 0x67c0527fc8fbfb3e
+.dword 0xfc5b2710b56345fb
+.dword 0x8be0119e8c6d9c4c
+.dword 0x8b1c9e6a85d3a8cf
+.dword 0x8b3c470905db0b22
+.dword 0x4ac60f3fc290917b
+.dword 0xbd47b865b6aaa20e
+.dword 0x67ce3ed686084aba
+.dword 0xc5b50871ca9e80a0
+.dword 0x845883476f03d52d
+.dword 0xfa9768eec8eeedde
+.dword 0x4d3a88f8a4749c4c
+.dword 0x28b21fdd0ef12548
+.dword 0x40fda78540d3731f
+.dword 0x68c1a669ff23fcd6
+.dword 0x25fff2de730b3e11
+.dword 0x2fd40d358724e51f
+.dword 0x34a19e217b9f5747
+.dword 0x6ada6d671970590e
+.dword 0xd866901a62580c67
+.dword 0x11a23fb2cf9418d2
+.dword 0xc8c0fe45620c7b0e
+.dword 0x799c8365caf82457
+.dword 0x65ec067abc1b8bd5
+.dword 0x05e1a4318938020c
+.dword 0x3a56d55a416e2424
+.dword 0x4e14759747bd21ba
+.dword 0x0fc43cfa2f05719f
+.dword 0xc6c11d01d2a154d0
+.dword 0xa3f4212ea24cbb50
+.dword 0xa75ee2dc392c2e65
+.dword 0xd0211c2b3932f0bd
+.dword 0x3097fb1bf15ad9cb
+.dword 0x20ef7644ce79da2b
+.dword 0xbffab724b7c86b11
+.dword 0x7376b07d036246fa
+.dword 0x372969f8797d37dd
+.dword 0x1c88eb7b4bc2e4b6
+.dword 0xe1d38853cdc3b40a
+.dword 0xe441b90b31c8bcaf
+.dword 0x0ae545824d44cf32
+.dword 0x8f457b285d4a391c
+.dword 0x1bbf2da260126162
+.dword 0x2dac10bda88da80e
+.dword 0x08a72b59a89e89fa
+.dword 0xb6dfb6995b289e5a
+.dword 0x4ecfbbc9521e3879
+.dword 0xc22e0bb8d8e12958
+.dword 0xcce1b48f00bac5f9
+.dword 0x256c389d4d5773ad
+.dword 0x291a1356bc3c2e5c
+.dword 0x6add8139c8715ae0
+.dword 0x7f5f3649169c372b
+.dword 0x61898d080fda0a17
+.dword 0xd3c98fb984e09c55
+.dword 0x086a4f3e1d33c9b9
+.dword 0xd82820c72aef5a6b
+.dword 0xe4681113ad56a3d8
+.dword 0x2063df57c19d08ae
+.dword 0xa55a5c9e693d046f
+.dword 0xf3c485d8388ab9ec
+.dword 0x7a56cf2f8cb998f5
+.dword 0x248da996421acc15
+.dword 0xaeb4f37f2a8b5b5a
+.dword 0xfcad23b2abed597a
+.dword 0x2efbc12b3bb970b9
+.dword 0x61220af806f06549
+.dword 0x028a5e2a0d316c65
+.dword 0x67d1d62374e94530
+.dword 0x63277e027ae382f6
+.dword 0x0d3649229b7637b3
+.dword 0xb0c7f08a767625f3
+.dword 0x8c7b38be202fed63
+.dword 0x70840b94b23c6be5
+.dword 0x04753d06386d724a
+.dword 0x8d5ac6753d8eeb7f
+.dword 0x8da1f3bf06405000
+.dword 0xaaef58bd393c864f
+.dword 0x69e3f160d1fb37bd
+.dword 0x089077f06c6a9afe
+.dword 0xb117ee8e080b510c
+.dword 0x8ce8c82747028b7d
+.dword 0xc7a18b8af8664939
+.dword 0x062c376cb64f1351
+.dword 0x8dd211976522cc45
+.dword 0xc0401799d11fd72d
+.dword 0x5d1972a52ff9bb54
+.dword 0x66dbda5483b0be7b
+.dword 0x33b79d8e17dc2659
+.dword 0x6fca47c3d41cba6d
+.dword 0xaae4fd5faac5d648
+.dword 0xc76e713026b646b8
+.dword 0x4f8ae8619b1a7033
+.dword 0xa072cc0eaa81ffe1
+.dword 0x0128811df86e212e
+.dword 0x333a49c1444f5476
+.dword 0x872485a45a2c33a0
+.dword 0x19afbb3c6a7fffbb
+.dword 0x54ba5df9b904cf04
+.dword 0x151b9d5b5e9db735
+.dword 0x3161aceebd176ab7
+.dword 0xdea6483b12ff2d0d
+.dword 0x8bbe12e61624040f
+.dword 0xfe175fbb878af752
+.dword 0xdd3e3fb9471079d6
+.dword 0x3171911d79f0f016
+.dword 0xe724ab40d562c5bf
+.dword 0xcc0bb6ecc6bad927
+.dword 0x6098782657c6288a
+.dword 0x7052e168cb1b8697
+.dword 0x21ce5738f1f6b0d7
+.dword 0x55cb0b8ee7672854
+.dword 0xefbd12b23531ddd0
+.dword 0xaa8a37c30fe36b2e
+.dword 0x479039dd7f10a6b9
+.dword 0x34e86d7926170c51
+.dword 0xe374acac833154d0
+.dword 0x61492aebb28fc88f
+.dword 0xd5c77fec19d01d8e
+.dword 0x115a0e028c11bae9
+.dword 0xc9ede48130159c0d
+.dword 0x1b1d3f59072b48fa
+.dword 0x0dcf4d482ba45d33
+.dword 0x8c14137237e43ea2
+.dword 0x7fc387beeef14f03
+.dword 0x2446af2c9753237f
+.dword 0x41c368d7ef5a770a
+.dword 0xbb30cfdaad63dadb
+.dword 0x276ca585ba32fcb8
+.dword 0xb82ff38092b62de9
+.dword 0x0a6c9e2f04913d42
+.dword 0x2c3b058936cc4cd1
+.dword 0xad11dbf4d3be4f8d
+.dword 0xffbfd7d057453253
+.dword 0xb2876c6f71e602ec
+.dword 0xcad5d0466b651573
+.dword 0xef939e77f3e398c2
+.dword 0x09208a7f5a33edea
+.dword 0x7f4b4a554d5ddf81
+.dword 0xb52b333d7318cc1a
+.dword 0xd1051a6ab6c8efd5
+.dword 0xf4a75814d2740762
+.dword 0x718ace83abcb5430
+.dword 0xff0735732f392f93
+.dword 0xc1eaa3a98097e7e9
+.dword 0xcfea3429d55b6e77
+.dword 0x0b90b1700fbf3459
+.dword 0x0a831a8ddbee6623
+.dword 0x179f3a25bfc4f231
+.dword 0xb64223dec82520cc
+.dword 0x3b6669a0c3ade865
+.dword 0xacd84935cbdecb5b
+.dword 0x058b85d3d2ffafe3
+.dword 0x0630ab65396890b6
+.dword 0xb81ca89815316b82
+.dword 0x26fb63b99e754704
+.dword 0xeccc183968caa00c
+.dword 0x902d06d1fdc6dd38
+.dword 0x618aa7e6cb8d658f
+.dword 0xd2bfe863480cc089
+.dword 0xeda8e36fa3ef748a
+.dword 0x0d6bb1e21689a1fd
+.dword 0x6e5aec5c9bcec28b
+.dword 0x3c7d876ba221b3c4
+.dword 0x5335fdc7845c0083
+.dword 0x6de12049da54e1f2
+.dword 0xc27beae1363c723f
+.dword 0x79223b4807f74611
+.dword 0x4d8c3038391e3816
+.dword 0x49b18f9f4f3e57ac
+.dword 0xd27f503287c3d502
+.dword 0xea503cdd3ecf18ce
+.dword 0xa2301c3e0c3f01f6
+.dword 0xc3e5fe3fcccfb440
+.dword 0xf349ae9bf3fcdb53
+.dword 0xf0c0d72b81a06897
+.dword 0x36a7a235ac73299c
+.dword 0x735bd6f8b54a6433
+.dword 0xaead8ed69ee258d4
+.dword 0x760bed029e00aafb
+.dword 0xcfb26bdff45763db
+.dword 0x015ccd486fa2b916
+.dword 0x525294ff91f4a27f
+.dword 0x0ebc8621b0872f60
+.dword 0xeebdbe1bccc473e9
+.dword 0xa12b48613111b0d9
+.dword 0x1ac3010e3c72c8bc
+.dword 0xe5ffcab5f1bed7e3
+.dword 0xe23fd2927786f46c
+.dword 0x80aeaf4b3266787c
+.dword 0x916b36ca863d2791
+.dword 0x4cf6ffe96c782ee7
+.dword 0xf647f20445f491a2
+.dword 0xa892eee64cd8e1c2
+.dword 0x884de75bdf2b13b4
+.dword 0x8d21632d99c27752
+.dword 0x21cfdc7244eaa58e
+.dword 0x53d92206da706615
+.dword 0x4d65150392b4724b
+.dword 0x87343a7ff8810537
+.dword 0xdd9e5c29594393a6
+.dword 0xe786434a3a8e2fa7
+.dword 0x8d92008d71ab2b18
+.dword 0xb4287b6e65afbcb9
+.dword 0xc650aca3ae5ab552
+.dword 0x40e519ca03ad830d
+.dword 0x1596dac17748895b
+.dword 0xcfda165086ac1f01
+.dword 0x7354311831d7d874
+.dword 0x1f4c28c277e53050
+.dword 0xd6134a93de05ffa0
+.dword 0x05e2bfc51e290847
+.dword 0x21ad72873730b45f
+.dword 0x949df2fa4acf0c8f
+.dword 0x39ce1397246e4769
+.dword 0xd2296850904fdc70
+.dword 0xc238484526f3dcc6
+.dword 0x1abb3689024025f7
+.dword 0xe4015c249a5bce8c
+.dword 0xbb5fc7205ff5de65
+.dword 0xc532d60807f23a0a
+.dword 0xc48c626f9ee473cd
+.dword 0x72373a0fd228edba
+.dword 0x468ab627588590d9
+.dword 0x08864271cdaad2bc
+.dword 0x9e558a14d0d3fbc3
+.dword 0xfd510aebca84d32c
+.dword 0x167db88e0870e91e
+.dword 0x1b7c5b0d2c75fabd
+.dword 0xd2dc42d19eeb58c0
+.dword 0xefbe0037950c4523
+.dword 0xa63a2936ede4e586
+.dword 0x4f4bc92591710cce
+.dword 0x29ac5f3adf4afac7
+.dword 0x479485e4ed1cdc0d
+.dword 0x0521006042d8029d
+.dword 0xe5d4c15fd29f2ef5
+.dword 0xb1ce08d8c1d2ef62
+.dword 0x672f949cda37d12e
+.dword 0x60bc486337485715
+.dword 0x77e9a2220d84a610
+.dword 0x06952b11b2be4d93
+.dword 0xdf96b5a27ae1bbca
+.dword 0xed5311ca53ba1436
+.dword 0x344cf535bd738885
+.dword 0xa49473bc62505a60
+.dword 0xc818c26da7076f92
+.dword 0x6e2fa453c9951127
+.dword 0x2aca91df4439dbdf
+.dword 0x3342eee048fd0e0a
+.dword 0x7a63c8c1dc87a305
+.dword 0x5fb7651a24c080ea
+.dword 0xa1ee5fe810687ff7
+.dword 0x6ba8a869b6464de0
+.dword 0xdc8435e960539046
+.dword 0xe840bf420f15249f
+.dword 0x84edc5c3fd66e997
+.dword 0xb3eaee9d5ff4ba90
+.dword 0xf8f084881423fd84
+.dword 0x95ef253be913107b
+.dword 0x1b211f9e8f079bd0
+.dword 0xe4c2db51d368b412
+.dword 0x1dbee89c60996b34
+.dword 0x22a8bf6fd679834d
+.dword 0xea9ce2abbba3b953
+.dword 0x28a0a634dd8cfb8a
+.dword 0xf6c833e9cf84ceb8
+.dword 0xdba7965fb31c83bf
+.dword 0xc5b295f69c976eac
+.dword 0x4eb0cd907ed05256
+.dword 0xbed191a2be37eb91
+.dword 0x25cf7c6a3ca0d20d
+.dword 0x5e51c9ee8db73c7a
+.dword 0x1f198e43693106a9
+.dword 0x5c2cef385f308eb5
+.dword 0x61f39da52497c7a1
+.dword 0x5483d46f26259d89
+.dword 0x56aa7e7aa92bd60b
+.dword 0xa3ea09d25dc16542
+.dword 0xa7f5c568780ed412
+.dword 0xaa4fa01d1d0b445d
+.dword 0x2b7c01a48cd6e4dc
+.dword 0xea8b9b01b6d9cde5
+.dword 0x926610e4e861f7f0
+.dword 0x2da4eb90826eaac9
+.dword 0xeadf9097957b6188
+.dword 0x8abdec9af9ffac33
+.dword 0xe111bad3714affbb
+.dword 0xc64b06bb13c2ebb7
+.dword 0x3b953d0e8566a43d
+.dword 0x6cc6c73190fcb504
+.dword 0xfd2efb6386840481
+.dword 0xc5a44a26389f56ac
+.dword 0x4c9fe886dbb4094b
+.dword 0x591b7426acf067b0
+.dword 0x4d8725eb3efa0cbb
+.dword 0x33188d3b15fd0ee2
+.dword 0x190e024b8d0eb536
+.dword 0xc8529c0850daaf47
+.dword 0xfbadd94965d46d6e
+.dword 0x05086bea9296203a
+.dword 0x34cd47055ad6697a
+.dword 0xd7dd8ab8591403c3
+.dword 0x02b12286a50c0741
+.dword 0x55abe393881456cd
+.dword 0xacae8761236ce349
+.dword 0x23b8788968e91c20
+.dword 0x5e73571a262439ea
+.dword 0x3052774339fa1ee9
+.dword 0x49ed5582278ee51c
+.dword 0xb0576d4d8d7f8608
+.dword 0xaab85ff0883b368d
+.dword 0x3f3b0889c456fc13
+.dword 0x4c930490078b2ac3
+.dword 0x2352dde2857e95e5
+.dword 0xf2a90dc1357aef6a
+.dword 0xd65be9fad6275f13
+.dword 0x8c1008cbac9f4691
+.dword 0x50ac84f003e5a169
+.dword 0x844a38408e3aa5de
+.dword 0x223ff2104dc42891
+.dword 0x6dac0a6423077508
+.dword 0xbe1b1809464019e0
+.dword 0xaa2ab5074c2e2de3
+.dword 0x3be0c0ec65b821ae
+.dword 0xb0c879acaef41b96
+.dword 0x73dda0d80f74c92d
+.dword 0xd0843e8039d04d53
+.dword 0x1315e2e0c3119328
+.dword 0xe8a39901c2deaf49
+.dword 0xaf4cbfdcbc115f6f
+.dword 0x18c56523e8212c37
+.dword 0x946d10c3a8609d85
+.dword 0xa470961d30f691a5
+.dword 0x35cfd91f9c23d7ed
+.dword 0x76303bdf2a41aea5
+.dword 0x103ccd53e482ed19
+.dword 0xd2d1776f594ec62f
+.dword 0x5754ef82661334bc
+.dword 0x1011ca3cac6429f1
+.dword 0x3a69c92ab5653436
+.dword 0xc52b6c5f924d5695
+.dword 0x8091c5fe6700b58a
+.dword 0xbf961639338215df
+.dword 0x6a51b51c100a7889
+.dword 0x79cc2cc73aede907
+.dword 0xefd8895926510705
+.dword 0x44c0979ef44d3b8c
+.dword 0x788acac67feb97e8
+.dword 0xf6418611767d2ef3
+.dword 0x22755f771acf8837
+.dword 0xfbe580c1e1d3e096
+.dword 0x8007fc55645bad3a
+.dword 0x59c30c3a08b1d640
+.dword 0xc0eaebb3e3e531a1
+.dword 0xc65cc09248db1df7
+.dword 0x8f88952fcef64a7b
+.dword 0xa8eadf9b0ed14dfd
+.dword 0x826ba81672e15b3a
+.dword 0x2ea9b1c8cf165e2e
+.dword 0x20e84560303820c6
+.dword 0x53e97bae4797657d
+.dword 0x20779b7ad7ce5f5c
+.dword 0xe474570d6554e68b
+.dword 0x673c8b60bb3876cc
+.dword 0xf9207fdd23c62db4
+.dword 0x462690c50c77528f
+.dword 0x3910ff9023a5337c
+.dword 0xf6ceb4f2999db6ac
+.dword 0xaad1161b9475e349
+.dword 0xd741a22dc6f15e9f
+.dword 0xc2af17c6c2a20784
+.dword 0x3fc17faf4091d258
+.dword 0xb62652a837844498
+.dword 0x43033d3ac447386e
+.dword 0xf11e9915bdfb4b4a
+.dword 0x57a24dcf928baacf
+.dword 0x7cd238523d5bb9cd
+.dword 0x3ec561074869eb40
+.dword 0x4b8170d56d01103a
+.dword 0x1dbb54512a3e8a03
+.dword 0xa3279da11b48320d
+.dword 0xaa75ff09cbb3de81
+.dword 0x4f79550802927623
+.dword 0x1efabb1f8ed01c86
+.dword 0x8b9a14d4d62a3ef9
+.dword 0x6ada35f949624bfb
+.dword 0x54ceb4493d7f4baf
+.dword 0x11eae528cea3a443
+.dword 0x09791680e0a80b95
+.dword 0xd07d35cbcd39c371
+.dword 0x481d808d9734f1a5
+.dword 0x7064d7488c645df0
+.dword 0xd3e5bbb9307a3def
+.dword 0xa5c67617e733da4e
+.dword 0x93c8f3db15623259
+.dword 0x601ab5f531d853b8
+.dword 0xbb5818e439ce0b33
+.dword 0xaf28a31a084a2dca
+.dword 0xce8b1684259e56a4
+.dword 0x2b8b84e8ff6b6b21
+.dword 0xbd45bf35ce1f1394
+.dword 0x979dbb15127c360d
+.dword 0xe80d8734d47dd9d0
+.dword 0xc2a56a2889adaf58
+.dword 0xb092cf2c8a79ef55
+.dword 0xa8b784ae0d1f9791
+.dword 0x5a2c35759de7add0
+.dword 0x1d457a2f7d86c89e
+.dword 0xa88908661fcb0c83
+.dword 0x8271e15aa6f599f0
+.dword 0xca11273b1a343033
+.dword 0x650f9ee172ed53e8
+.dword 0xdbff8d7baee58ded
+.dword 0x63218892033692c9
+.dword 0x3ac483348e441a7d
+.dword 0xa67fa17de778171c
+.dword 0x0265760df95cc1fe
+.dword 0xda14f5804fb7f7c0
+.dword 0x9323aa212ae7bb59
+.dword 0x79d9b530b0aa3c3f
+.dword 0x45a998132ce8eb36
+.dword 0x087a276f5790c5df
+.dword 0x1057a3349587517d
+.dword 0x7ba2dbb051d99bd4
+.dword 0xfccf3e2634da156b
+.dword 0x6963bfa477ed667f
+.dword 0x5580772e73062794
+.dword 0x880a96c89a8cb1af
+.dword 0x31e84d11fa807791
+.dword 0xa8e5a6df5482ccad
+.dword 0x6fd8fb1544a79adb
+.dword 0xf922693456942ca0
+.dword 0x972abfa20d29dc74
+.dword 0xbfda7c449e7b4a45
+.dword 0x06f08b5ab65b9879
+.dword 0x872e05f6888bde93
+.dword 0x4731f222aa4a7a0a
+.dword 0x3cdb7b7b6c1f16c1
+.dword 0xaacd149eb5348dea
+.dword 0xf76321b3a995ff3c
+.dword 0xa816f101f853da34
+.dword 0xb840b4ffa4a1d91c
+.dword 0x10728ff7daed0bcd
+.dword 0x830ebd2d33bc7b56
+.dword 0xed2bc6ac6be68625
+.dword 0x6ca28cb9027b8f6c
+.dword 0xf64a12ab726b5dd3
+.dword 0x2057b8dfce5bfeac
+.dword 0xc7bf27f2cce72319
+.dword 0xaa5080dbf40d8c90
+.dword 0x55b6e9ca49abf676
+.dword 0xf81963f3d2826fb0
+.dword 0x056ef9c7e5c8d6a6
+.dword 0xbe5e7de1941bffc1
+.dword 0x63c8ad6241e6d4b6
+.dword 0xccda9697ada367f7
+.dword 0x5745be2d243c4a68
+.dword 0x3af9ce307db0f24f
+.dword 0x4c9e966da875ff11
+.dword 0xef63ceeee328f266
+.dword 0x053f6bde14187055
+.dword 0x7321002f4d4cff68
+.dword 0x66016e88a228cafe
+.dword 0x5b582189b3936f3b
+.dword 0x89cbbba8103f05f3
+.dword 0x477acf60c40fc5b1
+.dword 0xc4645036e46ac85f
+.dword 0x2bac4b5c30421c2c
+.dword 0x5fe1ad0bf61ef150
+.dword 0xb8826f4e65990c7b
+.dword 0xebb2dfc24627a94f
+.dword 0xdfc996026f7a3f20
+.dword 0x519f6a9be9a6d778
+.dword 0x447916f609e1a539
+.dword 0xdd6a33c799838fb2
+.dword 0xe6483a04d04b98e9
+.dword 0xaea6f004e3279bb9
+.dword 0xc06afba6ad8497fd
+.dword 0x328712e4ae0031c2
+.dword 0xa88ebb3db993fffe
+.dword 0xdeb9e4b0c1d308e6
+.dword 0xaa6fe748865f03bf
+.dword 0x0e7543dae549300d
+.dword 0x076eeb9c38349c97
+.dword 0x217b42bd2d383028
+.dword 0x5570d346c5cba328
+.dword 0x31fc60bb16009fd3
+.dword 0x37f106acc4701285
+.dword 0x6f78f5fcf558056e
+.dword 0x5da5704d35e1e830
+.dword 0x26c8a661f58b5e85
+.dword 0x605d2e222ef4825a
+.dword 0x0b6a8e78de1bf383
+.dword 0xf0c3416141d38fd6
+.dword 0xfb4f14057b5db94b
+.dword 0x1212ca2ce901b35c
+.dword 0xcb218b8c0f8f6833
+.dword 0xcaae438524e315ce
+.dword 0x98a4bf9927df20e6
+.dword 0x5701f24e11538751
+.dword 0x9085ce756bfb73bb
+.dword 0xf97e1d64e5732785
+.dword 0x89505e95885efc20
+.dword 0xe136ddd4e8833d40
+.dword 0x6581175872e83929
+.dword 0xbc3e40ab1a13885c
+.dword 0x54327b8896c9040c
+.dword 0xdd5a7824804a8e64
+.dword 0x14936681b0ad985b
+.dword 0x987be6c18e5553a6
+.dword 0x0f881d1bfad406e4
+.dword 0x6d28494de950a188
+.dword 0x17e9f36ee3501d0d
+.dword 0x6157bb61057ed08c
+.dword 0xea8c1b780b278676
+.dword 0xb4534c40195c1be0
+.dword 0x4d62ffde8487eddc
+.dword 0xe8879fe828e3e84f
+.dword 0x2d6692556133258a
+.dword 0x188120d47f36a97b
+.dword 0x385b32a39f7153d1
+.dword 0x77653d968dc43d66
+.dword 0x884f6e57baaeb11e
+.dword 0xca4a8190d931d66d
+.dword 0x7692bf2d131cea07
+.dword 0x0b13b8505fef621a
+.dword 0x7555510ba2953472
+.dword 0x6eeddeceb171b597
+.dword 0x3778b27dc4c43d0c
+.dword 0x2a4dbee58cb7e823
+.dword 0xcf45c1551ff67170
+.dword 0x3e3410a1dad1042f
+.dword 0x2659c81f21ff747a
+.dword 0x1b28c8741b3eb826
+.dword 0xc70ec88fa031bc6a
+.dword 0xd8707e375e8609a0
+.dword 0x55602953843f097d
+.dword 0x6e79570106783304
+.dword 0x812eb5448e734a19
+.dword 0x6419c1cdf55aca22
+.dword 0x534cad28dae8eefb
+.dword 0x315d1cb893415ca3
+.dword 0xb1a20782dd3bc1fb
+.dword 0x24bce5b983a49ee8
+.dword 0x2d88a996b3c50467
+.dword 0x1ae0345d43310889
+.dword 0xac797403841165a7
+.dword 0x5a94572bbcea5d3a
+.dword 0x42beea381dfa8915
+.dword 0x690a9d6f7165d8f3
+.dword 0x6d47c89da33086c8
+.dword 0x2b7a70e5d7f72fbb
+.dword 0xfd5b87e0b688149b
+.dword 0x39851ec748fe30d0
+.dword 0xfedca55a7a60d02d
+.dword 0xfa36d2cc6a59704d
+.dword 0x64f86c1b62fd264e
+.dword 0xb8c217c01576e1b1
+.dword 0xf3ad41753f4d6009
+.dword 0xff189c933ca128d7
+.dword 0x8972bf5a0c977112
+.dword 0xa0b862f95adbac98
+.dword 0x1c323e2c7daff851
+.dword 0xd59cac2d825e86b3
+.dword 0x10dc624cb145f160
+.dword 0x4efcc6c2c108421f
+.dword 0x950cbceaaf39788e
+.dword 0x196e0bc0248bf16c
+.dword 0xc13959f0a2b17622
+.dword 0x3882058ba0086e7b
+.dword 0xe8c570de063159cc
+.dword 0x7d5c6d2ec8343751
+.dword 0x0a51101c61e6ac8d
+.dword 0x446c5ffd6ffeb084
+.dword 0x9d03fe3aa32f5e11
+.dword 0xd30aaf69bcc9aae9
+.dword 0x9e596b360e3825af
+.dword 0x1e8862dec9bab052
+.dword 0xcfa9637d6ac767c4
+.dword 0xd7f5c0de38017fe1
+.dword 0x5eaecf308b56ca3f
+.dword 0x8b17e09f90cb9351
+.dword 0x44f5c35e33da5df7
+.dword 0x4aca668d3866ff73
+.dword 0xb787eb37f3d7df6d
+.dword 0x25b120be06422608
+.dword 0x96a965f6ad044c7a
+.dword 0xb1c987013c70b15a
+.dword 0xf45f0fa4b71c3d72
+.dword 0x05c5eaa13ac43929
+.dword 0x1b7fe00625b30653
+.dword 0x1d51ac665fc25929
+.dword 0xb22a9cd13a4a6b96
+.dword 0x1d1d5471e267879d
+.dword 0xd5579aaa0b248f7c
+.dword 0xb4959d7f46f0d3ba
+.dword 0xfbe2ba51b52141ff
+.dword 0x69f463adbe713b3a
+.dword 0x0776ca0447286c05
+.dword 0xdb0e760450bed254
+.dword 0xbc7f05daadb07ffe
+.dword 0x724ed2ac4c25f46a
+.dword 0xe6895694f990ab34
+.dword 0x160e01c0814bd667
+.dword 0xbb239cc5bd4fd006
+.dword 0xcdd086ae9b8052e8
+.dword 0x657c1c3e12b60c5a
+.dword 0xf39fd482d6a5d057
+.dword 0xc1ee5f4b005ff90b
+.dword 0xbe433bc36ee661b5
+.dword 0x1594a6f57e56273a
+.dword 0x354377e44f373073
+.dword 0xb20476c64443c825
+.dword 0x4de1344d3147ebcb
+.dword 0x081b3a83bed4206b
+.dword 0x317d1a342e0d15c9
+.dword 0xfb8faa0d4a928288
+.dword 0x27b93f7da7af6b2d
+.dword 0x689d8de89bf252d7
+.dword 0x0e1290b62386296a
+.dword 0x636547d4f8988ab0
+.dword 0xa53ba82203977d6c
+.dword 0xfae299828a4147d1
+.dword 0x7f88a2772b8bea5f
+.dword 0x3e577da146d80a80
+.dword 0x5085aeabaf4a1704
+.dword 0x85b1eb0262d51c71
+.dword 0x216798bb24a61079
+.dword 0xaf0187f5c350ba5f
+.dword 0xf79ac1fa929d6c53
+.dword 0x42bcff6a8549b079
+.dword 0x85f2cecfd5d10954
+.dword 0x51da89fdb1d06425
+.dword 0xfcdaff076fc494ee
+.dword 0xba119c0941685bb6
+.dword 0x45a3af8a38cfad9c
+.dword 0x552be69cabee6859
+.dword 0xd6448704cca5b22f
+.dword 0x3698622af6984cba
+.dword 0x37620058fb7792b7
+.dword 0xe3755146523b547a
+.dword 0x7052b9701439240d
+.dword 0x1ab83e3abb2334e4
+.dword 0x525a879c41376000
+.dword 0xad6971f6a805620b
+.dword 0x2aabce080bc35522
+.dword 0x83c9234dd428a8b1
+.dword 0x8b0021c24dd752fe
+.dword 0x39c2f17be7007217
+.dword 0x13da5d6ad8e97b09
+.dword 0x6376079ba0280642
+.dword 0x61100a6f1e41912d
+.dword 0x6c02b9de9e8e026a
+.dword 0xd5d5e18b8089bbbb
+.dword 0xb38b2d3bb0b1d3b0
+.dword 0x0bbd3939b54286f8
+.dword 0xdf8d87af656fe318
+.dword 0x42b7779b8ad8ad43
+.dword 0xccd4102cc6158bdc
+.dword 0x3fd22fc5391acd76
+.dword 0x407d7f63aa9ff940
+.dword 0xf45810dfbb293a68
+.dword 0x1d6cb180ce0f26f0
+.dword 0xf5cbb865e7922782
+.dword 0x2183219732a8ec1a
+.dword 0x49ddf362326e74f2
+.dword 0x83381915472a6a2b
+.dword 0xe63667147237fc27
+.dword 0x564721adb19da5b5
+.dword 0xf92341bbb1cfa3c7
+.dword 0x448b7b7b82700a55
+.dword 0xb112d7024222c0af
+.dword 0x743d2de433efc2ef
+.dword 0x81686b585cc0db6d
+.dword 0xfb2d47bc34024865
+.dword 0xe772dca3b8d765ef
+.dword 0xe217772d8666baab
+.dword 0x3c2514909762a29b
+.dword 0x2a42af39d659a096
+.dword 0x1c09fed9965241ce
+.dword 0x71ae49b9a694f320
+.dword 0x7ed441e2eaa6d9c2
+.dword 0xd3c4fbc1874cb3a7
+.dword 0x31c57b2afc5b2e97
+.dword 0x35b8ce9a2e2a541c
+.dword 0x040f1fb4700984b0
+.dword 0xb9f18394af6b6d50
+.dword 0x7d584051fe6a7a90
+.dword 0xd59fb5dac768d1c8
+.dword 0x9d79366ae6137463
+.dword 0x7dfa595404bc6fdf
+.dword 0x509cfe708b24bed5
+.dword 0xf213921ac8e0d7fd
+.dword 0x5adfa3d365ce349e
+.dword 0x4b33c68e0e969760
+.dword 0xc81a4031d750ed8b
+.dword 0xfc0a27d4977ba218
+.dword 0x47df169e9406c06a
+.dword 0x43f9a7bb598df619
+.dword 0x2df1972ec7d52c04
+.dword 0xf17531ee048c1695
+.dword 0xdc67f886e198b3df
+.dword 0x97c66846e9ef9d50
+.dword 0xa34e82dcbb7cfeb5
+.dword 0x08c45ed1b86c4b8f
+.dword 0xd771a09561380efa
+.dword 0x983fe92dd19b2809
+.dword 0xa258cde5d03f7b01
+.dword 0x017e5b0f49ff094e
+.dword 0x15b20785b1aed4e8
+.dword 0xead9c708af39cf0a
+.dword 0xd220f9780c9ae566
+.dword 0x13ae4472724ce09b
+.dword 0xd236edff24dcbd0a
+.dword 0x23023022b862a764
+.dword 0x313b586833b0d325
+.dword 0x4b4d45c310396b98
+.dword 0xfb503d71138ceee9
+.dword 0x769bd0c40ce3c4cf
+.dword 0x6d1966e46044bcf7
+.dword 0x5c5ed1c1be146cd5
+.dword 0xa0073b63c07392b7
+.dword 0xb430188485186829
+.dword 0x187fc5a4f25b8435
+.dword 0x67fcc6863fb8599a
+.dword 0x45720a3208e1f097
+.dword 0x58e008b7bc692e93
+.dword 0x3045bdf061c3da5b
+.dword 0xb7df8bb5aeeded2e
+.dword 0x943ffea54d6d5d4b
+.dword 0xdf6f28950bf313c5
+.dword 0xb1704166c96c54ee
+.dword 0xa2574f6e08185410
+.dword 0x9eb401c5c93d7507
+.dword 0x53e63a9ef5403369
+.dword 0x98f2600b31e87e2b
+.dword 0xc7f1ff6e7c6b57cf
+.dword 0xbdcd64ca2c645f80
+.dword 0x75cf4d00c2eaa607
+.dword 0x2eafd9ea3615fd9f
+.dword 0xc400666fe3736abc
+.dword 0x7864b9c2bca77222
+.dword 0x66c8a635adce37db
+.dword 0xd7a07b229f918328
+.dword 0x9a362d58771f159e
+.dword 0x677d5065d0d27182
+.dword 0x8e8c79df647e1386
+.dword 0x35444639846f42e2
+.dword 0x6a538b43ab4f22b7
+.dword 0xde6691e84630d11c
+.dword 0xecd6d3e84233686c
+.dword 0x65951200c2aadc5e
+.dword 0xd0b17e0be38d4117
+.dword 0x3e0ee2dd0a0607f2
+.dword 0xc5950b73ec417047
+.dword 0x11d336ff7f3c0daf
+.dword 0x9c4f6d2a615d9103
+.dword 0x466a9e6da55d4f89
+.dword 0xd2d9befd8141c7a2
+.dword 0x8819a66539be478b
+.dword 0x89b9fc30c741beba
+.dword 0xf3dec891f2b0806e
+.dword 0xe51e7920a32e5ea2
+.dword 0xd19973bc0cb44c89
+.dword 0x703117f70f9d4248
+.dword 0xe76c2306c7e7eb5d
+.dword 0x418e36b1ae2038de
+.dword 0xc8975635918ebdcb
+.dword 0xe859305ba96aa45c
+.dword 0x3b3baf16250d6941
+.dword 0x67bbd081d346b53d
+.dword 0xb891f4cbbbbe229c
+.dword 0x45167bc8890dc5a6
+.dword 0x39f4043763620336
+.dword 0x09663221f7d9835d
+.dword 0xcc5feedd3d57be8f
+.dword 0xa0b2e447840d1c58
+.dword 0xeb3e988862bb36fe
+.dword 0x49dbc5d00f1045f3
+.dword 0xfb21036b8ea66ae1
+.dword 0x244490188dff9ae4
+.dword 0x59d0c3f1d20141d4
+.dword 0x21e33753dc8b21ea
+.dword 0x3a24ab41a23bd734
+.dword 0x33f755866a92ec9b
+.dword 0xbf7a9ffb1ef6b8de
+.dword 0x2a4fa89d1c6b4c8d
+.dword 0x8b5ef46dc3ff2a08
+.dword 0x17077ec4e3c0e3f3
+.dword 0xeb62e7e474027dde
+.dword 0x8166f0a574e9d91c
+.dword 0x5ffd34a481e061d3
+.dword 0x05d5a55ef4a394a9
+.dword 0x972a24f8326973a5
+.dword 0x7f94b247d7a904e6
+.dword 0xc0547b0490e47951
+.dword 0xc2cf1b5da6b3093b
+.dword 0x3581c2cfb6973607
+.dword 0x8d72f9d5e1b97bd0
+.dword 0xb0a15785bfbe7630
+.dword 0xc0e9d5529d8791a6
+.dword 0x6415e06456038233
+.dword 0x1e27198a1d01cf1c
+.dword 0xf210822d4301ae79
+.dword 0x3e1fd93fa6df2a60
+.dword 0x9bfa1dc29f536d10
+.dword 0x11d5810810ed6bc6
+.dword 0xcbe303a88742f3b7
+.dword 0x834aaabaeeba9d3a
+.dword 0x6e54e4f9826717f7
+.dword 0xa0d6b72eeb310f0d
+.dword 0xe4e6e56ab8f2d585
+.dword 0x4ae3bc4b5a015537
+.dword 0xe387cfebbd0e9784
+.dword 0x3fe71edcc5bef852
+.dword 0x9f7388ad1fcbe0f4
+.dword 0x7cf98846d19e7474
+.dword 0x3ad704227ebbe6f2
+.dword 0x0128120233478d15
+.dword 0x06d59d2e59fcd062
+.dword 0x6ffd5f62d2acd473
+.dword 0x6730413a872ad3e2
+.dword 0x89846a75b6506af0
+.dword 0x02e0bdc8f893b5ce
+.dword 0x47d1c98f43700136
+.dword 0x5a58479dc18337ae
+.dword 0xca6be43380b1d6de
+.dword 0xdcdb306d75e8e665
+.dword 0x7d792aed9b5602b4
+.dword 0x0bb08ac89484a568
+.dword 0x23425b4f73b60117
+.dword 0x5e466476d0abf98a
+.dword 0xe29191a8c8422c8e
+.dword 0x430fa5502789ab73
+.dword 0x3df93f80c90e909e
+.dword 0xd17d88c014e6b821
+.dword 0xec704bdd20aab9bb
+.dword 0x50c7391117a125e3
+.dword 0x1312258ee6326d94
+.dword 0xefa2905d278e60a5
+.dword 0x112342e26d47e904
+.dword 0x5da16aa19b90c35d
+.dword 0x9df4b9185dcf8dff
+.dword 0x926c294189a3cd7e
+.dword 0xc047362a8d2b5165
+.dword 0xc468caf0eb0ad9f6
+.dword 0xa0eb5e5f49eefaf2
+.dword 0x8c486d78adf53185
+.dword 0x7172a98a1e16bfa0
+.dword 0xafd39439a9f948e3
+.dword 0x7b5b134781605e05
+.dword 0xa17f26399bd54c18
+.dword 0x2c2542b4b5107cc2
+.dword 0x549dfdb118264a4a
+.dword 0xcff20e854017b768
+.dword 0xde3f48de82984b74
+.dword 0x2deaa904230f5665
+.dword 0x9a1af931c9f09470
+.dword 0xfe8b0e7d0b6f26e2
+.dword 0xfb3c942505cb22fd
+.dword 0xf62fd61ea6d4bb23
+.dword 0xc3484756c3585e57
+.dword 0x8c7f9fee8f3b6181
+.dword 0x988a39809487e558
+.dword 0xeb699604075a9f22
+.dword 0xea22126142522711
+.dword 0x5ec3482ee68618a6
+.dword 0xe23af4d5b631e5af
+.dword 0x285efc94c48a120d
+.dword 0xdcd797ab56796294
+.dword 0x7f71f21918fae362
+.dword 0x82dbcbad938106b6
+.dword 0x31b45cb61775df4f
+.dword 0xfe4a81d21739fb79
+.dword 0x59032fe5279194d9
+.dword 0x2f6be9fdd4479c74
+.dword 0xe35652103aba57fd
+.dword 0xeef315439a236b6f
+.dword 0xf92d68ea938d420a
+.dword 0xf4d3de64600e1d22
+.dword 0x7f9993f5c4c7ffb9
+.dword 0x970ef4b7d925644d
+.dword 0x2584488a9e8a9da1
+.dword 0x9b755adeaf5ee1a0
+.dword 0x0ed2968bccc8c399
+.dword 0x01d70a1429fa1787
+.dword 0x783b344b9d2db234
+.dword 0x960b457a1b39a05e
+.dword 0x54a206761458dd02
+.dword 0x926b9308b05efdd8
+.dword 0x854e93dc26687ced
+.dword 0xd04143a83f18340b
+.dword 0xb7addd9428729633
+.dword 0x9b2aa4054638b4d0
+.dword 0xaaee3e65182bba70
+.dword 0xa1ab157cce0b460d
+.dword 0x3989fe6983a3d8f8
+.dword 0xdfacf4ed5d335e4f
+.dword 0x4a71154605dbfb2c
+.dword 0xf2a233f5d9ee6640
+.dword 0x362a9764b3faf75f
+.dword 0x3ec4a54c31c9d9d1
+.dword 0x3ca94cdc010a99f9
+.dword 0x1ab6d7ffec029719
+.dword 0x43b71fc290517bd5
+.dword 0x71eced4317617a88
+.dword 0xa5f82ae9c15eed94
+.dword 0x8c535812912067ed
+.dword 0xed1c856b3249feda
+.dword 0x021a19fdd46dd1af
+.dword 0x46526c8f87c1e3e0
+.dword 0x26148670d6c1faa8
+.dword 0x3826d5f89e5edd60
+.dword 0xfff326984515a57a
+.dword 0x542dea403179091b
+.dword 0xee3419c756acb579
+.dword 0xeb6783b778d2f47a
+.dword 0x7cdc73d5a9558c02
+.dword 0xcad5f565a2e757c6
+.dword 0x9613e1d46be9f25a
+.dword 0xc251e7f871e74119
+.dword 0x7b0e3d3033c15873
+.dword 0x7596449ed45da4f5
+.dword 0x3a2d5561f7413c85
+.dword 0xb1020d2ee6f468bf
+.dword 0x906d4ed61d229cf2
+.dword 0x63b72c581a672e24
+.dword 0x6ef19578c5e90af3
+.dword 0xcaa62ccc8ea3820c
+.dword 0x0be3965c02577d4c
+.dword 0x573241381cb3c21f
+.dword 0xdba19ff0635b38f7
+.dword 0xae22a53d60c35c4e
+.dword 0xfcfff653d932cc5c
+.dword 0x8e876223493c4bc0
+.dword 0xf778717da9b71268
+.dword 0xcc10eb327f27bb7a
+.dword 0x3bbbfa1370d59eac
+.dword 0xb00cfb887fb37855
+.dword 0x8dcc327d4cf3cebc
+.dword 0x18ea91cb25544747
+.dword 0x79135b54ec30cbe1
+.dword 0xb8c320d1b0b830bd
+.dword 0x5e26f38963d603ee
+.dword 0xa57c21984a802214
+.dword 0x56c31bed0991380d
+.dword 0xaebecd8af5dbfabb
+.dword 0xb9c96fcba12d582e
+.dword 0x3c2a4666113afe9a
+.dword 0x7ca97f8b70b28400
+.dword 0xfcc01491ad43fff1
+.dword 0x2e2c8956fd36ab99
+.dword 0x7bd5f6186e186971
+.dword 0xef013cf871347b42
+.dword 0x45d2f6f40013d94f
+.dword 0xc21fda75983784b6
+.dword 0x5d58b1ab80a5f84e
+.dword 0x6c526f250eaa183b
+.dword 0xfbfce093eb451263
+.dword 0xd6289f0ca4b4103c
+.dword 0x9dae7aae5dd38ab9
+.dword 0x18072f34eb90bbea
+.dword 0x8dfc1638d2d57531
+.dword 0xc4bf4a491f00c3ea
+.dword 0xcfa5b028b36d10a5
+.dword 0xcb589179966abae1
+.dword 0x3fee006e8a934cde
+.dword 0x0673ce0285a6b16e
+.dword 0xd8a0954e732f8359
+.dword 0x5ab2c14508272489
+.dword 0x71a16789c01d67ea
+.dword 0xe122869d41edfedb
+.dword 0x71939e3c703d01e3
+.dword 0x24e76297c7c95b40
+.dword 0xcf3e6aeeaf3a3902
+.dword 0x56b9547673e04d2a
+.dword 0x7c81535d0d4c0f99
+.dword 0xe90ba3dd5f640761
+.dword 0xa175dcf5a4fd7e57
+.dword 0x9d5c06cfebb984dd
+.dword 0xae4439dbc850df7b
+.dword 0x93b747cac1a8504f
+.dword 0x61e8e343fe1eb5a1
+.dword 0xf8c7e06e8518ccd5
+.dword 0xbcc8a88a5996bfae
+.dword 0x05d70a25f878ec64
+.dword 0x5f93154703baa147
+.dword 0x226a5619ee8432db
+.dword 0x1249aa4edb1aa1c0
+.dword 0xf4f400237924f937
+.dword 0x8609a0c2c11ecf8a
+.dword 0x9076d45cb628827e
+.dword 0xa79840b265aaad59
+.dword 0xedf9f5120a96d6b6
+.dword 0x80204b744a68b27b
+.dword 0x090553839e07e8cb
+.dword 0x56b66d523fcb5744
+.dword 0xb18136e5cec921b7
+.dword 0x93a2b6c5d6644eee
+.dword 0x94a700c799247ea8
+.dword 0xb4a0594ebe15ce25
+.dword 0xfee39ddd4d59fec0
+.dword 0xa1438b239d0b8256
+.dword 0xa011212a64c360a5
+.dword 0x8a430fd7f7e81f11
+.dword 0x93000f285d5c275b
+.dword 0xdb4084d77cedcde1
+.dword 0x7d40e3e3c409b338
+.dword 0xe014804ac83b4ad0
+.dword 0x33f78836423fe2c6
+.dword 0xdea3dd284870e458
+.dword 0xeb8fbb63f6318e3d
+.dword 0x887f70bf64c3ebb8
+.dword 0x8d9aefef0ab2955b
+.dword 0x853e3cb7a4cdbd9e
+.dword 0x632ca02afdc5439b
+.dword 0x4b09d69fa9c39830
+.dword 0x2480eedf8cfe2f3e
+.dword 0x148fe55d72af9310
+.dword 0xf8963c678e4dccbd
+.dword 0x169a553ebab94732
+.dword 0x491c8aad1f125427
+.dword 0x17acdcdccd388ffe
+.dword 0xf4201c6208d77314
+.dword 0xa2baecf3375c0383
+.dword 0xe4bf29c104a2d7ca
+.dword 0xad0c44345a930221
+.dword 0x39cc2276a17918c9
+.dword 0x9e580110630aa513
+.dword 0x51df51092b57f5f8
+.dword 0xa5ca48eccea4b291
+.dword 0x0877f87e436b6429
+.dword 0x4e6cd048cfd8b2f2
+.dword 0x112d7f320217cb0e
+.dword 0x80f9458bdef11b2d
+.dword 0xef9b501b6d2120e0
+.dword 0x6b29ee532e2be4c6
+.dword 0x8c9dda83c063991b
+.dword 0xc06b7bf41c1c7973
+.dword 0x22c9f244ffaf7712
+.dword 0xfe319742deb558c2
+.dword 0xa65614e6e7abb565
+.dword 0xc082a7db610cc672
+.dword 0xac777109946bf0bf
+.dword 0x87a0cead46b598cd
+.dword 0xbbfd97af7e77d442
+.dword 0x119b062247bd6fe2
+.dword 0x0817d1e1619caaa7
+.dword 0x466d557bfc82f576
+.dword 0x0d756866b10cef65
+.dword 0x3377d25f5b602210
+.dword 0x49ef62c0c3a351f2
+.dword 0xdc13417ba8dfe404
+.dword 0x9cbf2b9215e664a8
+.dword 0xd04aa48202b242d3
+.dword 0xa27056e6f0062018
+.dword 0x515b847ae6fe3e8a
+.dword 0x6018b88554f9a9b7
+.dword 0x55530372f6b1f737
+.dword 0x5ccee3264132d831
+.dword 0x5acca60075a06a15
+.dword 0xdf8760ab5560c2c5
+.dword 0x325a1c1cc30a7aad
+.dword 0x2d14f45867b8edb7
+.dword 0x4d6ca62095c25b6b
+.dword 0x6ad00492db4f52a6
+.dword 0xc920c0a4a5fc7d8a
+.dword 0xfedfd392c88d0511
+.dword 0x81e9a705547fa774
+.dword 0xe1096a4656dcf8d2
+.dword 0xec24d90194f04111
+.dword 0xe044d3b6f5fff8e3
+.dword 0xe34aaf2d287d0fb5
+.dword 0x1781f4a22054725e
+.dword 0x37ddaccfcbfe83fa
+.dword 0x18de2fe5c717edb4
+.dword 0xb4097164318a3ee6
+.dword 0x0048b02397fa7265
+.dword 0x14287bac31b18ecf
+.dword 0x2310f448e174aac3
+.dword 0xe27a0791bcce90d6
+.dword 0x2559a1758910721a
+.dword 0xdb4925cc2fb7fd3c
+.dword 0xbd810ffbbf14cb92
+.dword 0x9bafc9e81f07ac83
+.dword 0x690435240b02682d
+.dword 0x37abc6eac6d4561c
+.dword 0x9e7554b7a9d4894f
+.dword 0x0c3400e6b3687ba8
+.dword 0x4956c22b505a32a5
+.dword 0xd14d200aed16fe34
+.dword 0xc8d915dfcba2b02c
+.dword 0xb9bf103eff503e99
+.dword 0x82cd4c7f97d327b9
+.dword 0xbb1118c78feeb40c
+.dword 0xdcdb4a96d968b905
+.dword 0x52cef6e4800d3f6d
+.dword 0x67a82e9054b077a8
+.dword 0x2c43bef025e774fd
+.dword 0x414b25a29e03b8b2
+.dword 0x5607aa29a82b4a67
+.dword 0x837031a347896520
+.dword 0x3d4b04f20c35381f
+.dword 0xff30a8807131fac3
+.dword 0x2e46086005df44aa
+.dword 0x4b5f4191e0531a0d
+.dword 0x646cb30077db332e
+.dword 0x193840d73e89abd6
+.dword 0xa560755c1ae31154
+.dword 0xfd9325f311dfbfc0
+.dword 0xb4099e4aba005155
+.dword 0x603c1e97ed75f5fb
+.dword 0xa32eb5037de21187
+.dword 0xa3601378ecc460be
+.dword 0x117efd2a316c8741
+.dword 0x1f28fb3260fb66d4
+.dword 0x7ad7221fefdf563d
+.dword 0x814186998ac53059
+.dword 0x14bb1690c8a8f0f3
+.dword 0xd433d8a8ef12c39b
+.dword 0x2304b424e111b345
+.dword 0x2fa30d1f81ff86ee
+.dword 0xf1eef661f0fc4a5d
+.dword 0xe8524c54e80210da
+.dword 0x1a98b74fb1645070
+.dword 0xefeae434b6af7877
+.dword 0x7b74eb6a0dd73e95
+.dword 0x035166336652a678
+.dword 0x3d79c5889d1cc226
+.dword 0xf7b90a220d2dcea6
+.dword 0x8f9b64341a370d01
+.dword 0xbd8874b555ef508d
+.dword 0xa3af58619dc62ae3
+.dword 0xd06c8f2392d1d885
+.dword 0xd1e577f734a2e3c3
+.dword 0x80e2a1ba1c5c74c7
+.dword 0x0dfe4153ef587c47
+.dword 0x28e8722cc32808a0
+.dword 0x4579899d1ba292ac
+.dword 0x4c5581d24c1d63f9
+.dword 0x8123a5f0716c546a
+.dword 0xc7a00cafed7ac97e
+.dword 0xfbb1350df8dc12ad
+.dword 0xbd3b7a52e7e4160a
+.dword 0x0ddf4ae3bee8ff39
+.dword 0x6cf3a4f5b947b7fe
+.dword 0x59a23fe2ae9e344c
+.dword 0x31d1797ccc460735
+.dword 0x04e268f33414c51d
+.dword 0x8a27ca7de3cafb25
+.dword 0x902251d390f2327f
+.dword 0x1cd34ab4beed6482
+.dword 0x495f06dc36782aef
+.dword 0x795a8b609a2445fd
+.dword 0xc1b825e6836b92c4
+.dword 0x0e1a2383e52492cb
+.dword 0x998add1086639d56
+.dword 0x5cd6aad6998dfa19
+.dword 0xacdeea92ebbc0a51
+.dword 0xd408d56a29dd9471
+.dword 0x9b30238ac93034d0
+.dword 0x785da76e162f77e1
+.dword 0x552492bb2f106fcf
+.dword 0x4d4a6c86bc43b3d8
+.dword 0x2cc485cfa0794e48
+.dword 0x95a3b0103b8bac8f
+.dword 0xd4b49b2f19e4e14e
+.dword 0xbb7b3bca179b150c
+.dword 0xc96d069bb49ec1e6
+.dword 0xe1e692c503de54e3
+.dword 0x3f7f1d424719327a
+.dword 0xdfa767f6ee64c668
+.dword 0x661496234a3abf6d
+.dword 0xc8e9d8a0aec8db34
+.dword 0xf49f59ca2a4c84e9
+.dword 0xc517f6c524b96fd3
+.dword 0x726efd69ba19139a
+.dword 0x9b7086f1c63ba6c5
+.dword 0xba5adb439ee0bc4e
+.dword 0xdc39089be5622d24
+.dword 0xe2b9f5f102f3375a
+.dword 0x42d72801b1ddf81e
+.dword 0xdad49dc6fa3ad23b
+.dword 0x4a3cf79b0474c719
+.dword 0x95ecefb69332b84e
+.dword 0x0c9a9302f1ab7c39
+.dword 0xd6d3db3ad97b301f
+.dword 0x629fe6ea71ca8385
+.dword 0x3757ddc82862944b
+.dword 0x761aa77841e6f4d5
+.dword 0x8fe2f219dc4395d9
+.dword 0xb3ec7e7214aa35fd
+.dword 0x426b67cb8da5fd30
+.dword 0x19628287367eda83
+.dword 0xcc597ff850751efe
+.dword 0x0f6daa3d8ef06181
+.dword 0x07477f4ab00e026a
+.dword 0x68e5900727532753
+.dword 0x70da06bfa0e5fdc1
+.dword 0x64a887f47d8510b7
+.dword 0x0d3801990679d3c7
+.dword 0xe333df12617136c7
+.dword 0x04eacfcd677bc1c1
+.dword 0x50205548f715c8a1
+.dword 0x80612ad85c06e72d
+.dword 0x1fd9639ca005395d
+.dword 0xb2272d5699b6f0c9
+.dword 0x9adac9518046ea04
+.dword 0x6323e9d7f263c268
+.dword 0xdc2bbdfd69eab8ba
+.dword 0x68a4a6baf9903c3d
+.dword 0xfacc9cc24f2d77c1
+.dword 0x44979588e33c8b0a
+.dword 0x1b0f16c31c3f5c59
+.dword 0xebd09baf32f08caf
+.dword 0xcdc55adcf3887d5d
+.dword 0x62ee63adbed5f546
+.dword 0xaca6ed251f449841
+.dword 0x8ca11f31da275e0f
+.dword 0x55490120acbfcef1
+.dword 0x27e588feb912849e
+.dword 0x94f450b61a75fcfa
+.dword 0x1ffd94b52468e02f
+.dword 0x1b93a54a62f8a4dd
+.dword 0x276ebbcbb5aff48e
+.dword 0x1d0b1f7409886035
+.dword 0x423f3e00adbabfaf
+.dword 0x5390cc6233843675
+.dword 0x88d3c3970fe01166
+.dword 0x1bbf6a55e631e27c
+.dword 0x28f67e6c97f14fa8
+.dword 0x5220d86a76ca50b9
+.dword 0x120f3ba56c9986f7
+.dword 0xddec82736bcf2cfd
+.dword 0xd500c0d73204ea12
+.dword 0xcbbedaf023302cbc
+.dword 0x7d6a73355e2c1a60
+.dword 0x39c3dc2bc0adbb18
+.dword 0x3eea758cf4aea929
+.dword 0x5fcd17f772a71793
+.dword 0x74e7b82dddbe445f
+.dword 0xd6ffb8e0495ffbbd
+.dword 0x7fb1f026d1efea29
+.dword 0xf3f4532fb5298418
+.dword 0xa10de8629019d954
+.dword 0x6a4e98b2e9f0fda5
+.dword 0xbd3bc6007903a6d1
+.dword 0x0d3ccea2f5a212a7
+.dword 0xa2a25a8749b60d46
+.dword 0x7b2319b9461cbe32
+.dword 0x5753fed9f2cd9e4a
+.dword 0x2832c59269eedcd9
+.dword 0xfe239648c403c9f6
+.dword 0xde51934b78c7599e
+.dword 0x7a5f85bad8d7adc5
+.dword 0xcc54a8793e5f6828
+.dword 0xe0a3acf4cc4596c5
+.dword 0x85f92e2749ad30bd
+.dword 0x172b000413b89ded
+.dword 0x49ab81990deca5d5
+.dword 0xcc9ce404cbdfb5ea
+.dword 0x879e0818a73eeec9
+.dword 0x7b0926903cf28368
+.dword 0x5dc2df2901127d6a
+.dword 0xa474429d1c6dfb12
+.dword 0x5ddeb6541c263cb6
+.dword 0x67381aed9166c17b
+.dword 0xf962df35cc452dc6
+.dword 0x3a18aec298e7577a
+.dword 0xb5d8c0b2654f1387
+.dword 0x8c93fc424a21d0e0
+.dword 0xc42a99051ffd97a5
+.dword 0x78ae7d65f8c77395
+.dword 0x1c207e71858fc00f
+.dword 0xe4ba7e06c7a8ac64
+.dword 0xc664881596ae314c
+.dword 0xeafbb588c6045e14
+.dword 0x15b284f014f68d25
+.dword 0x69e851ffa23ad595
+.dword 0x8f24d3a2dc61c769
+.dword 0x11171bacd8d7f1ca
+.dword 0xe80cddd48fec0e6c
+.dword 0x4d51994b9c4658e3
+.dword 0xec8eecce6e794ad5
+.dword 0x66cfd2837b20d0f4
+.dword 0x18967868cfe2e062
+.dword 0x3f2e9bd01387704c
+.dword 0x8fafb1c2b3f6c81c
+.dword 0xf5ef4dababc9487b
+.dword 0x28409f95d9a6c6ee
+.dword 0xbe5864b1bb0e9bbd
+.dword 0xfdac50ad4af18d54
+.dword 0x9d40d8d5ad1894f3
+.dword 0x7a960127dc004190
+.dword 0x9ea36b08cb0231e0
+.dword 0x2d4253b501a27cf0
+.dword 0xb6c05cb9112b6c9a
+.dword 0x69878b5716b9d6b2
+.dword 0x9bb667bd5a925b9f
+.dword 0x6b8b039adc597d8c
+.dword 0xab459eaf8c017683
+.dword 0x90c01c071e0d8651
+.dword 0x37bdc7e8e0196e96
+.dword 0x8d3d3cd6cf9e1a66
+.dword 0x70f9f0a86803d6eb
+.dword 0x927a5dff36fcdbfc
+.dword 0x2b0bc705e8dc55a3
+.dword 0x7b7d437559100e76
+.dword 0xc639d2a648f5ddbe
+.dword 0x4b7c940a5b71675a
+.dword 0x117c8173883445ec
+.dword 0xa85ff7400c4396c8
+.dword 0x0afef2f4266a32be
+.dword 0x29253a6ed8069731
+.dword 0x745e3c628275e269
+.dword 0x8c006ce1b27ab075
+.dword 0x22ac7ae7414169d5
+.dword 0x90122c0adb5df078
+.dword 0xecad38bdc971f5cb
+.dword 0x684aa4d7a0f0ead7
+.dword 0xc60725eada751d31
+.dword 0x624b563db6e9e77c
+.dword 0xdd239d02c504acec
+.dword 0x23ca59b0bf4d996e
+.dword 0x87429c7cb2cc3f86
+.dword 0xf6d5bf72cfec6cf6
+.dword 0x5be795b1c1645829
+.dword 0x38513d6d2e47034a
+.dword 0x5f8fb44706bee4bc
+.dword 0x2deb3c2993680a6f
+.dword 0x9ce74ebd0576e3ec
+.dword 0x55e5b8cef5db1140
+.dword 0x9463ad06ac6aa962
+.dword 0x6231d9baf58c4866
+.dword 0xc44b23b7d7aa3526
+.dword 0x7a863357e2e67431
+.dword 0x6204051a76663935
+.dword 0x5e68e8abd4e66056
+.dword 0x1674c8905ed01088
+.dword 0xa3876553b5811d8c
+.dword 0x9af48d417cd17921
+.dword 0xc8885da53b9c89f3
+.dword 0x9acfffb357342b08
+.dword 0x4941fb1cddde8139
+.dword 0x87ad1a5fb40f5100
+.dword 0x42863d63de0a454c
+.dword 0x3935acdd7121cb5f
+.dword 0x3049a38bb7cd77c1
+.dword 0x6b6d986bc697ab30
+.dword 0xc641d1054dba4a19
+.dword 0xf9b9d535d5928d3a
+.dword 0x9bd95eeced8772e0
+.dword 0x4d53467a8b71666f
+.dword 0x81a31369cd6dde22
+.dword 0x4e8c2a858163a897
+.dword 0x1e4dbffaf383fdfb
+.dword 0xe554ce62d95ebab8
+.dword 0xecfb337de9314d20
+.dword 0x644ad9615ceb8997
+.dword 0x958845dd2f4f346e
+.dword 0x85521272f26e307a
+.dword 0x936ff317e4ed8b30
+.dword 0xea4138dacf0010ed
+.dword 0xf3a9deebddaa8893
+.dword 0x4a908fe84b604787
+.dword 0x6fd457a182fab558
+.dword 0x595676225861bc0b
+.dword 0xc53bbdfea4a4cd01
+.dword 0x1d4ac163c5cb96be
+.dword 0x1a428bcfa9d34345
+.dword 0x984f206c1414543a
+.dword 0x45e53ab1970eab1b
+.dword 0xf565012900d97e85
+.dword 0xe8eae36adf913aaa
+.dword 0x15d2ac77157e7192
+.dword 0xf8b99a955ed50bf5
+.dword 0xb13edcd5853790e2
+.dword 0x209eed00c55dec12
+.dword 0x03ef11c0e36447bd
+.dword 0x25f3e9ffd2fd0428
+.dword 0x581f2ac2db654f03
+.dword 0x2d0a99ecec6879d9
+.dword 0x29467a9bb47e2714
+.dword 0x4c3cf99c77253e39
+.dword 0x3d28a2333484e970
+.dword 0x09fedd4070f5594e
+.dword 0xf936c8f2a480f353
+.dword 0x801249627d441c43
+.dword 0x186526802f302018
+.dword 0x8d6a68689d1e5225
+.dword 0x09d4577dd6a0f1d3
+.dword 0x3ca8a6ba197fe883
+.dword 0x37f2cda62bf68c16
+.dword 0xcb42b5c2e3e10589
+.dword 0x7e3843799422bdbf
+.dword 0xac3f8f4a82a6c50d
+.dword 0xc04766aef31d7b49
+.dword 0xfc59e29f46e8ac3e
+.dword 0x320ea52b19746d9e
+.dword 0xbfe16a69e2011182
+.dword 0x01db012547254846
+.dword 0x3a1e11662abf7c14
+.dword 0x2be3db81ea860ab4
+.dword 0x1c2b87ae16717b2e
+.dword 0xe3c9362f9b8aae8a
+.dword 0x2c94bed85d344404
+.dword 0x50b073af62df985e
+.dword 0x1e219814ed09ee6f
+.dword 0x698f768f99719dbb
+.dword 0x8b207f0effd02453
+.dword 0xc2cc674487edd4ec
+.dword 0xca5114e28af1a08f
+.dword 0x777b6a42ce3645ff
+.dword 0xecc660008ad66580
+.dword 0x1b7e0c78e5588dfc
+.dword 0x211e5d62175206e1
+.dword 0x07fbdd70d088a5af
+.dword 0x1649e698055956c8
+.dword 0xa4dce5f30e7b7cc3
+.dword 0x221fa74456134615
+.dword 0x7f755e92d5f5ea26
+.dword 0x6517fedb3996c3c1
+.dword 0xa1f9f9018b582710
+.dword 0xc6215439b5bfcee4
+.dword 0xd7db0c6d08f32e15
+.dword 0xed54f1380ec8196c
+.dword 0x9127a1ee0f4c3d61
+.dword 0xba80add1a2698c3c
+.dword 0x97b23e3cd9993e6a
+.dword 0x92375942349dd438
+.dword 0x43fb55412a64cc28
+.dword 0x203cc768e43bbf01
+.dword 0x383243e6d422151a
+.dword 0x8e9086e23dcd0bf8
+.dword 0x225133bbc6e0e842
+.dword 0x9a09c0571f8abf13
+.dword 0x43fab64c522ffd69
+.dword 0x348b87eae833bd8a
+.dword 0x87b6502ea524742a
+.dword 0x6f6c43582976f619
+.dword 0xde5c45dd72512d4e
+.dword 0x33c48617dec62c91
+.dword 0x19b553ce132da509
+.dword 0x10bc21bd753bee24
+.dword 0xef1904b410026377
+.dword 0x1799839c56b2b8b6
+.dword 0xcd2009691e913c03
+.dword 0x38ccf2a57fd56803
+.dword 0xc80f55263a7bbb64
+.dword 0x62739df1dbd08a05
+.dword 0xe977c5ed2b6c71a9
+.dword 0x4ba28f918cc16a48
+.dword 0x0a9f00926daccf23
+.dword 0x5ff895c4b55b02d8
+.dword 0x6ddaafc1d5f36efb
+.dword 0x24e1a7f101850b85
+.dword 0xb94fd0f161f9b482
+.dword 0x39769a68c9d8bb2f
+.dword 0x8b1cd27b38018c5f
+.dword 0xbf99d8afcff13454
+.dword 0xa49af8b2b67cee4f
+.dword 0x5c6ebfdae95b2d14
+.dword 0x6119e63eca1c1d47
+.dword 0xc05399e1be6c845e
+.dword 0x451c3163a772c501
+.dword 0xe5f9ebca7f39a120
+.dword 0xb95d57e06907064a
+.dword 0x6484dfd0fe99347b
+.dword 0xcbd322fb55041412
+.dword 0xa341a179f231b35e
+.dword 0xbfb9b2a4a4c417bf
+.dword 0x3b70e90b339b8bfc
+.dword 0xc535cfea122d2872
+.dword 0xd996751b9fe7dac2
+.dword 0x17f843e23fa54eb0
+.dword 0xbd1e67890f3f351b
+.dword 0xeceb1464bb88c5ee
+.dword 0x829571b5d79dd9fe
+.dword 0xbe604b43a6791da9
+.dword 0x286de5b0ff5c18ba
+.dword 0x3b590cdd3ee14ed6
+.dword 0xb9237501000269ec
+.dword 0x0a9ca6da87d8fb4d
+.dword 0x9176db6b34b1d767
+.dword 0x58d36cd0b5740700
+.dword 0xf1b7ab7bac07994f
+.dword 0x2b6d081b1039b0a5
+.dword 0xd14ed4de43869493
+.dword 0x50b2ffe3b729f5bc
+.dword 0xaedc07374d16a39c
+.dword 0x2e6c7b322479d856
+.dword 0x0d934a1d3e5351e1
+.dword 0x40c6eecfdf8c9468
+.dword 0x23553691bcb96dc3
+.dword 0x2004004f6be2a4dd
+.dword 0x821a77130991c576
+.dword 0xa89a9bfe5afd356c
+.dword 0xfeb8ee19f55c8afc
+.dword 0x3351c85dac887b72
+.dword 0xa2f8ee4ed3483d24
+.dword 0xee7af5e9d178aa15
+.dword 0xfb8eb6e4e0bab503
+.dword 0xf945e3cea5cbaa66
+.dword 0xa10f09e2f43b1141
+.dword 0x86ca85417395ad1c
+.dword 0x2eacb00c90e26bed
+.dword 0x53749225842413e4
+.dword 0xeff170aced8940d7
+.dword 0xc8d5aa578ac0c62f
+.dword 0xb5107452eeb253d9
+.dword 0x148e39d977f823a2
+.dword 0xdf89dc8a109a7ea5
+.dword 0xb7fbebd522426dbe
+.dword 0x831362a9e3c3ef72
+.dword 0xaa724adb1d057394
+.dword 0x792353733b290eae
+.dword 0xcb2e14d2beae7763
+.dword 0xadd9a0e1e5ed2ac0
+.dword 0x6c36bbc71f390480
+.dword 0x28e3d3aef2d93c0d
+.dword 0x00f4be72121ed65a
+.dword 0x79f06af532a9e2df
+.dword 0x37b431397450e615
+.dword 0x95b36870930c928f
+.dword 0x79a016934e16e94f
+.dword 0xd534586619738f19
+.dword 0x7eaff109bd075e07
+.dword 0xd4ddb6c783c54ad6
+.dword 0x38c81f40139c767c
+.dword 0xb1d1fcadd847889e
+.dword 0x90365e06772bebe2
+.dword 0xaab8884645846c23
+.dword 0xbd362a080267553a
+.dword 0x008ea6b8ef840306
+.dword 0x90ee4e6e06efa3f6
+.dword 0xff9577096464e82b
+.dword 0x88493cf690979b3d
+.dword 0x2eacb6c6b66c8c09
+.dword 0x29a2fdd593e99deb
+.dword 0x41bb516a2d63adf2
+.dword 0x18c578e368a022de
+.dword 0xc288c4b519b5cb92
+.dword 0x8a5175fdbeb47cff
+.dword 0x0b642b5d11c8743a
+.dword 0x636c3b7a4479f572
+.dword 0xc698638aeadc4b95
+.dword 0xc579e2ca05cc7f3b
+.dword 0x8b53b51708ac49b2
+.dword 0xd82d5d2274b06c52
+.dword 0x7c2b06da9459ec88
+.dword 0x360f8de2fba2bda1
+.dword 0xcdd7c44b853ba09d
+.dword 0xda752707a2121243
+.dword 0x9f7b961acda8cd6c
+.dword 0xaeea11a4b3bf3106
+.dword 0x754cd8425b493f51
+.dword 0x628e734d4c97f51f
+.dword 0x8f8929aa237338b5
+.dword 0x7f02e3a6310bd468
+.dword 0x8b11c9d360ff1d0f
+.dword 0x9f3552be33b517b9
+.dword 0xd0de4957b5f882b5
+.dword 0x52b25ffb0bf2d4f1
+.dword 0x2687d313c050f27e
+.dword 0x4d1da70bc95a004e
+.dword 0x9fbd968b3858ca8b
+.dword 0x0498efaf01e57191
+.dword 0x2057d0ed77e6d1c8
+.dword 0x7217df1d92d23f90
+.dword 0xf822574297625473
+.dword 0x0785384fab0f2f59
+.dword 0x591e63792722f3d4
+.dword 0x259d41183dd2dab3
+.dword 0xa61838fe01202f69
+.dword 0xf84d3a7a3f697c9d
+.dword 0xd1176be2e15160f3
+.dword 0x94b078d48a756eeb
+.dword 0xacc3920b92fcac3a
+.dword 0xf6b96adccca5a91f
+.dword 0x0b292ea2856e7852
+.dword 0xa2339a4ba2ce81e8
+.dword 0xc8ec8162107775df
+.dword 0xed86318693ecc50b
+.dword 0x6b4e68d7d2feed61
+.dword 0xda6690075b31c8c8
+.dword 0xbf90810fcef0d988
+.dword 0x2883901539aac63c
+.dword 0x79359bc3fcfb1e9a
+.dword 0x9fe394ff9de6cfbf
+.dword 0x49ed5fccf0337105
+.dword 0x7704d2f4e691c9ca
+.dword 0xa5043d1996363ca9
+.dword 0x96bb62da9093bea4
+.dword 0xea17846e33a72d79
+.dword 0xe8f5ba65923d8cb1
+.dword 0x6db6c410f9e3011f
+.dword 0xe6f671a9b9cd14f4
+.dword 0x67faf21753dd4296
+.dword 0x33e1f0e09113e131
+.dword 0xf686aed66c53a4e8
+.dword 0x72f6202e4139685d
+.dword 0xbb918067ed20dbc3
+.dword 0xd0f30482a8698b6f
+.dword 0xbf4bffd15b99dd74
+.dword 0x22aa3cbdd270db29
+.dword 0x30008534291e07ab
+.dword 0x9e94ab4001ef3b06
+.dword 0x24a128cf0e5e2d0c
+.dword 0x748833074d7c50ca
+.dword 0x03231f25f217b5a0
+.dword 0xd664f9e8e8dc242f
+.dword 0x33e448515f625ce1
+.dword 0xc50b0b744d49466f
+.dword 0x199c09bc58e216d8
+.dword 0x49f1322aa91fa151
+.dword 0x48e9925a0fc7a8fb
+.dword 0x97c7e965c272e744
+.dword 0x02d5e72fb98b2b1b
+.dword 0x82831995a9005fcf
+.dword 0xe7bf70ba8d7c7b71
+.dword 0xc8a74ed2ccde8661
+.dword 0x18c1f11163a22806
+.dword 0x8dc97d69ac7bd578
+.dword 0xee99529c38760519
+.dword 0x8fecfc6e46033f2b
+.dword 0x3fac5f2c5cbf7946
+.dword 0xa4cf2fa0e0d271c5
+.dword 0x00b145b1ef0adea8
+.dword 0x0ed88f52130ee40b
+.dword 0x6efb84d7dc6774fe
+.dword 0xe94725557652186b
+.dword 0x33808d9239f5858a
+.dword 0x753d1d2c7f57f80f
+.dword 0xfc8446b6c2d4fcb0
+.dword 0x3265c7e9a3cd62fc
+.dword 0x66307983c15a2a82
+.dword 0xce2d7dc8199d6716
+.dword 0x5b76914cd6c63897
+.dword 0x09e852612165ba37
+.dword 0x44774f8e2183e5b6
+.dword 0xefd1e03ab171c743
+.dword 0xd95ba47a449c07c3
+.dword 0x2b0a6fdacfa27e9d
+.dword 0xe84ac7ab8580cb6f
+.dword 0x8e0fd76710f9be48
+.dword 0x2970ab4e40c429e5
+.dword 0x4d0c8b80fe7a0916
+.dword 0xc147cf8c2564ddbb
+.dword 0xcf59c67292ecee81
+.dword 0x3b5fa7e265b05821
+.dword 0x4f33a5f847a6c5ef
+.dword 0x9ea726dc7b959de7
+.dword 0x6a0374dfd597dac6
+.dword 0xe836594a408a0b64
+.dword 0xe21974c3c639b372
+.dword 0xb2a75c9d941796b8
+.dword 0xdfc363d160e6f37e
+.dword 0x6b0252f62e409fe7
+.dword 0x2bafbde1e8a88d0c
+.dword 0xb28b308493af8dee
+.dword 0xe14c98bd91d1c721
+.dword 0xe3a56b52ee4389d4
+.dword 0x002943d20b7cf55d
+.dword 0xdef46ba9e2a8c544
+.dword 0x99ce6750013d31c6
+.dword 0x5acf3da393c5372a
+.dword 0x00d9a4554a4c31be
+.dword 0x3f47ba8d3ae64466
+.dword 0x468b6263515ff8fd
+.dword 0x16f7e9fb5f1f6233
+.dword 0x18c1e1163fad7c07
+.dword 0xca47bef5160ea4ce
+.dword 0x68e8c53e4149336d
+.dword 0x65bb522353167a31
+.dword 0x3b99aad8c775d762
+.dword 0x18aaec71acf2a6f5
+.dword 0xbda7f0b9fd2b9b4a
+.dword 0xd3261f5cac743657
+.dword 0x3d3fd25a5064c57a
+.dword 0x174b8b5ba4a6b9ae
+.dword 0xe1c9970655691268
+.dword 0x0aa1cd57ab023484
+.dword 0x3e166fd8a69b1732
+.dword 0x89ac82a3ffcd0ce8
+.dword 0x9623fcea635bde46
+.dword 0xaee39ebf6a71bc84
+.dword 0x9e42104789661aa2
+.dword 0xa3be25614ef86906
+.dword 0x524b96360a6a1ef0
+.dword 0x3eeb6ddbddce4456
+.dword 0x32a2f9d13a46aa31
+.dword 0x17adfb4132b35fba
+.dword 0x2a3357daa0b057d2
+.dword 0xe924b1a228c26199
+.dword 0x5193d3188ffb4e05
+.dword 0x78bf6db4d7902b2c
+.dword 0x116f2bb0802be2bf
+.dword 0x917b5fb8825b775c
+.dword 0x75779b85a559b938
+.dword 0xe1c27d10f9038500
+.dword 0x327904a87983bd4d
+.dword 0x48049a4bd5e1eec5
+.dword 0x0c70c1f56c05190b
+.dword 0x891f1e982a0e9307
+.dword 0x62412a70efed93a5
+.dword 0x245e5d8179404382
+.dword 0xdff3816256a1327a
+.dword 0x28169f910a355ffc
+.dword 0xb71adaf71da801ce
+.dword 0xa44cb92bc4418cba
+.dword 0x3f586e5544f1ec73
+.dword 0x77181f14272b673a
+.dword 0x653cf1e6ace2c5b6
+.dword 0xe56afb66c4ac90e4
+.dword 0x6259ae9c3a7264d9
+.dword 0xf16baff5f58aaf93
+.dword 0xc87052a672261a61
+.dword 0x483943fe356e56a2
+.dword 0x4c8956c18d0cef43
+.dword 0xd3b081b76d4a5046
+.dword 0x49d597f126537b1f
+.dword 0x9e75ccb801d732d1
+.dword 0x2975e81b4910b140
+.dword 0x02fab5fde56499c3
+.dword 0x6ab87468b51824a3
+.dword 0xfce251b1c9396eb1
+.dword 0xac3adbaa07ff5db8
+.dword 0x42fc94c9997710ae
+.dword 0xafa6fdbb8228a969
+.dword 0x69a1ff94c8a617df
+.dword 0x6920d69a48561d9f
+.dword 0x4a0e202ef70d3460
+.dword 0xa90b2a4493914b56
+.dword 0x437ef8a0594d305a
+.dword 0x77e06563a7e6e742
+.dword 0xcf9f48bb0bf280f5
+.dword 0xd5846586ad07126f
+.dword 0x380e4ede3f6c35e1
+.dword 0xc50c671aa424e343
+.dword 0x35245741ca74551e
+.dword 0x767091eec15c451b
+.dword 0xa18b35d5fad885ec
+.dword 0x4a02405e6941a7e6
+.dword 0x958c8c346d2b84a1
+.dword 0x6053bfb9372e2a66
+.dword 0xad82694f22251cae
+.dword 0xe96f5c66f21a4bcc
+.dword 0x69e56b324ec2e2a4
+.dword 0x5a333c40510e3d33
+.dword 0xae768531c347e731
+.dword 0xb2d9396f16374faf
+.dword 0xac7e62ed3dc054e3
+.dword 0xe037b7ab35bfa4aa
+.dword 0xd39b0c38e223aad3
+.dword 0x1957389799196fa3
+.dword 0x9aac125b4823b076
+.dword 0x1b9baffcf1454465
+.dword 0x12be04baf3a4e022
+.dword 0x8a1eb1a6c6ccff45
+.dword 0x92b7bfb0f8a92626
+.dword 0x14f40d40d4b516f2
+.dword 0x867daff89a12fed8
+.dword 0x78d8e259408311ff
+.dword 0xbeceb86840088eae
+.dword 0x11dc3b2da5af7c35
+.dword 0x9e09cc0487c0d425
+.dword 0x60294ed5cbe33ed8
+.dword 0x1a736baf041a2f55
+.dword 0x582d8634edf79d15
+.dword 0x872e089b219beeed
+.dword 0xc6be90dc64a951d7
+.dword 0x6865b0d7e76fd88b
+.dword 0x401ef2888e0f5137
+.dword 0xf7026846c7d42500
+.dword 0x6b983d46d5f0d7d7
+.dword 0x8168cc21627b8905
+.dword 0xc197a1578b58805b
+.dword 0x7fa9e7cfc8e13794
+.dword 0xc1927249824bf940
+.dword 0x1f8b9cb134bd1c82
+.dword 0xf71525b2135488c6
+.dword 0xc9e58311fe995872
+.dword 0x9eaca9c5ef307e95
+.dword 0xfa2e4eb1d976b923
+.dword 0xd9666d8d40d1306b
+.dword 0x76a43cebd9e8873f
+.dword 0x1a97858e8ea89c84
+.dword 0xc001925e7b00acdb
+.dword 0x95bca5853ca1627b
+.dword 0x4b7aa404791b86cb
+.dword 0xe5d596cbde599147
+.dword 0xd4c2e45c3637ff56
+.dword 0xa283fd4a402deaf5
+.dword 0x872125bedf105f08
+.dword 0xbb134cd81d22d9cd
+.dword 0x87b9f053d351c318
+.dword 0x99893e3edf5de21e
+.dword 0x32c559ebe1850af2
+.dword 0x0014dbe14cb3ccd6
+.dword 0xe7ef45adebab2c17
+.dword 0x2fd9cebd2156e9aa
+.dword 0x9c131cc0775b467a
+.dword 0xe33be88d8200cd06
+.dword 0x902536e0dc519e6c
+.dword 0x4ae627a13d33d756
+.dword 0x2e2d9454a898bd94
+.dword 0x1f6c174b5885ede9
+.dword 0x60df3a5ffc8b5c1e
+.dword 0x682a948622e03d82
+.dword 0xd9a726ef5520a950
+.dword 0xa8aefe0cc3453260
+.dword 0xcb270f473f4e764b
+.dword 0xd41f70b838244e7e
+.dword 0x168c5c85995cbffe
+.dword 0xe4f1c187e7049a40
+.dword 0x0c614fa5bc37d085
+.dword 0xd971d30a8b89200f
+.dword 0xcb16f07afd10ad33
+.dword 0x598a6da01f071660
+.dword 0xe977e7bb83a963f1
+.dword 0xae7704559e21b730
+.dword 0x59f209e3e4ee959a
+.dword 0x57ed1acc51bcc638
+.dword 0xa13af7cd45760dd9
+.dword 0x9e66c13e94064ab2
+.dword 0xf44fcd50772d601f
+.dword 0x90542340723bff0f
+.dword 0xd87a009e07a70323
+.dword 0x64052687a862dba1
+.dword 0xd2c677e8114d49ac
+.dword 0x9364033a6e63a66c
+.dword 0x11e244acda8a6f09
+.dword 0x65735bba515e486a
+.dword 0x3285e41bf25adca0
+.dword 0x762c076022b01a08
+.dword 0x4d4bd1902322f890
+.dword 0x5e8e04bd02669e94
+.dword 0x3cc74ff458b799ba
+.dword 0x0ccf0322dc1f2783
+.dword 0x9435c64a8d69316d
+.dword 0xd45d63a19a6bc295
+.dword 0x66878759a22f2882
+.dword 0xf5d84bd6f03f2eb4
+.dword 0xabe8586ae20af07c
+.dword 0xeb9ee32132a21607
+.dword 0x90bd5ced6bbad599
+.dword 0x7d1a0fc9adfc737a
+.dword 0x42afcf467f235a72
+.dword 0xa2138a8bcfd2c402
+.dword 0x06e3806b1572c0b0
+.dword 0xa6543376139f9c76
+.dword 0x6eabd760c2e0b9cf
+.dword 0x9519319fe6c088d4
+.dword 0x1e458140cbfd5442
+.dword 0x1076d9bb4377bb6d
+.dword 0x8ca97ea3de5b6555
+.dword 0x2794146f5acb8ef0
+.dword 0x5bc4ba7bdcda6394
+.dword 0xc21e45f7e433f365
+.dword 0xe311a83d09d66e99
+.dword 0xc20bec89bbacfeb5
+.dword 0x76cf2c6f54e6b7b1
+.dword 0x2b87e1b9afb880de
+.dword 0xac116c1376f7adf7
+.dword 0xef52661f202e9207
+.dword 0x2c4d99b99b7a0647
+.dword 0x3a78b7bd024e12ad
+.dword 0xc0411a865ca34fa5
+.dword 0x58825d2664a4f1ea
+.dword 0xabfbd383edfdddd3
+.dword 0xe0313ccec4fcdb25
+.dword 0x56da739e6492a6c1
+.dword 0xd0f255957ec502a8
+.dword 0xa39a489d59608250
+.dword 0xde35b72f12af0baa
+.dword 0x628e776e1b2e847b
+.dword 0x69ca821e3da6a3ba
+.dword 0x723f7e53a7246fff
+.dword 0xa2c0201d037690c2
+.dword 0xc7e99bfc4c47aaab
+.dword 0xaff3798881488913
+.dword 0x6549e87d1b643376
+.dword 0x8622c394a73c48ff
+.dword 0x738011609247087f
+.dword 0x6899a89ee0fcf423
+.dword 0x932589c4653c3f59
+.dword 0x6519bffdb84f956e
+.dword 0xec526475e7742808
+.dword 0xe17f8daf3dbfb9fc
+.dword 0x6e3ad04c33faa196
+.dword 0x90b3acce085d46d2
+.dword 0xff6ac59044544b7c
+.dword 0x832a5b1558540abf
+.dword 0x3341b5ea19a49528
+.dword 0xddd10a6660efdd1d
+.dword 0x96d473e9db9d3499
+.dword 0xaf6ad3e0a9cf78c9
+.dword 0x6c5c4e2e0d9a1e3c
+.dword 0x576855f7e050b5a6
+.dword 0x6978d800dadeaad7
+.dword 0x37e105e841287fa9
+.dword 0xaa6809abc946b1b6
+.dword 0x52e1389482574d3f
+.dword 0xe7ebf5349af1b425
+.dword 0x22f2ca0539379a1b
+.dword 0x0997481d8abc8570
+.dword 0x5d56bbfebd92d35c
+.dword 0x5418d6dd147da46f
+.dword 0x3c7effb1e876c9d1
+.dword 0x3aa02e46440cf8bf
+.dword 0x9d7344fa107f0d34
+.dword 0xb3e752894e06840b
+.dword 0xa3b2dbcb51e15ff1
+.dword 0xb9f46bb93195a0f9
+.dword 0xabd3aeb2d818636b
+.dword 0x458bb7075f1e46f9
+.dword 0x47a835f874403dbb
+.dword 0x54f8ce31004e6ef8
+.dword 0x2def9d6746335b15
+.dword 0xcc3d337501943efe
+.dword 0x2064192f67d15eab
+.dword 0xbf09a4f291a2e900
+.dword 0x4eaf5ec5f5342538
+.dword 0x55c84906d75fd678
+.dword 0xe6eb609c39acf740
+.dword 0x1381fdedcdcfed54
+.dword 0x17abd5bce54f318f
+.dword 0x34f70a9bd3550149
+.dword 0x932165e35041a6e8
+.dword 0x7deb86c92f4fa173
+.dword 0xb6410f62794cf2aa
+.dword 0x976e99aa97c614b2
+.dword 0xa7fa308a1cadc5c6
+.dword 0xc1a6f7a39854e34d
+.dword 0x00eb04a1993430ad
+.dword 0x2592e6c474b3ae34
+.dword 0xe0b41616b659408a
+.dword 0x9d6134617412904d
+.dword 0x20f73affc92298ab
+.dword 0xf272dd72e9c95c7b
+.dword 0xc298c4751d489c54
+.dword 0x02f31a81560de753
+.dword 0x5bdb4ed28e27124c
+.dword 0xe7c1bcf9c45bbe75
+.dword 0xcb25f103c64f66a3
+.dword 0x1c9ccb88902167de
+.dword 0x4255160f8bc6eb88
+.dword 0x0335e41abd7de751
+.dword 0x6d96984efd3ab625
+.dword 0x058b7421c708378a
+.dword 0xc28fb7e1c37feb48
+.dword 0x13968a5ae337f6d7
+.dword 0x095a0afc199d9831
+.dword 0x757bef5c9bb9c39b
+.dword 0x87df48a58befdd03
+.dword 0x21758128a64c3700
+.dword 0x5e1eca8ba0395c53
+.dword 0x77c4d13d6aa34cbf
+.dword 0x3f9aa73e9f4fa708
+.dword 0x25682bb7be91c328
+.dword 0x8fe31b21c2c5474c
+.dword 0xf96be69283107d60
+.dword 0x8361fdc30b8bbd0d
+.dword 0x69c0aa2c56c23060
+.dword 0x0e38e6c11832e38f
+.dword 0xfcfb723937d1790c
+.dword 0x04a1f3daf62a4657
+.dword 0x3f3145f837a1b2bc
+.dword 0x5881f724fb505baa
+.dword 0x6c400f3113f42eaf
+.dword 0x8f322b6c80c63999
+.dword 0x0a604774a67fd62f
+.dword 0x5a96611635a7d2fa
+.dword 0x661a633cdea690eb
+.dword 0xd9d69dbb9beed7b1
+.dword 0xff1fad72b746c14a
+.dword 0xd6879a3375951077
+.dword 0xfacb0de0e0e4ec17
+.dword 0x733190f8986ee8c7
+.dword 0xdb05727bfcaa8e39
+.dword 0x0fdb7c342af76699
+.dword 0xe71a87fe220e91f8
+.dword 0xd749d9018d54b00a
+.dword 0x933f701d64f64a90
+.dword 0x6c36ab0b8a7ae45d
+.dword 0x47e5b91edaf9442a
+.dword 0x91fe03cd591ffe52
+.dword 0xc2b018635a3b7de2
+.dword 0x886b722b60fae124
+.dword 0x10f035fc67b31c17
+.dword 0xbcda42f8f4c16c5f
+.dword 0x61fad3c70935381b
+.dword 0x0b6fd5c4093b78d8
+.dword 0xbab0a281da9265d4
+.dword 0x22185d96058c84cf
+.dword 0x1fff2162c97b13cf
+.dword 0x78534f0a19487ab8
+.dword 0x84d43e73bd5449b0
+.dword 0xf33f08bb4715a914
+.dword 0x3cb316eddee319e3
+.dword 0x2da363435a98cf36
+.dword 0x68e1da412b5a457f
+.dword 0x2611783e9d098d33
+.dword 0x4f2c342f0f84ab0c
+.dword 0xe08630f176b9fbf4
+.dword 0x43464ce3407d15e3
+.dword 0x569939db6cb65edb
+.dword 0x708bfced67267eff
+.dword 0x7ef0160dbede96e5
+.dword 0xef9b2cf439cf9c99
+.dword 0x809c0f4903c129a8
+.dword 0x6f65a7586e41b6b4
+.dword 0x356368d9dee91952
+.dword 0x386d1cef6c1231c4
+.dword 0x222e8ce6cbe2f544
+.dword 0x54f03cc94236156a
+.dword 0x1d5cc75707b954d4
+.dword 0x6023c3b6751e79c2
+.dword 0x1b1f4c46de48d776
+.dword 0x264aa5d14d4f9a24
+.dword 0x055414778aa15e29
+.dword 0x7bf1fbd8b7b7a0a3
+.dword 0xe1c9cc26f724ed86
+.dword 0x76302e3427dcb034
+.dword 0x9eb3bd36a3f6aa64
+.dword 0x2c8986fab60d390b
+.dword 0xfc2db3b3521ed95b
+.dword 0xa7f4a13d2f276f2f
+.dword 0x69d1561823905b21
+.dword 0x569b22dcbba4dc38
+.dword 0x418a239bc96b5c33
+.dword 0x1596e1671b8e915c
+.dword 0x721574a21fb4b721
+.dword 0x5115ec5d567bbdcc
+.dword 0x2633412082b3fe62
+.dword 0x1fee9ca2c43fb1f9
+.dword 0xe67fe0b3ac483653
+.dword 0x51de7dc7cb23938a
+.dword 0x208a3fd9b0e5390e
+.dword 0x527717352a00d943
+.dword 0xd23eec9d516681ed
+.dword 0x82f7e55a1a936ca6
+.dword 0xee6e6098557ab03e
+.dword 0xc31542deb346f20d
+.dword 0x2130fd1eb956e1a5
+.dword 0xf39c687d0384a5ad
+.dword 0x2e4e11338ce7c71e
+.dword 0x09bca174be6280d1
+.dword 0x2b8a5b6cf86bc01f
+.dword 0x2192cbc5fb652e00
+.dword 0x653a1d09f4654ac5
+.dword 0xb0ee12f584c890d7
+.dword 0xc7852b5341c950ef
+.dword 0xc529c6e8697d9ecd
+.dword 0x857787e68b507630
+.dword 0x52416f6edc1b2460
+.dword 0xc2efc2e78671db18
+.dword 0x39129d5e4f01aa72
+.dword 0x6ad9f6d5c6b075c4
+.dword 0x97e56c3afcd2a261
+.dword 0xa7ebd739eee7bb58
+.dword 0xe5ac4d7543429e11
+.dword 0xea6ab20ace4ba17a
+.dword 0xc02a16e6c6dd2b2a
+.dword 0x57e25adf81634d3c
+.dword 0x377b7831f949c2eb
+.dword 0x96be83450cfc4d9b
+.dword 0x0cc43a21a7ecdaf0
+.dword 0x2b8ec8283d4a89d9
+.dword 0xcd5858c48cfc15fa
+.dword 0x2e70004204f88a3f
+.dword 0xd30115366f8e3397
+.dword 0x7d2254cb2ebd6bc1
+.dword 0x584805e8ff8ebe5a
+.dword 0x95924130fbc2b724
+.dword 0xe711d98b99446ae1
+.dword 0x7f3b013537bc0df1
+.dword 0xefeee677460b1ee9
+.dword 0x2e8eb3c4a620508c
+.dword 0x2948c2f69e934ba9
+.dword 0x14dc92deb8a887c2
+.dword 0x2ccd215d5dc9bd5f
+.dword 0xe02f6f122d7815fe
+.dword 0xe79d95f98f321284
+.dword 0x1410254fd98f70b0
+.dword 0x373ebbb6fd312b82
+.dword 0xe109df7798d9156c
+.dword 0x2ab2dd0e71aea992
+.dword 0xa993720e97ed646c
+.dword 0xd116dcf71dfd13b4
+.dword 0x32b3d5f0c0b989c6
+.dword 0xee27b3beea246847
+.dword 0x89209ef44f265976
+.dword 0x38ff6a8d78c8607f
+.dword 0x5650425f2588de3d
+.dword 0x2e446f07df41bd66
+.dword 0x42d10134af8a6433
+.dword 0x2088267961bff078
+.dword 0x6a317d471f494e68
+.dword 0x2944603df773df5e
+.dword 0xb645c7d5399d1e9b
+.dword 0xd3bc58329952fb81
+.dword 0x7c27f4e71ac728f9
+.dword 0x19e614ef3b61c9c0
+.dword 0x55e5ca17616a50a8
+.dword 0x29a6c9e1b1095615
+.dword 0xf0e3db172d9b599a
+.dword 0x12363760a4843535
+.dword 0x3f395f09695712dd
+.dword 0x16239386c12442a6
+.dword 0x11c910e76322697b
+.dword 0x22dd9f6e5eb30542
+.dword 0x51f80daa11551df8
+.dword 0x784a1712b62d76d2
+.dword 0x6a2000ced5ce1be0
+.dword 0x74ea3d8889fbb880
+.dword 0x7d55fa0192e8bad2
+.dword 0xaee350ea5757b78f
+.dword 0xe58ebf1559afa2d1
+.dword 0xc39f278bd9160377
+.dword 0x72d3913e5175e033
+.dword 0x9e08916b50fc0074
+.dword 0xd4b9cef86cc2fe94
+.dword 0x65d67ca08f7b7d92
+.dword 0xb2677e537ca5b668
+.dword 0x513444a043c9fa74
+.dword 0x14ee26514be58250
+.dword 0x22a28766d39e842f
+.dword 0x2c5cd19467a1e411
+.dword 0x87b5224e99ec7d4b
+.dword 0x2774054c0a9f9a4c
+.dword 0x46122bde6a1121a5
+.dword 0x78f11c4193d44aa4
diff --git a/isa/rv64uv/data_fd.h b/isa/rv64uv/data_fd.h
new file mode 100644 (file)
index 0000000..3f32ec3
--- /dev/null
@@ -0,0 +1,4096 @@
+.double 3.82442188112e-88
+.double 9.43371972728e-26
+.double 3.93277941308e+246
+.double 1.07116715411e-136
+.double 2.94366617223e+71
+.double 2.74149657173e-281
+.double 4.03928077631e-189
+.double 1.39753598034e+88
+.double 9.99891841595e+213
+.double 167950.209113
+.double 3.0938897403e+212
+.double 1.27015662742e-246
+.double 1.76239017488e+214
+.double 4.64664649481e+228
+.double 2.05347187325e+18
+.double 4.97149695024e+161
+.double 2.2402530193e-190
+.double 3.23373689753e-104
+.double 1.8774019486e-257
+.double 2.09851573992e+203
+.double 1.50554446389e-204
+.double 1.09209202377e+22
+.double 5.48867635168e+193
+.double 9.46861888455e+285
+.double 1.48773103771e-86
+.double 9.84726166644e-178
+.double 4.50928483518e-88
+.double 4.88630775716e-279
+.double 7.99769919299e-200
+.double 2.19080373589e-258
+.double 2.20471662267e+187
+.double 3.01765807058e-205
+.double 4.44513880315e-170
+.double 1.42983049394e+55
+.double 1.43821524886e-229
+.double 3.51432832431e+79
+.double 2.19784528323e+145
+.double 3.59021532923e-177
+.double 8.32770856299e+175
+.double 1.16281616503e+81
+.double 1.02181921933e+25
+.double 1.66166219641e-277
+.double 1.41497712152e+172
+.double 1.35348433377e-15
+.double 2.05865658051e-215
+.double 1.27025671443e-78
+.double 2.71146324575e+233
+.double 2.0468698842e+257
+.double 2.51053594015e-289
+.double 7.18095653196e+142
+.double 6.96936821152e-81
+.double 2.81657804683e+125
+.double 2.50237117238e+99
+.double 1.1095037484e-54
+.double 3.93514652461e+183
+.double 4.82625377516e+250
+.double 5.93162974333e-271
+.double 1.24193349808e-233
+.double 1.52137894289e-306
+.double 2.9416506645e-193
+.double 9.34583286483e+127
+.double 7.81591285713e+292
+.double 2.80584530064e+206
+.double 4.36835137603e+226
+.double 63.7671241011
+.double 2.87105947072e-173
+.double 7.55272779176e+119
+.double 4.30098037209e-242
+.double 4.91076062682e+58
+.double 9.96249531025e+298
+.double 5.34159554277e+142
+.double 7.42295055377e+50
+.double 2.01120747283e+52
+.double 6.30617592833e+13
+.double 7.13286437101e+180
+.double 2.06038467147e-283
+.double 5.39454243137e-115
+.double 4.98377530203e+287
+.double 1.28016901377e+306
+.double 2.37162802895e+50
+.double 3.94982469871e-243
+.double 3.40526707404e+171
+.double 5.06662598311e+106
+.double 4.50218603502e-119
+.double 3.58275068673e-128
+.double 1.39119552744e-308
+.double 7.6610081387e+266
+.double 2.23839941306e+295
+.double 9.87333702842e+126
+.double 8.23650583981e+291
+.double 1.84449057415e-30
+.double 2.57127410232e-243
+.double 1.48957217119e-269
+.double 5.01399168207e-212
+.double 5.30203863369e-197
+.double 2.29161410838e-128
+.double 4.31722042106e+78
+.double 1.30255000892e-52
+.double 1.13011376923e+65
+.double 1.87219537932e-30
+.double 9.23583894399e+276
+.double 4.18724742551e-112
+.double 6.33852914813e-212
+.double 7.8441099576e+206
+.double 5.21858143584e-229
+.double 1.86468467613e+210
+.double 2.4163677115e-08
+.double 8.33102075649e+274
+.double 5.39125516002e+112
+.double 2.5533931483e-171
+.double 5.22459491411e+194
+.double 2.32947751823e+140
+.double 3.91787357598e-187
+.double 3.89897249042e-107
+.double 1.69972778543e-56
+.double 11116.3911888
+.double 6.30640502814e+295
+.double 1.66418134895e-268
+.double 1.07455797329e+156
+.double 1.58499205767e-114
+.double 3.84820554548e-138
+.double 4.83792208432e+237
+.double 1.4160490147e-175
+.double 1.2425196935e-61
+.double 1.12844315132e-170
+.double 4.59932352914e+306
+.double 1.01624249558e+163
+.double 5.27110565812e+98
+.double 6.24356495688e-12
+.double 1.28312485777e+131
+.double 4.33504259701e+237
+.double 1.16409126841e+259
+.double 1.47596419605e-108
+.double 5.00545394832e-137
+.double 6.23292781249e+125
+.double 9.53713612698e-157
+.double 4.86143898079e-262
+.double 5.86452695699e+81
+.double 7.90220124437e+166
+.double 5.43415504592e-104
+.double 515496.277408
+.double 3.54673599356e+177
+.double 1.63587676811e-268
+.double 1.61259427898e+28
+.double 1.09474317505e+83
+.double 4.19063247466e+49
+.double 3.84047621979e-277
+.double 5.79783447524e-158
+.double 1.61474877998e+143
+.double 4.44599341656e+96
+.double 2.62251455029e+134
+.double 1.263105125e-38
+.double 7.93325515304e-160
+.double 3.52676657744e-37
+.double 1.54548083338e+252
+.double 7.84183090124e+299
+.double 2.27711200231e+226
+.double 1.18938270382e+41
+.double 3.42990921891e+34
+.double 4.40825740177e-191
+.double 4.17117665123e+117
+.double 2.47742695482e+67
+.double 6.46925802594e-52
+.double 2.98171201207e-20
+.double 5.5623203193e+283
+.double 3.08776275447e-52
+.double 4.8603068152e-99
+.double 7.26483286554e-16
+.double 1.01885123915e+51
+.double 5.27211556052e-293
+.double 1.09136514446e+245
+.double 3.40182405712e-190
+.double 5.06842242823e+160
+.double 4.80387225296e+117
+.double 4.98906497893e+213
+.double 4.66012357267e-204
+.double 7.55927357168e-198
+.double 1.26582248889e+306
+.double 5.45184391955e-05
+.double 5.70352388489e-30
+.double 2.3246186492e+133
+.double 2.3291614041e+206
+.double 4.76672732026e+34
+.double 1.23879003102e-256
+.double 1.54610609805e+210
+.double 4.54828043959e+141
+.double 1.71232095271e-13
+.double 1.03425463514e-259
+.double 1.06442248267e+151
+.double 4.78037879998e-204
+.double 3.13602462171e-52
+.double 2.27725999163e+47
+.double 3.18096975706e-118
+.double 6.31446299277e+77
+.double 3.99818108771e+232
+.double 2.23631646047e-53
+.double 4.15674411894e+294
+.double 1.08805390198e+178
+.double 1.21929257647e+132
+.double 0.334918652198
+.double 8.99530433428e+104
+.double 1.19691819218e+35
+.double 6.74700661759e+97
+.double 2.51861771014e-110
+.double 1.95118755901e-126
+.double 4.27032600369e+163
+.double 1.3118740796e-141
+.double 7.85393751373e+236
+.double 5.08597657423e-83
+.double 3.90796931871e-212
+.double 6.52201698735e-128
+.double 1.66646352907e+75
+.double 1.66417823967e-26
+.double 1.89218126456e-97
+.double 2.43898031991e+60
+.double 1.34683072442e+47
+.double 2.8912723382e-13
+.double 2.62640159709e-194
+.double 1.12913172719e-114
+.double 6.47612774363e-298
+.double 8.50714294882e-37
+.double 3.72750550144e+96
+.double 7.30354074781e-264
+.double 6.9954430262e-128
+.double 3.33029219605e-244
+.double 8.87103491842e+150
+.double 1.59008817028e-172
+.double 5.52982520782e-185
+.double 1.07471153587e-163
+.double 5.46841797609e-111
+.double 7.19637514773e+286
+.double 1.17787701128e+129
+.double 1.07313350621e-82
+.double 5.42805197293e-167
+.double 2.15490937966e+17
+.double 5.94310293473e+176
+.double 66226296197.3
+.double 5.47281554868e-56
+.double 1.62047047676e-183
+.double 3.65807965119e-147
+.double 1.50263292547e-164
+.double 7647.73522886
+.double 4.14709350274e-209
+.double 2.67333364816e-220
+.double 1.1318542587e+196
+.double 6.85706541856e-264
+.double 5.97951124866e+297
+.double 1.68071059075e+153
+.double 1.18406181514e-142
+.double 3.00294436609e-55
+.double 6.75473977214e+80
+.double 1.80922939946e+194
+.double 1.30617504526e-169
+.double 6.29667272612e+93
+.double 3.87841981165e+141
+.double 3.27847753862e-240
+.double 1.19019129053e+112
+.double 5.51782322764e+270
+.double 5.10177713792e-140
+.double 2.90903095978e-64
+.double 7.14190254127e-125
+.double 9.28864200848e+113
+.double 1.24221691229e-244
+.double 1.66656923814e+22
+.double 4.1726954421e-154
+.double 7.69367767439e+143
+.double 5.67474047507e-251
+.double 9.28526229884e+248
+.double 7.65074463779e-199
+.double 1.77704016821e+78
+.double 5.40973661539e-179
+.double 5.09892381099e-157
+.double 3.840746571e+85
+.double 1.60885118841e-171
+.double 8.27097161759e-189
+.double 9.85439848372e-309
+.double 1.01744914641e-198
+.double 3.02976349596e+237
+.double 2.48193866364e-114
+.double 3.47556272347e-32
+.double 5.29244689703e+140
+.double 1.08367467971e+91
+.double 3.85265534176e-177
+.double 4.82892469361e-260
+.double 2.39345928653e+252
+.double 1.08314063995e+255
+.double 2.12397213848e-240
+.double 4.12974907926e-115
+.double 1.2505749745e+15
+.double 8.18821861386e-77
+.double 1.15843881328e-91
+.double 4.77941567414e-298
+.double 5.31759484137e-248
+.double 3.78547555722e-52
+.double 3.0641664538e-163
+.double 2.58193931153e-225
+.double 1.65614263999e+91
+.double 5.02132843614e-111
+.double 5.71900717534e+289
+.double 4.12324631032e-153
+.double 1.3873328788e+256
+.double 1.67186615634e-46
+.double 1.72227913899e-241
+.double 2.71103304046e-205
+.double 3.27914708387e+92
+.double 5.70888026703e-35
+.double 1.15556722891e+97
+.double 2.82087779717e-156
+.double 2.3889245399e-19
+.double 9.49620067393e-183
+.double 362192963.663
+.double 3.27482603154e+29
+.double 3.19639214826e-32
+.double 3.98388165942e-101
+.double 3.59237799593e-13
+.double 1.09504915472e-278
+.double 1.36091426429e-220
+.double 8.82237244372e-243
+.double 1.41217455759e+35
+.double 7.89082203375e+293
+.double 2.76215646876e+236
+.double 2.16869786554e-112
+.double 6.70830453254e+104
+.double 1.7880565388e-295
+.double 6.98840826323e+118
+.double 2.84216229054e-27
+.double 2.75842986099e+274
+.double 4.03744455457e-83
+.double 1.96924405838e+255
+.double 2.18227014464e+272
+.double 5.73773693828e+147
+.double 1.5604902802e+206
+.double 1.91638896429e+158
+.double 2.3248194159e-18
+.double 6.22755115913e+154
+.double 4.10191330631e+303
+.double 0.708899346193
+.double 4.59163783958e-117
+.double 3.02370381713e-239
+.double 1.45074179072e+260
+.double 1.42123861673e+76
+.double 5.85242146774e+26
+.double 4.94914830827e-96
+.double 6.05987204711e+190
+.double 4.91300123947e-35
+.double 1.89175083129e-100
+.double 4.60586486293e-92
+.double 4.07378917388e-275
+.double 1.26930233356e+259
+.double 1.67073820751e+67
+.double 1.47596075424e-14
+.double 7.71459247703e-252
+.double 4.54693085718e+57
+.double 2.06838351427e-281
+.double 7.25858810875e-237
+.double 5.10436023249e-20
+.double 8.1043382514e-100
+.double 3.41503377267e-274
+.double 3.67876838986e+50
+.double 1.17133617649e+129
+.double 4.79901859071e+175
+.double 2.08347306012e+138
+.double 4.03742070692e-296
+.double 1.3675926103e-161
+.double 7.27901038991e-245
+.double 4.91561269267e+193
+.double 5.70309217419e-67
+.double 1.28081225898e-298
+.double 9.2184402317e-276
+.double 7.99949466191e-249
+.double 1.97670616964e+166
+.double 7.60621033545e-279
+.double 1.03022289276e-19
+.double 3.05633558505e+157
+.double 2.46883051231e+280
+.double 1.99766005198e-66
+.double 1.32936007519e+89
+.double 3.4232750481e-285
+.double 2.60741587185e-74
+.double 2.33272855412e+146
+.double 2.16841518588e+221
+.double 8.61606406545e+135
+.double 4.30393333288e+14
+.double 1.68704473851e+260
+.double 6.52776500077e-144
+.double 3.44961009434e-134
+.double 8.39119824606e+55
+.double 4.27298288636e-76
+.double 4.52023977768e+184
+.double 2.42945582577e-252
+.double 7.72200301817e+117
+.double 6.8259087103e+224
+.double 4.83984923883e+68
+.double 3.82246503294e-190
+.double 5.4396777095e+103
+.double 5.17925185361e+280
+.double 4.56093975541e+228
+.double 4.47731648599e-38
+.double 3.72241008513e-125
+.double 8.34015297857e-97
+.double 1.20008728476e-238
+.double 5.36461629793e-229
+.double 2.63400575477e+157
+.double 8.61155529101e+41
+.double 8.10432055197e+54
+.double 2.73005407013e-63
+.double 7.90526013219e-206
+.double 2.83700326066e-42
+.double 4.77795755448e-237
+.double 1.0543861686e-235
+.double 5.01529152026e+141
+.double 7.78584035222e+170
+.double 7.18668968201e+71
+.double 5.70845099009e-56
+.double 4.84625082018e+33
+.double 40957803358.0
+.double 5.02324584155e-157
+.double 1.46784205357e-117
+.double 6.51276978432e+129
+.double 5.61114353182e+115
+.double 1.93865721907e+209
+.double 8.23119169825e+277
+.double 7.49588096423e+17
+.double 4.54630288251e-82
+.double 4.45474434301e+128
+.double 2.34396252506e+36
+.double 639405474.992
+.double 1.38782376727e+164
+.double 1.08417869495e+199
+.double 1.72759146444e+217
+.double 1.53393993293e-115
+.double 1.55599386353e+165
+.double 8.35063268018e-249
+.double 8.58322879385e+166
+.double 2.11498392594e+37
+.double 7.39927308799e-30
+.double 1.41850838733e+245
+.double 3.45896752586e-43
+.double 1.1482929203e-88
+.double 9.80514004796e+258
+.double 1.68665899462e-127
+.double 1.00654046452e-239
+.double 1.97770792326e-58
+.double 2.73492769433e-55
+.double 7.76219339134e-277
+.double 1.82417502004e-122
+.double 7.0201314391e-93
+.double 1.34064972437e+179
+.double 3.78822437997e-282
+.double 6.26609766117e-131
+.double 1.64980427181e+211
+.double 1.92694410821e-288
+.double 2.98101244901e+92
+.double 7.51578264741e-129
+.double 3.77586385062e-202
+.double 4.03674988354e+101
+.double 1.38470303803e-27
+.double 4.04145102672e-148
+.double 1.15920661269e+89
+.double 3.37168600123e+110
+.double 2.47160342225e-30
+.double 2.28325677836e+216
+.double 4.82865636058e+132
+.double 1.47816786023e+23
+.double 3.25791719982e+172
+.double 5.50406397936e-200
+.double 1.19223035938e-267
+.double 0.00313480520547
+.double 8.04970971722e-283
+.double 7.36681878321e-20
+.double 1.98867264325e+214
+.double 8.41269299032e+179
+.double 7.54816829984e+81
+.double 1.1638830695e-275
+.double 2.21839400784e-299
+.double 7.83216273767e+243
+.double 6.86202056459e-18
+.double 9.68037003127e-142
+.double 7.01309385412
+.double 6.97919691629e+25
+.double 3.33084539117e-158
+.double 6.82039752283e+141
+.double 3.364036876e+152
+.double 2.62916820463e+64
+.double 3.12161229276e-29
+.double 8.62766116867e+291
+.double 2.50134361186e+26
+.double 4.44414745006e+202
+.double 1.13278961536e-53
+.double 6.02567148314e-200
+.double 1.9743001317e-246
+.double 1.17268280904e+269
+.double 6.41169333908e+143
+.double 1.10436451663e-46
+.double 4.54064864748e+154
+.double 9.05119305484e-78
+.double 7.34063316574e+168
+.double 2.95033021821e+281
+.double 1.28782473164e-136
+.double 2.24893041187e+61
+.double 3.16142843632e-58
+.double 4.25664487837e-127
+.double 4.34274283492e+114
+.double 3.23012383374e+220
+.double 6.56021202998e-49
+.double 5.70345461387e-233
+.double 2.31855771125e+202
+.double 2.86989657866e+41
+.double 1.34007528875e+188
+.double 8.27092346444e-19
+.double 2.04409118534e-227
+.double 1.28145955641e-101
+.double 4.07976150809e-111
+.double 3.95765651459e-205
+.double 2.90197057111e+167
+.double 3.85051281254e+220
+.double 3.98376327789e+168
+.double 1.87232661257e-247
+.double 4.01207010794e+51
+.double 6.16382881066e-285
+.double 1.69847261386e+40
+.double 2.71095387443e-207
+.double 1.30950524316e-161
+.double 1.38161895576e+159
+.double 1.30215549158e+91
+.double 4.36871761859e+86
+.double 4.59159204509e-254
+.double 6.34004204906e+235
+.double 1.40522433644e-219
+.double 3.8443536669e+109
+.double 1.93011037993e+192
+.double 3.60983800081e+75
+.double 3.23849297399e-78
+.double 7.71700795772e-289
+.double 1.6377134608e-104
+.double 4.31012994737e-81
+.double 5.16793820808e-76
+.double 2.58421658983e-155
+.double 2.49283470142e+12
+.double 18353866273.8
+.double 5.2820215183e+219
+.double 1.73986023085e-105
+.double 1.94772666648e-76
+.double 1.03229625595e-26
+.double 2.20806459992e+99
+.double 8.11936773305e-266
+.double 2.3578892043e+118
+.double 2.89696698112e+242
+.double 1.95698002816e-240
+.double 1.82287515363e+291
+.double 8.1412490217e+191
+.double 1.90815684623e+240
+.double 4.33625203515e-182
+.double 7.96711363429e+202
+.double 7.23473386358e+124
+.double 4.72843467677e+207
+.double 1.22173121021e-59
+.double 1.13898723221e+110
+.double 1.12287787463e-176
+.double 1.64715890089e+117
+.double 3.38711154149e-292
+.double 1.5206419765e-286
+.double 1.32638296406e-249
+.double 6.33998507674e+301
+.double 1.14830082757e-151
+.double 6.68070981467e+207
+.double 9.43353443081e-83
+.double 1.68420729741e-277
+.double 7.20407627625e-230
+.double 484572.096595
+.double 2.1902289693e-235
+.double 3.25846571176e-271
+.double 8.15133758495e+114
+.double 3.81758169573e-307
+.double 1.87639541561e-209
+.double 1.4791735226e-233
+.double 1.34623557338e+205
+.double 1.00827726677e+149
+.double 6.16870096781e+168
+.double 1.58308043151e-20
+.double 7.15875374015e+165
+.double 9.89012266677e-211
+.double 2.98194485256e+54
+.double 4.68229449354e+252
+.double 8.05498563913e+181
+.double 7.55674180043e-233
+.double 5.19115473093e-96
+.double 5.03311300739e+234
+.double 1.59674015117e+167
+.double 1.51935963254e-178
+.double 6.95490537921e+38
+.double 4.71006320726e-186
+.double 2.90045957249e-261
+.double 8.34764720493e+186
+.double 4.2132384089e+56
+.double 7.85606213951e-281
+.double 1.19094858803e+60
+.double 1.85264164463e-32
+.double 4.39790377006e+62
+.double 1.32576490937e-196
+.double 2.68640130943e+119
+.double 9.44926166708e-30
+.double 1.10490976414e-32
+.double 2.90264965805e-36
+.double 1.219014029e+166
+.double 1.69319946938e-154
+.double 2.79607109844e-183
+.double 2.3388765632e+33
+.double 2.51396016405e-215
+.double 1.19998048209e+94
+.double 2.35952575057e-99
+.double 1.80582524387e+26
+.double 6.80557857402e-101
+.double 1.67145241529e-281
+.double 2.54041185983e-196
+.double 4.18769251731e+242
+.double 4.00831214251e-20
+.double 5.96936730429e-176
+.double 3.00806430441e+35
+.double 4.80052604126e-218
+.double 1.73801245699e-163
+.double 3.30307688472e-26
+.double 2.23712659233e+187
+.double 8.98926505319e-269
+.double 7.51125382149e-84
+.double 1.58853561461e+294
+.double 4.18904029122e+290
+.double 1.6350951722e-209
+.double 1.61742213703e+283
+.double 1.30967490651e+103
+.double 2.70389496685e+212
+.double 3.38296251313e-297
+.double 1.04190466116e+14
+.double 1.76457946206e+279
+.double 1.11673099517e-134
+.double 5.99322713781e+289
+.double 4.10582802831e-17
+.double 4.28560472427e-185
+.double 1.20601031915e+241
+.double 1.25865916093e+268
+.double 1.29728429579e-198
+.double 8.6277664219e+269
+.double 4.52556637056e+273
+.double 4.0953180074e+198
+.double 1.57491019656e+271
+.double 0.000177545243654
+.double 2.83509049663e-82
+.double 2.68971848288e-282
+.double 1.11988110259e-187
+.double 2.86943205908e-251
+.double 6.80772299894e+62
+.double 2.52517100196e+69
+.double 3.30100257196e-45
+.double 8.02432906552e+123
+.double 2.35463080747e-116
+.double 2.08060431056e-219
+.double 1.03927735481e+203
+.double 2.92403200471e-84
+.double 1.52632901393e-46
+.double 1.23738189658e-250
+.double 1.07223287489e-240
+.double 1.18106404726e-84
+.double 1.12364706618e-299
+.double 1.61601906047e+78
+.double 7.72710416349e-184
+.double 1.0148134907e-56
+.double 5.87713514974e+29
+.double 1.44954758699e+262
+.double 3.99804360189e+29
+.double 2.42427496666e+121
+.double 2.65933363003e+241
+.double 3.36697151731e-79
+.double 7.23216461729e-187
+.double 5.01333456811e-273
+.double 6.50203849337e-56
+.double 1.95188129308e-148
+.double 841013.521391
+.double 9.98414846299e+59
+.double 1.10441805188e+286
+.double 4.65426218575e-99
+.double 9.00449330438e+73
+.double 2.25953391618e+78
+.double 3.5477454434e+223
+.double 4.42548610886e-207
+.double 2.57888123528e-48
+.double 5.92028219956e+103
+.double 6.97982347887e+280
+.double 6.73483015328e-21
+.double 9.80889505587e-116
+.double 2.47450459693e-207
+.double 3.96723280695e+195
+.double 5.49125847056e-171
+.double 9.5152050023e-287
+.double 6.09166729707e-152
+.double 1.90719190304e+84
+.double 2.26162329445e+271
+.double 1.89147098658e+48
+.double 3.50542197089e-253
+.double 6.68678148256e-222
+.double 7.17241024219e+25
+.double 141142804807.0
+.double 2.41425608567e-139
+.double 5.19928842396e+192
+.double 2.39356864853e+216
+.double 1.72219986735e+131
+.double 3.02658461257e+246
+.double 1.32105848595e+31
+.double 9.19461675715e+128
+.double 7.70817939982e+20
+.double 5.98370108156e-242
+.double 1.06051794507e-95
+.double 3.43549852151e+262
+.double 4.22559651792e-204
+.double 3.70376726427e-94
+.double 1.71829710166e-110
+.double 1.27725654016e+197
+.double 5.67785683026e-131
+.double 8.19957806183e+196
+.double 9.05765129816e+57
+.double 1.41798474839e+166
+.double 1.6938685039e-184
+.double 3.85067828467e+36
+.double 0.202183272038
+.double 2.96478426417e-60
+.double 8.0234187877e+170
+.double 2.60097683311e+278
+.double 9.15514687594e-139
+.double 1.11225200344e-58
+.double 1.21662595012e-214
+.double 2.51275170651e+91
+.double 1.37684728559e-141
+.double 1.28060013536e+46
+.double 1.45721321435e-242
+.double 5.14768640197e+218
+.double 1.1474266115e-114
+.double 1.34347746281e+21
+.double 5.03171162235e-254
+.double 7.34517982388e+81
+.double 1.52332466595e-198
+.double 1.60493001077e-82
+.double 4.80342760427e-157
+.double 5.79119635414e+240
+.double 2.05094868919e+253
+.double 1.45801174265e-218
+.double 5.52510900359e-121
+.double 2.09499183034e+221
+.double 9.08189426458e-181
+.double 1.28308463559e-232
+.double 2.04688617027e+148
+.double 7.64732971294e+49
+.double 1.36145979011e-68
+.double 4.64573445596e-21
+.double 3.17033770487e-295
+.double 1.55747784952e+138
+.double 9.73403045021e+30
+.double 16259.2840884
+.double 1.07204099705e+24
+.double 2.7999299857e-212
+.double 2.93002719207e+22
+.double 5.76509634783e-154
+.double 1.6845802575e-93
+.double 3.83170607218e-53
+.double 5.79943193975e+189
+.double 2.96794684834e+285
+.double 1.74916232161e-13
+.double 1.13810652232e+282
+.double 3.27711660887e-218
+.double 1.66144135753e+243
+.double 7.77533761076e+288
+.double 1.86129553268e-96
+.double 1.97866716567e+109
+.double 3.00966610339e+122
+.double 8.68084018163e-172
+.double 2.44655739577e+59
+.double 3.48837206173e+271
+.double 2.92446771243e+186
+.double 1.14344221803e-257
+.double 3.79730907763e-76
+.double 8.8290273704e-271
+.double 1.75168740941e+192
+.double 6.11986425856e-259
+.double 1.62013271934e-132
+.double 1.493210426e-189
+.double 2.38123017151e-143
+.double 1.06404223477e-226
+.double 3.61746599493e-291
+.double 7.63188912307e-88
+.double 1.94239291793e-153
+.double 7.57326980074e+204
+.double 4.81749591818e-74
+.double 4.65403015608e+306
+.double 1.10135245143e+102
+.double 3.875440667e-280
+.double 2.58902436544e+113
+.double 4.64035837462e-92
+.double 2.72173625796e-70
+.double 1.28023480372e+155
+.double 1.36398338251e-146
+.double 7.96798941161e-308
+.double 2.17084838403e+156
+.double 2.0165194187e+79
+.double 4.82245457509e+156
+.double 1.66109032829e-259
+.double 1.44131128187e-295
+.double 1.47410659109e-149
+.double 4.39178721031e-142
+.double 3.86562252104e+161
+.double 7.34419574998e-15
+.double 1.4598000876e-15
+.double 8.24847181408e-50
+.double 5.89951619311e-96
+.double 8.16566279374e-05
+.double 9.02333823888e+183
+.double 2.3811526494e+191
+.double 6.53274881898e-279
+.double 4.75868325749e+233
+.double 1.99916468649e+163
+.double 8.3832662158e-291
+.double 2.37001458971e+33
+.double 7.27423764343e-259
+.double 1.71741100085e-164
+.double 2.78256124093e+180
+.double 8.33609723728e+62
+.double 7.43526895776e+198
+.double 3.46862749997e-118
+.double 8.12247729049e-184
+.double 1.07734984729e+206
+.double 2.18839919886e-45
+.double 7.68543089843e-136
+.double 2.25427570419e+38
+.double 2.34183180451e-243
+.double 1.11641617555e+290
+.double 3.66778153048e+174
+.double 5.27392075352e+89
+.double 9.4771149777e-122
+.double 2.13399576941e-33
+.double 2.55352917631e-101
+.double 8.14617736246e-293
+.double 4.31592940988e+271
+.double 1.13201579271e+143
+.double 2.93320279302e-146
+.double 2.03251938323e+51
+.double 6.62926929331e-101
+.double 3.59190403432e+30
+.double 5.18812560875e-202
+.double 6.04180279375e+112
+.double 7.11586105638e-90
+.double 2.90933139614e-97
+.double 1.51728666082e-243
+.double 9.105715848e-244
+.double 3.23644606867e-37
+.double 3.77289511618e-251
+.double 7.65272064757e+272
+.double 9.45227643396e+101
+.double 1.06641265302e+89
+.double 1.81166347652e-238
+.double 3.00947852061e-279
+.double 1.42883150707e+259
+.double 0.00490944714854
+.double 7.91569809193e+125
+.double 2.49802878995e+17
+.double 1.06519342814e+199
+.double 5.11352684396e+165
+.double 7.98536405521e-303
+.double 4.36215138933e+33
+.double 2.19643330677e+165
+.double 6.80333784664e+97
+.double 3.0520663456e+43
+.double 4.06525257681e+205
+.double 3.99658768201e-174
+.double 4.9279667004e-137
+.double 3.27000023395e+12
+.double 7.38338553175e+110
+.double 6.09551551935e-108
+.double 547291970.389
+.double 3.33034414578e+215
+.double 9.84722352853e+105
+.double 3.43365332609e-151
+.double 4.55626476957e+300
+.double 2.09938964254e-226
+.double 1.82464059592e-173
+.double 2.61612028354e-198
+.double 2.88796890152e-57
+.double 1.36952218834e-103
+.double 1.01334309856e+297
+.double 7.92041246949e-143
+.double 9.48278611929e-264
+.double 5.79379555211e-290
+.double 5.07377230292e-233
+.double 8.17030481529e+46
+.double 1.49328961233e-33
+.double 4.24446297145e-184
+.double 4.40189318055e+288
+.double 2.24711748012e+294
+.double 8.93143042848e-102
+.double 3.00885668478e-172
+.double 5.54092143224e+205
+.double 3.31218991485e+156
+.double 1.69905736986e-101
+.double 2.2924371104e+305
+.double 4.65573913365e-242
+.double 2.68332705631e-276
+.double 3.23533276694e+127
+.double 2.65339187267e-60
+.double 5.85526378741e-207
+.double 1.34695708113e+152
+.double 1.60063495955e+192
+.double 2.18250069366e-92
+.double 2.61670787079e-107
+.double 1.77410078191e+52
+.double 4.1320169156e+114
+.double 2.32683861469e-206
+.double 6.06527057546e+93
+.double 1.55911879266e-250
+.double 1.72565533279e-172
+.double 6.850815924e+296
+.double 127.598239396
+.double 3.08017257174e-11
+.double 1.82601164688e-163
+.double 2.1605436766e+194
+.double 63964113.7245
+.double 2.41983630227e+139
+.double 1.07960044865e-218
+.double 2.23172901124e+148
+.double 2.48555028806e+292
+.double 5.91827235522e-231
+.double 9366298.52332
+.double 9.60065546749e+36
+.double 1.50903076766e+183
+.double 1.98947384048e+259
+.double 6.77593484235e-151
+.double 2.4236736512e+214
+.double 1.04509016793e-22
+.double 5.73282109251e-116
+.double 1.99891402071e-201
+.double 1.67737326951e-233
+.double 4.92817017379e+39
+.double 4.69329338116e-171
+.double 2.44688151903e+145
+.double 8.29107487797e-127
+.double 9.67401518773e+127
+.double 6.09586235432e-71
+.double 1.4619048684e-248
+.double 9.33845831253e+293
+.double 3.31286914072e+167
+.double 2.22221398263e+120
+.double 3.66824465e-08
+.double 4.3493732106e-201
+.double 2.27314309431e-139
+.double 2.34736264272e+65
+.double 8.14503569347e+252
+.double 2.08908136943e-143
+.double 2.58470326203e+63
+.double 5.48410234676e+283
+.double 2.02895725408e+228
+.double 2.12895523949e+256
+.double 9.34587887895e-228
+.double 1.07102524117e-103
+.double 3.55089814369e-148
+.double 7.40798377064e+59
+.double 1.44588174036e+88
+.double 6.70553793205e+59
+.double 3.61049154107e+191
+.double 1.63538789523e-80
+.double 8.15986231424e-06
+.double 3.43786332116e-282
+.double 1.98282403928e-191
+.double 2.98244495215e+12
+.double 4.40114669805e+167
+.double 6.17903558074e-231
+.double 1.36189831056e-32
+.double 2.63209627514e+181
+.double 1.62076429246e-252
+.double 6.32810976608e+72
+.double 1.71923544854e-280
+.double 4.4373276838e-35
+.double 5.73783175785e+149
+.double 9.75979374095e+70
+.double 1.20098070992e-88
+.double 7.1437133306e-214
+.double 5.16854554215e+166
+.double 5.94951299148e+120
+.double 1.03573883366e+180
+.double 8.19734562327e-241
+.double 1.87262332645e-216
+.double 1.56992102008e-213
+.double 2.43033918783e-63
+.double 5.10331554201e+128
+.double 2.10723719227e-289
+.double 1.67770734185e+212
+.double 7.28898763885e-18
+.double 0.00797613662774
+.double 2.12739113293e+128
+.double 8.68027313655e+108
+.double 4.45234160703e+229
+.double 3.34540581284e+198
+.double 2.91678621466e-223
+.double 4.6667413073e-160
+.double 1.9277462937e+167
+.double 2.27546437083e-249
+.double 2.2869914961e-280
+.double 7.07296329874e-105
+.double 2.11837971706e+165
+.double 2.6176980466e+307
+.double 1.4728397318e+198
+.double 1.05460733061e-237
+.double 3.00054588849e-217
+.double 2.61752132163e+201
+.double 6.45339609617e+46
+.double 2.42300818865e-108
+.double 7.6940633113e-81
+.double 5.01119917023e-124
+.double 6.22116681341e+41
+.double 7.1731808649e+258
+.double 3.31288906521e+22
+.double 4.73953410552e-154
+.double 2.85002624244e+245
+.double 3.01084740848e-254
+.double 1.76504550956e+137
+.double 2.51814464609e-206
+.double 4.15478774151e+216
+.double 6.86707315402e+139
+.double 1.48114061619e-294
+.double 8.40812255194e-13
+.double 2.53150392345e-286
+.double 8.15592310998e+279
+.double 1.81958716811e+126
+.double 1.35869569079e+238
+.double 1031574821.21
+.double 8.64238540784e-11
+.double 5.14176658325e+248
+.double 1.66667161131e+229
+.double 1.08645243361e+241
+.double 1.76990174335e+208
+.double 8.60194189158e-279
+.double 6.21919492999e-54
+.double 8.90166859005e-148
+.double 8.27637127133e-90
+.double 1.14854080124e+296
+.double 5.41111087018e+207
+.double 5.75745711984e+160
+.double 3.57732833045e-171
+.double 2.32465590172e+289
+.double 8.26116227335e+207
+.double 3.76843391531e-133
+.double 8.44712352106e+288
+.double 5.89655052801e+171
+.double 7.26306214899e-86
+.double 1.16161909773e-167
+.double 3.97443089677e+31
+.double 3.45262754178e+148
+.double 3.77048141307e-279
+.double 6.79930490433e-246
+.double 2.03544604741e-239
+.double 7.42757086593e-103
+.double 3.5672112586e+295
+.double 5.53560691041e-262
+.double 2.61986783107e-78
+.double 6.60466036412e-140
+.double 7.36454674227e+14
+.double 7.08407134546e-274
+.double 2.33392292967e+155
+.double 2.97079426529e-209
+.double 883070.089243
+.double 3.20183082378e+108
+.double 3.23468035747e-117
+.double 4.44854019474e-32
+.double 3.74892593257e-51
+.double 2.4310591352e-161
+.double 1.13659551678e-225
+.double 8.69672619242e+57
+.double 4.47577541102e-234
+.double 1.08312141296e-86
+.double 5.16500189056e+204
+.double 2.08258557928e+47
+.double 7.94640981073e+205
+.double 3.26453468459e+81
+.double 1.59546751602e+208
+.double 3.77332874803e-239
+.double 1.49709984956e-50
+.double 2.03117548845e-131
+.double 9.25500950611e+25
+.double 1.18275980753e+84
+.double 1.45760885357e-67
+.double 2.79232187465e+284
+.double 2.30569018877e+20
+.double 2.56252958469e+149
+.double 9.13618341309e-21
+.double 4.09247977137e+173
+.double 2.30105443658e-28
+.double 2.550694789e+51
+.double 6.34399452967e+171
+.double 9.9937898122e+45
+.double 4.17353988939e+70
+.double 2.63532522014e+54
+.double 2.62025129989e+129
+.double 4.21986338889e+220
+.double 8.08634794288e+186
+.double 2.84657875521e-71
+.double 2.54874556325e+125
+.double 1.57342673343e-114
+.double 5.78193152457e+284
+.double 3.171476882e-198
+.double 3.03002139415e+106
+.double 3.88170756066e+134
+.double 5.52039103737e-114
+.double 3.13109313638e-269
+.double 1.29574400559e-194
+.double 3.66018222725e+113
+.double 3.18136301208e+168
+.double 1.14876879774e+107
+.double 3.81498389012e-24
+.double 4.91736463022e+274
+.double 7.59949279574e-222
+.double 3.93335182407e-112
+.double 3.61478903253e+167
+.double 4.06823083485e-110
+.double 2.96755552197e-252
+.double 3.87909391295e-268
+.double 6.502508414e+244
+.double 8.72547789867e+24
+.double 3.96904993345e-94
+.double 2.30430917539e+222
+.double 1.20025954564e-303
+.double 6.18822060205e+233
+.double 4.56332546768e+72
+.double 2.20868345485e+297
+.double 1.59874591661e-306
+.double 1.28880507812e+226
+.double 1.14421133745e+36
+.double 1.91672245887e+81
+.double 7.33459908549e+301
+.double 8.6466164739e-244
+.double 2.07369494747e-190
+.double 1.21937963467e+53
+.double 4.79980453079e-21
+.double 3.42154673736e+91
+.double 9.13746477164e+198
+.double 1.14674987407e+49
+.double 9.10974983125e+244
+.double 4.43350958945e+159
+.double 1.19402346314e-97
+.double 6.23124387348e-122
+.double 1.60938663219e-238
+.double 1.24467312574e-115
+.double 0.00358484694734
+.double 4.57123653657e+270
+.double 1.55925960824e-263
+.double 2.97507454557e-104
+.double 1.91540613339e+177
+.double 3.62904162058e-66
+.double 9.13587492877e+39
+.double 4.530380805e-64
+.double 5.23402354375e+261
+.double 8.84482440307e-212
+.double 3.10706741649e+98
+.double 4.20580255786e+216
+.double 1.36112733398e+107
+.double 1.34010678147e+251
+.double 92302323.3194
+.double 4.2015941931e-191
+.double 1.92412442302e+31
+.double 3.19832541239e-307
+.double 2.12531592105e+95
+.double 5.46355703743e-204
+.double 1.93518594915e-284
+.double 7.11762055756e-119
+.double 6.7252752675e-192
+.double 3.42931361711e+183
+.double 7.51828687045e-241
+.double 6.28431571528e-50
+.double 2.82519083527e-165
+.double 1.96647700849e+294
+.double 7.10610889511e+119
+.double 2.53904151672e-12
+.double 2.32444929974e+182
+.double 1.16204967233e-302
+.double 1.36745963603e-195
+.double 475228.03358
+.double 9.17269235193e+19
+.double 5.6950158051e-219
+.double 1.26613477488e-211
+.double 7.74292048407e-212
+.double 1.07342548997e+110
+.double 4.95903887665e-56
+.double 1.63906269812e+140
+.double 1.08436208327e+235
+.double 3.77347518953e-56
+.double 2.16355507055e-121
+.double 2.44366121721e+39
+.double 8.39817251522e+194
+.double 6.22503626447e-47
+.double 2.01020890874e-160
+.double 7.95705918567e-294
+.double 1.60090418336e+29
+.double 1.11046026521e-240
+.double 4.56101715406e-11
+.double 8.20989162323e-183
+.double 1.00821438189e+257
+.double 1.15467081451e-71
+.double 6.61070206838e+159
+.double 4.0343057229e-146
+.double 1.10811566569e+27
+.double 8.1095616936e-162
+.double 4.90629259274e+99
+.double 3.14396340183e+246
+.double 3.81024870284e-148
+.double 4.75947628275e+243
+.double 5.13866905459e-214
+.double 3.85308992152e+91
+.double 4.71098940238e-178
+.double 0.00171359638561
+.double 2.79192036579e-267
+.double 6207555852.4
+.double 2.10636297721e-299
+.double 5.732617226e-82
+.double 2.67601839977e-35
+.double 4.94959254379e+154
+.double 2.58209804425e-38
+.double 1.11711888066e-110
+.double 2.06755332791e+105
+.double 1.54995026407e+84
+.double 4.66683377475e+97
+.double 1.63696446071e+195
+.double 4.15186789807e-114
+.double 2.3653215397e+304
+.double 1.60566104647e+38
+.double 4.49174885713e+246
+.double 3.99303246918e-132
+.double 1.18905503979e+179
+.double 9.46132106324e-147
+.double 3.49410938075e+153
+.double 4.61431029268e+168
+.double 2.59440503516e-166
+.double 1.21422120988e-169
+.double 2.74657048257e+231
+.double 9.72535970041e-240
+.double 1.07496662723e+73
+.double 2.02137086434e-75
+.double 4.50525852349e+33
+.double 8.45657788926e+28
+.double 1.53701679999e-188
+.double 3.00656717557e-177
+.double 1.62986584517e-161
+.double 1.08413807171e+209
+.double 3.98898142494e+104
+.double 1.29694694515e-207
+.double 2.62696254918e-270
+.double 2.52783869698e-157
+.double 9.92003132112e-310
+.double 7.4987810894e-240
+.double 2.36315015393e-105
+.double 5.81107124784e-139
+.double 3.88574859589e-193
+.double 1.58828865535e+291
+.double 2.26971881601e+249
+.double 7.17546538087e+245
+.double 5.10568696851e-39
+.double 7.244469264e-257
+.double 1.61367268411e+128
+.double 2.48119648136e+75
+.double 1.21091508184e-168
+.double 6.89043556949e-71
+.double 7.72476591553e+302
+.double 1.02900319443e+29
+.double 1.59526369739e+154
+.double 9.09139391819e-176
+.double 1.60927861405e-185
+.double 1.94445044179e+217
+.double 7.33500595221e-68
+.double 1.3489365343e-65
+.double 1.86484002005e+28
+.double 2.478538083e-259
+.double 3.1609649012e-207
+.double 3.35531946884e+266
+.double 5.85186472798e-236
+.double 8.21669195563e-301
+.double 1.17389158503e+220
+.double 7.21685999136e-142
+.double 3.64575252027e-139
+.double 1.59203042603e+222
+.double 8.19969537389e-91
+.double 3.2643150328e-165
+.double 1.80268748474e-277
+.double 3.95265680904e+227
+.double 1.05654596284e-295
+.double 1.53207801806e+283
+.double 1.22176849128e-189
+.double 2.57338791407e-250
+.double 9.14022248172e+225
+.double 1.76433332716e-301
+.double 8.31240534637e+144
+.double 9.9275836455e+145
+.double 2.82329758619e-258
+.double 1.3718809131e+107
+.double 7.42115044414e+79
+.double 1.37665256646e-176
+.double 3.80925769993e+149
+.double 2.17759049523e-59
+.double 5.18582521339e-58
+.double 2.21126274375e+89
+.double 3.35203241816e+183
+.double 6.64421202691e-211
+.double 2.29362915363e-100
+.double 2.31323397319e-156
+.double 3.46403504145e+212
+.double 3.39178279449e-161
+.double 1.05759233436e-207
+.double 2.53857472237e-163
+.double 9.07766348994e-18
+.double 35736307.5721
+.double 2.27902885229e-171
+.double 9.82141015611e+300
+.double 1.52499586171e-276
+.double 9.00925985227e-186
+.double 3.29101222353e+292
+.double 2.89522690622e-187
+.double 5.83769910232e-21
+.double 7.74516756327e-154
+.double 1.18414252645e+267
+.double 7.07317448114e-238
+.double 4.21266691332e-188
+.double 1.74557387901e-260
+.double 5108.60888937
+.double 0.000104440819411
+.double 2.34570049406e-251
+.double 1.51992444846e+212
+.double 7.08274216657e-243
+.double 4.05158996536e+178
+.double 7.98822007968e+185
+.double 2.62894075849e-170
+.double 1.01553436203e-19
+.double 2.66839856912e+61
+.double 2.75833235204e+29
+.double 4.44242748169e+222
+.double 8.25748941546e+106
+.double 1.28493885565e+220
+.double 1.20277462746e-276
+.double 4.22669817212e+19
+.double 1.06069409902e+34
+.double 1.08782737785e+161
+.double 9.70881201761e-111
+.double 23038.3076367
+.double 1.12956808258e+300
+.double 9.22389553517e-11
+.double 7.35553388736e-37
+.double 1.95517601873e-197
+.double 9.97326760299e+107
+.double 2.60122058691e+225
+.double 2.06266440251e-291
+.double 4.63558439967e-70
+.double 8.29873312026e+248
+.double 3.40681219275e+37
+.double 4.28109601757e-271
+.double 2.73955031389e-22
+.double 2.28553743227e+49
+.double 1.07452553665e+40
+.double 3.01708385811e-14
+.double 7.0940049372e+69
+.double 3.92451870439e-303
+.double 1.38709229813e-41
+.double 7.60436176246e+225
+.double 4.29239881927e-71
+.double 4.34833402603e-05
+.double 1.44767165536e+21
+.double 7.77805654115e-175
+.double 1.03905576811e+103
+.double 1.28325602639e+287
+.double 1.24876932879e-127
+.double 1.82538059558e+172
+.double 1.7864989169e+97
+.double 2.29241469622e-104
+.double 2.21633060131e+151
+.double 9.59583861364e+171
+.double 4.27973831592e-165
+.double 1.48200184969e+273
+.double 7.15996605474e+89
+.double 6.79806895901e+215
+.double 3.307716637e+89
+.double 1.24826151369e+138
+.double 3.74418726767e-91
+.double 6.57725013208e-164
+.double 3.85442862322e-156
+.double 2.08904974897e-275
+.double 1.33178251642e-34
+.double 1.74543691319e+29
+.double 3.49983462863e-31
+.double 1.65953161262e+178
+.double 1.44202385561e+140
+.double 4.90536751305e-132
+.double 1.85090377546e-284
+.double 4.15206782952e+294
+.double 6.15824939518e-248
+.double 3.71597923582e-24
+.double 4.31932814001e-70
+.double 5.37876330192e-24
+.double 3.92079598889e-13
+.double 4.15394972429e-176
+.double 2.41776014302e-86
+.double 1.06984193841e-249
+.double 8.63864520788e-215
+.double 6.01427337779e+193
+.double 9.2532635439e+293
+.double 4748.87889398
+.double 1.00980348452e-86
+.double 7.35452894818e+269
+.double 2.4580610925e+68
+.double 0.00626599074584
+.double 1.41179705513e-12
+.double 1.39032911468e-202
+.double 3.4048448812e+73
+.double 1.68594694048e+41
+.double 3.5510158346e+99
+.double 2.2836363928e+25
+.double 5.54242196681e-129
+.double 5.14807338983e+177
+.double 4.2185480577e-108
+.double 8.54509328624e+47
+.double 1.49666585326e+131
+.double 3.24810493387e+34
+.double 3.53786522657e-42
+.double 1.28976294666e+17
+.double 3.02279978563e-83
+.double 1.46481286559e+220
+.double 1.67706730306e-249
+.double 4.94680464809e+266
+.double 9.9244240297e-252
+.double 1.08272897431e-214
+.double 1.78990183046e+280
+.double 1.04749026883e-290
+.double 1.54285512184e-240
+.double 7.65823627996e-88
+.double 1.01017063657e-162
+.double 1.00766380048e+35
+.double 0.00613717186221
+.double 2.02771897869e-111
+.double 1.46510135993e-23
+.double 5.32371575732e-196
+.double 8.14004706507e-189
+.double 1.35365998598e+296
+.double 2.25245203889e-98
+.double 7.17981519506e+109
+.double 1.64929256312e+14
+.double 5.78175617488e+105
+.double 3.53877868128e+213
+.double 2.96992536991e-204
+.double 3.55415842506e+121
+.double 6.00284248719e+54
+.double 6.11901741444e+35
+.double 1.18152285307e-22
+.double 8.82464546849e-148
+.double 3.66170582988e+62
+.double 3.31533501824e-167
+.double 5.3563527287e+266
+.double 1.39713645003e+148
+.double 3.68792103668e+238
+.double 3.68160390649e+227
+.double 4.06952147901e-102
+.double 5.51658923676e-193
+.double 5.35713938275e-258
+.double 1.05465864769e-46
+.double 4.13765697122e+158
+.double 7.17314633659e+233
+.double 5.21576852209e-10
+.double 2.80167590773e+288
+.double 6.74121709209e+70
+.double 4.20312964592e+12
+.double 2.04147099063e-85
+.double 1.17363769875e+195
+.double 2.93384850135e+306
+.double 6.91096558179e+190
+.double 2.83170730729e-15
+.double 2.70512795589e+104
+.double 2.22691714555e+37
+.double 3.29736101305e+137
+.double 2.99182872971e+57
+.double 1.24338827718e+152
+.double 5.64686248646e+130
+.double 8.93399695789e+71
+.double 8.91305574363e-36
+.double 6.745454939e+44
+.double 1.18952860076e-45
+.double 4.08412434512e+302
+.double 3.85606731432e+48
+.double 8.99664711073e+120
+.double 2.17046453589e-172
+.double 2.85596470225e-137
+.double 4.8246810054e-122
+.double 1.66156487764e+66
+.double 5.93331612862e+74
+.double 1.03070241399e-44
+.double 1.03869531901e-66
+.double 2.08756942096e-265
+.double 1.91276587131e+93
+.double 1.30493605519e-278
+.double 3.6274994033e-284
+.double 1.24629773611e-164
+.double 3.68116167214e-171
+.double 6.41926692357e+292
+.double 1.14998248288e+42
+.double 5.21528018748e-308
+.double 1.35633070072e-99
+.double 2.42101171898e-08
+.double 1514118666.27
+.double 3.21493304227e+91
+.double 5.86338908403e+133
+.double 9.11260081194e+84
+.double 1.17331121806e-23
+.double 4.37845668326e-218
+.double 4.67423766599e+178
+.double 1.69620201182e+136
+.double 2.25227765975e+201
+.double 1.22121300522e+117
+.double 1.86454880962e+303
+.double 4.4212344444e+44
+.double 2.99971378539e-166
+.double 1.95638735389e+261
+.double 3.32769933486e-289
+.double 7.94283528246e-41
+.double 674289238.873
+.double 1.52188278541e-82
+.double 9.97943006489e-87
+.double 9.36717894282e+197
+.double 2.25167514138e+282
+.double 1.03140298075e+304
+.double 8.19759748003e-137
+.double 5.57991336023e-151
+.double 4.42538570172e+77
+.double 3.10823535461e-205
+.double 9.24067391376e+268
+.double 7.63517915772e+193
+.double 1.2649414433e+166
+.double 1.89977016288e-91
+.double 1.33606112405e+167
+.double 8.3390626419e-140
+.double 2.61419690748e-101
+.double 1.71893362711e-33
+.double 4.59116212098e-131
+.double 6.92684920994e-149
+.double 5.12818805286e-34
+.double 2.70619559658e+51
+.double 8.25229363979e-32
+.double 1.86947101651e-156
+.double 3.79523248067e-26
+.double 3.720927357e+98
+.double 1.80962488168e+303
+.double 3.67015605713e+244
+.double 3.84274874426e-175
+.double 5.8364593635e-76
+.double 3.22251742838e+105
+.double 1.24753043424e+235
+.double 5.81751899793e+127
+.double 7.13705068081e+180
+.double 1.26220100346e-25
+.double 5.44485698241e+109
+.double 8.03339298976e-27
+.double 1.307802117e-223
+.double 1.76813570332e+141
+.double 4.29689834197e-168
+.double 7.98263265289e+209
+.double 2.97406612599e-39
+.double 2.21120080157e-78
+.double 6.8054391776e+114
+.double 1.02112968162e+38
+.double 1.1751013156e+249
+.double 1.12854613624e-251
+.double 2.59994191901e+30
+.double 1.28538029473e-27
+.double 2.54660541595e+67
+.double 3.57812694156e-75
+.double 9.28252311117e-15
+.double 3.13497320064e-57
+.double 4.25079447275e+295
+.double 6.1870151095e+125
+.double 4.22721224437e+80
+.double 3.69490216433e-264
+.double 6.24052132144e-145
+.double 6.82386233997e+96
+.double 5.54627875622e-127
+.double 1.26926059727e+299
+.double 2.09996648088e-111
+.double 1.66897080916e+132
+.double 4.054577991e+298
+.double 625.028748076
+.double 3.96172878296e+124
+.double 9.83519898072e-138
+.double 6.40150488476e+34
+.double 6.62550487766e+242
+.double 3.63321166126e-118
+.double 1.07374595336e+303
+.double 1.84785884108e+110
+.double 1.89954722693e+53
+.double 8.69213477977e-114
+.double 1.79991545476e+276
+.double 1.86637852092e+174
+.double 9.09066653088e-32
+.double 1.70677056175e-213
+.double 1.27450401869e-127
+.double 3.70760032328e+278
+.double 8.30650780279e+164
+.double 4.10009373011e-210
+.double 9.65536937337e-89
+.double 1.21080954297e+84
+.double 2.62784957957e-43
+.double 8.0255696267e-07
+.double 4.33730348635e+162
+.double 5.00327346472e-34
+.double 1.30745769219e+153
+.double 8.00913560434e-41
+.double 1.21515107216e-246
+.double 1.09911071185e+51
+.double 22541.5422809
+.double 1.64815769819e-266
+.double 3.65788520113e-171
+.double 5.25221558418e-19
+.double 1.42481964982e+173
+.double 44884509.9263
+.double 1.9940049553e-45
+.double 3.39040116207e-208
+.double 1.69700306664e+303
+.double 2.91818460481e+62
+.double 8.93934469281e+248
+.double 2.41711741451e-57
+.double 1.63178834698e+193
+.double 1.19682568467e-274
+.double 6.95081775412e-274
+.double 1.22096448117e-51
+.double 2.74465886892e-117
+.double 4.60740812902e+227
+.double 1.14956161164e+160
+.double 1400574326.44
+.double 5.99565409599e+41
+.double 1.03071545997e+157
+.double 2.58962573173e-47
+.double 1.4343751514e-263
+.double 6.47013399939e+197
+.double 2.79040641621e+122
+.double 1.33051332404e-272
+.double 1.60737959239e+280
+.double 1.30240646148e-177
+.double 8.78647748838e-67
+.double 1.11064171132e+101
+.double 1.39543031565e-133
+.double 3.10384184122e-282
+.double 3.14794354248e+33
+.double 8.52737653798e-67
+.double 1.84373604978e-114
+.double 8.54085198459e-96
+.double 3.81122309576e+23
+.double 1.33689439225e+98
+.double 4.70926113408e+277
+.double 4.08423980689e-200
+.double 5.22919012714e-38
+.double 1.73536167427e+236
+.double 2.52648170224e-234
+.double 1.10994305935e+185
+.double 1.29015026164e+238
+.double 1.36438122474e-27
+.double 2.18906773202e-118
+.double 5.31363778149e-42
+.double 4.00628769539e+241
+.double 8.36240482272e+297
+.double 1.24320260031e-198
+.double 7.95224057819e+195
+.double 6.19131409014e-305
+.double 1.8489934324e-63
+.double 2.55854586092e+295
+.double 0.00219322363005
+.double 3.78277487419e-305
+.double 1.5317166899e-238
+.double 4.77393924001e-157
+.double 5.79544169652e-134
+.double 2.78602057928e-59
+.double 2.59996748187e+275
+.double 8.5369407564e-284
+.double 2.65861768666e-253
+.double 1.38056075447e-33
+.double 3.69882832955e-189
+.double 7.38199780172e-230
+.double 6.00751792848e-148
+.double 7.76498841192e+78
+.double 1.85971760549e+87
+.double 4.95230467617e+268
+.double 2.64128173472e+159
+.double 1.41294585253e-221
+.double 4.02136848543e-31
+.double 3.41248333298e-109
+.double 6482734.15189
+.double 4.13602566451e-150
+.double 6.83125872262e+192
+.double 4.48757545481e-232
+.double 2.66284904758e-279
+.double 3.17783818518e+151
+.double 5.47699974211e-194
+.double 9.80571642686e+138
+.double 1.31330503044e+124
+.double 5.42246925979e-40
+.double 2.85010838048e+104
+.double 2.18693917968e+245
+.double 2.24180795977e-216
+.double 8.89296384435e-11
+.double 2.580866715e+282
+.double 1.78704510517e-247
+.double 1.87440951041e-168
+.double 3.62702908793e+199
+.double 1.1030792125e-208
+.double 2.01107500945e-125
+.double 4.71076448534e+35
+.double 1.08888220173e-66
+.double 9.53968839529e-47
+.double 3.85812858014e-198
+.double 6.17039925506e-128
+.double 1.12354181385e+58
+.double 1388.68690163
+.double 1.54730984553e-239
+.double 1.35070607524e-269
+.double 2.27702390423e+219
+.double 2.42291851911e-245
+.double 1.59219804611e+124
+.double 2.76235457672e-243
+.double 6.11176021273e+75
+.double 5.36880224404e-106
+.double 5.39688120591e+66
+.double 2.21360318977e+29
+.double 2.45572679813e-23
+.double 6.38977278716e-190
+.double 7.24302286703e-221
+.double 1.60818087312e-226
+.double 1.66160369425e+289
+.double 7.59234361262e-74
+.double 1.40857921795e-282
+.double 5.64056522271e-60
+.double 1.15635514423e+302
+.double 3.30610110618e-105
+.double 2.39540452029e-204
+.double 4.03740690179e+101
+.double 2.13765125176e-93
+.double 4.00346905994e+157
+.double 3.84453659167e-85
+.double 2.87425985225e+142
+.double 7.85687457898e-281
+.double 9.1927275571e+189
+.double 1.04628328665e-59
+.double 5.92388303218e+95
+.double 8580248611.49
+.double 5.24197320365e-238
+.double 2.95317420062e+26
+.double 2.64917884722e-86
+.double 8.12658241584e+92
+.double 1.09245309585e+202
+.double 1.70811473856e-91
+.double 1.67077748703e+96
+.double 1.6224501406e+145
+.double 4.24454323017e+100
+.double 3.89754260619e+213
+.double 1.08230493503e-117
+.double 2.06516726051e-276
+.double 1.58427025769e+300
+.double 1.95769795843e+81
+.double 1.63780377557e+35
+.double 1.72520332201e-217
+.double 7.61162561728e+110
+.double 6.49480038143e-11
+.double 2.00931310158e+52
+.double 480.247339083
+.double 3.42081450884e+122
+.double 1.28212371626e+214
+.double 2.99058862459e+189
+.double 2.4029461865e+260
+.double 1.89580210432e-41
+.double 1.89033250571e+205
+.double 4.6490105879e-93
+.double 2.14030143542e+274
+.double 1.56412726431e-143
+.double 3.74112751763e+83
+.double 5.85394754589e-207
+.double 4.95708970202e+71
+.double 1.87204505778e-173
+.double 5.21775300459e+173
+.double 1.12464504218e-50
+.double 3.53715830332e+121
+.double 4.43665972101e-23
+.double 8.1420679469e-252
+.double 1.89191599145e-151
+.double 1.23359359441e+99
+.double 5.49005647272e-10
+.double 5.20451686764e-233
+.double 1.95165010613e+273
+.double 1.53078393237e-281
+.double 5.67573121891e+253
+.double 4.0738851067e+58
+.double 1.18787753786e-237
+.double 8.97630646961e-117
+.double 7.31786146506e+196
+.double 3.80323877261e+221
+.double 2.39803322288e-247
+.double 5.38790768974e+32
+.double 2.36416860451e-255
+.double 9.10529193804e-308
+.double 8.37463501107e-296
+.double 1.77134654275e-49
+.double 2.0665982911e-129
+.double 5.62344913833e+82
+.double 1.03429541572e+110
+.double 2.31814406878e+265
+.double 1.67000208312e+72
+.double 3.55982796048e+249
+.double 1.53330507666e+42
+.double 2.62687282137e-197
+.double 2.49062691828e+179
+.double 6.25669132571e+158
+.double 3.35601638359e+36
+.double 1.50386418756e+63
+.double 5.12170291382e-294
+.double 1.49700433875e+216
+.double 6.55161508618e+85
+.double 9.98296045776e+157
+.double 9.48366472533e-153
+.double 7.26385128503e+211
+.double 7.98529852509e-57
+.double 3.73016135908e-278
+.double 3.01468499506e+244
+.double 2.23003542277e-274
+.double 2.25282802562e-280
+.double 6.88448948902e+195
+.double 9.28763210474e-282
+.double 2.57125857362e-51
+.double 9.74036457142e-52
+.double 7.42921865172e-258
+.double 8.93847701985e-13
+.double 5.40292232488e-138
+.double 4.73582978148e-299
+.double 3.43071296021e-175
+.double 1.14250282372e-195
+.double 1.14543320616e+128
+.double 1.16740866783e-168
+.double 1.06719887093e+83
+.double 6.87467085769e+164
+.double 3.44753624881e+252
+.double 1.65965284838e+113
+.double 7.58319733626e+156
+.double 9.65485710164e-166
+.double 7.29168872748e-304
+.double 1.36170761373e+44
+.double 7.41522621356e-90
+.double 6.02008161481e+216
+.double 5.73640509322e+254
+.double 1.08150369466e-256
+.double 6.8212847887e-305
+.double 7.33449881755e-203
+.double 3.45041758642e+109
+.double 1.83689575178e-241
+.double 2.48972929287e+110
+.double 4.49670254325e-144
+.double 1.99460604037e+158
+.double 6.60433563307e+69
+.double 1.92993803618e+98
+.double 6.49764922845e+136
+.double 5.78430175983e+51
+.double 1.61698871753e-184
+.double 2.74525052494e-25
+.double 8.91590116672e+281
+.double 7.78224626828e+242
+.double 1.51143095683e-194
+.double 2.64133213465e-176
+.double 3.91176924327e+205
+.double 2.21571519092e-223
+.double 6.77363199095e+27
+.double 7.09919672532e-208
+.double 3.45287011934e-24
+.double 2.29680008063e-51
+.double 6.94892261976e-248
+.double 1.28462299862e-64
+.double 7.72615530642e-17
+.double 4.81045606916e-14
+.double 1.03645845952e-271
+.double 5.07196772333e-161
+.double 2.33022559889e-250
+.double 1.43279942384e-37
+.double 5.47437088361e+204
+.double 8.15095692898e+183
+.double 1.11223839039e-156
+.double 2.91554214933e-112
+.double 4.922159795e+269
+.double 2.75809609187e-46
+.double 2.69484655517e+228
+.double 3.70001612285e+279
+.double 1.51545033695e+257
+.double 5.10432208562e-74
+.double 7.53804735835e-143
+.double 7.75832120543e-169
+.double 8.48070633139e+245
+.double 234802432.674
+.double 1.83726510349e-249
+.double 0.0001854561896
+.double 2.12969869385e+63
+.double 1.37183498069e+110
+.double 5.74187381649e+301
+.double 8.50581951749e-288
+.double 2.42804462476e+29
+.double 5.12495195692e+180
+.double 2.54655955476e+123
+.double 4.64802542009e-138
+.double 3.50752610527e-34
+.double 3.74454842223e+104
+.double 1.8410245839e+219
+.double 3.07073123196e-86
+.double 7.6373604111e+81
+.double 4.28697995879e+245
+.double 1.89794961204e+206
+.double 1.68597363308e+272
+.double 1.36936740973e+293
+.double 2.45501277608e+111
+.double 8.69010674515e+24
+.double 9.91524840843e-61
+.double 6.86556794175e-12
+.double 1.41461741849e+280
+.double 9.5897063667e+122
+.double 0.967392033688
+.double 8.15909284893e+139
+.double 7661178146.1
+.double 0.0297596417128
+.double 6.85430509345e-184
+.double 9.83826777311e-305
+.double 1.78763723938e+68
+.double 9.25866678615e-139
+.double 1.75700225329e-212
+.double 4.60762364442e+194
+.double 6.86915789646e-264
+.double 1.40340751265e-142
+.double 5.92816307809e-256
+.double 8.61761534041e+54
+.double 2.80644473538e-95
+.double 3.5820712116e+100
+.double 6.01887791408e-306
+.double 2.49745290297e-90
+.double 3.94396830871e-308
+.double 2.92521901536e+272
+.double 3.87825643396e-50
+.double 1.35282196259e-145
+.double 3.81535528053e+258
+.double 2.28856479942e+149
+.double 2.54991631331e-255
+.double 1.38739503609e-193
+.double 4.8215249102e-192
+.double 2.26422197323e-293
+.double 3.34369679386e-103
+.double 7.62656201002e+229
+.double 3.66983683677e-286
+.double 1.78169327358e-217
+.double 4.60612195234e-149
+.double 3.02836706721e+134
+.double 8.2298507275e-140
+.double 2.27791356655e-60
+.double 4.63574770972e-215
+.double 4.82378568058e+137
+.double 2.65705890663e+122
+.double 1.13597712208e+96
+.double 2.10957765126e-168
+.double 4.24205664549e-99
+.double 3.08115112694e-93
+.double 9.96752679734e+19
+.double 8.11978923827e-180
+.double 5.07221244125e+105
+.double 2.97413194578e-30
+.double 1.20447378442e+293
+.double 1.33618026863e-247
+.double 1.06556907913e-279
+.double 1.99171732622e-136
+.double 3.89915763521e+304
+.double 1.19654813231e-84
+.double 3.51849544639e-196
+.double 1.8780926204e-159
+.double 1.4288853234e+38
+.double 1.87471548528e+218
+.double 2.80388732989e+88
+.double 1.02372269699e+44
+.double 7.449960322e-261
+.double 6.70541852557e-199
+.double 9.07230587921e+132
+.double 4.68226874817e-185
+.double 7.74906918298e+117
+.double 4.90268899189e+173
+.double 7.92125065985e+236
+.double 8.44108370458e+30
+.double 1.02415666216e+305
+.double 3.69589852158e-52
+.double 3.76138133775e-202
+.double 1.15695056347e+194
+.double 6.56445118985e-216
+.double 3.19171059725e+119
+.double 8.90157532616e+266
+.double 2.05260150746e-280
+.double 6.31366696861e-139
+.double 9.95481874105e+305
+.double 5.70345421357e+41
+.double 1.21198536331e+174
+.double 3.23235026811e+154
+.double 1.22453453087e-107
+.double 6.7600977983e+105
+.double 5.43533330671e+287
+.double 2.38876547578e-92
+.double 1.62758433322e+170
+.double 3.98988249289e-65
+.double 7.56431577058e+34
+.double 1.57503939753e-171
+.double 1.36743876115e+56
+.double 4.62223342476e+233
+.double 8.78853557619e+278
+.double 7.59699726379e-171
+.double 3.67094111616e+114
+.double 4.87906504197e-179
+.double 5.30919894588e-230
+.double 7.31320647926e-230
+.double 4.55704127829e+250
+.double 1.28208647662e-181
+.double 1.57061904376e-228
+.double 6.16598904011e+300
+.double 2.73721030546e+292
+.double 2.68686753697e+104
+.double 3.64571868545e+235
+.double 2.536604893e-128
+.double 9.05562731397e-247
+.double 1.61255235398e-269
+.double 4.28135714761e+228
+.double 3.17843379575e-157
+.double 7.04561960756e+238
+.double 1.92915085344e-63
+.double 2.32042530707e-190
+.double 5.09909197052e+47
+.double 9.32172992514e+67
+.double 6.81388668351e+163
+.double 2.46463077464e+89
+.double 6.62267242098e+221
+.double 8.41955593073e-166
+.double 9.37682514309e-38
+.double 1.87819877047e-205
+.double 5.16502472795e-75
+.double 2.37853244497e+70
+.double 5.55912569518e+216
+.double 1.92867207202e-86
+.double 3.76180965397e-184
+.double 7.3233747468e+119
+.double 9.3164436078e-33
+.double 1.22484135224e-158
+.double 1.01639843591e+129
+.double 8.50365106977e+171
+.double 4.24148940829e+18
+.double 9.66574185203e-56
+.double 6.04939930943e-66
+.double 6.4251429095e+262
+.double 5.36650547654e+13
+.double 1.72811364339e-186
+.double 9.75436753175e-18
+.double 2.15685196513e+138
+.double 9.09988904355e+132
+.double 3.43532790836e-127
+.double 6.55407056864e-209
+.double 5.43873445917e+212
+.double 8.36218058808e-283
+.double 3.87774325643e-244
+.double 1.80664615148e+155
+.double 1.26876110253e-69
+.double 4.47930480468e-138
+.double 5.71165352816e+296
+.double 3.36694975039e-49
+.double 4.13335641272e+158
+.double 4.05810096873e-115
+.double 4.19607686267e-82
+.double 1.28061185067e+283
+.double 5.43995263473e+175
+.double 4.66608180478e-116
+.double 5.77162819468e-173
+.double 1.11119531495e+283
+.double 9.78539464249e-269
+.double 1.44566190827e+37
+.double 1.03783367389e+30
+.double 1.33086843448e+146
+.double 2.0525271461e-05
+.double 5.2404758194e-284
+.double 1.88025162003e+205
+.double 7.32105542374e+47
+.double 2.45430889092e-280
+.double 1.09514691129e+210
+.double 408.82416027
+.double 1.259979626e-36
+.double 9.60370371618e-281
+.double 1.31696131373e+36
+.double 3.84242071509e+260
+.double 7.39600317514e+296
+.double 5.07390043334e+286
+.double 7.93624475039e+172
+.double 2.70408857785e+210
+.double 1.80105897037e-37
+.double 1.95939267677e+35
+.double 1.25548260704e-209
+.double 5.31036633437e-195
+.double 8.62736255917e+278
+.double 1.60097490928e-183
+.double 4.15051754478e-104
+.double 3.09400529766e-192
+.double 3.20031128358e-276
+.double 1.23032360862e+30
+.double 2.75079888069e-216
+.double 7.50112639783e+22
+.double 4.34073907616e-46
+.double 1.44387880065e+294
+.double 1.23345366903e+113
+.double 2.76508677506e+95
+.double 1.05915828553e-20
+.double 1.03276354603e-97
+.double 2.08116185653e+247
+.double 5.03673933657e-192
+.double 3.39132674943e-188
+.double 3.94662728099e-25
+.double 8.42464851589e-51
+.double 7.22561917183e-158
+.double 5.11798940407e-285
+.double 1.51253323016e-195
+.double 1.94914506974e-69
+.double 2.66862491361e-153
+.double 1.30777792655e-167
+.double 1.62086857102e-104
+.double 4.4183698076e+246
+.double 8.47059040033e+18
+.double 3.09655865142e+275
+.double 2.81115624301e+69
+.double 3.64885102064e-121
+.double 2.78270561795e+211
+.double 1.72758500292e+192
+.double 3.60491968685e+229
+.double 0.0123602852853
+.double 3.34486526036e-119
+.double 1.58680573138e-178
+.double 3.79727915992e-18
+.double 1.82750999666e+232
+.double 3.02721141065e-249
+.double 1.00112075902e-157
+.double 4.71382117767e-251
+.double 9.16605423336e+94
+.double 1.82403634402e+149
+.double 1.50926932945e+57
+.double 2.95024846492e-134
+.double 1.58624974208e+307
+.double 1.0958503677e-258
+.double 7.25287989274e+292
+.double 9.10331644817e-11
+.double 1.18636290919e+53
+.double 7.17285410378e-260
+.double 2.51752270271e-132
+.double 9.36405686767e-298
+.double 9.06891124199e+164
+.double 5.35467013409e-275
+.double 7.07492204048e-125
+.double 1.62943814131e-21
+.double 8.87242728908e+195
+.double 7.007183795e-88
+.double 1.0012170659e-188
+.double 3.686800172e+137
+.double 2.57416688395e+230
+.double 2.88217432575e+68
+.double 2.30183824371e+157
+.double 1.28919442265e-149
+.double 5.55863568294e+38
+.double 3.09766358039e+59
+.double 5.22857159571e+97
+.double 1.8365691383e+194
+.double 6.14276962506e+50
+.double 1.53061752154e-227
+.double 9.83622442306e-166
+.double 2.40597538631e-262
+.double 1.08308788299e+49
+.double 7.31669232623e+19
+.double 3.58477452757e+200
+.double 5.53409033445e+91
+.double 1.00617748975e-171
+.double 3.83738656059e+14
+.double 1.08161485975e-129
+.double 8.42751496838e-251
+.double 9.82223205661e-238
+.double 1.43716947877e+192
+.double 4.18851195525e-92
+.double 4.99733319738e+297
+.double 2.47229395327e+14
+.double 2.12736381477e-125
+.double 5.45033459992e-21
+.double 2.94772806928e-19
+.double 4.09485457609e+125
+.double 1.22019087452e-233
+.double 1.58092836604e+276
+.double 8.31728269791e-63
+.double 5.8900897612e+219
+.double 9.64170910323e+232
+.double 7.22683705283e+19
+.double 2.49899833645e+276
+.double 1.03947503387e+176
+.double 6.15212538425e-264
+.double 1.16550626498e+223
+.double 5.74940762629e-178
+.double 5.46063730936e-153
+.double 1.45432878966e+265
+.double 4.06077943144e+65
+.double 1.48385629733e+191
+.double 3.5429401039e-122
+.double 5.83443849729e-43
+.double 1.40165293996e-275
+.double 5.01251331285e+20
+.double 2.77782263736e+127
+.double 60.2761876159
+.double 6.02772249129e-173
+.double 36778.4755653
+.double 3.06321942732e-249
+.double 5.58101603734e-236
+.double 3.72193330629e-96
+.double 1.70859412868e-133
+.double 1.49011889876e-67
+.double 7.97047841474e+176
+.double 2.86657530335e-202
+.double 1.1735466151e+93
+.double 1.4858315275e+302
+.double 4.97716218618e-34
+.double 2.11090558589e-256
+.double 5.2212324546e+234
+.double 8.35465082964e-35
+.double 5.27316883722e+86
+.double 1.75473423207e+52
+.double 5.24990156849e-98
+.double 1.22843174585e-58
+.double 1.67774604332e-286
+.double 2.40207164856e-240
+.double 1.39396938181e+163
+.double 2.99278564558e-288
+.double 1.62294953318e+17
+.double 2.05601706292e+267
+.double 3.94053885161e-87
+.double 8.1096881035e-14
+.double 4.66907836727e-291
+.double 3.98554313197e-240
+.double 1.98027631811e-300
+.double 5.36285906626e+270
+.double 5.09205042757e+199
+.double 3.7675837484e+35
+.double 4.05744474124e-171
+.double 1.96965331838e+174
+.double 4.53925196914e-50
+.double 2.64524692746e+168
+.double 8.91650893727e-204
+.double 2.97628817817e-07
+.double 2.45129189866e-30
+.double 1.301934756e+17
+.double 3.58367653593e-163
+.double 1.27890409452e-249
+.double 1.04296514045e-185
+.double 1.62090391391e-80
+.double 2.21418638687e-290
+.double 3.30893087259e-18
+.double 2.60034210421e+145
+.double 3.33072001556e+272
+.double 1.72783894233e-121
+.double 7.44853651486e+306
+.double 7.72916727835e+287
+.double 1.0448726894e+120
+.double 4.85568861558e-202
+.double 5.99710826739e+141
+.double 6.1246399958e-131
+.double 2.08679755671e-48
+.double 1.08074654764e-101
+.double 1.64189524736e-113
+.double 8.38937810659e-243
+.double 9.86962452579e+117
+.double 3.80669221292e+169
+.double 1.19399371854e-211
+.double 5.34001869323e-214
+.double 4.75840279561e-159
+.double 2.33644284717e-200
+.double 1.16379224184e-217
+.double 9.5792212298e-217
+.double 5.47509974518e-207
+.double 7.48321810936e+100
+.double 6.04807702671e-295
+.double 7.39596311115e-30
+.double 2.31494955662e+229
+.double 1.15323847484e+77
+.double 1.37558506711e+279
+.double 2.10734836139e-186
+.double 4.05469207869e+193
+.double 7.50683281474e-235
+.double 2.19159545546e+256
+.double 5.33675084255e-72
+.double 1.50801806909e+195
+.double 2.60669772112e+16
+.double 5.32451511474e-307
+.double 7.73304881561e-128
+.double 1.21509716485e+44
+.double 2.32334825868e-57
+.double 1.44815511886e-282
+.double 7.34131682337e+178
+.double 4.07429750909e-69
+.double 3.67908880228e+164
+.double 2.98770643428e+97
+.double 1.4329425053e+264
+.double 5.84955256089e+38
+.double 6.30393206708e-75
+.double 6.96750746559e-245
+.double 1.59764603769e+174
+.double 5.3876593793e-160
+.double 8.27200723785e+42
+.double 7.4062338879e+295
+.double 5.46460016791e+23
+.double 2.18621352378e-291
+.double 3.15053747268e+79
+.double 8.74715921019e-244
+.double 3.97545791649e+146
+.double 1.26183820558e+265
+.double 4.87747265347e-125
+.double 3.98734557608e+195
+.double 0.0494063043969
+.double 1.83007796788e-240
+.double 4.87533800406e+23
+.double 2.00718908874e-276
+.double 5.19964449177e-149
+.double 1.02508718064e+296
+.double 3.88006395234e+107
+.double 1.87707468193e-54
+.double 4.95773816382e-86
+.double 4.28585899901e-56
+.double 3.86053608889e-62
+.double 4.23138816603e+92
+.double 7.8900237055e-100
+.double 2.74342575447e+225
+.double 9.47093756244e+228
+.double 2.19423460188e-44
+.double 1.74482980137e-234
+.double 4.72388890536e-23
+.double 1.11112457834e+105
+.double 18080.8285683
+.double 3.94772332736e+94
+.double 2.51416582458e+113
+.double 2.91911598294e+113
+.double 2.64528933727e-285
+.double 4.94940169084e+144
+.double 1.47375885783e-151
+.double 5.06837845555e-68
+.double 9.23240648895e+126
+.double 9.56257262727e-213
+.double 7.3783920177e+130
+.double 3.38131302199e-128
+.double 5.30873773584e+140
+.double 4.81169496755e+90
+.double 9.87236399053e+306
+.double 5.03522579818e-29
+.double 1.56841961225e+50
+.double 1.10494219537e-190
+.double 9.06813533706e+260
+.double 7.22987057493e+71
+.double 1.21895355829e+305
+.double 3.51617274436e-78
+.double 3.18894874006e-271
+.double 8.55934840644e+158
+.double 1.04678785926e-76
+.double 5.05593861994e+137
+.double 6.79939748405e-58
+.double 6.26410665551e-88
+.double 6.22330742304e+279
+.double 8.39816672092e+55
+.double 3.00439430131e-16
+.double 2.38862651304e+276
+.double 2.55787457959e-23
+.double 2.00827602552e-92
+.double 2.62102777586e-275
+.double 4.10557004573e+269
+.double 1.42850683212e-28
+.double 0.00188312234992
+.double 2.68269431074e+26
+.double 2.10962240476e-51
+.double 1.09013797963e-126
+.double 130997177.404
+.double 3.43395625571e-245
+.double 2.23784595177e+294
+.double 3.92171159183e-248
+.double 8.8823550348e-69
+.double 25527372288.6
+.double 2.42669318716e-70
+.double 3.41923137769e-74
+.double 4.81491440229e-306
+.double 0.000100421946861
+.double 2.68090756858e+88
+.double 2.41517924639e-23
+.double 7.07344603378e-293
+.double 4.13073165386e-259
+.double 4.49281278571e-166
+.double 9356663492.07
+.double 3.45544141553e-81
+.double 1.30415790167e+141
+.double 6.77629224235e-127
+.double 1.90026420788e+83
+.double 1.96994465428e-185
+.double 1.19214637266e+190
+.double 9.4325999919e+193
+.double 9.34299410197e-119
+.double 1.14159515535e-267
+.double 9.9949238476e-32
+.double 5.07373276908e+192
+.double 1.9889123399e+215
+.double 1.35147853561e-216
+.double 7.37254507227e-249
+.double 1.20483023166e-213
+.double 1.12067431887e+72
+.double 7.56796989297e+33
+.double 4.97807865374e+36
+.double 1.39196402957e+193
+.double 2.74885962831e-239
+.double 2.93743347231e+300
+.double 1.78934105134e+173
+.double 1.51835092675e-58
+.double 6.71110099404e-57
+.double 1.98509711942e+230
+.double 1.26152816226e-57
+.double 2.23556978274e-299
+.double 4.00736785576e-88
+.double 5.26491489651e+220
+.double 6.62622152415e-12
+.double 7.16781583715e-171
+.double 4.41253099925e+291
+.double 7.58980748327e+142
+.double 3.64826997417e+40
+.double 3.45181740173e+80
+.double 3.64568474059e+13
+.double 5595.8080679
+.double 4.21298760696e-236
+.double 1.03221345536e+269
+.double 3.58627009519e+93
+.double 2.16881395828e+69
+.double 3.66806361144e-185
+.double 2.95702189867e-44
+.double 1.30479804751e-176
+.double 5.1348050033e+20
+.double 8.12496679453e-280
+.double 2.75189736381e-297
+.double 6.63525060131e+297
+.double 6.23886897938e-247
+.double 9.39921565519e-15
+.double 6.79663848155e+256
+.double 5.06362836839e+149
+.double 2.84121167032e-244
+.double 1.58059740895e-198
+.double 2.36847497427e+27
+.double 7.27127728044e-129
+.double 7.9880872965e+201
+.double 8.71982832837e+28
+.double 1.47946851269e-141
+.double 6.99305685471e+264
+.double 1.04197968535e-76
+.double 1.0804415239e+141
+.double 4.62226571237e-302
+.double 5.61813960478e-212
+.double 1.60442154808e-274
+.double 1.76094163124e+74
+.double 3.36765994618e-197
+.double 6.57828941502e-226
+.double 7.79054145966e+179
+.double 3.94743574562e-27
+.double 6.1032140388e+64
+.double 4.07688976103e+211
+.double 4.0504927363e+223
+.double 8.98178487071e-131
+.double 9.15154131958e-186
+.double 1.38997138344e+166
+.double 9.74858737448e-175
+.double 1.19160637173e+187
+.double 1.19249001579e-94
+.double 1.24234350327e-51
+.double 1.15542528948e-131
+.double 6.43821025521e-220
+.double 4.13362363202e-216
+.double 2.81557939235e+189
+.double 1.19154708742e+120
+.double 8.33057094139e+192
+.double 2.63836777904e-106
+.double 2.4906248541e-92
+.double 2.53519839854e-127
+.double 3.26309211659e+246
+.double 1.53568582864e+152
+.double 1.57240731946e+175
+.double 2.13250912315e-42
+.double 8.46725145119e+272
+.double 1.5636530984e-169
+.double 9.59982450974e-248
+.double 6.31403479774e+292
+.double 7.98888609298e-89
+.double 8.95099036913e-172
+.double 8.9932822097e-145
+.double 4.58673153367e+262
+.double 4.78325661359e-263
+.double 2.66858121069e-201
+.double 1.97366503885e-194
+.double 1.9510446129e+157
+.double 2.28611332375e+102
+.double 9.80169101046e+281
+.double 1.28151486089e-93
+.double 4.98191469298e-229
+.double 6.96199210703e+43
+.double 4.32773691924e-60
+.double 7.02043539629e-140
+.double 1.15169573954e+295
+.double 1.14607158838e+219
+.double 422473.901947
+.double 3.25337631782e+150
+.double 148.426999214
+.double 9.19263648759e-21
+.double 8.85625572388e-71
+.double 9.16497939566e-265
+.double 1.34002940195e-72
+.double 4.64376693877e-207
+.double 479742.092783
+.double 1.69708497299e-124
+.double 4.55001882396e-234
+.double 3.79235898996e+284
+.double 0.369271132689
+.double 9.64197513435e-256
+.double 6.00103043326e+305
+.double 6.16620122365e-122
+.double 5.5098215579e-43
+.double 1.04968122983e+159
+.double 3.25651065194e+149
+.double 4.40243474499e+55
+.double 5.4541141328e+148
+.double 9.68072276443e-148
+.double 1.89292789911e+75
+.double 2.27908861169e+77
+.double 1.00294983444e+97
+.double 8.5127218762e+112
+.double 2.24193078313e+292
+.double 1.66474249271e-19
+.double 2.52122883937e+273
+.double 4.03006791419e+241
+.double 7.43375276536e+110
+.double 2.01380782784e-286
+.double 7.61078507377e-253
+.double 1.27898765586e+219
+.double 4.20044538849e+74
+.double 1.07530228978e-103
+.double 2.16776910531e-47
+.double 7.40380294319e+166
+.double 7.2687908525e+99
+.double 1.67730073468e+113
+.double 3292.83839862
+.double 2.27452414721e+133
+.double 3.56441352761e+275
+.double 3.00053645107e-157
+.double 5.68490268819e+236
+.double 1.32770038199e+306
+.double 3.74721949205e+109
+.double 7.55132726282e-308
+.double 1.16842866328e-305
+.double 5.64749291105e+194
+.double 1.94591187995e+305
+.double 12931155.2846
+.double 4.90986848744e-43
+.double 1.54447658379e-175
+.double 1.66853011314e-247
+.double 5.3654531423e-239
+.double 2.93161676608e-117
+.double 8.84083877669e+152
+.double 1.82137744264e+245
+.double 1.24467622258e+295
+.double 1.16676120726e+144
+.double 2.98701959088e-283
+.double 2.22206008105e+69
+.double 3.00921461209e-53
+.double 9.46388725213e-12
+.double 3.00797800102e-19
+.double 7.02799957735e+76
+.double 2.05548602719e-243
+.double 4.41933717132e+20
+.double 1.90124188386e+191
+.double 1.99800636696e+283
+.double 2.96661469838e-201
+.double 5.59094691398e-99
+.double 2.95499228249e-77
+.double 3.46457739807e+305
+.double 6.95543652221e-175
+.double 4.97486338725e-177
+.double 1687.41346693
+.double 6.94727632417e+297
+.double 7.10619144735e-37
+.double 5.31288010712e-298
+.double 2.13473137013e-255
+.double 2.54558749267e+147
+.double 2.17790284289e+220
+.double 1.55824182244e+293
+.double 3.4305003115e-135
+.double 3.55800280762e-26
+.double 3.75490575116e-147
+.double 1.1149438773e-80
+.double 1503042.05769
+.double 1963.39486251
+.double 1.48895380958e-138
+.double 3.74996385603e+24
+.double 1.19360655881e-265
+.double 5.40463040129e-273
+.double 4.19380768275e-257
+.double 9.57729846248e-125
+.double 1.29440156759e-118
+.double 1.66973901837e-187
+.double 2.77619567505e+99
+.double 1.04433873179e+186
+.double 2.67315846078e-90
+.double 1.57993068555e+234
+.double 6.96005170911e-159
+.double 6.29163005162e-12
+.double 1.26817185741e-64
+.double 1.93720149887e+121
+.double 4.01040036582e-22
+.double 5.05335568579e-261
+.double 3.96891739347e-267
+.double 1.16833989064e-203
+.double 3.32680160472e+102
+.double 8.59324952888e-102
+.double 3.10573481883e-181
+.double 8.42469123975e-276
+.double 1.69523047901e-50
+.double 7.83798731788e-81
+.double 2.34113831585e-243
+.double 3.71598789254e+290
+.double 1.78213745251e+132
+.double 8.93828819619e+198
+.double 5.43018446446e+77
+.double 5.5429721997e-278
+.double 8027356.63087
+.double 0.0115798623551
+.double 2.7850022336e+63
+.double 7.68997093395e-222
+.double 5.29407358027e-87
+.double 1.68135184217e-276
+.double 3.03771587762e+215
+.double 2.895590083e+193
+.double 9.76853373038e+195
+.double 4.48573289204e+75
+.double 6.41226427023e-240
+.double 3.33118622912e-263
+.double 2.16320819761e+86
+.double 6.58681624323e+161
+.double 1.70814394323e-283
+.double 7.85777508839e-87
+.double 3.53834196022e-131
+.double 1.72107182669e-298
+.double 4.91849641805e-98
+.double 3.99521244706e-120
+.double 0.000112800198042
+.double 0.000303085074447
+.double 3.22864856305e+48
+.double 53582366425.1
+.double 9.13207822955e+210
+.double 6.70252608023e+85
+.double 5.94127341032e-54
+.double 2.62691146725e-152
+.double 1.8671091063e-148
+.double 1.93779296201e-13
+.double 1.62526801732e+53
+.double 1.54485444205e+217
+.double 4.05667168428e-88
+.double 2.58917532453e-185
+.double 2.3345316342e-298
+.double 5.65859674689e-281
+.double 3.22425722618e-198
+.double 9.5884252185e+182
+.double 4.19566423116e+33
+.double 1.96267505242e+67
+.double 8.52312193371e-203
+.double 1.58320423353e+100
+.double 6.1908869641e-154
+.double 5.92237086041e-264
+.double 1.05839390879e+289
+.double 3.36697043193e+224
+.double 4.36930771047e+161
+.double 2.69098156381e-67
+.double 9.60227983247e-268
+.double 2.04471830151e+105
+.double 1.97512038691e-245
+.double 9.95386800579e-138
+.double 2.00278558998e+158
+.double 1.01803953964e+30
+.double 6.08475136883e+218
+.double 1.9077537569e-94
+.double 3.99032984575e+282
+.double 1.21735654466e+89
+.double 1.5207315305e-259
+.double 1.31295891122e-40
+.double 1.59406083612e-82
+.double 8.32020545441e+114
+.double 1.03346479284e-293
+.double 1.37807188294e-08
+.double 3.67299539767e-288
+.double 6.26496994931e-189
+.double 7.09456626062e+296
+.double 1.16106747777e-253
+.double 4.18853791233e+120
+.double 6.81193222865e-48
+.double 1.36847206017e-303
+.double 1.06758950426e-282
+.double 1.04696234142e+242
+.double 6.39380843123e+113
+.double 3.89874931572e+270
+.double 1.04592605161e-218
+.double 5.47008108133e-42
+.double 3.7113378566e+59
+.double 5.13792721359e+142
+.double 1.02193456466e-205
+.double 2.30930961038e+107
+.double 1.35559610596e-204
+.double 6.97561293971e-62
+.double 4.56685793592e+211
+.double 2.65030140524e+173
+.double 1.06382507298e+294
+.double 4.86793308288e-140
+.double 1.46353358664e-229
+.double 7.35873750294e+272
+.double 3.72374882765e-26
+.double 1.38354547238e-181
+.double 8.38486838284e-144
+.double 1.05314224379e-154
+.double 9.38703788154e-259
+.double 7.81280240699e+138
+.double 1.99738135568e+68
+.double 1.42329867236e+57
+.double 5.95789848072e-242
+.double 2.56566111239e-237
+.double 1.57160947878e+140
+.double 4.07307097769e-283
+.double 21642527.4141
+.double 1.01751229145e-14
+.double 3.39512118568e+149
+.double 5.52924904109e-184
+.double 1.95389094883e-287
+.double 3.09824449099e-188
+.double 7.50668392625e+35
+.double 2.52865892402e+38
+.double 6.90957227711e+61
+.double 6.38462586577e+68
+.double 9.60347898511e+108
+.double 3.59799945045e-144
+.double 6.92910606559e+271
+.double 2.0043049833e-138
+.double 5.3210940732e+165
+.double 6.24875137643e-254
+.double 2.24099065598e+193
+.double 5.70090648423e-214
+.double 3.82804364453e+264
+.double 1.21003419766e+38
+.double 5.52338342359e-05
+.double 4.06827619449e-261
+.double 1.45277329105e-06
+.double 1.15276460981e+16
+.double 2.42700448955e+257
+.double 8.42114456081e+101
+.double 1.83656600134e-186
+.double 5.92904967016e-48
+.double 9.09454606242e-152
+.double 2.46798977264e+230
+.double 1.42475969615e-280
+.double 1.80365356222e+32
+.double 2.58535073824e-238
+.double 9.86698794692e+296
+.double 1.99773579903e+95
+.double 8.53433009616e-176
+.double 1.32518393196e-197
+.double 2.23898301407e-45
+.double 5.65718176509e-290
+.double 7.98551445574e+286
+.double 2.68812443617e-100
+.double 2.10912478751e+153
+.double 2.84590564958e+296
+.double 2.41931380555e+23
+.double 1.46974720155e+106
+.double 2.33282510885e+214
+.double 1.96695323307e-156
+.double 6.51004040533e+252
+.double 4.61837130779e-149
+.double 5.66449136463e-168
+.double 1.40349757884e+190
+.double 5.78565045106e-299
+.double 3.70673515916e-129
+.double 2.45688779217e+173
+.double 1.80261272477e+25
+.double 9.30075880996e+259
+.double 9.05149041332e+92
+.double 2.10578663274e-190
+.double 2.38071317786e+17
+.double 9.3650534133e+129
+.double 6.07052689013e+41
+.double 4.24256831382e+298
+.double 2.31246263955e+247
+.double 8.7167959914e+291
+.double 8.82772394551e-157
+.double 2.2202492229e-203
+.double 6.41755153487e-290
+.double 3.66277849147e+117
+.double 1.38202668179e-280
+.double 9.67615462297e+190
+.double 1.00545032353e-264
+.double 1.31828966304e+215
+.double 5.89201666939e+16
+.double 6.5551666035e+28
+.double 2.96745358208e-98
+.double 1.9300468964e+121
+.double 2.78240444484e+304
+.double 1.74516294062e-150
+.double 1.78140782826e+109
+.double 6008386.40427
+.double 1.2066869521e-98
+.double 7.36268165806e-203
+.double 1.16673566722e+73
+.double 8.58908990561e-190
+.double 3.55126913919e+227
+.double 1.52667239096e+243
+.double 1.07655716314e+165
+.double 6.88851744376e-140
+.double 1.91508826529e+30
+.double 3.5729555342e-276
+.double 2.85683046422e-260
+.double 2.54389354859e+54
+.double 3.57037126714e-258
+.double 2.04779191187e+75
+.double 3.51985304031e-48
+.double 1.08350532565e-215
+.double 1.21875121579e-229
+.double 1.4643779826e+70
+.double 129705.275988
+.double 4.81184138203e-24
+.double 3.90563456563e+43
+.double 6.89948356466e-274
+.double 1.95650220364e+178
+.double 6.57207178896e-214
+.double 1.36333975438e+115
+.double 0.000447647764742
+.double 5.02044103177e-200
+.double 1.19831027566e+191
+.double 1.52962367483e-239
+.double 1.32583451691e-80
+.double 6.94426488635e-30
+.double 2.50532720291e-104
+.double 3.25200653798e+197
+.double 1.41087441054e-176
+.double 2.42007438198e-248
+.double 1.15573143336e+204
+.double 7.83869491025e-161
+.double 8.0175520155e+167
+.double 6.96303328718e-243
+.double 3.80166767992e-250
+.double 2.78645076624e-160
+.double 2.33818168109e-81
+.double 2.02116206736e+226
+.double 7.93887620039e+67
+.double 3.3622233789e+81
+.double 8.64976838854e+196
+.double 1.60916589005e+270
+.double 4.78334290513e+170
+.double 1.0207100266e-11
+.double 1.86196380635e-122
+.double 7.85808423398e+302
+.double 1.31640066281e-127
+.double 2.62993568429e-158
+.double 2.06101185892e-254
+.double 1.04704150627e-138
+.double 1.04199682046e+189
+.double 6.91311359168e+246
+.double 4.15450757708e+188
+.double 4.4383939758e-233
+.double 4.61578372179e-277
+.double 2.18691566895e+256
+.double 2.03036001931e+287
+.double 2.34730029105e-14
+.double 2.63379579956e+20
+.double 8.0738632492e-184
+.double 5.51851426075e-49
+.double 2.43119559186e+278
+.double 2.64402426044e-100
+.double 4.02129456735e+37
+.double 8.92484788953e+55
+.double 3.62018959529e-51
+.double 4.98320098985e-125
+.double 1.00303484012e+129
+.double 5.92124941539e-219
+.double 5.36923068533e+75
+.double 984648037473.0
+.double 2.34806983613e+47
+.double 2.89778684707e+155
+.double 1.7638862464e+305
+.double 1.41000282884e+152
+.double 7.21155210117e+221
+.double 6.13114889602e-22
+.double 5.41081515228e-184
+.double 4.28190492911e+233
+.double 1.10586883321e-270
+.double 7.21052579312e+81
+.double 6.85897231023e-271
+.double 148.931649565
+.double 1.74832243525e+133
+.double 1.89935650747e+180
+.double 1.20265640401e-149
+.double 4.15092650521e-308
+.double 3.15040850554e-242
+.double 2.71569835821e-194
+.double 2.65615012366e+31
+.double 1.53981393384e+246
+.double 1.1162774277e-279
+.double 2.00213977605e+69
+.double 6.39056008823e+155
+.double 9.26831829471e-255
+.double 4.24736646282e-127
+.double 5.00578055763e+70
+.double 3.3435975747e-15
+.double 3.2347199954e+246
+.double 7.17030945256e-144
+.double 4.03846334448e-49
+.double 4.9638815134e+67
+.double 1.40443324797e+85
+.double 1.76256680248e+238
+.double 4.46572851704e-41
+.double 2.57032062413e-243
+.double 2.98023191546e+216
+.double 1.22763961528e-131
+.double 3.86318459645e+137
+.double 1.7426302095e+247
+.double 6.56362123365e-07
+.double 1.08295741083e-182
+.double 6.85838790689e-136
+.double 1.7437857339e-100
+.double 3.57973646517e-289
+.double 1.54882717079e+70
+.double 1.49672396079e+17
+.double 3.49027421647e-102
+.double 2.20366869437e-263
+.double 1.14732754953e+33
+.double 4.82909487708e+162
+.double 1.69365992606e+33
+.double 1.88394338689e+288
+.double 5.85803815674e-151
+.double 2.62474653138e-76
+.double 6.11872846975e+88
+.double 5.772103201e-291
+.double 9.22160477576e-302
+.double 4.11388303944e-178
+.double 6.96052889015e+249
+.double 1.06985994615e+212
+.double 5.37684706915e+14
+.double 4.83812495893e-69
+.double 4.00077260329e+198
+.double 6.17427847353e-304
+.double 2.12545031713e+273
+.double 1.40922237568e+80
+.double 2.66809905481e-130
+.double 279850.701075
+.double 5.37249321506e-205
+.double 1.6048176928e+37
+.double 7.73169261084e+271
+.double 7.31227885274e-137
+.double 3.64613321354e+116
+.double 3.1607971665e+209
+.double 1.96921521106e-277
+.double 3.65074846804e+177
+.double 3.86215283697e-146
+.double 4.15058052556e+154
+.double 1.7706274152e+292
+.double 2.18753394486e-290
+.double 9.25244692939e+238
+.double 1.10156634649e-210
+.double 4.58164499932e-112
+.double 2.38359720672e+145
+.double 2.88013858129e+277
+.double 2.72752580105e-146
+.double 5.79633798426e+137
+.double 1.72668964129e-169
+.double 1.97001641643e+233
+.double 1.96650876198e+94
+.double 1.31115867405e+228
+.double 6.02486717887e+252
+.double 4.98444076266e-27
+.double 2.55209920508e-50
+.double 2.24176759088e-139
+.double 9.08720852049e-112
+.double 1.45914226443e+168
+.double 2.46282926864e+23
+.double 1.48169648855e+215
+.double 1.08405581555e-252
+.double 5.22664081312e+213
+.double 5.5565839891e-178
+.double 6.58341868052e-34
+.double 3.82124619453e-43
+.double 2.32079365681e+122
+.double 2.4939898437e-52
+.double 2.91155680211e+272
+.double 2.17703032222e+50
+.double 2.5467902048e-51
+.double 5.61519696645e-214
+.double 5.18062775223e+72
+.double 3.93416088167e-51
+.double 3.84142407435e-123
+.double 7.23639548575e-167
+.double 1.45066950231e-25
+.double 5.71532386061e-133
+.double 3.34240291011e-19
+.double 2.43948039314e-172
+.double 2.73979977556e+301
+.double 4.21959481478e-132
+.double 7.87243060418e+300
+.double 4.60477788781e-82
+.double 1.75621738796e-146
+.double 3.34521239996e-285
+.double 1.20947051329e-106
+.double 6.40817072455e+159
+.double 3.11374667266e-119
+.double 1.2175153294e+258
+.double 1.29482890767e-53
+.double 16426.1520459
+.double 9.7365323519e-164
+.double 1.77314093931e+273
+.double 2.24576292282e+122
+.double 1.31505233515e+269
+.double 2.55736781426e-25
+.double 2.24748156388e-205
+.double 1.29836958397e-112
+.double 6.98303378247e+235
+.double 6.65301892528e-207
+.double 3.13134956581e+247
+.double 5.71297860002e-285
+.double 4.12266303967e-156
+.double 1.75677187033e-250
+.double 1.59790592196e-260
+.double 2.8638468516e-136
+.double 2.04947258641e+298
+.double 4.53077258415e-230
+.double 1.24028480016e-180
+.double 6.00711580615e-127
+.double 4.58706138926e-188
+.double 1.61343142488e-177
+.double 6.82346345815e+186
+.double 1.77284783329e+229
+.double 5.92651719091e-96
+.double 1.06113093826e+129
+.double 4.92334175134e-124
+.double 1.21603695408e-281
+.double 7.20919353751e-32
+.double 3.27661972015e-254
+.double 1.51731467064e-123
+.double 7.24634874969e+49
+.double 1.59711947362e-12
+.double 1.12179634244e-270
+.double 7.56495068207e-274
+.double 1.18610157262e+257
+.double 7.83645051695e+82
+.double 6.75422723187e-276
+.double 2.38766058208e-234
+.double 1.05162276922e+272
+.double 7.82907545828e-194
+.double 4.33790284424e+296
+.double 1.02283042691e-119
+.double 9.44682203536e+238
+.double 1.17148623157e-291
+.double 2.33187819256e-203
+.double 2.78998298672e-91
+.double 2.99862746517e-174
+.double 1.22118625688e+147
+.double 8.16753700028e+245
+.double 2.16747271341e+76
+.double 40357229757.8
+.double 4.95121454665e-269
+.double 2.95282229164e-84
+.double 8.62765799478e+179
+.double 2.18435872878e+238
+.double 3.40313642758e-218
+.double 4.60202145184e+226
+.double 8.85032950722e+102
+.double 2.5669126274e+38
+.double 5.81218232948e+87
+.double 1.75368209512e+76
+.double 1.07733232815e+136
+.double 1.13379364349e-139
+.double 1.08842508496e+172
+.double 2.34169399547e+138
+.double 1.20810163721e+259
+.double 1.79500707314e+208
+.double 1.03606942844e+31
+.double 2.52603321934e-21
+.double 1.17574697387e-09
+.double 9.88185912207e-261
+.double 6.70892271944e-163
+.double 7.40611828986e+175
+.double 4.38642348435e-285
+.double 6.31913267017e-81
+.double 5.59204498535e+58
+.double 3.53810870663e+24
+.double 8.88706237044e-142
+.double 1.14923310768e-267
+.double 1.41028539098e+209
+.double 5.88861257755e+154
+.double 1.76036559353e+257
+.double 4.40323724786e+35
+.double 3.69568383156e-297
+.double 2.08275947296e-49
+.double 1.36835734746e+82
+.double 4.63260169755e-118
+.double 3.45791213361e-232
+.double 2.80145849326e-278
+.double 5.13250147148e+41
+.double 4.82424509175e+306
+.double 4.19620484248e+61
+.double 9.29476284476e+293
+.double 2.23159211403e-219
+.double 1.97589229684e-209
+.double 5.83911190306e+124
+.double 6.21274031588e-223
+.double 8.20980602683e-216
+.double 1.00407090794e+154
+.double 1.1023266799e+135
+.double 2.07688551157e+234
+.double 5.44209676492e+170
+.double 3.40746251995e+60
+.double 1.39462225291e-98
+.double 3.75578944646e+100
+.double 9.59453820202e+136
+.double 2.68238621012e-183
+.double 1.03459468254e-57
+.double 3.0302791483e-175
+.double 4.43121628625e-157
+.double 1.99594408041e+83
+.double 8.80620529834e+238
+.double 7.78563022002e-263
+.double 2.29742827829e+291
+.double 6.43659128808e+119
+.double 2.595064552e-15
+.double 1.65851750096e+97
+.double 8.89215800638e+57
+.double 1.93256417374e-296
+.double 4.2144132991e+196
+.double 2.24044288495e-277
+.double 4.59002983953e-132
+.double 6.83913750503e+140
+.double 2.09950410732e+247
+.double 3.34886922987e-274
+.double 1.0301593413e+40
+.double 1.95167588781e+44
+.double 4.81966612437e+270
+.double 2.30449495008e+45
+.double 4.44670849404e+189
+.double 4.9914942985e-117
+.double 5.8164074147e-37
+.double 2.30277231907e+245
+.double 1.25174682999e-171
+.double 3.13751266773e+27
+.double 9.33820258267e+148
+.double 1.26290824798e+150
+.double 2.23634152416e+288
+.double 3.67149738047e+50
+.double 1.24857330954e+117
+.double 1.7214579633e-74
+.double 3.04960291323e-130
+.double 1.08792477675e-139
+.double 1.07737483975e+155
+.double 8.95856462077e+291
+.double 4.0110132488e-44
+.double 1.53092162114e+81
+.double 2.23421335157e-190
+.double 3.07156721165e+85
+.double 3.47404515583e-62
+.double 3.46704247075e-281
+.double 1.11767644045e+117
+.double 3.6218016113e+156
+.double 1.69862307947e+167
+.double 1.02662181132e-166
+.double 2.10403194681e-35
+.double 2.69811605864e-219
+.double 3.32913565692e+153
+.double 7.33981906313e-60
+.double 2.26437392681e+75
+.double 1.40075695095e-116
+.double 3.88985925653e+56
+.double 2.56205756982e-126
+.double 3.9916840707e+93
+.double 61805790127.6
+.double 1.17456445414e-254
+.double 2.67519340407e+276
+.double 9.98070884048e+288
+.double 8875280572.46
+.double 7.65441038397e+41
+.double 6.44955101863e-201
+.double 1.22906288055e-123
+.double 2.1435370374e+15
+.double 6.01686983056e-109
+.double 7.14407446828e-36
+.double 3.22586333083e+207
+.double 2.07941254614e-64
+.double 1.40235392726e-89
+.double 1.49295663233e-275
+.double 2.68169866289e-105
+.double 2.91746907877e+231
+.double 5.02406845639e+53
+.double 4.81250528114e-120
+.double 1.63864775355e+297
+.double 7.42275113963e-259
+.double 1.71197889483e-13
+.double 5.62177613619e+253
+.double 2.03563952066e-19
+.double 2.52611330068e+271
+.double 9.75843792022e-293
+.double 8.34123203277e+132
+.double 1.02187435439e-224
+.double 6.34496079195e-291
+.double 2.60988998197e-281
+.double 3.35897967846e+49
+.double 2.63319388722e-79
+.double 9.35972926373e-240
+.double 6.61614511633e+53
+.double 6.35583226994e-103
+.double 5.23010267753e+118
+.double 77218074.5524
+.double 0.249030379369
+.double 1.09909056501e+233
+.double 1.01415617914e+14
+.double 4.5455838254e+89
+.double 2.52643481944e-270
+.double 2.04800579443e+16
+.double 9.56365592853e-109
+.double 1.61332806914e+120
+.double 1.36830521915e+292
+.double 5.987665494e-236
+.double 2.10447600066e+282
+.double 1.66563366808e+252
+.double 4.36982694623e-66
+.double 1.24872874372e-110
+.double 6.7025539363e-18
+.double 4.60751410796e-16
+.double 6.07083205092e-148
+.double 4.32282867559e-222
+.double 4.25654840334e+279
+.double 2.63823308942e-67
+.double 1.78835922854e-85
+.double 4.88206629388e+87
+.double 4.99845448543e-109
+.double 2.09250660097e-162
+.double 1.16969105619e-201
+.double 2.45754803976e-23
+.double 7.04334453451e+283
+.double 5.47309534244e-33
+.double 4.34325697513e+196
+.double 1.7842190401e-69
+.double 4.9158885607e-24
+.double 8.42973736811e+160
+.double 1.24115290725e-308
+.double 1.98197647124e+144
+.double 28644571724.1
+.double 7.73985922839e-34
+.double 2.41938230353e-201
+.double 0.000193194806642
+.double 2.77062506275e-308
+.double 1.7255184336e-178
+.double 2.64596085584e+108
+.double 5.23993833976e-142
+.double 3.52803178171e+193
+.double 6.52133173934e-23
+.double 1.79587246664e-140
+.double 1.13946669617e-36
+.double 3.22052125342e-140
+.double 2.27391669744e-112
+.double 3.35535119039e-126
+.double 3.48601368206e-14
+.double 2.45014949967e+168
+.double 9.49319319567e-264
+.double 1.28240991023e-30
+.double 3.85172290261e-26
+.double 1.36432859364e+281
+.double 5.89811674302e+299
+.double 1.79771805032e+70
+.double 1.61609194304e+45
+.double 1.14112441268e-175
+.double 1.03179255894e+239
+.double 1.81986969724e-93
+.double 3.07392735844e-146
+.double 1.56414095055e-285
+.double 2.10945457818e+51
+.double 3.69235125133e+119
+.double 7.70445634966e-95
+.double 1.08416111226e+256
+.double 1.42406673703e-113
+.double 1.246158705e-271
+.double 1.53282549443e-214
+.double 5.48750809929e-111
+.double 4.67249923196e-186
+.double 2.65128891328e-192
+.double 7.44887368037e+28
+.double 8.04417356125e+263
+.double 4.93403166417e-227
+.double 4.84739415032e+129
+.double 1.01807439036e+295
+.double 8.49103961966e+288
+.double 7.81324748062e+65
+.double 1.36111473929e+125
+.double 5.53801811225e+150
+.double 555668.456627
+.double 9.18916916353e+295
+.double 3.50059782726e+173
+.double 1.3946009856e+101
+.double 1.16735956252e-153
+.double 1.46579778648e-133
+.double 9.50309396177e-49
+.double 3.7685198187e-238
+.double 4.54816957554e-208
+.double 9.82515944951e-27
+.double 5.93140942689e-68
+.double 2.09437583897e-309
+.double 2.62041332969e-42
+.double 6.27967519712e+161
+.double 1.65445338732e+204
+.double 1.38918401154e-133
+.double 2.63001467433e-42
+.double 3.19427448832e+21
+.double 2.66393518427e+47
+.double 2.15305046773e-255
+.double 4.42842766901e+205
+.double 6.56258339198e-246
+.double 1.65987511486e-251
+.double 9.33349004816e-282
+.double 3.17537430355e-222
+.double 3.83400406784e-124
+.double 1.54587798905e-200
+.double 7.56510346033e-118
+.double 82794.5601889
+.double 9.6336725098e-250
+.double 2.01671960952e-179
+.double 4.14200388828e-274
+.double 1.94614302488e-54
+.double 1.05205317438e-273
+.double 4.18201053721e+217
+.double 1.25372806846e-54
+.double 2.69550970082e+164
+.double 5.53179736541e+17
+.double 5.59759721097e+93
+.double 2.32105116263e-288
+.double 7.07430944233e+103
+.double 2.00107073761e+213
+.double 7.33433689767e-219
+.double 3.19784639821e-26
+.double 6.1294950124e-273
+.double 3.25281059304e-59
+.double 1.18508626138e+255
+.double 4.87631721837e-220
+.double 8.11453098117e+107
+.double 8.78728024765e-247
+.double 8.09959276727e+142
+.double 3.54132111459e-82
+.double 8.51493554879e-147
+.double 1.79903341293e+179
+.double 9.06007188478e+304
+.double 2.99695776296e+305
+.double 4.25940068032e-247
+.double 1028743399.4
+.double 5.65011692643e+69
+.double 3.65675046894e-221
+.double 3.08123182495e-165
+.double 2.62076147516e+25
+.double 7.77362277253e+199
+.double 7.11416141262e-41
+.double 1.94133088971e-302
+.double 2.83227189058e-263
+.double 5.77123253597e+130
+.double 2.87095743692e+143
+.double 1.28429640876e-146
+.double 1.92199112394e+140
+.double 7.52934118632e-154
+.double 2.90973261984e-168
+.double 1.45304830831e-210
+.double 5.25949206471e-149
+.double 1.17934675899e-223
+.double 7.05174245115e+116
+.double 1.71917972334e-145
+.double 6.34202727818e-205
+.double 9.73503254404e-184
+.double 8.06828148773e-190
+.double 3.58196518856e+64
+.double 7.57186959502e-194
+.double 3.74168638806e+263
+.double 1.06210494008e-94
+.double 1.13314372936e+156
+.double 1.01068052747e+117
+.double 1.50900978205e-55
+.double 1.60777351227e-88
+.double 8.94794697933e-270
+.double 1.31374628903e-104
+.double 1.77505529883e-73
+.double 2.2718187333e-69
+.double 7.86448889038e-07
+.double 2.64131994403e+134
+.double 1.72629893139e-73
+.double 2.28257364756e-155
+.double 305.433955893
+.double 1.91819920456e+71
+.double 9.42933075641e-101
+.double 3.1176364663e+18
+.double 1.5561222469e+217
+.double 9.59832382296e+95
+.double 4.18662654686e-58
+.double 3.81009395897e-154
+.double 1.8126648899e+289
+.double 5.80376855536e-157
+.double 1.55904655344e-225
+.double 1.85525876652e+225
+.double 2.4441380051e-278
+.double 3.01191650986e+295
+.double 3.1911405724e+55
+.double 3.34071011277e+242
+.double 2.08669378857e+229
+.double 5.06146985346e+250
+.double 8.52236498476e+199
+.double 2.54908098397e+206
+.double 8.75982878677e+170
+.double 1.05354906706e+23
+.double 1.44182811126e-136
+.double 7.44043395366e+295
+.double 2.95978040609e+75
+.double 5.79774709004e+226
+.double 8.62025147944e+282
+.double 2.27816483968e-176
+.double 2.39100384917e-238
+.double 7.24269347671e+211
+.double 4.27650560662e-258
+.double 1.30655197545e+26
+.double 2.94535239019e-208
+.double 9.97280808329e+35
+.double 4.03955870592e+186
+.double 1.29846290731e-153
+.double 4.68248417776e-81
+.double 1.12177539196e-296
+.double 2.87750952608e-95
+.double 2.6734507184e-263
+.double 9.90749191419e-299
+.double 2.71429645502e-276
+.double 1.69743232697e-84
+.double 1.96946157291e-210
+.double 1.12708355394e-231
+.double 6.80887458054e-108
+.double 6.0389141789e-220
+.double 2.3328844431e-25
+.double 1.71104689076e-255
+.double 5.20028959992e+146
+.double 1.28458160627e+29
+.double 1.11837581508e+239
+.double 1.35259189259e+83
+.double 8.71589552609e-196
+.double 8.79591509054e-296
+.double 2.57203553154e-158
+.double 4.98717223243e+188
+.double 2.67670575465e-53
+.double 2.25083430287e-144
+.double 3.50744328965e+12
+.double 4.43261162456e-76
+.double 4.74737778896e-192
+.double 2.9262456301e+292
+.double 2.97216650777e+141
+.double 1.68254554102e-182
+.double 1.44374318766e+296
+.double 2.85646242914e+138
+.double 2.57349840326e+149
+.double 8.98231702631e-187
+.double 1.24415872137e-200
+.double 7.02060733222e-42
+.double 2.54547663751e-252
+.double 1.63505163943e+72
+.double 6.44976383632e-254
+.double 1.23279088298e-71
+.double 1.46842229031e+196
+.double 6.79714355849e-284
+.double 3.15847135994e-19
+.double 2.04668074192e-200
+.double 7.03666884473e-265
+.double 2.4274776978e+188
+.double 1.02389336826e-28
+.double 2.84231652884e-255
+.double 7.82485222977e+188
+.double 2.36629980052e+297
+.double 2.63262457387e-222
+.double 1.20407659146e+57
+.double 7.7592739036e+20
+.double 3.76915262699e-132
+.double 1.12048359982e-260
+.double 3.43689525771e-164
+.double 8.31332600908e+216
+.double 4.08466038376e-200
+.double 7.67175358915e+80
+.double 1.04289462237e+210
+.double 6.52673805583e+255
+.double 3.88049919233e-114
+.double 1.13484907745e-85
+.double 4.21143278605e-270
+.double 8.22808854342e-66
+.double 2.38171255418e+36
+.double 1.09893849515e+20
+.double 1.82609703126e-277
+.double 1.30976769176e+75
+.double 3.00156879215e+200
+.double 2.38396933415e+81
+.double 2.26058389744e-295
+.double 1.75982907939e+95
+.double 7.22537205327e+85
+.double 4.40904412781e-152
+.double 2.57915429111e-138
+.double 87737046.8935
+.double 3.28532731019e+13
+.double 4.44396075658e+183
+.double 1.8134377153e+13
+.double 5.01379017351e-302
+.double 1.74963300735e+289
+.double 2.38160563532e+49
+.double 1.94763906138e-209
+.double 3.33592496647e-06
+.double 2.47059946801e+34
+.double 1.25840356066e+51
+.double 1.04106450877e-200
+.double 2.15839742809e+259
+.double 1.35698891617e+275
+.double 1.86403964492e-23
+.double 2.77740226011e+26
+.double 6.88577033001e+25
+.double 9.81140600098e+293
+.double 2.0458079904e-103
+.double 4.35519367171e+215
+.double 1.97025955539e-212
+.double 3.97860258255e-68
+.double 1.35832219646e-52
+.double 1.1281589989e+256
+.double 7.45334069766e+187
+.double 8.20846056441e-106
+.double 3.84327405763e+37
+.double 2.38113937484e-203
+.double 1.37129471569e-303
+.double 2.26325289281e+296
+.double 1.09636448814e+169
+.double 5.5284111175e-264
+.double 2.26020060567e+105
+.double 9.03851487607e+235
+.double 2.23986209461e+169
+.double 1.74813939096e+33
+.double 3.49989204694e+173
+.double 7.83297521098e+205
+.double 5.39273756721e-18
+.double 2.67963234396e-244
+.double 1.120432298e+45
+.double 3.68160655693e-262
+.double 3.20187348827e+289
+.double 3.08812579871e+97
+.double 7.73914378989e-35
+.double 1.97777479026e+25
+.double 1.58288881273e-194
+.double 1.04928318087e+78
+.double 9.49236662833e+204
+.double 8.47486843825e-41
+.double 3.1652785645e+41
+.double 3.43024623886e+250
+.double 4.68141929709e-119
+.double 1.23177538362e-53
+.double 2.2555254038e-241
+.double 1.28579082782e-46
+.double 2.04942690529e+158
+.double 2.51393393988e-08
+.double 4.12567655236e+81
+.double 9.06984821524e+201
+.double 8.60281145083e-196
+.double 1.3138196704e+216
+.double 4.40605347379e-127
+.double 4.7098933621e-70
+.double 1.49879643956e+265
+.double 2.8753704458e-136
+.double 1.1349613208e+179
+.double 9.26717272115e-133
+.double 2.70178275215e-179
+.double 2.77657443201e+34
+.double 2.85942561001e-128
+.double 7.04103773747e+44
+.double 5.40015898832e+292
+.double 3.67397469448e-242
+.double 2.20219161566e-180
+.double 2.40223314607e-84
+.double 1.52301550715e-223
+.double 1.05732837297e+282
+.double 1.13035974401e-288
+.double 2.232666461e+185
+.double 1.68177707154e+271
+.double 1.85255217075e+148
+.double 2.36770664854e-158
+.double 6.68891065508e-91
+.double 5.57425852468e+201
+.double 6.37946613431e-52
+.double 2.03674401546e-149
+.double 3.95837683718e+65
+.double 9.60833923197e-241
+.double 8.35487948381e+31
+.double 2.17326972495e-249
+.double 7.38388880146e-157
+.double 7.81275605423e+72
+.double 5.07851144352e-67
+.double 4.83584571045e-219
+.double 2.94336178246e-231
+.double 1.52563526424e+144
+.double 1.69808558097e+137
+.double 7.88283292017e+223
+.double 1.43542277405e-173
+.double 2.8104042102e-139
+.double 8.98872221659e-100
+.double 1.13306164541e-188
+.double 3.20204337873e-75
+.double 2.93386917319e-207
+.double 1.18112769214e+201
+.double 3.19992230951e-07
+.double 1.18783392553e-223
+.double 5.94603189689e+31
+.double 8.34911477602e-136
+.double 1.454448564e+168
+.double 1.80978580959e-31
+.double 3.02377897004e+26
+.double 5.17413419919e-59
+.double 1.10435598816e-163
+.double 61670249298.5
+.double 1.61895543969e-182
+.double 2.34844094725e+47
+.double 7.99682839515e+71
+.double 8.87152879068e-116
+.double 2.37923285101e+134
+.double 4.66246118343e-45
+.double 3.38442508819e+26
+.double 1.23573339803e-195
+.double 2.6589288937e-95
+.double 2.07423866018e+195
+.double 1.59235925023e+184
+.double 3.66737070244e-113
+.double 3.91047958947e+61
+.double 5.38346719355e-146
+.double 1.9482492505e-236
+.double 6.84592233477e+12
+.double 4.71699892672e-201
+.double 2.33140014739e+273
+.double 2.18841629531e+260
+.double 6.72880853996e+238
+.double 1.78470958234e+282
+.double 3.79266677579e+229
+.double 9.48410402267e+22
+.double 3.48067673569e+65
+.double 3.32056402284e+73
+.double 3.66615184843e-06
+.double 5.15596603612e+237
+.double 1.58417010343e-136
+.double 7.41936379114e+122
+.double 4.52412655987e-163
+.double 3.14138334245e-272
+.double 3.90934318246e-194
+.double 1.3809929877e+68
+.double 9.45987610528e+57
+.double 2.38837858954e-124
+.double 1.77063136418e-201
+.double 3.34319314412e+132
+.double 5.21840379305e+258
+.double 3.25571166898e+206
+.double 8.29083855037e-245
+.double 1.4119331753e+244
+.double 3.74338091526e-178
+.double 5.04068943255e+45
+.double 3.05479938993e-162
+.double 3.61785438552e-168
+.double 3.03846959521e+80
+.double 2.89432734446e+72
+.double 1.17898808068e+290
+.double 1.05768595767e+169
+.double 1.74985574973e-102
+.double 6.51820510595e+82
+.double 2.55083722159e-121
+.double 0.00399745534471
+.double 2.38328597096e-274
+.double 9.22227291561e-303
+.double 5.80576725593e+265
+.double 4.15679163852e-225
+.double 7.69670944858e+172
+.double 4.17450240182e-64
+.double 3.13077564644e+173
+.double 2.42654059444e-257
+.double 9.93949235139e-309
+.double 5.08832434901e-273
+.double 1.00824397781e+68
+.double 8.41520193181e-198
+.double 1.32929900517e+16
+.double 5.70916449001e+198
+.double 5.43192293805e+272
+.double 1.18174005431e-306
+.double 7.303373267e-158
+.double 3.12130130024e+229
+.double 8.87981650835e-20
+.double 4.38292039525e-06
+.double 1.42172413952e-236
+.double 1.51560111608e+54
+.double 1.1329561083e-91
+.double 1.62598216442e-296
+.double 7.04353290069e-286
+.double 3.98759042458e+158
+.double 2.71893117684e+221
+.double 2.14818286048e+226
+.double 2.4522493358e+111
+.double 4.00896502014e+176
+.double 3.71404747782e+77
+.double 7.30258917409e+220
+.double 1.34472570224e-153
+.double 9.95258935314e-69
+.double 7.18318373032e+43
+.double 6.60892838826e+191
+.double 1.6314248944e+139
+.double 1.00745750041e-94
+.double 5.17015360898e-14
+.double 4.29668450922e+39
+.double 3.0654719451e+139
+.double 1.46837815389e-280
+.double 2.86899815096e-251
+.double 7.29560025973e-104
+.double 6.9215030438e+144
+.double 1.63722959618e-06
+.double 1.77913118251e+24
+.double 0.00540902493285
+.double 3.38044446195e+20
+.double 1.34036821792e-150
+.double 1.25750474129e+92
+.double 1.89310380971e-07
+.double 1.6166732635e+266
+.double 2.39401226712e-256
+.double 1.23150010547e+42
+.double 4.6018424097e-33
+.double 5.57321072982e+301
+.double 1.1002431684e-134
+.double 3.04678586874e+226
+.double 2.06667581226e-134
+.double 5.27095326012e+161
+.double 2.46617389571e+54
+.double 1.09558036756e+300
+.double 6.73581416956e+69
+.double 4.29783894834e+117
+.double 1.726899134e-234
+.double 4.60981214801e-82
+.double 6.07551809122e-208
+.double 1.80142542245e-35
+.double 2.21568455581e+89
+.double 3.61679335793e-108
+.double 8.97119759069e-69
+.double 8.45251548455e-60
+.double 1.20745787809e-303
+.double 0.000887374350439
+.double 2.99312112028e-49
+.double 1.82068391124e-243
+.double 7.50364003891e+133
+.double 7.5384983934e-185
+.double 1.99431517547e+47
+.double 4.97895394585e+113
+.double 6.16944266869e-235
+.double 4.19017317366e+265
+.double 2.8092291195e+49
+.double 4.00458122175e+204
+.double 7.60911747703e+66
+.double 5.15725765741e-170
+.double 2.36296897201e-06
+.double 1.54586641212e-158
+.double 1.0622008784e-48
+.double 6.60730319746e+264
+.double 6.11059689539e+246
+.double 1.35121078183e+286
+.double 6.88940122529e+16
+.double 1.02531594651e-36
+.double 6.69632412031e+37
+.double 1.36006269615e+178
+.double 1.47823205252e-20
+.double 2.78562061641e+170
+.double 5.93609714679e+154
+.double 3.02190263274e+167
+.double 9.14752362015e-14
+.double 1.98762709724e-249
+.double 1.65682748968e+167
+.double 3.49355996029e-217
+.double 1.99378113121e-304
+.double 6.30004368601e+127
+.double 1.38080273082e-71
+.double 9.11621016728e-82
+.double 9.47067460218e+101
+.double 3.36572181045e+143
+.double 2.68069855558e-195
+.double 8.81810042317e+286
+.double 1.50637484616e+122
+.double 3.77280457696e+282
+.double 6.11064345682e+230
+.double 8.40396154158e+37
+.double 1.31543758767e-191
+.double 9.22013506519e+285
+.double 3.98076787126e-208
+.double 2.39684578731e+60
+.double 2.82292851066e+199
+.double 5.0296573603e+224
+.double 1.62990704192e-15
+.double 6.32289964757e-06
+.double 9.9937607178e-206
+.double 4.02103354201e-232
+.double 4.1360794206e+61
+.double 5.51239458295e+278
+.double 6.12433440477e-202
+.double 7.95678289581e-98
+.double 9.7469186149e+73
+.double 5.33630596127e-306
+.double 3.94440524109e+179
+.double 5.92582620924e-245
+.double 2.19176958563e+234
+.double 4.75149419227e-24
+.double 7.33372339501e+140
+.double 6.7517046629e+41
+.double 2.59583824479e-105
+.double 4.64434134667e+274
+.double 1.26486492518e-236
+.double 5.51409894846e+121
+.double 7.36021731207e-257
+.double 2.16115950532e-120
+.double 2.33392331757e+280
+.double 3.17376202769e-240
+.double 3.71037929807e-249
+.double 4.7887290203e-160
+.double 2.00435020596e+267
+.double 7.02451011305e+31
+.double 9.34131940588e-89
+.double 1.10696123992e-203
+.double 4.02537568063e+110
+.double 9.73684922901e+306
+.double 8.89580356116e-79
+.double 1.1137540185e-76
+.double 5.24006314911e+203
+.double 7.69669800967e-124
+.double 1.16516448983e+216
+.double 6.03861434598e+47
+.double 4.76337339882e-113
+.double 1.8156299587e-96
+.double 1.68055834554e-208
+.double 1.86883816019e+70
+.double 3.47423428111e+168
+.double 4.93388177719e+162
+.double 2.68537475314e-42
+.double 2.86724569884e-242
+.double 1.12215091302e+305
+.double 3.69621624409e+76
+.double 2.09025174009e-270
+.double 2.15823912292e+306
+.double 1.69917829292e+14
+.double 1.32219362716e-119
+.double 2.17287658692e-226
+.double 3.68978905125e-159
+.double 3.08071179305e+183
+.double 1.90831461409e-243
+.double 5.58972389564e+43
+.double 2.10159056933e-61
+.double 3.78091039426e+213
+.double 1.40764357518e+167
+.double 1.28860469549e-169
+.double 2.93457092276e-172
+.double 3.1093682806e-139
+.double 1.30805648379e+153
+.double 2.30519248557e-271
+.double 1.59896397711e+180
+.double 2.03361408113e-123
+.double 1.11972340006e+106
+.double 1.26788737722e-226
+.double 4.46962922222e+213
+.double 9.25420830084e-302
+.double 1.05585110699e-36
+.double 1.74731120989e+232
+.double 4.32348920525e-85
+.double 5.34999030557e-302
+.double 3.23561886091e+176
+.double 1.57697800668e+97
+.double 2.99007460504e-229
+.double 1.19164372472e-217
+.double 3.79432125977e+282
+.double 2.5844852362e-83
+.double 2.08517652138e+273
+.double 2.75051056226e-64
+.double 5.94783887098e+27
+.double 1.09963707252e-179
+.double 1.19362688006e-277
+.double 1.79172691039e+131
+.double 3.50549022808e+56
+.double 1.17595401026e-154
+.double 2.18614032064e+279
+.double 3.01845081878e-119
+.double 5.78885544815e+84
+.double 237.420777067
+.double 4.8565092996e-166
+.double 5.97520356191e+49
+.double 2.11682322908e-309
+.double 2.61927936465e+68
+.double 1.04653618082e+84
+.double 3.22278596756e+25
+.double 2.54067205536e+87
+.double 2.58039119795e-41
+.double 1.18368717145e+151
+.double 2.0107168996e-306
+.double 5.31665402002e-254
+.double 5.6303758361e-173
+.double 1.30849555216e+225
+.double 3.80992432982e+272
+.double 2.03306627461e+96
+.double 8.32227588492e+169
+.double 4.45687383181e-39
+.double 2.08600579619e+306
+.double 1.82070025388e-82
+.double 2.35766116979e+197
+.double 2.68682926925e-106
+.double 9.5118083435e-92
+.double 5.09743013363e-49
+.double 1.95338058631e-110
+.double 4.0945573847e-81
+.double 7.78351450134e+135
+.double 2.74095928454e-151
+.double 1.87190164664e+156
+.double 3.1190418403e+301
+.double 5.35472965938e-05
+.double 8.19353558296e+17
+.double 5.2855324586e+275
+.double 1.25969454268e+112
+.double 1.61601278522e-80
+.double 6.03905386063e-10
+.double 1.54909932585e-10
+.double 1.7685389657e+42
+.double 1.49780315844e+247
+.double 7.93066724593e+237
+.double 1.25760999911e-243
+.double 1.45275281245e-143
+.double 1.97972650689e-289
+.double 7.9262585526e-194
+.double 6.08750886295e+66
+.double 2.43210064709e-238
+.double 2.84307798615e-51
+.double 8.78206746156e+101
+.double 1.04434350771e-207
+.double 2.00067719818e-232
+.double 5.02473195764e+103
+.double 1.69103584589e-224
+.double 2.45408575115e-191
+.double 3.95360804598e+134
+.double 8.5570424582e+219
+.double 2.24191992427e-265
+.double 6.40368082546e-263
+.double 1.33206254788e-76
+.double 4.4590026381e+218
+.double 1.46785390215e-71
+.double 4.90442381182e-309
+.double 3.62113318633e-90
+.double 6.77889897186e+304
+.double 1.62093033819e-207
+.double 1.65588329127e-144
+.double 1.48397134115e-65
+.double 1.30831508822e+250
+.double 9202.03458539
+.double 8.5905618144e+284
+.double 1.06924754801e+100
+.double 2.67463710519e+217
+.double 7.38612419212e+220
+.double 1.40124766111e-120
+.double 4.32046010532e-300
+.double 3.75732561596e-76
+.double 5.6612605953e+250
+.double 3.2224407992e+247
+.double 1.24736968014e+241
+.double 6.62379164472e+64
+.double 1.76880856307e-270
+.double 1.00878347209e+281
+.double 6.09865311034e+46
+.double 8.79240475032e+221
+.double 6.85602923778e-305
+.double 6.14955589306e-169
+.double 1.20508006935e+244
+.double 9.8936449391e+290
+.double 3.71267665705e-300
+.double 2.50513965105e-234
+.double 2.37246354032e-135
+.double 1.95275371253e-254
+.double 3.11033791516e-20
+.double 4.37099637416e-30
+.double 1.62668850562e-139
+.double 4.70466629198e+29
+.double 4.76099763981e+215
+.double 4.63459837695e-175
+.double 4.65855705114e+141
+.double 5633564.93921
+.double 1.44099583929e-228
+.double 5.27929214936e+300
+.double 5.07956473233e-138
+.double 4.2902453988e-107
+.double 3.14679008933e-211
+.double 1.5249895585e+255
+.double 6.5799484769e-254
+.double 7.92185817228e-189
+.double 1.11446751617e-274
+.double 6.77103684394e+211
+.double 1.27672197107e-16
+.double 6.66850326904e+296
+.double 2.05203030614e+224
+.double 8.97720740477e+160
+.double 6.40996122749e+278
+.double 7.96198261269e-304
+.double 2.994316528e-205
+.double 4.59305385841e-187
+.double 3.46686003049e+291
+.double 1.40523841797e-182
+.double 1.70419254857e+307
+.double 1.15240627585e-289
+.double 1.20637802299e+207
+.double 4.77475522012e+70
+.double 1.53489474508e-75
+.double 3.9635527741e+27
+.double 9.6402017348e-20
+.double 6.72733632568e+188
+.double 8.19970680632e+243
+.double 0.000755182491179
+.double 2.05483786671e+225
+.double 3.69060983203e-99
+.double 6.18950940457e+210
+.double 1.34595359404e-218
+.double 2.55278334764e+76
+.double 2.22446925427e-224
+.double 1.09261325345e-293
+.double 1.2421509308e+120
+.double 1.21592065943e-244
+.double 5.77789152067e+156
+.double 1.67440689167e+97
+.double 1.2068016432e-172
+.double 1.73268387883e-166
+.double 7.14730314357e+101
+.double 1.81268720236e-147
+.double 1.14810754801e+175
+.double 1.18037342355e-63
+.double 5.60141335274e-148
+.double 2.55133778439e-228
+.double 1.57126279311e+296
+.double 5.56475374828e-104
+.double 6.88572757448e+256
+.double 1.00785565167e-49
+.double 1.23231561695e-76
+.double 1.57733418343e-281
+.double 1.27066579186e-218
+.double 3.3170950094e+67
+.double 1.06003035005e-07
+.double 6.55176481965e+127
+.double 2.34515418602e+282
+.double 4.74362510453e+269
+.double 2.82519262694e-248
+.double 3.53599597186e+214
+.double 1.52123024845e+110
+.double 5.69905547227e-241
+.double 1.68672510804e+22
+.double 2.06385090812e-44
+.double 8.70734250024e-55
+.double 4.22587111144e+21
+.double 1.171088455e-125
+.double 7.43751910723e-22
+.double 4.44374800888e+128
+.double 5.54173436715e+23
+.double 1.47333684048e+151
+.double 2.29083949182e-156
+.double 1.44088952151e+137
+.double 1.37484704519e-224
+.double 1.25164020881e-278
+.double 6.06499216202e+59
+.double 1.90576819438e-225
+.double 1.82115257007e-304
+.double 2.15074394424e+44
+.double 6.01755896571e+144
+.double 3.45479913727e+223
+.double 1.65276755105e-62
+.double 2.43477300209e-58
+.double 1.64209156695e-90
+.double 5.17275498611e+90
+.double 1.09054883364e+23
+.double 3.1696747859e+58
+.double 2.40561682636e+71
+.double 1.05906374726e+179
+.double 1.04991788492e-169
+.double 2.20126871259e-92
+.double 7.07295681432e+223
+.double 1.4412942561e+119
+.double 9.48508470611e+225
+.double 4.03227569336e-48
+.double 5.21328126846e+244
+.double 1.6459633681e+25
+.double 9.80484786068e-60
+.double 2.17193885853e+174
+.double 3.50153921992e-146
+.double 4.60755897099e-195
+.double 3.25919281092e+49
+.double 2.20658466286e+153
+.double 4.41254095705e+262
diff --git a/isa/rv64uv/data_fw.h b/isa/rv64uv/data_fw.h
new file mode 100644 (file)
index 0000000..cfeba20
--- /dev/null
@@ -0,0 +1,4097 @@
+.align 2
+.float 5527.22204077
+.float 1.5241163985e-09
+.float 1.0716292843e+17
+.float 2.71967022688e+19
+.float 2.70880649082e-35
+.float 7.55333096332e+18
+.float 3.12220172139e+12
+.float 1.23235770812e-13
+.float 2.62464913883e-20
+.float 2.27315574488e+36
+.float 5.50155785572e+15
+.float 2.8931179311e+26
+.float 3.58727932926e-30
+.float 8.62588318435e-16
+.float 89.890060027
+.float 5.77023439439e-22
+.float 3.1346969609e-30
+.float 1.62074219366e-12
+.float 3640.24925559
+.float 2.46457601634e+12
+.float 2.79904152104e+37
+.float 9.45205745358e+36
+.float 22714379223.7
+.float 45.3769711516
+.float 6.97578276342e+26
+.float 4.26465551752e-19
+.float 3.6217416877e-33
+.float 1.87062574459e+27
+.float 4.72693222903e-05
+.float 7.21152636444e+16
+.float 441159995.531
+.float 1.25560888101
+.float 843728291.119
+.float 2.97430616122e-08
+.float 2.55959542749e+22
+.float 1.15959490048e-16
+.float 0.00188623666077
+.float 680349331686.0
+.float 2.43327941612e+25
+.float 2.14887703004e+33
+.float 8.8016440385e+19
+.float 7.88111163478e+35
+.float 2971740710.24
+.float 4608392.82192
+.float 9.26133303809e+33
+.float 9.57598079163e+33
+.float 7.47732181835e-27
+.float 4.47233692893e-36
+.float 1.46752850916e+27
+.float 0.00214975695539
+.float 2.37376961117e-16
+.float 3.37183428271e-34
+.float 1.00434329014e+37
+.float 2.50701700801e-19
+.float 2.85303019697e+36
+.float 7.52686841379e-34
+.float 2.30836194346e-26
+.float 1.09109930974e-05
+.float 1.2154286759e+26
+.float 24861737.545
+.float 3.14396603222e+17
+.float 1.53765232394e-37
+.float 8.64143798694e+26
+.float 4.85760513161e+23
+.float 2.65586912013e+26
+.float 1.91788716498e-26
+.float 3.08982989491e+27
+.float 8.45181041468e+18
+.float 3.29867256334e-07
+.float 3.65946513921e+25
+.float 4.06042626257e+36
+.float 6.39790524258e-07
+.float 1.27551440832e+12
+.float 5.27664840533e-18
+.float 8.71688237466e-26
+.float 2.87735786139e-36
+.float 4.01492377749e-12
+.float 2.13263735887e-36
+.float 3.33792701763e-06
+.float 474.365522199
+.float 4.05451735366e-39
+.float 1.66896783134e-21
+.float 5.59995439296e-39
+.float 1.77041181832e+29
+.float 1.17878004277e-17
+.float 4738020.17453
+.float 1.00973508538e+31
+.float 8.30845904986e+18
+.float 1854.17328755
+.float 4.47283148982e+16
+.float 6.66688944094e+22
+.float 1.37466622846e+14
+.float 3.20451549718e-40
+.float 2.84038612799e+25
+.float 2.55468551132e-14
+.float 16.1804603647
+.float 3.00403627872e-26
+.float 2.26724427291e-24
+.float 9.7158096952e-26
+.float 2.15219500401e-35
+.float 4.19833497699e+30
+.float 4.22369139142e-21
+.float 8.8550049184e-31
+.float 1.861461022e+26
+.float 1.74340359695e-11
+.float 4.47815553339e-12
+.float 0.000448433118451
+.float 9.24179272924e+21
+.float 1.04691809103e-38
+.float 24238.1575714
+.float 14.7729278655
+.float 7.49069904264e-18
+.float 3.46016023883e+20
+.float 3.06908659958e-18
+.float 1.18256850501e-17
+.float 5.63083577805e-09
+.float 7.71811119112e+37
+.float 66.777464655
+.float 3.3275018926e-11
+.float 0.80535354419
+.float 2.92784098666e+31
+.float 568690660861.0
+.float 1.31428177328e+29
+.float 1.7957944968e+14
+.float 3276352260.62
+.float 3.58330713184e-39
+.float 26755099.2973
+.float 6.38700634146e-10
+.float 1.5485639327e+29
+.float 5.81974365655e+27
+.float 7.20494408047e-11
+.float 1.6606577107e-11
+.float 5.74886264927e+35
+.float 0.000103758843124
+.float 1.01964083248e+37
+.float 4.5197437495e-34
+.float 3.67261241067e-11
+.float 6.23478245436e-23
+.float 1.78760858123e-28
+.float 3459.68856191
+.float 3.25874119081e+27
+.float 4.45389952284e-13
+.float 5.99495179287e-16
+.float 1.29172747854e+37
+.float 2.91479886755e+13
+.float 0.000942585577388
+.float 5.63379066844
+.float 1.66850623196e+18
+.float 2.31976548076e+30
+.float 2.14113686583e+17
+.float 2.88052362606e+34
+.float 0.125390725406
+.float 9.03263771651e+21
+.float 4.96131962131e-28
+.float 8.66162706837e+33
+.float 1.40729409068e+17
+.float 2.9319816753e-19
+.float 3.05376234161e-26
+.float 2.99429899062e-06
+.float 4.20266135798e+36
+.float 4.40695096599e-31
+.float 3.31926058038e-19
+.float 5.18922369706e+23
+.float 7.31880638171e+28
+.float 1.26960781139e+28
+.float 1.53710843838e-18
+.float 6.30907585306e+35
+.float 1.32581104374e-11
+.float 0.000712141923735
+.float 1.03643462828e+32
+.float 1.54666620156e-05
+.float 6.52690911907e-12
+.float 3.00791861833e-32
+.float 6.05415750197e+16
+.float 0.000197562746507
+.float 1.47319725376e-37
+.float 1.11340699154e-23
+.float 190935.341381
+.float 4.45814028559e-13
+.float 121675.872677
+.float 2.26631875521e-20
+.float 2.46628097502e-39
+.float 2.31564950143e+32
+.float 0.0103619577863
+.float 1.99233413262e+23
+.float 1.50188528027e-06
+.float 39410.9103477
+.float 88609.2084737
+.float 6.51606779736e+12
+.float 6.53176630902e+33
+.float 2.25273986258e+17
+.float 3.44895027227e-34
+.float 1.13634335874e+18
+.float 5.62816319733e-16
+.float 6.37657446155e-36
+.float 83.1487553364
+.float 0.794722714976
+.float 2.96933035806e+32
+.float 2.79605307124e-19
+.float 980633709.754
+.float 853649316.209
+.float 5.61598165592e+22
+.float 0.0141342926386
+.float 176078461.18
+.float 2.16398440757e+30
+.float 0.00233413881346
+.float 3.23918454155e+31
+.float 7.84090187116e+18
+.float 1.48042434606e-14
+.float 2.26721753267e-22
+.float 1.83168300185e-20
+.float 5.11942250495e-30
+.float 9.25597884305e+35
+.float 0.00418972796407
+.float 9.71184620276e+26
+.float 3.05901095219e-05
+.float 2.31013051388e+32
+.float 1.94104856914e+14
+.float 1.19058626291e-17
+.float 5.04804593418e-07
+.float 9.51837003984e-21
+.float 4.32398072875e-12
+.float 3.45993247662e-11
+.float 4.50736753939e-31
+.float 20.6165525432
+.float 8.84365937771e-32
+.float 5.55134019219e-38
+.float 1.16444842261e+27
+.float 7.8149633753e+34
+.float 1.07234792096e+20
+.float 1.13012770157e-07
+.float 1.80038759925e+25
+.float 1.82014466581e-17
+.float 1.47415590213e+25
+.float 11927809719.7
+.float 6.23880266507e-26
+.float 338386342059.0
+.float 3.32308189028e-34
+.float 2.03467355322e-33
+.float 142559.530451
+.float 7.48313578426e+30
+.float 2.28885691615e-29
+.float 1.07112777745e-28
+.float 9.15464918626e+15
+.float 8016332322.65
+.float 4.71809172558
+.float 2.07821112848e-20
+.float 1.24447017974e-20
+.float 0.00039508039504
+.float 6.4786023692e-16
+.float 470719803266.0
+.float 1.35375831348e+15
+.float 5884626.33759
+.float 1.13798224445e-07
+.float 0.131585749098
+.float 5.28515909743e-23
+.float 1.94393866349e-30
+.float 101.926945352
+.float 5.48886739768e+13
+.float 65702019.7045
+.float 1.59002671215e-38
+.float 5.37447000206e-23
+.float 5.65809755075e+14
+.float 5.92064023757e-21
+.float 6.60930542749e-21
+.float 3.26948978848e+32
+.float 1.44742351342e-28
+.float 2.92772166921e-23
+.float 1.35203604221e-08
+.float 1.88356227821e+36
+.float 1.93873395113e-29
+.float 0.326164748021
+.float 1.66617105975e-06
+.float 22926.2770574
+.float 8.55687141466e-27
+.float 3.93396750369e+13
+.float 1.04434892442e-30
+.float 1.2034528591e+31
+.float 1.09272272984e+15
+.float 1.35774717372e-17
+.float 1.19111221089e+13
+.float 2.08028250689e-26
+.float 0.182952058739
+.float 1.27199138822e-31
+.float 0.110401887091
+.float 5.24908337102e+14
+.float 680146454.876
+.float 1.90478938739e-16
+.float 2018579257.58
+.float 1.14672311885e-17
+.float 0.0198249572197
+.float 5.57582971496e-22
+.float 730311432445.0
+.float 145305.349456
+.float 2.22258912666e+19
+.float 9.90612192492e-34
+.float 1.86726828836e+37
+.float 255.41293663
+.float 1.91433797915e-25
+.float 5.38833020967e+21
+.float 8.76284910026e+28
+.float 5.89126630592e-24
+.float 7.90366198241e-13
+.float 7626599.70323
+.float 8.01972476416e-14
+.float 4.11654658248e+31
+.float 6.78220122324e-37
+.float 1.46739473097e-10
+.float 1.14354681281e+28
+.float 1.54510066855e+27
+.float 4.49620825412e-14
+.float 4.20160398692e+15
+.float 4.1581611661e+20
+.float 4.94542935383e-28
+.float 1.25549393962e-14
+.float 2.58597737329e+13
+.float 2.79931895467e-39
+.float 2.43292711703e+14
+.float 9.34308374803e-28
+.float 19207682479.8
+.float 3.79929648435e-14
+.float 1.26362195512e+29
+.float 21.3759098894
+.float 2068732374.46
+.float 6.61776725302e+25
+.float 2.18681832791e+34
+.float 166282759.512
+.float 4.87739680792e-12
+.float 3.03153256515e-36
+.float 3.38106788644e-25
+.float 1.92743777167e-33
+.float 9.450419226e+36
+.float 20355041708.1
+.float 7.31260227708e-22
+.float 1.55943339029e-12
+.float 1.93620384253e-21
+.float 4.78717495152e+29
+.float 5.95364358384e-09
+.float 2.04987110956e-34
+.float 1.46018977474e+33
+.float 8.5525851806e+17
+.float 1.41387443255e+23
+.float 1.20721480928e-32
+.float 1.93238070547e-38
+.float 1.03484771896e-12
+.float 2.57596476653e-24
+.float 4.57801058892e+25
+.float 9.19135143387e-39
+.float 4.48547675737e-11
+.float 190.53754184
+.float 147230351.243
+.float 8.60648391412e-21
+.float 8.71491857671e-38
+.float 3.50474110265e-34
+.float 1.48527801577e+18
+.float 1.67845675426e-37
+.float 7.20909364775e+28
+.float 6.13761716122e+35
+.float 7.61813404371e-17
+.float 9.79319248953e-10
+.float 710727.923398
+.float 1.23430426898e-13
+.float 3.49105696515e+28
+.float 3.65727667793e-06
+.float 8.6667278471
+.float 8.81264903051e-32
+.float 23412.4667505
+.float 3.43786943449e-30
+.float 8.81824795785e+35
+.float 2.01787749434e+32
+.float 1937335607.68
+.float 463.943736202
+.float 2.61963460277e+22
+.float 4.23178062854e-19
+.float 26916.1647846
+.float 5.92936402258e-22
+.float 3.14917147603e+19
+.float 1.69557008839e+24
+.float 5.49961697313e+20
+.float 204.65333394
+.float 923392148450.0
+.float 0.00013861343938
+.float 6.84501860482e+17
+.float 8.56094988427e-10
+.float 2.16580214105e+12
+.float 67855.0603069
+.float 7.00057790003e+12
+.float 668371.916976
+.float 1.53926147248e-19
+.float 1.89793243173e+23
+.float 3.6577043027e-12
+.float 1.04414976734e+16
+.float 2.96011983895e-38
+.float 7.60803004472e-31
+.float 4.34748087601e+12
+.float 4.20869436398e+27
+.float 4.24143704052e+15
+.float 3.46738738452e-25
+.float 2.36788411807e+29
+.float 1199206600.22
+.float 1.62191269809e+16
+.float 9.02352150061e-06
+.float 1.17517336507e-27
+.float 588103670214.0
+.float 3011686.87707
+.float 1849.27119665
+.float 2.24204210025e-35
+.float 3.28019813187e+23
+.float 2.34602290125e-08
+.float 49.1881552534
+.float 1.79585893935e+32
+.float 2.1342597697e-22
+.float 5.51131716734e-26
+.float 2.42231563125e+15
+.float 1.47840500953e+25
+.float 7.60563767594e-19
+.float 8.2494907713e-38
+.float 0.00172593952892
+.float 2.21584098546e+22
+.float 1.30295523538e-07
+.float 0.00147434774277
+.float 9.02898631696e+26
+.float 4.82563631584e+33
+.float 1.9729464341e-10
+.float 5.59591940146e-39
+.float 3.82861450513e+14
+.float 472539.043037
+.float 29.1489220883
+.float 7.87660097986e-39
+.float 28602870113.9
+.float 8.16363763053e-34
+.float 0.0226975344484
+.float 1.00139341564e-12
+.float 7.21735519087e+15
+.float 8.70049840564e-15
+.float 3.24706600826e+24
+.float 0.671888566037
+.float 1.72612944311e-10
+.float 523319.203283
+.float 0.0108116960063
+.float 2.92272608618e-12
+.float 9975047952.78
+.float 2.13751237406e-13
+.float 3.36809071135e+15
+.float 11508124416.6
+.float 6.24888262431e-23
+.float 1.26108475709e-27
+.float 7.23570688677e+16
+.float 4.88559937141e-29
+.float 3.5970822481e+22
+.float 1.91755090676e-22
+.float 4.54886076426e-27
+.float 0.00203237029294
+.float 3.49385190688e+36
+.float 0.313362001877
+.float 1.89086959938e-34
+.float 1.40019967873e+38
+.float 279927.581282
+.float 1.62692610735e+22
+.float 0.416963848097
+.float 1.48657396174e-27
+.float 1.85093859917e-33
+.float 3.20703984035e+31
+.float 7.35777488626e-33
+.float 381952100812.0
+.float 7515659686.49
+.float 2.84603129251e-37
+.float 8.58527569869e-19
+.float 2.10838079704e+33
+.float 1.06619955813e+15
+.float 1.55229896946e+25
+.float 1.21482240672e-20
+.float 1.937441552e+18
+.float 1.45061696224e-29
+.float 92.7368586085
+.float 4417.49637509
+.float 1.4569785967e-31
+.float 3.21286166791e-15
+.float 6.05098880625e-33
+.float 9.20447277453e+26
+.float 5.10395086681e-34
+.float 1.5003744696e-15
+.float 3.63186618133e-10
+.float 4.31160448567e+12
+.float 2.97784521222e+25
+.float 1.5225167053e+29
+.float 6.10962433523e-35
+.float 6.35836885409e+13
+.float 1.69720469529e+13
+.float 6.69092952273e-06
+.float 1.00760944861
+.float 1.0313320205e-27
+.float 2.27291045241e+28
+.float 0.0934107227832
+.float 4.0501531847e+13
+.float 2.07651099732e+33
+.float 1.28486720657e+17
+.float 68833820.9137
+.float 2.58378686207e-30
+.float 2.23059097861e+17
+.float 8.78279500936e-12
+.float 96942592854.8
+.float 9.28717918272e+32
+.float 1.2972341287e+26
+.float 2.9422082146e-17
+.float 4.89425998711e+36
+.float 1325927871.16
+.float 806601.837582
+.float 1.37924842915e-16
+.float 23375301731.0
+.float 1.19925771871e-05
+.float 1.96608624784e-34
+.float 1.6824334243e+26
+.float 2.2850827803e+12
+.float 4.63884333241e+32
+.float 2.64955866073e+35
+.float 4.29120890895e-15
+.float 232.664738336
+.float 0.000447391425909
+.float 2.21609144395e-06
+.float 1.22824635886e-12
+.float 6.61169997056e-14
+.float 4.34542974648e-16
+.float 7.69699862965e-18
+.float 1.92711098027e-10
+.float 2.57313067022e+33
+.float 4.21393053145e-18
+.float 4.68986916637e-27
+.float 34176801639.9
+.float 1.64873276065e+31
+.float 212362.450547
+.float 7.98143821967e+17
+.float 4.75710793276e+17
+.float 1.26153242402e+19
+.float 3.41963478215e-38
+.float 1.27674396929e+17
+.float 7.68559854201e+12
+.float 7.41555173839e+34
+.float 8.51830056391e+25
+.float 1.35803748299e+17
+.float 3.56242876105e+16
+.float 2.2792249419e+37
+.float 5267499.99454
+.float 2.99768669924e+36
+.float 5.66141915048e-28
+.float 0.000337993660844
+.float 1.29777051231e+32
+.float 5.96276447978e+26
+.float 8.69192358872e-19
+.float 8.47134708931e+18
+.float 6.9953500778e-39
+.float 5.71046570026e+33
+.float 2.08799279672e-22
+.float 7.22165684561
+.float 1.9645124421e+20
+.float 1.45893562988e+24
+.float 5.00869925951e+26
+.float 1.38413771762e+36
+.float 1.69282409806e-20
+.float 4.52593709886e+22
+.float 9.16382619812e-11
+.float 2.10971555482e+27
+.float 3.68858671849e+29
+.float 4.96394512849e-36
+.float 6.7446318248e+23
+.float 0.0225683780161
+.float 3.72470926716e+31
+.float 1.94529836243e+29
+.float 1.68837156679e-37
+.float 7.60650273975e+24
+.float 4.27523319531e+16
+.float 9.58355079206e+29
+.float 2.41042664595e-36
+.float 1.10721492401e-16
+.float 1.31468355439e+12
+.float 5.19967578931e-07
+.float 4.47727303211e-29
+.float 7.02084222665e+26
+.float 1.02990095703e+24
+.float 3.3305067677e-31
+.float 5.37352702337e+16
+.float 1.18169130516e+15
+.float 3.54326503119e-19
+.float 2.34315820759e-25
+.float 1.89175550474e-25
+.float 1.22982885412e+22
+.float 1.70126802307e+24
+.float 0.0604886363009
+.float 8.40538559483e-36
+.float 1.93114054488e-19
+.float 2.55295741294e+33
+.float 4.04416311825e-30
+.float 1.15506772841e+29
+.float 3.43146625745e-22
+.float 8.38648193439e+18
+.float 9.07721315992e+18
+.float 1.0679674043e+38
+.float 2.38730903335e-13
+.float 2.18471208753e+26
+.float 9.9789330339e+13
+.float 224112449.882
+.float 5.98479442753e-33
+.float 1196.36270748
+.float 12.443986959
+.float 3.1146441576e-14
+.float 4.16091867846e+29
+.float 1958651954.91
+.float 1.61558502768e+22
+.float 4.1278784197e+27
+.float 9.57237370698e+30
+.float 7.83691415641
+.float 4.97657731662e+28
+.float 7.48210845517
+.float 1.34911796127e-18
+.float 5.14643588462e-31
+.float 1.36106840733e-30
+.float 3.44596544772e-37
+.float 3.04477886121e-14
+.float 1.8495730207e-09
+.float 6.59623907457e-22
+.float 7.30084639827e+12
+.float 3.32260315061e+28
+.float 3.16089239384e-37
+.float 4.57994989353e-21
+.float 6.44925162778e+31
+.float 1.58389974917e+38
+.float 6.49747056656e-41
+.float 1.23322284035e-23
+.float 1.20655393499e+29
+.float 3.01035574259e+18
+.float 1.64098183575e+21
+.float 1.88539013748e-11
+.float 9.14590489285e-26
+.float 3.97600757785e+37
+.float 1.17649087646e+24
+.float 1.48699788726e+25
+.float 14503683.3044
+.float 5.42908024021e-06
+.float 1.68119891908e-17
+.float 1.87854264623e+37
+.float 4.09676710618e-07
+.float 2.38553998792e-18
+.float 2.76422281565e+22
+.float 1481.78004363
+.float 1.32584853957e+32
+.float 4460633.40107
+.float 4.55783698011e-33
+.float 9.86466349549e-28
+.float 2.2087407199e+37
+.float 4.15159479737e+26
+.float 658.247273018
+.float 1.91589448794e+36
+.float 0.16452617378
+.float 1.10769585378e-32
+.float 1.6528626915e-07
+.float 2.25216040289e-12
+.float 1.27134874151e-18
+.float 9.81333561913e-09
+.float 1.44583161159e-29
+.float 3.17521139875e-29
+.float 3.2797633625e+19
+.float 2.03801651999e+37
+.float 14.9674808328
+.float 2.12309148996e-21
+.float 3.77016332692e+37
+.float 2.26969005444e-10
+.float 313808957.24
+.float 1.63569085646e-24
+.float 4.18853410153e+26
+.float 4027.63040269
+.float 1.15895595239e-09
+.float 1580603817.87
+.float 1.51533812952e+26
+.float 1.16370778046e-08
+.float 6.89538711346
+.float 954439542974.0
+.float 8.77326017099e+20
+.float 8.44476221769e+25
+.float 2.06813423835e-06
+.float 1.40568364661e+17
+.float 1.30372595769e-18
+.float 3.73154629713e-23
+.float 1.45439357961e-23
+.float 1.20957424588e-12
+.float 1.43465293104e-12
+.float 3.12844234648e+29
+.float 1.51032129582e+22
+.float 1.88848913305e+18
+.float 3.53583006771e-09
+.float 3.63850153993e+12
+.float 6.23180162187e-12
+.float 3.66002176272e-24
+.float 1123933116.72
+.float 1.25413337658e+31
+.float 40574541867.0
+.float 1.04150095436e-28
+.float 7.96623095865e-22
+.float 1.46209986601e-16
+.float 3.08759806493e-26
+.float 7.21520159703e+24
+.float 1.06806665996e+35
+.float 4.31882703899e-38
+.float 6.03763455548e-08
+.float 4.52601276155e-29
+.float 1.80549844479e-18
+.float 3.5441887836e+25
+.float 474.195411458
+.float 5.76136381451e-40
+.float 3.8963432362e+31
+.float 1.86048679496e-07
+.float 3.17718474107e+23
+.float 0.000188422175068
+.float 276555582276.0
+.float 7.04931012232e+20
+.float 56856959017.7
+.float 0.0551651734885
+.float 2.38615243395e-06
+.float 8.16512490456e-29
+.float 2.5837866723e-39
+.float 8.53196557328e+34
+.float 39.399443785
+.float 2.75360632144e-31
+.float 1.294939587e-05
+.float 9.34093064124e-32
+.float 4.00628236946e+26
+.float 1.08874923601e-06
+.float 658323739039.0
+.float 2.29279004662e-32
+.float 0.0148083712018
+.float 3.0045285991e-21
+.float 4.36281223655e+28
+.float 1.18983766607
+.float 3.61962382714e+24
+.float 1.38012234506e-17
+.float 1.51723197366e+36
+.float 3343377546.46
+.float 1.89010086833e-26
+.float 6.74606706946e-39
+.float 229890842.782
+.float 1.87941390825e+24
+.float 2.22537953875e+27
+.float 2.85054289511e-13
+.float 4.49964330725e+29
+.float 0.00745608504955
+.float 1.5632378588e+30
+.float 4.69482645039e-37
+.float 1.58275567991e-09
+.float 1.17049036919e-07
+.float 6.15072788455e-37
+.float 2.77040762399
+.float 3.71411439983e-15
+.float 5.4232045718e+29
+.float 8.19199022891e-16
+.float 2.68093756631e-28
+.float 6.0242046833e-27
+.float 4.77248397793e-22
+.float 1.25055990575e-26
+.float 1.09130613322e-35
+.float 4.82814068566e-37
+.float 1.79163831218e+23
+.float 3.8209351195e+36
+.float 6485.41691054
+.float 103232670.599
+.float 3.7882250526e+28
+.float 1.51496808153e-33
+.float 17844827086.7
+.float 371181216.589
+.float 8.47000905683e+27
+.float 1.4939728423e-31
+.float 7407002221.82
+.float 9.30837843573e+18
+.float 8.67394661637e-26
+.float 2.95130145767e+19
+.float 3.5110883607e+31
+.float 1.1349960042e+38
+.float 1.57842988509e-21
+.float 52959.1720882
+.float 43777781.8671
+.float 3.33624408696e+30
+.float 4.99786604548e-09
+.float 5526320.78025
+.float 4.79129372115e+17
+.float 1.89260330859e+34
+.float 9.60896663604e+25
+.float 8.71714264341e+18
+.float 0.00654763687255
+.float 0.00872606950071
+.float 5.27132152724e+32
+.float 1.21221721126e-23
+.float 1.48704700189e+27
+.float 8.14222743903e-29
+.float 1.18753526042e+30
+.float 809633593229.0
+.float 4.75437475893e+34
+.float 7.16339356609e-37
+.float 7.04864555507e-14
+.float 1.23374304031e-10
+.float 1.24618594811e+21
+.float 0.0116460567223
+.float 6.27518280832e+33
+.float 2.83896453675e-11
+.float 252274.049987
+.float 3.10005399216e-29
+.float 2.81376412749e+26
+.float 523647.472963
+.float 667376897.76
+.float 5.56755361719
+.float 1.73241495393e-09
+.float 1.39569120647e+29
+.float 1.00181877587e-35
+.float 7.4921832853e-05
+.float 9.94345678137e+30
+.float 4.15619980552e-19
+.float 26840464.0127
+.float 4.36762379991e+27
+.float 9.53555924137e+36
+.float 2028365961.78
+.float 3.478919523e+34
+.float 3.76633220358e-27
+.float 118331.031021
+.float 3.4334435128e+21
+.float 5.13543379614e-06
+.float 67978.669077
+.float 0.0089975072701
+.float 8.72950397744e-24
+.float 2.46449189822e-23
+.float 6.86935760282e-33
+.float 8.3100747936e-24
+.float 3798837454.04
+.float 3.10066316993e+27
+.float 4.86405539956e+29
+.float 2.99018504121e+21
+.float 455.507526595
+.float 9.72164127401e+18
+.float 5.46517487307e+27
+.float 2.14814447145e-19
+.float 1.98371522494e+29
+.float 1.91158175774e+26
+.float 2.38564899224e-05
+.float 1.76299755414e-25
+.float 4.9721557525e+30
+.float 1.51737396556e+12
+.float 2.83416756723e+21
+.float 7.62116086948e-26
+.float 7.40593872085e+34
+.float 1.18980392553e-13
+.float 31346692223.6
+.float 1.09092750149e-05
+.float 3.25906015735e-17
+.float 1.9651052571e+30
+.float 2.87872887419e+29
+.float 4.40371185036e-28
+.float 2.13623001821e+21
+.float 8.01071816014e+23
+.float 3.74571254403e+18
+.float 9.11533254668e+36
+.float 4.3837154549e-08
+.float 3.67013595577e+19
+.float 1.1148893598e-10
+.float 1.00791803586e+30
+.float 1.41689090627e+14
+.float 1.63339723493e-38
+.float 0.0465172157905
+.float 3.99860094961e+14
+.float 1.79445596872e+22
+.float 362557.414849
+.float 5.10226375624e+33
+.float 1.39621321139e-31
+.float 2.24360177315e+13
+.float 1.91422263169e+33
+.float 4.66169210228e-17
+.float 3.70130581336e+12
+.float 3.55882666716e+35
+.float 8.84137209166e-22
+.float 6.39894171791e-05
+.float 1.49243046298e+22
+.float 2.37731869206e-21
+.float 4.76670566628e-22
+.float 2.59021097124e-17
+.float 672429156644.0
+.float 439822.042134
+.float 769541982702.0
+.float 4.90838933966e-28
+.float 2585738489.29
+.float 1.67283204985e+32
+.float 3.28209448675e-37
+.float 7.50403380905e+20
+.float 0.046504829898
+.float 2.30486015843e-32
+.float 6.2071460283e-07
+.float 3.57050851488e+15
+.float 1.23451045215e-35
+.float 2.59919216201e-14
+.float 3.85255785543e-26
+.float 1.09092692856e-24
+.float 3.84966451572e-28
+.float 0.831811524462
+.float 26.7118587159
+.float 1.4264102e+20
+.float 1.18910734124e-08
+.float 3.59130436364e-33
+.float 5.09908286373e+31
+.float 843.057848808
+.float 2.78296727535e+34
+.float 7.56024076381e-26
+.float 3.38294901211e-26
+.float 6.241890209e-15
+.float 3.57348216988e+13
+.float 387851120.658
+.float 2.29045476121e+17
+.float 3.48587150147e+35
+.float 4.1643167253e-29
+.float 1.37791605427e-17
+.float 1.92538273029e+19
+.float 3.69249557752e-29
+.float 5.35981547513e-38
+.float 3.96754875435e-18
+.float 1.13820505872e+17
+.float 3.7295476272e+24
+.float 8.58310266067e+27
+.float 19.7880075267
+.float 498.326810472
+.float 3.50174749727e-28
+.float 1.22191488274e-33
+.float 1.09508835648e-13
+.float 6.10527466029e-28
+.float 498.525356055
+.float 2.92182634812e-15
+.float 2.36363511563e+16
+.float 2.12816814067e-17
+.float 0.000426364804882
+.float 8.83960219632e-07
+.float 12092.5211083
+.float 2.35140455927e+27
+.float 3.27194698411e-11
+.float 2.76675693119e-33
+.float 0.632100927355
+.float 3.3129566492e-37
+.float 1.15833770373e-17
+.float 2.96598127729e-08
+.float 5.42441970581e+15
+.float 3.24943280678e-34
+.float 3.51159390031e-27
+.float 9.84807782725e-34
+.float 0.00051253617309
+.float 6.66726371387e-32
+.float 3.17552541417e+32
+.float 1.91130760146e-13
+.float 1.55359024782e+27
+.float 2.42841696952e-11
+.float 9.37784594409e+37
+.float 2.54798163062e+26
+.float 6.48133347037e-24
+.float 0.000115987570247
+.float 4.80948143724e+13
+.float 6.9708411299e-35
+.float 4.25284491661e-10
+.float 1.25330442316e+24
+.float 3.00954906598e+29
+.float 1.04173753194e-31
+.float 6.18750617735e-30
+.float 2.34233884893e-30
+.float 600992.091829
+.float 8.43629842451e+12
+.float 1.81502400445e-27
+.float 2.97998946483e-27
+.float 1.52168170479e-24
+.float 230.504965821
+.float 4.65209576445e-16
+.float 2.51373284638e-09
+.float 1.18489568042e+32
+.float 15.81173036
+.float 2.75683291939e-08
+.float 1.41880013028e+16
+.float 3.05213986393e+16
+.float 1.4275836076e-08
+.float 8.82564196429e-27
+.float 1.12003709678e+24
+.float 4.22287469539e+14
+.float 2.37572855028e-16
+.float 2.16660335844e-20
+.float 1.85391617079e-16
+.float 1.82089196788e-37
+.float 6.91756789636e-38
+.float 0.000261314154993
+.float 7.05614075493e+21
+.float 6.79437847806e-17
+.float 2.14491100285e-19
+.float 2.10527947532e+22
+.float 1.58353068517e-15
+.float 4.82640688489e-08
+.float 1.67422019741e-13
+.float 7.75317675669e+30
+.float 4.76900601565e-33
+.float 1.67247581183e-15
+.float 1.12523647056e+36
+.float 5.41180851492e+19
+.float 5.87687643105e-13
+.float 3.37314959614e-18
+.float 5.53130293033e+26
+.float 3.19665455816e+22
+.float 1.00777998759e+26
+.float 9.50617989107e-12
+.float 6.69795501554e+28
+.float 6.58734677317e-12
+.float 1.00830709713e+21
+.float 3.00060985757e+28
+.float 1.59729344753e-06
+.float 1.47741010764e+24
+.float 7.11441926436e-10
+.float 3.13081047703e-10
+.float 1.48035272263e-36
+.float 2.90097014722e-38
+.float 7437027983.0
+.float 398260006.804
+.float 1.29644310781e+17
+.float 8.01293810316e-25
+.float 1.00708737688e+23
+.float 9.02719345874e-24
+.float 9.36859304761e-39
+.float 9.29445459893e-07
+.float 1.36876428582e-09
+.float 5.36524776132e-33
+.float 2.05672200633e+30
+.float 3.62293306556e+19
+.float 1.89740337116e+27
+.float 4.72586930531e+35
+.float 2215299.94123
+.float 5.65634826124e-09
+.float 139459.079924
+.float 1.46271552948e-08
+.float 1.11795553299e-39
+.float 2.02867180276e+20
+.float 1.18673349309e-19
+.float 8.1406979513e-19
+.float 5.60725355359e-22
+.float 1.92012780146e+24
+.float 8.76262468362e-25
+.float 3.81861724139e-08
+.float 4.83916321101e-26
+.float 1002107548.92
+.float 0.0145542507829
+.float 4.17418902754e-07
+.float 0.0410071625465
+.float 165.985177528
+.float 5.56414291938e-21
+.float 8.52600342891e-33
+.float 2.327108835e-07
+.float 40929.1054466
+.float 0.15679471254
+.float 4.44269720043e-22
+.float 6.54315261199e-34
+.float 2.04444898211e-22
+.float 7.90345289758e+31
+.float 2.81525599787e-10
+.float 4.77604384714e-05
+.float 1.43859733961e-31
+.float 6.30819352987e+16
+.float 0.0738659037919
+.float 1.04660318441e-20
+.float 3.6670113965e+33
+.float 1.53489141003e+36
+.float 2.46066370884e-13
+.float 9.97169373765e+28
+.float 4.16474541729e-22
+.float 5.22525019318e-14
+.float 19016629.3386
+.float 0.361345101383
+.float 3.49223708499e+29
+.float 1.65033264288e+22
+.float 1.55478720793e-12
+.float 1.11658532026
+.float 1.18599288035e-15
+.float 7.23617795489e+15
+.float 2.54718614449e-21
+.float 741292820929.0
+.float 1.24731529377e-29
+.float 1.42197454396e+24
+.float 4.66261019804e-27
+.float 1.30115777564e+19
+.float 4.9212819082e+26
+.float 2.53668521308e+20
+.float 5.29496993328e-21
+.float 3.57249951133e+29
+.float 5.43978043406e+12
+.float 1.22592541756e+17
+.float 6.59634099255e+13
+.float 9.22007545743e-27
+.float 1.29313137099e+12
+.float 1.26513787699e+19
+.float 8.296539634e-06
+.float 2.2755127623e+19
+.float 4.73376035137e-19
+.float 8.0211620982e-07
+.float 2.87423708812e-33
+.float 7.46583947439e-20
+.float 4.91557574285e-29
+.float 5.03026299121e+24
+.float 2.42531008295e-05
+.float 1.70577981213e-23
+.float 4.08845896223e+21
+.float 4.40281110632e+31
+.float 7.63256552073e+12
+.float 4.25585445273e+13
+.float 8.8418715143e-17
+.float 3.85573640258e-19
+.float 1.44685576869e-30
+.float 1488483833.35
+.float 0.00461256265272
+.float 1.90910169422e-27
+.float 1.90499524201e+25
+.float 5.70604918827e-11
+.float 4.5219938092e+27
+.float 1.6853662187e-25
+.float 8.42618399574e-18
+.float 1.77138187801e+31
+.float 3155.04594932
+.float 4.336121842e-13
+.float 4.88472137592e+20
+.float 1.32617145911e-11
+.float 1.39815794714e-25
+.float 56692151688.9
+.float 6.81847046434e-12
+.float 1214.37551263
+.float 0.188944427253
+.float 2.50951853681e-38
+.float 4.48465137747e-33
+.float 1.50792970641e+24
+.float 3.92178172128e+16
+.float 16.8409513187
+.float 1.65773992287e+20
+.float 6.61424014797e-14
+.float 3.40249606127e-32
+.float 1.13047234581e-07
+.float 4.43685896747e-21
+.float 8.95769020608e-10
+.float 3.90946100871e+30
+.float 1.16243749162e+34
+.float 1.4539575721e-15
+.float 4.47293222593e-39
+.float 2.21221621272e-05
+.float 2.99826957567e-18
+.float 6.56767810212e+26
+.float 7.25521717735e+21
+.float 1.57890348235e-24
+.float 2.50815954586e-27
+.float 0.0208693829554
+.float 3.70916041566e+30
+.float 5567835.63723
+.float 1.63003122146e+32
+.float 1.34991363699e-30
+.float 0.00443421436041
+.float 6.59479382739e-29
+.float 0.00546255111033
+.float 1.14863957109e-24
+.float 7.69205002163e-19
+.float 1.15011179442e+30
+.float 8.31865663115e-13
+.float 3.08935738192e-34
+.float 1.79136230957e+15
+.float 1.08431996343e-07
+.float 0.0621596429624
+.float 7.58249255193e-29
+.float 1.88864870123e+35
+.float 56671117.1755
+.float 2.44417825956e+16
+.float 1.49247000008e+26
+.float 74.1741152816
+.float 3.18429880767e+13
+.float 2.93628338101e+35
+.float 191555713.301
+.float 2.76043053698e+26
+.float 509958360770.0
+.float 3.22496576746e-32
+.float 9.06615060277e-08
+.float 1.69386669887e-21
+.float 491.659999751
+.float 2.13520350267e+18
+.float 0.00087965601577
+.float 2.29966834843e+18
+.float 242374.679248
+.float 3.74922535293e-37
+.float 9.83050465389e+18
+.float 441.830874136
+.float 2.95106800726e-37
+.float 1.00116027876e-37
+.float 4.21429191984e-07
+.float 1.90990314673e-23
+.float 1941.20719505
+.float 1.55177600816e-18
+.float 5.52041870888e-25
+.float 4.40065461134e+22
+.float 8.35194002213e+31
+.float 4898525461.87
+.float 1.40486058618e-15
+.float 1.01496969096e+26
+.float 2.73809616006
+.float 4.31553910248e-39
+.float 3.01902352839
+.float 4.53149776122e-28
+.float 2.03218781275e+30
+.float 4.17634101904e+22
+.float 3.14658517963e-12
+.float 1.0754626397e-05
+.float 2.5957418743e+18
+.float 7.22188433846e+32
+.float 1.61356424384e-28
+.float 9.76852475232e-16
+.float 11558.8955877
+.float 86421886.6822
+.float 1.67480676117e-28
+.float 3.29026145117e-39
+.float 0.000217374169742
+.float 2.05266171903e-38
+.float 2.38637625697e-22
+.float 3.27111535283e-10
+.float 1.05643666195e-14
+.float 0.00687483276508
+.float 1.96374641277
+.float 12693.3428446
+.float 2.70958042616e+25
+.float 1.06536656769e+35
+.float 2.42913810864e+27
+.float 3.21007150533e+22
+.float 6.73854594298e+19
+.float 5.77666904841e-21
+.float 2.75614026772e-25
+.float 3.16139404228e+18
+.float 6.23721228157e-17
+.float 5.25380600767e-38
+.float 912.271870769
+.float 2.84953679531e-32
+.float 1.59416465764e+17
+.float 0.000171441318377
+.float 1.33975081055e-20
+.float 5.33377859794e+23
+.float 2.80782886073e-06
+.float 4.28869280388e-14
+.float 570068644.553
+.float 1.32017994439e+23
+.float 25047652.7742
+.float 7.90522055094e+29
+.float 0.0847839630097
+.float 1.17579301982e-31
+.float 6.73503462146e-11
+.float 1.37127219301e-17
+.float 7.62914842529e+29
+.float 1.62313560968e+32
+.float 0.925414350146
+.float 4.61732210997e-20
+.float 5.90444277916e-17
+.float 7.0281930359e-19
+.float 1.2992299864e-11
+.float 2.98272017577e+31
+.float 9.06729221499e+30
+.float 3.11521676784e-06
+.float 1340829786.08
+.float 4.35938785994e+31
+.float 1.48952877683e-06
+.float 4.54363431212e+31
+.float 7.76692121855e-26
+.float 1.05471154003e+30
+.float 1.58613370516e-34
+.float 9.9738540205e+34
+.float 581632.730155
+.float 1.20438055019e+12
+.float 8.06452564223e+26
+.float 1.96548466142e+14
+.float 74.034242539
+.float 2.79606705085e+35
+.float 3.07172703308e-22
+.float 0.113929286711
+.float 3.73985353678e+25
+.float 2661786147.41
+.float 0.00597549926832
+.float 5.56738070899e-19
+.float 1.31143717484e+26
+.float 1.16330888194e-33
+.float 1.54742231046e+33
+.float 6.56199863092e-24
+.float 4.02238459207e-11
+.float 3.08761179902e-06
+.float 6.82745852946e-06
+.float 1.41649704074e+36
+.float 1.4304656333e-18
+.float 3.83665802624e+13
+.float 2.76097393191e+24
+.float 3.11907415201e-07
+.float 2.12225822417e+20
+.float 4.19806781942e+29
+.float 2.91644765749e-08
+.float 1.5941053025e-21
+.float 1.25715364147e-36
+.float 7.51035037698e-07
+.float 8.0758881345e+19
+.float 3.27543959618e-32
+.float 1.13284234336e+22
+.float 216.191267363
+.float 1.13206898239e-31
+.float 4.42183047216e-33
+.float 1.3199053508e+14
+.float 2.41854267469e-18
+.float 1.85692433451e+25
+.float 5.61392117837e-25
+.float 3.71357751503e-37
+.float 8.18564302052e-22
+.float 2.41192377775e+17
+.float 1.47071573756e+34
+.float 1.54889331822e+35
+.float 2.08252571679e-36
+.float 4.2436808995e-29
+.float 6.18749797889e-38
+.float 3.5207527479e-14
+.float 9.70629791384e-16
+.float 1.76150339134e-32
+.float 9.6144635985e-35
+.float 25759627129.2
+.float 1.75808308408e+18
+.float 9.09566318649e-30
+.float 9.66628195983e+20
+.float 11945.8093501
+.float 0.000242493672738
+.float 2.79582116436e-08
+.float 4.54960119121e-27
+.float 3.37952588336
+.float 262823229792.0
+.float 6045671892.91
+.float 1.76449898364e-11
+.float 1.95989760008e-05
+.float 9.5537544923e+13
+.float 3.20988015728e-39
+.float 2.07628267269e-10
+.float 6940599.97102
+.float 2.1896451451e+27
+.float 3.53604427373e-25
+.float 680.860446961
+.float 204121.598715
+.float 3.22641879528e-20
+.float 1.59724582973e-17
+.float 5.1786930493e+21
+.float 3.91827331063e+12
+.float 2.20247573682e+20
+.float 1.86422598941e-29
+.float 1.52453287798e-18
+.float 1.07068607713e+25
+.float 4.40194107997e-38
+.float 8757.20406605
+.float 2.36990403787e-37
+.float 1.82555768242e-13
+.float 3.72741473254e-18
+.float 1.22528089534e+17
+.float 1.78918484431e-39
+.float 6.05059799705e-09
+.float 1.88132195524e+17
+.float 1.52685097322e-16
+.float 1.28355777293e-14
+.float 3.22532237029e-14
+.float 3.75371087987e+16
+.float 2.01831533081e-11
+.float 1.56222312714e+31
+.float 1.14010903371e+26
+.float 1.08910871796e-27
+.float 1.76046434823e+14
+.float 3.52426998421e+37
+.float 6.18739290445e-07
+.float 1.0102595411e+37
+.float 9.37345915993e-18
+.float 0.00570834254394
+.float 2.50072236168e-26
+.float 144191.663265
+.float 2.20307134216e-18
+.float 1.57874630136e-24
+.float 1.56212183328e+17
+.float 79862.0677328
+.float 7240695.8625
+.float 2.52602781715e-18
+.float 1.61452530081e+19
+.float 15.6958935214
+.float 6.57974039766e-21
+.float 5.71198621709e+14
+.float 604.732281711
+.float 3.82695295923e-12
+.float 3.0514770143e-17
+.float 8.40844166527e-05
+.float 7.15204224965e-06
+.float 6.46023729779e+35
+.float 2.06563067712e-35
+.float 1.58757833133e+33
+.float 0.0561977507707
+.float 3.92302461078e+18
+.float 1.22217125143e-28
+.float 2.94200457279e+26
+.float 2.17456025417e-30
+.float 16.0206026664
+.float 9.43161862607e-21
+.float 22900.4140526
+.float 0.00020815017648
+.float 0.00192056339327
+.float 5.59712778794e+25
+.float 1.03463794663e-30
+.float 1.73410851304e-29
+.float 0.0501219314442
+.float 1.34208197292e-39
+.float 207874246.373
+.float 1.02949202233e-15
+.float 9.96812292667e-20
+.float 3.13754334387e-29
+.float 831537.087434
+.float 1.70296462802e+25
+.float 4.9072256492e-18
+.float 6.75082750914e-14
+.float 9.08826991919e+24
+.float 7.77334924674e-17
+.float 9.06492358005e-25
+.float 8.89900125574
+.float 1.26347798259e-22
+.float 3.27061956471e+26
+.float 4.24322347345e+36
+.float 1889775.99967
+.float 3.00039006687e+26
+.float 2.73037088344e-10
+.float 1.00451230352e-19
+.float 2.24541046056e+33
+.float 2.77209840035e-31
+.float 7875983.68471
+.float 9.18106509613e+18
+.float 2.54067829744e-31
+.float 6.82567816948e+28
+.float 3516.3808991
+.float 8.32357384679e+24
+.float 1547388.47739
+.float 6.50022406604e-26
+.float 9.07214805492e-16
+.float 74532375.2401
+.float 5.93366033929e+18
+.float 3.91198595696e-10
+.float 9.10364999438e-38
+.float 9.40540215005e-14
+.float 9.41818977298e-19
+.float 4.74911951617e+34
+.float 1.73816807703e+37
+.float 3359408.95485
+.float 8.61090437417e+28
+.float 1.80405080094e-36
+.float 1.9906778698e+12
+.float 3.61558669157e-23
+.float 1.35045375173e-23
+.float 7.7692168599e-05
+.float 2.67399531744e+15
+.float 5.4659474938e-29
+.float 8.03249386884e-08
+.float 3.66155753893e+12
+.float 1.11466257297e-05
+.float 3.33412700288e+33
+.float 1.97724062663e+17
+.float 0.015022254617
+.float 4.5362718633e-39
+.float 1.38153541778e+27
+.float 3.99941435157e-35
+.float 4.26700525901e-16
+.float 1846.14146801
+.float 5.7668313724e+25
+.float 5251858.20316
+.float 1.17347403407e-23
+.float 12.1194810269
+.float 4.07669129027e-37
+.float 9.30025740668e-34
+.float 3.06147321316e-30
+.float 1.48472086463e-15
+.float 1.39532133372e-06
+.float 1.48575739169e-25
+.float 1.63392136367e+35
+.float 0.00118876898155
+.float 3.3876748893e-35
+.float 0.00110087952189
+.float 7.43099880453e-06
+.float 5.57904869575e-08
+.float 7.42494158454e-38
+.float 7.31620657556e-29
+.float 0.0421471557759
+.float 779.707951532
+.float 2.68842149646e-26
+.float 1.157027548e-21
+.float 1.24817166521e-06
+.float 0.0635469921928
+.float 30194.5741209
+.float 1.43725852967e+27
+.float 1.8299082484e-29
+.float 4.00640693639e-14
+.float 4.32228376144e-28
+.float 1.9459664459e+23
+.float 3.93682091144e+27
+.float 1.35613558652e-19
+.float 0.000230448221845
+.float 4.47691004705e-10
+.float 3.37184713834e-10
+.float 487567.938693
+.float 2.96667002959e+22
+.float 3.030888077e+27
+.float 1.02414967755e-29
+.float 6.76576774718e+21
+.float 8.498106791e-17
+.float 3.16802945803e-18
+.float 1.10463722875e+33
+.float 3.06455497766e+22
+.float 6.76401168659e+25
+.float 249439932.707
+.float 1.39780234981e+27
+.float 8.53562674876e+37
+.float 3.16389953237
+.float 13.0408425026
+.float 6.92391519273e-22
+.float 5.64770675428e-14
+.float 9.39051884094e+15
+.float 3.17573402694e-38
+.float 1.62280638194e+28
+.float 1.92811352128e-19
+.float 3.31097324103e+16
+.float 2.78320095809e-27
+.float 1.22442709163e-25
+.float 3.20173473275e-07
+.float 7.2161282149e-29
+.float 232.506488591
+.float 2.74410530346e-11
+.float 0.000110851262418
+.float 8.40083536766e-07
+.float 1.52313500691e+15
+.float 8.32574178911e-24
+.float 7.34766095343e-10
+.float 2.13846277268e-32
+.float 8.12631805569e+18
+.float 3.74881937976e-07
+.float 4013904.46371
+.float 839494838690.0
+.float 25472159630.8
+.float 6.1731861288e+29
+.float 1.53402519921e+38
+.float 1.88467060933e-20
+.float 1.58949368306e-35
+.float 7.1569969006e+23
+.float 8.2596244137e+26
+.float 3.06918988083e+15
+.float 2.71278704436e-15
+.float 6.81494068104e-15
+.float 10560.1302474
+.float 3011.79345862
+.float 3521.66969619
+.float 18037.376464
+.float 5.95663203003e+19
+.float 1.89592107932e-30
+.float 3.08128873113e+20
+.float 5.56062137644e-12
+.float 4.95888972522e-18
+.float 2.69433026357e+17
+.float 2.84241741028e+33
+.float 2.41849878317e-26
+.float 264224594484.0
+.float 4.04317884034e+34
+.float 4.1193513718e-29
+.float 0.00100277853879
+.float 3.18017437528e-08
+.float 13081.9909755
+.float 4.49170623632e-23
+.float 1.84012209662e-07
+.float 6.7469061112e-06
+.float 3984.86097306
+.float 0.113001526649
+.float 1.41760512203e-05
+.float 3.85284330686e+28
+.float 5.15593511166e-05
+.float 4.44051169413e-14
+.float 3.4170859117e+27
+.float 1.74053437956e+28
+.float 9.28296396188e+21
+.float 2.2835814237e+24
+.float 4.67942638207e+32
+.float 3.18992095268e+32
+.float 1.92745554887e+28
+.float 2.23096010033e+20
+.float 0.0668692319931
+.float 0.00711235005025
+.float 51388.861572
+.float 1.2998863367e-39
+.float 208720.423197
+.float 7.36620752455e+20
+.float 9.01554240059e-26
+.float 5.25911677278e+15
+.float 5.65046325489e-07
+.float 2.1882070393e-27
+.float 4.13129358319e+20
+.float 2.0345655817e+28
+.float 3.70209036045e+34
+.float 0.00338459867264
+.float 1.11191648589e+29
+.float 4.15109769909e-30
+.float 2.57543870124e-14
+.float 1.33773258894e-23
+.float 2.06086298439e+33
+.float 2.48439910929e+14
+.float 1.8246373785e-38
+.float 4.78960723774e+12
+.float 3.00256857913e-32
+.float 0.0074111535823
+.float 2.95281311341e-25
+.float 3.52499651337
+.float 4.85915458008e+22
+.float 1.5379061497e+22
+.float 1.9021442093
+.float 6.49962405494e-09
+.float 587644966.759
+.float 0.48213786304
+.float 321.982167109
+.float 57219934752.6
+.float 3.19653485346e-14
+.float 2.62824189354e+26
+.float 3.87761987716e+18
+.float 4.61510917538e-05
+.float 1.72184615209
+.float 3.7049019335e+13
+.float 0.914108781925
+.float 1.30320726064e-20
+.float 1.05384688568e+25
+.float 5.78986026832e+20
+.float 1.95795308903e+29
+.float 2.15074723733e-13
+.float 2.42369630186e+21
+.float 2.30422224807e+21
+.float 13.7509055849
+.float 8.85055427124e+17
+.float 4.53761129158e+19
+.float 1.54106108989e-05
+.float 6.89202176233e-40
+.float 2.79717608451e+21
+.float 1.69905724309e-28
+.float 4.23324820118e-28
+.float 1296.44451816
+.float 2.56142546002e-09
+.float 2.45207085063e-17
+.float 1.09719309564e-09
+.float 6.01882436463e-16
+.float 12786395549.9
+.float 1.06739251197e-06
+.float 6.40460868261e+32
+.float 1.08459974388e-07
+.float 2.73127620973e-07
+.float 1.57433459116e-24
+.float 2.94900468323e-35
+.float 2.75707094031e+32
+.float 1.18327934201e+17
+.float 2.47066925823e+36
+.float 2.07397977053e+18
+.float 8.71174031839e+13
+.float 145268556.731
+.float 1.3233690149e-23
+.float 1.29996394152e-06
+.float 1.05440446383e+35
+.float 1.581950074e-38
+.float 1.26978290735e+31
+.float 1.80804434107e-31
+.float 2.49479935808e-08
+.float 1.06302530639e+34
+.float 1.81274222933e-19
+.float 2.50519652121e-20
+.float 1.50231912519e-06
+.float 0.146758547861
+.float 4456612.36729
+.float 4.17702161012e-11
+.float 1.2238962256e-23
+.float 1.99493514487e+30
+.float 6.13119648021e-18
+.float 1.36190003229e+23
+.float 108960.549928
+.float 1.10047568837e-26
+.float 1.05785036934e+12
+.float 0.0490615973095
+.float 68811.2146185
+.float 6.45035475078e+19
+.float 2.79285960489e-13
+.float 1.19761340564e-18
+.float 4.45339260968e-10
+.float 7.02346145013e+14
+.float 4.16119127466e-26
+.float 2.82600196579e-05
+.float 2.53527131345e-15
+.float 3.35463320226e+24
+.float 1.0130141719e-31
+.float 3.87599977596e-37
+.float 1.23080083006e-06
+.float 7.12496165433e-08
+.float 1.06344667937e-27
+.float 5.99174890638e-07
+.float 2.10469617406e+23
+.float 3.04004089068e-11
+.float 25353373691.4
+.float 8.4331524224e+17
+.float 4843.33112009
+.float 1.18035686381e+23
+.float 3.08631813494e+21
+.float 0.000269804125261
+.float 1.05126038892e+18
+.float 1.57188416491e-27
+.float 7.4219225389e-36
+.float 1.21855347388e+18
+.float 1.35306886412e+16
+.float 1.38261029522e-30
+.float 9.58692962651e+13
+.float 1.66519584381e-09
+.float 2.63262654056e+35
+.float 0.00013098332012
+.float 1.41295166109e+18
+.float 49831.9597667
+.float 3.58420506897e-19
+.float 3.33863037402e-10
+.float 6.14006967283e-18
+.float 1.36396464291e-09
+.float 8.51406468996e-39
+.float 3.83755640297e-16
+.float 1.62105946743e+34
+.float 28603586756.2
+.float 92286767697.2
+.float 1.48728487323e+20
+.float 3084072965.0
+.float 2.90353587112e-28
+.float 2.41037671208e+14
+.float 6.37624539996e+27
+.float 5.75969159264e+32
+.float 3.25853940659e+23
+.float 2.08452662895e-32
+.float 0.000815923193232
+.float 4.59534801519e-07
+.float 8.33782539139e-08
+.float 9.91133130647e+22
+.float 2.5055253267e-30
+.float 1.44369842066e+35
+.float 3.64799712436e-37
+.float 0.731311863016
+.float 3.56033858736e+22
+.float 2.11411791584e+34
+.float 4.28633234177e-32
+.float 2.82972612117e-24
+.float 5.26790039519e-27
+.float 1.61850152205e-08
+.float 6.74166304979e-31
+.float 9.98622366719e+25
+.float 1.29873160027e-32
+.float 103807.012277
+.float 4.78857383969e-28
+.float 4.3356027161e+36
+.float 2.35785218766e+28
+.float 3.24379526331e-34
+.float 3.57720652362e-06
+.float 1.9726528894e-28
+.float 2.87392305275e-11
+.float 9.77832327564e+28
+.float 6.47698087641e-30
+.float 0.166046053029
+.float 66.699175322
+.float 0.00037721331261
+.float 8484857188.56
+.float 2.57774096661e+15
+.float 70427521958.8
+.float 3.43991562216e+18
+.float 3.58910731091e-19
+.float 1.1065092179e+26
+.float 6.52495503884e-15
+.float 2.96952327144e-31
+.float 4.9002835884e-09
+.float 1.10458010883e-32
+.float 3.29908126556e-12
+.float 5.24561610795e+30
+.float 1.09674554469e-38
+.float 2.55884531074e+14
+.float 0.00246282919589
+.float 3.32659056753e-24
+.float 1.18104560676e+19
+.float 4.9900249063e+14
+.float 5.21339999535e-05
+.float 2.04604434689e-30
+.float 9.92937226402e-28
+.float 1.68034968703e-05
+.float 879289.624705
+.float 6.74111367094e-39
+.float 3009962.68616
+.float 5.00971747465e+16
+.float 4.9654331923e+26
+.float 7.57099775266e+24
+.float 1.2789662253e+20
+.float 0.00539832983749
+.float 4.17339345109e+29
+.float 9.85113643927e+13
+.float 1.30330788782e-38
+.float 3.01891733525e-28
+.float 1.92171525865e-39
+.float 2.41786539868e-14
+.float 1.86629934925e-29
+.float 4.5031655043e+29
+.float 1.84899338757e+34
+.float 0.0459058314977
+.float 2.7363951522e-10
+.float 2.09886563071e+20
+.float 3.83948710417e-20
+.float 1.67532504473e+36
+.float 2.87095551741e+21
+.float 6.48242159927e+27
+.float 1990344621.03
+.float 94353.8419946
+.float 4.32201677317e+12
+.float 5.53948929527e+15
+.float 5.75287963131e+36
+.float 3.33359794237e-36
+.float 1.69272733865e-14
+.float 0.000789188178467
+.float 1.89040274864e-22
+.float 542.190227315
+.float 8.93236436104e+24
+.float 886.58588734
+.float 0.00174050980247
+.float 2.12260706512e-17
+.float 8.17151772786e-38
+.float 579623.274275
+.float 7.1167640661e+35
+.float 0.64744543459
+.float 0.000482474364829
+.float 2.40902358091e-11
+.float 3.5695242094
+.float 2.02147922237e+15
+.float 1.81559217669e-34
+.float 2.35245744076e-26
+.float 0.0347234326054
+.float 6.78604839117e-26
+.float 1.1063700195e+35
+.float 1976049679.19
+.float 4.10636144109e-38
+.float 7.56796316155
+.float 3.43596708709
+.float 2.38845903682e+18
+.float 3.01120717143e-25
+.float 1.15440771396e-27
+.float 5.72292336451e-18
+.float 5.15495055225e+28
+.float 9.45541538144e-19
+.float 1.68963824288e+14
+.float 50043101.0391
+.float 4.14216942257e-22
+.float 1.14411876492e+21
+.float 1033053.29406
+.float 57.1354062837
+.float 1.15248258843e-35
+.float 8.78576202085e-21
+.float 3.78929153644e+33
+.float 5.01237970629e+24
+.float 4.20776048836e+16
+.float 3.69919716101e+28
+.float 1.0773055106e+14
+.float 15304.5121058
+.float 5.01775760513e-39
+.float 1.17718550401e-39
+.float 1.28827322502e-08
+.float 3.17712315337e-23
+.float 1.20069237909e-12
+.float 8.21447388333e+35
+.float 2.30284520411e-21
+.float 4.34654795939e+21
+.float 2.81948021322e+29
+.float 0.0160634138498
+.float 5.85777750182e-23
+.float 1.37291129463e-32
+.float 5.5090338633e-05
+.float 1.91383833283e-38
+.float 1.99837728743e+27
+.float 1.12030193891e-26
+.float 4.85251805942e-39
+.float 5.8340676859e-10
+.float 4.5547283768e-31
+.float 4.57071310371e+24
+.float 2.24709354593e-06
+.float 2.51327869872e-23
+.float 2.82934501204e+19
+.float 2.72632666876e+16
+.float 3.03942926561e-10
+.float 1.39578986257e-36
+.float 30609997.4796
+.float 2.35645406877e-39
+.float 3181.5717651
+.float 1.76403620151e-25
+.float 237154894516.0
+.float 2.39908676409e-18
+.float 2.54531652014e-05
+.float 4.98399638216e+12
+.float 1017245.89018
+.float 6.3272021897e-38
+.float 1603.08363559
+.float 2078497232.12
+.float 4.00630196877e-21
+.float 1.08441078261e-38
+.float 2.21841495798e+23
+.float 7.24913059348e-14
+.float 2.69215821912e-19
+.float 2.84738607571e-10
+.float 2.2662045011e+32
+.float 7.06242772051e-08
+.float 1.0461125116e+17
+.float 1.00683551182e-28
+.float 1.90110056688e-22
+.float 8546948.88391
+.float 1.41095260322e-13
+.float 8.07515667404e+32
+.float 0.0218051350925
+.float 1483.61345371
+.float 1.02118692903e-39
+.float 1.02775409857e-17
+.float 1.69804123474e-31
+.float 4290.31191265
+.float 1.89406107903e-20
+.float 1.17766851993e-08
+.float 3.65526873305e+33
+.float 1.60101244011e-18
+.float 1.06982247624e-16
+.float 4.52809702182e-07
+.float 3.68778068951e-31
+.float 0.108636541129
+.float 3.50022159429e+34
+.float 553556976373.0
+.float 1.92914860576e+32
+.float 2.65408504737e+36
+.float 3.74409699137e-32
+.float 5.18736361436e+25
+.float 4.43150093355e+26
+.float 72765.2011948
+.float 4.38842233175e+16
+.float 6.01236721333e+23
+.float 2.66778519944e-20
+.float 3.8225476518e+33
+.float 5.07113646054e-10
+.float 0.00214783477638
+.float 3.34740038978e+31
+.float 1.14788655769e-20
+.float 1.1088230856e-12
+.float 0.000750789187885
+.float 2.98684328547e+28
+.float 3.94960246559e-14
+.float 0.102180550395
+.float 289832663367.0
+.float 1.15702531105e+25
+.float 5.345319694e-16
+.float 4.78983058278e+26
+.float 2.16972572473e+19
+.float 2107994045.45
+.float 8166208787.19
+.float 1.12706612436e+22
+.float 4.5145905828e+36
+.float 3.64570296157e+36
+.float 3.61730305062e-37
+.float 1.10060554016e+15
+.float 0.000362589967099
+.float 2.44262091897e+30
+.float 1.76659721857e-34
+.float 8.6764190507e-38
+.float 1.53953497796e-34
+.float 9.77906536791e+33
+.float 1.23528155707e-39
+.float 25.4317548052
+.float 247233.278041
+.float 9.46841524334e-13
+.float 2.94207325405e-05
+.float 2.87493652229e+29
+.float 1.97852825704e+14
+.float 4.13010827091e-24
+.float 5.95229780278e-06
+.float 4.74725479624e+14
+.float 1.41531255613e+36
+.float 3.85329484069e+22
+.float 12959064839.8
+.float 6.65620064075e-34
+.float 6.77121914948e+30
+.float 1.23866117159e+30
+.float 1.04155314073e-23
+.float 4.68261874476e-07
+.float 1.9405247718e-22
+.float 6.07237277097e+21
+.float 1.52763640622e-38
+.float 2.45207841611e-19
+.float 7.29802885029e-09
+.float 1.15794001529e-36
+.float 9.29716206692e-07
+.float 5.97999199178e+23
+.float 3.60532019352e+29
+.float 5.88625686594e-06
+.float 4.70091533795e+35
+.float 1.17914414583e-28
+.float 6.94651149222e-32
+.float 1.01982816619e+28
+.float 1.62149800384e-38
+.float 5.48861963152e+17
+.float 1.76447407063e+29
+.float 1.50562532292e-36
+.float 3.30826899442e+23
+.float 1.05488561934e+33
+.float 5.52257912852e-13
+.float 0.00310612359185
+.float 1.67216425548e-06
+.float 7.90675955541e-07
+.float 2.46893512016e-34
+.float 8.12208440821e+22
+.float 0.000535537501654
+.float 2.39883188636e+27
+.float 9.3813083272e+34
+.float 3.11030243266e-29
+.float 1.80042639315e-12
+.float 6.55354554868e-22
+.float 1.25321010663e-09
+.float 4.39364935842e-26
+.float 8.47800731488e-12
+.float 2.79761464117e-08
+.float 1.32167782983e+32
+.float 4.1314847026e+20
+.float 0.0447675428763
+.float 1.68618335593e+21
+.float 2.0831569672e-32
+.float 1.67170836125e-37
+.float 9.75090704152e-25
+.float 1.6254586386e+19
+.float 4.30602046963e-14
+.float 8.14302713365e+17
+.float 2.06870838098e-15
+.float 2.90309318623e+17
+.float 38435715.5356
+.float 1882.02876272
+.float 1.30546344271e+23
+.float 2117301055.04
+.float 6.93038581862e-16
+.float 9.94381745738e+32
+.float 14722006.571
+.float 2.69004941036e+13
+.float 1.05696760486e-25
+.float 427443.35756
+.float 0.118695533072
+.float 5.3393607299e-37
+.float 2.3507346615e-05
+.float 13.7694214241
+.float 8.39417025957e-10
+.float 9.6379705536e+33
+.float 2.22778484872e+14
+.float 2.39684438835e-09
+.float 3.36117510538e-16
+.float 1.47771450142e-38
+.float 3.45258341823e+34
+.float 7.89289507473e+29
+.float 5366.75737422
+.float 7.16737456918e-32
+.float 29354917374.1
+.float 4.12413539603e-38
+.float 3.02513185574e+32
+.float 1.61169626382e-39
+.float 0.000862108202491
+.float 0.290494308851
+.float 9.03161224401e+27
+.float 9.65696092723e-14
+.float 9.17468328823e-23
+.float 4.22504242798e-26
+.float 1.28159826715e+12
+.float 1.43819532301e+20
+.float 2.96118608136e+19
+.float 1.03837906654e+20
+.float 4.46063746675e-09
+.float 1.87244779942e-23
+.float 1.21730052843e-15
+.float 1.9663716722e-38
+.float 7.03576846458e+22
+.float 1.68551707581e-12
+.float 1.72144741575e+27
+.float 4.06971321354e+16
+.float 706049916593.0
+.float 2.64065495918e+13
+.float 2.82612051373e-10
+.float 2.91897438175e-20
+.float 1.35881642069e-30
+.float 7.08138825621e+16
+.float 2.33902656047e-17
+.float 2.5039620237e+23
+.float 8.27941795063e+30
+.float 0.0107717614902
+.float 1.77462676715
+.float 19534503372.1
+.float 2.49189270712e-31
+.float 3.61180019732e-37
+.float 1.46756842899e-10
+.float 10787.2169046
+.float 2.81857412095e-33
+.float 1.57957621671e-09
+.float 4.22327731336e+20
+.float 0.101039561657
+.float 0.0501916640504
+.float 3.09105443547e+37
+.float 1.46847126225e+25
+.float 3.0284302603e-14
+.float 2.22581215657e-13
+.float 8.88156628445e+35
+.float 9.53353560419e-32
+.float 7.33070331657e-30
+.float 7.33350924741e-34
+.float 1.38392548266e-12
+.float 1.93197709817e+18
+.float 1.76154124346e-30
+.float 60341.3716133
+.float 1.94699138608e+33
+.float 1.12160029949e+35
+.float 4.44763953015e+14
+.float 1.40544094808e-11
+.float 1.58006337752e-14
+.float 6.45011362119e-21
+.float 8.85189093419e+27
+.float 2.19535160186e+24
+.float 1.44734141008e-06
+.float 6.69307828516e+35
+.float 11.1291669715
+.float 3.75869686941e-27
+.float 7.55739218742e+31
+.float 1.38897224919e-35
+.float 6.76005325431e-17
+.float 6.81752860598e+34
+.float 4.65707758871e-36
+.float 9.67226852703e-28
+.float 139044.338913
+.float 3.40702137672e-19
+.float 1.66991041391e-29
+.float 1.89694896709e-22
+.float 0.00432139233836
+.float 3.40212099209e-15
+.float 4.39199669339e-17
+.float 0.0310861366878
+.float 5.29167618478e+31
+.float 1.88437708291e+15
+.float 1.68844091086e+13
+.float 8.61186359509e+30
+.float 0.00136568974995
+.float 1.2587419549e+20
+.float 2.20812248949e-08
+.float 6.04107504127e-05
+.float 3.87770535792e-07
+.float 1.85429490691e+36
+.float 9.57141338283e-24
+.float 8415745.2136
+.float 1.93259765388e+15
+.float 4.72693208846e-15
+.float 4.28331698595e+24
+.float 107434030043.0
+.float 1.27352005952e+30
+.float 5.52578002682e+35
+.float 9.96671833499e+36
+.float 6.82196902576e-29
+.float 4180169134.56
+.float 6.45440568901e+21
+.float 2.07075115849e-29
+.float 2.61538080241e-10
+.float 6.87626074344e-35
+.float 3.20887840427e+32
+.float 7.65639561563e+36
+.float 1.35734228461e-11
+.float 2.83121374038e-33
+.float 0.105921640704
+.float 3.54862559425e-25
+.float 4.55646754381e+23
+.float 1.09134236846e+32
+.float 2.4971069742e+32
+.float 1.20391706128e+15
+.float 6.64384934995e-22
+.float 0.0815985333922
+.float 0.393038278337
+.float 1.29059406192e-20
+.float 3.96724720072e-19
+.float 1.88982151547e-06
+.float 0.157616393113
+.float 2.8108600175e+35
+.float 1.96865752126e+15
+.float 0.00333890924743
+.float 1482.24825386
+.float 1.25762875683e-17
+.float 41354019261.8
+.float 0.00855088882703
+.float 6.18668699214e+22
+.float 0.124839090177
+.float 6.41868790429e-22
+.float 591106.046128
+.float 1.89497267755e-34
+.float 1.55671536481e+25
+.float 16581135562.6
+.float 8.87631542733e+17
+.float 5.1496620693e-34
+.float 2.71832496621e+17
+.float 6.72790765508e-34
+.float 2290368114.61
+.float 5.44467312708e+19
+.float 9.45816628548e+20
+.float 7.95064584389e-39
+.float 1.35435838038e-34
+.float 1.08689492149e+29
+.float 99981766.6894
+.float 6.32883270029e+16
+.float 2.23738258031e-26
+.float 1.38698159073e+22
+.float 1.56687741881e-13
+.float 1591.62298948
+.float 1.94791583758e+23
+.float 34089434645.9
+.float 2.40491697404e+35
+.float 1.60705357057e+31
+.float 8.61884386939e-30
+.float 4.30886896012e+27
+.float 1.72284774555e+16
+.float 2.95460336894e-05
+.float 2.5680369664e+33
+.float 1.68540621979e-22
+.float 8.99646051899e+20
+.float 6.1306546046e-39
+.float 254.601038665
+.float 3.00203926023e+20
+.float 1.62144697159e-28
+.float 4.99643372509e-28
+.float 3.15481674005e-27
+.float 3.55732112743e-28
+.float 0.00564138936693
+.float 2.40241852499e-35
+.float 1.16296803065e+24
+.float 3.86315351771e+28
+.float 1.00141273745e-29
+.float 9.82559830157e+18
+.float 243911.037967
+.float 1.91458270595e-07
+.float 1.44770265082e-06
+.float 2.14035245134e-26
+.float 1.53308674371e+14
+.float 0.0114423362523
+.float 5856.79224423
+.float 1.48711963212e+32
+.float 3.49334325474e-13
+.float 6.97202461379e+28
+.float 0.000434223860939
+.float 7.57907505e+25
+.float 2.25750322386e+26
+.float 2.7886581425e-17
+.float 1.20439210002e-21
+.float 3.26561451142e-29
+.float 0.000276372098139
+.float 0.78952194186
+.float 3.71098129303e-31
+.float 8.63396164112e+16
+.float 98968641.093
+.float 6.45437840133e+25
+.float 1.46769773486e-16
+.float 1.33107736194e+19
+.float 501.587786312
+.float 1.86635429362e-39
+.float 2.72413504531e+25
+.float 0.00661617641205
+.float 1.21762061361e-39
+.float 6.11274269924e+22
+.float 6.39612294144e-19
+.float 4.32685099732e+30
+.float 3434819.29667
+.float 9.67819320819e-20
+.float 6.55691726005e+35
+.float 4.59551128322e+26
+.float 2.88807516603e+37
+.float 4.43481961662e+24
+.float 3.84487773605e-28
+.float 1.91239288265e+35
+.float 1.70138100586e-37
+.float 6.04246953067e-31
+.float 0.180615208972
+.float 1.65473097098e-34
+.float 4.40436968728e+27
+.float 1.22866859059e+30
+.float 2.20617858578e-27
+.float 3.55001106325e-06
+.float 978152475391.0
+.float 1.08774613122e+30
+.float 0.000299766214055
+.float 891.863527223
+.float 1.67446728299e+34
+.float 1.13852234724e-35
+.float 0.00146516570249
+.float 6.79830836588e+31
+.float 1.03772551843e+29
+.float 887155456.912
+.float 6.47269338441e+18
+.float 8.71462360777e+31
+.float 8.50448139188e+30
+.float 5.88367815338e-28
+.float 1.33005198227e-13
+.float 1.36547923072e+17
+.float 3.89469597009e-25
+.float 121728110638.0
+.float 1.22476429696e-07
+.float 10366495310.3
+.float 3.72326215089e+25
+.float 1.16248372466e-07
+.float 9.89351988734e-22
+.float 2.95257599771e+18
+.float 3.29938299498e-33
+.float 231671.251896
+.float 5.63506243102e+24
+.float 3.44897737873e-38
+.float 17.3992530749
+.float 2.73963862391e-33
+.float 2.39679385653e-06
+.float 3.62671625349e-15
+.float 177251.515269
+.float 2.05387722309e+36
+.float 9.66971590681e+13
+.float 5.51045449761e-18
+.float 7.73934480664e-20
+.float 1.29124978441e-12
+.float 4.45075461137
+.float 5.07659890278e-22
+.float 6.4734801802e-39
+.float 5.63344842927e+35
+.float 7.69082319045
+.float 273523383133.0
+.float 9.29207928067e-34
+.float 0.70910156099
+.float 3.03334443794e-21
+.float 3.87429533761e+12
+.float 2.44330169751e+31
+.float 0.000363029820882
+.float 243.456687807
+.float 1.39976095334e-07
+.float 1.35692736045e+29
+.float 4.47304908934e-22
+.float 81901.1167568
+.float 3.58299486505e-09
+.float 3.203252658e-06
+.float 3.26210311677e-11
+.float 4.72349322111e+28
+.float 31739983.9077
+.float 73855262495.3
+.float 616486817.369
+.float 3.42161799439e-40
+.float 7.7171072878e-26
+.float 1.906660642e+35
+.float 2.42402177945e-32
+.float 9.18907906415e-18
+.float 9.1757949436e-15
+.float 5.46475761235e-18
+.float 1.98400457294
+.float 1.37753280494e+29
+.float 1.26240611032e-20
+.float 7.26377035662e+14
+.float 9766592.47623
+.float 0.0312595030806
+.float 5.14918756232e-20
+.float 271746.118699
+.float 5.47464571353e+21
+.float 8.55527421289e+28
+.float 2.71305318748e-37
+.float 219.961802116
+.float 0.00341499359619
+.float 1.71656873101e+15
+.float 1.08478813932e-09
+.float 1.01750328173e-32
+.float 4.24558502907e-35
+.float 822769689.729
+.float 0.000281728146904
+.float 0.00730898968586
+.float 7.31094950691e+14
+.float 0.00824051878122
+.float 2.26348788381e-28
+.float 4.10124485317e-17
+.float 52.7775211409
+.float 2.08711879524e-29
+.float 1.64335408009e-36
+.float 1.14316059575e-38
+.float 741.276277952
+.float 9.7722385239e-09
+.float 56446.9358477
+.float 1.6611281106e-16
+.float 6.35306976645e-19
+.float 6.33228884771e-31
+.float 5.21897620386e-39
+.float 7.13412678469e+35
+.float 1.70725804344
+.float 8.23337732843e-22
+.float 1.42107461838e-32
+.float 1.36661037325e-23
+.float 3.73652136545e-31
+.float 1.27948318914e+22
+.float 2.36351291702e-13
+.float 2.04525060326e-25
+.float 7.51575916616e+22
+.float 1.11571314521e-24
+.float 5.25835952693e+33
+.float 8.70460039631e+29
+.float 7.19477277316e+18
+.float 1.23046013311e-16
+.float 8.50443775522e+33
+.float 6.12179832796e+15
+.float 1.44705553438e-19
+.float 1850820.18783
+.float 4.33311614379e-38
+.float 1.00857403343e+21
+.float 1.0963185166e-31
+.float 0.028514816324
+.float 3.17856667823e+37
+.float 2.83861455854e-15
+.float 256041.790304
+.float 4.14593340961e-29
+.float 1.06373163287e+26
+.float 4.52830419507e-38
+.float 7.40555337493e-29
+.float 203065826863.0
+.float 9.34000499954e+26
+.float 2.83748644133e-10
+.float 1.03130189027e+14
+.float 5.06679553796e+14
+.float 5.61883436462e-19
+.float 8.7319078111e+15
+.float 1.26864648708e-18
+.float 3.18486312229e-27
+.float 6.00405217059e-25
+.float 5.66870397271e+24
+.float 2.2828560401e-26
+.float 3.27715370427e-08
+.float 0.0479775537599
+.float 4.23171414827e-26
+.float 7.16925277797e-34
+.float 1.60377548546e+27
+.float 6.53263246504e+28
+.float 4.07428696825e-05
+.float 0.169484881419
+.float 2.58485753622e-11
+.float 2.76495808508e-10
+.float 211.149054017
+.float 3.29252567273e-16
+.float 1.15643123161e-38
+.float 3.21580286533e-32
+.float 6.34864832017e+34
+.float 4.79537994177e-09
+.float 255042.201569
+.float 4.61820133485e+23
+.float 6.46507077005e-05
+.float 1.49579143937e+35
+.float 9.28225018582e-39
+.float 5.55657047815e-30
+.float 1.44684042777e+35
+.float 1.04314473226e-30
+.float 1230075.52106
+.float 363.460899018
+.float 2.13553724116e-24
+.float 5.24363294288e+14
+.float 2.08713241308e-13
+.float 4.3216510575e-07
+.float 2.28471763114e+36
+.float 1.4341896581e-12
+.float 8945563.60707
+.float 1.54458579527e-29
+.float 4.31586801488e-07
+.float 1.1350762424e-39
+.float 8.09554980399e-09
+.float 2.03734456152e+18
+.float 2.09521677465e+16
+.float 20714488062.7
+.float 4310624516.72
+.float 6.65314994302e-21
+.float 8.68953665847e+30
+.float 2.78208137245e+27
+.float 2.78430406376e-11
+.float 208.663686178
+.float 2.60343197409e+24
+.float 7.81862954849e-20
+.float 1.69221023437e+14
+.float 3.02417850481e-27
+.float 7.40911824709e-26
+.float 484246186.116
+.float 1.18755946806e-34
+.float 9.01721411657e-34
+.float 3.92221096802e+29
+.float 2.04774669905e+15
+.float 3.58035319614
+.float 6.13085883036e-07
+.float 2.38681549433e+13
+.float 2.74993944405e-33
+.float 8.5491758333e-13
+.float 1.99102008318e+19
+.float 9.07005158345e+36
+.float 3.35712750914e+20
+.float 4.36689580347e+12
+.float 5.50250428324e+35
+.float 100821049.776
+.float 6.40816945727e+25
+.float 2.09107366514e-19
+.float 7.32912341125e+31
+.float 4.58223217256e-26
+.float 4.39607110372e+31
+.float 3.06432111456e+26
+.float 2.11727463832e-33
+.float 0.000103353408809
+.float 9.19446221253e+24
+.float 3.5245958535e-12
+.float 3.5297727102e-32
+.float 8.20671993469e-25
+.float 2.05127594136e-15
+.float 8.61167619591e-33
+.float 660622158468.0
+.float 3.325650938e+24
+.float 1.98496959254e-22
+.float 5.52195410556e-36
+.float 3.99738170335e+29
+.float 117.573436947
+.float 4.40572451888e-10
+.float 1.97490391061e-13
+.float 6.71121073942e-25
+.float 8.43554492397e-26
+.float 1.73791186206e+19
+.float 2.16121458016e-23
+.float 8.40148960329e-15
+.float 619548.124101
+.float 5.03740381643e-23
+.float 3.75997255476e+23
+.float 0.000144470987642
+.float 9.36209913875e-18
+.float 7946077399.27
+.float 3.91164865967e-35
+.float 3.77073617847e-07
+.float 344.345252021
+.float 31.2282159962
+.float 7.56250713565e-07
+.float 687.367555424
+.float 1.65324539767e-34
+.float 1.16358834886e-06
+.float 3.30135501773e+28
+.float 5.29402728776e-15
+.float 5.18457596213e-33
+.float 7.64400294148e-30
+.float 5.00019407375e-05
+.float 5.08610190729e-37
+.float 1.04866771905e-13
+.float 1.73916401043e-29
+.float 1.94865641674e+23
+.float 5.05482546824e-11
+.float 0.107809916636
+.float 1.96035727375e+17
+.float 3.24407994437e+16
+.float 1.3112012194e-31
+.float 1.58903205975e+25
+.float 1.44035481574e-33
+.float 6.02582004127e+30
+.float 9.6831042089e-35
+.float 4439450141.31
+.float 463413238995.0
+.float 7.72480650174e-06
+.float 1.27681225489e+27
+.float 1.53700725651e-31
+.float 9.99225786582e+18
+.float 1.00443293557e+25
+.float 2.35488162877e-39
+.float 49002328442.8
+.float 55066070.5956
+.float 1.42861063513e-36
+.float 4.08156231228e-30
+.float 137095.924238
+.float 0.000317703695696
+.float 6.78999430794e+21
+.float 2.50926830098e-17
+.float 140937.048755
+.float 1.70842114801e+15
+.float 3.65066460886e-14
+.float 7.22782252739e-25
+.float 5.22913940143e+33
+.float 1.35999899645e+34
+.float 5.68451670914e-21
+.float 1859810679.29
+.float 2.65194127318e-39
+.float 4.46018479121e-35
+.float 253666.519132
+.float 24761609.881
+.float 6.13877583922e+26
+.float 1.36215087696e+28
+.float 1.26106417264e-29
+.float 2.28259880253e+17
+.float 2.04936803925e-13
+.float 1.20670642259e-08
+.float 1.19814377831e-27
+.float 288.599500597
+.float 7.21192782798e+17
+.float 2.82420258633e-33
+.float 13541.7625394
+.float 2.51031554064e-37
+.float 1.32220551965e-23
+.float 1.83407676872e+25
+.float 6.05508012872e+33
+.float 5.55322637915e-05
+.float 1.13619771709e+35
+.float 4.24236914022e+22
+.float 8.35795951062e+35
+.float 1.4167079778e+17
+.float 1.29073592511e+20
+.float 2.56615556561e-11
+.float 3.38076732002e-12
+.float 1.82916576969e+24
+.float 3.25722394617e-29
+.float 3.81322653013e-22
+.float 56738946.4603
+.float 1.04871803127e+17
+.float 2.01196957335e+34
+.float 2.06538195853e+27
+.float 104.342367706
+.float 1.26157204603e-37
+.float 1.21497170204e+21
+.float 25425310209.4
+.float 2.68815603232e-10
+.float 4.50264903348e+24
+.float 3.87692520082e-06
+.float 1.58915998634e+16
+.float 1.59971087814e-29
+.float 3.25733935901
+.float 1.37463749906e-27
+.float 2.81861822736e+15
+.float 1.40119098495e-09
+.float 1.33046202946e+32
+.float 1.91194138276e-39
+.float 2.2724129883e+26
+.float 2.88813472877e+23
+.float 2.5089552943e-20
+.float 1614.7204333
+.float 2.17280116186e-21
+.float 9.51750532522e-29
+.float 2.7368138911e-36
+.float 5.13328260194e+33
+.float 1.8406647088e+27
+.float 1.6084106299e+35
+.float 1.80734027026
+.float 3.84003107529e+32
+.float 1.8074657616e-18
+.float 8.50690043437e+32
+.float 0.000168390902288
+.float 3.09704355055e-12
+.float 0.016770048532
+.float 5.22915421244e+14
+.float 2.66892702424e-30
+.float 0.000219300666511
+.float 0.000100234213244
+.float 3.55317393517e+15
+.float 1.11531480998e-24
+.float 1.28817440655e+14
+.float 7.37441791002e+23
+.float 1.17251641441e-36
+.float 8.13338280361e+21
+.float 3.18048626126e-15
+.float 1.9048534441e-14
+.float 2.52756934499e+23
+.float 5.46274357123e-28
+.float 3.21973457343e-19
+.float 10406.7998549
+.float 1.78742001955e-22
+.float 7.58188670969e+23
+.float 1.76963924608e+36
+.float 205.712308959
+.float 1.40185960725e-33
+.float 4.22488095493e+12
+.float 2.21548401911e+12
+.float 1.05460643108e+18
+.float 231548674.803
+.float 40120479.4311
+.float 3.46825718302e-18
+.float 1.87995718714e+18
+.float 92075435978.9
+.float 8.44680234025e+33
+.float 57.6012098173
+.float 1024887.23908
+.float 2.60191998002e+22
+.float 1.23784211176e-30
+.float 8.8493444436
+.float 6.61457127042e-10
+.float 8.9719686536e-26
+.float 8.59634662238e+15
+.float 4.17216235733e-16
+.float 7.06096049517e+34
+.float 133813.765096
+.float 8.25335774981e-09
+.float 1.91414234193
+.float 17.6388253962
+.float 116210864567.0
+.float 2.79442035881e-36
+.float 9.73567030703e-38
+.float 1.10920259942e+30
+.float 3.20248213757e+36
+.float 2.42140481715e-26
+.float 7.32053914186e+13
+.float 9995424496.3
+.float 1.38103575726e+14
+.float 1.08545499951e+29
+.float 0.000111806242024
+.float 9.16819109754e+26
+.float 3.21599484349e-31
+.float 1.05348712658e-12
+.float 1.75891666033e+32
+.float 3.26064301647e-10
+.float 2.50745608033e-31
+.float 0.000377704474678
+.float 9.88074841202e-35
+.float 3.49344361758e+24
+.float 1.02763658408e+28
+.float 12.1591386054
+.float 3.16061663156e-39
+.float 3.2832293771e-16
+.float 1.85500135633e-30
+.float 5.74018291027e+28
+.float 5.78115568561e+27
+.float 6.58053337799e+13
+.float 22277.7503189
+.float 2.21090513072e+27
+.float 1.26249347662e+24
+.float 9.23234430778e-10
+.float 14119024210.8
+.float 270.317179416
+.float 1.22895369215e+28
+.float 3.3993452535e-26
+.float 7.3871910105e-10
+.float 4.09670741682e-26
+.float 1.13057037359e-29
+.float 6.04254742978e-38
+.float 9.00041678838e+33
+.float 0.59965247736
+.float 4.24019710213e-30
+.float 2.87057524513e-23
+.float 3.25826251405e+33
+.float 8.80667563775e+27
+.float 1.66390857041e+14
+.float 4.81114846066e-33
+.float 4.94768296509e+17
+.float 0.000135028898157
+.float 1.03530873341e-36
+.float 1.14623425983e+33
+.float 3.12112549112
+.float 3.00323865193e-26
+.float 18255.2878252
+.float 0.0593410466492
+.float 117.156193011
+.float 3.39494653698e+22
+.float 2.51984229116e-09
+.float 6.52207124532e+35
+.float 1.35778018403e-08
+.float 117963.014209
+.float 6.6731092031e+36
+.float 4.03053339055e-08
+.float 2.21606688412e+22
+.float 6.93517161359e-38
+.float 2.61733787268e-12
+.float 5.11028021491e+19
+.float 7.08265912678e-38
+.float 1.67779437771e-16
+.float 4.62721094494e-12
+.float 3.57650905308e+21
+.float 3.40842144255e+12
+.float 4.5917632124e+26
+.float 1.15754853187e+25
+.float 2.75938979428e+32
+.float 8.33905783773e-07
+.float 3.00674870356e+37
+.float 4.94727567331e+14
+.float 8.69839392589e-10
+.float 1.67604279051e+31
+.float 3.05040900972e+25
+.float 58.1018904183
+.float 1.23458981608e-28
+.float 1.42995336999e-07
+.float 1766.1475236
+.float 21336628.9882
+.float 1.31879495396e-31
+.float 67.7981836984
+.float 7.72989915866e-13
+.float 1.35195152002e-24
+.float 2.61360354398e+27
+.float 1.69249116207e+17
+.float 19424.9526744
+.float 9.3534339742e-23
+.float 1.54061786399e+29
+.float 7.18058216897e-35
+.float 0.0913297393313
+.float 8.19711258878e-33
+.float 6.48802640802e+18
+.float 1.86062797721e-38
+.float 8.33298457599e+19
+.float 1.75073846426e-34
+.float 1.13651554798e-17
+.float 8.90523751751e-32
+.float 8307400899.84
+.float 2.2861272524e-12
+.float 1.685210446e+34
+.float 1.05749501232e-38
+.float 8.96185269284e+35
+.float 4.44343321585e-37
+.float 3.64025507611e-35
+.float 3.89474953251e-19
+.float 1.97881121504e-10
+.float 6.78425620662e+27
+.float 0.00711535105667
+.float 5.3267193128e-26
+.float 5.41094058825e-05
+.float 3.37942497842e-35
+.float 3.37052158681e+20
+.float 4.76151835745e-36
+.float 8.99940390654e+30
+.float 5.83874259957e-30
+.float 4.38537140641e+31
+.float 0.108547126163
+.float 3.53418639467e-37
+.float 608.293008995
+.float 18155.9607242
+.float 6.87869923664e-19
+.float 5.97235792458e-36
+.float 2.84578524087e+20
+.float 4.6195497489e+23
+.float 7.03406010211e-26
+.float 2.12768437596e-09
+.float 1.32249994471e-09
+.float 1.50630064352e+17
+.float 4.1745301142e-32
+.float 5.57068006459e+24
+.float 1.91640473608e-33
+.float 3.78264642304e+20
+.float 9.52308349e+26
+.float 1.18978262762e+33
+.float 4.90130191289e-24
+.float 1.81430991479e-31
+.float 8.40542949433e-18
+.float 9.42019193196e-07
+.float 1.04095819777e-09
+.float 2.06405315602e-15
+.float 7.84575221179e+14
+.float 2.27343496262e-11
+.float 0.000159207337871
+.float 4.79436562493e-34
+.float 1.00093723611e-09
+.float 2.08466160688e-15
+.float 2.27203917276e+14
+.float 2.49021062264e+36
+.float 1.04129691056e+36
+.float 1.04677191623e+32
+.float 5.29134686442e+18
+.float 2.93179664699e+34
+.float 0.122672486171
+.float 6.92930442513e+28
+.float 1.19397540135e-39
+.float 4.40992214697e-38
+.float 8.4173892236e+17
+.float 0.00337936529337
+.float 91798520.3061
+.float 2.8155372076e-19
+.float 0.000110381110679
+.float 5.01377339244e+31
+.float 9.48386424401e-34
+.float 2.79556105256e+19
+.float 1.47846718651e-30
+.float 2.82062531239e-22
+.float 1.85219729508e-31
+.float 0.912936845709
+.float 2.24584388608e-36
+.float 1.48693553686e+38
+.float 1.81621025064e+31
+.float 5.7834334723e-36
+.float 3.08149090927e-30
+.float 28279.7524203
+.float 1.46455219372
+.float 14772.4152086
+.float 2.50789184278e+29
+.float 1.03367176907e+14
+.float 0.0280072813512
+.float 1.77759881987e+24
+.float 2.05403549985e-25
+.float 4.99699685416e-08
+.float 4.19967549974e-15
+.float 58304277305.1
+.float 3.11483139708e+28
+.float 1.28144680274e-31
+.float 22650.6091152
+.float 15317832391.3
+.float 3.10575736645e-31
+.float 0.00730474355099
+.float 1.62444270018e-15
+.float 3.45506604308e+22
+.float 526359277384.0
+.float 8.37529216386e-32
+.float 1.7980690862e+28
+.float 2.88780676191e+28
+.float 1.94683118444
+.float 1.81322250935e+30
+.float 1.05922866891e+37
+.float 1.82059609087e-13
+.float 1.05659116097e+24
+.float 3.47430661759e+27
+.float 2.41736680947e+34
+.float 1665253.36836
+.float 177618117508.0
+.float 806.146694079
+.float 1.44845345623e-27
+.float 1.09097075154e+19
+.float 1.32751970322e-24
+.float 4.53735950589e+12
+.float 1.04560516114e+21
+.float 5.82022704364e-30
+.float 1.37068560474e+23
+.float 1.00770259255e-12
+.float 6.9461321183e+19
+.float 3528571630.73
+.float 1.40493499412e-31
+.float 7593158029.7
+.float 1483991208.43
+.float 5.04430076294e-08
+.float 16100.3131038
+.float 1.02640154429e+32
+.float 3.83298690602e-17
+.float 1.00279645784e+21
+.float 1.06391878395e+24
+.float 1.36619496637e+32
+.float 7.31872950261e-20
+.float 4.60133281984e+36
+.float 1.33763455202e-27
+.float 6.57330176996e-06
+.float 8.27495226478e-10
+.float 5.34084060299e+22
+.float 7.99685031536e-39
+.float 7.61365423871e+18
+.float 1.05215966653e-10
+.float 1.88516237157e-27
+.float 0.048397436854
+.float 22509.9585825
+.float 2.02275669501e-27
+.float 2.810765043e+31
+.float 7.27646676245e-16
+.float 1.38191531593e-39
+.float 7.72179087152e+18
+.float 3.25306739602e+14
+.float 1.84576423346e-36
+.float 2.28130155815e-34
+.float 2.16375751046e+19
+.float 3.76069682187e+21
+.float 1.10956041867e+36
+.float 1.53535170004e-27
+.float 0.00259691238115
+.float 4.99862276802e-21
+.float 6.50447083097e+16
+.float 5.62061299608e-27
+.float 253018496438.0
+.float 6.08544973664e-11
+.float 2.85713648783e-17
+.float 6.67319667167e-34
+.float 6.82944840652e+24
+.float 1.14521657308e+31
+.float 3.31090324444e+35
+.float 2.24322456975e-26
+.float 7.15365008176e+21
+.float 2.40273699914e-20
+.float 1.01720567209e-05
+.float 1.22090832921e-36
+.float 5.06413348976e+14
+.float 1.02735391908e-24
+.float 5.40205739867e+14
+.float 997.897553952
+.float 7.96655043545e+34
+.float 2127.25890954
+.float 6.91499632349e+14
+.float 171484468.573
+.float 1.0217083598e-36
+.float 1.3423530667e+27
+.float 1.02352092689e+24
+.float 3.66338810438
+.float 4.1717294212e+25
+.float 7.17909071418e-30
+.float 1.77417787992e-08
+.float 5.19254272836e-33
+.float 3.62970134875e-39
+.float 9.30406526683e-16
+.float 8.28819495231e-08
+.float 1.38588772224e-22
+.float 6.80231960818e-14
+.float 1.27707064732e-33
+.float 1.6585547417e+22
+.float 104761160.979
+.float 3.79600146316e-36
+.float 11.7556038003
+.float 2.02971171334e+26
+.float 1.53813663796e-15
+.float 6740179.66658
+.float 2.37005532179e+19
+.float 9.79218565782e-20
+.float 267720531.311
+.float 1.90459242752e+25
+.float 1.40045800954e+19
+.float 1.88238564021e-11
+.float 1.20694651009e+16
+.float 2.68219187365e-36
+.float 4.48729048728e-21
+.float 1.66041365082e-13
+.float 2.26950276628e+34
+.float 20541434.8825
+.float 7.04695552005e+22
+.float 1.37134515226e-11
+.float 0.00326299897637
+.float 8.28686127131e+32
+.float 3.62927548306e+36
+.float 3.32373078546e-16
+.float 68406.2001995
+.float 3.12025044581e-36
+.float 1.40252103834e-06
+.float 5.92287382981e-32
+.float 3.73105388195e-18
+.float 3.92242877162e+33
+.float 7.39565578323e-13
+.float 5.79700870128e+26
+.float 4.38899215227e-22
+.float 3.23646000658e-19
+.float 1.28194733722e+35
+.float 1.12550210023e-29
+.float 3.22177311426e-05
+.float 207221.407616
+.float 3.31282165588e-09
+.float 1.0571030423e-38
+.float 2.78217278266e+24
+.float 0.120936466706
+.float 3.5370160738e-16
+.float 1.21581538413e+23
+.float 2.22526636459e-29
+.float 5.30822259225e+23
+.float 0.000228360615171
+.float 0.000222127630413
+.float 8.21752975302e+26
+.float 6.66521306832e+30
+.float 1.45263035385e+35
+.float 4.68388484621e+25
+.float 95388165.2138
+.float 17146738.1901
+.float 6.23940112259e-36
+.float 100.946549744
+.float 8.29554878083e+24
+.float 8.95840767079e-13
+.float 4.05580991582e-26
+.float 8.39236056102e+30
+.float 6.68973256263e-21
+.float 1.45341275903e-34
+.float 957777927.444
+.float 9.60769976595e-37
+.float 8.0071867945e+18
+.float 7.10290538275e+22
+.float 0.00748176340213
+.float 1.24141421749e-37
+.float 1.35029824253e+33
+.float 1.99023781936e+19
+.float 2.17111867222e+22
+.float 1.65395797517e-31
+.float 3.88106547665e+25
+.float 5.20047572784e+32
+.float 1.12471773169e-34
+.float 3.80941267441e+15
+.float 1.9592850124e+17
+.float 65445.0836872
+.float 1.46281473186e+29
+.float 5.99801645206e+33
+.float 7.00049232407e+29
+.float 5.20229105547e-15
+.float 152227.342854
+.float 0.184659045009
+.float 1.28406737598e-27
+.float 3.35917047139e-21
+.float 7.32715743281e-07
+.float 6.54990885745e-12
+.float 7.18717772707e-21
+.float 2.66157976977e-25
+.float 5.46893220453e-10
+.float 7.42473209427e-24
+.float 3.35390669294e-24
+.float 9918094551.85
+.float 4.66326670372e+33
+.float 1.56646312309e-39
+.float 2.55667493284e-16
+.float 7232040.32235
+.float 3.93385819935e-13
+.float 6959047601.49
+.float 1.33911441835e-05
+.float 2.24670078042e-13
+.float 30657240.8469
+.float 4.65981285531e-08
+.float 1.4940204674e+32
+.float 4.43305108842e-35
+.float 0.000237609469432
+.float 0.000175176963172
+.float 405785.205587
+.float 2.45021907341e-33
+.float 866.115917365
+.float 368.155444784
+.float 1.27028827952e+24
+.float 5.41246128134e-16
+.float 30570153.8797
+.float 1.08367362369
+.float 6.45374168279e+22
+.float 3.00884021881e+23
+.float 1.05922018793e-09
+.float 1.05408996372e-22
+.float 7.19455394605e+20
+.float 0.000753294978087
+.float 2.09225762498e-23
+.float 1.71580392031e+25
+.float 1.26724628558e+17
+.float 2.38783557461e-19
+.float 1.29920212853e-12
+.float 2.71233112958e-39
+.float 2.6773925591e-11
+.float 2.85431480218e-24
+.float 9.41984154492e+25
+.float 5.83356904047e+12
+.float 515951020.901
+.float 1.50348276788e-32
+.float 1.09614615672e-26
+.float 2.58709070609e-23
+.float 2.0326056803e-13
+.float 5.82726227273e-13
+.float 0.00952590504865
+.float 9.17094670332e-38
+.float 1.53575405682e+17
+.float 772530992.31
+.float 7.36075639379e-10
+.float 1.55645165939e+16
+.float 8.13066198279e-21
+.float 9.10767809916e-24
+.float 3.37885125701e-08
+.float 5.26431539155e+34
+.float 2.68629107266e-23
+.float 9.14443135079e-35
+.float 6.31830494013e-12
+.float 2.16927462839e-05
+.float 7.18915078652e+24
+.float 1984.56514621
+.float 5.25076024467e-25
+.float 13729302.4954
+.float 0.00191911223378
+.float 2.50665628592e+13
+.float 2.32621812414e-37
+.float 25.0709039449
+.float 1.95702847393e+30
+.float 63.6246239345
+.float 436618.101346
+.float 1.55505062485e-07
+.float 3.01889101168e-22
+.float 4.15505883867e+34
+.float 9.38369501519e-35
+.float 5.1110201824e-18
+.float 1.62236349519e+29
+.float 9.60943903696e+18
+.float 196093615.176
+.float 8.75996032056e-40
+.float 1.5807546292e-21
+.float 3.67918255587e-22
+.float 1.00442403023e-10
+.float 7.27298672458e-25
+.float 3.9959425297e-29
+.float 4.37257869651e-11
+.float 2603723.20418
+.float 2.76750533073e-31
+.float 6.50847030027e-39
+.float 118.562349264
+.float 1.99365186077e-22
+.float 2.80742580926e-13
+.float 4.43260361621e-10
+.float 2.27110012978e+20
+.float 2745516.1776
+.float 1.78995530082e+18
+.float 1.64677315417e-26
+.float 7.57806950175e-14
+.float 1.02424158601e-08
+.float 1.79332076964e-10
+.float 3.91072027025e-13
+.float 6.16417828799e-06
+.float 3.42099981676e+36
+.float 2.11505445781e+37
+.float 1.07039768903e-12
+.float 1.01426824542e-06
+.float 2.87861297778e-08
+.float 2.08633329867e+29
+.float 7.18196299313e+37
+.float 7.87135641438e-09
+.float 479.090538257
+.float 4.00221693772e-19
+.float 1.01328606376e+29
+.float 3.05934349641e+16
+.float 1.61233049101e-27
+.float 1.41718513677e+12
+.float 2.8784001295e-18
+.float 5.59108411806e+21
+.float 2.5327212851e-19
+.float 1.44132248779e+25
+.float 2.2755089737e+19
+.float 0.394657335864
+.float 6.86534127473e-11
+.float 3.22715271327e-12
+.float 3523720192.05
+.float 2.06441438086e-08
+.float 5.60157253903e-11
+.float 9.47827397904e-14
+.float 7.95653156479e-31
+.float 2.92519769593e-30
+.float 1.60084121105e-27
+.float 8.59369147658e-08
+.float 3.27199485782e-29
+.float 9126883.09135
+.float 3.24670969177e+13
+.float 67255559087.8
+.float 1.17914295513e-13
+.float 2.77597085166e-30
+.float 1.14626891228e-27
+.float 4.90359791753e-26
+.float 4.80775989017e+29
+.float 9.50568119252e-18
+.float 1.03544770626e-09
+.float 4.95991475354e-26
+.float 8.07362987308e+35
+.float 7.08686362018e-34
+.float 3.33620811239e+15
+.float 1.76623473891e-15
+.float 4.20869389665e-21
+.float 1.26477330712e-09
+.float 2.73807407505e-11
+.float 2.15197365606e-28
+.float 1.92491031213e-05
+.float 4.07747518261e+32
+.float 7.34558570682e+31
+.float 2.84480620035e+31
+.float 1.31865924673e+33
+.float 6.76930297369e-13
+.float 1.30416472227e-19
+.float 5.06711117953e-21
+.float 4.71427881394e+23
+.float 1.50547176893e+22
+.float 8.09890980156e-07
+.float 0.1075813305
+.float 2.2090948203e-32
+.float 0.000205166481923
+.float 2.91500149991e-22
+.float 2.1333178021e-39
+.float 3.03469048706e-26
+.float 2.19060208459e+33
+.float 1.17937419962e+19
+.float 1714209.1014
+.float 1.84804728457e+28
+.float 1.14948809862e+31
+.float 3.33100615783e-28
+.float 2.07868890698e-21
+.float 83.0941279782
+.float 4.3902556416e+21
+.float 3401.86515344
+.float 2.25400938974e+26
+.float 2.05545151072e+14
+.float 2.27024157993e-38
+.float 1.23095629065e+15
+.float 14.4927662628
+.float 1.4730994638e-29
+.float 1.63882433114e-30
+.float 115.366308756
+.float 19.692313537
+.float 2470470991.01
+.float 8.36186207618e-35
+.float 2370773111.5
+.float 130345304734.0
+.float 12397624028.3
+.float 1.61282122917e-09
+.float 9.49309393823e-22
+.float 1.164119072e-20
+.float 1.36050273595e-12
+.float 912640678.016
+.float 5.91021602014e-22
+.float 0.000913912003493
+.float 6.44100681723e+20
+.float 4.14797862783e+12
+.float 0.0249426570187
+.float 6.40366533977e-28
+.float 1.97992091647e-10
+.float 1.2827720384e-25
+.float 3.41683139068
+.float 2.84744133241e+13
+.float 1.53193772002e-28
+.float 1.90505656618e+14
+.float 1.56911779887e+32
+.float 8.76922715527e-23
+.float 1.08096494935e-32
+.float 1.70486318485e+24
+.float 2.36253400057e+36
+.float 3.42202725274e+13
+.float 0.000217766863811
+.float 4.84623228368
+.float 2.98773868872e+13
+.float 3.6431733673e-35
+.float 19698905438.1
+.float 1.73162894375e+34
+.float 6.82919721896e-36
+.float 2.35988520969e-06
+.float 5.96817576739e-31
+.float 2.11095914362e+36
+.float 9.05819869259e-09
+.float 694348.704063
+.float 5.05352390764e-20
+.float 9.66262044129e-26
+.float 5.47249863078e+32
+.float 221191.958107
+.float 8.20048158164e+27
+.float 3.04967231323e+21
+.float 6.12315966284e+30
+.float 4.48506352918e+22
+.float 1.52061850592e-20
+.float 4.15957873546e-16
+.float 1.80384075479e+18
+.float 2.21024353741e-12
+.float 1.5664211618e+31
+.float 3.18488064818e-31
+.float 1.2575879951e+17
+.float 1.78320964823e-35
+.float 0.00010841455531
+.float 1.0764191391e-31
+.float 5.84432681465e-34
+.float 9.13877224194e-07
+.float 6.39735702026e-36
+.float 3.68537669157e-35
+.float 2.12526061924e-27
+.float 1.24068827672e-11
+.float 3658739.35099
+.float 2.31010607559e-33
+.float 1.60967098482e+28
+.float 3.01065632523e-25
+.float 4.99675300389e+36
+.float 3.56958554883e-06
+.float 1383712.08284
+.float 1.62586179091e-37
+.float 2.9727251775e-20
+.float 71885.8115432
+.float 2.28472411234e+13
+.float 4.43968278993e+29
+.float 3.67088606684e+19
+.float 1.75569549035e-12
+.float 4.18677859775e+14
+.float 2.25060506244e+14
+.float 5.46436521106e-12
+.float 3.63275248951e+14
+.float 20.6163076725
+.float 956.813052785
+.float 7.29813198437e+25
+.float 1.38574118558e+19
+.float 2.60101873979e-12
+.float 2.46917586146e+33
+.float 2.71478351088e-05
+.float 4.30263632308e-31
+.float 2.5967230568e-15
+.float 8.46353523606e+28
+.float 1.77407486807e-25
+.float 1.2660933555e-38
+.float 3.69392134362e+13
+.float 2.74477671914e-07
+.float 2.94803197844e-16
+.float 6.36122767073e+32
+.float 1.9507600612e-15
+.float 2.1153918821e+37
+.float 2323.76063248
+.float 6.50668817247e-25
+.float 9.04272641801e-33
+.float 5.94804619785e+19
+.float 7.67413933499e-12
+.float 0.168854609475
+.float 1.32748864149e-34
+.float 0.0959349327548
+.float 9.19895339056e-35
+.float 410305.445151
+.float 2.14869439425e-19
+.float 4.69368190862e-11
+.float 5.458043531
+.float 2.59849676631e+27
+.float 7.64161521507
+.float 0.00731810573884
+.float 1.28371268859e-26
+.float 2204256408.14
+.float 2.83231755531e-39
+.float 1.12522339901e+12
+.float 6.86616769129e+31
+.float 0.00710792244283
+.float 129.707387408
+.float 2.2901515837e-38
+.float 3.9547598384e-28
+.float 2.14194309519e+25
+.float 3.98617310503e+37
+.float 6.46810916869e+36
+.float 3.34009769374
+.float 1.24572003946e-19
+.float 219886563939.0
+.float 0.0348518699985
+.float 2.44633575752e-29
+.float 1.49150282606e-27
+.float 3.89730498011e+12
+.float 4.30706293979e+34
+.float 362811.541437
+.float 4.52910358633e+24
+.float 4.85239512215e+30
+.float 1.42283991759e-08
+.float 7.52717493759e+31
+.float 6447.02054556
+.float 1.71057194966e-12
+.float 1.06477366437e+13
+.float 4.10319346746e-32
+.float 1.49860716846e-37
+.float 0.000424285612528
+.float 8.90298863992e+34
+.float 4.08176197619e-13
+.float 3.93745122656e-28
+.float 2.82543448982e-12
+.float 4.11567739833e+37
+.float 3.54173958992e+37
+.float 1.20008519861e+33
+.float 1.5795252355e+34
+.float 1.62628690571e+31
+.float 8.55123505101e+35
+.float 2.8942801753e-21
+.float 9.65972961613e+25
+.float 1.0142482545e+17
+.float 5.43078885269e-30
+.float 15475185341.5
+.float 1.4906970952e+19
+.float 4.43566900391e+33
+.float 105.960323115
+.float 8.81519395393e+14
+.float 3.69390363814e+23
+.float 9.68858214583e-30
+.float 3.38145483656e-26
+.float 9.06449244795e+33
+.float 7.45160242541e-39
+.float 2.14805057306e-38
+.float 5.33914195753e-36
+.float 0.113378517545
+.float 6.88316929817e-12
+.float 1.92093732001e-20
+.float 1.70621964705e-25
+.float 4.25153828228e+31
+.float 5.14876198086e-36
+.float 59.3505857182
+.float 1.62199147023e-19
+.float 7.87985038159e-16
+.float 1.90566122014e-06
+.float 4.98405280609e-24
+.float 3.93187384503e+23
+.float 38.100472892
+.float 1.58324326212e-23
+.float 2.9453477614e-28
+.float 3.95930279448e-19
+.float 1.24397021196e+23
+.float 2.29410702731e+21
+.float 5.83848291897e+14
+.float 1878159.77149
+.float 2.65346059399e+15
+.float 9.12486450431e-36
+.float 511121.467861
+.float 3.18632670409e+33
+.float 6.28688399202e+34
+.float 4.29825102152e-10
+.float 3.16424846916e-15
+.float 6.3144809923e-21
+.float 1.94269223949e+31
+.float 1.66993263115e-37
+.float 4.32829247789e-33
+.float 4.90638401535e-25
+.float 1.85285390503e+29
+.float 135.819064228
+.float 5.15934950111e-31
+.float 6.33894017746e+35
+.float 6.60960541039e-13
+.float 6.07758045279e+21
+.float 0.000561630042956
+.float 3.40849617358e-38
+.float 3.74395769877e+35
+.float 0.00106836700439
+.float 5.81785884432e+17
+.float 5.90479579266e-26
+.float 1005036172.15
+.float 5.41551870368e-14
+.float 1.70970513588e+26
+.float 4.42099824145e+13
+.float 1.08752489369e+29
+.float 4.83314247634e-11
+.float 1.9139407997e+25
+.float 0.11229924648
+.float 8.48406229333e+30
+.float 1.13472834912e-11
+.float 0.991450575946
+.float 1.1953710188e-13
+.float 1.32840801275e-39
+.float 110977725019.0
+.float 1.68779003589e+34
+.float 3.95375305067e-39
+.float 2.79609994512e-05
+.float 1.57460731924e+19
+.float 8.96536749208e-35
+.float 23130.5131809
+.float 9.24089002433e-35
+.float 2.21927000088e+27
+.float 0.000491710120234
+.float 802.947693262
+.float 7.25195285576e+19
+.float 9.78551273642e-19
+.float 1.40315628034e+14
+.float 2.20721001713e+14
+.float 2.16678900727e-14
+.float 6.44680589139e-06
+.float 5.87585154924e-10
+.float 1.63918092835e+13
+.float 1.20260555564e-06
+.float 4.1570092354e+24
+.float 1.86765807959e-09
+.float 3.03715807889e-27
+.float 1199.14605947
+.float 41.1141217924
+.float 1.7613992606e+34
+.float 1.12488628946e-19
+.float 8.68711196352e-32
+.float 3085131.51856
+.float 1.78449618093e-32
+.float 1.71716278746e+14
+.float 3.51348719507e+28
+.float 5.25218262608e-18
+.float 7.47559497588e-29
+.float 2.22269943199e-19
+.float 55179.2181188
+.float 9.14816674595e+27
+.float 1.29377621124e-30
+.float 1.33410989932e-14
+.float 9545032.20021
+.float 1.52687992985e-38
+.float 1.05823458689e-26
+.float 55.5675415639
+.float 0.00211216219299
+.float 2.18745011371e-39
+.float 1.12318525858e-13
+.float 3.49796541597e+27
+.float 1.07572452509e+30
+.float 2.92858905703e+25
+.float 1.02769558195e-08
+.float 801075.117928
+.float 6.22714260851e-08
+.float 1.9071515037e+25
+.float 8.2726352195
+.float 3.78770913817e-31
+.float 56885956092.9
+.float 28980.8503558
+.float 30160.1126078
+.float 6.02221235428e-18
+.float 14077.4034748
+.float 8251194.56802
+.float 1.50250403781e+30
+.float 7.84314157346e-06
+.float 9.40795252227e+13
+.float 3099.98305653
+.float 58844834964.3
+.float 2.13547454855e-32
+.float 1.53974145685e+17
+.float 1.20204358607e-38
+.float 3.58964146543e+15
+.float 1.87456826285e-37
+.float 5.1550915439e-20
+.float 2.48084102921e+29
+.float 7.5032949693e+16
+.float 8.560938086e-35
+.float 3.75276135223e+22
+.float 3.20875032811e+22
+.float 3.65617473571e-11
+.float 1.05801412441e-37
+.float 1.19022329283e+22
+.float 1.09120817064e+12
+.float 7.1248540232e+20
+.float 1.78488101761e-06
+.float 3.50473380753e+20
+.float 1.44823279655e-13
+.float 9.5370798267e+30
+.float 0.00345524292836
+.float 1.99863261178e+36
+.float 7.28309553481e-21
+.float 2.98401614297e-24
+.float 447.595601891
+.float 2.2073236588e-19
+.float 2.28761172878e+12
+.float 2.41858282536e+32
+.float 1.03099366534e+16
+.float 5.61749593922e-21
+.float 3810141.40075
+.float 6.77969481915e+18
+.float 25867.4225341
+.float 1.27539835274e-21
+.float 9.31947577917e-34
+.float 2.8334583842e-32
+.float 4.50091377004e+24
+.float 2.70268707471e+21
+.float 2.44005208265e-35
+.float 1.40093380731e-07
+.float 2.94650062392e-30
+.float 4.57143099832e-38
+.float 3.2698681321e+21
+.float 686741706349.0
+.float 3.03926703139e+26
+.float 1.93724598621e-19
+.float 4756749191.48
+.float 1.91566416912e+24
+.float 6.31930761737e-37
+.float 4.32626733883e-11
+.float 5.87912872223e-10
+.float 599906355.575
+.float 1.48926165337e-30
+.float 8.97242163411e+36
+.float 4.0109600205e+24
+.float 2.33685934522e-27
+.float 2.13808881116e+26
+.float 1.0334224456e-17
+.float 4.61688218378e+25
+.float 1100457600.76
+.float 45215.2635726
+.float 1.06665781918e-13
+.float 1.9716408684e+37
+.float 3.18352066153e+16
+.float 0.000204990802066
+.float 4.30964793254e+27
+.float 0.0619470076778
+.float 2.45856975738e+32
+.float 1.37037879315e-06
+.float 1.30156964803e+36
+.float 6.3127493596e-15
+.float 15016794214.5
+.float 797126656399.0
+.float 1.69836804068e-08
+.float 61.7846008239
+.float 8.48556472295e+33
+.float 8.84453163889e+25
+.float 1.35448646048e+20
+.float 8.2016792378e+24
+.float 1.55132791983e-23
+.float 1.39887434467e+24
+.float 1.01484380697e-18
+.float 8.9284801652e-29
+.float 4.32453423201e-19
+.float 7.35767823425e-23
+.float 5.5385887991e-14
+.float 2.632363714e-05
+.float 1.35616860603e+34
+.float 1.51628091002e+36
+.float 3.07071154523e+19
+.float 146974.435739
+.float 59606698001.2
+.float 4.77837535978e-31
+.float 2.34813973935e+24
+.float 49039.3585434
+.float 2.8807536367e+29
+.float 0.000324972549141
+.float 1.2608614048e-07
+.float 8.77147041785e-16
+.float 0.00717151205553
+.float 1968.94858723
+.float 2.20386415761e-13
+.float 1.36666510858e-06
+.float 6.98618236031e-31
+.float 6.56658626371e+23
+.float 8.93725310961e+26
+.float 4.16594527576e-35
+.float 16.5879654121
+.float 2.69114325078e+22
+.float 260908946020.0
+.float 6.15872028023e+32
+.float 1.4065474596e-27
+.float 5.40775552807e-23
+.float 1.37898748804e-12
+.float 4.76800828921e-14
+.float 2.50576933483e-20
+.float 0.00372994691028
+.float 9.17525642648e-10
+.float 1.0195294721e-13
+.float 8.44664247639e+35
+.float 2.63892405992e-27
+.float 1213788224.22
+.float 192951.230461
+.float 67.4392503413
+.float 1.85237154474e+31
+.float 0.258596191768
+.float 1.06345104815e+18
+.float 7.78117371973e+31
+.float 1.61084516622e-22
+.float 1709.61644928
+.float 4.30676269021e-19
+.float 62503450.044
+.float 3.52700867505e+28
+.float 6.95971551038e+12
+.float 2.48768957443e-37
+.float 4.12741563352e-37
+.float 8.99352977479e-18
+.float 61627.1150731
+.float 2.84102164007e+22
+.float 3.81079301998e-11
+.float 1.44583447838e+30
+.float 1.46576148394e-20
+.float 1.13805806482e-34
+.float 6.41274154845e-21
+.float 6.93438901829e+31
+.float 1.13148605596e+20
+.float 1.0605059073e-05
+.float 6.16477777296e-15
+.float 7.4981771468e-28
+.float 4.17324348242e-23
+.float 9.87943742423e+36
+.float 64.9611049223
+.float 7.0922421853e+34
+.float 7.20630995304e-07
+.float 1.43209484971e-17
+.float 50645364.1668
+.float 9.9366381617e-11
+.float 2.11879739952e-07
+.float 2.01558983633e-11
+.float 0.484856630165
+.float 9.45437524048e-23
+.float 1.40774841738e+13
+.float 5.98886691944e-38
+.float 50298.3796442
+.float 0.879184382069
+.float 2.34689332982e+13
+.float 0.000100651778815
+.float 2.57693710326e-31
+.float 4.14560001935e-26
+.float 1.0524313033e-34
+.float 2.00230618392e+19
+.float 11.4712995152
+.float 6.32303337758e+30
+.float 7.0619561148e-31
+.float 1.82531582579e-28
+.float 6.65307456919
+.float 1.16875436014e+37
+.float 9.0437174396e-34
+.float 2.48982600296e+15
+.float 4.41912635268e+18
+.float 2.00429521978e-36
+.float 2.37912082362e-34
+.float 14231828177.1
+.float 13427606109.5
+.float 6.66350074869e-29
+.float 3.64149145196e-18
+.float 0.0844356142551
+.float 1.21394553741e+12
+.float 2.77122390499e-19
+.float 3.84253640556e+23
+.float 1.48540821828e+29
+.float 5.76413753477e+30
+.float 5.43634419031e-21
+.float 2.7204281257e-33
+.float 4.97404137473e+19
+.float 1.24005832149e-21
+.float 1.52405361282e-27
+.float 3.32855513737e+35
+.float 9832150915.14
+.float 2.04723281508e-21
+.float 1.59593244031e-12
+.float 1.64164435212e+33
+.float 8.66712369017e-31
+.float 6.4910611169e+36
+.float 2738.49911372
+.float 6.63629441326e-06
+.float 3.23734905547e-28
+.float 1.83481736606e-11
+.float 3.45158651347e+25
+.float 0.684209560025
+.float 5.81567764341e+23
+.float 3.88438922397e-38
+.float 8.01987117473e-37
+.float 6.2540754258e-37
+.float 721749023.289
+.float 2.07724852354e+36
+.float 1.66408116282e-28
+.float 3.4697127327e-21
+.float 9.50584364982e-07
+.float 2.62500054758e+22
+.float 1.17545743716e-06
+.float 7.9012169219e+18
+.float 4.59903502028e+24
+.float 5.51241783371e-27
+.float 6.90452220556e+25
+.float 2.70039028089e-34
+.float 2.90731345219e-39
+.float 11622.8148909
+.float 4.62645081624e-05
+.float 1.49097794136e+34
+.float 179085837245.0
+.float 2.44118720937e+33
+.float 48.0324640703
+.float 1.0563060424e+13
+.float 5.79496964255e-06
+.float 2.98006702538e-21
+.float 13.7235136169
+.float 4.17680102386e-25
+.float 4.36673188599e+35
+.float 4.31310073524e+32
+.float 3.97112600454e-29
+.float 0.00727318999173
+.float 259.808605303
+.float 1.15178352828e-07
+.float 0.263936015693
+.float 1.3864851151e+30
+.float 3.95517367026e-21
+.float 3.25636704372e-15
+.float 1.07479950167e+30
+.float 1.00202381585e-28
+.float 2.12377587317e+15
+.float 3.71504867092e+19
+.float 2.93858322579e-15
+.float 2.52001696015e+21
+.float 3.85138160841e+30
+.float 1.36488741143e-08
+.float 0.112545606648
+.float 2.49668516578e+30
+.float 8.63351552941e+35
+.float 2.28346215148e-31
+.float 34031.7116182
+.float 1.47723577891e-15
+.float 1.76965666756e-34
+.float 0.00167549189826
+.float 8.53215952524e-39
+.float 2.19595590889e+21
+.float 6.3135537561e-26
+.float 2.21109737363e-24
+.float 9.3354699357e-38
+.float 2.61364234516e+15
+.float 2.3931092972e-12
+.float 2.32944850224e+36
+.float 1.55121523282e-21
+.float 2.94280308339e-35
+.float 1.35685498853e+28
+.float 5.70127962702e-37
+.float 2.81057416519e+25
+.float 1.73705565023e+33
+.float 8.62366046809e-38
+.float 1.34645083726e+12
+.float 12309478529.8
+.float 509.79476809
+.float 2.33409105433e+20
+.float 1.21498330892e+29
+.float 4.68090355891e+36
+.float 5.65279341778e+12
+.float 12614.8112657
+.float 1.13051378628e-30
+.float 1.21588344884e+27
+.float 0.0036216480105
+.float 2.53362504145e-36
+.float 1.52850599153e-37
+.float 1.93771683686e-33
+.float 28.2566354864
+.float 1.7606252389e-31
+.float 9.02096942962e-39
+.float 1.88397622137e-22
+.float 2.71282906586e-14
+.float 3.03055081964e+28
+.float 1.81262129851e+12
+.float 2.84201279199e+20
+.float 3.54259110511e-28
+.float 629.118599829
+.float 3.6412739926e-22
+.float 3.52409221683e-34
+.float 23.2597718275
+.float 6.03245363541e-37
+.float 3.83390563514e+30
+.float 1.22363776108e-24
+.float 4752.03283105
+.float 4.72170431067e+17
+.float 6.52754535086e+33
+.float 2.82314808817e-22
+.float 1.16235441901e+32
+.float 2.3247288326e+20
+.float 6.1233390784e-38
+.float 1.0594512293e+30
+.float 2.36532629696e-32
+.float 0.00014993702546
+.float 2.54956840766e+26
+.float 6.24454266847e-32
+.float 1.19768985674e+24
+.float 2.30053674549e-11
+.float 2.75215880949e-22
+.float 1.02215392046e-35
+.float 4.05419704309e+27
+.float 2.03190811392e-14
+.float 208897.828562
+.float 1.04480068868e+20
+.float 1.14805655348e-26
+.float 23101.804735
+.float 2.36352865933e+25
+.float 1.97720762588e-25
+.float 1.41318439561e+13
+.float 3060635998.74
+.float 4.52665932579e-36
+.float 541206603463.0
+.float 1.65632877358e-28
+.float 2.44691849202e-36
+.float 2.54551844903e-07
+.float 5.85377541209e-12
+.float 2.7195311764e+15
+.float 6.86736177021e-36
+.float 1.18357743017e+32
+.float 1.59950924395e-12
+.float 9.10443313569e-32
+.float 1.38628645376e+18
+.float 0.000110866227768
+.float 1.84392219867e-16
+.float 4.08702608535e-38
+.float 1.97071837604e-36
+.float 1.83483300692e+12
+.float 5.85910678078e-09
+.float 7.94787146419e-14
+.float 5.49421056576e-35
+.float 1.97123587477e-10
+.float 4.88294672651e-09
+.float 9.40915907911e-34
+.float 1.3695342938
+.float 3367090968.11
+.float 1.03979677e+32
+.float 1.16299185888e+19
+.float 1.39867429866e-36
+.float 1.75893096376e+25
+.float 6161723380.82
+.float 5.90069651615e+20
+.float 8.95392209911e+15
+.float 9.76120967577e-19
+.float 7.17249639411e-13
+.float 0.000294003524547
+.float 3619098594.13
+.float 3.01030870309e+26
+.float 30719.8924578
+.float 3.86012086984e-25
+.float 5146913.25166
+.float 1.16405411757e+27
+.float 7.27660247085e-08
+.float 2.15791034601e+15
+.float 3.09429370369e+32
+.float 3.49548705808e+25
+.float 5.13407277651e+31
+.float 4.23684214444e+14
+.float 1.06871156524e-36
+.float 2.90906049467e-33
+.float 2.23740363979e-37
+.float 7.07466625153e+31
+.float 5.88797917437e-32
+.float 1.99986313033e-13
+.float 2.4951012256e+35
+.float 1.24136832766e-09
+.float 6.70687778843e+36
+.float 2.31474889837e-31
+.float 4.8186831663e+14
+.float 1085133869.57
+.float 3.49058619376e-25
+.float 1.57250378368e-35
+.float 1.79664980272e-06
+.float 2.73428041076e-20
+.float 7.0918269534e+29
+.float 5.21259445087e+28
+.float 4.61176243838e+31
+.float 3.08878245863e+36
+.float 2.61444161236e+20
+.float 1.39941242287
+.float 5.17673340502e-39
+.float 2.17318687696e-07
+.float 7.6233500532e+29
+.float 5.75457618486e-13
+.float 2659.67544681
+.float 1.78273307772e-37
+.float 5.40732119593e-34
+.float 3.92200987146
+.float 0.000902667419885
+.float 16773208.6051
+.float 7.1892883635e-19
+.float 1.23522972611e-31
+.float 1.87949196879e-24
+.float 3.41935464023e+33
+.float 1.52437122416e-05
+.float 9.76870416637e-29
+.float 5.04577311767e-07
+.float 3.70125960406e-38
+.float 9.36704595821e-08
+.float 2.15504500783e-10
+.float 2.92864979156e-33
+.float 143135271.728
+.float 22045.5651034
+.float 5.6528086716e-19
+.float 1.02608100127e+37
+.float 1.18016117758e+32
+.float 14637386.6572
+.float 6.80064114213e+21
+.float 2.09815656415e+37
+.float 9.00659180734e-20
+.float 2.71244232734e-16
+.float 3408090881.39
+.float 98212105.8353
+.float 3.65190594718e-19
+.float 8.48997035405e+17
+.float 1.47027940563e-23
+.float 80.654781505
+.float 3.09539444085e-25
+.float 3.78372295214e-36
+.float 1.91339916892e-31
+.float 2.96285738613e+36
+.float 4.25020026571e-11
+.float 8.74255629578e-20
+.float 4.42762896863
+.float 7.41162549613e-31
+.float 1.05884148896e+22
+.float 5.00907424838e+14
+.float 5.92387138731e-31
+.float 80725347299.0
+.float 1.67769049164e-21
+.float 8.61458970878e-30
+.float 1.03077213891e+29
+.float 2.7405141671e-11
+.float 3.67025222969e+18
+.float 15664921921.8
+.float 9.90529910334e-08
+.float 31971.6392338
+.float 0.000174534938639
+.float 3.91536182865e-29
+.float 2.26902259877e+27
+.float 1.11877208048e+37
+.float 1.96177383698e-38
+.float 7.37183431373e+28
+.float 2.57735142123e+28
+.float 1.95297556502e+34
+.float 2.74241085483e-05
+.float 5337956.36612
+.float 1444645965.69
+.float 9.75354635138e+13
+.float 14765465508.4
+.float 1.25335235996e+16
+.float 2.75148730343e+22
+.float 2.26232943175e-21
+.float 3.19201634071e-33
+.float 8.57325560934e+24
+.float 2.55077132568e-10
+.float 9.27781367973e+37
+.float 1.93211590871e+17
+.float 18721.2281316
+.float 571920682.429
+.float 2056.40414516
+.float 26418378.4599
+.float 11668148.3537
+.float 3.1752439144e+17
+.float 243.444861489
+.float 115007.441759
+.float 0.000191691859198
+.float 3.95040829013e-12
+.float 1.0338827013e-15
+.float 5.60839365902e-28
+.float 3.03808361459e-25
+.float 1.04745523019e-16
+.float 1.41891093458e+13
+.float 3.7694443405e+20
+.float 3.04721841867e+23
+.float 3.06549887867e+15
+.float 1.89231406017e+22
+.float 2.8952217686e-26
+.float 4.6758732584e+29
+.float 1.17720851944e-35
+.float 5.62018171318e-21
+.float 450103965.87
+.float 3.30159705208e-18
+.float 5.86758069788e-27
+.float 1.75885671861e-32
+.float 3.14166731856e+27
+.float 3.14684519349e+31
+.float 1.35074405473e-05
+.float 792504.237982
+.float 1.82700696803e-29
+.float 731966432.792
+.float 3.33234996972e+15
+.float 1.29300254404e+13
+.float 3.99869953105
+.float 3175628240.22
+.float 3.72274617474e-32
+.float 2.3149318327e-29
+.float 8.84855178184e-10
+.float 10270836745.0
+.float 9.25799924052e-32
+.float 4.33905672481e-17
+.float 7.52410452303e-18
+.float 49322806.8377
+.float 5.84004265739e-17
+.float 1.15019385978e-32
+.float 2.75060252979e-23
+.float 194.331047854
+.float 1.19538876665e+23
+.float 6.01373518831e-20
+.float 4.86220142923e-12
+.float 481.441807223
+.float 504854.609105
+.float 4.07700344459e-25
+.float 1.18534564408e-19
+.float 9.67703876395e+30
+.float 5.58315934792e-40
+.float 1.30316089972e-39
+.float 7.54893242767e+32
diff --git a/isa/rv64uv/data_w.h b/isa/rv64uv/data_w.h
new file mode 100644 (file)
index 0000000..32d5865
--- /dev/null
@@ -0,0 +1,16385 @@
+.align 2
+.word 0x3ceb3ff3
+.word 0x8b529b44
+.word 0x5eb561bd
+.word 0x9a9a80ef
+.word 0xa02f34b3
+.word 0x10c67fd3
+.word 0x035efa3d
+.word 0xd6645faf
+.word 0x42650651
+.word 0x3bfd1d26
+.word 0xfee29477
+.word 0x78633071
+.word 0xd6225672
+.word 0x79f248ad
+.word 0xa399f83c
+.word 0x268ecc47
+.word 0xa2863a65
+.word 0xde38379e
+.word 0x85ef342d
+.word 0xbdc2ae81
+.word 0xabe19f59
+.word 0x10645d45
+.word 0xc21b609f
+.word 0x97524d61
+.word 0x4d1fe099
+.word 0x07f062da
+.word 0xdd933169
+.word 0x79061593
+.word 0xb804d83e
+.word 0xe0f9e02d
+.word 0xb6d13099
+.word 0xebcd1f4e
+.word 0x651c5257
+.word 0xcd085b73
+.word 0x71d2af7f
+.word 0xef829c85
+.word 0xe0fd67cc
+.word 0x18f2c401
+.word 0x22cedaef
+.word 0x378c74c8
+.word 0xf729b4d6
+.word 0x6fa84dd9
+.word 0xa06c05bb
+.word 0x4d100d8d
+.word 0x81daad1b
+.word 0x62c82192
+.word 0x59d54511
+.word 0x95c76aad
+.word 0x95918688
+.word 0xe779c46b
+.word 0xae96619d
+.word 0xedcf6101
+.word 0xdb3d1149
+.word 0xfdb17f54
+.word 0xabd89536
+.word 0x29c0e596
+.word 0xdc52bdcb
+.word 0xf6f22f52
+.word 0xe79a27f3
+.word 0x91b10783
+.word 0xb6bcb655
+.word 0x360c4974
+.word 0xd4e441e0
+.word 0x92d30429
+.word 0x48f2f8e4
+.word 0x103ef3cf
+.word 0xda9bf995
+.word 0xfd63ed50
+.word 0x16a91f2b
+.word 0xccf3d0a2
+.word 0x691406bd
+.word 0x26988f40
+.word 0x4b3c74ed
+.word 0xc4cf8b8e
+.word 0xdf6da8e4
+.word 0x0b500a33
+.word 0x9d5200f8
+.word 0x0b81342c
+.word 0xb7ebb713
+.word 0x54b96931
+.word 0xe183029e
+.word 0xfb0af1e9
+.word 0x81633ac8
+.word 0xff9e4842
+.word 0x4f468960
+.word 0x13b45a23
+.word 0x998a0e31
+.word 0x08085f7e
+.word 0x3287d05f
+.word 0x686e80a9
+.word 0x9c4792c9
+.word 0x27fca836
+.word 0x0add12ff
+.word 0xde26c44b
+.word 0x5057326b
+.word 0xf56ab445
+.word 0xe58b7c7c
+.word 0x60b6cbac
+.word 0x75dd67dc
+.word 0x852380cc
+.word 0xa4d5e41c
+.word 0x987c88b6
+.word 0x8f2bbba3
+.word 0x9ec0961f
+.word 0xf0cc8dfa
+.word 0x81cc8269
+.word 0x6e6291d4
+.word 0xb8665177
+.word 0x3cd5b01e
+.word 0x4d14074e
+.word 0xfa50ecc9
+.word 0x8568992a
+.word 0x8c65f06b
+.word 0x02eee0b9
+.word 0x6a4b39a0
+.word 0x947899aa
+.word 0x05222fac
+.word 0x9da4ef13
+.word 0xa1d69564
+.word 0x0f616fb4
+.word 0xa0996d4b
+.word 0x775c302b
+.word 0xade562be
+.word 0x5a427c33
+.word 0xb4fab109
+.word 0xbcefd0b0
+.word 0x05adc012
+.word 0x0f81f61e
+.word 0xad0faac1
+.word 0xf69b31cc
+.word 0x40498cb4
+.word 0x74d0df2a
+.word 0x97b95813
+.word 0x51ed2f05
+.word 0x5d2c2926
+.word 0x500b2f38
+.word 0x5e80dffb
+.word 0x987aa6a9
+.word 0x4ce74659
+.word 0x608d9483
+.word 0xc5b3b5da
+.word 0x06e44edf
+.word 0x91bae476
+.word 0xbc344f44
+.word 0x4f5d4110
+.word 0x38f83d75
+.word 0xcdc656e9
+.word 0x3d1b208a
+.word 0x2ff91355
+.word 0x6f6b8435
+.word 0xb2b47ae3
+.word 0x1a124c13
+.word 0x526c5cde
+.word 0x5570e115
+.word 0xd562ce08
+.word 0x703cff1a
+.word 0xdb045abf
+.word 0x2b563622
+.word 0x5632a458
+.word 0xa675a107
+.word 0xe288b173
+.word 0x737b6ec9
+.word 0x399b6cb9
+.word 0x1ef491a1
+.word 0x8795ad1f
+.word 0x30d884aa
+.word 0xce88f3fb
+.word 0xd6a66353
+.word 0x2eff833b
+.word 0x4751d08b
+.word 0xcea663fb
+.word 0xa4560003
+.word 0xce66e9f4
+.word 0x58647433
+.word 0x21334ead
+.word 0x4abcc4f0
+.word 0xcb3a88fb
+.word 0x456bb10f
+.word 0x58aaac94
+.word 0x6aba54e9
+.word 0x6b761fd2
+.word 0x68d67101
+.word 0xebad40ce
+.word 0x27ef79c6
+.word 0x013183ef
+.word 0xf17a003b
+.word 0xe1464134
+.word 0xfca65f91
+.word 0x6f31b692
+.word 0xf33dc320
+.word 0xed6897d7
+.word 0x38daf041
+.word 0xbeda988f
+.word 0xd631e278
+.word 0xa9b98778
+.word 0x84de2a5f
+.word 0x49fea551
+.word 0x5750477c
+.word 0x3a3b3bdb
+.word 0x116ce13b
+.word 0x96b3953f
+.word 0x49799084
+.word 0xcf68bc28
+.word 0x0b8a2761
+.word 0xe752f01a
+.word 0xb196b0d1
+.word 0xec81bf87
+.word 0xe5856cfd
+.word 0xe651170e
+.word 0x93b337e2
+.word 0x035d700f
+.word 0xbecbde04
+.word 0x2bfc7ff0
+.word 0x4cc576e7
+.word 0xa9b38f21
+.word 0x86640cb1
+.word 0x69eb8ca2
+.word 0xf065163e
+.word 0x9cb6c624
+.word 0x5762e344
+.word 0x40a230ff
+.word 0xdc960f12
+.word 0x7a299d7a
+.word 0xc8467562
+.word 0x5a124b07
+.word 0x328475a4
+.word 0x88ddf91c
+.word 0xd11a8404
+.word 0x2bda7707
+.word 0xcaab02c9
+.word 0xebf8e3dd
+.word 0xce595c64
+.word 0xd2d0d09e
+.word 0x01ebd44f
+.word 0xa0ec66f2
+.word 0xdcd0604d
+.word 0x0cc85578
+.word 0x457a46a8
+.word 0x44c20f34
+.word 0x86faea91
+.word 0x6c48ae02
+.word 0x790ff9aa
+.word 0xc6c88cfb
+.word 0x0076881b
+.word 0x0e0992f8
+.word 0x207a1cc1
+.word 0x1fe78141
+.word 0x1183c18f
+.word 0xf9857322
+.word 0xdabd2a57
+.word 0x160c7c30
+.word 0x808aefd0
+.word 0x50de9385
+.word 0x50884d42
+.word 0x59ee1ccc
+.word 0xa59c216d
+.word 0x962c470a
+.word 0x5c5fa7c8
+.word 0x30eabfff
+.word 0x542aaf0e
+.word 0x1fae68c4
+.word 0x8e36f2c0
+.word 0xb74e9517
+.word 0x61574819
+.word 0x14746832
+.word 0x2db5db01
+.word 0x5f8eec2f
+.word 0x9abc3e55
+.word 0xc859e792
+.word 0x615906b4
+.word 0xcd18e1a2
+.word 0x9f781c9c
+.word 0x6e7ceb02
+.word 0x5f56ed34
+.word 0x7f03ca98
+.word 0xb3effcaa
+.word 0x6ba6cc7e
+.word 0xb1b20f0e
+.word 0x75f99ac1
+.word 0x3ebdc767
+.word 0x892ca389
+.word 0xb1f69af3
+.word 0x125321d9
+.word 0x6cc57ee7
+.word 0x6d04d644
+.word 0xe13201a1
+.word 0xefbd6b8b
+.word 0x5fcde91f
+.word 0xe5d9c5d2
+.word 0xca79879c
+.word 0x431e35e4
+.word 0x76d216f6
+.word 0x1f867fde
+.word 0xd02f4c38
+.word 0xa98bcfbb
+.word 0xe328f191
+.word 0xcadf460c
+.word 0xaae550c4
+.word 0xbbd6118a
+.word 0x905813d1
+.word 0x1a66f0ba
+.word 0x96775bd7
+.word 0x014135cf
+.word 0x24bd9e87
+.word 0xc638c9cd
+.word 0x0b581670
+.word 0x17802192
+.word 0x196bb2b5
+.word 0xe166586c
+.word 0x2ddd02ba
+.word 0x060344aa
+.word 0xd76ee01c
+.word 0x1f0c6f00
+.word 0xd80caa44
+.word 0xac6cc650
+.word 0xd6100537
+.word 0xf3d13a6a
+.word 0x943e5a2a
+.word 0xcc7ab323
+.word 0x0948f15f
+.word 0xc4758a92
+.word 0x82e63e71
+.word 0xb7149708
+.word 0x1b538e11
+.word 0xbfbc2a43
+.word 0xef3f7a52
+.word 0x0fa6d691
+.word 0x5301d7bc
+.word 0x9060d1c6
+.word 0xd3fbb243
+.word 0x3dfbf940
+.word 0x2e059114
+.word 0x3ffdc6ee
+.word 0x9db0edf7
+.word 0xc0e836de
+.word 0x64cb7c68
+.word 0x5e129a33
+.word 0x658a2d3e
+.word 0x59ac3e72
+.word 0x6b104fdf
+.word 0x15508f2c
+.word 0x80144a68
+.word 0xf91a3a5e
+.word 0x69af511b
+.word 0xbf56323f
+.word 0x291e6cad
+.word 0xb0dac432
+.word 0xc190d1d3
+.word 0xac81d07e
+.word 0x84602576
+.word 0x7bd521e5
+.word 0xa498916d
+.word 0xe5bc175d
+.word 0x263a5205
+.word 0x188a5430
+.word 0xbf8712d0
+.word 0xeaa73d77
+.word 0x846ac01e
+.word 0x716bf4b3
+.word 0xb80a871c
+.word 0x2fa4f904
+.word 0x44718838
+.word 0x32fd7324
+.word 0x95eb0431
+.word 0x5099d8fe
+.word 0x3b785a1b
+.word 0xb0ee0db1
+.word 0xf413b279
+.word 0x4bbdb815
+.word 0xb490b8fc
+.word 0x69c78513
+.word 0xda881dd3
+.word 0x95ab8300
+.word 0x44657bdc
+.word 0x37b4f40a
+.word 0x05eb8108
+.word 0x7abfd4da
+.word 0x61fbe926
+.word 0x2c186d92
+.word 0x5c47c908
+.word 0x52715acf
+.word 0xc63244fc
+.word 0x24c3a22d
+.word 0xfdc07557
+.word 0x7ac666b6
+.word 0x99581b27
+.word 0x77d25193
+.word 0xd5a91d5d
+.word 0xd2555e55
+.word 0x8e9f7f81
+.word 0x7b366ea0
+.word 0xb88062e3
+.word 0xdb4d585f
+.word 0x66779739
+.word 0xbbcc73bc
+.word 0xf5d38682
+.word 0x77a7365d
+.word 0x3ac72a1c
+.word 0x3c1a7554
+.word 0xb7ba6c99
+.word 0xace3ca82
+.word 0xf56e5387
+.word 0xda97fa88
+.word 0x3df9ba7c
+.word 0x308b24d9
+.word 0x42351e64
+.word 0x2feb67b4
+.word 0xb46977d6
+.word 0xdbcceb42
+.word 0xe656abde
+.word 0x41483325
+.word 0xdd771fc2
+.word 0x503c14a6
+.word 0x6c5d1483
+.word 0xba9dacda
+.word 0x15ff3543
+.word 0x17b76868
+.word 0xd57c615e
+.word 0x4ab10161
+.word 0x5b4e240e
+.word 0x948e8b38
+.word 0xacee0ceb
+.word 0x01c32140
+.word 0x55b5946a
+.word 0x6fac33ac
+.word 0x7c63fa22
+.word 0x35c8de74
+.word 0x95c97798
+.word 0xf490fc50
+.word 0x64135544
+.word 0x8b5af32a
+.word 0x1e825d3c
+.word 0x4656c0c2
+.word 0xaa59d20e
+.word 0x1cceb36e
+.word 0xe31ed1b1
+.word 0xe8a4a068
+.word 0x18cecf10
+.word 0xf0f83877
+.word 0x5fcd1af6
+.word 0xc5bd448c
+.word 0xc1dff10f
+.word 0x4ba81e35
+.word 0xad06f176
+.word 0xa771ae1e
+.word 0xce599eda
+.word 0x43fdd203
+.word 0xc112935e
+.word 0xf6197c0b
+.word 0xac3e4332
+.word 0x894242b1
+.word 0x1d00f855
+.word 0x7e6ef790
+.word 0x5a270302
+.word 0xb7d4f68a
+.word 0xadb50c97
+.word 0x90ff0738
+.word 0x2e963a34
+.word 0xa54a7c38
+.word 0xa181a485
+.word 0x2dd9c98c
+.word 0xe3d1bf7e
+.word 0xa7c66a0f
+.word 0x1f858063
+.word 0xee8d5572
+.word 0x2431c21d
+.word 0x54df24f4
+.word 0xb8713475
+.word 0x98f15b0e
+.word 0x8e0f7cea
+.word 0xa5c1b206
+.word 0x752c146f
+.word 0x4ffc3f19
+.word 0x2d2751f6
+.word 0x118f8683
+.word 0xb740fdc6
+.word 0xc125a152
+.word 0x8b0ae752
+.word 0xbd58f66d
+.word 0x5bf5fee3
+.word 0x440e7ce8
+.word 0x62252bc2
+.word 0xdf5ecb25
+.word 0x0ac7c66f
+.word 0x8134cac9
+.word 0x3f484196
+.word 0xc4d6b891
+.word 0x5aa6e95c
+.word 0x55367c5e
+.word 0x6741372e
+.word 0x8a9f9efa
+.word 0xc58ecfc2
+.word 0x5a56a490
+.word 0xd8cd5e60
+.word 0x1cb49c04
+.word 0x453eab73
+.word 0x198293d5
+.word 0x1cd8e8d2
+.word 0xc76b6f1d
+.word 0xba2fa224
+.word 0x2f521016
+.word 0x306d69f2
+.word 0x6aa9ec95
+.word 0xbe4a0d6d
+.word 0xd0d4df60
+.word 0xbfaad4a4
+.word 0x9787d394
+.word 0x257f223b
+.word 0x65fed0b9
+.word 0x31924a11
+.word 0x8710df85
+.word 0x91809426
+.word 0x33bb4cfb
+.word 0x4009de8c
+.word 0xc81b100a
+.word 0x07b3cfba
+.word 0xcd9ba96f
+.word 0xe425b0cd
+.word 0xf306d19b
+.word 0x6215e04a
+.word 0x8d779cfd
+.word 0x9543340a
+.word 0xa2365b10
+.word 0xfa1b24b1
+.word 0xafc6fe17
+.word 0x4ca5b59c
+.word 0xdc29aad6
+.word 0x7bec2761
+.word 0x99f2fd46
+.word 0xba11d175
+.word 0x009b8283
+.word 0xc53ca2d8
+.word 0xa974bd88
+.word 0x7deb5be6
+.word 0x860d4034
+.word 0x75e58526
+.word 0x31850c99
+.word 0x879073c7
+.word 0x097ce99a
+.word 0x801d4c1e
+.word 0xa55d86be
+.word 0x71b88c84
+.word 0x90e5ac89
+.word 0xf5827535
+.word 0xe45d69a5
+.word 0x22b5e18f
+.word 0xcad921a3
+.word 0x9f8f23de
+.word 0x0cf49460
+.word 0x5c227914
+.word 0x3bc10190
+.word 0x13ed14b0
+.word 0x89f40aa1
+.word 0xee08da2b
+.word 0x52b7d46a
+.word 0xded9cb0b
+.word 0xb1d53816
+.word 0x226532e2
+.word 0xdbb8f91b
+.word 0x99e36379
+.word 0xed4e4882
+.word 0xb748a363
+.word 0xbd5e4460
+.word 0x57f5b3c0
+.word 0xce8299c7
+.word 0xee8682a2
+.word 0xdc88a467
+.word 0x6fe0da16
+.word 0xc1c0e247
+.word 0x7c29134a
+.word 0x1bef6db9
+.word 0x0aee7d4d
+.word 0x13f406fb
+.word 0x33470ab6
+.word 0x292ba5cc
+.word 0x7f4491cf
+.word 0xb303e1a2
+.word 0x899562bb
+.word 0x6c0f7a47
+.word 0xa634bdd0
+.word 0x4dfd8961
+.word 0x76e3442f
+.word 0xc1d13956
+.word 0x66c5f0ce
+.word 0x2e3b15ae
+.word 0xe63fd162
+.word 0xb83dbc68
+.word 0x5def4e5b
+.word 0x5ef8194e
+.word 0x87823f0c
+.word 0x98b2882d
+.word 0x394e093f
+.word 0x00b0fbb9
+.word 0x3580b348
+.word 0xc87e806c
+.word 0x24baeb7b
+.word 0x75c1c1d1
+.word 0x31ff2685
+.word 0x3593dc40
+.word 0x2bb72f12
+.word 0x675bfaf0
+.word 0x2b141fb4
+.word 0x07091a24
+.word 0x1c2d8153
+.word 0x2b11500e
+.word 0x7d82ac06
+.word 0x0f49a97a
+.word 0x05bde28c
+.word 0x72b1a2ea
+.word 0x6861d7e1
+.word 0xb414db97
+.word 0x0d15f1c7
+.word 0x673ee161
+.word 0x65882810
+.word 0x06d365fd
+.word 0xf72cc17d
+.word 0x380a8487
+.word 0x1822228c
+.word 0x797e77c6
+.word 0x2a2da7aa
+.word 0x9f58fd64
+.word 0x58aafd3d
+.word 0x1fbae5f3
+.word 0x0d48be19
+.word 0xba48fdaa
+.word 0x466c38df
+.word 0xc9afd61e
+.word 0x7724b5d9
+.word 0xeed3c53f
+.word 0x4cf0b94f
+.word 0x3ffe3732
+.word 0x440c6581
+.word 0xd08e2a6b
+.word 0xa10cf520
+.word 0x5840d30a
+.word 0x17fdc381
+.word 0xaeb1ad4e
+.word 0xf821e7e3
+.word 0x979e33b4
+.word 0x00ef9dc3
+.word 0x07c1da35
+.word 0x172d43c0
+.word 0x2b9b0170
+.word 0x095f02af
+.word 0x0dcf4026
+.word 0xa780f970
+.word 0xe67a1dcb
+.word 0x3360529c
+.word 0xf94e0cf9
+.word 0x7a14ab6b
+.word 0xcdb7fd10
+.word 0xead920ec
+.word 0xf0a9ba56
+.word 0x08c21aec
+.word 0x4e0253d8
+.word 0x9b5fed94
+.word 0xf25068ed
+.word 0x1678b71e
+.word 0x4b1e75c6
+.word 0xd9936a2e
+.word 0x1d5b40f0
+.word 0x63ce1691
+.word 0x558cf431
+.word 0xae179c39
+.word 0xedb3728d
+.word 0x2cb49dfa
+.word 0xbd632b7c
+.word 0xbbe4384d
+.word 0xd5eda29e
+.word 0x8da776cc
+.word 0xec6ab2e6
+.word 0x5ce220fa
+.word 0x6a2b460e
+.word 0x3aba462e
+.word 0xc78b0777
+.word 0x7b09958b
+.word 0x44fb2a1a
+.word 0x2b744970
+.word 0xb87b2558
+.word 0x9b0f759d
+.word 0xb5eba597
+.word 0x63054b9e
+.word 0x7cb37f81
+.word 0x27654c25
+.word 0xb5f04178
+.word 0x05e04a3a
+.word 0x77889823
+.word 0xc229dfb6
+.word 0xad659015
+.word 0x18dab8aa
+.word 0x3cb73c13
+.word 0xd7f9c55a
+.word 0xa4730122
+.word 0xe0e79714
+.word 0xdf4c4d22
+.word 0x732cee2f
+.word 0xe59adddc
+.word 0xbb9c9155
+.word 0x556e1f80
+.word 0x5ebe6b60
+.word 0x127250a6
+.word 0x663ab079
+.word 0xf4a82ade
+.word 0x1ae10e4a
+.word 0x91a3120a
+.word 0x1c319aae
+.word 0x14b525ba
+.word 0xa62df827
+.word 0x3d9da996
+.word 0x0c7f77df
+.word 0x271594fe
+.word 0xa501ac25
+.word 0x95e71580
+.word 0x02fbffa3
+.word 0x3adc57a9
+.word 0xf79d9d47
+.word 0x385744fb
+.word 0x8ffcc051
+.word 0x6b6c5170
+.word 0xc7f953bd
+.word 0x9ab6e3ca
+.word 0xc9e4639d
+.word 0x89042bf9
+.word 0x302b3faf
+.word 0x2d77d5f4
+.word 0x1441bce1
+.word 0xd354d89a
+.word 0x1ccee7d3
+.word 0x0624815b
+.word 0xf766fd24
+.word 0x33027e7e
+.word 0xe4ae3f89
+.word 0x15f52d63
+.word 0x77199f0d
+.word 0x390650fa
+.word 0xd45844b6
+.word 0x9d8c41e4
+.word 0xa44d5cb0
+.word 0xc2eb3636
+.word 0xdf27bf77
+.word 0x5896a40d
+.word 0x9a653215
+.word 0x72129d99
+.word 0x1c66db09
+.word 0xd5db63bf
+.word 0x982a590e
+.word 0xd096d66c
+.word 0x34bb9903
+.word 0x8a07d5c0
+.word 0x76d41d6a
+.word 0xba5ec775
+.word 0x13c5e70b
+.word 0x589d3d26
+.word 0x7c0ae5d8
+.word 0x124f98fd
+.word 0x8d7de896
+.word 0xbc3dca6c
+.word 0x6c400159
+.word 0xa5fe3502
+.word 0x9b1a4031
+.word 0x36d3a688
+.word 0x59bd63bb
+.word 0xfee91282
+.word 0x55cfe2c7
+.word 0x6e4ada6e
+.word 0x158d4be8
+.word 0x37c76caa
+.word 0x2a4ffd58
+.word 0xee51a907
+.word 0xb9f2ebe7
+.word 0xdfedbbdc
+.word 0xfc902b98
+.word 0x9cb56acf
+.word 0xee6ca957
+.word 0x8924b95b
+.word 0x6b3289cc
+.word 0xf2b3ac87
+.word 0xe7310b74
+.word 0xf319410e
+.word 0x7bf3ec1d
+.word 0xc6015e40
+.word 0x682fed4f
+.word 0xff4f2cf3
+.word 0xeb9919a2
+.word 0x4ac3603e
+.word 0xef276da1
+.word 0x2f40fd3c
+.word 0x188ac281
+.word 0xb8ec8185
+.word 0x4b571310
+.word 0x84fb1e62
+.word 0xa3a5f84f
+.word 0x0a624466
+.word 0xbec47227
+.word 0x46a6d790
+.word 0x6eb167c1
+.word 0x58440f6f
+.word 0xbdf98c67
+.word 0xbf2dbe79
+.word 0x498cb244
+.word 0x1a75e8ce
+.word 0x4ca11c9d
+.word 0x693c92ae
+.word 0x13dad126
+.word 0x2738df4f
+.word 0xc3424c3a
+.word 0xb34efc69
+.word 0xf9f590ec
+.word 0xfaca65ba
+.word 0xe04af5b5
+.word 0x5f6173fe
+.word 0x294df38d
+.word 0x4fdb4b7e
+.word 0x76913e0f
+.word 0x86a408a0
+.word 0x8ac55b67
+.word 0x5c163c3e
+.word 0xda4a26aa
+.word 0x490201a1
+.word 0x7691864c
+.word 0xe306104c
+.word 0xcea098db
+.word 0x4c2250f8
+.word 0x3e1b3f3e
+.word 0xce81efb1
+.word 0x02932a80
+.word 0x21a8a5d4
+.word 0x87e6a6c5
+.word 0x892c9001
+.word 0x2a6d3dfe
+.word 0x0cddd320
+.word 0x34355d5f
+.word 0xc51e8b7a
+.word 0x773b3e0b
+.word 0xfab2b9ff
+.word 0xc918deec
+.word 0xfaaf30f2
+.word 0x08fddcef
+.word 0x2f5ebc87
+.word 0x03604988
+.word 0x6eaef61d
+.word 0x5698cbbb
+.word 0x0d1f8cd3
+.word 0x8bc7aefa
+.word 0x18046eae
+.word 0x4fc60368
+.word 0x3f4aa555
+.word 0xcd583210
+.word 0x6b106037
+.word 0x42a69fab
+.word 0x0b441380
+.word 0x6df7d881
+.word 0xa0a2cd80
+.word 0xacdba3c5
+.word 0xe99d0639
+.word 0xcefe2152
+.word 0x3f53de1e
+.word 0x22baf837
+.word 0xc2209e7b
+.word 0xca1d23ad
+.word 0x8242b1f8
+.word 0xd4bc34ab
+.word 0x8d468c24
+.word 0x47936e20
+.word 0x2b3268e1
+.word 0x045d2c4f
+.word 0xa4a1c282
+.word 0xe5a01c3b
+.word 0xe7fa2f8f
+.word 0x77ad3951
+.word 0xaa5d54b8
+.word 0xedb9ff1c
+.word 0xd062ec40
+.word 0x9a471fb1
+.word 0x6a17ecec
+.word 0x84b67cf4
+.word 0x2bb8f3a9
+.word 0x2ed5c542
+.word 0xaf0cbf25
+.word 0xfdfb209b
+.word 0x8c0c8d23
+.word 0x687c3b39
+.word 0x5a16336e
+.word 0x7473c849
+.word 0xcd8de1e8
+.word 0x73d817e9
+.word 0xf5923891
+.word 0x27c20fd2
+.word 0x509dba04
+.word 0x85a1b041
+.word 0x6970bc8f
+.word 0xd9df9328
+.word 0xd3dda7af
+.word 0xee6b5f73
+.word 0x9cca6a09
+.word 0x07d524aa
+.word 0x93130073
+.word 0x8cbc49c4
+.word 0x7cd28404
+.word 0x47a43779
+.word 0xb59af6f8
+.word 0xe9602e29
+.word 0x1a3aa72e
+.word 0xab2f6b63
+.word 0x5f0dad81
+.word 0x83c97910
+.word 0xe54ca8b8
+.word 0xf5d790bb
+.word 0xa4bff70e
+.word 0x31f139ca
+.word 0xebb396cb
+.word 0x2e5e8055
+.word 0x622028fe
+.word 0xd403624d
+.word 0x50f23bc1
+.word 0x4558e367
+.word 0xf32d8b22
+.word 0xf19d204b
+.word 0x5140c2d3
+.word 0x647d2d12
+.word 0x482db7e1
+.word 0x21aaf0cd
+.word 0x400ead0d
+.word 0xfaec7d7d
+.word 0x144a7cef
+.word 0x3ad1077e
+.word 0x3332d957
+.word 0x145c35d6
+.word 0x86b84d64
+.word 0xbe367ef4
+.word 0xd699c424
+.word 0xa190dffb
+.word 0xd15bebbc
+.word 0x015fa85e
+.word 0x483df85f
+.word 0xf60f4157
+.word 0x11c2d90d
+.word 0x4482ef9f
+.word 0x7b9b958f
+.word 0x4492ae09
+.word 0x8bcf1652
+.word 0x0c112d65
+.word 0x3c66d04f
+.word 0xf52314e6
+.word 0x24eb6384
+.word 0xe7ce5377
+.word 0x2d8b9e76
+.word 0xfe2939af
+.word 0xacb26b8d
+.word 0xa59d43c0
+.word 0x24680b6c
+.word 0x0df8b865
+.word 0xc26c7014
+.word 0x2d184cea
+.word 0x308984f4
+.word 0xd29c0425
+.word 0xdff41f65
+.word 0x0c7e2650
+.word 0xf5f4bb65
+.word 0x88e33187
+.word 0x61e400f9
+.word 0x1b68524d
+.word 0x63ce3386
+.word 0xfccdef61
+.word 0x47e06423
+.word 0x219dc063
+.word 0x252f4ac9
+.word 0x207cff6c
+.word 0x5a381b9e
+.word 0xea3b15d4
+.word 0x13b3e3bd
+.word 0x31257320
+.word 0xf076802c
+.word 0xff34c405
+.word 0xfadc46b0
+.word 0x3ef66402
+.word 0x5ab817d1
+.word 0xf36a17fd
+.word 0x7c2df383
+.word 0xb412ca5b
+.word 0x503294af
+.word 0x0576b177
+.word 0x586a3831
+.word 0xbf88761c
+.word 0xc82d018e
+.word 0x91a16b4d
+.word 0x76cd2bf1
+.word 0x89c2f86a
+.word 0x7139bca5
+.word 0x88d0caef
+.word 0xd53def8d
+.word 0x33512498
+.word 0x9824c14a
+.word 0xeecb72b8
+.word 0xd92d11b8
+.word 0x2df0e569
+.word 0xf6a4af3c
+.word 0xd70d081f
+.word 0x2afcb1aa
+.word 0x4411779b
+.word 0x33cdb504
+.word 0x0d959b33
+.word 0xfa769782
+.word 0x68c75894
+.word 0xdf6816a6
+.word 0x1d545fd2
+.word 0x039076c5
+.word 0xdea9d244
+.word 0xcb441c8d
+.word 0xfdd6e493
+.word 0xaf7b186c
+.word 0x86759dd6
+.word 0xc41afcc9
+.word 0x17aff6ce
+.word 0x8a566dd3
+.word 0x70f1e48a
+.word 0x25766813
+.word 0x99b2d927
+.word 0x52bae74e
+.word 0x81a2a1f2
+.word 0x5f9e5414
+.word 0x5170d993
+.word 0x5bc2b656
+.word 0x99dd8bf9
+.word 0xfb0208d8
+.word 0xefa7996b
+.word 0xdcb83a76
+.word 0xd5d15f8b
+.word 0x496b51df
+.word 0xfa0a35aa
+.word 0x450e9c86
+.word 0x1f88abb3
+.word 0x8034e087
+.word 0xbb7276a0
+.word 0x574ca617
+.word 0xa530e888
+.word 0x484ade6e
+.word 0xf788e089
+.word 0x73f173c4
+.word 0x7a5510eb
+.word 0x880bd799
+.word 0xdff980c6
+.word 0xfc8d4b54
+.word 0x874a6cd1
+.word 0x7109c5a0
+.word 0x9e282a42
+.word 0x11bc3fcd
+.word 0x6cec3992
+.word 0xd8f46634
+.word 0xc7044b4a
+.word 0x0f31be07
+.word 0xdabf556d
+.word 0x624f6f07
+.word 0xfb34aa83
+.word 0x5dda85f0
+.word 0x36f35241
+.word 0x8c77e6f0
+.word 0xe243df64
+.word 0x6e5c30b7
+.word 0xde12b0cd
+.word 0xb61bf392
+.word 0x5c8c9140
+.word 0x4cf4688c
+.word 0x815d724c
+.word 0x6625afee
+.word 0x5f5eef3d
+.word 0xa6d71ad6
+.word 0xe0086f84
+.word 0x959c4570
+.word 0x256d3aea
+.word 0x384c3000
+.word 0x5ef4b482
+.word 0x9d5bbaa0
+.word 0x23b776dc
+.word 0x14e06ec6
+.word 0x5215c12e
+.word 0x48715846
+.word 0x078cb020
+.word 0x89ee7398
+.word 0xebdb554a
+.word 0x88cbe58e
+.word 0xbcc71fcc
+.word 0xd412c857
+.word 0xd6734d3a
+.word 0xe9bd71c7
+.word 0x70ff746b
+.word 0xaeb40d13
+.word 0x1ee802f0
+.word 0xe14647be
+.word 0x60d437a7
+.word 0x79b0b364
+.word 0xe3ea9d4a
+.word 0x4968e471
+.word 0x309e0343
+.word 0xd2d6c7c6
+.word 0x994e2d7c
+.word 0x15b7ecad
+.word 0x072e44b9
+.word 0x59ece52c
+.word 0x01ea7f0f
+.word 0xd51a2800
+.word 0x2f04522f
+.word 0x46302204
+.word 0x6386b8c6
+.word 0x82ffba54
+.word 0x6eae6993
+.word 0xa0efd1bf
+.word 0xa8eb722a
+.word 0x6fab6949
+.word 0x18d78294
+.word 0xfaa71418
+.word 0xb0f3709c
+.word 0x15631382
+.word 0x7112369c
+.word 0xc0ea1df8
+.word 0xfde5272b
+.word 0x10e5d95b
+.word 0x026e14ea
+.word 0x7add555d
+.word 0x6c0eee14
+.word 0xe4f7f143
+.word 0xd394a2d5
+.word 0x54e21054
+.word 0x6b33fbbc
+.word 0x953615c7
+.word 0xe2589e2b
+.word 0x33b1f594
+.word 0x6451af1f
+.word 0x16a52f21
+.word 0xa42ae271
+.word 0x06cc865c
+.word 0xef5f2591
+.word 0x8612e768
+.word 0x92eb533b
+.word 0x15d51d65
+.word 0x3b73c2fa
+.word 0x7801db1a
+.word 0xdb7c4abe
+.word 0x89ff43cd
+.word 0x48dcca6b
+.word 0xfb69466f
+.word 0xa954bcdf
+.word 0x8743f507
+.word 0x33ce8e12
+.word 0x4c6e538b
+.word 0xe65ca913
+.word 0x22056f72
+.word 0x8815bc0c
+.word 0x9eb5f691
+.word 0x5ad80fca
+.word 0xc4c9e47c
+.word 0xe8f2edd3
+.word 0xdb87c3d7
+.word 0xbced5931
+.word 0x341dd68e
+.word 0x0f5409f7
+.word 0x6ecdd57b
+.word 0x4fe522f4
+.word 0x31a4062f
+.word 0xdf127c7c
+.word 0x37506b86
+.word 0xd2a0e8a4
+.word 0xf009422f
+.word 0x1ea6a8dd
+.word 0xe9e03690
+.word 0x65ab7d9b
+.word 0x36426e0a
+.word 0x2fbc7d38
+.word 0x09a7802a
+.word 0x7fae8bc8
+.word 0x6263313c
+.word 0xd9f83936
+.word 0xd5404778
+.word 0x0e970fa7
+.word 0x66bc9bac
+.word 0x63a21dc7
+.word 0x2d794fe9
+.word 0x402e372b
+.word 0x436b0281
+.word 0xb1b22adf
+.word 0x5717d077
+.word 0x1c74a5e6
+.word 0x386d2ee9
+.word 0x713272e5
+.word 0x90993925
+.word 0x3ed8872f
+.word 0xb31a4f07
+.word 0x3725a43a
+.word 0xabba064c
+.word 0x9bfee6c8
+.word 0x2cfea596
+.word 0xc0452631
+.word 0x64ec8653
+.word 0x8a1ef8ce
+.word 0x99078066
+.word 0xa0cd658a
+.word 0x713d3c2c
+.word 0x0e5501a2
+.word 0xc964f9f1
+.word 0xdc10e08f
+.word 0x7d7b60c1
+.word 0x9438df86
+.word 0x44ba9c90
+.word 0xe60f84ae
+.word 0xaf87d490
+.word 0x38cd75ac
+.word 0xd1453190
+.word 0xfc7262d0
+.word 0x5890886d
+.word 0xfedae054
+.word 0x7bae4718
+.word 0x2dc0bb63
+.word 0xb785722e
+.word 0x56c0519b
+.word 0xbb7a3425
+.word 0x955cb6ca
+.word 0x1b8f0c0b
+.word 0x873003e5
+.word 0xd9d07c6a
+.word 0x7a510154
+.word 0x8a10f445
+.word 0xdcf6a81e
+.word 0x7257ed8c
+.word 0x7e20e3a1
+.word 0x9533088b
+.word 0xd2e84a55
+.word 0x33ff8af4
+.word 0x17f36bb6
+.word 0xc2dd843f
+.word 0x8d763813
+.word 0x4d80e492
+.word 0xe46434d6
+.word 0xe275488a
+.word 0x8a9dfd4a
+.word 0xfd09f36e
+.word 0xd601b0be
+.word 0xbf802e15
+.word 0x4a9175bd
+.word 0x02c5180d
+.word 0xadb84a92
+.word 0xbc309639
+.word 0x59c54ded
+.word 0x7a9015ac
+.word 0x91323086
+.word 0x3ff50a49
+.word 0xb29724c6
+.word 0x90009f9b
+.word 0x62b1f8f7
+.word 0x1c0f018a
+.word 0x8dcf7ac5
+.word 0x51d650dd
+.word 0xb991b1b0
+.word 0x2c2b4f91
+.word 0x64f700af
+.word 0x323b37fd
+.word 0x68849d12
+.word 0x938d826c
+.word 0x1b5e23b7
+.word 0x0e078a33
+.word 0x7b75ea96
+.word 0x33986e45
+.word 0x814e0cd5
+.word 0x2acbfb63
+.word 0x19cd6511
+.word 0x899aa004
+.word 0xec56008d
+.word 0xde58a012
+.word 0x83f9848a
+.word 0x65b614c9
+.word 0x10ea77ef
+.word 0x46bf50f6
+.word 0x50724ee7
+.word 0xf108cb89
+.word 0x1e010306
+.word 0xf2ae0dc4
+.word 0x7a0b238c
+.word 0x6f1daac5
+.word 0x43242a4c
+.word 0xf6692c96
+.word 0x2fa326c8
+.word 0x924390f9
+.word 0x82c0e57e
+.word 0x33131ed5
+.word 0x3913c388
+.word 0xfc4497e9
+.word 0xca71ba2b
+.word 0xbbc3046b
+.word 0xe72435a4
+.word 0x193ae4bb
+.word 0xb41b80c5
+.word 0xc021f0e3
+.word 0x39b1d17f
+.word 0x7501ab2b
+.word 0xf9736e64
+.word 0x53a7165a
+.word 0xc32947e5
+.word 0x2a4fbc41
+.word 0xaacc4f70
+.word 0x44fa5200
+.word 0x8240aa64
+.word 0x5f54391d
+.word 0xdecd930e
+.word 0xbeaee34e
+.word 0x811011d2
+.word 0xafeed633
+.word 0x6d7b51bf
+.word 0xcde5432e
+.word 0x41e8d889
+.word 0x8b4d55a9
+.word 0x95eca0bd
+.word 0x63590145
+.word 0x0bed6581
+.word 0x2b825b6d
+.word 0xa3f5db40
+.word 0x361afb79
+.word 0xc215dca4
+.word 0x81413ed7
+.word 0xf4008307
+.word 0xd90b62f7
+.word 0xba34f875
+.word 0x5f5ca108
+.word 0x0b23abf4
+.word 0x8e803a32
+.word 0xbee4505f
+.word 0xebcb03ac
+.word 0x33e26c23
+.word 0x289079c7
+.word 0xfb0075bf
+.word 0xbd4d0783
+.word 0x7c0f3f4e
+.word 0xbd0d2d69
+.word 0x26412023
+.word 0x8b468ccb
+.word 0xab2bb43a
+.word 0x9a919077
+.word 0x2941fa48
+.word 0x23046862
+.word 0x9ff4d803
+.word 0xe264ce36
+.word 0x235b98c3
+.word 0x01d15056
+.word 0x1532f5d4
+.word 0xc903bd31
+.word 0x640a2cf7
+.word 0x74ae1c32
+.word 0xfe786356
+.word 0x9c74070e
+.word 0x4368e3a5
+.word 0xb3724e7b
+.word 0x0081b2c2
+.word 0x48128b56
+.word 0xb2d971ad
+.word 0x2bbb85a0
+.word 0x085d686a
+.word 0x84ab55b7
+.word 0x53eba03b
+.word 0xf8a09a4c
+.word 0x1a034381
+.word 0xcd5b6aa7
+.word 0x637353e0
+.word 0xce2fda71
+.word 0x71f21d1e
+.word 0xaadbd0f7
+.word 0x539d73f4
+.word 0x397e6fce
+.word 0x73d21c08
+.word 0xccda4a20
+.word 0x5865fb07
+.word 0x3adadd05
+.word 0x6a76208c
+.word 0x188c61cc
+.word 0x50d3a4ff
+.word 0x92a5a244
+.word 0x8ba73d55
+.word 0x98f280c8
+.word 0x4a3e9183
+.word 0x0658f10d
+.word 0x06c87f72
+.word 0x56c8bf07
+.word 0x324b41ee
+.word 0x91a800b0
+.word 0x43ee8d74
+.word 0xc30d2280
+.word 0x99f3836c
+.word 0xa98e927d
+.word 0xbc4b7a47
+.word 0x858859b3
+.word 0x6d33ce74
+.word 0x4ef4de19
+.word 0x101bf885
+.word 0xcb5fafcf
+.word 0x8006c851
+.word 0x19878a29
+.word 0xed37631e
+.word 0x94fe1b7e
+.word 0x9fa17945
+.word 0x704b7551
+.word 0x20498749
+.word 0xffe158f1
+.word 0x2b0d9de7
+.word 0x5dc24f31
+.word 0xffd46c0a
+.word 0x1f422782
+.word 0x7fdecf22
+.word 0x7acadc9a
+.word 0x3f654e37
+.word 0xecb3af99
+.word 0x6a0854c1
+.word 0x02f76c00
+.word 0x793a9654
+.word 0x01349261
+.word 0xb5601510
+.word 0xde7926b0
+.word 0xe7da5b61
+.word 0x0c45506b
+.word 0xacdb8cea
+.word 0x4e02897a
+.word 0x78fedbd0
+.word 0x4cea01f9
+.word 0x4e154bb9
+.word 0x21fb2f8a
+.word 0xa02fa6f2
+.word 0x16ac600d
+.word 0xf6d53015
+.word 0x0b381743
+.word 0xf6cd9ab6
+.word 0x3109b9e7
+.word 0x155e41c5
+.word 0xbeab9e6d
+.word 0x87e80f38
+.word 0xc4d872d7
+.word 0x822a46a4
+.word 0xa16b2385
+.word 0x152a8efe
+.word 0xac81842a
+.word 0x832fe51b
+.word 0xf6546531
+.word 0x0195dd6f
+.word 0x117c3e4b
+.word 0xad1ef0f0
+.word 0xed18f943
+.word 0x6bf54855
+.word 0xb600002b
+.word 0x8f7f3ad9
+.word 0x6412090e
+.word 0x7725840b
+.word 0x9a04af9e
+.word 0x0764ecaa
+.word 0x4e3d060f
+.word 0xbcf1b9d5
+.word 0x42145799
+.word 0x79204b58
+.word 0x41b8a066
+.word 0x5b8c7f03
+.word 0xa68a07a9
+.word 0xbe62fb30
+.word 0xf4f27aee
+.word 0x7a101ef8
+.word 0x33e82d57
+.word 0x5640aab3
+.word 0x0ef97215
+.word 0x3d53b460
+.word 0x95a4a442
+.word 0x9c70c44d
+.word 0x3dd1870c
+.word 0x2e7cea0a
+.word 0x191a0935
+.word 0x2dbb7f3d
+.word 0x805c722e
+.word 0x415331ce
+.word 0xe23a61ae
+.word 0x9099f1b3
+.word 0x57153c4c
+.word 0x6e5afcba
+.word 0x0a3d08eb
+.word 0xbb9e867a
+.word 0xc0474aad
+.word 0x5d171ddd
+.word 0xb9b9b60d
+.word 0x45c13851
+.word 0x38312604
+.word 0x3a6d9f5c
+.word 0x3259dbb8
+.word 0x9b19bde1
+.word 0xa46155ed
+.word 0xba4d037b
+.word 0x1a907953
+.word 0xc42a04ad
+.word 0x7a70208f
+.word 0x60e40550
+.word 0x80c98a12
+.word 0x6ec9c4b4
+.word 0x3338f2cf
+.word 0x651fdfc2
+.word 0xa564eb72
+.word 0xb718dae5
+.word 0xea3e8701
+.word 0x31c327f2
+.word 0xe4187b16
+.word 0xcce3a15f
+.word 0xb68518a3
+.word 0xfac0a45b
+.word 0x234c2bcc
+.word 0xc6cefe51
+.word 0xe63f50a4
+.word 0x1f3dc543
+.word 0x983c3f47
+.word 0xf26ef3fe
+.word 0x4b034391
+.word 0xdaf2e964
+.word 0xe8046eae
+.word 0x6f62c360
+.word 0x252b6825
+.word 0x372e1636
+.word 0xd46f9f94
+.word 0x6c12ca50
+.word 0x50cfef54
+.word 0x71629bb0
+.word 0xed9dba41
+.word 0x4104e3b1
+.word 0x04ae9372
+.word 0xf2fed8cb
+.word 0x51216471
+.word 0x62af1607
+.word 0xf9d29c84
+.word 0x482aa346
+.word 0x15f30406
+.word 0xe341762d
+.word 0x3e6e3d7b
+.word 0x38b9a93c
+.word 0xf00a6b4b
+.word 0x3ab69097
+.word 0xe6b064e3
+.word 0x5546d7f2
+.word 0x4da16399
+.word 0x374077ba
+.word 0x8ad47f27
+.word 0x8f64bc17
+.word 0x65f9c0a0
+.word 0x81e6d0b5
+.word 0x4c503d5a
+.word 0xd670ef08
+.word 0xef121745
+.word 0xc0c990a9
+.word 0xd1dcae93
+.word 0x121bb0d9
+.word 0x4016cecb
+.word 0x3425f1c9
+.word 0x27a2bb4b
+.word 0xf7eb8667
+.word 0xe7bf5e67
+.word 0xea065574
+.word 0x8ece1639
+.word 0x1dd3444e
+.word 0x6d522de8
+.word 0x0e64c751
+.word 0xe796a96d
+.word 0x43f83d32
+.word 0x49c3a97a
+.word 0xf21de7d1
+.word 0x33546f8e
+.word 0xec2efb67
+.word 0x4fa756cb
+.word 0xaa320983
+.word 0x1b50f18d
+.word 0xe5fba0d9
+.word 0x660c83f7
+.word 0x58551db9
+.word 0xa784d5b9
+.word 0x97e88cc8
+.word 0x403ff338
+.word 0x1fca42b3
+.word 0x93522f24
+.word 0x0650eea5
+.word 0xdf17f1ab
+.word 0x58002a13
+.word 0x2b6a3ca7
+.word 0x53f0a101
+.word 0x1d229459
+.word 0x510f8753
+.word 0x8b104c42
+.word 0x682b41bc
+.word 0x558f2552
+.word 0x4a713c60
+.word 0x7c8b8f0e
+.word 0xc75877b7
+.word 0x700ebae0
+.word 0xc4958a26
+.word 0x7b903460
+.word 0x1ece6f39
+.word 0x2b949d8b
+.word 0xd8ff0f1c
+.word 0x7ab2cf69
+.word 0x61e70ffb
+.word 0x84018a26
+.word 0xd8a2134f
+.word 0x60158baf
+.word 0x5c913616
+.word 0x5db025b7
+.word 0x02c41edd
+.word 0x8b7a6e6b
+.word 0x7aaa58b2
+.word 0x7eebebf1
+.word 0x739b9b20
+.word 0x78f39702
+.word 0xb728c26a
+.word 0x2fa6dd67
+.word 0xfb3c17d1
+.word 0x1d5a9c75
+.word 0xddc83e26
+.word 0x2cd08ef7
+.word 0xcb927b3f
+.word 0x42b16aaa
+.word 0x140707eb
+.word 0x8a69e760
+.word 0xd6c75587
+.word 0xd871cf8b
+.word 0xe081afe1
+.word 0xface23f4
+.word 0x0d9bb17f
+.word 0x610895a5
+.word 0x1b5ed9d4
+.word 0xc152b470
+.word 0x7395946b
+.word 0xbe7b8970
+.word 0xcbb4a761
+.word 0xffbd74ef
+.word 0xad4634ee
+.word 0xe00da8b5
+.word 0x8c699dd8
+.word 0x14a76da3
+.word 0xe41eb0b9
+.word 0x174fe935
+.word 0x15f4dc26
+.word 0xd4904fa4
+.word 0x47d2da62
+.word 0xa9931cab
+.word 0x07539579
+.word 0x35f69e61
+.word 0xb736e90e
+.word 0x09a3d283
+.word 0x82b7d6dc
+.word 0xefffb3f8
+.word 0x36dd858a
+.word 0xb46c972e
+.word 0xbe6cccc0
+.word 0x9eb6d5ca
+.word 0xc42dcd2b
+.word 0xb2bc08df
+.word 0x03a7663b
+.word 0x311b1a76
+.word 0x89523ef5
+.word 0xf848c221
+.word 0x378a95b8
+.word 0x963c4b2e
+.word 0x20da1036
+.word 0xd8ca006c
+.word 0x71f4f271
+.word 0x859fb60d
+.word 0xab5a0bcf
+.word 0x22f36033
+.word 0xba9302bd
+.word 0xccc5e32a
+.word 0xdc0c92f4
+.word 0x480b7b22
+.word 0x3bfc6af8
+.word 0x2a3a9731
+.word 0xe63dc26b
+.word 0x7022d41a
+.word 0x63cbace8
+.word 0x853ceb3d
+.word 0xb2d26411
+.word 0x516e0469
+.word 0x561830eb
+.word 0xc426ca38
+.word 0xc6d4e006
+.word 0x4bc3ef8c
+.word 0x12db3dc5
+.word 0xed95efed
+.word 0xbacde24a
+.word 0x981ee04f
+.word 0x679725ff
+.word 0xf57544b1
+.word 0x6e3db03a
+.word 0x376f787d
+.word 0x19b06f54
+.word 0x59de2720
+.word 0x99cbaf18
+.word 0x5d52114e
+.word 0xf2756882
+.word 0xa65a4b55
+.word 0x754bc3b1
+.word 0xa9094abb
+.word 0x9a0c6468
+.word 0x9e1ab6bd
+.word 0x7ec67d91
+.word 0x85e512d8
+.word 0x7dc25019
+.word 0xd4d380b8
+.word 0x311ebadb
+.word 0xc9142c80
+.word 0x4c5e14c3
+.word 0xd9494896
+.word 0x12a2cefa
+.word 0x7c289439
+.word 0x7163b5cd
+.word 0xb628daa5
+.word 0x33d0e15b
+.word 0x432f8d57
+.word 0x22090cfe
+.word 0x8fbb363d
+.word 0x93989088
+.word 0x0021ffff
+.word 0x2d8949be
+.word 0x331b1e94
+.word 0xf50c2528
+.word 0x747bd6d6
+.word 0x90c767a4
+.word 0x4a261a0c
+.word 0xa8e1b686
+.word 0xd01f3b11
+.word 0xabd40ce3
+.word 0x005f3eaa
+.word 0x70833fea
+.word 0x7d23f4f3
+.word 0x0b67cd1d
+.word 0xca3a4575
+.word 0x51a01d39
+.word 0x4b19d926
+.word 0xa0107acf
+.word 0x95b56752
+.word 0x7f1666ea
+.word 0xdbfb1460
+.word 0x84d43f4f
+.word 0x57da4308
+.word 0x107bc4a6
+.word 0x8d89adc1
+.word 0x5d0d0abc
+.word 0x895e2702
+.word 0x58f09ada
+.word 0x01c31325
+.word 0x09ad21ef
+.word 0x286bb04a
+.word 0x180cd825
+.word 0xd9f5998c
+.word 0x94abbcba
+.word 0x3d0f05ef
+.word 0xb5ef2770
+.word 0xa26c7111
+.word 0x0fe05460
+.word 0xc052d012
+.word 0x3a95b3b5
+.word 0xff51a82b
+.word 0x24523052
+.word 0x492ccc72
+.word 0x3fc6810b
+.word 0xdcb89519
+.word 0xd18f306b
+.word 0x94535c6c
+.word 0x2623f0ce
+.word 0x6dbc9f15
+.word 0xb3b609ed
+.word 0x0ed3150e
+.word 0xebc277ed
+.word 0xd7630fa1
+.word 0xee840215
+.word 0xb2d6eb99
+.word 0x9e1d9be3
+.word 0xf99d591e
+.word 0x4454330d
+.word 0x4e3881eb
+.word 0x1f88a7c0
+.word 0x2e2de15f
+.word 0xcc685aba
+.word 0x18610f2d
+.word 0xbe7f2fe2
+.word 0x6571bc76
+.word 0xe0ab694e
+.word 0xc2774728
+.word 0xafd3f8a3
+.word 0xd85274ce
+.word 0x0ae361fe
+.word 0x43f35f1e
+.word 0x5e5c0ae6
+.word 0x6de88d1d
+.word 0xab9ac3cb
+.word 0xe112c9ee
+.word 0xbd738f01
+.word 0xedbf2308
+.word 0xb22b2893
+.word 0x5b42695f
+.word 0x82016107
+.word 0xbf9fd05f
+.word 0xd09d704d
+.word 0x5eb1d356
+.word 0x5af8ef89
+.word 0x9d5002c5
+.word 0x3a7717eb
+.word 0xe20a3e98
+.word 0x0004d747
+.word 0xa61156a5
+.word 0x7c521348
+.word 0x31ebe6a4
+.word 0x91f7e15c
+.word 0x7962145f
+.word 0xf64d24b9
+.word 0xe276ebf1
+.word 0x9629da3a
+.word 0xdf139b2f
+.word 0xe237d27d
+.word 0x2a48d4d8
+.word 0xd3cf616d
+.word 0xd5564f89
+.word 0xfda7b32d
+.word 0xc2779b73
+.word 0x645d4103
+.word 0x34d5864c
+.word 0xa720c264
+.word 0x35f13cdc
+.word 0xc1ddabb5
+.word 0x930825ac
+.word 0xd365ef3a
+.word 0x5b435328
+.word 0x4d911e1b
+.word 0xe7886677
+.word 0xa999f455
+.word 0x60d3fe75
+.word 0x8f86c6f9
+.word 0x6f7f0d85
+.word 0xa498118b
+.word 0x844bbd02
+.word 0x491b3fdf
+.word 0xfacb7f0b
+.word 0xe2a1af14
+.word 0xc238783a
+.word 0x47394a57
+.word 0x31b9d706
+.word 0xbb272216
+.word 0xd285540d
+.word 0xa7195efa
+.word 0x36a7dc15
+.word 0xb86af4e7
+.word 0x85f1c807
+.word 0x5f93d47c
+.word 0x96c583e9
+.word 0x72e2b108
+.word 0xa616a4bd
+.word 0xc06b3b04
+.word 0xfb9527b8
+.word 0x1c74ac10
+.word 0x9232ba1f
+.word 0xf205bbc1
+.word 0xa831f5dc
+.word 0x946412cd
+.word 0xda5ca7fb
+.word 0x0805421e
+.word 0xcaed361b
+.word 0x9f8afc52
+.word 0x9590cd9e
+.word 0x4f89290a
+.word 0x9e85f06c
+.word 0x20183497
+.word 0x8686f264
+.word 0x41fccadd
+.word 0xee803746
+.word 0xcdfee3a0
+.word 0x790c0659
+.word 0xc146a3d6
+.word 0x62826068
+.word 0x860b0468
+.word 0x2957f875
+.word 0xdb9e0c53
+.word 0xc39910d9
+.word 0xc28f87b0
+.word 0x1550dc86
+.word 0xd1c6c10c
+.word 0x0314b71f
+.word 0x90acf376
+.word 0x7ce0ecdc
+.word 0x0f2a58f1
+.word 0x6bf6cace
+.word 0xe319f884
+.word 0x9fd00c4d
+.word 0x5081f66d
+.word 0xd079520a
+.word 0x5afc7eb4
+.word 0xe5a60193
+.word 0x669f51bb
+.word 0x13ddbfee
+.word 0xf8c2d107
+.word 0x12315095
+.word 0x40c8ed2e
+.word 0xc5639cf8
+.word 0x1d7c1268
+.word 0x8b4c8022
+.word 0xdbeb0da8
+.word 0x97079f51
+.word 0x591ec8a9
+.word 0xc20d6315
+.word 0xd35a0628
+.word 0x94519b96
+.word 0xa07d545d
+.word 0x528640fb
+.word 0x684f45c1
+.word 0xfdeab9e3
+.word 0xf8ca20b3
+.word 0x006fb304
+.word 0x323ebb14
+.word 0x39ab8535
+.word 0xcafac3c4
+.word 0x335afc8b
+.word 0x2b5bde31
+.word 0xc410ffc3
+.word 0x2b3b5ecc
+.word 0xfa355751
+.word 0x74936e61
+.word 0xe60979a4
+.word 0xd1d9006b
+.word 0x3508cf6c
+.word 0xc91fb39d
+.word 0x6a38cd99
+.word 0x38df55e3
+.word 0x0bca0142
+.word 0xb4050ce2
+.word 0x8fa09f77
+.word 0x4d9c9955
+.word 0xd5329bdb
+.word 0x32713526
+.word 0x71dad1e6
+.word 0x1656e776
+.word 0x59b3a1a2
+.word 0xe27aaf50
+.word 0x8004f135
+.word 0x27503624
+.word 0x3c8ea1a7
+.word 0xa4f3e2f0
+.word 0x471967cd
+.word 0xe31d9f16
+.word 0x0f81403c
+.word 0xde704268
+.word 0x9f37842a
+.word 0xd27de596
+.word 0x5aadf4dc
+.word 0x11b2a214
+.word 0x2c12b6a5
+.word 0xa076e5f4
+.word 0x06a201ce
+.word 0x1c351318
+.word 0xc84403a8
+.word 0xe0c65b44
+.word 0xdb2a85e6
+.word 0xd661cde5
+.word 0x8e16f01f
+.word 0xe0118d6a
+.word 0xb294e327
+.word 0x8eb18c59
+.word 0x6cf9fa1e
+.word 0x063bb869
+.word 0x16f1d7ee
+.word 0x3fe9f450
+.word 0x75fde408
+.word 0x1efc762d
+.word 0xf870961c
+.word 0x93953e74
+.word 0xbd8a59d4
+.word 0xe48888c6
+.word 0x39ea9615
+.word 0xe2dabffd
+.word 0xf5429211
+.word 0x4478a163
+.word 0x201f320f
+.word 0xcccecafc
+.word 0xe3c7c27d
+.word 0xcc6a9de0
+.word 0x68875021
+.word 0x9a26442c
+.word 0x1d2706da
+.word 0x3c083011
+.word 0x6b3b113c
+.word 0xbea68606
+.word 0x16bab462
+.word 0xeda43010
+.word 0x07a25159
+.word 0xf83c7006
+.word 0x3ca904ca
+.word 0xd1a0a854
+.word 0xd16b8e1d
+.word 0xf454e20b
+.word 0x785e793d
+.word 0xb2e43f8f
+.word 0x4ac2f2a2
+.word 0xd5362e9d
+.word 0x1bddf2d9
+.word 0xe23ceaec
+.word 0x97a23b32
+.word 0x0fd95040
+.word 0xf0fa4d8c
+.word 0x50e5e361
+.word 0x117190e5
+.word 0x425088e4
+.word 0x06fdb81b
+.word 0x4803b2b6
+.word 0xb5be2814
+.word 0xfd0f9370
+.word 0xa1a0dd40
+.word 0xdaa01c5e
+.word 0xd281954e
+.word 0xb6f7c05d
+.word 0x6266b9e1
+.word 0x40750d4b
+.word 0x27f1b91b
+.word 0x8c061feb
+.word 0x344441d4
+.word 0xbd6ba162
+.word 0x520b8179
+.word 0x944a90ca
+.word 0x8be46818
+.word 0xa0bf992c
+.word 0x27c28b8c
+.word 0x419a21c2
+.word 0xb04b8ab3
+.word 0x3690c7ef
+.word 0xabe6e150
+.word 0xf70d1583
+.word 0x639e0caa
+.word 0xf62f3d23
+.word 0x9d40dcfc
+.word 0xf1c3e838
+.word 0x86b72652
+.word 0xc0b73fea
+.word 0xaebb7e28
+.word 0x31fac927
+.word 0x84958f77
+.word 0x94b693cd
+.word 0x76b12f1e
+.word 0xa8f38f34
+.word 0xe8bb53aa
+.word 0xcb82ed17
+.word 0xcfef0d9f
+.word 0x24b918c5
+.word 0xb4018af6
+.word 0xa09c4475
+.word 0xf036f132
+.word 0x00a716e7
+.word 0x2c240c90
+.word 0xf9c34c4f
+.word 0x5f599497
+.word 0xb4a43f4d
+.word 0x977d8d1a
+.word 0x65e27d58
+.word 0x70499510
+.word 0x8fe9476a
+.word 0xfc366aad
+.word 0x888b82cc
+.word 0xca4c0c1f
+.word 0x4daf92a2
+.word 0xb634209b
+.word 0x9ac9cb94
+.word 0xbe51e40a
+.word 0xe127f624
+.word 0x146ebd1d
+.word 0xf791754d
+.word 0x9c3507ee
+.word 0x4281f6d6
+.word 0x76e007c9
+.word 0x18cb2380
+.word 0x3b2ae56e
+.word 0xd678b773
+.word 0xb60d1f94
+.word 0xddc62930
+.word 0x2990bc3b
+.word 0x1bb17d32
+.word 0x611ddcd7
+.word 0x7ee9d707
+.word 0xb5f87dae
+.word 0x4c5e7c80
+.word 0xbcbe4a1c
+.word 0x958f6420
+.word 0x49e579d6
+.word 0xc9aa290a
+.word 0x12dcbee4
+.word 0x979abefd
+.word 0x30137917
+.word 0x0ae800a1
+.word 0x7a74f32d
+.word 0x85142aec
+.word 0x9ccf28ba
+.word 0x600fba9b
+.word 0xedf3ff8e
+.word 0xc8bdf641
+.word 0x2769d938
+.word 0x013802cc
+.word 0xf5e8f1bc
+.word 0x693c816e
+.word 0x1addbaa7
+.word 0x2d7e603a
+.word 0xb33e31d6
+.word 0x2d363ad4
+.word 0x5f81dfa3
+.word 0xad461972
+.word 0x5a30203d
+.word 0xa74d827d
+.word 0xf2c7ce1e
+.word 0xcafe0c58
+.word 0xa0d2d78b
+.word 0xa028fa41
+.word 0x4f4036cb
+.word 0xa3f1fc02
+.word 0xa62c2c1b
+.word 0x964753c9
+.word 0x7d9fe9ab
+.word 0xc0631880
+.word 0x3457eecc
+.word 0xb6a3e997
+.word 0xfa7e571d
+.word 0x09309f3c
+.word 0x4089011e
+.word 0xfc5a9421
+.word 0x151c0808
+.word 0xd15af78b
+.word 0x94ba200f
+.word 0x11cdf50f
+.word 0xa130b4ad
+.word 0x01f4e1ec
+.word 0xd96c9b61
+.word 0x4d67df6e
+.word 0xec882e5f
+.word 0xe5cb49d2
+.word 0x22f60bf5
+.word 0x672948e8
+.word 0x270a2b4e
+.word 0xc1ffb7f0
+.word 0x18697682
+.word 0x12dffa7b
+.word 0x1db906e8
+.word 0xdbd72a61
+.word 0x3f403856
+.word 0x52b14f6a
+.word 0x72397c39
+.word 0x8d440882
+.word 0x69c6bac7
+.word 0xf2766ec3
+.word 0x57330d03
+.word 0x79d73655
+.word 0xdcb56d57
+.word 0x3e5c1e2c
+.word 0x2c89cb5a
+.word 0xd6160a3b
+.word 0x50e1f7e5
+.word 0xe455a21f
+.word 0xd275d3ac
+.word 0x5f77b1b2
+.word 0x5537b7bd
+.word 0x19f325fd
+.word 0xdf9bebe6
+.word 0x714910e3
+.word 0x5798c6bb
+.word 0x2d32f7cb
+.word 0x39d58aa3
+.word 0xdfb67e1f
+.word 0x2171936f
+.word 0x8df92fea
+.word 0x9fecdf8f
+.word 0x85389349
+.word 0x809af163
+.word 0x65c1c6c2
+.word 0x310e5e03
+.word 0xd22dbe63
+.word 0xe597077c
+.word 0x905e6908
+.word 0x406d518a
+.word 0xe98a3295
+.word 0x33a52245
+.word 0x2bc2861f
+.word 0xa038ab78
+.word 0xd4d99fba
+.word 0x928098b1
+.word 0x1c14f416
+.word 0xfa9cb87c
+.word 0x27fb6a26
+.word 0x57f8f014
+.word 0xfd0004cb
+.word 0xcacae73e
+.word 0xc178c608
+.word 0x1364d975
+.word 0xda0e23c6
+.word 0x666bb137
+.word 0x02be0aa7
+.word 0xca02b209
+.word 0xee27e26a
+.word 0x0c2e95cb
+.word 0x74440d60
+.word 0xe6c8754c
+.word 0x551cb971
+.word 0x4d8dc44b
+.word 0xc7685d53
+.word 0x70f35812
+.word 0xff8239fd
+.word 0xdb225ae4
+.word 0xdbcad48b
+.word 0xb4fcbad7
+.word 0x31dfef36
+.word 0xafe02e89
+.word 0x941de5fe
+.word 0x7b987407
+.word 0x91046c2e
+.word 0x4e25e877
+.word 0x32a44f36
+.word 0xe9852e3f
+.word 0x5deb7a1a
+.word 0x1b16662f
+.word 0xf9f725e4
+.word 0x82c32790
+.word 0xad03ac06
+.word 0x56d54875
+.word 0x261f0fa1
+.word 0x551a94c2
+.word 0xd55e2af4
+.word 0x461e18c0
+.word 0xe9882a88
+.word 0x4dedc5cc
+.word 0xe5a024a9
+.word 0x2dd293d3
+.word 0x71946416
+.word 0x20fc627f
+.word 0x260438ca
+.word 0x85c44320
+.word 0x5d730233
+.word 0x899a60f1
+.word 0x376766f6
+.word 0x4f7a60dc
+.word 0x52644bed
+.word 0xe5f711d7
+.word 0x14b50a39
+.word 0x6a8ffde7
+.word 0xdabb9d40
+.word 0x9276f6c4
+.word 0x4175d1d2
+.word 0xff4a0e59
+.word 0x1bbe7afb
+.word 0x230fb770
+.word 0x045a12af
+.word 0x706c5e88
+.word 0xdbd59f6b
+.word 0x484794c6
+.word 0x4919f00d
+.word 0xcc52b6d8
+.word 0x13d9467c
+.word 0x04716383
+.word 0xa9d9e46e
+.word 0x169266b9
+.word 0x8700095e
+.word 0x250e2677
+.word 0x9a0ad345
+.word 0xd9ef5611
+.word 0x73fa78c8
+.word 0x45f7fcaa
+.word 0x9f92f88e
+.word 0xb33dd95f
+.word 0x0e91f42c
+.word 0x3d681100
+.word 0x606d0d5a
+.word 0x817ce012
+.word 0x460ad4c9
+.word 0xa8808b5f
+.word 0x41651a65
+.word 0xe7a04b1b
+.word 0x5a0b09a0
+.word 0x38b8cdd7
+.word 0x1414f7a5
+.word 0x2066fb39
+.word 0x372e5993
+.word 0xe1f78b03
+.word 0x6aa60b20
+.word 0x716a4a2d
+.word 0xf5af6bb7
+.word 0xf7737051
+.word 0xc404f4ef
+.word 0x3d7d7503
+.word 0x53cd8ff8
+.word 0x814e75b4
+.word 0x4213c450
+.word 0x58dadc81
+.word 0x366a0fd2
+.word 0x3dbda7f2
+.word 0xbfdd451a
+.word 0x9a765873
+.word 0x720f2733
+.word 0x78bf58f5
+.word 0x9d0963d5
+.word 0xaf45e718
+.word 0x05d9e6b7
+.word 0xd7e67310
+.word 0x767050d6
+.word 0x578bd345
+.word 0xf562c4eb
+.word 0xc1b33023
+.word 0x59b69cda
+.word 0x064603a8
+.word 0x6fece031
+.word 0x70931bca
+.word 0x5ff32473
+.word 0x19070d81
+.word 0x93a5a612
+.word 0x41351184
+.word 0xc30a5ffe
+.word 0x874e5fc3
+.word 0x4af42f4e
+.word 0xd378ed6a
+.word 0x72993090
+.word 0x159b2730
+.word 0x47a5fce9
+.word 0x0d7c488b
+.word 0x6dfa80c9
+.word 0xe8a32c28
+.word 0xf0bb2f60
+.word 0xa6e97c4b
+.word 0x27817f5c
+.word 0x3d5a022f
+.word 0x3408cc32
+.word 0x5f6d9d22
+.word 0xa3606ce1
+.word 0x05b092d1
+.word 0x7d4cc873
+.word 0x6cf4b389
+.word 0xa949a553
+.word 0xd39579f7
+.word 0x65984c36
+.word 0x9a4e656c
+.word 0x459ed28c
+.word 0x74518177
+.word 0xa2912533
+.word 0x0d630ada
+.word 0x83925b6e
+.word 0x8090dac3
+.word 0x2efcf0d2
+.word 0x3faee5a5
+.word 0xd2fc85ea
+.word 0x596df8e2
+.word 0x31464920
+.word 0x48dc92b0
+.word 0x856d09f9
+.word 0x6617b828
+.word 0x59df52fe
+.word 0x52957bb6
+.word 0x37728f00
+.word 0x812a6b41
+.word 0x9993142f
+.word 0x16ce440a
+.word 0x97312875
+.word 0x4ec1bfda
+.word 0xfa852eee
+.word 0xf021b2e4
+.word 0x219919d2
+.word 0xb23dd604
+.word 0x586049ba
+.word 0x1c798865
+.word 0xe029ce25
+.word 0xe8879bd4
+.word 0xc9667538
+.word 0xa2f9de93
+.word 0xfa5fa927
+.word 0x8e3fdf06
+.word 0xad08d5af
+.word 0xa7176d9b
+.word 0xdbf5765f
+.word 0xdb22f370
+.word 0x4de4581d
+.word 0x353534f5
+.word 0x8bbe360a
+.word 0x96f7028a
+.word 0x5a6b1734
+.word 0xdc55b059
+.word 0xd944994c
+.word 0xafd2e0f3
+.word 0x8909bdb5
+.word 0xb2006218
+.word 0x31f85fec
+.word 0xcec3a20c
+.word 0x2092c349
+.word 0xe74b57dd
+.word 0xa023b29d
+.word 0x46fcaef7
+.word 0x30c373ed
+.word 0x9989de2c
+.word 0x76c2099c
+.word 0xb257b9af
+.word 0x190bd0e2
+.word 0xe0137761
+.word 0x6dd28a35
+.word 0x7096c10e
+.word 0xbd107d1b
+.word 0x9b372b11
+.word 0x71e6b16b
+.word 0x4af13fdd
+.word 0x774382ab
+.word 0x08031ad7
+.word 0x41835d25
+.word 0xd3672a5d
+.word 0x1ec1cde1
+.word 0x160307e1
+.word 0xd9203f89
+.word 0x5fb01cce
+.word 0x87a6d68f
+.word 0x96654f7d
+.word 0xb7c67678
+.word 0x519467a0
+.word 0xc521ebdb
+.word 0x0026db3b
+.word 0xd8f25fe7
+.word 0x4f54dbf2
+.word 0xa0147e0f
+.word 0x4dbcd17d
+.word 0xbfd48ed2
+.word 0x60540fc7
+.word 0x9a331afa
+.word 0x521c11ed
+.word 0xd51d8a4c
+.word 0xc6e5923a
+.word 0x338010b4
+.word 0xc1a0c3d0
+.word 0xf1432af6
+.word 0x3cb658fb
+.word 0x30c3d970
+.word 0xee5abf9a
+.word 0xf682b1c7
+.word 0x2138da60
+.word 0xc689fd02
+.word 0xee178ad7
+.word 0x436facd7
+.word 0xc7d8daaf
+.word 0x4c1d1f55
+.word 0xc9888d25
+.word 0x822779ba
+.word 0x78f2c45d
+.word 0x1fed56ed
+.word 0xa7083d4c
+.word 0xb34f33af
+.word 0x4a6607c7
+.word 0x0b836a8f
+.word 0x172def3c
+.word 0x426c1662
+.word 0xff230968
+.word 0xbe6b790c
+.word 0xe55fd121
+.word 0xbfecb84e
+.word 0x22344e5a
+.word 0x62cbd57e
+.word 0xf33003f6
+.word 0xda011497
+.word 0xfdcce902
+.word 0xd1e48344
+.word 0xb5fed310
+.word 0xc364a2ef
+.word 0xea3cf2d5
+.word 0x6de15ccb
+.word 0x088b5a93
+.word 0x4ffda684
+.word 0x03665c13
+.word 0x45ce1b74
+.word 0x9703ebec
+.word 0x4674371e
+.word 0x3f82f536
+.word 0x183eae92
+.word 0x5bb320fc
+.word 0x84193317
+.word 0x97482b1c
+.word 0xf167e4dd
+.word 0x1206692f
+.word 0x4151e4f1
+.word 0x13ae766c
+.word 0xee1e77b2
+.word 0xa1c63a2e
+.word 0xa8129d23
+.word 0xd04c811f
+.word 0x00a39449
+.word 0xe74334ab
+.word 0x5515ddbc
+.word 0xa0ee93aa
+.word 0x6766ef13
+.word 0xbee56305
+.word 0x4d495e4c
+.word 0x4711f4d3
+.word 0x3fef8d3b
+.word 0xb987fe31
+.word 0x74bc0824
+.word 0x27c30770
+.word 0x5af7521a
+.word 0x9166dce8
+.word 0x5f58487a
+.word 0x97ae0743
+.word 0xd7ce8432
+.word 0xa3e1fdcc
+.word 0xcd227187
+.word 0x4da914b7
+.word 0xde992499
+.word 0xf0d53a86
+.word 0x87a0bc45
+.word 0x05e4fd1e
+.word 0x15ff9758
+.word 0xc1df1bb1
+.word 0xde0e84d8
+.word 0xb970e1f2
+.word 0x82051a2d
+.word 0x8a4bcfb3
+.word 0x1d9c6c3e
+.word 0x9932c942
+.word 0xfffd72b7
+.word 0x349f4e71
+.word 0x9c453950
+.word 0xd9c47fce
+.word 0xa66bf413
+.word 0x59c2474c
+.word 0x3cdc24d7
+.word 0xbb91291c
+.word 0xed7157dd
+.word 0xe0b3b8d3
+.word 0x66946b82
+.word 0xbea785bf
+.word 0xcfb7416d
+.word 0x6018ef66
+.word 0xc16cafa7
+.word 0x62ca766f
+.word 0x3353e018
+.word 0x001b02eb
+.word 0xb97cae2c
+.word 0xc0a65e3b
+.word 0x0af326f8
+.word 0x0fe0ba6a
+.word 0x51977243
+.word 0x35546270
+.word 0xbb524def
+.word 0x30a090e8
+.word 0x95be7e8a
+.word 0x8d06fdcc
+.word 0x594be78d
+.word 0xdad0575f
+.word 0x6ff82f55
+.word 0x8312465d
+.word 0xaa8a2533
+.word 0x678a96bf
+.word 0x2f9920ec
+.word 0xf3f0d989
+.word 0xc0739db8
+.word 0x8ba5028d
+.word 0x7efc89f6
+.word 0x9e0378bd
+.word 0x4b8a6160
+.word 0x12a17aee
+.word 0x8b870132
+.word 0xe662fa24
+.word 0x194e9323
+.word 0xfb2913bb
+.word 0x5fa7f730
+.word 0xff951789
+.word 0xc4fc93d3
+.word 0x45ae8a1a
+.word 0x368020b2
+.word 0xe36752c3
+.word 0xfac3eab0
+.word 0xce19779a
+.word 0x959783d0
+.word 0x8b1804d8
+.word 0xc8433d1f
+.word 0xd296bd10
+.word 0xd596aed4
+.word 0x49d73237
+.word 0xd3bfcf50
+.word 0xf41b70bc
+.word 0x93109da1
+.word 0x0263d45c
+.word 0x303d6e67
+.word 0xa6aa709e
+.word 0x6cd0aaac
+.word 0xeaf163b4
+.word 0xa445d3ee
+.word 0xb30fc1b3
+.word 0x26c6036a
+.word 0x865881e9
+.word 0xb5dc1aec
+.word 0xeaab5da7
+.word 0xe6dbb806
+.word 0x438f7180
+.word 0x80739ead
+.word 0xfa985b7a
+.word 0x170f597a
+.word 0x121b1f93
+.word 0x2e7eaeac
+.word 0xbb41953a
+.word 0x5338c1c7
+.word 0xb5257eda
+.word 0xd3c901ad
+.word 0xcef18b62
+.word 0x0a360608
+.word 0xb03f0c76
+.word 0xcc582ee8
+.word 0xb3e505d6
+.word 0xdd3081d4
+.word 0xd15377a2
+.word 0x9d1e740b
+.word 0xddb0c0d3
+.word 0x8b6732fd
+.word 0x1bb1a8a2
+.word 0x48faab33
+.word 0xeebe2ad8
+.word 0x561d8be7
+.word 0x78b0df3f
+.word 0xdf83159d
+.word 0xaf7619e4
+.word 0xca6c7b9d
+.word 0x7860c149
+.word 0x82014fb8
+.word 0x13bccefb
+.word 0x3316af41
+.word 0x288696e7
+.word 0x8986d233
+.word 0x86ba5ead
+.word 0x127d085f
+.word 0xa2842395
+.word 0x1a01d8a1
+.word 0x62c15e0e
+.word 0x06c75da8
+.word 0x799a6707
+.word 0x2512f354
+.word 0xf0c116ff
+.word 0x5cab49f5
+.word 0xd4464ebb
+.word 0x71376cf5
+.word 0x53bf0e4e
+.word 0xd70656b8
+.word 0x4652c9fa
+.word 0x83d8207c
+.word 0xa3aa79ac
+.word 0xfe7879ad
+.word 0xb4276ced
+.word 0x0d26cb6c
+.word 0x74b798f2
+.word 0xf3c2d184
+.word 0xdacd4352
+.word 0x5e70dcde
+.word 0x20dfde80
+.word 0x44ece45a
+.word 0xc1ce1a87
+.word 0x2e306742
+.word 0xe44fb83d
+.word 0x43fe96ff
+.word 0xb07cae25
+.word 0xb19a8f90
+.word 0x3e0555bf
+.word 0x84cbde73
+.word 0xa0dd0854
+.word 0x44e7d6e4
+.word 0x8833ec95
+.word 0xa0a4b6a6
+.word 0xf518439b
+.word 0x48b4d213
+.word 0x2c7ec35a
+.word 0x81cfc4a1
+.word 0x98c49bca
+.word 0x7cb5b81c
+.word 0xe9b096b2
+.word 0x33a5980c
+.word 0x82247941
+.word 0x78adaff8
+.word 0x32b81fa8
+.word 0x746822e2
+.word 0x73d8f120
+.word 0x6018b329
+.word 0xc5f3a82b
+.word 0xfc8364f0
+.word 0xf81a3a51
+.word 0x37d71457
+.word 0x5f398384
+.word 0xf30d4388
+.word 0x154151b7
+.word 0x16ecf710
+.word 0x10980f26
+.word 0xf5bfe81d
+.word 0x8166f9b3
+.word 0x6edfe7bd
+.word 0x193077e6
+.word 0xe25658c8
+.word 0xfe328514
+.word 0xb01419a6
+.word 0xe98987fc
+.word 0x9165bf05
+.word 0x4f9f3522
+.word 0x2dea9589
+.word 0x4dc53f9f
+.word 0x26631fee
+.word 0x5e51457e
+.word 0x0c20b41f
+.word 0x0a6d1506
+.word 0xe5b98f77
+.word 0xd91df13e
+.word 0xd094b054
+.word 0x5a155132
+.word 0x7357ad2b
+.word 0x8affb65b
+.word 0xc98dbb74
+.word 0x4db6750c
+.word 0x83288d01
+.word 0x8c9afc36
+.word 0xd74cdaa1
+.word 0x596d76d5
+.word 0x00d62b6c
+.word 0x6767233a
+.word 0xe2434f63
+.word 0x2cc44845
+.word 0xa0571705
+.word 0x21e66fab
+.word 0x4566aae2
+.word 0x9fed55be
+.word 0x1a45e5e5
+.word 0x744081e7
+.word 0x963763c0
+.word 0x635ab843
+.word 0xc18df15b
+.word 0xd8a84962
+.word 0x4777ce06
+.word 0xc2c2eb80
+.word 0xc17493ee
+.word 0x988efbb7
+.word 0x975db8aa
+.word 0x91581cb3
+.word 0xbd61af82
+.word 0xb0d6b288
+.word 0x456189d5
+.word 0xa6667797
+.word 0xb601ea4f
+.word 0x765a8759
+.word 0xe5630066
+.word 0x50827a1b
+.word 0x8d2973c6
+.word 0x918e7766
+.word 0x9a7587ed
+.word 0x2f1c31cd
+.word 0xab1074b7
+.word 0x1dbb7310
+.word 0x8886ac91
+.word 0x737ac8aa
+.word 0xb2006485
+.word 0xdb966b98
+.word 0xfc027028
+.word 0x3acb593e
+.word 0xe8f6b71e
+.word 0x78dc0f1e
+.word 0x811cb3e6
+.word 0x0a7237b2
+.word 0xdc079f86
+.word 0x3a7d67ad
+.word 0x470910ca
+.word 0x4e2112e9
+.word 0x3be7bd21
+.word 0x49facc06
+.word 0x49c4f7d6
+.word 0x886b743a
+.word 0x5c223870
+.word 0xc1a6d9d1
+.word 0xeec9e99d
+.word 0xee8e75ae
+.word 0x600f1011
+.word 0xaeca086a
+.word 0xbb87a8a8
+.word 0xb98696af
+.word 0x66326c75
+.word 0x3145de8b
+.word 0xc203a877
+.word 0xa80088e5
+.word 0x59f28101
+.word 0xaaa1132a
+.word 0x11329048
+.word 0xc8a040be
+.word 0xe5fec46f
+.word 0xf86bf07d
+.word 0x1d378943
+.word 0xb0f39160
+.word 0xc81e4807
+.word 0x2429dd74
+.word 0x9c2cbfab
+.word 0x3082de5b
+.word 0x37dc44b7
+.word 0x07302514
+.word 0x47f3ac4a
+.word 0xd978d4da
+.word 0x962afd07
+.word 0xcc0c8881
+.word 0xf871978d
+.word 0x26c81541
+.word 0xd8e88a3b
+.word 0xe55c4e3b
+.word 0xa62da10a
+.word 0x5573c8eb
+.word 0x2cf220d8
+.word 0x7069ff5e
+.word 0x5f588690
+.word 0x42afdc96
+.word 0xaca207e7
+.word 0xa2993a86
+.word 0x42253f44
+.word 0x2c30055e
+.word 0x7fc1246b
+.word 0xb5fd9b32
+.word 0xaa5c2bd5
+.word 0xa41237ec
+.word 0xe59e2e76
+.word 0xc1fa37ce
+.word 0x71330395
+.word 0xbee93e0c
+.word 0xaa2e61ec
+.word 0x5752aadd
+.word 0x2ad31a21
+.word 0x609f72ef
+.word 0xb7d1063c
+.word 0xc031875d
+.word 0x4dd4340c
+.word 0x8aa3c9d6
+.word 0x1328f945
+.word 0x9916de5e
+.word 0x72f16118
+.word 0xc490f637
+.word 0xdc679912
+.word 0x0d75315f
+.word 0xf7133f83
+.word 0x2bee9c58
+.word 0xf6c1bf40
+.word 0xfc3dc80a
+.word 0x38cea024
+.word 0x4aaa13b8
+.word 0x252f9be9
+.word 0xe90d4846
+.word 0xc1b3a613
+.word 0xf75a356a
+.word 0xce90e634
+.word 0x5c183d39
+.word 0xc627d89f
+.word 0x5b32ea42
+.word 0x545b4a45
+.word 0x6d096d3a
+.word 0xb33fc81b
+.word 0x50fdb177
+.word 0x8f683d7b
+.word 0x914b5c89
+.word 0xcb62ad21
+.word 0x785a5a3f
+.word 0x6ba5b7da
+.word 0x8e33f7d3
+.word 0x75f90349
+.word 0xbb44275c
+.word 0x1b7cf05c
+.word 0x2d81371e
+.word 0x09d5a3f7
+.word 0x69bcdf7f
+.word 0xd93f5006
+.word 0x99870110
+.word 0xa2e3ec5c
+.word 0xef7e4d0d
+.word 0xd24a19b8
+.word 0x4b03e164
+.word 0x38def104
+.word 0x899e4ef7
+.word 0x3aad98ff
+.word 0x98a42aeb
+.word 0x1449b6f4
+.word 0x640d684d
+.word 0xb8d0df3f
+.word 0x4141a61c
+.word 0x26337f98
+.word 0xbf9e3451
+.word 0x318cdc21
+.word 0xe6c0c854
+.word 0x9cf269e9
+.word 0xe38dd4b0
+.word 0x88453664
+.word 0x7d2d2d52
+.word 0x4203da99
+.word 0x0eded97b
+.word 0xf413d012
+.word 0x380d44a4
+.word 0x14c227bd
+.word 0xeeb8858e
+.word 0x8976ad41
+.word 0x94c51bdb
+.word 0xeb432cd7
+.word 0xbb6903ea
+.word 0x425a5c55
+.word 0x487d5fa4
+.word 0xa807200a
+.word 0xae342721
+.word 0x39aa46a4
+.word 0x3fed3ad0
+.word 0x824ddb8e
+.word 0x0f3980b1
+.word 0xcdfb363d
+.word 0xa85ad740
+.word 0x26a4a7cb
+.word 0x94627716
+.word 0x9799234f
+.word 0x16c68997
+.word 0x6e07d016
+.word 0xcabb7da3
+.word 0x74799774
+.word 0xba1cfae8
+.word 0x3bc7df08
+.word 0xff8cde97
+.word 0xab15d5e7
+.word 0x8eee85c3
+.word 0x02d597a5
+.word 0x5b176d02
+.word 0x008828aa
+.word 0x7063ff83
+.word 0x2d532644
+.word 0x3e92c4fe
+.word 0x4e45cbdc
+.word 0x24fee3ac
+.word 0x488f77b2
+.word 0x80f87ec6
+.word 0x2262b132
+.word 0x8f776706
+.word 0xf2fa3e77
+.word 0xb8a12142
+.word 0xf4433bdb
+.word 0x1bd5fd4d
+.word 0xa92d2e37
+.word 0x3dad2431
+.word 0xef52a343
+.word 0x7eef38a5
+.word 0xb8db8788
+.word 0xc6af1c4f
+.word 0x21ef9038
+.word 0x19baabd1
+.word 0xcf866540
+.word 0xd1aa1a8a
+.word 0x6f1de621
+.word 0x064c97d2
+.word 0x0633c761
+.word 0xcd102a96
+.word 0xb1f6da68
+.word 0x5fa57041
+.word 0xad7b83e8
+.word 0xced30f5d
+.word 0x01d44713
+.word 0xbedc9ac4
+.word 0xfa61a9e0
+.word 0xde82f0f0
+.word 0xe25379d9
+.word 0x70a1eedd
+.word 0x9b458fd3
+.word 0x1d35537b
+.word 0xcae3bd48
+.word 0xa8f03ad6
+.word 0x67b9f1f5
+.word 0x0caf6679
+.word 0x2ddd7f56
+.word 0x66d6c054
+.word 0xebbcb3e3
+.word 0x78b65ed0
+.word 0xdda41002
+.word 0x2fed9a57
+.word 0x40d5ca28
+.word 0x3c88fc55
+.word 0x4998377f
+.word 0xcb8fc1ef
+.word 0x5e5d9673
+.word 0x51edd759
+.word 0xae64b7b6
+.word 0x72565652
+.word 0xe0f8ac78
+.word 0xb21d5372
+.word 0xd50a3641
+.word 0x6d66432f
+.word 0x65100af3
+.word 0x73c44a70
+.word 0xfcd69254
+.word 0xf1ad665f
+.word 0x91397d5b
+.word 0x7e55aa8a
+.word 0x127edf95
+.word 0xdb9fecac
+.word 0x9c28d3e4
+.word 0x697a1886
+.word 0x2ae7a75e
+.word 0x788365fe
+.word 0xb56c9199
+.word 0x44c9c272
+.word 0x43ef88ee
+.word 0x82e6c2ac
+.word 0x7ef697ee
+.word 0x01ca5a40
+.word 0x10140f46
+.word 0x5fc91532
+.word 0xb58ecd94
+.word 0x61bd6705
+.word 0x040dd6b1
+.word 0x3e548245
+.word 0x31f817b4
+.word 0xc3a69584
+.word 0x3a525e19
+.word 0xfb214d3c
+.word 0x49dea993
+.word 0x2e1df8bb
+.word 0x04db3d7b
+.word 0x7dcfef16
+.word 0x8406c5fc
+.word 0xc7f43a08
+.word 0xab309064
+.word 0x8afca95d
+.word 0x0d93b97c
+.word 0xed5cb8b1
+.word 0x3f761b33
+.word 0x3c0ac425
+.word 0x2c6f6c34
+.word 0x967e9b7b
+.word 0xa7a7bfe0
+.word 0x50d873f0
+.word 0x41cd18ba
+.word 0x02ce9a7e
+.word 0x980480f7
+.word 0xb63301c3
+.word 0x1ea746e9
+.word 0x3db16c2d
+.word 0xc06a0c10
+.word 0xb5c78caa
+.word 0x23018468
+.word 0xfce99c11
+.word 0xb77624cf
+.word 0xb72dfede
+.word 0x522b8ecc
+.word 0xf76d8b55
+.word 0x71197a44
+.word 0xa30746e7
+.word 0xfb8b986e
+.word 0xd5b321e1
+.word 0x2d026522
+.word 0x214a0f8f
+.word 0x3598b815
+.word 0x1e97ff70
+.word 0xe2a0d504
+.word 0x8afb3c0e
+.word 0x79ef62a3
+.word 0x5e6e5f37
+.word 0x7f270ce1
+.word 0x6fe42ee2
+.word 0xb9afaf86
+.word 0x6a66f961
+.word 0xddee4066
+.word 0xd8916aae
+.word 0xde3e1e2c
+.word 0xbff66f56
+.word 0x2c219bc2
+.word 0x6be8f04d
+.word 0xd72b4d23
+.word 0x5b3bb953
+.word 0x928832ab
+.word 0x3619ae31
+.word 0xd31e14ab
+.word 0x55665090
+.word 0x5c97096e
+.word 0xd13eb9db
+.word 0x16cec817
+.word 0x01bbdca5
+.word 0x6cb9a025
+.word 0x71e2ed4e
+.word 0x1cdc1555
+.word 0x64735f25
+.word 0xc4ebde8c
+.word 0xe2240572
+.word 0xec10731c
+.word 0xcb7e5edc
+.word 0x12f4762e
+.word 0x5d97af9d
+.word 0x72b71769
+.word 0x073329e9
+.word 0xc7d74551
+.word 0x473fb75c
+.word 0xc7abd0b8
+.word 0xacf5af49
+.word 0x444ddd4e
+.word 0x5795fe43
+.word 0x732eceff
+.word 0x31ea5c8e
+.word 0x02f4fe43
+.word 0x6bf1454b
+.word 0x3a5ccaf0
+.word 0x412aec00
+.word 0xc977fc49
+.word 0xbe13afc7
+.word 0x6930a29c
+.word 0x0658840a
+.word 0xc375abcf
+.word 0x435fdaba
+.word 0x19b52e54
+.word 0xc0a66852
+.word 0xe7cadea7
+.word 0x4185b8dc
+.word 0x8b85a429
+.word 0xe33b1001
+.word 0x850cb344
+.word 0x59512756
+.word 0x27f5bc2b
+.word 0x07133e49
+.word 0xe44bbe16
+.word 0xcfccc446
+.word 0x2e81953f
+.word 0xa53edaa0
+.word 0x313a7321
+.word 0xbf45adf3
+.word 0x605ecaf6
+.word 0xb23766c2
+.word 0x88cf9c55
+.word 0x1513172a
+.word 0x91baa214
+.word 0xa778f3c4
+.word 0x0bda539b
+.word 0x09633cea
+.word 0x45157fd6
+.word 0xb8ccfbf5
+.word 0xfa2086f0
+.word 0x7264e043
+.word 0xdbe5a167
+.word 0xb5e1cc55
+.word 0x45e3124f
+.word 0x7226c106
+.word 0xd85e3a8a
+.word 0x7b89ba16
+.word 0x8195501d
+.word 0xb8c9a687
+.word 0x25edbe2c
+.word 0x75beccf5
+.word 0x8525d883
+.word 0x914de97b
+.word 0xb14c073b
+.word 0x45652bfa
+.word 0x794f30bc
+.word 0x75eb31af
+.word 0x1a73a6a4
+.word 0xc96dc8dc
+.word 0xf593dd38
+.word 0x8f4e1a52
+.word 0x6923abcf
+.word 0x5e90dcfe
+.word 0x740ad2b3
+.word 0x5ec9f9eb
+.word 0x45862413
+.word 0xf2cd23c8
+.word 0x5dc69c66
+.word 0x3688e126
+.word 0xa8afe84f
+.word 0x015ce4b6
+.word 0x5a72f59f
+.word 0x8f8fa330
+.word 0xd1bb2626
+.word 0x4d90d37f
+.word 0x0d58be87
+.word 0xf7b85be2
+.word 0x02f493a2
+.word 0x6b1aceab
+.word 0x82ecbab9
+.word 0xfcc45797
+.word 0x5b32f413
+.word 0x3de729e9
+.word 0x48f8042e
+.word 0x600d85d8
+.word 0x2534a9ba
+.word 0xe64bd126
+.word 0x8369aa59
+.word 0xbbf5ac13
+.word 0x46cb701a
+.word 0xaa9e44e1
+.word 0xe99819f5
+.word 0x3b040bce
+.word 0xf4b26954
+.word 0x48eedba1
+.word 0xb7bc6376
+.word 0xf11ea9ef
+.word 0x76bac0ea
+.word 0xee6a9a22
+.word 0x653e4392
+.word 0x6fe0d4d2
+.word 0xeca7ba97
+.word 0x9a2e1446
+.word 0x0d9b0e8e
+.word 0x2656fa2f
+.word 0x88f3a910
+.word 0x56f75b55
+.word 0x0ec04146
+.word 0xd07f2152
+.word 0x537c1e04
+.word 0xe76b60f9
+.word 0x5dc43819
+.word 0x2ef9e0f8
+.word 0x6c631e1d
+.word 0xd39550e8
+.word 0xe792ddc1
+.word 0x900abd93
+.word 0x406f7706
+.word 0x8718d8e8
+.word 0x432a526d
+.word 0x5c78fa24
+.word 0x01df78c7
+.word 0x04b56dd7
+.word 0xeebc48ad
+.word 0xc46af1ba
+.word 0x3e683605
+.word 0x9d961c18
+.word 0x0a74c290
+.word 0xd4177a27
+.word 0x9ce23ebe
+.word 0xb861db45
+.word 0x6e0226a8
+.word 0x6f44193a
+.word 0xd0dbdcf2
+.word 0x516f20df
+.word 0x13d56be0
+.word 0x1d7e8de7
+.word 0xead2dbd8
+.word 0x471c8cc8
+.word 0x104f5419
+.word 0x90c55a50
+.word 0x2127a4a2
+.word 0x6d3338b1
+.word 0xc60438e7
+.word 0x3bc917ab
+.word 0x6bfcc042
+.word 0xee99e280
+.word 0xde82f423
+.word 0xde5a3568
+.word 0x0961f9a2
+.word 0xf9076830
+.word 0x8f746f75
+.word 0x2667ff3a
+.word 0xfc5b75c9
+.word 0x1f79e3ad
+.word 0xfc225bf0
+.word 0x07e7ec8b
+.word 0x14037ad1
+.word 0x790e2363
+.word 0x9bd31031
+.word 0x95d9291a
+.word 0xd136545a
+.word 0x1bb65f4a
+.word 0xb9bd9180
+.word 0x5222e9fa
+.word 0xf45e6236
+.word 0xa035c324
+.word 0xb0a74b4b
+.word 0x21e07786
+.word 0xea01dddb
+.word 0x4a1de2e9
+.word 0x3564b156
+.word 0x6ba79f0a
+.word 0xc82d03cb
+.word 0x529d0570
+.word 0x7890e2f9
+.word 0x9ab7f156
+.word 0x3f4075de
+.word 0x1e5a2565
+.word 0x680ab036
+.word 0xb67675a3
+.word 0xad9ec8fe
+.word 0x364ccfec
+.word 0xa854fe35
+.word 0xd6137fa1
+.word 0xb415a179
+.word 0x2ed940a6
+.word 0x0ad7d687
+.word 0xfc56013c
+.word 0xb5a450f9
+.word 0x45fc7a36
+.word 0xbdd12304
+.word 0x948bc384
+.word 0xa14bdc06
+.word 0x5be391ad
+.word 0xab0f3d64
+.word 0x61e40cae
+.word 0x6260715d
+.word 0x530b35f5
+.word 0xbc91c3ff
+.word 0xdc38f07e
+.word 0x4aa0ce3f
+.word 0x1320b12e
+.word 0x40909ddd
+.word 0xc188b755
+.word 0x5b25f5ba
+.word 0x02b53778
+.word 0xd7f2e385
+.word 0x6f2ead79
+.word 0x1145d1de
+.word 0xbf49ce54
+.word 0x81fcff43
+.word 0xd9000056
+.word 0xd5b7d996
+.word 0xd2da8fe4
+.word 0xe1d30a09
+.word 0x62530c0b
+.word 0xcf1539dd
+.word 0x7ebd73e0
+.word 0xa6e1103c
+.word 0x37957b9a
+.word 0xa012191b
+.word 0x12e25101
+.word 0xdc4f3181
+.word 0x2daa0261
+.word 0x91c37e55
+.word 0xd796638a
+.word 0xd3c532e5
+.word 0xdb013de3
+.word 0x6ce76b32
+.word 0x11feca1a
+.word 0xfc38fd7c
+.word 0x4e272630
+.word 0xdd540f97
+.word 0x68ebc852
+.word 0x70eb9e90
+.word 0x8ab3af6a
+.word 0x8ba1ed01
+.word 0xc7a4502f
+.word 0x965c1c2a
+.word 0x2adcc180
+.word 0x883d6ba1
+.word 0x182196e9
+.word 0xda976c6e
+.word 0x2d0a7725
+.word 0x5d48f05b
+.word 0x972089f9
+.word 0x57850449
+.word 0xe4febbb8
+.word 0xcae98245
+.word 0x552bd711
+.word 0x6dd1eccb
+.word 0xbcf2a0c4
+.word 0x82c41b50
+.word 0xa2e3db05
+.word 0x5626d595
+.word 0x91bbd95f
+.word 0x979c3e9f
+.word 0xe650bf01
+.word 0x59f5b9cf
+.word 0xcceaa860
+.word 0x36caf015
+.word 0x4a5ca96d
+.word 0x3b6e6f8e
+.word 0xedc7f466
+.word 0x186bbcdb
+.word 0x49a05830
+.word 0x77ed4104
+.word 0xb5d04777
+.word 0xa95589fe
+.word 0x1f203e19
+.word 0x63f7ac80
+.word 0xb857df42
+.word 0x24a036cd
+.word 0x1f39c9ee
+.word 0xd2e7c043
+.word 0x0015e1db
+.word 0x145e0c2a
+.word 0x300bb582
+.word 0xd5c92d8a
+.word 0x5932cd8c
+.word 0x6defad6d
+.word 0x8a731543
+.word 0xe42409c4
+.word 0x0a5f555b
+.word 0x31810e5f
+.word 0x66e7a557
+.word 0xa45f50a9
+.word 0x220caaf5
+.word 0x6f609329
+.word 0x919f8b85
+.word 0x10a0a387
+.word 0x54ed92c6
+.word 0x0f92cb20
+.word 0xe9278c27
+.word 0x02d9777b
+.word 0x28cad2c8
+.word 0x9d0394ad
+.word 0x3ae3ccca
+.word 0x931d0b5a
+.word 0x575d663b
+.word 0xfd90275e
+.word 0x9186dcc4
+.word 0x5a6109e9
+.word 0x2e32ba61
+.word 0x7b210e4d
+.word 0xc5fa26db
+.word 0xb74a4d8c
+.word 0xb49135b0
+.word 0x8428e722
+.word 0xef44708a
+.word 0x66503d6a
+.word 0x8c06a6c3
+.word 0xf4947c1d
+.word 0xca3b9fe4
+.word 0x7946d2da
+.word 0xcb9de016
+.word 0xc563c082
+.word 0x4b2bd4c1
+.word 0x6661795d
+.word 0xc1da07aa
+.word 0x5fb96af2
+.word 0x59c20bc9
+.word 0x897600ee
+.word 0x137feaef
+.word 0x42efdd54
+.word 0xfc9e3a29
+.word 0x3fad1e9a
+.word 0xce855e59
+.word 0x017c9c78
+.word 0x4eb1e4f9
+.word 0x83f968f2
+.word 0x501f6db5
+.word 0xf18760d2
+.word 0xf53e93a5
+.word 0x4c30d426
+.word 0x2325faf4
+.word 0xeb9bda0c
+.word 0xcb7699f1
+.word 0x84d97f13
+.word 0x0f04f7e8
+.word 0x027fcc7c
+.word 0xb04e1bd7
+.word 0xaf632c1d
+.word 0x774effb9
+.word 0x554db98c
+.word 0x469b4996
+.word 0x5f018e8d
+.word 0x6b122f93
+.word 0x9cbc9a3b
+.word 0x6a0c22ce
+.word 0x56878c2d
+.word 0x39942ac3
+.word 0xa920831c
+.word 0xefcc3f4d
+.word 0x2f21aa31
+.word 0xc5a3efce
+.word 0xa56f50f1
+.word 0x3b50b5ba
+.word 0x22b36911
+.word 0xd61143e7
+.word 0x260384ef
+.word 0x1e6695fa
+.word 0x1722250f
+.word 0xd07b8a38
+.word 0x60f16c32
+.word 0x004bb410
+.word 0x47e07775
+.word 0x84d91907
+.word 0x798e0c75
+.word 0x25b6ad3f
+.word 0xd9395c5e
+.word 0xb237932e
+.word 0x46095cbd
+.word 0x518ffee5
+.word 0x413d0c24
+.word 0x057f8b78
+.word 0x9c1d263e
+.word 0x4627a968
+.word 0xa9308204
+.word 0xd6835348
+.word 0x5209d51b
+.word 0x492df53d
+.word 0x5d8be599
+.word 0x79c8d728
+.word 0x0c01d8c6
+.word 0x63c17ee9
+.word 0x50135cbf
+.word 0x1c6ece44
+.word 0xd5792893
+.word 0xb23963d0
+.word 0x7cf898db
+.word 0x12c69f1f
+.word 0xba3c5f3a
+.word 0x6128c08c
+.word 0xe1b5def0
+.word 0xa59de8d4
+.word 0x3d6241e4
+.word 0xc084d6a7
+.word 0x97776572
+.word 0x5ab9c207
+.word 0xcb99ff8c
+.word 0x546d629b
+.word 0x24c2fad5
+.word 0x0b1e8709
+.word 0x9cff4bb8
+.word 0x46069f26
+.word 0x286a08dc
+.word 0x0c3994a0
+.word 0xc5fe23da
+.word 0x4776761b
+.word 0xdbe2526b
+.word 0xe4ab3e8b
+.word 0xd171343a
+.word 0x3967f927
+.word 0xf17366d9
+.word 0x9f7c0743
+.word 0xd8b9255d
+.word 0xe871a415
+.word 0x51712b2a
+.word 0x600d042e
+.word 0xe5969ffc
+.word 0x4a502a04
+.word 0x19678cab
+.word 0x09bf2f9c
+.word 0x8e61ac01
+.word 0x4e97913c
+.word 0xf248bbea
+.word 0x02add50e
+.word 0x65d5be09
+.word 0xb63faaac
+.word 0x9b7bbe32
+.word 0xd54d5487
+.word 0xa665df77
+.word 0xdf5aa6cd
+.word 0xf7c91075
+.word 0xdcb747a8
+.word 0x9a4826d8
+.word 0x66111287
+.word 0x87cc2434
+.word 0x38594952
+.word 0x4133f336
+.word 0x84fc5e54
+.word 0x70307cca
+.word 0x63547778
+.word 0x15cf2da7
+.word 0xfb236953
+.word 0x55048260
+.word 0x7adf421b
+.word 0x5943e274
+.word 0x8e38966b
+.word 0xc7bc4b88
+.word 0xf0285588
+.word 0x9a6e75c9
+.word 0xf0077ea2
+.word 0x5dda71e2
+.word 0x79173dde
+.word 0x5684a5a6
+.word 0xf72bd16c
+.word 0x20ee9dc3
+.word 0x39986372
+.word 0xc492a08f
+.word 0x3d0421aa
+.word 0x10c34f8c
+.word 0x5e57ce9e
+.word 0x76db69d6
+.word 0x7468b356
+.word 0x3b9fa1d1
+.word 0x590808a1
+.word 0x49909d32
+.word 0x2ce1b972
+.word 0x81c55a63
+.word 0x3a594c4b
+.word 0x31252587
+.word 0xede38152
+.word 0xe2f1c500
+.word 0x613ae4e6
+.word 0x878dfd58
+.word 0x18e61639
+.word 0x04e4e873
+.word 0x8360bee8
+.word 0xf1ee8427
+.word 0x141938b7
+.word 0x7472747b
+.word 0xcb169961
+.word 0x02b312e4
+.word 0x9629d8d9
+.word 0x430beb4a
+.word 0xc1122a05
+.word 0xd2acf11a
+.word 0xe203072d
+.word 0xc7e14fec
+.word 0x16564dca
+.word 0xa8403458
+.word 0x8f3c5178
+.word 0x4d19e5a6
+.word 0x33714f86
+.word 0x78eea672
+.word 0x6c1f7e3a
+.word 0x682ad397
+.word 0xf3fff62d
+.word 0x3b0290fc
+.word 0xdb170762
+.word 0x252999b6
+.word 0xb09f06da
+.word 0x71739481
+.word 0x64e19345
+.word 0x7a3c234b
+.word 0x22149363
+.word 0x385c1d74
+.word 0x696f18c4
+.word 0x3130d3ca
+.word 0xd8640642
+.word 0xb0dcd7f4
+.word 0xa11908eb
+.word 0xb1f180d6
+.word 0x299fc547
+.word 0x02a9edb7
+.word 0x145d5328
+.word 0xe23c7c93
+.word 0x7cd1839a
+.word 0xf937e65b
+.word 0x52f280fc
+.word 0x629963b4
+.word 0xa619a76f
+.word 0xd8d3b971
+.word 0x6d76de9e
+.word 0x7bb926aa
+.word 0x5b0936bb
+.word 0x3cfa0366
+.word 0xe7f7c29c
+.word 0xe7a5eb63
+.word 0x6fbb32b2
+.word 0x239bdd94
+.word 0xdedb9b8f
+.word 0x76dc0689
+.word 0xbf4345be
+.word 0x6ab79958
+.word 0x149a0349
+.word 0xbef69f69
+.word 0x1b1ac226
+.word 0xeff2fdc9
+.word 0x2b57472f
+.word 0x5796ce8a
+.word 0x00e61c31
+.word 0x383b2195
+.word 0xa6649005
+.word 0x17830c0c
+.word 0x1d1b8dc4
+.word 0x0f835f8b
+.word 0x03785988
+.word 0x83d3f5d5
+.word 0x39ba7973
+.word 0xc0b197dd
+.word 0xadb5687b
+.word 0x8145e7a0
+.word 0xed9cb022
+.word 0xf8517d1c
+.word 0x4eb93f29
+.word 0xc655d1d2
+.word 0xb1a1ab1a
+.word 0x2fe0ce06
+.word 0xc8d4d00d
+.word 0x090bf84f
+.word 0xac564274
+.word 0xe7d54914
+.word 0xa6b2750b
+.word 0xb2886840
+.word 0xa8b20868
+.word 0x6928113a
+.word 0x1c568392
+.word 0x60bd4302
+.word 0x4fb2cdc8
+.word 0xcff74767
+.word 0xe12b7898
+.word 0xf82547be
+.word 0x5536d793
+.word 0xe4d5077d
+.word 0xe733f76b
+.word 0x053be504
+.word 0x8c14ea98
+.word 0x186cb10b
+.word 0x146b88cf
+.word 0x7164457b
+.word 0xb49ac515
+.word 0x2ddae01c
+.word 0x524abe7f
+.word 0x7bd4b1a9
+.word 0x8b6659a4
+.word 0x1f99bb3f
+.word 0x2c5f6ffb
+.word 0x03783f83
+.word 0x5251fcaa
+.word 0xfce2191c
+.word 0x2fa646ea
+.word 0xc14c3d6d
+.word 0xa5fa264e
+.word 0xdc2b3aa8
+.word 0xcdbd453e
+.word 0x0fd5d91f
+.word 0x546948ef
+.word 0xd5658db9
+.word 0xa559e945
+.word 0xdae64535
+.word 0x083e2abe
+.word 0xd6c136fc
+.word 0x655b5de5
+.word 0xc9ab6761
+.word 0x9540edee
+.word 0x5b11a20d
+.word 0x86902519
+.word 0x0689891e
+.word 0xef7ebfbe
+.word 0xdfba5232
+.word 0xa6156553
+.word 0xa59f96c8
+.word 0xbc74feba
+.word 0x707d03af
+.word 0x3e339742
+.word 0xa6210dfe
+.word 0xfbde7703
+.word 0xde41c3e1
+.word 0xcc4a6787
+.word 0x2a2731ca
+.word 0x4fbbbd87
+.word 0x47d22cd4
+.word 0x907841ec
+.word 0xe6993bdf
+.word 0x9eeb412c
+.word 0x958b771d
+.word 0x6d5901fb
+.word 0x2d072012
+.word 0x43d81dd6
+.word 0xfb77845f
+.word 0xe86f0b5f
+.word 0xa6ed9556
+.word 0xafca3eff
+.word 0x39cdead7
+.word 0x05e94b4d
+.word 0x064ae082
+.word 0x0490af55
+.word 0x34012709
+.word 0xfb2ad688
+.word 0x93c3d0d4
+.word 0x3862ff8b
+.word 0x1767152f
+.word 0x046b5f81
+.word 0x036339ca
+.word 0x22acd157
+.word 0x56159e5c
+.word 0x27e5043d
+.word 0x3a85c2f1
+.word 0xa00a0aec
+.word 0x20de40c4
+.word 0x22c93516
+.word 0xc5ad3993
+.word 0x47d50ec8
+.word 0xa10b4131
+.word 0x48f1c8f7
+.word 0xb262c0d7
+.word 0x028c3aa6
+.word 0x45372ce6
+.word 0xdd4034eb
+.word 0x4aea4860
+.word 0xa2f51957
+.word 0x3609e539
+.word 0x1b59d924
+.word 0x6ca7eb16
+.word 0x7531bd2e
+.word 0x08fb011f
+.word 0x8733df20
+.word 0x6c5714a7
+.word 0x5bee0581
+.word 0xc2280705
+.word 0xe3665e0a
+.word 0x685820b9
+.word 0x4dfa6c8a
+.word 0xc5465e7f
+.word 0xc22d4ffc
+.word 0x83190fc8
+.word 0x9d2512b2
+.word 0x576d6bf0
+.word 0xb98aa6b4
+.word 0x94080450
+.word 0xdbe22537
+.word 0x4cd8c0e2
+.word 0x11126344
+.word 0xdd9ab6ba
+.word 0x95fba04a
+.word 0xcd3b1b75
+.word 0xbf1647ba
+.word 0xc57b0627
+.word 0x5c5312f9
+.word 0xdd5defbc
+.word 0x9df4a5e2
+.word 0x6840f1a7
+.word 0x2af69aa4
+.word 0x186e1e89
+.word 0x3af64fb7
+.word 0x51f7cf29
+.word 0x54ae8e47
+.word 0x9edca61b
+.word 0xf5bce8c7
+.word 0x9042d6f7
+.word 0xaa1b0cba
+.word 0x02a95b12
+.word 0xb22fcce1
+.word 0x88c955f4
+.word 0xc712fb5f
+.word 0x5979d0f1
+.word 0xa4d9a2d8
+.word 0x82f7f06c
+.word 0xc807ee63
+.word 0x6f24a800
+.word 0xd3311e47
+.word 0xde742f84
+.word 0x877ffde2
+.word 0x8069f428
+.word 0xb4b25857
+.word 0x84e8cd26
+.word 0xf858806e
+.word 0xef21af81
+.word 0x7f63a45b
+.word 0xb00b4457
+.word 0x1b145fda
+.word 0xe780524b
+.word 0x9e6f62f1
+.word 0x06a1bb04
+.word 0x029ea69b
+.word 0xd870cced
+.word 0xc8182716
+.word 0x9e070902
+.word 0x67998a67
+.word 0x3e42dc3a
+.word 0x7bd1e464
+.word 0xe83e4c70
+.word 0xa15aee0f
+.word 0x0b4bc18f
+.word 0x34e82639
+.word 0x15b6c99e
+.word 0xdd81574d
+.word 0xd8c8a565
+.word 0xed05deb6
+.word 0x6e313abe
+.word 0x50e7e72d
+.word 0x0faa963b
+.word 0x4146441d
+.word 0x58123987
+.word 0x6398cca1
+.word 0x56d814c1
+.word 0xba64fc66
+.word 0xdbc4feaf
+.word 0x610fc415
+.word 0xd13a98ad
+.word 0x4acb70c9
+.word 0x4423e90a
+.word 0xcbf706b4
+.word 0x16dc31fc
+.word 0x134719db
+.word 0xfe1aac8e
+.word 0x789c6474
+.word 0x68d40ba3
+.word 0xc59d71fc
+.word 0xe3fe15d1
+.word 0x5ee9e6ac
+.word 0xce55aa7c
+.word 0x2106aeba
+.word 0xe3786f3b
+.word 0x69efe64d
+.word 0x62b0e327
+.word 0x03dffc0c
+.word 0x118f801a
+.word 0x640c45dd
+.word 0x1d6b708e
+.word 0xa91d26f9
+.word 0xff231fab
+.word 0x49fc0ac6
+.word 0xc0da0402
+.word 0x95a33290
+.word 0x9e5ebf82
+.word 0xc6f2dfed
+.word 0x7c0e0429
+.word 0xd428e5a1
+.word 0x28b78fef
+.word 0xae9531a7
+.word 0x876b592f
+.word 0x32a6c209
+.word 0x3a9521fc
+.word 0xf2a8a306
+.word 0xa2f2a9bb
+.word 0x7f36684c
+.word 0x803f4f73
+.word 0xd9517f73
+.word 0xa2150832
+.word 0x38cab3e9
+.word 0xf0377295
+.word 0xd967652c
+.word 0xc7e9f32d
+.word 0xb5a412b9
+.word 0xac3f0f60
+.word 0x52d77232
+.word 0xfa30a3a5
+.word 0xb660be8d
+.word 0x29f288e0
+.word 0xcf55200f
+.word 0x6d57ebda
+.word 0x0f955e18
+.word 0xe1e9b71e
+.word 0x39bd96d0
+.word 0x6bca51bd
+.word 0x1836a917
+.word 0x85aa9f03
+.word 0x89ca1471
+.word 0xd2648b31
+.word 0xf41c040b
+.word 0xe2b3fb49
+.word 0xab4cf3e4
+.word 0x66af1cb9
+.word 0xf04cdc57
+.word 0x3a7a2385
+.word 0x50ea709d
+.word 0x90932fe2
+.word 0x5e2b2c0b
+.word 0x915159b4
+.word 0x1de8726a
+.word 0x3ebc1a38
+.word 0x0547f9df
+.word 0x6e13aa36
+.word 0x3d759a34
+.word 0xd0beefa7
+.word 0x4172cfb3
+.word 0x311245e2
+.word 0xb78859de
+.word 0x31adbf21
+.word 0xd6bbd565
+.word 0x87a7fc0a
+.word 0x24c687c3
+.word 0xb3754932
+.word 0xff4c2c8c
+.word 0x4ec044b6
+.word 0x8e1e84e8
+.word 0x8bd5f505
+.word 0xf34c82ae
+.word 0xfccdbc8c
+.word 0x0fb8cade
+.word 0x61c39a5b
+.word 0xceb7d8fe
+.word 0x6b2c9fdb
+.word 0x82701bbc
+.word 0x90f7736b
+.word 0x0319a0e5
+.word 0x09bd6fee
+.word 0xe5a783a5
+.word 0x655c597e
+.word 0x71afe307
+.word 0x8f040588
+.word 0xc06034b2
+.word 0xe45b815e
+.word 0x1563d770
+.word 0xa1ba1363
+.word 0x00ee1290
+.word 0x8ba4dfa9
+.word 0xd0e0dc52
+.word 0x7a70228d
+.word 0x5e642fd1
+.word 0xdb14d9e8
+.word 0xb1611576
+.word 0xea345106
+.word 0x8a9ceb9c
+.word 0x4f0e4a72
+.word 0xb1668a6a
+.word 0x7cdc1945
+.word 0x004a261d
+.word 0x21257f95
+.word 0xf57f762f
+.word 0xa53c063a
+.word 0x086a8b87
+.word 0xc0905652
+.word 0xc1bf00a2
+.word 0x0c175306
+.word 0xfd462501
+.word 0x2c82943b
+.word 0x81cf0354
+.word 0xb63558f7
+.word 0x7d070a75
+.word 0x591d604c
+.word 0x7a46bfff
+.word 0xa17d609e
+.word 0xf3d3aec4
+.word 0xe17b7d20
+.word 0xfd3ee6d6
+.word 0xce118fbe
+.word 0x7a2e471e
+.word 0x5ad88aad
+.word 0xe8f7326c
+.word 0xebf1b3ae
+.word 0x4d239e83
+.word 0xc927b1b1
+.word 0x5931be0e
+.word 0x0e267fe2
+.word 0x78f3f12d
+.word 0xe61deae7
+.word 0x88b00452
+.word 0xd0877f2c
+.word 0xd771ac8d
+.word 0xcc1c8d10
+.word 0x4c58245f
+.word 0xe9295b55
+.word 0x15bcae8a
+.word 0x81484595
+.word 0x155c2e1b
+.word 0x620df81c
+.word 0xe2dc0a7f
+.word 0xd01a7767
+.word 0xfe1d00c6
+.word 0x8f86916e
+.word 0x852de18f
+.word 0x2a4380ea
+.word 0x7c2e7b07
+.word 0xe8265db6
+.word 0x570ba3fb
+.word 0xdaad0786
+.word 0x4dc6e580
+.word 0xcd39bfb1
+.word 0x30e08859
+.word 0xf6aa5b4b
+.word 0x1e0840c8
+.word 0x149df113
+.word 0x92b93451
+.word 0xc6f6e1e6
+.word 0xb5fc1e7e
+.word 0x67d36cae
+.word 0xb6cf9c5d
+.word 0x34342564
+.word 0x53e632d3
+.word 0x49e87ab0
+.word 0x39eb0fc1
+.word 0x0aeb2ebc
+.word 0x36a97a28
+.word 0x8aae87d5
+.word 0x9b893c68
+.word 0x55b3d7b1
+.word 0x9c69e9ac
+.word 0x54b0c7e3
+.word 0xcf176dc8
+.word 0x037031e6
+.word 0xc5a9d7dc
+.word 0xe64d64af
+.word 0x94549549
+.word 0xa326100d
+.word 0xfb6913dd
+.word 0x250551e1
+.word 0x185149a3
+.word 0x81df8c8d
+.word 0xb93004ff
+.word 0x892fc0dd
+.word 0x7c24f2d9
+.word 0x6eafbfc3
+.word 0x75d20ebc
+.word 0xe06c4159
+.word 0x11ae6057
+.word 0xa7ea38a8
+.word 0x17a4650b
+.word 0xd7d90ca1
+.word 0x431cac10
+.word 0xcc89d5cc
+.word 0x51cb17e4
+.word 0xa246a444
+.word 0x82539653
+.word 0xf4b84378
+.word 0x78f45b70
+.word 0x831548cb
+.word 0x80758ff9
+.word 0x40135d37
+.word 0xf0eaf7d2
+.word 0x57a708b4
+.word 0x26a3f6fd
+.word 0x35481f92
+.word 0xb8168e09
+.word 0xe726ddaa
+.word 0x97ad8004
+.word 0xf4cd7d12
+.word 0x3964a084
+.word 0xe2c8c43c
+.word 0xc4a6689c
+.word 0x36c0e04c
+.word 0x17a2473b
+.word 0x6c50425c
+.word 0x6b25ccb5
+.word 0x7d60b3f5
+.word 0xb8a5d63e
+.word 0x3a86fe30
+.word 0x41368f32
+.word 0x55139527
+.word 0x29495350
+.word 0x70ea58b7
+.word 0x996b9af2
+.word 0x45bb1ab6
+.word 0x22e7c9f9
+.word 0xbadf4a39
+.word 0x163c2649
+.word 0xdbb5c228
+.word 0x9d5ca087
+.word 0x3a100227
+.word 0x025a90a7
+.word 0xd8370f7a
+.word 0x05adbd22
+.word 0xc106b69e
+.word 0x88a8817b
+.word 0xb0bc253a
+.word 0x336b01f9
+.word 0xbb10ca0d
+.word 0x4164edf4
+.word 0x9711770c
+.word 0xf6ffe8c9
+.word 0x989f13db
+.word 0x28f21bfe
+.word 0x3e09d5fb
+.word 0x687098b7
+.word 0xd472183d
+.word 0xcc3c9bfd
+.word 0x643a1c5d
+.word 0x963fe1f5
+.word 0x5aad2695
+.word 0x7d977b8c
+.word 0x51066cba
+.word 0xf1fae5fe
+.word 0x5f6ad219
+.word 0x51244626
+.word 0x9f57cfba
+.word 0x384502a3
+.word 0x1cb47da5
+.word 0x71e9ff03
+.word 0xd3a567b0
+.word 0x5df68da5
+.word 0x486453a1
+.word 0x4a455775
+.word 0x9a6ff465
+.word 0x44f17652
+.word 0x88801d16
+.word 0x82e3c30b
+.word 0x0a119192
+.word 0x52750df3
+.word 0xd22c6897
+.word 0x35f27839
+.word 0xc0021f4b
+.word 0x136004cb
+.word 0x7d117389
+.word 0x6c2abc9d
+.word 0xa67db18c
+.word 0x0128dd5e
+.word 0x1f4dd3d0
+.word 0x675cf0f4
+.word 0xeb096082
+.word 0x8082fa11
+.word 0xdc763a15
+.word 0x8819c63b
+.word 0xfc8684bc
+.word 0x13e9d045
+.word 0xde76c763
+.word 0x418c2f89
+.word 0x3810b7fd
+.word 0x86c5a5f9
+.word 0x6b099286
+.word 0xfec26c1c
+.word 0xef876030
+.word 0xb9576241
+.word 0x3f09bdf1
+.word 0x3bb588db
+.word 0x70d83599
+.word 0x523125be
+.word 0x3822067c
+.word 0x34a3646e
+.word 0x438cd7e1
+.word 0x4c67906d
+.word 0x1c396bd6
+.word 0x4f2ccbbb
+.word 0xf3a3cd59
+.word 0xd64c94e1
+.word 0x9e0b9b1e
+.word 0xf4fb5120
+.word 0xf052f852
+.word 0x17ae1e1e
+.word 0x0c0f451f
+.word 0x55551d0f
+.word 0x8847f60f
+.word 0xff621a90
+.word 0x06e5f21d
+.word 0xb32a1aeb
+.word 0xcae76703
+.word 0x43331dfa
+.word 0xc45fd724
+.word 0xde1f7959
+.word 0x17d84aa8
+.word 0xa8708b44
+.word 0x790e485b
+.word 0xc56caf02
+.word 0x263bc12b
+.word 0xa9ac4417
+.word 0x02fcc14c
+.word 0x087603e9
+.word 0x6e8bd7ef
+.word 0x58c59bd6
+.word 0x6ea121f9
+.word 0x35c65ec9
+.word 0xfec4d9d1
+.word 0x6a2212de
+.word 0x7f673a2b
+.word 0x5ba797b6
+.word 0xe181a72f
+.word 0x2a610012
+.word 0xee6673c6
+.word 0x31094a03
+.word 0xe0249a18
+.word 0x6d618f06
+.word 0x996dbdbd
+.word 0x3c5c825e
+.word 0xd166b24b
+.word 0x389ec115
+.word 0xc939b832
+.word 0xa8a41823
+.word 0xe5f6287d
+.word 0xfd275cba
+.word 0xcd3ad94d
+.word 0x2c3fb810
+.word 0xd0e29236
+.word 0x1a16dcee
+.word 0xcf890d80
+.word 0xec1853af
+.word 0x2330d97a
+.word 0x0a450b7c
+.word 0xcf7a40fc
+.word 0x59acef94
+.word 0xadce121d
+.word 0xd1a56e04
+.word 0xf1101702
+.word 0x84bd74a6
+.word 0xd7a157a5
+.word 0xe940b3dc
+.word 0xc5696726
+.word 0x5eaffbfa
+.word 0xea979ed2
+.word 0x6bba35e4
+.word 0xe6bb4b31
+.word 0x6221a4cb
+.word 0x7c470b73
+.word 0x0912ac58
+.word 0x1b0f1dd8
+.word 0xeda4e604
+.word 0x74af9a5f
+.word 0xbae03a24
+.word 0x795cc464
+.word 0xb9cb1fd1
+.word 0x86015686
+.word 0x24c1ca8d
+.word 0x50c3d9ec
+.word 0xa28318f2
+.word 0x2821d20c
+.word 0xf1430dd3
+.word 0x0f87640a
+.word 0x9066f474
+.word 0xdef89d9d
+.word 0xbb3f65a6
+.word 0x253b79fb
+.word 0x1b151b75
+.word 0xb4f09cab
+.word 0x68c1d37a
+.word 0x190cd744
+.word 0x20238230
+.word 0xaa5e1d31
+.word 0x06775ea8
+.word 0x49f9f995
+.word 0xf0f1da2a
+.word 0x4081f78a
+.word 0xd9d7c5f4
+.word 0x06a720bf
+.word 0x334e0987
+.word 0x0cb3b26c
+.word 0xbb1653d2
+.word 0x913750d2
+.word 0xc48d4f31
+.word 0xd0870c69
+.word 0xb8ecf903
+.word 0x1b97ddbe
+.word 0x7545d191
+.word 0x0887f283
+.word 0xcc17e0b7
+.word 0x60357eb5
+.word 0x769cdc55
+.word 0xe459ced9
+.word 0xfdb80264
+.word 0x9abf91ee
+.word 0x630f2602
+.word 0xdf73dbf7
+.word 0xd8286c34
+.word 0x36f44ec6
+.word 0x743dbc68
+.word 0xf2b0e46c
+.word 0xfbf64418
+.word 0xea06fe2b
+.word 0x7c988acc
+.word 0x29cea76a
+.word 0xe4208595
+.word 0x348b1644
+.word 0x9a3b9ba1
+.word 0x638a4ee1
+.word 0xd8e34a9d
+.word 0x5dea5371
+.word 0x609a60dc
+.word 0xd9247316
+.word 0xb9e5f7a2
+.word 0xff95bb91
+.word 0x1e928666
+.word 0x219f85d9
+.word 0xad3cea97
+.word 0x7f41a6ff
+.word 0xe4c14979
+.word 0x76c6ec1c
+.word 0x0c25e589
+.word 0x79d60c4b
+.word 0x3fa1d629
+.word 0xccc5b6ac
+.word 0xcefb56ec
+.word 0xdd261ebc
+.word 0x1be3eca8
+.word 0x9036cfa2
+.word 0x32cba197
+.word 0xfa60976c
+.word 0x26453dbb
+.word 0xa699e78b
+.word 0xb7ad2349
+.word 0x3371373c
+.word 0x954a722f
+.word 0x1f19b888
+.word 0x0d99e59d
+.word 0x48964a88
+.word 0x13fd81f9
+.word 0x709b8224
+.word 0xadc1fa90
+.word 0xecccf3f2
+.word 0x42e20b34
+.word 0x79df3876
+.word 0xb07f92fa
+.word 0x50bb56ae
+.word 0x4f42f81d
+.word 0x5ebf032e
+.word 0xd588192c
+.word 0x5c9b4fbe
+.word 0xc4bb6d76
+.word 0x2590d76e
+.word 0x4ef8345e
+.word 0x4a75b61f
+.word 0x3a72af74
+.word 0x285c1407
+.word 0x65400db7
+.word 0xd068b264
+.word 0xa8edba95
+.word 0xfe18ff5f
+.word 0x50d99b6e
+.word 0x4de8a222
+.word 0x3dec2504
+.word 0x7e304285
+.word 0x1fac73a3
+.word 0xcdc345f1
+.word 0x6c5e150f
+.word 0x0ab31ee7
+.word 0x8176798a
+.word 0x6de7df70
+.word 0x318ad6c3
+.word 0x4d8b48ca
+.word 0xab7c7b88
+.word 0xff97304c
+.word 0x9a9c290d
+.word 0x41d4457d
+.word 0x084c0ab8
+.word 0x53266d9f
+.word 0x3d7b9e87
+.word 0x6c4c4a4b
+.word 0x731f88eb
+.word 0x47b4294d
+.word 0x29ffc6c1
+.word 0xee1a0272
+.word 0xf2bd5eea
+.word 0xb97247db
+.word 0xeda8c215
+.word 0x91642ace
+.word 0xbdbd52c8
+.word 0x70f078f7
+.word 0xa9a1e9ab
+.word 0xd8f9c924
+.word 0xb4e501a5
+.word 0xcbfe1d11
+.word 0x9cc77396
+.word 0x583ff0f5
+.word 0xcd738d39
+.word 0xe58b2369
+.word 0x3c00f2b1
+.word 0x2a75231f
+.word 0x01ea858a
+.word 0x3e9c36b4
+.word 0x2e3f165d
+.word 0x3395dffa
+.word 0x2a7f6cbf
+.word 0x511f1aa1
+.word 0x2b3f7f30
+.word 0xf5f43d33
+.word 0x11faa5fe
+.word 0x0353f3dc
+.word 0xebed06c6
+.word 0x61e24386
+.word 0xbf8a1cfa
+.word 0x51b0ea0f
+.word 0x037ccab0
+.word 0x09b4ab5b
+.word 0xec308655
+.word 0x0cb3e12e
+.word 0x71d32b8f
+.word 0x4334e68b
+.word 0xa4eb609c
+.word 0x607327af
+.word 0xcee4b565
+.word 0x36d37119
+.word 0x89e7d7e1
+.word 0xfad90a9d
+.word 0x88231d80
+.word 0xf40c2abf
+.word 0x0c8eb3e5
+.word 0xe15d733e
+.word 0x63ff0158
+.word 0xff389c66
+.word 0xb3581c23
+.word 0x4182a621
+.word 0xc4deab74
+.word 0x2ade3762
+.word 0x87177c96
+.word 0xbd8f9912
+.word 0x2ac4bbc9
+.word 0x0ece17dd
+.word 0xd731ba90
+.word 0x304cf1c8
+.word 0xc2a16b02
+.word 0x789e9ba8
+.word 0x31b93654
+.word 0xdc2b4c03
+.word 0x5f4737dc
+.word 0x433528ee
+.word 0xe5f331ef
+.word 0xfd2480fe
+.word 0x54c8c603
+.word 0xf982c37b
+.word 0x1bdb8ddb
+.word 0xcafa31f6
+.word 0x95c1a62a
+.word 0x3e7a10ad
+.word 0x65ba6fb8
+.word 0x51be4c41
+.word 0xac90ce66
+.word 0x6c15f933
+.word 0x6da26083
+.word 0xaab820e5
+.word 0x590a8b85
+.word 0x153116e1
+.word 0x7e4a1e3e
+.word 0xdda52eb2
+.word 0x3d3808fc
+.word 0x450f37cd
+.word 0xe9e12641
+.word 0x29a01547
+.word 0xf5a66493
+.word 0x4d9f24d9
+.word 0x35773ab8
+.word 0xb9223dd8
+.word 0xe3f77525
+.word 0x777e5fb3
+.word 0x453ef957
+.word 0x20eeb9b5
+.word 0x01e23a7a
+.word 0xb45438f7
+.word 0xbd9451ad
+.word 0x509b2ba4
+.word 0x793d6578
+.word 0xc3cee357
+.word 0xb27313dc
+.word 0xae4addb0
+.word 0xeafdf38b
+.word 0x3e3c37c0
+.word 0xf91bd2fa
+.word 0xa0670a89
+.word 0x51afcd41
+.word 0xae6e4b64
+.word 0x4e16f5c1
+.word 0x694338e8
+.word 0xd2ae3ad7
+.word 0xce82c4e5
+.word 0x99011648
+.word 0xce862030
+.word 0xdd9f5c31
+.word 0x63a85e24
+.word 0x13552532
+.word 0xf0bf85f6
+.word 0x0f543394
+.word 0x71e16833
+.word 0x1a111a51
+.word 0x89b9deb2
+.word 0xc7b9df85
+.word 0x08fb07a8
+.word 0x7f189e52
+.word 0x6731ecf9
+.word 0xab5e8112
+.word 0xe60cc960
+.word 0xac43b426
+.word 0x0f692463
+.word 0x5a5b464b
+.word 0x76f00596
+.word 0x2988b9af
+.word 0xdbe9fe88
+.word 0x5c1de442
+.word 0x5c04cbde
+.word 0x369d3d12
+.word 0x897a11bb
+.word 0xce99b6ec
+.word 0x1c7c10cf
+.word 0x7fd1559d
+.word 0x4c076760
+.word 0x0ffa6692
+.word 0x65d1d03e
+.word 0xa308570d
+.word 0x9d3b2f86
+.word 0xfed7e307
+.word 0xb3e64a8d
+.word 0xee0d4fbe
+.word 0xba293589
+.word 0xaf4bbb5b
+.word 0xe6187b86
+.word 0xdd6ec63f
+.word 0xc13f5257
+.word 0x53b2b3f7
+.word 0x483e892b
+.word 0xdd8a9b0e
+.word 0x067e6246
+.word 0x63c9da83
+.word 0xd673da27
+.word 0x4b137866
+.word 0x7f74e1f0
+.word 0x58f7a57b
+.word 0xa3d01941
+.word 0xd4466f32
+.word 0x0f4449ec
+.word 0x68df99e8
+.word 0xdb1c6c97
+.word 0x69b01dc4
+.word 0xfa13e963
+.word 0x4572da50
+.word 0x8125b9ab
+.word 0x2c533090
+.word 0xde408469
+.word 0x7ad8a598
+.word 0xd323d43e
+.word 0xb032ac02
+.word 0x4358ebb2
+.word 0xda675e26
+.word 0x115029d9
+.word 0xecf178f1
+.word 0xc8cb4ba3
+.word 0x3ec928cf
+.word 0x93458ee9
+.word 0x595272f6
+.word 0x77e2f511
+.word 0xf2b1f586
+.word 0x74141a07
+.word 0x94c793b2
+.word 0x0b81ea6d
+.word 0x0e929694
+.word 0x79f78f69
+.word 0x6bd99681
+.word 0xef1645a7
+.word 0x92082bbb
+.word 0xe37dfa0d
+.word 0x93034548
+.word 0xee709b59
+.word 0x51daa8fe
+.word 0x06abb4b6
+.word 0xc077acc4
+.word 0xa7b6f268
+.word 0x322dbfba
+.word 0x37533609
+.word 0x78bc6364
+.word 0xe632dde3
+.word 0xab5d0f21
+.word 0x6e93ba65
+.word 0x92864652
+.word 0x5915e930
+.word 0x64ea09c7
+.word 0x2edc3547
+.word 0xb20dbc77
+.word 0x06255c15
+.word 0x8641b0a4
+.word 0x169f8abb
+.word 0x24724c58
+.word 0xc2684825
+.word 0xdceeede5
+.word 0x8279bdf8
+.word 0xf669c901
+.word 0xb57dac45
+.word 0x89fcd84f
+.word 0x9b46a3c6
+.word 0x022fb138
+.word 0x18cc8240
+.word 0xbfbcc889
+.word 0x5fdf0a8e
+.word 0xf7345f8e
+.word 0x41e358ea
+.word 0x48661bbc
+.word 0x36364acc
+.word 0xee49e628
+.word 0x8bd07648
+.word 0x41a752b5
+.word 0x1095b369
+.word 0x9531e56c
+.word 0x03f6eee9
+.word 0xdcb7a457
+.word 0x2891dd72
+.word 0xc3212e2e
+.word 0xdcd8299d
+.word 0x4a0f415b
+.word 0x95c0e915
+.word 0xaff6821e
+.word 0x74ca3d64
+.word 0x6981708b
+.word 0xe2451153
+.word 0x41a20a4e
+.word 0x90e23a40
+.word 0x01d6d94e
+.word 0x91b440a7
+.word 0xf8716248
+.word 0x654869c6
+.word 0xbc3b2aab
+.word 0x53a172ca
+.word 0x6094df90
+.word 0x64b02fca
+.word 0xe159e7a5
+.word 0x53773081
+.word 0x0b8afb39
+.word 0x8bec6fd2
+.word 0x9532c78b
+.word 0x9b1953cd
+.word 0x77f90dff
+.word 0x4bf8eedc
+.word 0xb74b1138
+.word 0x3fc2a8b8
+.word 0x42e2d614
+.word 0x2da1a6b3
+.word 0x0ef5a223
+.word 0x34eb7e87
+.word 0xacd530b9
+.word 0x658d3bfc
+.word 0x7514ef01
+.word 0x3b22369e
+.word 0x42022601
+.word 0xafbcb3da
+.word 0xf04d0aca
+.word 0x23e58a6d
+.word 0xb09f2452
+.word 0xf5d649b3
+.word 0x8b889249
+.word 0xe4f51d40
+.word 0x2e50d916
+.word 0xc8dae978
+.word 0x1c18c372
+.word 0x375880e5
+.word 0x18b32868
+.word 0x00d90d1f
+.word 0xc224859f
+.word 0x597a41d7
+.word 0x5cf1a666
+.word 0xbb97f856
+.word 0x4096d07f
+.word 0xdbc43761
+.word 0x2f5c675c
+.word 0xf9c909d1
+.word 0xdf408d77
+.word 0x80031eb6
+.word 0xef98a9c8
+.word 0xd854d29d
+.word 0xf39b8ee2
+.word 0x4ba83f91
+.word 0x6a1148cc
+.word 0x4d652d35
+.word 0x71d878d6
+.word 0x8e2462da
+.word 0xdbd600ad
+.word 0x540fa84e
+.word 0x8e42c366
+.word 0x46c09367
+.word 0x71f3d5fc
+.word 0x0d1bfdf7
+.word 0x8ab25da5
+.word 0x9db7e35f
+.word 0x9775bfa5
+.word 0xde5805bf
+.word 0x852ef1db
+.word 0x46a64700
+.word 0xf3332016
+.word 0x670f9cc9
+.word 0x31c448a1
+.word 0x8233af06
+.word 0xb38fa2ec
+.word 0x444da588
+.word 0x3baa7cd7
+.word 0x1595fee5
+.word 0x8e7bc1ec
+.word 0x6014e4a6
+.word 0xcbc4ad3e
+.word 0x28e8d637
+.word 0x9c826de7
+.word 0x2668ad90
+.word 0x32b5c2da
+.word 0x1d017552
+.word 0xa52d9ac2
+.word 0xbb3c4123
+.word 0x6f627b2a
+.word 0xd347783a
+.word 0xcd3db664
+.word 0xdd9d9a61
+.word 0xa4e2c5bd
+.word 0x72bf5dbd
+.word 0x6a7eb42d
+.word 0xcbd0b2df
+.word 0x4b72bdaf
+.word 0x3e5f7e64
+.word 0xff7b37da
+.word 0xef64a821
+.word 0xa7762d30
+.word 0xd512a2cc
+.word 0x0dbfdb16
+.word 0xc5edb0bf
+.word 0x97cc4c36
+.word 0x4b9c2174
+.word 0x473ea2ea
+.word 0xad65b060
+.word 0xe9d615f1
+.word 0xbef2b34e
+.word 0x0b2fcf70
+.word 0x95aca4d9
+.word 0x560cd3c4
+.word 0x3a0c80bf
+.word 0x0e3abf7e
+.word 0x9437f7d3
+.word 0x44cdc01f
+.word 0x55f4b088
+.word 0x80146bb0
+.word 0xe5a5dccc
+.word 0x469c6e65
+.word 0x93585587
+.word 0xa5867c09
+.word 0xc0dd99e9
+.word 0xd91b90bd
+.word 0x3a219e23
+.word 0xdd2867e5
+.word 0x133b89a0
+.word 0x757ce8e2
+.word 0xbc4613c6
+.word 0xe63c167d
+.word 0x58e98746
+.word 0xadb69681
+.word 0xb2f55c5f
+.word 0x0c2162a6
+.word 0xc016ae02
+.word 0xd63e481f
+.word 0x23c36264
+.word 0x51f4fff5
+.word 0x6eebdaed
+.word 0xf008f27e
+.word 0xf50d0bd6
+.word 0x2ee720f9
+.word 0x6535749b
+.word 0x1f6e9e6e
+.word 0x0d993272
+.word 0x36cc03c2
+.word 0xef859ca1
+.word 0xe7bc8dfb
+.word 0x3320ccf4
+.word 0x9f8d282b
+.word 0xa32586c6
+.word 0x7291d139
+.word 0xd8c14cd7
+.word 0x170c1005
+.word 0x45c334f1
+.word 0x1d776b79
+.word 0xe902699d
+.word 0xcc5d298a
+.word 0x736481ea
+.word 0x16b1eb4d
+.word 0xda5d1d72
+.word 0xc7bf8f64
+.word 0xde777e20
+.word 0xf138d040
+.word 0xaa133ff0
+.word 0x7dae7a8e
+.word 0xcd38099a
+.word 0x2351b1de
+.word 0xd6a150b9
+.word 0x4e9dcf76
+.word 0x707393e0
+.word 0xdf775068
+.word 0x01ad2896
+.word 0x566b6b46
+.word 0xd0598613
+.word 0x66e6d40a
+.word 0xe7422d6c
+.word 0xb7755176
+.word 0x3a62b130
+.word 0x7e272665
+.word 0x5ad23043
+.word 0xa9672e40
+.word 0xb66a5ad7
+.word 0x80871131
+.word 0x1351d490
+.word 0xdc6c5262
+.word 0x2dd2e5d7
+.word 0xa2116bdf
+.word 0xd2f22abc
+.word 0x754bea6f
+.word 0x0cd55ee0
+.word 0x8c9b9c09
+.word 0x1948f612
+.word 0x2c00e7c1
+.word 0x3526c26f
+.word 0x2bf063af
+.word 0x93d01dc9
+.word 0xc00134f0
+.word 0x7103127d
+.word 0xf3e05f1d
+.word 0x129c63cc
+.word 0x54644cf3
+.word 0x529c204d
+.word 0x89ac1a11
+.word 0xab5afbf6
+.word 0x46af7dfb
+.word 0x6cf76b08
+.word 0x61b269ca
+.word 0x57236053
+.word 0x0e72b69f
+.word 0xbf69b94e
+.word 0x07276a3e
+.word 0x6c10ce6e
+.word 0x39cd9552
+.word 0x6b253031
+.word 0xb4444b40
+.word 0xcc3ccc18
+.word 0xde71bd49
+.word 0xa00ab7b0
+.word 0x48ad3d48
+.word 0x0285a58f
+.word 0x2620e371
+.word 0xe27c36cb
+.word 0x617be605
+.word 0x61038c08
+.word 0x5a62daa0
+.word 0x55ff4f45
+.word 0x315e2bdd
+.word 0x47dfacff
+.word 0x787ebb38
+.word 0x74c96c39
+.word 0x0f668ceb
+.word 0x1c9a0a70
+.word 0x06a768db
+.word 0x77ec797c
+.word 0xa581cb0e
+.word 0xe17c66b1
+.word 0x66505dc7
+.word 0x9b1468b6
+.word 0xc920f0c6
+.word 0x8913f777
+.word 0x8a25ab24
+.word 0x2615b699
+.word 0xae89502f
+.word 0xba234214
+.word 0x4d888de5
+.word 0xa94f0851
+.word 0x3579864c
+.word 0x1bc30746
+.word 0x54a97b22
+.word 0x8c07a772
+.word 0x6358890b
+.word 0x403d38e3
+.word 0xf6d06dc6
+.word 0xb328d3ef
+.word 0x47df309f
+.word 0x122b7fb7
+.word 0xb71a3590
+.word 0xec16678e
+.word 0xb8329e29
+.word 0xaf77221f
+.word 0xf7af0a21
+.word 0xb1f19f3a
+.word 0x1f872bc5
+.word 0x78b0d549
+.word 0x6534dc39
+.word 0x93fd8b5d
+.word 0x285871c0
+.word 0xa09ac71b
+.word 0xb4827d52
+.word 0x45b69757
+.word 0x9fca284d
+.word 0x582194b3
+.word 0xac6da850
+.word 0x77cb4e9e
+.word 0xf5cb288f
+.word 0x772aa1f7
+.word 0x0ae2fea2
+.word 0x11858526
+.word 0xb0a03ca7
+.word 0x17f5000f
+.word 0xc39e7709
+.word 0x7eb5e3e8
+.word 0x586ee2d9
+.word 0x6893b8db
+.word 0xd7fc418e
+.word 0x8a1fbc71
+.word 0x6ac422d8
+.word 0x7898ca39
+.word 0x9435242e
+.word 0x747d5002
+.word 0xb5b79655
+.word 0x6891e3e0
+.word 0x48c2e861
+.word 0x1eb92e19
+.word 0x74588b9b
+.word 0x2e8b86e4
+.word 0x320f953c
+.word 0x2c6ec6ad
+.word 0x5b4a5e4f
+.word 0xe8efc064
+.word 0x82f6baaf
+.word 0x46df9b08
+.word 0x79524a22
+.word 0x755adb38
+.word 0x0d5644f1
+.word 0xcef6a995
+.word 0x81e88114
+.word 0xfda99862
+.word 0xa219883f
+.word 0x3e72380c
+.word 0xfb8b7750
+.word 0x1c7a3527
+.word 0x2a78a288
+.word 0x24fdd14f
+.word 0x27cef36b
+.word 0x223d2864
+.word 0xe695e439
+.word 0x24b83256
+.word 0x7cd1f75d
+.word 0x24daebb7
+.word 0x4fca8841
+.word 0x17427d40
+.word 0x5e5d8a89
+.word 0x4835f7da
+.word 0xb9e36731
+.word 0xfd855af5
+.word 0x30ceeb40
+.word 0x773c2b11
+.word 0x9e0a554b
+.word 0xfc9e477f
+.word 0x10b73187
+.word 0xa7cfe009
+.word 0x67578bb6
+.word 0x8084b9f7
+.word 0xb36bb530
+.word 0xb1d53db4
+.word 0x62e39b62
+.word 0xd06b7ebc
+.word 0x94a01fa1
+.word 0x3b33fad4
+.word 0x31b8ec46
+.word 0x32f060b4
+.word 0xcfda5c05
+.word 0xdcdf7ab2
+.word 0x297c4f5d
+.word 0x974e2973
+.word 0x1321df54
+.word 0x0ffdb555
+.word 0xae426d3a
+.word 0x8e6fcffa
+.word 0x6df4d121
+.word 0x6f660cbd
+.word 0x743d0dd5
+.word 0x608776df
+.word 0x48e17015
+.word 0xef4e942c
+.word 0x11eab062
+.word 0x9716bbc5
+.word 0x2d4bec51
+.word 0x5d3ff847
+.word 0x0af00915
+.word 0x24bce304
+.word 0x9c5f9bf2
+.word 0x0829fcdf
+.word 0x6a6d1c7a
+.word 0x9ca357f5
+.word 0x92300676
+.word 0x1a3a855f
+.word 0x6bef22cb
+.word 0x538fe695
+.word 0xcda54f08
+.word 0xdd84e287
+.word 0x97ac18e3
+.word 0xc8d3e192
+.word 0x69fb4c83
+.word 0xfa5e36f2
+.word 0xb77fd772
+.word 0xe4005c85
+.word 0x2a030336
+.word 0xb1d165ea
+.word 0xab5510c2
+.word 0xb1ef8237
+.word 0xe4d089aa
+.word 0x3a58341f
+.word 0x1e8c84fa
+.word 0x8f9a2635
+.word 0x38c3bbde
+.word 0xf7f7e20f
+.word 0xe981300a
+.word 0x7b197b29
+.word 0xceae0649
+.word 0x9d3b42c6
+.word 0xe9d79655
+.word 0x8d115257
+.word 0x34536b22
+.word 0xfdf1d00a
+.word 0x441e6e8a
+.word 0x1d047721
+.word 0xc773dac0
+.word 0xa6f74de3
+.word 0xdd60eca0
+.word 0x3893e9d4
+.word 0xec581389
+.word 0xd46ceb49
+.word 0xa4763863
+.word 0x0407b50c
+.word 0xc3cc7ccf
+.word 0x5f5ed7db
+.word 0x22f8e56e
+.word 0x53cbdc95
+.word 0xf28ee7b7
+.word 0x50bcc0bf
+.word 0x76b9f0ad
+.word 0xe6d52050
+.word 0xb626ec83
+.word 0x5f344ef1
+.word 0x555c4d1b
+.word 0x8c4b17e6
+.word 0x8996e123
+.word 0xb996d8c5
+.word 0xa5080bf0
+.word 0x2eb609f5
+.word 0xdfb5d95d
+.word 0xcd103592
+.word 0x803a0e35
+.word 0x253186da
+.word 0x73f02bf6
+.word 0xdcd902c0
+.word 0x45690da0
+.word 0x51f4a22b
+.word 0xb11b887f
+.word 0xbda28f9e
+.word 0xd4e6cdad
+.word 0x65372f51
+.word 0xbb950104
+.word 0x3acef72e
+.word 0x0cb4a28d
+.word 0xb08ebfa8
+.word 0x3c88b063
+.word 0xe0979b02
+.word 0x533e3fcb
+.word 0x5722874f
+.word 0xd881cce2
+.word 0x071b42df
+.word 0xf8527a18
+.word 0x542a003c
+.word 0x0a4905f1
+.word 0x55f4e065
+.word 0x1fd94915
+.word 0x407ec6a7
+.word 0x80693d02
+.word 0x8f98bbe1
+.word 0x307a5cd5
+.word 0xff7a4fc5
+.word 0x251d7344
+.word 0x1b457f21
+.word 0x449ef381
+.word 0x000454dd
+.word 0xe0abbaa4
+.word 0x27d4a0f4
+.word 0x041d624d
+.word 0x9ece8c42
+.word 0x57020149
+.word 0x1e8fee8c
+.word 0x7809ea5c
+.word 0x2f01d386
+.word 0x13fd17b7
+.word 0x81ec7ae3
+.word 0x3d22fdb3
+.word 0x5874fffb
+.word 0x7e6946e4
+.word 0xfe35b50e
+.word 0x9b93fb47
+.word 0x91891d3e
+.word 0x4d5bca9d
+.word 0x75fe13a0
+.word 0x44028408
+.word 0xd8c3df10
+.word 0xee13119f
+.word 0xd61b9e79
+.word 0x6942adc2
+.word 0xb80f4350
+.word 0x4b9fd998
+.word 0xcac9e86f
+.word 0xf36cfc4e
+.word 0x2c3e7a1d
+.word 0x15b7d0b7
+.word 0xfe54cfa3
+.word 0x926ee37e
+.word 0xc9080411
+.word 0xd8eea06a
+.word 0xcdcf7133
+.word 0x1a6f1511
+.word 0x4020def8
+.word 0x5ea62dae
+.word 0xdf46ca76
+.word 0xbb3817aa
+.word 0x37c1b051
+.word 0x23a66206
+.word 0xcbf5d766
+.word 0xe0076287
+.word 0x05c6587f
+.word 0x545e6e27
+.word 0x1c92ce24
+.word 0x6e1e2ade
+.word 0x044eb79b
+.word 0x631a6490
+.word 0x2b754eb9
+.word 0x0e52f22f
+.word 0xf84ba892
+.word 0x26c6a12b
+.word 0xed5f1222
+.word 0xb9d1355d
+.word 0x58cd606d
+.word 0x6070691a
+.word 0x5f71c795
+.word 0x46721126
+.word 0x930b2770
+.word 0x2234fcb0
+.word 0x97051b60
+.word 0x7e02bd48
+.word 0x302d69ef
+.word 0xf4ea7a2d
+.word 0x49b536a5
+.word 0xa0ba319a
+.word 0xb8458c44
+.word 0xbce9aa58
+.word 0x9458173a
+.word 0x759d17f0
+.word 0x6cc8bdfa
+.word 0xbd0c85ac
+.word 0x100243c3
+.word 0x903e17e3
+.word 0xd6c72e7d
+.word 0x73ecb685
+.word 0x7ba4f00a
+.word 0xb0cad2e4
+.word 0xc89494f7
+.word 0x53676717
+.word 0x9a029682
+.word 0xd0a8588a
+.word 0x9db5ed31
+.word 0x35b05ca9
+.word 0xfef83728
+.word 0x57d98375
+.word 0xa63ce2b2
+.word 0x0da3dae6
+.word 0xae530779
+.word 0x8df9e526
+.word 0xe83a7c1b
+.word 0x3b162257
+.word 0x05859ad9
+.word 0x5475799c
+.word 0x6ded20ad
+.word 0xaf2faf59
+.word 0x4f2ea3f6
+.word 0xc5516ada
+.word 0xda10714d
+.word 0x084fd2f0
+.word 0xfc6a4d59
+.word 0x10a6ab5b
+.word 0x428b75d0
+.word 0x150f683e
+.word 0xcce1c6ba
+.word 0xf3dd2476
+.word 0x44a83093
+.word 0x9179b83a
+.word 0xf6f9128f
+.word 0xc522613e
+.word 0x424a5eee
+.word 0x76236b07
+.word 0xeab1c273
+.word 0xdf4d1ad2
+.word 0x7bce7078
+.word 0x949f858d
+.word 0x1226c48b
+.word 0x654cd500
+.word 0xce65a6fc
+.word 0x0a17fcb8
+.word 0x329cd0b5
+.word 0x90a3ecf4
+.word 0x04c12532
+.word 0x2df83d4b
+.word 0xc0d2e32b
+.word 0x2faa9955
+.word 0x7f028bf1
+.word 0xefd37515
+.word 0x86b834f0
+.word 0xb033d832
+.word 0x10ce00c9
+.word 0x86fe7827
+.word 0x87e903ec
+.word 0x7b989787
+.word 0x7ac343db
+.word 0x110425ec
+.word 0x9d8f7f84
+.word 0x59535dda
+.word 0xb40cb165
+.word 0x41549928
+.word 0xe96b5dd7
+.word 0x766d90b3
+.word 0xd5266d7c
+.word 0x8593a104
+.word 0x4851c73f
+.word 0x6f79bc39
+.word 0x47d54bcb
+.word 0x87be85b8
+.word 0x5cdac5e2
+.word 0x446bcb48
+.word 0xff8ba638
+.word 0xf8047cc1
+.word 0x82b86547
+.word 0x90a7b23e
+.word 0xd2324c6d
+.word 0xa1d8d2d6
+.word 0x6a393723
+.word 0x80d44165
+.word 0xcd1286dc
+.word 0x10997025
+.word 0x693bb1d6
+.word 0x1542ea1b
+.word 0x9055202b
+.word 0x06ce35dd
+.word 0x70806c6a
+.word 0x21e33ef1
+.word 0x57213df1
+.word 0xf988cd3d
+.word 0x3bdefc02
+.word 0x5f6a7cbd
+.word 0xcda6a2b1
+.word 0x34eb97db
+.word 0x3a02395d
+.word 0x6b74e740
+.word 0x9d1b50ec
+.word 0x34c28626
+.word 0x418de14f
+.word 0x0ff1358c
+.word 0x44bcd264
+.word 0x63ede48e
+.word 0x98052ee6
+.word 0x4b92ede1
+.word 0x86c14ac0
+.word 0xc8e97b80
+.word 0x47c7c1fd
+.word 0xb7cf04c2
+.word 0xc2301784
+.word 0xecc854f4
+.word 0xbd7398bb
+.word 0xa3349568
+.word 0xa339931d
+.word 0x6191fe16
+.word 0xe4e5007d
+.word 0x3085cbda
+.word 0x5c850f38
+.word 0x20393a21
+.word 0x827c9d91
+.word 0xe716f5d7
+.word 0xa49abd17
+.word 0x0421cf35
+.word 0xe1a54942
+.word 0x0e40b4c5
+.word 0x31cd424e
+.word 0x7aaaf2cb
+.word 0x05ae957b
+.word 0xcaec583e
+.word 0xafabe6b8
+.word 0xf6d79ff8
+.word 0xa58456f0
+.word 0x6de5dcc8
+.word 0x3b045a8f
+.word 0x51505572
+.word 0xa0d2936a
+.word 0xd52d1b57
+.word 0x2fd9764c
+.word 0x86b2dccf
+.word 0xa659282e
+.word 0x3b2e8e39
+.word 0xb57d66e3
+.word 0x47ccd732
+.word 0x58c98b58
+.word 0x34a14709
+.word 0xf35cfdf1
+.word 0x0a444318
+.word 0x4ebb0345
+.word 0x9cd05690
+.word 0x81afbe02
+.word 0x392218c4
+.word 0x817eb0c3
+.word 0x78c92e39
+.word 0x8bd4417f
+.word 0x71b76c0c
+.word 0x2a7bf8f9
+.word 0xb2aa4c78
+.word 0x5441002e
+.word 0xce5b5126
+.word 0x55c8ddf6
+.word 0xddf0eb80
+.word 0x3f5a5d62
+.word 0xa5a205c1
+.word 0xf8b84e63
+.word 0x4cc5031c
+.word 0xce1a8e9c
+.word 0x8d180fe9
+.word 0x00ea90da
+.word 0x9727a840
+.word 0x60385965
+.word 0x11d0ebc3
+.word 0xcdb8f2ec
+.word 0xb268cf61
+.word 0xefe82635
+.word 0x21be16eb
+.word 0x5cd2fa6b
+.word 0x932a7333
+.word 0x585b79df
+.word 0x201e70be
+.word 0x5ea63bc3
+.word 0x6eae1b88
+.word 0x7e2f2f9a
+.word 0x7102806b
+.word 0x6b980b6d
+.word 0x80149d57
+.word 0xaf3744be
+.word 0x3fa100cd
+.word 0x7b108a58
+.word 0xd7ec2a2d
+.word 0xc76e4370
+.word 0xc8f18c32
+.word 0xed53c199
+.word 0x7cc474ab
+.word 0xd6680900
+.word 0xca638ad3
+.word 0x5b1703ab
+.word 0xc3e8eab7
+.word 0x7c229e59
+.word 0x90bfc1fb
+.word 0x28f51b36
+.word 0xbc8d83ae
+.word 0x550e8523
+.word 0x6e141b92
+.word 0x8689f3b6
+.word 0xc2c67028
+.word 0xfa0b8ab2
+.word 0xde387530
+.word 0xaa9c2580
+.word 0x4abcac10
+.word 0x8ae1e7d7
+.word 0x9feb693f
+.word 0x5a40760f
+.word 0xe877a9cd
+.word 0x4fa53049
+.word 0x869b13bc
+.word 0xf930e18c
+.word 0x365b927c
+.word 0x6c3af20b
+.word 0xeb7e0e12
+.word 0xef4caa02
+.word 0x71bed28e
+.word 0xb2fc1922
+.word 0x92142c89
+.word 0x163a8ca8
+.word 0xea2d076f
+.word 0xe01caf46
+.word 0xea708124
+.word 0x36d1e364
+.word 0x8bc0df5d
+.word 0xd1e3ba3f
+.word 0xdbcf9264
+.word 0xdb4e0dbf
+.word 0x0d81f7ae
+.word 0xaeb0cfbf
+.word 0x582cfadf
+.word 0x23f68ac6
+.word 0x816d4e57
+.word 0x1466e071
+.word 0x4db1bbd9
+.word 0x6ebb543d
+.word 0x6666d972
+.word 0x52ade238
+.word 0x7c2e8729
+.word 0x81fc12a6
+.word 0x26a49bb0
+.word 0x3b61a6a0
+.word 0x55357af3
+.word 0x053cbbf8
+.word 0x85e6396f
+.word 0xe70ad007
+.word 0x3f13365c
+.word 0xe2185469
+.word 0x5e716694
+.word 0x733d8740
+.word 0xc7f211a6
+.word 0x70f2ff0c
+.word 0x7f689ea9
+.word 0xeb4fb1db
+.word 0x11d92ef1
+.word 0x70c7d3d4
+.word 0x4d34b38c
+.word 0x7f0842df
+.word 0x8ce4498a
+.word 0xb08d07e6
+.word 0x4b5dde0b
+.word 0xed7dd81f
+.word 0xf3c23755
+.word 0xc715a48c
+.word 0x9b50af48
+.word 0xcbbbc382
+.word 0x0de9a848
+.word 0x9ed43411
+.word 0x72da4cbc
+.word 0x53546bfe
+.word 0xaea83e2d
+.word 0x5fbe3ab5
+.word 0xe51c75ab
+.word 0x1b13bd09
+.word 0x4379eee6
+.word 0x79145ccc
+.word 0x23772a86
+.word 0x1df253ee
+.word 0xad380710
+.word 0x432fd9be
+.word 0x220d4e9e
+.word 0xb3d081f6
+.word 0xdba36f1e
+.word 0x9cbebbef
+.word 0x9f9ded41
+.word 0x484edad1
+.word 0xe91c28a1
+.word 0xc8db2baf
+.word 0xce6d63dd
+.word 0x89f573cc
+.word 0x3ad3d09e
+.word 0x78dd00e3
+.word 0x6282eba3
+.word 0x9f8f4383
+.word 0x241d7453
+.word 0x337f6b8d
+.word 0x8d59e9fa
+.word 0x23695e2a
+.word 0x29637cd5
+.word 0x8adf817c
+.word 0x72211a4c
+.word 0xd27fc6c7
+.word 0xfb71e0f7
+.word 0x8e57ee36
+.word 0xa4d4c963
+.word 0x6c9e5d32
+.word 0x9b27e5d8
+.word 0x6024cad4
+.word 0xdeecffc3
+.word 0x827e084c
+.word 0x3e329282
+.word 0x6b2109b7
+.word 0xd847561b
+.word 0x08089f09
+.word 0xfe3c16e0
+.word 0xbfea0527
+.word 0x80e4f017
+.word 0x47bf67c2
+.word 0x402ce98c
+.word 0x5865fba5
+.word 0xb9dd0a69
+.word 0xa16b9d4e
+.word 0x7fbf960f
+.word 0x61674c56
+.word 0x6b9bae95
+.word 0x249d2aa2
+.word 0x60671e80
+.word 0xb0a37498
+.word 0x047be3d5
+.word 0xf1c41a63
+.word 0x048a8b99
+.word 0x726976d9
+.word 0x4b0dc08f
+.word 0x893cbfaa
+.word 0x430b2d18
+.word 0x9a77c39d
+.word 0x0ad4c48d
+.word 0xe5dd59e4
+.word 0xebbb4a1e
+.word 0xdf00760d
+.word 0xb287b5df
+.word 0x230dd960
+.word 0x9ffc58b3
+.word 0x93c1feea
+.word 0xcc3f9e87
+.word 0x76241b96
+.word 0xc943a95a
+.word 0x4ef682ef
+.word 0x07eca511
+.word 0x27c97958
+.word 0xfe24937c
+.word 0x53a0b3a8
+.word 0x22b2a9fb
+.word 0x2a4ebd52
+.word 0xf40bec98
+.word 0xcefed4fe
+.word 0x6fb0d941
+.word 0x0d708515
+.word 0xcd15e722
+.word 0x00ce4770
+.word 0xbff4f20c
+.word 0x6c9a3612
+.word 0x5be84275
+.word 0x04140af2
+.word 0xa93cddcc
+.word 0xdfdf584f
+.word 0x732ea7a3
+.word 0xe04eb957
+.word 0x2f67ac43
+.word 0x5345d5c6
+.word 0x6dcb28c7
+.word 0x2f93fa10
+.word 0xfd4cbcea
+.word 0x83ed0240
+.word 0x00277522
+.word 0xa2f2262d
+.word 0x2605b9bd
+.word 0x5a5e9b9c
+.word 0xd1192448
+.word 0x56ddcbdc
+.word 0x4451f8e3
+.word 0xdc719f60
+.word 0x4355a7c0
+.word 0xf302064d
+.word 0x0892f219
+.word 0x1157251a
+.word 0xfe6b7d66
+.word 0x9dc6bf64
+.word 0x8df8aca5
+.word 0xcb1a224a
+.word 0x4be4320b
+.word 0xde870471
+.word 0x47c0492c
+.word 0xdcf8ddba
+.word 0x7f3f05ad
+.word 0xe61268b0
+.word 0xf649dae0
+.word 0xccbf8bf3
+.word 0x24d820e0
+.word 0x75b66634
+.word 0xe9830e06
+.word 0x71698724
+.word 0x358c19ab
+.word 0x7773ef7a
+.word 0x21fab22b
+.word 0x13a27011
+.word 0x96c78f69
+.word 0x02803776
+.word 0x67bb614b
+.word 0x5103ae18
+.word 0xcc2072d2
+.word 0x5c781451
+.word 0x70b97c32
+.word 0xa30f5881
+.word 0x2b024cd1
+.word 0x7a5f8a7d
+.word 0x31cb99e8
+.word 0x668cde7c
+.word 0xcec9ec2b
+.word 0xf17a0b6f
+.word 0xf3b661b9
+.word 0xcc8e9a58
+.word 0x0aa0a227
+.word 0x6d1cc14e
+.word 0x5dad485f
+.word 0x606c8d57
+.word 0x76a1def9
+.word 0xada9acdc
+.word 0x015c222d
+.word 0x976c5286
+.word 0x0e51231e
+.word 0xbfad55a7
+.word 0xef07d1f9
+.word 0xaadfd6f6
+.word 0xc64c1a74
+.word 0xfb022918
+.word 0xea34418a
+.word 0x49e3a318
+.word 0x9c8ac764
+.word 0x7b2dee15
+.word 0x84ec39c7
+.word 0x6ca9571a
+.word 0x0458ff7a
+.word 0x54da03d4
+.word 0x074f9bbc
+.word 0xe2d58570
+.word 0xc9e41e29
+.word 0x0e96ebb8
+.word 0xa4127401
+.word 0xe14991ba
+.word 0xa15369df
+.word 0xa8744264
+.word 0x7bbf3968
+.word 0x6372adff
+.word 0x5598184c
+.word 0x167773b5
+.word 0x4e554263
+.word 0x35c9eed8
+.word 0x6d9d97c2
+.word 0x5f8d057e
+.word 0x4ec738c1
+.word 0xfe04ce8e
+.word 0x3aa45ee9
+.word 0x6396d483
+.word 0xd276a897
+.word 0x5d5eb71c
+.word 0x0c96e5aa
+.word 0x90018d04
+.word 0x57bdfec0
+.word 0xcbd8b124
+.word 0x54e255c3
+.word 0x54f919d8
+.word 0x82f4cbe7
+.word 0xa0885cec
+.word 0x20bf3303
+.word 0x10591393
+.word 0xc3906d97
+.word 0x4009a8f3
+.word 0xef7eafac
+.word 0xcf89ba35
+.word 0x884e7508
+.word 0x1438d8da
+.word 0x42305d9c
+.word 0x04ca0269
+.word 0x956415c6
+.word 0x8f910ec4
+.word 0xb9d9b22d
+.word 0x5c0c0679
+.word 0xe7afb92e
+.word 0xdffbee43
+.word 0xb03d85f4
+.word 0x81125397
+.word 0xed702c7a
+.word 0x8149e447
+.word 0x00c97f4e
+.word 0xe3eac6d9
+.word 0x16c2b14e
+.word 0x5d96a7e6
+.word 0x5e1aeca2
+.word 0xdb4a6e21
+.word 0x99da0a49
+.word 0x8c283baf
+.word 0xfd2d805a
+.word 0xe32d5005
+.word 0xa4de7c3f
+.word 0x6e9c41ca
+.word 0x3a9e1e9f
+.word 0xe1ab2f10
+.word 0xb4603b21
+.word 0xe8da74f1
+.word 0x6894c994
+.word 0xf488fd0e
+.word 0x13533a7f
+.word 0x49e3fccf
+.word 0xf1bb99a9
+.word 0xc5d8ca61
+.word 0x2d82c115
+.word 0x5a415a91
+.word 0x38867bec
+.word 0xa1af7eaf
+.word 0xb101b9bc
+.word 0x9a76afe2
+.word 0x6620598f
+.word 0x10428ac7
+.word 0x54ed731b
+.word 0xed42fef0
+.word 0xbc7747c9
+.word 0x9882fd5d
+.word 0x96370941
+.word 0x652c0781
+.word 0x0508f18e
+.word 0x347b6501
+.word 0x4fb73b9d
+.word 0x039bdc72
+.word 0x5a7c6ce8
+.word 0x51678b1e
+.word 0x68de215b
+.word 0x6a0e8f69
+.word 0xc7933141
+.word 0x8614e2c7
+.word 0xe5b4ebb5
+.word 0x9091e16a
+.word 0x52c158ad
+.word 0x72e9d641
+.word 0xaec03bde
+.word 0x2682fabe
+.word 0xb5562fd8
+.word 0xf6d33f7e
+.word 0xba8ced85
+.word 0xb0243ada
+.word 0xd563ae19
+.word 0x031e9f66
+.word 0x8f0eb487
+.word 0x6292d3b7
+.word 0x2e82a6f2
+.word 0x63f282c5
+.word 0x0b5e262f
+.word 0xb1a3095c
+.word 0x192d364d
+.word 0x60357b47
+.word 0x181777fe
+.word 0xfe8e111b
+.word 0x3bfc5551
+.word 0x8be2df74
+.word 0x05243625
+.word 0x4a7d4b58
+.word 0x6948ac1c
+.word 0x04f324e4
+.word 0xe1b162d5
+.word 0xa54ca05e
+.word 0x08eb689c
+.word 0x72ac0d4b
+.word 0x1f54c3de
+.word 0x6c462a36
+.word 0xc5a1f09f
+.word 0x34ae2e32
+.word 0xd4aa79b1
+.word 0x7c8cbf6a
+.word 0x9fd528a1
+.word 0xfa3d0867
+.word 0x2c5a9d1d
+.word 0xba8ba80f
+.word 0xea92a588
+.word 0x7fa2d232
+.word 0x3af5cbe5
+.word 0xc6a6fa03
+.word 0x750ae974
+.word 0x08ee1f1b
+.word 0xe76875d1
+.word 0x246fc0a2
+.word 0xbe74a014
+.word 0x2c9c80cd
+.word 0x7430d41a
+.word 0x8553e761
+.word 0x459b9b67
+.word 0x91a909be
+.word 0xfd3c7a21
+.word 0x516eeee0
+.word 0x9c9eee79
+.word 0xf0b0b23e
+.word 0x25a2be42
+.word 0xe1bea611
+.word 0xebc5facb
+.word 0xa0df7288
+.word 0x0b8415b3
+.word 0x448211ce
+.word 0x3a4558e0
+.word 0x8360d49b
+.word 0x343ec05e
+.word 0xef51622d
+.word 0xf83011f0
+.word 0x145920c7
+.word 0xd1c0f20a
+.word 0x6cb8306b
+.word 0x84b86aef
+.word 0x734a9ece
+.word 0x5bf282a7
+.word 0x816227a4
+.word 0x96032066
+.word 0x50953cf4
+.word 0x3a9399e4
+.word 0x5ed60af1
+.word 0x2fcc2099
+.word 0xa1445ba2
+.word 0x8cf9ab5d
+.word 0xbc735c11
+.word 0xa3e41f2d
+.word 0x9f84f526
+.word 0x3aa57ee0
+.word 0x6adf61d4
+.word 0x1a903f0e
+.word 0xcc09e038
+.word 0xeacac40a
+.word 0xa9c2dcc7
+.word 0x816be42d
+.word 0x50dff78a
+.word 0x8ae29729
+.word 0xc564dd04
+.word 0x7f7eb181
+.word 0x96510993
+.word 0x1422f3c0
+.word 0x380327e0
+.word 0x8d4fab0c
+.word 0xe0261cb0
+.word 0x48164119
+.word 0x819b30c4
+.word 0x53bfc46c
+.word 0x1d1685cc
+.word 0x4a8e65d7
+.word 0xaec53865
+.word 0x5f029cca
+.word 0x733000ba
+.word 0x866a7219
+.word 0x99ac3426
+.word 0x9dfb1ff3
+.word 0xb0949152
+.word 0xe3bcd9aa
+.word 0xa4e37b70
+.word 0x90bdf937
+.word 0xe815aeea
+.word 0x71a71d81
+.word 0x88173ad3
+.word 0x14e0e7d8
+.word 0xa22561b3
+.word 0x95b51f37
+.word 0xeddccf53
+.word 0x11fe014b
+.word 0x3dadbf8c
+.word 0xc24b4278
+.word 0xc9169eb9
+.word 0xac0e2efc
+.word 0x3c45f3a7
+.word 0xec4f4b61
+.word 0x8e400044
+.word 0xd7c1d458
+.word 0xd38b5dc9
+.word 0xa9ea408c
+.word 0x8218e6d5
+.word 0xa8d71aef
+.word 0x1f9eeb72
+.word 0xc006ef8a
+.word 0xee494e28
+.word 0x9c75c8d3
+.word 0xa55ecea3
+.word 0xbe528f5f
+.word 0xaa528723
+.word 0x23b136c8
+.word 0xd645f51c
+.word 0xca84c36e
+.word 0x3ce86caf
+.word 0x8deacdfd
+.word 0x1b0b2c51
+.word 0x3f248aff
+.word 0x5f08a2d9
+.word 0x7e30ff1c
+.word 0xc82f6bf7
+.word 0xf161b870
+.word 0xc1bd818b
+.word 0x5146080c
+.word 0x52d36a1c
+.word 0x1831dc99
+.word 0x8c4809bf
+.word 0x618d6618
+.word 0x903e5800
+.word 0x6b5078d4
+.word 0xa930bd81
+.word 0xc2443f9f
+.word 0x6b348ff4
+.word 0x7e8b9e05
+.word 0xacf91bff
+.word 0x327b272c
+.word 0xa148154b
+.word 0x1bbe0011
+.word 0x4e2da5c3
+.word 0x714b4e67
+.word 0x7eaa3af2
+.word 0x63665fbe
+.word 0xdef5abd0
+.word 0x45b4dfe9
+.word 0xce7f3c58
+.word 0xb9fb1433
+.word 0x353156f7
+.word 0x483734d0
+.word 0xb76f3d0d
+.word 0x91c214e2
+.word 0x9b15002e
+.word 0xdc6a1755
+.word 0x27db6118
+.word 0x2e499bea
+.word 0xfd7ecddf
+.word 0x4f2bd4e0
+.word 0x9cf5480d
+.word 0x48416686
+.word 0x2035b963
+.word 0xd07cf5ef
+.word 0xc1318c77
+.word 0x4ab68185
+.word 0x180d55b1
+.word 0xc4c392dd
+.word 0x46a1d1a6
+.word 0xc342b862
+.word 0x3f25173a
+.word 0xfd5c00cc
+.word 0x2336ad46
+.word 0x55889da4
+.word 0x39138f32
+.word 0x9fb25bab
+.word 0xc89f72c9
+.word 0x201eb110
+.word 0x8b26df23
+.word 0xee68a529
+.word 0x65199bd7
+.word 0xb8dde8d2
+.word 0xb6c8940b
+.word 0x4b9be54d
+.word 0xe3d41e86
+.word 0xcd20e807
+.word 0x770a9180
+.word 0x3544a9ab
+.word 0x1dc317d2
+.word 0xdc326192
+.word 0x91e16233
+.word 0x850acd17
+.word 0x6a812535
+.word 0x02687050
+.word 0x2e4e54c9
+.word 0x107b8dd3
+.word 0xe435f6a1
+.word 0xefcf4f5e
+.word 0x6a6c1f89
+.word 0x9f9406ac
+.word 0x97c8aff0
+.word 0xf93bda3b
+.word 0xfa90233a
+.word 0x2209ef2b
+.word 0xef99fa0b
+.word 0x9d952c13
+.word 0x5bdf034c
+.word 0xc9e8488e
+.word 0x09c82cb0
+.word 0xcfd5ed42
+.word 0xe024c92f
+.word 0x15e80edd
+.word 0x44632809
+.word 0xfbb3fa2b
+.word 0xf1760573
+.word 0x9e29ad75
+.word 0xf52ef712
+.word 0x1541a163
+.word 0x697efb21
+.word 0xd9e4ede4
+.word 0x0caa1761
+.word 0x547f8888
+.word 0x25873402
+.word 0x96fead7e
+.word 0xfcc8734d
+.word 0x7e13db12
+.word 0xd4024d10
+.word 0x10c59df5
+.word 0x6bc91166
+.word 0xf74e5832
+.word 0xf6b08d3d
+.word 0x3f66fecc
+.word 0x29517ee1
+.word 0x44a97053
+.word 0xef2ae134
+.word 0x1eabd454
+.word 0x42ced739
+.word 0x5070018f
+.word 0x72c56c0d
+.word 0xc87a0ddf
+.word 0x841e244f
+.word 0xcb513628
+.word 0x7a36c7b1
+.word 0xd33ffaf8
+.word 0x5a5eef12
+.word 0x9a65d4b1
+.word 0x5fb2efa2
+.word 0x69a9d7fe
+.word 0x2df9bc19
+.word 0xdbcd8381
+.word 0x59545e4d
+.word 0xf0c8bda1
+.word 0xa7667012
+.word 0x1b2d499b
+.word 0xe4adfa33
+.word 0xd8b1fac8
+.word 0x989bfdb7
+.word 0x4470b195
+.word 0xd9643e3c
+.word 0x498647b8
+.word 0xe876073c
+.word 0xe041bfb8
+.word 0x133252a3
+.word 0x577f0fae
+.word 0xfb785556
+.word 0xcd2a0699
+.word 0x3bcde3bc
+.word 0x6b944293
+.word 0xe61f9688
+.word 0x03ba25d9
+.word 0x2654d9a5
+.word 0xb58556d3
+.word 0x633ad7bd
+.word 0xa5945e0d
+.word 0x6a4fe974
+.word 0x7ff99467
+.word 0xa9994176
+.word 0xbc1c848a
+.word 0x1d2b5cd8
+.word 0x95c415dd
+.word 0xf9f5df48
+.word 0xf5567657
+.word 0x160f47fa
+.word 0x86475c7b
+.word 0x3391a53e
+.word 0xfd9270ea
+.word 0x43e31ab9
+.word 0xe7ac6d7a
+.word 0x67095749
+.word 0xeba4bd57
+.word 0x15797151
+.word 0x86f64eb0
+.word 0x98f079a1
+.word 0x69cd886b
+.word 0x4ad3eb96
+.word 0xd2f2389e
+.word 0x17e739bf
+.word 0xd60d288e
+.word 0xe2aa330a
+.word 0xd2db92f6
+.word 0xa4237cbc
+.word 0x68f0a2e0
+.word 0x788e479e
+.word 0x3eabef0e
+.word 0x43a552bc
+.word 0x860d84c1
+.word 0x0da41a35
+.word 0x0026e039
+.word 0xab335155
+.word 0xf6aca060
+.word 0xb52001c9
+.word 0x15492805
+.word 0x1ccb423d
+.word 0x0fce24cc
+.word 0x97c774b9
+.word 0xc04f16ef
+.word 0x75423eea
+.word 0x0cdd7e75
+.word 0xf0e1bb8b
+.word 0xc7c4a5f6
+.word 0x2cd07209
+.word 0xdc911241
+.word 0xec74ef3d
+.word 0x4c82706f
+.word 0x8f29cf93
+.word 0x01850278
+.word 0x59896384
+.word 0x338d7790
+.word 0xf00d884e
+.word 0xbb2a582b
+.word 0x40112fca
+.word 0xbdd0a171
+.word 0x1f9e69c2
+.word 0x1068b1d9
+.word 0x69bfeb97
+.word 0xd34125b4
+.word 0xecf08dce
+.word 0x4cea4c42
+.word 0x48afb867
+.word 0x70f0fe9b
+.word 0x640c7725
+.word 0xb1825b3e
+.word 0x7916da60
+.word 0x3e6d915e
+.word 0x4704dede
+.word 0x8eaa5a23
+.word 0x1349effd
+.word 0x2cbee38d
+.word 0x3096aec8
+.word 0x326daf3e
+.word 0x0aa1f303
+.word 0x86d604ec
+.word 0xa0d3af8b
+.word 0x4b24865e
+.word 0xf0508d0c
+.word 0x4d824bd5
+.word 0x7f403d64
+.word 0xa4cc48c6
+.word 0xa3482666
+.word 0xef11b335
+.word 0x0bdcdd7b
+.word 0x15250dd0
+.word 0x117cb967
+.word 0x1a80d8d1
+.word 0x5f23590d
+.word 0x8bb6ae83
+.word 0xc4c1c6a2
+.word 0xdbc59aac
+.word 0x97cfd726
+.word 0x8880523a
+.word 0x72a667aa
+.word 0x36da1e31
+.word 0x373d0383
+.word 0x5b2ea4c4
+.word 0x1e5e3f25
+.word 0xa012e6b9
+.word 0x3f27ccdf
+.word 0xf7283574
+.word 0x54d3b35c
+.word 0xc214adb6
+.word 0x43470234
+.word 0x3a463a1e
+.word 0x7015dceb
+.word 0x89324472
+.word 0xf7f48f44
+.word 0x2b970a49
+.word 0x06d49231
+.word 0x156e5111
+.word 0xdb4bbd73
+.word 0x11a1f875
+.word 0xf04b7932
+.word 0x2ea53e0a
+.word 0xe966c084
+.word 0x58bea819
+.word 0xe8755def
+.word 0x74a5fefb
+.word 0x5e58b45f
+.word 0x02a859dd
+.word 0x66291b07
+.word 0x743e09ab
+.word 0xee92d6dd
+.word 0x8470a498
+.word 0xd8a5604a
+.word 0x72e8b909
+.word 0xa061b5de
+.word 0x9b54e38d
+.word 0x1f74ad26
+.word 0x96b41350
+.word 0xb653d464
+.word 0x6a9ac0ab
+.word 0x2ed6d0e0
+.word 0x2a20a7dc
+.word 0x6b752183
+.word 0xf479b740
+.word 0x7682f7b8
+.word 0x3d4cd38b
+.word 0x7c07f450
+.word 0xbe57265d
+.word 0xd9c8ad1b
+.word 0x1f9c03de
+.word 0x76f912d0
+.word 0x0d4e3b24
+.word 0x4f5916f9
+.word 0x75892e85
+.word 0x2f3bc8d1
+.word 0x2134d2bc
+.word 0xcb78961e
+.word 0x36d80ab5
+.word 0xc1f423d0
+.word 0x23a9753d
+.word 0x2a3fbd62
+.word 0x316961eb
+.word 0xcf9840e0
+.word 0x16cc23dd
+.word 0x36d8c06d
+.word 0x9c719cab
+.word 0x716a6bbc
+.word 0xe1cc4fbd
+.word 0x4a8588af
+.word 0x0bf4c522
+.word 0xb4ee5e78
+.word 0x68053df0
+.word 0x86b4eeeb
+.word 0x30ab072a
+.word 0xef5bc771
+.word 0xc7a4e48f
+.word 0x3f5284b8
+.word 0x5cf319a7
+.word 0x1fb7b7c3
+.word 0xf95cee11
+.word 0x22400487
+.word 0x67a212ad
+.word 0x357d9f05
+.word 0x7b65cf89
+.word 0x9b43f687
+.word 0x41823d95
+.word 0x951b37e4
+.word 0xab42c541
+.word 0x3b880eb2
+.word 0xfaf78854
+.word 0x62503c1b
+.word 0x90f81ee6
+.word 0xf4d13c88
+.word 0x4ed2cf04
+.word 0x0081012f
+.word 0x3ee5a218
+.word 0x19436696
+.word 0x164a697e
+.word 0xe8650de0
+.word 0xa4950e55
+.word 0x2be6bc8f
+.word 0x62bb3988
+.word 0x5f56fc03
+.word 0x1d98ce88
+.word 0x43796c81
+.word 0x04bdc0ff
+.word 0xed209acd
+.word 0x73f2a4ce
+.word 0x86bd87af
+.word 0xd4ffd5e2
+.word 0x9036e1f0
+.word 0x78bb1a1e
+.word 0xb8bef034
+.word 0x873f7d2c
+.word 0x5447d871
+.word 0xc3074b38
+.word 0x175a5547
+.word 0x947f5169
+.word 0x2964d01b
+.word 0x829b4dfc
+.word 0x2e077db7
+.word 0x8634b89a
+.word 0x594ae79f
+.word 0xafb0da11
+.word 0x51cdf186
+.word 0x1ac4e292
+.word 0x9a6c3cfd
+.word 0x68b26553
+.word 0xba7a5d22
+.word 0xa3159e96
+.word 0x040cad97
+.word 0x96cb7d03
+.word 0x04df011f
+.word 0xe8894931
+.word 0x92918b7f
+.word 0x94265d6d
+.word 0x5c93f0b0
+.word 0x0cdb6ae8
+.word 0x4e48d9a3
+.word 0x4bc230b3
+.word 0x2c8ec2a5
+.word 0xf9cf9040
+.word 0x42004c0c
+.word 0x823a5b1b
+.word 0x3cac1567
+.word 0xd8049161
+.word 0x1a8f6882
+.word 0xf9242073
+.word 0x2a6406da
+.word 0x420a69f4
+.word 0x713d62e5
+.word 0x4ffe10f9
+.word 0x161b9a90
+.word 0xcab459ae
+.word 0x0d9b66b4
+.word 0x496f4a75
+.word 0x03603f2b
+.word 0x0cf0462a
+.word 0x602b63ee
+.word 0x8fc15bf3
+.word 0x00a192ec
+.word 0x7248e8e6
+.word 0x5936a4fa
+.word 0xf9e55fe0
+.word 0xf956da5e
+.word 0x981bd0e1
+.word 0xb6002686
+.word 0x0a58b03c
+.word 0x8a85bfa0
+.word 0xe5faac64
+.word 0xde71a968
+.word 0xb6648a85
+.word 0xc3d47f7e
+.word 0xf10e8ead
+.word 0x97bfc90c
+.word 0x2c9bfdae
+.word 0xae78a34a
+.word 0x3de48acb
+.word 0xe3c23c2a
+.word 0x3547756d
+.word 0xdca26995
+.word 0xa73d86dd
+.word 0xa7032c4c
+.word 0x36be27b7
+.word 0x77d19f36
+.word 0x85b50d1a
+.word 0xfd351ec7
+.word 0xb2cf0a46
+.word 0xbf05a842
+.word 0xfdaa00cc
+.word 0x6eadfc97
+.word 0xa0da085f
+.word 0x8dc39394
+.word 0x6e808b1a
+.word 0x517f4b3d
+.word 0x5a2d0649
+.word 0x1603cf73
+.word 0xf147f8ff
+.word 0x403a40aa
+.word 0xd852efa4
+.word 0x5970d7d5
+.word 0x53b016a9
+.word 0x0a5f4692
+.word 0x7eb554de
+.word 0x35b7f4d3
+.word 0x5ecd8282
+.word 0xc4e15c6c
+.word 0xf0242619
+.word 0x0f7f3d8d
+.word 0xb6f6c530
+.word 0xe4713e80
+.word 0xda101668
+.word 0xd0d25096
+.word 0xc6c0859b
+.word 0x7f10a058
+.word 0x0c72a054
+.word 0x3306dbbf
+.word 0xcc5f9c16
+.word 0x6419448b
+.word 0x7991d249
+.word 0xb1f3aad1
+.word 0x679ef1b5
+.word 0x4391fe5f
+.word 0x497843d8
+.word 0xec684bda
+.word 0x74d70a2a
+.word 0xbeff989c
+.word 0xaee7af6d
+.word 0x58ddc702
+.word 0x67288065
+.word 0x8085b92e
+.word 0x84b2109d
+.word 0x982315b3
+.word 0x35f5b05d
+.word 0x7106f23b
+.word 0xbeb723ee
+.word 0x46ad687d
+.word 0x6eca604a
+.word 0xc4fd011b
+.word 0xa74b6ff5
+.word 0x948a1843
+.word 0x18bb6e4e
+.word 0xacf6785e
+.word 0xbed93905
+.word 0x1de8c5e7
+.word 0x2dc43f90
+.word 0xe50b4b87
+.word 0x75ad95d8
+.word 0xcc786a1f
+.word 0x105c23f3
+.word 0xe5328686
+.word 0x97b0ecc2
+.word 0x39d0f8b6
+.word 0xb11a9c90
+.word 0x85c2c5b7
+.word 0x3b660da4
+.word 0xfde10354
+.word 0x07fd7d92
+.word 0x5390d710
+.word 0xd83bc6e9
+.word 0xe1efd28f
+.word 0x2e098e95
+.word 0xf4d3089f
+.word 0x18e2cf40
+.word 0x5a9c5f74
+.word 0xcb55ad08
+.word 0x24dceede
+.word 0x58dd28ff
+.word 0x676ac983
+.word 0x81aa9d79
+.word 0x60694252
+.word 0x40dede2e
+.word 0x74ccfbf0
+.word 0x7345812b
+.word 0xa5b3d3dc
+.word 0x1d2f3ac6
+.word 0x0991a6f2
+.word 0xc59aa322
+.word 0xa1805b8a
+.word 0xb54b02b3
+.word 0xa4a7317d
+.word 0x0f64eefb
+.word 0x23ade89e
+.word 0xeb283422
+.word 0x848a570d
+.word 0x5a7550ad
+.word 0xc08992e4
+.word 0x39172df6
+.word 0xf7bcdc27
+.word 0xb281a1b4
+.word 0x3c09c0d1
+.word 0xc12f264a
+.word 0x8299c5c0
+.word 0x4706b49a
+.word 0x2388831d
+.word 0x29b8571b
+.word 0x85042ea6
+.word 0x6e0ec5f8
+.word 0xea8935fd
+.word 0x569e1b0b
+.word 0x93ea3bfb
+.word 0xda9e9772
+.word 0xc4d796dc
+.word 0xa7aa7e04
+.word 0xe1b8a96f
+.word 0xa6b85eba
+.word 0xd48c4675
+.word 0xac8b6c81
+.word 0x355fc67b
+.word 0x9ba89bf1
+.word 0xbe5b2c5b
+.word 0xb0a5b4ff
+.word 0x6d7ba104
+.word 0x069826d9
+.word 0x9544ad87
+.word 0xd0435322
+.word 0xe28fbf7b
+.word 0x9a2f6ead
+.word 0x7d2a5eb7
+.word 0x384ef7b9
+.word 0x319f2e06
+.word 0xd06c6854
+.word 0x06f9939c
+.word 0x6ff9298b
+.word 0x49b55d88
+.word 0x66e5b22c
+.word 0xfecc41a0
+.word 0x1115eee3
+.word 0xbc26fa37
+.word 0xb9feaba1
+.word 0x0e754c7c
+.word 0x33233ae7
+.word 0x48a5bf82
+.word 0x2c5c232a
+.word 0x62fbeca0
+.word 0xce675d88
+.word 0xfb65c553
+.word 0x908d4224
+.word 0x731abb79
+.word 0x97f2bb05
+.word 0x4f25b5c9
+.word 0x8e08c663
+.word 0x4de3bd88
+.word 0x7f288966
+.word 0x6faa5bb2
+.word 0x8e1be534
+.word 0x91701f62
+.word 0x9b746dc7
+.word 0x690b59fd
+.word 0x5ab4d3ab
+.word 0x65006057
+.word 0x8666e1c8
+.word 0x0cbb6445
+.word 0xa4028e75
+.word 0xa5fb07bf
+.word 0x36c2e0b6
+.word 0xe6dfae48
+.word 0xab1cd2b6
+.word 0xd7b6a195
+.word 0x6da02457
+.word 0xf48a4211
+.word 0x41198936
+.word 0x887cf450
+.word 0x88cc8f91
+.word 0x4d97816b
+.word 0x7a1562d4
+.word 0xf34474b6
+.word 0x04e462f3
+.word 0xbd7cc332
+.word 0x27e1e540
+.word 0x89e3a7a6
+.word 0xb34bf6af
+.word 0x8437abc0
+.word 0xd4504849
+.word 0xcc50d939
+.word 0x065137c5
+.word 0x3d059b67
+.word 0xbbc2deee
+.word 0xb4949941
+.word 0x82df5f60
+.word 0x0c3d3a43
+.word 0x2e3c6a0c
+.word 0x5199bbf0
+.word 0x84450da4
+.word 0xba29a179
+.word 0x402afaac
+.word 0xa5431db3
+.word 0xa4931e31
+.word 0x5f33637e
+.word 0xdac3770f
+.word 0x3a5d4f79
+.word 0xc5fdc38c
+.word 0x3c45a67d
+.word 0xc333f694
+.word 0x732eace5
+.word 0x53bb713b
+.word 0xd5616c31
+.word 0x60340ca5
+.word 0xc88d5099
+.word 0x7eed6fee
+.word 0x108989f8
+.word 0x4d69aa29
+.word 0x38ae3000
+.word 0x221d193b
+.word 0x043657e9
+.word 0x957333ec
+.word 0x7fde6766
+.word 0xb0597b39
+.word 0x5ce63119
+.word 0x0792082a
+.word 0xdbbff454
+.word 0xbf7f0b6e
+.word 0xd6b8a916
+.word 0x6e35ac51
+.word 0x41e769af
+.word 0xeeb95efd
+.word 0x1493dca1
+.word 0x8c4daa13
+.word 0x1e214eb7
+.word 0x4d476223
+.word 0xef4b5b46
+.word 0xe1d14cdb
+.word 0x81961d24
+.word 0x1491122e
+.word 0x835be438
+.word 0xe7c50206
+.word 0xdb77d919
+.word 0x0fe9f761
+.word 0x427f1424
+.word 0x7cf9c7b1
+.word 0x0e06f3d5
+.word 0x609289ae
+.word 0x90ed8c45
+.word 0x437ac5cd
+.word 0xc2d6578c
+.word 0xf357761d
+.word 0x44165002
+.word 0x83c0ac3b
+.word 0xb74df65c
+.word 0x2a13db4c
+.word 0x857cf0df
+.word 0x922ad2b4
+.word 0xd5e582a4
+.word 0x94c334bb
+.word 0xe2206331
+.word 0xb784244a
+.word 0x230f0c91
+.word 0xc2233833
+.word 0x7e649b01
+.word 0x8ebd736c
+.word 0x7c2086fd
+.word 0x948d40c9
+.word 0x6a46138f
+.word 0x6c9d19c5
+.word 0xdcf1c764
+.word 0x33fb543b
+.word 0x5deea359
+.word 0x5e65288f
+.word 0x00d23169
+.word 0x1779bd9c
+.word 0x7737a6a9
+.word 0xfd5f172d
+.word 0x90230989
+.word 0x3f2f1089
+.word 0x0a44f8ac
+.word 0x48652f65
+.word 0xf2f1d041
+.word 0x4daa7619
+.word 0xd832f345
+.word 0x9b279241
+.word 0x187a6ed4
+.word 0xe8f31b0a
+.word 0x71d44a0d
+.word 0x0913ba07
+.word 0xe3269438
+.word 0x9e28fe68
+.word 0x175318ef
+.word 0x67692ede
+.word 0x6d346cf9
+.word 0x37a7ea8a
+.word 0x9f262511
+.word 0xdaaed3b4
+.word 0xa91aa701
+.word 0x31cecb1b
+.word 0xfa34b305
+.word 0x9e337a57
+.word 0x281da0b6
+.word 0xd9283c46
+.word 0xf0505719
+.word 0xd4706898
+.word 0xfbc2f0eb
+.word 0x88677a7c
+.word 0x0ebf50a7
+.word 0xe8eb4ac6
+.word 0xad110f77
+.word 0xfe8c5b9c
+.word 0xfdb9bd58
+.word 0xaa971af9
+.word 0x1aa2350c
+.word 0xe484fb1f
+.word 0x15b7eae4
+.word 0x6a12d89a
+.word 0x6ca0044c
+.word 0x2a14ab41
+.word 0x528470cb
+.word 0xb8ef0a88
+.word 0x266eaf56
+.word 0xad295b02
+.word 0x32fc91b8
+.word 0x248049e1
+.word 0xed834770
+.word 0x3f1bb8fa
+.word 0x0164d12c
+.word 0x9e4e8683
+.word 0x847bb887
+.word 0x90321242
+.word 0xf682b8a8
+.word 0x4a550b1f
+.word 0x8f94bbbb
+.word 0xd00b339a
+.word 0x351df2a6
+.word 0x9d2c9c8b
+.word 0x4e32c5b7
+.word 0xf299076b
+.word 0x0b529b97
+.word 0x3183aa1a
+.word 0xbc547f6c
+.word 0x16d4e8cd
+.word 0xa841268e
+.word 0x57e4bea8
+.word 0xa63d4c55
+.word 0xa43afbaf
+.word 0xb3b1ce03
+.word 0xeecdbd17
+.word 0x2b5a0769
+.word 0x0ea88c53
+.word 0x4ee970eb
+.word 0x0c2b6bb3
+.word 0x5faa88a0
+.word 0xfa73d103
+.word 0x381573e7
+.word 0x603e827c
+.word 0x09654a2f
+.word 0xb7602278
+.word 0x6b00c5b7
+.word 0x8717ba71
+.word 0xef31bd03
+.word 0x46524220
+.word 0xa060bbcf
+.word 0x3ea09180
+.word 0xeeb48fbe
+.word 0xfcc7e8ec
+.word 0x5df0d64f
+.word 0xef710879
+.word 0x2c99954f
+.word 0x0a91d92e
+.word 0x65522b11
+.word 0x500bc7f6
+.word 0x334bc974
+.word 0x50523153
+.word 0x387307f3
+.word 0x5783e5c0
+.word 0xb54ae8a7
+.word 0x3a783e29
+.word 0x93c4ddec
+.word 0xd8c11839
+.word 0x82193a0f
+.word 0x190ba377
+.word 0x3f47385e
+.word 0x1ff9ee6c
+.word 0x49040df1
+.word 0xb8d859dd
+.word 0xb20755cb
+.word 0x7401a1bb
+.word 0x0bf55a64
+.word 0x92c94776
+.word 0xf2c0aeff
+.word 0x72cf4742
+.word 0x8c986f6b
+.word 0x8cf79499
+.word 0x761fe88c
+.word 0xf26bf1c4
+.word 0x11d337e8
+.word 0x6c844337
+.word 0xefaa6319
+.word 0x19c35ee2
+.word 0xed0d2817
+.word 0x8ec3ed60
+.word 0x72b98e27
+.word 0xeac1560c
+.word 0xf7db8794
+.word 0x248927c6
+.word 0x3ae01f03
+.word 0x0fa38ae4
+.word 0x575f2547
+.word 0x8b013239
+.word 0x590f1f64
+.word 0xa671923f
+.word 0x06c851f7
+.word 0x082b7367
+.word 0x71ed1a0c
+.word 0x4fc08b87
+.word 0x6a550536
+.word 0xa33cc1b0
+.word 0x913d06f6
+.word 0x0bd84cb4
+.word 0x13b9d0b8
+.word 0x05b29add
+.word 0xc0675c66
+.word 0xf0e05794
+.word 0xd650d71b
+.word 0x730f4a74
+.word 0xc51078d1
+.word 0x94046532
+.word 0x1350fd6a
+.word 0x140b9cf7
+.word 0xc23412d7
+.word 0x848268af
+.word 0xa5577892
+.word 0x623f9a45
+.word 0x4697f379
+.word 0x37e5c378
+.word 0x80b3022b
+.word 0x7754d6c7
+.word 0x8b986b73
+.word 0x79316b08
+.word 0xbd62b19b
+.word 0x15c207a1
+.word 0xe5443e02
+.word 0x320dc64b
+.word 0x6953dc9a
+.word 0x445c61da
+.word 0x029df369
+.word 0x108eb693
+.word 0x0045cf57
+.word 0x800e637f
+.word 0x227f421b
+.word 0xa45e8708
+.word 0x91da4d59
+.word 0xe0f0036d
+.word 0x3d5e602b
+.word 0x495444d2
+.word 0xb4292238
+.word 0xca5cef39
+.word 0xd4e4273d
+.word 0xeab4585a
+.word 0xd9a4a9b9
+.word 0x02a7e31a
+.word 0x80a8ac5d
+.word 0xab08f0e2
+.word 0xea08efb7
+.word 0x774e837f
+.word 0x4ac4b81c
+.word 0x137b9364
+.word 0x333497a6
+.word 0x1ae5c2dc
+.word 0x7471ecf1
+.word 0x23c65cf3
+.word 0xd679413e
+.word 0x256b0bb7
+.word 0x9c4abe85
+.word 0x4d3bd3fb
+.word 0x4b533667
+.word 0x308c79fb
+.word 0x6c8a2657
+.word 0xc8efa8ff
+.word 0x88e71274
+.word 0x7cb96dde
+.word 0x37f11989
+.word 0x511497e1
+.word 0xd775ab9f
+.word 0x1363eff1
+.word 0xa609b8f3
+.word 0xcb82bae6
+.word 0x89d83c10
+.word 0x56178aa5
+.word 0x3b0693db
+.word 0xb0459ffd
+.word 0xa6543bc6
+.word 0x2a25726c
+.word 0x545f404b
+.word 0xd04bcc33
+.word 0x0d1cd0ae
+.word 0xe3ea3454
+.word 0x9cf3562a
+.word 0x34323b5c
+.word 0xee2d52ad
+.word 0x56c6d00b
+.word 0xa3c7f907
+.word 0x782db7b5
+.word 0x22e94908
+.word 0x58860aa5
+.word 0x261bc99e
+.word 0xb6e6dfac
+.word 0xf106dc79
+.word 0x0f13edb9
+.word 0x33646360
+.word 0x70b71028
+.word 0x92427f7d
+.word 0x6b77782a
+.word 0xac1ed0c6
+.word 0xfd9bf013
+.word 0x2043685b
+.word 0x2994000c
+.word 0x7b6be82c
+.word 0xa4fef6aa
+.word 0xc19d3bb8
+.word 0x7fe6a492
+.word 0xe2100e3e
+.word 0xfd14b90f
+.word 0xe4d68b15
+.word 0x5fee15fa
+.word 0xfc611a34
+.word 0x93524443
+.word 0xcb05764a
+.word 0xd10052b4
+.word 0x04b7b07d
+.word 0xff8a286f
+.word 0xcd5ed522
+.word 0xa836f9fc
+.word 0xb29749d0
+.word 0x5d8debee
+.word 0x8e1ac0e4
+.word 0x5e0e7a1d
+.word 0x4b8aa46a
+.word 0x6a04d1fa
+.word 0x6681ffb2
+.word 0xcfc38269
+.word 0x6ffebcf4
+.word 0x246db0a8
+.word 0xc314b19f
+.word 0xb54fa0bf
+.word 0xea07bcd7
+.word 0xa9d6feec
+.word 0x00822bac
+.word 0x1f57ae73
+.word 0xf16cbffd
+.word 0xaa4a708e
+.word 0x6d5c27db
+.word 0xe2acbdfd
+.word 0x1571b960
+.word 0xd30f8017
+.word 0x36952097
+.word 0x06b20e7e
+.word 0xd68f45c1
+.word 0xd9f8d24a
+.word 0x01ff6279
+.word 0xae40229e
+.word 0xf3b3e7c7
+.word 0xe02da9b9
+.word 0x90a68d83
+.word 0xd6d6ebdb
+.word 0xce87228f
+.word 0x85afc2e7
+.word 0xe7fe9a44
+.word 0x2d87129b
+.word 0x32b8f4bc
+.word 0x623bda32
+.word 0xde4ef48c
+.word 0x1aa1c45c
+.word 0x4f0717e9
+.word 0x7e5cb5e7
+.word 0xfa83acb9
+.word 0x83ede592
+.word 0xfaf43c9c
+.word 0x18a8592b
+.word 0x5e756a6b
+.word 0x2277f1c8
+.word 0x2c2b7529
+.word 0xdfe92440
+.word 0x571ad048
+.word 0x73234c37
+.word 0x7ca40ca9
+.word 0x06b6d642
+.word 0xfac3aff0
+.word 0x9d7e0639
+.word 0xef06a4cc
+.word 0x220566d8
+.word 0x9de5f0fc
+.word 0xc89ebfc5
+.word 0xbc964163
+.word 0x6867424e
+.word 0xcf9da334
+.word 0xe802eec4
+.word 0xafad4aab
+.word 0xc06a96a1
+.word 0x30473cbd
+.word 0x99205499
+.word 0xab99fe8c
+.word 0x33f75db3
+.word 0xb5c6feed
+.word 0x1eb38e81
+.word 0xc102ae79
+.word 0x63b825fb
+.word 0x03aa1a7c
+.word 0x5216a787
+.word 0xc555b8c8
+.word 0x62f865f2
+.word 0x833b663c
+.word 0x753fcaa0
+.word 0x0fe7c6f2
+.word 0x796f4a73
+.word 0x725efb97
+.word 0xbd3c6bb6
+.word 0x3dc4be70
+.word 0x06549ad0
+.word 0xd2d28ab6
+.word 0xb7ed75cf
+.word 0x05411ee3
+.word 0x30ae2e3f
+.word 0xce3bafbb
+.word 0x52c4e10f
+.word 0x4e9444de
+.word 0x98fa18ef
+.word 0xe38bf1ac
+.word 0xaacd1b8d
+.word 0x0743c4e8
+.word 0x6752e12a
+.word 0xfb72962d
+.word 0xa3bad325
+.word 0x987910a4
+.word 0xad25d61a
+.word 0xbb4cd1a2
+.word 0x096f3b0e
+.word 0xdbe58243
+.word 0x2f7d48a3
+.word 0x7564e60c
+.word 0x3c83e37a
+.word 0x05fcff7a
+.word 0x28ddc056
+.word 0x7a99ebb5
+.word 0xb8a9dac7
+.word 0x657e2f0a
+.word 0x6bfbd917
+.word 0xd82aa7ae
+.word 0x9cf29ef2
+.word 0xa9fd3437
+.word 0x99b57f5d
+.word 0x44acba20
+.word 0xf268978a
+.word 0x4d1e38ab
+.word 0x35aa3964
+.word 0xe80810cf
+.word 0x730e10ab
+.word 0xbf8d8497
+.word 0x7fac2c4b
+.word 0x392fd77a
+.word 0x622268f9
+.word 0x5a0988aa
+.word 0x6f3ad9a2
+.word 0x67c52592
+.word 0x0260fe6d
+.word 0x32b0120c
+.word 0xb214c27c
+.word 0x7e7309ca
+.word 0x3ebfdee9
+.word 0xc4dace7f
+.word 0x3b6bbe37
+.word 0xe34f9e71
+.word 0xfbac9258
+.word 0x8f888e9f
+.word 0x6bf3c141
+.word 0xe451711d
+.word 0xa3fd2c03
+.word 0x0fca6086
+.word 0x8bfbd0ae
+.word 0xd91a9174
+.word 0xc0cf6378
+.word 0xc9e07e95
+.word 0x45751b2c
+.word 0xe53a0b5f
+.word 0xc22c7a53
+.word 0x5cfda5fa
+.word 0xcbb11916
+.word 0x6b7a1f5a
+.word 0x37bab3b3
+.word 0x9c125336
+.word 0xcecfc562
+.word 0xc45e3590
+.word 0xccd7148e
+.word 0xf7fde30e
+.word 0xc69e9581
+.word 0xf2bf5d07
+.word 0x6df65308
+.word 0x4d6a7dca
+.word 0x5665e3d5
+.word 0x5bb5a759
+.word 0x613b096b
+.word 0x79b13904
+.word 0x1534c3ce
+.word 0x8efa146a
+.word 0x970c78d4
+.word 0x586f22b3
+.word 0x42257ac3
+.word 0xfc30f2e2
+.word 0xcada5f7e
+.word 0xcdf48e52
+.word 0xb481950f
+.word 0x132736c3
+.word 0x4b9a298c
+.word 0xb92541c2
+.word 0xc8a22b57
+.word 0x2bdfdf09
+.word 0x99106b26
+.word 0xbf3aa679
+.word 0xd52cd19c
+.word 0x1cb4fc70
+.word 0xc594e177
+.word 0x92c240a6
+.word 0xf5229ff2
+.word 0x0c28902d
+.word 0xbae7a4e3
+.word 0xf26c252f
+.word 0xd202e1c4
+.word 0x3c749a7c
+.word 0x6e19fcb4
+.word 0xf67173ea
+.word 0x92bd06fb
+.word 0x7506d5a9
+.word 0x6494d441
+.word 0x7d04433f
+.word 0x14956971
+.word 0x5eb52e22
+.word 0xe4401ffe
+.word 0xdcc9cbaa
+.word 0x2e79efd8
+.word 0xae245dbd
+.word 0xe7102460
+.word 0x327707f9
+.word 0x546c725d
+.word 0x8eecb812
+.word 0x47071a7b
+.word 0xac290fad
+.word 0xc601aefe
+.word 0x60c04ae1
+.word 0xd99e22c4
+.word 0xfe593108
+.word 0x343dc7f6
+.word 0xada264d3
+.word 0x1d1580a7
+.word 0xb4795cb6
+.word 0x0d1b8c52
+.word 0x5ecd95db
+.word 0xbff4d42c
+.word 0xa73f7193
+.word 0x66618392
+.word 0x29251415
+.word 0xcec51cf4
+.word 0x91c268fd
+.word 0x36903ec1
+.word 0xda8f2d15
+.word 0xbb126380
+.word 0xacb4cdaf
+.word 0x6d903be9
+.word 0xbd559ed4
+.word 0x20a65f9a
+.word 0x3a616b69
+.word 0xab9e42c6
+.word 0x6f78cea3
+.word 0x4b7424d1
+.word 0x0268430c
+.word 0x33700c8b
+.word 0xc3c2f15b
+.word 0x0c5abc79
+.word 0x9e639382
+.word 0x646503a0
+.word 0x65d7a161
+.word 0x5b91f8de
+.word 0xf1027786
+.word 0xf731497f
+.word 0x7b8980f4
+.word 0xcec1c75a
+.word 0x83c67904
+.word 0xd32dc62d
+.word 0xf69b868e
+.word 0x52d75651
+.word 0x9673d26f
+.word 0x4a42aa6d
+.word 0xb8d25c5a
+.word 0x3f7a6f5b
+.word 0xd82b29a5
+.word 0xf013fac0
+.word 0x2871d094
+.word 0xab1a95f4
+.word 0x0ba1b163
+.word 0x06177728
+.word 0x161e60b0
+.word 0x7bafe49d
+.word 0xd92bd44e
+.word 0x1588923b
+.word 0xe6a46434
+.word 0x7011abb8
+.word 0x34612b02
+.word 0xa89477ad
+.word 0xccfaf167
+.word 0x76d2c23e
+.word 0x75794b1a
+.word 0xdaa8d179
+.word 0xe708b3d7
+.word 0x2287bc39
+.word 0x9e7e01cc
+.word 0xf4a8436d
+.word 0xe44b90fb
+.word 0x21d7ce4e
+.word 0xf6fc89b0
+.word 0xa9659abf
+.word 0xe9556466
+.word 0x61f61b54
+.word 0xfee18817
+.word 0xc278ac78
+.word 0x39b3422d
+.word 0x88864b2c
+.word 0x09fc3b26
+.word 0xb7de9b63
+.word 0x94f4be1a
+.word 0x48ef35e0
+.word 0x909807f9
+.word 0xe655905b
+.word 0x3bbcd005
+.word 0x7209c0a1
+.word 0x4e743cde
+.word 0xd3ade2b8
+.word 0x30ed78d1
+.word 0xf9c38c57
+.word 0xa77c2f9b
+.word 0xff36e523
+.word 0x43c01aaf
+.word 0x5bca49e3
+.word 0x3ec2df3c
+.word 0xbf3797d2
+.word 0x155c19d2
+.word 0x177cbe6c
+.word 0xd7dbf888
+.word 0xce8efc3f
+.word 0xdf42a4de
+.word 0xa163c785
+.word 0x3f8e8ca2
+.word 0x41cc455e
+.word 0xcfeb9e15
+.word 0x2f91e76c
+.word 0x37a0916c
+.word 0xcf382771
+.word 0xdaa8946c
+.word 0x3dcf49a7
+.word 0x362627d0
+.word 0xf87e1b8b
+.word 0x3b6dbe5c
+.word 0xaa992d31
+.word 0xefd51e32
+.word 0x14f4ce17
+.word 0x2a4ad632
+.word 0x8de1ce20
+.word 0x33d3635b
+.word 0xfdb7ae68
+.word 0x7f5254d7
+.word 0xeca66d25
+.word 0xb2a092bc
+.word 0x4508ffbb
+.word 0x3c7324e0
+.word 0x86badf74
+.word 0x746ab27a
+.word 0xeff448c5
+.word 0x43704b0d
+.word 0x4f3f633d
+.word 0x5365643e
+.word 0xc18b7696
+.word 0xb260d830
+.word 0x975c1457
+.word 0x2eaf288d
+.word 0x9fffda67
+.word 0x8ebf2fe6
+.word 0xce126d89
+.word 0x596167b4
+.word 0x4ff57679
+.word 0xd5c0090b
+.word 0x0246907d
+.word 0xebe03b1f
+.word 0xc566ff98
+.word 0xc774ce72
+.word 0x72127843
+.word 0x479c2494
+.word 0x4f900758
+.word 0x9a36d660
+.word 0x25e9d459
+.word 0xee92804c
+.word 0xe06a1a57
+.word 0x5efb29a3
+.word 0xcf8b354c
+.word 0xdb9def96
+.word 0xe10b1c03
+.word 0xf474a1be
+.word 0x00de9d99
+.word 0xd528b3d7
+.word 0xd896c805
+.word 0xf11efda2
+.word 0xb122b99f
+.word 0x2f81faf7
+.word 0xa0a6b304
+.word 0x96cf4f5a
+.word 0x3c99343c
+.word 0x2b672ec1
+.word 0xcfa43172
+.word 0xab3b7699
+.word 0x2872f037
+.word 0x69af0f36
+.word 0x5607fffc
+.word 0xfd4dea0b
+.word 0xa7ec8ca6
+.word 0x44f0ecf3
+.word 0x468f5aa0
+.word 0xe5ef27ff
+.word 0x90cec730
+.word 0x8fdd17ac
+.word 0x89c9a15e
+.word 0x31dc1e04
+.word 0x062effb7
+.word 0x854cb67d
+.word 0x3821fe4f
+.word 0xe39df37f
+.word 0x7ad2440e
+.word 0x5becb2a2
+.word 0xec967795
+.word 0xa824201b
+.word 0xcd9423f4
+.word 0xc33537f8
+.word 0xb2348d39
+.word 0xce2922bc
+.word 0x5d2b3911
+.word 0x88507eca
+.word 0x48e362fa
+.word 0xd7bfe78b
+.word 0x68e476d8
+.word 0x6418edda
+.word 0xad20da6a
+.word 0x0c937ff4
+.word 0x05cb1e82
+.word 0xe066be60
+.word 0x2aea7cc0
+.word 0x994afb52
+.word 0x65f6b5d6
+.word 0x76494f88
+.word 0x3d33e4d0
+.word 0xa3494c2b
+.word 0x0a37a549
+.word 0x3d0c82ec
+.word 0xceb44359
+.word 0xb7c274b4
+.word 0x8f8d5442
+.word 0x426499dc
+.word 0x01da605e
+.word 0x20c6c3c7
+.word 0xf2801afd
+.word 0xf83067d0
+.word 0x5c95638d
+.word 0xab1ad5a0
+.word 0x6f38ff7c
+.word 0xd454fd78
+.word 0x6cd2d685
+.word 0xdd985d34
+.word 0x080ae905
+.word 0xc8bfb478
+.word 0x6265f66f
+.word 0xfa2bde80
+.word 0x35351324
+.word 0x2143ab92
+.word 0x998e2f82
+.word 0x7a849713
+.word 0x2e395500
+.word 0x26cbe049
+.word 0x65ae6fd1
+.word 0xc78dc98b
+.word 0x90c40fc4
+.word 0xadc4d6d9
+.word 0x3043fe5f
+.word 0x9a3f6b7a
+.word 0x034d6b6c
+.word 0x00e1b131
+.word 0x0c3db18d
+.word 0x1cd1330e
+.word 0xdfca840a
+.word 0xeed279b6
+.word 0x8aad2dd3
+.word 0x4f9c0f36
+.word 0x62c727d3
+.word 0xc5ebebc4
+.word 0x9c0e575a
+.word 0x7847aaba
+.word 0xa56b43c7
+.word 0x86b43d27
+.word 0xf24f740a
+.word 0x2e3ec461
+.word 0xc12dc8ad
+.word 0x0ff42ea4
+.word 0xeacd5e8a
+.word 0xd2918577
+.word 0xeceef544
+.word 0x2d580699
+.word 0xb5d03040
+.word 0x4f41a419
+.word 0x737c219f
+.word 0xb09b5e48
+.word 0x663bb298
+.word 0xf82f064c
+.word 0x166f186a
+.word 0x5f5a9f7e
+.word 0x24e223e7
+.word 0xeb489a22
+.word 0x9a92ad3a
+.word 0xa3fba284
+.word 0x796ad44e
+.word 0x5242cd75
+.word 0x024dd81c
+.word 0x6875af7e
+.word 0x5eb55388
+.word 0x704da150
+.word 0xa9914198
+.word 0x3cde3698
+.word 0x34869f92
+.word 0x1fcbaf84
+.word 0xc95959b8
+.word 0xfdc65961
+.word 0x2e16cbab
+.word 0x40798b08
+.word 0x2e91d2d0
+.word 0x6437430f
+.word 0x8a07ac4b
+.word 0xe843ed29
+.word 0x304fe2c7
+.word 0x4837a60e
+.word 0xe6eb7c9f
+.word 0x20356451
+.word 0xeae6cc61
+.word 0xf4e1d41c
+.word 0xcb764e9a
+.word 0x31095ae4
+.word 0x8b230b94
+.word 0xc7fabc03
+.word 0x80efdcb9
+.word 0x411c5e29
+.word 0xa1071406
+.word 0xbe4eca73
+.word 0xaa7866ce
+.word 0x2f5a4eab
+.word 0x11de4a73
+.word 0x4f54489c
+.word 0xb60d356f
+.word 0x7ec13edd
+.word 0xfc9d8f97
+.word 0x4591d7e3
+.word 0xd45f28fa
+.word 0x0cc72864
+.word 0x38de5cdf
+.word 0x0f09ea97
+.word 0xb513da40
+.word 0xf31e68bb
+.word 0x5aacefa5
+.word 0x49b70a7d
+.word 0x1ccf2b7c
+.word 0x38acebd4
+.word 0x589a130b
+.word 0x22e0a321
+.word 0x94512e54
+.word 0x694e36c3
+.word 0x118ed370
+.word 0xb5227514
+.word 0x6d96fae1
+.word 0x654d8f15
+.word 0xde93ef90
+.word 0x4e489cb4
+.word 0xcee822d2
+.word 0x243af505
+.word 0xf2a66d0e
+.word 0x18e74141
+.word 0xdedb643d
+.word 0xfd840a3e
+.word 0x58f05a76
+.word 0x921ed397
+.word 0xa486caba
+.word 0xd806e5eb
+.word 0x481ac0c2
+.word 0xb3563ca5
+.word 0x6cf80d1b
+.word 0x04ac8c42
+.word 0xae182490
+.word 0xe91e7f61
+.word 0x734c2941
+.word 0x67c961b0
+.word 0x8b885a2b
+.word 0xf915b324
+.word 0xa2daf1c3
+.word 0xcf82055a
+.word 0xc5bb06af
+.word 0x05076bf4
+.word 0xa6072df6
+.word 0xfb0a749f
+.word 0xa3e4ae89
+.word 0x36a71c8a
+.word 0x9205ae5a
+.word 0xf9920797
+.word 0x68f74329
+.word 0x46530230
+.word 0xf39c8733
+.word 0xbaa8f42e
+.word 0x5b241506
+.word 0x683b710e
+.word 0x0f61137b
+.word 0x1abfe174
+.word 0xd51f92db
+.word 0xc53d72b5
+.word 0xaea6575c
+.word 0xfb12dd1f
+.word 0x5755c18a
+.word 0xf3f177d4
+.word 0xb6b2db1b
+.word 0x04161a59
+.word 0x7b82790b
+.word 0xc1137279
+.word 0x876fd323
+.word 0x4b0b795c
+.word 0xf6da36b9
+.word 0x73d023e9
+.word 0x5a6ed6ed
+.word 0x8cebb59f
+.word 0x4ebddc4c
+.word 0x57bdb0ae
+.word 0xad8b163a
+.word 0x04fb789c
+.word 0x2466ca6f
+.word 0x2e577248
+.word 0x4ffac1de
+.word 0x7598440c
+.word 0x1b1307d6
+.word 0xe497a599
+.word 0x15ed2bc1
+.word 0x1641b439
+.word 0xb9591661
+.word 0x5b3b4a64
+.word 0x404a49c4
+.word 0x93054909
+.word 0x02e8cceb
+.word 0x3b7313ec
+.word 0x7ccdf4e7
+.word 0xf9237b29
+.word 0x6a44ce2c
+.word 0xbca0b715
+.word 0xa2908323
+.word 0x11859d7d
+.word 0x9a897837
+.word 0xcd0c828e
+.word 0xeb33dc20
+.word 0x9464cdbc
+.word 0x872dcc07
+.word 0xa1edf2d3
+.word 0xdc6d5eb8
+.word 0xd482a0f3
+.word 0xe234c4d9
+.word 0xfa1fee21
+.word 0x647bd6c4
+.word 0xec68bfb6
+.word 0xa20ff13e
+.word 0xeef31e06
+.word 0xaf2014a0
+.word 0xa8ab8e4e
+.word 0xbeb49c25
+.word 0x79e20b8c
+.word 0xb601232a
+.word 0xf03d8713
+.word 0x2d11501c
+.word 0x9b98e108
+.word 0x9c344086
+.word 0xa7d4983d
+.word 0xcd761d4e
+.word 0x5e2e023f
+.word 0x100d2070
+.word 0x4e8edf06
+.word 0xee34f81e
+.word 0xc293a5c1
+.word 0xf4d6c972
+.word 0x95d85c9a
+.word 0xedc94ac4
+.word 0x605f51a5
+.word 0x90642aa8
+.word 0xc0a0e601
+.word 0x5cab0808
+.word 0x294ead6d
+.word 0x26345c9b
+.word 0x8bef6eca
+.word 0x48c915c4
+.word 0x646ca01d
+.word 0xe1bd5382
+.word 0xcc3ec474
+.word 0x101ab5e4
+.word 0x8fc57430
+.word 0x81df8050
+.word 0x3fafdeb4
+.word 0x353938a8
+.word 0x254b05a9
+.word 0xc5d675a5
+.word 0xe9d9c030
+.word 0x6d5a8e81
+.word 0xdc834719
+.word 0x5366e159
+.word 0x10e48278
+.word 0xd8220677
+.word 0x647df002
+.word 0x5b1692ba
+.word 0x67c60b50
+.word 0xfa84aa6b
+.word 0x2b4ab6cd
+.word 0x1828c1ba
+.word 0x89df838c
+.word 0xc9c00507
+.word 0x0422706b
+.word 0x802efb97
+.word 0xf4ec2c1e
+.word 0x7c0a68a4
+.word 0x2d418fb5
+.word 0x53c9dfa0
+.word 0xc8b2698b
+.word 0x67cc1969
+.word 0x862a1779
+.word 0x42d67c6a
+.word 0xe5c1cf5a
+.word 0x8d3cc8b3
+.word 0xbcff3104
+.word 0x46ce1009
+.word 0x92a809eb
+.word 0x03ec0739
+.word 0x93bb64a2
+.word 0x7cee4575
+.word 0x43709a36
+.word 0x2bb4df56
+.word 0xa7708509
+.word 0xafc9f7f5
+.word 0xdf988216
+.word 0xb71069bf
+.word 0xf6b2b6be
+.word 0x61382495
+.word 0x01b05688
+.word 0x850efd94
+.word 0x5599b795
+.word 0x99e06ae5
+.word 0x8552a00b
+.word 0xf8dc53f9
+.word 0xfec2d077
+.word 0xbc9ea255
+.word 0x57057078
+.word 0x5413c867
+.word 0x3ba347e5
+.word 0x2afea1f1
+.word 0x7e69b359
+.word 0xaee054e3
+.word 0x75232e91
+.word 0x7e10f96f
+.word 0x56fcdea6
+.word 0x5b0636aa
+.word 0xeb6994c2
+.word 0x6098c57a
+.word 0x055a1551
+.word 0x9b281f3e
+.word 0x90af8083
+.word 0x11c8fb3b
+.word 0x84692c13
+.word 0xcbacee38
+.word 0x43d9b53c
+.word 0x56ac4bb9
+.word 0xa65a81bd
+.word 0x9afafff2
+.word 0xe636ee4c
+.word 0x45383ba0
+.word 0x6d36908c
+.word 0x2c5c2d39
+.word 0xff04d6a8
+.word 0x5f79e07b
+.word 0xcc7865f0
+.word 0x8cb9755c
+.word 0x185eb509
+.word 0xe6e8800a
+.word 0x3b257c2b
+.word 0x05f34d32
+.word 0xf04869d3
+.word 0x45e5f8eb
+.word 0x0cfd89d6
+.word 0x20e1ee1e
+.word 0xabf3673e
+.word 0xb4edd551
+.word 0x78ecd6bb
+.word 0x76e9b98f
+.word 0x461eb32a
+.word 0xe7dd7033
+.word 0x164ec8e7
+.word 0x17494e9b
+.word 0xd7eed4f1
+.word 0xdf4f6f04
+.word 0xbc53b1cb
+.word 0xfee6c6fa
+.word 0xe8a8ad30
+.word 0x5709bfe3
+.word 0x2315629a
+.word 0x99c365cc
+.word 0x0dd72c44
+.word 0x759bbf4d
+.word 0x1246d668
+.word 0xcd1532c0
+.word 0x089e062a
+.word 0xcf703b6e
+.word 0xec2e79d0
+.word 0x1fa4828f
+.word 0x7b94202b
+.word 0x1384f28b
+.word 0x3f6a8b16
+.word 0x1558106c
+.word 0x6d370489
+.word 0x26e824db
+.word 0x7eadb11e
+.word 0xca3cb0c7
+.word 0x8deb37e6
+.word 0xfb9b60ee
+.word 0xcfeb4a3c
+.word 0xe9bce54b
+.word 0x4f66e058
+.word 0xbba5e828
+.word 0xd7e67c69
+.word 0xffa32377
+.word 0xe14e36fa
+.word 0x60f217b2
+.word 0xf8fced87
+.word 0x82cccaa7
+.word 0xda46b55a
+.word 0x0eec65d6
+.word 0x9753c440
+.word 0xb4061e29
+.word 0xeff8c0c5
+.word 0xb836f7db
+.word 0x57ef493b
+.word 0x766216b1
+.word 0x9febb48e
+.word 0x219a405a
+.word 0x5402edc7
+.word 0xff76e8e9
+.word 0x3bccbe45
+.word 0xba5c91ab
+.word 0x0e37db9c
+.word 0x3bdc58e2
+.word 0x15ccf669
+.word 0x692ce8f0
+.word 0x2f7511a9
+.word 0x0136da95
+.word 0xf1039056
+.word 0x5cf70b51
+.word 0x36368a86
+.word 0x242dec9e
+.word 0x25b66fdb
+.word 0x53f80a9a
+.word 0x776b8915
+.word 0x16be222e
+.word 0x9e3b1258
+.word 0x220b8bd1
+.word 0xb28bf27c
+.word 0x39f55059
+.word 0x984eef43
+.word 0xb1d74f32
+.word 0x31648e62
+.word 0xe0b439e7
+.word 0xa4a249df
+.word 0x5223d56a
+.word 0x64b77cf6
+.word 0x6f8bc6a2
+.word 0xfdf7f339
+.word 0xc851a693
+.word 0x0ae00b92
+.word 0xd6f37309
+.word 0x89b19de6
+.word 0xd0a23c9e
+.word 0x26cd5c82
+.word 0x528a5078
+.word 0xf5de04fb
+.word 0xdde672bd
+.word 0x9cad0876
+.word 0x81f876ee
+.word 0x3f99ea28
+.word 0x5ee5605d
+.word 0x81df1e0b
+.word 0x70af483f
+.word 0x7df3c6df
+.word 0xad49454c
+.word 0xeb149578
+.word 0xb14524d8
+.word 0xcdf74437
+.word 0x21ab964b
+.word 0x8a9a3246
+.word 0x5cb14be1
+.word 0x1fc3d9c3
+.word 0x4a354f3b
+.word 0xde9911d2
+.word 0xffd5af5f
+.word 0x71601d8e
+.word 0x16cc561c
+.word 0x8b91c59a
+.word 0x275d2d0d
+.word 0x6df41e9e
+.word 0x1bb0d4e8
+.word 0x98ea6bd7
+.word 0x49e65b3c
+.word 0x4cb282b1
+.word 0x36eb949e
+.word 0x402c4c52
+.word 0xc1d11a89
+.word 0xdbfd3c1b
+.word 0x37acda43
+.word 0x1d397090
+.word 0x90382df4
+.word 0x4dc7af2a
+.word 0x206f870a
+.word 0xbf5206ec
+.word 0x9f0e8325
+.word 0x602c679e
+.word 0xea74b2cd
+.word 0x85222bfc
+.word 0x9c54fda5
+.word 0x8ac6f852
+.word 0xc9f956c4
+.word 0xf42126ea
+.word 0x2c510f53
+.word 0x88763860
+.word 0xb173a6a0
+.word 0xd5b65d8f
+.word 0xd06e7f47
+.word 0x0ccc5993
+.word 0x257b025f
+.word 0xcf33c157
+.word 0x4f748fe1
+.word 0xe7efd717
+.word 0x851cf58f
+.word 0x877da1e2
+.word 0x59817163
+.word 0x08f567b6
+.word 0x6c1cc975
+.word 0xa058d81d
+.word 0x2e916ac3
+.word 0x401b2f5b
+.word 0x9056828c
+.word 0x95837e2d
+.word 0x9e0ea42a
+.word 0x23adaee9
+.word 0xca83b9a7
+.word 0x70d2b218
+.word 0xfb629cd8
+.word 0x274e93b2
+.word 0x0cf3749e
+.word 0xd3ad08de
+.word 0xed6bdcc9
+.word 0x41f32aa9
+.word 0x6e157f58
+.word 0xa100435c
+.word 0x9ccf552b
+.word 0xa86c95ee
+.word 0xfd21cb99
+.word 0xfd26847c
+.word 0x028d0138
+.word 0x173f9471
+.word 0x87c431cd
+.word 0x56c92af0
+.word 0x2cfc298e
+.word 0x8777cf42
+.word 0x5ae9b201
+.word 0xfaa82b0f
+.word 0xfcb4cfb2
+.word 0xea972915
+.word 0x64c7bbd5
+.word 0xd9c900a3
+.word 0x7df0ac85
+.word 0x07e86789
+.word 0xb6fa7082
+.word 0xca6c96a5
+.word 0x30c71de3
+.word 0xa697a4ab
+.word 0xc5ca9b3f
+.word 0x3a9b7237
+.word 0x5c2f11b0
+.word 0xd60b6ad7
+.word 0xef72bb02
+.word 0x2e4058de
+.word 0x7f1e580b
+.word 0x5463cf6c
+.word 0xd881fb66
+.word 0xd946c4e9
+.word 0x4568b215
+.word 0x8669c1d5
+.word 0x6350a66e
+.word 0x58ccc78a
+.word 0xc8bd1e33
+.word 0x1c187011
+.word 0x37f4ff37
+.word 0xb50bae22
+.word 0x8154f02a
+.word 0x7499ae8a
+.word 0x3bf604b8
+.word 0x5850551c
+.word 0x8167919c
+.word 0xe4aa285d
+.word 0xdfdcdec3
+.word 0xbf2b22bd
+.word 0x8af70739
+.word 0xab959759
+.word 0x9823ffbf
+.word 0xf0255fd5
+.word 0xca085ef9
+.word 0xd5b31458
+.word 0xc4026fa1
+.word 0x900d0c32
+.word 0x6ef2bac7
+.word 0x72f5a051
+.word 0xe933c0a0
+.word 0xdb1abb2f
+.word 0x2b0009f9
+.word 0xec40c3ee
+.word 0x1ee8afd7
+.word 0x68ea2376
+.word 0x0c859f69
+.word 0x0621e462
+.word 0x73605408
+.word 0xd22859ec
+.word 0x350d8535
+.word 0x27acf516
+.word 0xcb19d768
+.word 0xc9d24f4f
+.word 0xf2904d1d
+.word 0xd439ed9c
+.word 0x44752d43
+.word 0x3de47c54
+.word 0x4ed7eaf2
+.word 0xc1077d56
+.word 0xe54265c2
+.word 0x63bfa56d
+.word 0xfdfcc201
+.word 0xcd59bd06
+.word 0x53639924
+.word 0xbea048a5
+.word 0x5effe100
+.word 0xe2f4e444
+.word 0xa7a2fb2c
+.word 0xa7df7f26
+.word 0x9358d974
+.word 0x60b3c144
+.word 0x9f3c09e8
+.word 0xe4022330
+.word 0x339b7324
+.word 0xb81cc2a0
+.word 0xb0407810
+.word 0x88c07505
+.word 0x604f03b4
+.word 0x631391a7
+.word 0x4a5d2e70
+.word 0xed8051bc
+.word 0x2242601c
+.word 0x244b903d
+.word 0xaf0a177c
+.word 0xd14d196c
+.word 0x0ea71b3c
+.word 0x4ecc17d4
+.word 0xe2279d9d
+.word 0xf234d330
+.word 0xabfcf7e3
+.word 0x7a3860cb
+.word 0x78e6bfde
+.word 0xd34ed2e0
+.word 0xf937ae97
+.word 0x88b19743
+.word 0xaf2d6491
+.word 0xd0237fc8
+.word 0xd3466803
+.word 0x73107653
+.word 0x0c4ba434
+.word 0xf7017bc6
+.word 0x6e2077a2
+.word 0xaf3d7ff5
+.word 0xa04845be
+.word 0x1b6a0f17
+.word 0x0a050efc
+.word 0x7bd92809
+.word 0xecb379d5
+.word 0x91bf62c3
+.word 0xd46e750b
+.word 0x54dfe065
+.word 0x8e65d101
+.word 0xcc662613
+.word 0x4b9b6410
+.word 0x64df2e53
+.word 0xec0bd5d1
+.word 0x3b73553e
+.word 0x2755473f
+.word 0x6dc71250
+.word 0x51d05745
+.word 0xb11e6e8f
+.word 0x675c7011
+.word 0xa6d44d0d
+.word 0x33978c67
+.word 0xc2963410
+.word 0xea1a3e3c
+.word 0x4870acfa
+.word 0x808d2e74
+.word 0xf1c95557
+.word 0x0f166563
+.word 0x21589a27
+.word 0x4bceefd1
+.word 0x6e101492
+.word 0x6afad03c
+.word 0x02d0a4c3
+.word 0x4bbac1a1
+.word 0x06b840b0
+.word 0x62a05eeb
+.word 0x512ea951
+.word 0x6a09de06
+.word 0x997390ef
+.word 0x01c8e6bf
+.word 0xbc06678e
+.word 0x9b95d4de
+.word 0x109dbd28
+.word 0x7cde8fd3
+.word 0xf3b57346
+.word 0xf365bac8
+.word 0xe7922a99
+.word 0x30bf4635
+.word 0xd2ba4377
+.word 0x8b064702
+.word 0xb79dcc60
+.word 0xa9778fac
+.word 0xc6f970e9
+.word 0x76cfe0a9
+.word 0x2b45ecf3
+.word 0xd19e89e7
+.word 0x1117f52b
+.word 0x4bfd7763
+.word 0xd5b8a894
+.word 0x51923e6c
+.word 0x778cc19b
+.word 0xf33bf013
+.word 0xd58ce579
+.word 0x9ebf9832
+.word 0xbaafcbb6
+.word 0x508f1713
+.word 0xa1554221
+.word 0xd9e2dcdc
+.word 0x28abe43f
+.word 0x61a8e156
+.word 0x8456d716
+.word 0x31e8803b
+.word 0xedbe70f8
+.word 0xd94117d5
+.word 0x0b073299
+.word 0x72eea74e
+.word 0x806ae367
+.word 0x048ee4ae
+.word 0xd1b10d10
+.word 0x68fd38c0
+.word 0x39a55a6a
+.word 0x4f296d03
+.word 0x26a949a2
+.word 0x9a95279e
+.word 0xfbcfc069
+.word 0x747f0c91
+.word 0x0ebb7dc1
+.word 0xd98f3fce
+.word 0xcd81f002
+.word 0x71c824d5
+.word 0xaf1617bf
+.word 0x365cea9a
+.word 0xce1d9dbd
+.word 0xfd4d63f2
+.word 0x2e1be62e
+.word 0x674c00c9
+.word 0x53d38ce6
+.word 0x1fa62300
+.word 0x19f23c4d
+.word 0x5af3bb33
+.word 0x0258902a
+.word 0x927a9be5
+.word 0x31f501c7
+.word 0x8416473c
+.word 0xee1f8213
+.word 0xc9c67561
+.word 0x3376b102
+.word 0x100c49e5
+.word 0xa2f11fb6
+.word 0x02a73388
+.word 0x772bb34b
+.word 0x1b72c34c
+.word 0x988f9a18
+.word 0x77b80718
+.word 0x8363e00e
+.word 0xb80f625c
+.word 0x5a6b601d
+.word 0x5af16a6a
+.word 0x567fa509
+.word 0x1a1bc84c
+.word 0x2ff028b6
+.word 0x3dbabb64
+.word 0x6bd76e53
+.word 0x05e80216
+.word 0xdcfb849c
+.word 0xcec27601
+.word 0xf93481d7
+.word 0xdabdb302
+.word 0x05137464
+.word 0xb54467e8
+.word 0xda7d3d46
+.word 0xe4d1bba4
+.word 0xc716bd65
+.word 0xeaf3ac2e
+.word 0x9a1631ec
+.word 0x5771ba94
+.word 0x6a36f849
+.word 0xa9075c00
+.word 0x9b560a46
+.word 0xb4eed944
+.word 0x112aaca3
+.word 0x58d8c07c
+.word 0xc9407df3
+.word 0xaa2c8e8a
+.word 0x6aa35012
+.word 0x8136749b
+.word 0x30c990d7
+.word 0xb335824f
+.word 0xc6328379
+.word 0x41bd3389
+.word 0x4ef87969
+.word 0x69870a30
+.word 0xc2c7d136
+.word 0x06137622
+.word 0xf047ea89
+.word 0xfb9485da
+.word 0xced97728
+.word 0xa193b167
+.word 0x64dd5bb0
+.word 0xd8f18b41
+.word 0x03b663db
+.word 0x1c5f6640
+.word 0xa2324471
+.word 0x4036a4a3
+.word 0x3c9c4946
+.word 0x15ad4baa
+.word 0xc6482538
+.word 0xda5a40aa
+.word 0x8e03b644
+.word 0x0a82c597
+.word 0xbbcacdd5
+.word 0xba9ab453
+.word 0x59eecb08
+.word 0x2bb4f55d
+.word 0x55d13736
+.word 0x45bf248d
+.word 0x291e95dc
+.word 0xf3db95af
+.word 0xc2188176
+.word 0x7d966c51
+.word 0x541b7914
+.word 0x1dc342e9
+.word 0x90921eef
+.word 0x5994d596
+.word 0xbf1d689f
+.word 0x24fa389f
+.word 0x700d107a
+.word 0x87b22576
+.word 0x99270ab8
+.word 0x4fdeea25
+.word 0x4ee10569
+.word 0xcc5acacc
+.word 0xaf45de7d
+.word 0x8dcf5e46
+.word 0x88a753e0
+.word 0x3fa66305
+.word 0xfaa6f2df
+.word 0x1548e563
+.word 0x8033693a
+.word 0x0bcf0fa2
+.word 0x08f182e7
+.word 0xc5b29ad9
+.word 0x9056d5c7
+.word 0x5dbe7e42
+.word 0xd0f521d0
+.word 0x06cc8a44
+.word 0x59885ed4
+.word 0xf8266d4e
+.word 0xcff196e3
+.word 0x8157f025
+.word 0xbf1c025b
+.word 0xee77360b
+.word 0x627f24ea
+.word 0x172c12d5
+.word 0xd3f93d13
+.word 0x872fed44
+.word 0xe0789af0
+.word 0xa902e316
+.word 0x41a44824
+.word 0x0608f3a2
+.word 0x94b1adf0
+.word 0x744632be
+.word 0x5966ed1a
+.word 0xb171a29f
+.word 0x61ef1723
+.word 0xd02af581
+.word 0x1004f64c
+.word 0x053d4729
+.word 0x5e9d2cc2
+.word 0x2b662f4d
+.word 0xe6f36575
+.word 0xa39aba7a
+.word 0xf69f690c
+.word 0x4b07deac
+.word 0xd93a3834
+.word 0xfa7e32d7
+.word 0xdd92dc19
+.word 0xc3d2cd6b
+.word 0x214c8a34
+.word 0xe61e40c3
+.word 0x1804d4be
+.word 0x5a8cad44
+.word 0x2e15dc68
+.word 0x1f7f1ab3
+.word 0xf75eb520
+.word 0x9e538d98
+.word 0xe422e1e6
+.word 0x5f8a7b04
+.word 0x621a7eab
+.word 0xd4348549
+.word 0xf81276a5
+.word 0xc47223f1
+.word 0xe042574e
+.word 0xd92a59d3
+.word 0xc35a3ff3
+.word 0xe91e126b
+.word 0xc451e726
+.word 0x018c699e
+.word 0x2fd2c315
+.word 0x563f2ea4
+.word 0x3d153fc0
+.word 0xf68d2307
+.word 0xde437b5a
+.word 0x8a8d3f85
+.word 0x3d27ee5b
+.word 0x1ad32866
+.word 0x0ce624cf
+.word 0x301f4a14
+.word 0x42216fed
+.word 0xdafd3d89
+.word 0x4ef6efff
+.word 0x7d9798dc
+.word 0x99b8f645
+.word 0xf9ca3325
+.word 0xb499be1b
+.word 0x45727491
+.word 0x77e779fc
+.word 0x55360f8f
+.word 0x398ac714
+.word 0xc2a98dba
+.word 0x9132f784
+.word 0x59cfcb58
+.word 0xa422c81e
+.word 0x1f19d74a
+.word 0x982b4fbb
+.word 0xd0b4b3df
+.word 0xed09a57f
+.word 0x88f08f1a
+.word 0x3e8bc723
+.word 0xbf1b0564
+.word 0xfde58df0
+.word 0x5506925d
+.word 0x52df62a1
+.word 0x2ceaa1c7
+.word 0x55ff1ef7
+.word 0xc3ed9642
+.word 0x8fc9bc91
+.word 0x310eddd2
+.word 0x3673de0a
+.word 0x2c21cd5b
+.word 0xa28964fb
+.word 0x1e22c98f
+.word 0x3a77e932
+.word 0x63bbabce
+.word 0xcb00e32c
+.word 0xe41209c3
+.word 0x69bfb87f
+.word 0xce88c128
+.word 0x33545407
+.word 0x3eb40eed
+.word 0x6029ee08
+.word 0x99a4b099
+.word 0xb034f0fb
+.word 0xbc40a0b3
+.word 0x3a87a611
+.word 0x1b34f265
+.word 0x2fd5bbe4
+.word 0x25f3c0a4
+.word 0x96a611db
+.word 0xee62789e
+.word 0xd79b82f5
+.word 0xc4e8c7b4
+.word 0x8dbf616c
+.word 0x415d2820
+.word 0xec9ebd04
+.word 0xa47b4030
+.word 0xfedacea4
+.word 0x95e577eb
+.word 0x2dad42c6
+.word 0x2f8d6b4a
+.word 0xdf9dbf2b
+.word 0x2735600f
+.word 0x72c6f1fe
+.word 0x724c4504
+.word 0x5b4f274a
+.word 0xf71a6fc9
+.word 0xe6558eb8
+.word 0x1eb783b1
+.word 0xf910679c
+.word 0x8e85f0bc
+.word 0x245405e1
+.word 0xdb4e939a
+.word 0x5fbd7c3e
+.word 0x750995da
+.word 0x3fb90150
+.word 0x82e1c709
+.word 0x47a09894
+.word 0xf8fc1b3b
+.word 0x1d435546
+.word 0x5fd356f3
+.word 0x6ddbc383
+.word 0xd388d001
+.word 0x7f8c5947
+.word 0xb49c0eb8
+.word 0x3708e4b5
+.word 0xc06e098e
+.word 0x904e89f7
+.word 0xe0d9c90e
+.word 0xe4d7f14e
+.word 0x6326485e
+.word 0x9595f429
+.word 0xb390c47a
+.word 0xec672394
+.word 0x27e93b41
+.word 0x84c00525
+.word 0xd30e8890
+.word 0x263f5f5a
+.word 0xfd99bd31
+.word 0x9a09c151
+.word 0xa6d2201d
+.word 0x083c623b
+.word 0x736056fe
+.word 0x8007f89c
+.word 0x38ae7fff
+.word 0xfec529a9
+.word 0x9052770f
+.word 0x641ab710
+.word 0xd24c29ba
+.word 0xeb1fa8c6
+.word 0x47b9d678
+.word 0x0767c200
+.word 0x4e12055e
+.word 0x3fec7514
+.word 0x6bbcefcc
+.word 0xfffaf4d0
+.word 0x13d8ec0b
+.word 0x68c351b4
+.word 0x12499dcd
+.word 0x59e71af2
+.word 0xd6176c51
+.word 0x8e9dd6fd
+.word 0xde101a4f
+.word 0x49886db4
+.word 0xa7d0a206
+.word 0x20c189ae
+.word 0x830805f8
+.word 0x19ccd207
+.word 0xb561edb6
+.word 0x7b8dfd4a
+.word 0x90a36d42
+.word 0xa4499331
+.word 0x8341682d
+.word 0x15f92e1e
+.word 0x6f175e45
+.word 0xe0e47f40
+.word 0xa7ef746b
+.word 0x96de9742
+.word 0xe4de6be6
+.word 0xa5a8e055
+.word 0x40404b6c
+.word 0xaacb2b19
+.word 0xd411a7c7
+.word 0x39c3555a
+.word 0x3d6a0e2b
+.word 0x364dea30
+.word 0xf621363f
+.word 0x4a374d75
+.word 0xc45e7c52
+.word 0x1009bb30
+.word 0x09200c58
+.word 0xba6dc6cb
+.word 0x320cfe75
+.word 0x77b978c7
+.word 0xa1a26a5b
+.word 0x460da0d8
+.word 0x9cc872aa
+.word 0x19a35e90
+.word 0x1c6d654e
+.word 0x0de2fba3
+.word 0xab6a0f4f
+.word 0xb5bf514c
+.word 0x79f0a40f
+.word 0x60dd138f
+.word 0xf7e1cbf9
+.word 0x4f5ad4df
+.word 0xd66755a2
+.word 0xf78f5f66
+.word 0xc74bc08e
+.word 0xe602f8e1
+.word 0x6c090a40
+.word 0xa4a8bf0c
+.word 0xe9c4b49e
+.word 0x2439b4f4
+.word 0x8c70185d
+.word 0xb276fda2
+.word 0xca321c83
+.word 0x92d71026
+.word 0xf701f8fb
+.word 0xd18a348f
+.word 0xfeec94a5
+.word 0xeaca7cf9
+.word 0x8912d393
+.word 0xfbe794be
+.word 0x9b1415f2
+.word 0x1c8b0547
+.word 0xa00b05bb
+.word 0x9bf3b4c0
+.word 0x4493dfb3
+.word 0xc6fbb718
+.word 0xb312423f
+.word 0xf08444c6
+.word 0x773c1772
+.word 0x85871de4
+.word 0x986d5192
+.word 0xc2c9ec27
+.word 0xb6e4e1f6
+.word 0x12ddc87c
+.word 0xc5b00309
+.word 0x25bca43a
+.word 0x4bc902fe
+.word 0x1ba0c067
+.word 0xbfa7396c
+.word 0x05d15326
+.word 0xf0a9f068
+.word 0x53b06ac6
+.word 0x31dda412
+.word 0xa60d40dd
+.word 0xf4ce52c5
+.word 0xb7d0559f
+.word 0x6617da04
+.word 0x59c6c267
+.word 0xa695cb2b
+.word 0x41c1ad05
+.word 0x451205d6
+.word 0xa9a96cd1
+.word 0x1c8831f7
+.word 0xa06405e3
+.word 0xc5a7c2fc
+.word 0xe06597c4
+.word 0x65d34fdf
+.word 0xa43e16f5
+.word 0x6edc5cab
+.word 0x9db9a850
+.word 0x640a003c
+.word 0x69bf3b52
+.word 0xcc87254c
+.word 0x45efca3d
+.word 0xf48302ca
+.word 0x82181fd8
+.word 0x3abd5206
+.word 0x538e0e30
+.word 0x2d370196
+.word 0xbaea16d0
+.word 0x59ed446d
+.word 0x12603a99
+.word 0x66eefe3d
+.word 0xcf705549
+.word 0x6497a328
+.word 0x01584290
+.word 0x67edbab6
+.word 0x86dd2141
+.word 0xb4dbe95f
+.word 0x39e1f7e2
+.word 0x418d5f43
+.word 0x7ce1d5da
+.word 0xae1afe13
+.word 0xfdadf3f1
+.word 0x80b54951
+.word 0x22d9360c
+.word 0x74bee5d7
+.word 0x106d2fed
+.word 0x8570d7b9
+.word 0xaeac12a5
+.word 0x2ed23b32
+.word 0x524b621f
+.word 0x9913a470
+.word 0x1676199f
+.word 0x593e8077
+.word 0x697d613b
+.word 0xc92019da
+.word 0xa70e493d
+.word 0x0333a5b7
+.word 0x67dcc09c
+.word 0x8fd6e48f
+.word 0x763d44eb
+.word 0x50f8e0a0
+.word 0x6e47f8ce
+.word 0xf8fde914
+.word 0x82dab300
+.word 0xdea1381e
+.word 0x5383be23
+.word 0x724cd7fc
+.word 0xc0076b4d
+.word 0x6da145a1
+.word 0xf14f3718
+.word 0x5f197048
+.word 0xd47f4e2e
+.word 0xead909ee
+.word 0x13af1d69
+.word 0x5216cc28
+.word 0x3b63ea88
+.word 0x83b7dee5
+.word 0xf576b44f
+.word 0xa1724f0d
+.word 0x8728a86d
+.word 0x40d1859a
+.word 0x577ff804
+.word 0x018b4f19
+.word 0xdc38e3f4
+.word 0x08af18a0
+.word 0xb21b527c
+.word 0x188adb55
+.word 0x89556846
+.word 0xd3ef3150
+.word 0x8f14598a
+.word 0xea43ef1e
+.word 0x2c81bd14
+.word 0xf23707b8
+.word 0xfcbf07f0
+.word 0xfadf8d0b
+.word 0x535571f8
+.word 0x7fcc2d61
+.word 0xfa39a07d
+.word 0xa54673e9
+.word 0xae6412dd
+.word 0x09e3f11c
+.word 0x416a1d5a
+.word 0x35de9f2b
+.word 0x3f584eb0
+.word 0xa4b0336f
+.word 0x3760f5dc
+.word 0xb4ba2920
+.word 0xffe72c71
+.word 0x7db49000
+.word 0x14724eaf
+.word 0xb1cc68a0
+.word 0xf7c78b15
+.word 0x4b31f48d
+.word 0xf666e188
+.word 0xecbea048
+.word 0x8040efff
+.word 0x517cd16e
+.word 0x89ba9a0e
+.word 0xa402f6e2
+.word 0x3eab110a
+.word 0xef31bce4
+.word 0xa72faf9e
+.word 0xa2a91c75
+.word 0xffabf204
+.word 0x3bc2f608
+.word 0x7338ad88
+.word 0x63aa8002
+.word 0xbdd52466
+.word 0xff9262e1
+.word 0x11320e9f
+.word 0x1931928a
+.word 0x3988951e
+.word 0x9323a8ba
+.word 0xcdcf1aa7
+.word 0xf3e5b17e
+.word 0x9f6ce5b9
+.word 0x63ba4d6e
+.word 0xa24a7f53
+.word 0x64dfaa1a
+.word 0x0840f2d1
+.word 0x2d8baaa1
+.word 0x738b4288
+.word 0x9df4cf55
+.word 0xb4c083b2
+.word 0xbed209c2
+.word 0x0daa7aa5
+.word 0x39c806b2
+.word 0x271ee086
+.word 0x74aa9d45
+.word 0xcc6ab371
+.word 0xb25602f8
+.word 0x881ffc08
+.word 0x13dfa536
+.word 0x67d40281
+.word 0xaaa2524e
+.word 0x29f55142
+.word 0x716aeaac
+.word 0x6b1c6da2
+.word 0x47bff229
+.word 0x6c40d442
+.word 0x88242a5c
+.word 0xe7f21833
+.word 0xd666fb38
+.word 0x7ff39ea8
+.word 0xeaf5a3cd
+.word 0x9d4a3b58
+.word 0xaeed901c
+.word 0x9c686c30
+.word 0xeea8f2f8
+.word 0x87201642
+.word 0x61e6f014
+.word 0xc723ab9c
+.word 0x7e8100a9
+.word 0x5956f15d
+.word 0xd83d47e0
+.word 0xacf4718f
+.word 0x0f82c15c
+.word 0x8800dc8f
+.word 0x954cfc4b
+.word 0x61691245
+.word 0xfd626337
+.word 0x0e498812
+.word 0x72b871c9
+.word 0xd4971ddc
+.word 0x7478b8c3
+.word 0x713b028c
+.word 0xe1e5878f
+.word 0xac92e7f8
+.word 0xafaf94c9
+.word 0xc70ffd1d
+.word 0x2f7ab28b
+.word 0xaa7649c5
+.word 0x08cd52b5
+.word 0x2c7f664c
+.word 0xc0e95f45
+.word 0xd318c6ef
+.word 0xede4f593
+.word 0x30ef22bc
+.word 0x80a76ff0
+.word 0x1baf7278
+.word 0x1483d922
+.word 0xa424f2c8
+.word 0x0388f18d
+.word 0x060c5d2c
+.word 0xbd0be199
+.word 0x504af0c0
+.word 0x72b6a274
+.word 0x58957db8
+.word 0x46712d32
+.word 0x820844f8
+.word 0xeceec60e
+.word 0xcaeef3b2
+.word 0x11f65295
+.word 0x58808b02
+.word 0x58087e91
+.word 0xb19fb632
+.word 0xed459f68
+.word 0xfe02957c
+.word 0x0c6da8b8
+.word 0x3a93099f
+.word 0xf0ceda4c
+.word 0xc90c6b2c
+.word 0xd8ccffb6
+.word 0x4dd667c0
+.word 0x0887fb54
+.word 0xa913c789
+.word 0x01bda9f8
+.word 0x381b6dd9
+.word 0x3d89f038
+.word 0x2f3f7b92
+.word 0x51efb291
+.word 0xb86bb897
+.word 0x599d68b8
+.word 0xccb28e1b
+.word 0x6f767681
+.word 0x5ea9c25d
+.word 0x703426fe
+.word 0x95cd466d
+.word 0xe9ac58bf
+.word 0x39200bbf
+.word 0x402a0ea6
+.word 0xc0abe5c4
+.word 0xff1cb7d4
+.word 0xf0d933f2
+.word 0x1d3cba3c
+.word 0x7f501735
+.word 0x0bbc60d7
+.word 0x52d96518
+.word 0x37a83393
+.word 0x406a1468
+.word 0x16edace7
+.word 0x3953d3aa
+.word 0xfd83dc99
+.word 0xad78e42c
+.word 0xb12220ae
+.word 0x40129273
+.word 0x541fe7f3
+.word 0xd97f1283
+.word 0xebe1ac07
+.word 0x7b435a30
+.word 0x1862e47c
+.word 0x7f62b5be
+.word 0xac0f964a
+.word 0xc087aae1
+.word 0xcee6cd53
+.word 0xfa3aa133
+.word 0x1e2a7a84
+.word 0xed1813f0
+.word 0x78719a7f
+.word 0x9346f5e0
+.word 0x8e3859c5
+.word 0x98e89c3d
+.word 0x70059903
+.word 0xd2decaf2
+.word 0x5b594325
+.word 0x3d9e1030
+.word 0x3ff028bb
+.word 0x4f0dd52a
+.word 0x56f40b70
+.word 0xfc48c40d
+.word 0x7830d314
+.word 0x51ae5a58
+.word 0x6dbdaa07
+.word 0x98eea88e
+.word 0x59fe7b17
+.word 0x59e35490
+.word 0xaca32d0d
+.word 0xafd57628
+.word 0xb3b5ff47
+.word 0xbf919b2b
+.word 0x64918171
+.word 0x3bd766c8
+.word 0x943286a2
+.word 0x1c1b997b
+.word 0xb3b59e2b
+.word 0xdf7d1b75
+.word 0xbb580a1e
+.word 0x1ab97ebc
+.word 0xb5f85503
+.word 0x5a05f486
+.word 0x16a97e83
+.word 0xf3d0ade0
+.word 0x68700465
+.word 0x1403da76
+.word 0x6e6f16eb
+.word 0xa1aae5d7
+.word 0xf3ba72a5
+.word 0x16fa2b06
+.word 0xd131c05d
+.word 0x2321d156
+.word 0x20d9ca78
+.word 0x1c0dfc17
+.word 0xb04a4ce8
+.word 0xc1dcfeb5
+.word 0xc38f699f
+.word 0x346dc355
+.word 0xa4a22ff2
+.word 0x7ca962a3
+.word 0x61651917
+.word 0x77860270
+.word 0xe8dbf83f
+.word 0x355fd74c
+.word 0x3d8e61fe
+.word 0x2150ad43
+.word 0x9baa052d
+.word 0x07b57111
+.word 0x8a49e2c9
+.word 0xb0039b77
+.word 0x734b08e4
+.word 0x0d6b9738
+.word 0x5e9616e4
+.word 0xb6b55365
+.word 0xaaa7c377
+.word 0xbedafc08
+.word 0x62c14a0e
+.word 0xf81ee429
+.word 0x005e54d0
+.word 0x950a1df0
+.word 0x5080666b
+.word 0x1a999faa
+.word 0x83f995c6
+.word 0xa3293431
+.word 0x31aac88d
+.word 0xddf6e6f3
+.word 0x9616ecc5
+.word 0x43402344
+.word 0x567f0c11
+.word 0x9f9db7d8
+.word 0xc76717b9
+.word 0x083ddf3c
+.word 0x425db659
+.word 0x6f84bb6c
+.word 0xe417cf30
+.word 0x8cb90c4e
+.word 0x6c35d574
+.word 0x8be77f71
+.word 0x637ff5eb
+.word 0x3d93bad2
+.word 0x32e149f8
+.word 0x20100ba5
+.word 0xfa731a5d
+.word 0x39991177
+.word 0x8ccf610b
+.word 0x9b028279
+.word 0x28abad96
+.word 0x31aa1b7b
+.word 0x165caee7
+.word 0x87fcb236
+.word 0x26697943
+.word 0xb5759461
+.word 0xeefe6bed
+.word 0x05509e63
+.word 0xe245d5ce
+.word 0xbba04221
+.word 0x2849899b
+.word 0x96202ea9
+.word 0x5ceec268
+.word 0x49952ebd
+.word 0x5869919b
+.word 0xf4a0bb6d
+.word 0x658cd412
+.word 0x72bf1be1
+.word 0x22e84672
+.word 0xe11d156f
+.word 0x5163d65b
+.word 0x44b34ea4
+.word 0x42e6f3c1
+.word 0xd996b420
+.word 0x23bd49ee
+.word 0x6223ad86
+.word 0x9e870bff
+.word 0x4959c1f3
+.word 0xa817814d
+.word 0xf2f7b758
+.word 0x2669e2c9
+.word 0xdfc670c8
+.word 0x86d0402f
+.word 0xe2e9fcc6
+.word 0x2c241533
+.word 0x177652fc
+.word 0xe7fc1069
+.word 0x364a6799
+.word 0xe30b63bc
+.word 0x3245871e
+.word 0xdda7291b
+.word 0xd8fb6f90
+.word 0x2d80716b
+.word 0xe551a560
+.word 0x8bf12468
+.word 0xcc16d660
+.word 0x386a23a0
+.word 0x963f5fe6
+.word 0x7a763811
+.word 0x2ff32ad2
+.word 0x54a95f97
+.word 0xfe9c0757
+.word 0x43279b30
+.word 0xf3a61ea2
+.word 0x69dad268
+.word 0x532df0cc
+.word 0xa9177106
+.word 0xa829d366
+.word 0x69f10f8c
+.word 0x4ec04425
+.word 0xaba9c80d
+.word 0x24c5cfc5
+.word 0x458a8e5f
+.word 0xeebd5d92
+.word 0x5122b4d6
+.word 0x88352725
+.word 0xf414967f
+.word 0x3ac139ee
+.word 0x0e7ba4ea
+.word 0xa21a7b06
+.word 0xa80f28ac
+.word 0xc51a6937
+.word 0xfba9e540
+.word 0x928a4469
+.word 0xb06602ad
+.word 0xba404cef
+.word 0x08ced7e4
+.word 0xf369bec4
+.word 0x22b91028
+.word 0x39ec1a2d
+.word 0x25344579
+.word 0xd344fd72
+.word 0xf1904eb9
+.word 0x901bbd62
+.word 0x11eb97fa
+.word 0x153bb2fe
+.word 0x243b9ff0
+.word 0x3dd4144e
+.word 0x32448fc9
+.word 0xf20281c9
+.word 0x809dea7e
+.word 0x23ba882f
+.word 0xfe6c8e91
+.word 0x59082b28
+.word 0x14e2f6f4
+.word 0x0c390f04
+.word 0x5b8cc73b
+.word 0xa094e7b7
+.word 0xc6a41b2c
+.word 0x8dc37f55
+.word 0xf5953155
+.word 0xb302bf4e
+.word 0xe848b3f9
+.word 0x780fc709
+.word 0x59557a31
+.word 0x306eedf4
+.word 0xc0156c54
+.word 0x1c3ebbe7
+.word 0x633bf3b6
+.word 0x667e74a8
+.word 0x52ea43af
+.word 0x9c954077
+.word 0x63164ed0
+.word 0x1b027a1a
+.word 0x5b107e54
+.word 0x14c869fc
+.word 0x8c6f9437
+.word 0x19cedcd6
+.word 0x43549dcb
+.word 0x742ab5ff
+.word 0x105d81b8
+.word 0x2e892482
+.word 0x658fc778
+.word 0x54744d22
+.word 0x8e1ec76c
+.word 0x771f5322
+.word 0xa3a6bd9e
+.word 0x2e3ecd83
+.word 0x90523695
+.word 0x155556e2
+.word 0xedf16a62
+.word 0x2c668618
+.word 0x22e39867
+.word 0xf6630d78
+.word 0x7e3e44dc
+.word 0x13a9aeb8
+.word 0x2aba7231
+.word 0x26d9c1c0
+.word 0x8f67d0bb
+.word 0x3f15a7c1
+.word 0x8f6d4e77
+.word 0xeaf8d59e
+.word 0xd4c72b70
+.word 0x4da54871
+.word 0x98fb91c2
+.word 0xb0fd29eb
+.word 0xe64bb22d
+.word 0xbba59877
+.word 0xffcfa273
+.word 0xec82caf5
+.word 0xa906b9c2
+.word 0x6e3229a1
+.word 0xd5c6796f
+.word 0xd48f3867
+.word 0x606be6a3
+.word 0xbe3ecbe8
+.word 0xe4ec5062
+.word 0x9443514b
+.word 0x5c82a7ee
+.word 0x1f70e3a2
+.word 0xb051e564
+.word 0x46dfb9c3
+.word 0x374bd19f
+.word 0x1839d728
+.word 0xd6754d86
+.word 0xd0652ce3
+.word 0x3450026f
+.word 0x43a222c2
+.word 0x5a416469
+.word 0x903dcb92
+.word 0x13af3703
+.word 0x265dd553
+.word 0xba19bb90
+.word 0xee0d2db6
+.word 0x08aa866c
+.word 0x7cd52f6a
+.word 0xa4f1f796
+.word 0x59ef770f
+.word 0xd3f8145b
+.word 0x0afd81a3
+.word 0xad6bed7a
+.word 0x4737ef3b
+.word 0xab41801d
+.word 0xa85da2c0
+.word 0xfefb1e6d
+.word 0xb921d2df
+.word 0x51d4f539
+.word 0x1fb4f670
+.word 0xc8b8c562
+.word 0xd9dfacf1
+.word 0x88396e9d
+.word 0x5d008c07
+.word 0x914c198e
+.word 0x4d9bcb7f
+.word 0xe7495121
+.word 0xc09bff7e
+.word 0x380ed3a6
+.word 0x0a089ec5
+.word 0x317e7756
+.word 0x812ceea7
+.word 0xa2435090
+.word 0xc4c65fa2
+.word 0x9ff00add
+.word 0x7b6bfd06
+.word 0x5176ea6a
+.word 0xc594d1d9
+.word 0xc6bfe1a1
+.word 0x100e905b
+.word 0xf742610c
+.word 0x6bc49a9d
+.word 0x41015744
+.word 0x36267ec1
+.word 0xafd789d0
+.word 0x9dd55301
+.word 0xeabcc88c
+.word 0x2e95df81
+.word 0x76ddf00a
+.word 0xc6761511
+.word 0x4c82aa04
+.word 0xa5d40a35
+.word 0xfc001237
+.word 0x2afab08e
+.word 0xb9375cb6
+.word 0xea6d8c59
+.word 0x90160651
+.word 0xb6ad0c08
+.word 0x438c0c69
+.word 0xd47346b6
+.word 0x4dec3c8a
+.word 0x02d5a074
+.word 0xef01e8a3
+.word 0xbb2e2e4f
+.word 0xfd0dc670
+.word 0x294c690f
+.word 0x86e0ad40
+.word 0xf1e2ba24
+.word 0x6c524684
+.word 0xa7dca937
+.word 0xbabdb25c
+.word 0xe978e776
+.word 0xfa3b297a
+.word 0x18a1e544
+.word 0x460eadb6
+.word 0xa71f3f06
+.word 0xb7813680
+.word 0xaf8fab09
+.word 0xe3be5479
+.word 0xbc5e7f72
+.word 0xb4f3c4b4
+.word 0x5c421120
+.word 0x5afb7d02
+.word 0xa0b9bc70
+.word 0x67f652cf
+.word 0xae4d97b5
+.word 0x23a9aac5
+.word 0x7fa868ed
+.word 0x4900d5d0
+.word 0xbf0c2c68
+.word 0xbc69f589
+.word 0x05a25125
+.word 0xa5b0a228
+.word 0xcb93bb8c
+.word 0xffdf6088
+.word 0x74cc1cbc
+.word 0xb282bf18
+.word 0x443b2a3c
+.word 0x240a6044
+.word 0x38668033
+.word 0xea832b44
+.word 0xccca493a
+.word 0x38bc5a61
+.word 0x7cf428ec
+.word 0x4b2653dc
+.word 0x32892e79
+.word 0x9ff21eff
+.word 0x8a87ce13
+.word 0xde963570
+.word 0x02ba83ea
+.word 0x03b7f256
+.word 0x9af9fd80
+.word 0xa1866aae
+.word 0x586e90f0
+.word 0xbf579179
+.word 0xddc9fb12
+.word 0xfa6a4dd7
+.word 0x0ca10db7
+.word 0x19d04527
+.word 0x25d4a6e1
+.word 0x37c353ce
+.word 0x927bcfca
+.word 0xfad65be8
+.word 0xf150bdfc
+.word 0xf1aa7eb0
+.word 0x118b1e3c
+.word 0x161064ae
+.word 0x8869b655
+.word 0xe28a59ec
+.word 0xdce2276c
+.word 0xe129dd3e
+.word 0xbbde4378
+.word 0x7eac43c1
+.word 0xf2444855
+.word 0x9f5a9d7e
+.word 0x9af68f53
+.word 0x99bebbe7
+.word 0x6b66aaa4
+.word 0x1742442e
+.word 0xf971a485
+.word 0xa3a07cf0
+.word 0x41bac230
+.word 0x7b8dc09d
+.word 0x0e983a2c
+.word 0x6b3fa7f8
+.word 0xf4f56dac
+.word 0x23199da5
+.word 0x6a393c1c
+.word 0x31944763
+.word 0xb8ed8f5e
+.word 0x178d5dd9
+.word 0x88cfaf1e
+.word 0xae5caf1a
+.word 0x519f1040
+.word 0xbc328b30
+.word 0xe1d87090
+.word 0x19c6a060
+.word 0xa8ef3eec
+.word 0xb7ffaab3
+.word 0xd384ed6c
+.word 0xd27abe10
+.word 0xe0bcf3d1
+.word 0x37988b2b
+.word 0xcd400b0d
+.word 0x676fb0cb
+.word 0x51f17190
+.word 0xaa0f6e47
+.word 0x3f8fd6b3
+.word 0xcb99e8d1
+.word 0x9e6d25e4
+.word 0xd1e17044
+.word 0x053a3236
+.word 0xf3946d21
+.word 0xbfd84c58
+.word 0x07a415b6
+.word 0x727fed0e
+.word 0x5b980b28
+.word 0x35923606
+.word 0x2685a690
+.word 0xfaa26e35
+.word 0x9077da04
+.word 0x00b865c4
+.word 0x018f394b
+.word 0xbe0d50dc
+.word 0xd3c8b727
+.word 0x75b2687f
+.word 0xbf7467f8
+.word 0x3f5ec93f
+.word 0x3425ba16
+.word 0xfeabac79
+.word 0x6025d5cf
+.word 0xe7629b6b
+.word 0xc585959e
+.word 0xe69a5105
+.word 0x7da0ebde
+.word 0x6ac932c1
+.word 0x0d1c217b
+.word 0x4ab2ec55
+.word 0xc4d68404
+.word 0x672d158e
+.word 0x83c1094d
+.word 0x68864c8e
+.word 0x4f78f323
+.word 0xf939ebf6
+.word 0xf0ec4de2
+.word 0x0f056e8b
+.word 0xfa4538cd
+.word 0xa17345b9
+.word 0x9334ac7e
+.word 0x6d19e4e3
+.word 0x66f97a6d
+.word 0x6c8977e2
+.word 0x775efc9e
+.word 0x70bb6f85
+.word 0xb946f847
+.word 0xcf0b269e
+.word 0xeba160f2
+.word 0x4dde9f53
+.word 0x201a3af2
+.word 0xb2e2fd3c
+.word 0xa945439c
+.word 0x2eda283c
+.word 0x8758cdc7
+.word 0xd927e3e7
+.word 0x39319168
+.word 0x0305e27c
+.word 0xbc9af578
+.word 0x8d365e35
+.word 0xf78911d3
+.word 0x91f6e0bf
+.word 0x34b27514
+.word 0xf27f5788
+.word 0xf973f150
+.word 0xfb8a94f3
+.word 0x94b2bcf5
+.word 0xd14be360
+.word 0x2907bbc0
+.word 0x37c13b1e
+.word 0x853f81fe
+.word 0x3043aa22
+.word 0xcd09f659
+.word 0x76663255
+.word 0x7839211b
+.word 0xed1a30e4
+.word 0x6f7ea285
+.word 0x6769a6bb
+.word 0xa5f643a9
+.word 0x64be13c6
+.word 0xce24229e
+.word 0x1cdae533
+.word 0x90034102
+.word 0x285ce3a5
+.word 0xb759bfbb
+.word 0x02839bca
+.word 0x5b35edc0
+.word 0x9cde0515
+.word 0x847fa188
+.word 0x2e515f59
+.word 0xe4cab04b
+.word 0xf7fefa05
+.word 0x07abf7f9
+.word 0x8ee0ef54
+.word 0x5a8093c6
+.word 0xee50c358
+.word 0x5cc795b7
+.word 0xf0d2fdfa
+.word 0xb39d62a1
+.word 0x274d2b09
+.word 0xf5f79b6b
+.word 0x295f20d3
+.word 0xa3139b13
+.word 0xe2758139
+.word 0xfe32f0f3
+.word 0x149cb4b8
+.word 0x610ac748
+.word 0x8858bc0e
+.word 0x34a636da
+.word 0xfbd62784
+.word 0xfa72bbac
+.word 0x0288d9b9
+.word 0x67a5c82c
+.word 0x8219296e
+.word 0xba5d81b7
+.word 0x2759bdb2
+.word 0xdd24d8fc
+.word 0x7bfdd9a1
+.word 0x72f9d38b
+.word 0xcc98bb1d
+.word 0x3bd9e7a7
+.word 0x8394f8a6
+.word 0x24b9d6b9
+.word 0xe3122099
+.word 0x2c9b8643
+.word 0x2c50f65e
+.word 0xbcdde6a0
+.word 0x611fbbe5
+.word 0xfc278868
+.word 0x2cca7969
+.word 0xaa91fa37
+.word 0x6db61a5e
+.word 0x2351bd2e
+.word 0x7b8b08c1
+.word 0x0c233f79
+.word 0xfb137c8e
+.word 0x9296557b
+.word 0x26b9a942
+.word 0x725eea5c
+.word 0xac71e534
+.word 0xbb7c5a82
+.word 0x22c7c652
+.word 0x776787db
+.word 0xf38f8e80
+.word 0xd23d4a87
+.word 0x5b990b0f
+.word 0x1e462cbc
+.word 0x3fe13719
+.word 0xc1071cca
+.word 0x19aa3800
+.word 0x35115d1c
+.word 0x01a5fb48
+.word 0x62b74cdd
+.word 0xf0471d9f
+.word 0x91395735
+.word 0x3bd480e9
+.word 0x059f0df9
+.word 0xfb29198c
+.word 0x69ca354d
+.word 0x872af005
+.word 0x3ee17b1c
+.word 0x9f6471d4
+.word 0xeee694e6
+.word 0x896770a9
+.word 0x5f185a95
+.word 0xec83ac8e
+.word 0x10ec2b4a
+.word 0x7a92a8da
+.word 0xe582f4bb
+.word 0x68cb674c
+.word 0x564d4684
+.word 0xdd673830
+.word 0xa5f9edb0
+.word 0xb83aefa8
+.word 0x710de67b
+.word 0x4281cc6b
+.word 0x93aa143a
+.word 0xe7f57412
+.word 0x6279cd46
+.word 0x67292c3e
+.word 0xe35218b8
+.word 0x3e899a0b
+.word 0x2a9cc1fe
+.word 0x6efea3cb
+.word 0xe9ad443c
+.word 0x838fbbfd
+.word 0x4b82ae9d
+.word 0x4bd500b2
+.word 0x762f67a4
+.word 0xec539451
+.word 0x2ac3ad0b
+.word 0x9f9818b4
+.word 0xfa7cff32
+.word 0xdf5cd0d9
+.word 0x8ad53199
+.word 0xfe428dc9
+.word 0x551b5bbc
+.word 0x1305115a
+.word 0x5592d28e
+.word 0x5900443b
+.word 0xebec8400
+.word 0x388acf01
+.word 0x1d284117
+.word 0x5634c013
+.word 0x74f1c7d9
+.word 0xeb58983a
+.word 0x48d8d631
+.word 0x5337480b
+.word 0x3f81a5fd
+.word 0x33f75ac4
+.word 0x054142ed
+.word 0xa7748eca
+.word 0x4a57afe0
+.word 0x58a0036f
+.word 0xaf1cad77
+.word 0x28c60944
+.word 0x2671f47b
+.word 0x1483f43a
+.word 0xe7266955
+.word 0xa165bca6
+.word 0x6ec6c2e8
+.word 0x04c3c036
+.word 0x8f24e20d
+.word 0x18d26594
+.word 0xd6822ef0
+.word 0xfa56fdd7
+.word 0x6157a1b3
+.word 0x57f0821e
+.word 0x2ad9e365
+.word 0xe595bbc0
+.word 0x294625e7
+.word 0x70fc32f9
+.word 0x1e214983
+.word 0x4451af2e
+.word 0xefa8e1c4
+.word 0x77d4981b
+.word 0x1ce8998a
+.word 0x2d5f3d90
+.word 0x118eb32e
+.word 0x85a6462d
+.word 0xb3811662
+.word 0x3b6dfb0b
+.word 0x148b6bd4
+.word 0x3980e94c
+.word 0xfc357011
+.word 0xcde5fa3c
+.word 0x829741a4
+.word 0x1b307a13
+.word 0x3fc14cbe
+.word 0x006cf17b
+.word 0x55fd0f4e
+.word 0x103167cf
+.word 0x9d80f329
+.word 0xb7b04e59
+.word 0x42eaa9ee
+.word 0x5a63cdcd
+.word 0x36760582
+.word 0x4df1e830
+.word 0xf1948a09
+.word 0x1ad8ac79
+.word 0x1b8f0a22
+.word 0xee78dc25
+.word 0xcdb8d974
+.word 0xd4ada503
+.word 0x0f7b28ad
+.word 0x810dd897
+.word 0x2418494a
+.word 0x91fa4564
+.word 0xf3e15be9
+.word 0x80b686b9
+.word 0xf7387894
+.word 0x6b02e8fa
+.word 0x943c20c6
+.word 0x3b0c69b8
+.word 0x22057940
+.word 0x00092681
+.word 0x08161d13
+.word 0x49f5d22b
+.word 0xef1c2b41
+.word 0xa400acc6
+.word 0x9ae0ea7c
+.word 0x1d33af75
+.word 0x2f199ebb
+.word 0xbe68f716
+.word 0xd1f70474
+.word 0x070a8a20
+.word 0xf607b339
+.word 0x9ac92cdb
+.word 0x4667c7da
+.word 0xfb8f2d1e
+.word 0x9ea6fe17
+.word 0xb43e26ef
+.word 0x9cdae366
+.word 0x4b9c0a51
+.word 0xded71faf
+.word 0xc3a177b8
+.word 0x2174e590
+.word 0x6f795b90
+.word 0x9b1f8e96
+.word 0xc31682ac
+.word 0xe189d60b
+.word 0xee137cb3
+.word 0x4e403435
+.word 0x180801a7
+.word 0x58c4ea9f
+.word 0x222d7e4f
+.word 0xebf87963
+.word 0x42dd7018
+.word 0x63cdf4d4
+.word 0x5d7fd061
+.word 0x430f5669
+.word 0x666bccfc
+.word 0x1ea8e95f
+.word 0x09f33037
+.word 0xf765659d
+.word 0xf3a2c1da
+.word 0x3ae1ecfe
+.word 0x5ac87240
+.word 0x89ca6eba
+.word 0x4584a5cd
+.word 0xa12c83db
+.word 0x1584c7b0
+.word 0xeef9c0d7
+.word 0xdd7ff210
+.word 0x51e497e8
+.word 0x3e14d533
+.word 0xefc53bea
+.word 0xf6d745d6
+.word 0x22a52335
+.word 0x1cf5eb47
+.word 0x6081c58e
+.word 0x9582a42a
+.word 0xbe68f01d
+.word 0xa0feab27
+.word 0xab73eb78
+.word 0xcd6dc310
+.word 0xda44be54
+.word 0x0d11d953
+.word 0x7dad1d1c
+.word 0x0525a62d
+.word 0x70ae0919
+.word 0xcacf775a
+.word 0x02fc0fcc
+.word 0x1ad73177
+.word 0x4f4d2670
+.word 0x0bf31365
+.word 0x61ed893b
+.word 0x465dd604
+.word 0x34c5f08f
+.word 0x04d8a297
+.word 0x514e02da
+.word 0x3edd3e8e
+.word 0x7877fbdc
+.word 0x23973271
+.word 0xf8b14632
+.word 0xcb203907
+.word 0x5a5229dd
+.word 0x9771a295
+.word 0x25a94827
+.word 0xe121ba55
+.word 0xd801f7bb
+.word 0xdabad410
+.word 0x27b79e9b
+.word 0x61d5deca
+.word 0x43a40a7e
+.word 0x7fb3e09a
+.word 0x61749cc0
+.word 0xebcb1308
+.word 0x683332fb
+.word 0xce297a97
+.word 0xcb7beab1
+.word 0x7cea8948
+.word 0x10a7edc1
+.word 0x93ab7f04
+.word 0x04e36b58
+.word 0xfa6365a6
+.word 0x008e5234
+.word 0x09652d3f
+.word 0x42b81142
+.word 0xaad745e6
+.word 0xd38740c2
+.word 0x00921762
+.word 0x65cb5bc0
+.word 0x951809dd
+.word 0x4c57dc66
+.word 0xfb8315e1
+.word 0x5c3b11c9
+.word 0x542c2184
+.word 0xdf3b1dc1
+.word 0xebb7f862
+.word 0xd680cbec
+.word 0x397ccc42
+.word 0xdf330f44
+.word 0x59b621ad
+.word 0x39739b9e
+.word 0x5fa2380d
+.word 0xcfd64d05
+.word 0xb12c243a
+.word 0xc75af12e
+.word 0x8148bc9e
+.word 0x76e58333
+.word 0xd24503ca
+.word 0x168c99a8
+.word 0x47c90340
+.word 0xbbe91806
+.word 0xdcc501b5
+.word 0xa654ef83
+.word 0x9ac6b0ea
+.word 0x2bb341f7
+.word 0x8c0988a3
+.word 0xeb5d1840
+.word 0x2ec34060
+.word 0xb13126ed
+.word 0xed3daff8
+.word 0x96765f9a
+.word 0x508c3276
+.word 0xc02a0426
+.word 0x00a125a4
+.word 0xe292e927
+.word 0xa829dac1
+.word 0x0694735f
+.word 0x8315bcc3
+.word 0x41dd9eda
+.word 0x9a5f78dc
+.word 0x157ff804
+.word 0x1f45bed0
+.word 0xe50b9bd2
+.word 0x22976661
+.word 0x5d556fac
+.word 0x31bd0eb3
+.word 0xa43c71b0
+.word 0x7e447dde
+.word 0x9e0f8b84
+.word 0xd437080e
+.word 0x318ce4fd
+.word 0x958a32fe
+.word 0xd40487ab
+.word 0x5924a570
+.word 0x5ef0bc37
+.word 0x3c7ff739
+.word 0x561bd4e3
+.word 0x988e5199
+.word 0xea92579a
+.word 0xed7908a6
+.word 0x38fb200a
+.word 0xdd1209c1
+.word 0xb89fda31
+.word 0x526e3308
+.word 0x9e980fb7
+.word 0x408ff2b9
+.word 0xd9f27a5d
+.word 0xed9926ed
+.word 0xb1ef7e71
+.word 0x93cb840c
+.word 0x96b3e40a
+.word 0x3d33382f
+.word 0x3570f8fe
+.word 0x7eadaa90
+.word 0x310241de
+.word 0xb74e9c45
+.word 0x9eb05e11
+.word 0x57b82346
+.word 0xb7852639
+.word 0x3642fe7f
+.word 0xc832caf6
+.word 0x172a7ab0
+.word 0x1db81815
+.word 0x8414f2fd
+.word 0x2ac3949a
+.word 0xf09134c6
+.word 0x5e3145f1
+.word 0xfe87ae9d
+.word 0x04c2a10a
+.word 0xa945703d
+.word 0x0724824f
+.word 0x9f208187
+.word 0xae1231fc
+.word 0xb8c86530
+.word 0xc2fd6f59
+.word 0x779a8b68
+.word 0x87522e80
+.word 0x60feb5ec
+.word 0x03bde6cc
+.word 0x4b187bf8
+.word 0x250e98b7
+.word 0x02aa6a11
+.word 0x595dd869
+.word 0x45c34f34
+.word 0xce120daf
+.word 0xa169cb01
+.word 0x91f21be7
+.word 0x44e4c6c3
+.word 0xfbf5fd28
+.word 0x12dbb2f7
+.word 0x3fe1dfab
+.word 0xca4a9b5f
+.word 0x4dd4428f
+.word 0xf216f3db
+.word 0x0c1e6160
+.word 0xcf5cd230
+.word 0xc6f4533b
+.word 0xfb25308c
+.word 0xb337f3d9
+.word 0x38aebc2d
+.word 0x84a7bd18
+.word 0x491f6eaa
+.word 0xf92bbeff
+.word 0xb0c1e98c
+.word 0x7d25c134
+.word 0xcb4ca2fa
+.word 0xf448c929
+.word 0xb333d557
+.word 0xb962fabe
+.word 0x2489cd24
+.word 0x78838ab4
+.word 0x4f59c3d2
+.word 0x5860f611
+.word 0xbeff158d
+.word 0xc9bd6fd8
+.word 0xc21389ba
+.word 0xb8403488
+.word 0xbad57f6d
+.word 0x2868e263
+.word 0x12693388
+.word 0xfbee1116
+.word 0x81d3fb5f
+.word 0x68714971
+.word 0xfac2824f
+.word 0xa3a88045
+.word 0x2e49401e
+.word 0xc0003cb4
+.word 0x0ed8b767
+.word 0x7eccc6e6
+.word 0x53f140c2
+.word 0xc386c471
+.word 0xf8c4b181
+.word 0x83ae2577
+.word 0xc83ff939
+.word 0x8ca6524c
+.word 0x09bb3f58
+.word 0x5bce48be
+.word 0xbacbc5bc
+.word 0x2d60a9a9
+.word 0x00b1ca67
+.word 0x88965cd0
+.word 0x68f1b43f
+.word 0x952d06f8
+.word 0xe0bae41f
+.word 0xcb515ff1
+.word 0x1a6931e0
+.word 0x617adf75
+.word 0x9bc30d2c
+.word 0x672d0012
+.word 0xf7aca595
+.word 0x5b509a61
+.word 0xcea690eb
+.word 0x968a154b
+.word 0xa39c6fc8
+.word 0xd770b7eb
+.word 0x62934329
+.word 0xf1ab74f7
+.word 0x3c5fcc6c
+.word 0x7862023d
+.word 0x37141d41
+.word 0xfa95c665
+.word 0xb212c9b4
+.word 0xbdf6270b
+.word 0xa5d12ecd
+.word 0xa84b4f49
+.word 0x84ed0f4e
+.word 0x9af22dea
+.word 0x29fd232c
+.word 0x9482aec9
+.word 0xb766f924
+.word 0x87aa013f
+.word 0xde241221
+.word 0xce032ae7
+.word 0x5e0e4f37
+.word 0x41589bd9
+.word 0x9c4d125f
+.word 0xe867c8a4
+.word 0x8e39181b
+.word 0x2be32893
+.word 0xdceeddb6
+.word 0xa71ffce6
+.word 0x18c765fa
+.word 0x121a9341
+.word 0x976e324d
+.word 0xc21996da
+.word 0xedad95da
+.word 0xf1da9196
+.word 0xdab68946
+.word 0xe3502602
+.word 0x95756b78
+.word 0xe36df6b3
+.word 0xb1bb8a49
+.word 0x7cc063a7
+.word 0x147a29de
+.word 0x74b0462d
+.word 0xf794b5e7
+.word 0xc7597091
+.word 0x953dfc34
+.word 0xab7222b8
+.word 0xd1febb13
+.word 0x44e9d8be
+.word 0xad043117
+.word 0x5087c1e9
+.word 0x91dd6624
+.word 0x07501496
+.word 0xa63e4eaf
+.word 0xdb710845
+.word 0x9cdf8d7e
+.word 0xa049c529
+.word 0xb09c5d52
+.word 0x66a80f20
+.word 0x02cc47b8
+.word 0x52972b53
+.word 0xab2ca150
+.word 0x664b4c4e
+.word 0x55bd11e0
+.word 0xcf949d60
+.word 0x45d641ec
+.word 0xdeb162a3
+.word 0xfe9274f8
+.word 0x1e30578c
+.word 0x7572c10e
+.word 0x6cd9c7bc
+.word 0x3f225344
+.word 0xbf0c4171
+.word 0x59d003ff
+.word 0x58afa239
+.word 0x588da923
+.word 0x8d7b57a0
+.word 0x8423dbaa
+.word 0x424e5f51
+.word 0x71e9b133
+.word 0xc63ddab2
+.word 0xcb53879d
+.word 0x516f19a8
+.word 0x75b3b727
+.word 0x9379ef3f
+.word 0xf26b979f
+.word 0xede8744f
+.word 0xacaa31db
+.word 0x46da93fd
+.word 0x4cdca58c
+.word 0x1e7a08a1
+.word 0x005eccb3
+.word 0xa507b5be
+.word 0x6d54e672
+.word 0x3823828e
+.word 0x0a24631a
+.word 0x2790169a
+.word 0x952a6525
+.word 0xa4094b63
+.word 0x59177c2d
+.word 0xd78022a4
+.word 0x843b828f
+.word 0x158bc527
+.word 0x024e70f1
+.word 0xf9c9d58f
+.word 0xe77910ec
+.word 0x75d7c5f1
+.word 0x0b3d0895
+.word 0xac923f26
+.word 0xc4b1188f
+.word 0x3a6aaf8a
+.word 0x3e15f808
+.word 0xcb77dac0
+.word 0x3c049690
+.word 0xca509cf6
+.word 0x48ef3fec
+.word 0x3bd7ddff
+.word 0xa5140689
+.word 0x0a4d09a4
+.word 0xbb61d201
+.word 0xec8ed259
+.word 0x19b0a60a
+.word 0x68f8bd7c
+.word 0x02573be3
+.word 0xd12e7861
+.word 0xbe591b91
+.word 0xecf20be4
+.word 0xdcf549a7
+.word 0x0319d381
+.word 0xb133e9ba
+.word 0xd5b047eb
+.word 0x91d1a183
+.word 0x368606f2
+.word 0x374b7732
+.word 0xab95afee
+.word 0x2bca849a
+.word 0x0b25b319
+.word 0xe326956a
+.word 0x6a347484
+.word 0xa650d1bc
+.word 0x1db40547
+.word 0x773e425d
+.word 0x5ed4dfa2
+.word 0xebe5e1d2
+.word 0x2601a97b
+.word 0xddc3ad61
+.word 0x27a12381
+.word 0xc81276f0
+.word 0x6a0727a7
+.word 0x1772407a
+.word 0xc5e889fa
+.word 0x4b792e6a
+.word 0xf1fcad94
+.word 0xd2372e59
+.word 0xb78216b4
+.word 0xd32f871a
+.word 0x8a8f1e2e
+.word 0x07d97ad6
+.word 0x11762476
+.word 0x108651d1
+.word 0x420701d1
+.word 0xd2df70b3
+.word 0xb39c8988
+.word 0x7203f36e
+.word 0x63eb5155
+.word 0xba9e63da
+.word 0x5cb1601e
+.word 0xde28570e
+.word 0x9f1239c9
+.word 0x343f4f24
+.word 0xce25f2b5
+.word 0x1bbecf49
+.word 0xa43c0b09
+.word 0x94228278
+.word 0x1ee9c670
+.word 0x7e669a14
+.word 0xc6f3849a
+.word 0x92244bc6
+.word 0x1aff79e8
+.word 0x46456eea
+.word 0x54325d99
+.word 0xca2fa1e2
+.word 0x000c55ab
+.word 0xddad16eb
+.word 0xdb8f8d90
+.word 0xc0cddbf2
+.word 0xde7cc5a4
+.word 0x08565944
+.word 0x836d634b
+.word 0xe03fdec4
+.word 0xe34d1090
+.word 0xe1849957
+.word 0x85d8c261
+.word 0x354c9769
+.word 0x20f196eb
+.word 0x8083fbd0
+.word 0x56834be5
+.word 0xf2d99655
+.word 0xc6460e25
+.word 0x48c78d3e
+.word 0xa4e7bee4
+.word 0x660b41df
+.word 0x0d68f141
+.word 0x30578904
+.word 0xea1b4b36
+.word 0x8daab282
+.word 0xadd3ce96
+.word 0x477f097c
+.word 0xa1fb52d1
+.word 0x170e0661
+.word 0x5dc31e1e
+.word 0x0deb4397
+.word 0xe7df0f51
+.word 0xe9e61dda
+.word 0x80442bc1
+.word 0x8a151bcf
+.word 0xda9e970a
+.word 0xa0518bec
+.word 0x50ba6f2a
+.word 0xff0b52a3
+.word 0x17a7f9e9
+.word 0x9718a7f1
+.word 0x656d454e
+.word 0x79b0c798
+.word 0x99efb6cb
+.word 0x7275d467
+.word 0x42305c45
+.word 0x88c98cf2
+.word 0xeca6b17e
+.word 0xaeda0fda
+.word 0xc594a58b
+.word 0xf44866ee
+.word 0xbe698b38
+.word 0xcb46eaa9
+.word 0xcf71cfdf
+.word 0xfe2b2efb
+.word 0x9f98531d
+.word 0x0e9053b9
+.word 0x6fa1044b
+.word 0x27ec854f
+.word 0x9ea7341e
+.word 0xd2f49886
+.word 0xcb10212c
+.word 0x17c34c97
+.word 0x09c247d3
+.word 0xd92e63fd
+.word 0xe1c4dd16
+.word 0x46a30d7d
+.word 0xa85f8d3f
+.word 0xfc11057d
+.word 0xd30c231d
+.word 0x0207b446
+.word 0x7bd34195
+.word 0xfce1e8a7
+.word 0x6ea220d4
+.word 0x65e984bc
+.word 0xc9de3a6d
+.word 0x6d5b7fb6
+.word 0x73a1469a
+.word 0x9a1de875
+.word 0xca89f0b6
+.word 0x62573e18
+.word 0xa6346c87
+.word 0x3c618273
+.word 0x4861da60
+.word 0x0df83fc7
+.word 0x7c22fafd
+.word 0x3afdc4ae
+.word 0x8afb7f32
+.word 0xd631fc05
+.word 0xc8ae8e74
+.word 0x232c3087
+.word 0xa2c516ee
+.word 0x566a7700
+.word 0x8a0ab8cb
+.word 0x6bc56105
+.word 0x61a71a13
+.word 0x04ef9fc9
+.word 0xa8524c36
+.word 0xa4b45ca7
+.word 0x743c7f77
+.word 0xcaa06db8
+.word 0xc1dc4c9f
+.word 0xef0568b0
+.word 0x213f4467
+.word 0x0da85492
+.word 0x5f2a36fb
+.word 0xaf17b63e
+.word 0xb6f10e93
+.word 0xb74904cb
+.word 0x6f008b27
+.word 0x5ede7eee
+.word 0x8b190f3e
+.word 0xe4388355
+.word 0xc2e3908c
+.word 0x275ce094
+.word 0x074166ca
+.word 0x3693833e
+.word 0x6e501adc
+.word 0xbc6c930c
+.word 0x69106ec3
+.word 0xe78d3a57
+.word 0xcd7020b9
+.word 0x8a5431e5
+.word 0x5399b6a4
+.word 0x49b2feed
+.word 0x902d919d
+.word 0xd321124b
+.word 0x65d6114a
+.word 0xd240ef60
+.word 0x30445117
+.word 0xbe55ae4d
+.word 0x997766cd
+.word 0x2b29c46d
+.word 0xc4b0f5ff
+.word 0x41af83c6
+.word 0x01a548a0
+.word 0x4bff0e10
+.word 0xdb852189
+.word 0x47eabb1a
+.word 0x54b43d5c
+.word 0x75d86465
+.word 0xcbabf3fc
+.word 0x5e3ec766
+.word 0xdd7f1224
+.word 0x65145936
+.word 0x664157e7
+.word 0x73cdddc2
+.word 0xc26aa462
+.word 0x3e96f8cf
+.word 0x4d9e124f
+.word 0xa09d8804
+.word 0xc090b063
+.word 0xe5687f5d
+.word 0x6186d282
+.word 0x9802b221
+.word 0xf017e968
+.word 0x0bf2ff3c
+.word 0xcb08ee89
+.word 0x754af664
+.word 0xc685682f
+.word 0x00747ea3
+.word 0x1b68ac17
+.word 0x2ebf1d4c
+.word 0x5863122d
+.word 0x9e53ebab
+.word 0xa5a4ba62
+.word 0x6eca590f
+.word 0xb362280a
+.word 0xa5b7ea74
+.word 0x79774bfb
+.word 0xe04df78a
+.word 0xcc7132b6
+.word 0x6d2cd1e3
+.word 0x991c15c2
+.word 0xd5b645d1
+.word 0x79534a24
+.word 0x54ff0490
+.word 0x0648de49
+.word 0x40ec7c06
+.word 0x41abb8ec
+.word 0x42e0076e
+.word 0x003e49ff
+.word 0x218443ea
+.word 0xf6940036
+.word 0x3bb0d11c
+.word 0x7fa144dc
+.word 0x00f73ba2
+.word 0xe16d2157
+.word 0xe2eb6e03
+.word 0x71381e6f
+.word 0x0bf48a55
+.word 0x2202c087
+.word 0xc05bc509
+.word 0x2ed3d774
+.word 0x3e1288ac
+.word 0xb4fc0c39
+.word 0xe7a25c73
+.word 0xff2cf512
+.word 0x84d21e33
+.word 0xf0ba7f0f
+.word 0x83df1766
+.word 0x7f2f1269
+.word 0xad7db4b5
+.word 0xba8c0226
+.word 0x5ca0ea8f
+.word 0x883899fb
+.word 0xd88a010d
+.word 0x85f001ac
+.word 0x48900501
+.word 0xd12ea752
+.word 0x9cda41ee
+.word 0x3497e1aa
+.word 0x859b5aff
+.word 0x2209f891
+.word 0x7ac89187
+.word 0xa27107ee
+.word 0x0ed174e1
+.word 0x8edad381
+.word 0x0bb50eeb
+.word 0xc67d7601
+.word 0x12ce6dc1
+.word 0x2f297ff5
+.word 0x01150cb3
+.word 0x995dabe0
+.word 0x70983821
+.word 0x589397de
+.word 0xedf6f5b0
+.word 0x03d294b1
+.word 0xb08aee18
+.word 0xbc4c8167
+.word 0xb9c7db66
+.word 0x81c05520
+.word 0xe1f4e0b1
+.word 0x1a526f3c
+.word 0x7aa8bab8
+.word 0xb7da3b10
+.word 0xf7ad48d0
+.word 0x241bbd99
+.word 0xd85eef78
+.word 0xdd296f5f
+.word 0x285f922f
+.word 0xab5ce80b
+.word 0x5fb7456a
+.word 0xe69c65fb
+.word 0x7495fc53
+.word 0xa402ce52
+.word 0x2585a17f
+.word 0x3b9d35fb
+.word 0x4cdb90a6
+.word 0xeaf116c8
+.word 0xc7abc4ed
+.word 0xbab08c37
+.word 0x6392dc23
+.word 0xb87da639
+.word 0x7482afa6
+.word 0xd0283d14
+.word 0xd174cb26
+.word 0xdf7a0846
+.word 0x85bf39ed
+.word 0x045bb240
+.word 0xf9576f04
+.word 0x69272f04
+.word 0x2bfd7dc7
+.word 0xe475dca6
+.word 0xceeb89e2
+.word 0xfb3a096e
+.word 0xec1e958b
+.word 0x10701822
+.word 0xc865fea4
+.word 0x36ebdf65
+.word 0xa07cca70
+.word 0xb7252146
+.word 0x9ee9b03e
+.word 0x3539364a
+.word 0x837f6dac
+.word 0xffe0f1c3
+.word 0xb5515ddf
+.word 0xfe615957
+.word 0x0631f1c1
+.word 0x0dae5a55
+.word 0xc6f42bd3
+.word 0x4477089e
+.word 0x40a36e16
+.word 0xb8e2f196
+.word 0x77fca52a
+.word 0x48b96fc6
+.word 0x0765f5f7
+.word 0x21babeef
+.word 0x2b1f64cb
+.word 0x6c5f429a
+.word 0x8932e7ce
+.word 0x015517c5
+.word 0x12905170
+.word 0x93c90ac4
+.word 0x3e61ef0f
+.word 0x160a170f
+.word 0x0bc14454
+.word 0x725fb40d
+.word 0x065512c9
+.word 0x67a026e7
+.word 0x20937709
+.word 0x9f31bf07
+.word 0xe3036886
+.word 0x640daf6d
+.word 0x4b88b04a
+.word 0x7390208b
+.word 0x2b8b18e6
+.word 0x55ff96c7
+.word 0x8eef9074
+.word 0x8acb2c0c
+.word 0x1c097fba
+.word 0x18f94196
+.word 0xbdf9facb
+.word 0xd25f28a6
+.word 0x650ccf8f
+.word 0x04e3c930
+.word 0x4a92e304
+.word 0x9454dd37
+.word 0x754b51e8
+.word 0x2fbf735a
+.word 0x15a9b253
+.word 0x7d08b63a
+.word 0xb2695720
+.word 0x1721ad36
+.word 0x32c3d61a
+.word 0xf54fb7db
+.word 0xd8a4b24b
+.word 0xbbcf23b8
+.word 0x7c7d6352
+.word 0x7d9a57a3
+.word 0x2e761a66
+.word 0xaf62a4d4
+.word 0x32844a4a
+.word 0x4a338588
+.word 0x8238924a
+.word 0x358949b0
+.word 0x8671e070
+.word 0x6f2e34f3
+.word 0xe59b5566
+.word 0x3b6d4bfb
+.word 0x27868cd2
+.word 0x00c7b1e2
+.word 0x9359312f
+.word 0x7df93db4
+.word 0x015d1de5
+.word 0x6a3c4467
+.word 0xa0c982df
+.word 0x9241e721
+.word 0x1613c1c4
+.word 0xc7791f57
+.word 0xa0112332
+.word 0x43616c35
+.word 0x55a3260d
+.word 0x67c15ce0
+.word 0x1d392574
+.word 0x4e4d5e38
+.word 0x9ff2ba37
+.word 0x0f27b306
+.word 0xd14b1ef5
+.word 0x52a0820d
+.word 0xb35b5c91
+.word 0x0898b48e
+.word 0xc844e5b8
+.word 0x89e06c4e
+.word 0xcc41a866
+.word 0xd4567a72
+.word 0xae03c227
+.word 0x7bf6556b
+.word 0x296ef2cd
+.word 0xbe72bdd8
+.word 0x9ce9fed3
+.word 0x984ee61a
+.word 0x2bf6b404
+.word 0x60845ad3
+.word 0xb362b68d
+.word 0x20734b1b
+.word 0xeff56cd7
+.word 0x7f031f52
+.word 0x1725a325
+.word 0x2f3de16a
+.word 0xfde10f30
+.word 0x30f3e61b
+.word 0xc054f30c
+.word 0x6ac303da
+.word 0xcf2bacd3
+.word 0x41a9c128
+.word 0xe12c3968
+.word 0x1a75e34c
+.word 0x30cc4ad3
+.word 0x1f0beafe
+.word 0xc3f4c6af
+.word 0x1df4c330
+.word 0xe29e49be
+.word 0xedb81ee4
+.word 0x5dedbecd
+.word 0x91168efa
+.word 0xd9c6042c
+.word 0xdd47d1f3
+.word 0x2daca8b8
+.word 0xdbfb9a12
+.word 0xaf8f3c68
+.word 0x5d644808
+.word 0x724d72ca
+.word 0xbf1f3d69
+.word 0x9bf96d4a
+.word 0x33674c8a
+.word 0xf0f8c47e
+.word 0xd5daa191
+.word 0x97840cd6
+.word 0xdcb72b92
+.word 0x4c7c7c8b
+.word 0xc44a9b35
+.word 0x6481d96d
+.word 0xfbb1f0b3
+.word 0x203f61e4
+.word 0x823472a9
+.word 0xb371398d
+.word 0x14cf75fc
+.word 0x7ba06d3b
+.word 0x4a4e73af
+.word 0x8cd7ce67
+.word 0xaba94090
+.word 0x3ca26e7f
+.word 0x53c69a42
+.word 0x5ce840ac
+.word 0x9b049822
+.word 0xa5b3335f
+.word 0x5442038a
+.word 0x41472e9e
+.word 0x4bfdbeaa
+.word 0x9c27c16d
+.word 0x895a6ea1
+.word 0x75ecaf5c
+.word 0x46e991bd
+.word 0xc8e48abb
+.word 0x8972771d
+.word 0x27fbf3dc
+.word 0x7b946827
+.word 0xf5aa0f46
+.word 0xc7c4e2cf
+.word 0x02031290
+.word 0xbc864bd1
+.word 0x2178e7a5
+.word 0x5b81e728
+.word 0x00a3ca70
+.word 0x66939414
+.word 0x272c5e68
+.word 0x96583f1b
+.word 0xa6e10dde
+.word 0x27410224
+.word 0x48082290
+.word 0xfe76a2c2
+.word 0x0c2e03f5
+.word 0xa3bebc10
+.word 0xb188615c
+.word 0x93c0f909
+.word 0x71322a28
+.word 0xb8d30aad
+.word 0x83a738f8
+.word 0x43e8aa59
+.word 0xe30541b6
+.word 0x4ec2a9a2
+.word 0xaa8c2f7d
+.word 0xacb6092b
+.word 0xec02a0d8
+.word 0x8665ee45
+.word 0x8d93d28c
+.word 0x6f39c18d
+.word 0xfd672dff
+.word 0x7606a0da
+.word 0xedda5371
+.word 0x4961bc9a
+.word 0x2f790a5c
+.word 0x3048f83f
+.word 0x03cc5ef9
+.word 0x3eadfc5f
+.word 0xa59a3581
+.word 0x4a7d0a6d
+.word 0x5a29e7d0
+.word 0x88c4aca6
+.word 0x66b32f89
+.word 0x1bc4dfe2
+.word 0x01d40337
+.word 0x8d6b4163
+.word 0xc43d986e
+.word 0x45eaa549
+.word 0x8a4602aa
+.word 0x3b172bf8
+.word 0x7363becb
+.word 0x9ebda511
+.word 0x5b899448
+.word 0xde1045ec
+.word 0xf70d3f40
+.word 0x16c4ba89
+.word 0xae6da812
+.word 0x491bd276
+.word 0xe6607d1c
+.word 0xede7b29d
+.word 0xc86c5398
+.word 0x6e15dcd8
+.word 0xee7c0995
+.word 0x11579451
+.word 0x24124ac3
+.word 0x2c32ce26
+.word 0x8d3a45a6
+.word 0x56db2a6d
+.word 0x71bfb43f
+.word 0x9f487cc8
+.word 0xef0a624d
+.word 0xe738815c
+.word 0x62dd5d9a
+.word 0xd44e6218
+.word 0xafaaf55d
+.word 0xc17d505b
+.word 0x224abc65
+.word 0xa00d553a
+.word 0x45ebeb76
+.word 0x110c3a63
+.word 0xc0966249
+.word 0x3414a8fa
+.word 0x09d4b31b
+.word 0xfa12b547
+.word 0x7f94e3d6
+.word 0x77f2eef4
+.word 0xa90357c7
+.word 0x07a7f495
+.word 0x246306dc
+.word 0x308d18cf
+.word 0x77109951
+.word 0x0eab801e
+.word 0x1fdb08e0
+.word 0x003c1a45
+.word 0xb47706e9
+.word 0x3d46af5d
+.word 0x00a7fd70
+.word 0x25489086
+.word 0xbdf000f8
+.word 0x9dc40812
+.word 0x52ffd7f7
+.word 0x06c7c985
+.word 0xbfbeea44
+.word 0xced73157
+.word 0x55299895
+.word 0xe52df8ff
+.word 0xcb6cb779
+.word 0x03820428
+.word 0x84596062
+.word 0xcd4441a7
+.word 0x3cdd4500
+.word 0xa8998773
+.word 0xf5fa9e08
+.word 0xd24d2aca
+.word 0x739d67d9
+.word 0x224bfeb2
+.word 0x57f0e3bb
+.word 0xe155b63e
+.word 0x50ae6db0
+.word 0x98f9644b
+.word 0xdad30f5e
+.word 0x7bc69e6c
+.word 0xabfba967
+.word 0x46e551f0
+.word 0x05fd705b
+.word 0xfce49a47
+.word 0xf5666fdf
+.word 0x859cd6f2
+.word 0x50b0d563
+.word 0xa37822c8
+.word 0xec2a05e3
+.word 0x73318d65
+.word 0x414f4bc7
+.word 0xa34fc426
+.word 0x442888a2
+.word 0x57cd45bc
+.word 0xe499ee30
+.word 0x24ec45bb
+.word 0xe069394b
+.word 0x3d3530b0
+.word 0xac7df8bb
+.word 0x45158958
+.word 0x649810ca
+.word 0xaec4ae4e
+.word 0x21dd49d7
+.word 0x82147ef1
+.word 0x0cc195b7
+.word 0xb372f1a8
+.word 0x437a77a2
+.word 0x9710e548
+.word 0x7079fbcd
+.word 0x919561d6
+.word 0xfc9930f0
+.word 0x00528493
+.word 0xbfac9bc6
+.word 0xdf47cba5
+.word 0xcb6a4867
+.word 0x33b82b07
+.word 0x0d0e1371
+.word 0x017a7761
+.word 0x58e85482
+.word 0x7a176af8
+.word 0xb468ab40
+.word 0xdadca372
+.word 0x7b8c1620
+.word 0x5bfd85a9
+.word 0xa5a6996a
+.word 0xa6b4f6b2
+.word 0x933d44e9
+.word 0x0f57ed70
+.word 0x7a06fe30
+.word 0xa1b0beeb
+.word 0x11369716
+.word 0xfa387c83
+.word 0x5283ed77
+.word 0x8343df18
+.word 0x6aef60b4
+.word 0xcb3948bd
+.word 0x8d6a7d05
+.word 0x2784899c
+.word 0x08d33e4c
+.word 0x969b578e
+.word 0x6406615b
+.word 0xaa82d05a
+.word 0xea82c335
+.word 0x6ea6d7f9
+.word 0xff6e1876
+.word 0xa8a18c3b
+.word 0x8347f689
+.word 0x8a8b5426
+.word 0xcfc79f9d
+.word 0xd4a858fe
+.word 0x4b591181
+.word 0x392fa4a4
+.word 0x46f78025
+.word 0x6268ddda
+.word 0x5579b7cb
+.word 0xdd67f677
+.word 0xed058eff
+.word 0xb1e66fda
+.word 0xdbd71f2d
+.word 0x7f22aec4
+.word 0x01a44f67
+.word 0x8fc6eecf
+.word 0x1a1d335a
+.word 0x30ee82c6
+.word 0xf0cb2620
+.word 0xe2c1259d
+.word 0x502b25ea
+.word 0x6c70dc97
+.word 0x3320c51f
+.word 0x2ecb6ffb
+.word 0xd6b56a04
+.word 0xdfce75fd
+.word 0xfe2d9764
+.word 0x779d8c2b
+.word 0xa1ff3ed7
+.word 0x05522221
+.word 0x5e123a05
+.word 0xa987d9a5
+.word 0x45e76c17
+.word 0x40735d8b
+.word 0x0ebe8903
+.word 0x87a8830e
+.word 0x73c03904
+.word 0x95552427
+.word 0x50f6e1af
+.word 0x8fc1aa2a
+.word 0x9e9f06fe
+.word 0xac2c4a0f
+.word 0xc3351cd7
+.word 0x7ca2cc16
+.word 0x8400aaa5
+.word 0x1494855f
+.word 0xb96b87ed
+.word 0x753f93bf
+.word 0xd2659071
+.word 0xb6aaaa8c
+.word 0x8f55cdf1
+.word 0x02ac6fb1
+.word 0x86c663f2
+.word 0xfd6db375
+.word 0xf0a637e5
+.word 0x47f5a89b
+.word 0xdd1f35b8
+.word 0xf031afe6
+.word 0xca5d1f45
+.word 0xd5082951
+.word 0x3a53abdb
+.word 0x6cdd6dde
+.word 0x0ad141c9
+.word 0x992da931
+.word 0x7793d984
+.word 0x3563583f
+.word 0xb02b2a82
+.word 0x0ab9090c
+.word 0xda4fb804
+.word 0x6db872bc
+.word 0x3370f3f4
+.word 0x3aa5d5ac
+.word 0x1e2364de
+.word 0x4d88dc88
+.word 0x984c0585
+.word 0x24e5b3d5
+.word 0xf31b7026
+.word 0xdfb263b2
+.word 0xd51dfde7
+.word 0x03041f40
+.word 0x8378df51
+.word 0x0dceee11
+.word 0x77ce3228
+.word 0x7a7ea0c2
+.word 0x4d27fee5
+.word 0xe0393451
+.word 0x283b9fa0
+.word 0xb97b4ed7
+.word 0xca2a42fb
+.word 0xc34ed0b8
+.word 0xf6628dc2
+.word 0x5bbe9fdc
+.word 0x884dc4b7
+.word 0x332d3279
+.word 0xa9ee0379
+.word 0x134c1794
+.word 0x7310866c
+.word 0xf006b7a7
+.word 0x8be52dc5
+.word 0x26062604
+.word 0x7ec6474e
+.word 0x3ab7be2f
+.word 0x6860d70d
+.word 0xa10f8deb
+.word 0xb4113785
+.word 0xdc8d824d
+.word 0x51c2ceab
+.word 0x961f5a17
+.word 0xdc8df109
+.word 0xfabc8507
+.word 0x9a65752e
+.word 0x9a3f8fb3
+.word 0x2d924590
+.word 0xed90dcb4
+.word 0xe16e02f9
+.word 0x949d7dd5
+.word 0x95dc4652
+.word 0x4b6ea796
+.word 0xf000df17
+.word 0x9da832f2
+.word 0x3d4b556e
+.word 0xb0427c99
+.word 0xe9920ba5
+.word 0xfcd1440d
+.word 0x516f3f8f
+.word 0x1c8257ab
+.word 0xf2521dbc
+.word 0x4cec7e9b
+.word 0x35670a88
+.word 0xff725db8
+.word 0xf4d54d9a
+.word 0x76c2eda0
+.word 0xb8443fbb
+.word 0x0f00a1b2
+.word 0x4a647442
+.word 0x51c7c2be
+.word 0x9d5a3b2b
+.word 0x11d17a3e
+.word 0xfaa5229b
+.word 0xc112ca9d
+.word 0x70aa52ff
+.word 0x9a0ebfa4
+.word 0x1bc94f55
+.word 0x6f2faafc
+.word 0xc14e0c10
+.word 0x8dfd4d57
+.word 0x897ae85f
+.word 0x4e503af4
+.word 0xe478bda4
+.word 0xac043390
+.word 0x86b9aa03
+.word 0xc6906c12
+.word 0x3730694b
+.word 0x19c1d743
+.word 0xbe59fbda
+.word 0xdd992db0
+.word 0xc37e3f9b
+.word 0xadfe1b2a
+.word 0x90898059
+.word 0x6a4a64f1
+.word 0x2057d379
+.word 0xd264dddb
+.word 0x9ecc98fc
+.word 0x71c8aab3
+.word 0x8f3c11e0
+.word 0xb47542d0
+.word 0x8c3e5b35
+.word 0x4cde7867
+.word 0x5ce1881e
+.word 0x950c2485
+.word 0xb018e72f
+.word 0xcab73433
+.word 0xb275174d
+.word 0xd225f295
+.word 0xd76e104a
+.word 0x28e1063e
+.word 0xa3ab981d
+.word 0x0ef59342
+.word 0x7cf03c21
+.word 0x127f9188
+.word 0x726e1328
+.word 0x344d7310
+.word 0x100bccd1
+.word 0x9d6cfd6e
+.word 0x432e933a
+.word 0xe161a0b2
+.word 0x13e98c52
+.word 0xf92bf7ac
+.word 0x3142aba8
+.word 0xabc2aa91
+.word 0x38b32455
+.word 0xaa474b05
+.word 0x7cf81d4d
+.word 0x554077aa
+.word 0x9d16aa8d
+.word 0x9e031f7d
+.word 0xd327d6a2
+.word 0x50120755
+.word 0x26822431
+.word 0xb1e68917
+.word 0x0c8925a2
+.word 0x404526ab
+.word 0x77c1bd08
+.word 0x9798f4ae
+.word 0x1226137e
+.word 0xb0cc4228
+.word 0xf650c75a
+.word 0xc63711c7
+.word 0x12319c8f
+.word 0xf11b1bcf
+.word 0xa62c4c89
+.word 0x8872c5c7
+.word 0x779bdbb4
+.word 0x1b19bb3a
+.word 0xb0a3bb9f
+.word 0x61bef60d
+.word 0x68b671ae
+.word 0xa113b491
+.word 0xece3e754
+.word 0x864cc604
+.word 0x0d8b0445
+.word 0x8f42c95b
+.word 0xb945ba69
+.word 0xacda6eb5
+.word 0x44f5e09c
+.word 0xa8122b6b
+.word 0x2566d191
+.word 0x6fa3258f
+.word 0x9cc19891
+.word 0x8ab96e9a
+.word 0x1f737fd5
+.word 0xd1f71e35
+.word 0xc3469c8b
+.word 0xda766194
+.word 0x11d1ed38
+.word 0xf7bca5ad
+.word 0x51360ccf
+.word 0x42c6cd83
+.word 0xac6bda10
+.word 0xa8bfdbfd
+.word 0xab135bbc
+.word 0x715e3c4e
+.word 0xdc514f70
+.word 0x365b5077
+.word 0x982effda
+.word 0xaffb856e
+.word 0x78085c6c
+.word 0x0b7082eb
+.word 0xd6731614
+.word 0x9b4b4b5a
+.word 0x4460c218
+.word 0xa7e3c30e
+.word 0x00990fcf
+.word 0xffc83f86
+.word 0x2da98235
+.word 0xfeaf2f32
+.word 0x9434270b
+.word 0xdfaa94d6
+.word 0x7d13f48a
+.word 0x9fafcbee
+.word 0x3e9fa197
+.word 0x6afee9c5
+.word 0xfdaddcd8
+.word 0xf29af2f4
+.word 0xa4183924
+.word 0xd7372998
+.word 0x1c3fb7e3
+.word 0x48c68bcb
+.word 0xad9cc940
+.word 0x91122eb8
+.word 0xc2a12f6c
+.word 0xc06f2473
+.word 0xe6e4c944
+.word 0xf62191de
+.word 0xabbde670
+.word 0x1e16c833
+.word 0x9463f75e
+.word 0xbed70a8c
+.word 0x054ff0c4
+.word 0xf9b76c17
+.word 0x7db3b1d4
+.word 0x31913ceb
+.word 0x7f0738c7
+.word 0xbabc453f
+.word 0xf30340bc
+.word 0x5d26b666
+.word 0xb8247d9b
+.word 0xf7a0eaef
+.word 0xe527c4df
+.word 0x41ec1c98
+.word 0x413d55ad
+.word 0x53cae635
+.word 0xc2a97502
+.word 0xc7467c37
+.word 0x3e493a61
+.word 0x5ac04a97
+.word 0xf0f21b0f
+.word 0xa7ea05bf
+.word 0x4254afa2
+.word 0xc68586e6
+.word 0x5b3223f6
+.word 0xf98cfaf8
+.word 0xd1b10f29
+.word 0xd7ad701e
+.word 0xd9f95910
+.word 0x1949ec8b
+.word 0x0b9b8ab7
+.word 0x09e8f917
+.word 0xe8015c57
+.word 0x2eac5119
+.word 0x5fd078fe
+.word 0xd2a1b9db
+.word 0x2964f407
+.word 0x9a7cda08
+.word 0xfd7bb78a
+.word 0x89dc945d
+.word 0xd2590bcc
+.word 0x9838340e
+.word 0xfac549ab
+.word 0xef774d3b
+.word 0xef79358f
+.word 0xfb7db504
+.word 0x00d93d6c
+.word 0x617363e5
+.word 0xf7f2b715
+.word 0xfb9bacc8
+.word 0x83d40598
+.word 0x63039d8e
+.word 0x07bdde3e
+.word 0x9978e008
+.word 0xca78bc7c
+.word 0xcbcb86ef
+.word 0x4d326ff0
+.word 0x524cbe28
+.word 0x26226ab4
+.word 0xf68422a7
+.word 0x0d037250
+.word 0x3cf62b8a
+.word 0xaf3af556
+.word 0xfb10f552
+.word 0x2057e66b
+.word 0xf642dbaa
+.word 0x9a756451
+.word 0x793ccf3d
+.word 0x557745a7
+.word 0x43ec02fe
+.word 0xd13b65c9
+.word 0x9c70f04a
+.word 0xfed57db0
+.word 0xfc338319
+.word 0xf3d65a26
+.word 0x8f378f1f
+.word 0x9acde669
+.word 0x031447a0
+.word 0xb255af38
+.word 0xdedf6da3
+.word 0xe684fc5a
+.word 0xb641d8de
+.word 0x01298a8e
+.word 0x0e29a7c5
+.word 0xaf610e79
+.word 0xd1757445
+.word 0x250882db
+.word 0xfb8fdae7
+.word 0xec5b9582
+.word 0xc004cb00
+.word 0xef9033cb
+.word 0xa20a130c
+.word 0x44fc60ef
+.word 0x0d9ee9cd
+.word 0x506cba3a
+.word 0x0a81ce25
+.word 0x3a0aaa8f
+.word 0x7c0ec1ea
+.word 0xfceed457
+.word 0x46bb330d
+.word 0x06096d21
+.word 0xdbd57ceb
+.word 0x21852d44
+.word 0x0c861456
+.word 0x91cb7f84
+.word 0x56c8b05c
+.word 0x99fd48e7
+.word 0x2e1d0687
+.word 0xb6ceea17
+.word 0x6cc87731
+.word 0xd6df66ec
+.word 0x21dce12c
+.word 0xde3fb42b
+.word 0xe1aa41a8
+.word 0x7ae0ecaa
+.word 0x93203319
+.word 0x35be9f4c
+.word 0x59fcec7c
+.word 0x6b5490e3
+.word 0x2f17a4e9
+.word 0xdad5ca39
+.word 0xb7853ad6
+.word 0xa1447804
+.word 0xb8f983f7
+.word 0x0d8895bd
+.word 0x2d30b09a
+.word 0x4cddce02
+.word 0x6e07422c
+.word 0x9d7a4a55
+.word 0x79dbafc2
+.word 0xa4da3591
+.word 0x77c54896
+.word 0x06a91bb5
+.word 0x0888b9e8
+.word 0xe1c54827
+.word 0x6fa95733
+.word 0xa647bf30
+.word 0x409c8739
+.word 0x9356be95
+.word 0x6613e1b4
+.word 0xe5b62073
+.word 0x804cf225
+.word 0x0e11adf8
+.word 0x9696e44a
+.word 0x3bf85bc9
+.word 0x0a1edaaa
+.word 0x61dd4d37
+.word 0xd2d11cf9
+.word 0x64325420
+.word 0xd303cc16
+.word 0x0d9d95dc
+.word 0xdec0f36c
+.word 0xded3475d
+.word 0xc2f23ce3
+.word 0xf13602a5
+.word 0x7e726bf5
+.word 0x2cdea984
+.word 0x4b1043ca
+.word 0x2605b54d
+.word 0x4027cb11
+.word 0xc2d0b78b
+.word 0x589ce3e6
+.word 0xbae6caac
+.word 0xf953db0f
+.word 0x8af3354d
+.word 0x51496b83
+.word 0x4665455b
+.word 0xdd01c90f
+.word 0xdd6fa38a
+.word 0x7db44b30
+.word 0x4456e304
+.word 0x52fd8451
+.word 0x21c00a21
+.word 0x56f19956
+.word 0xb43fd9c4
+.word 0x13c8a9b4
+.word 0x23267075
+.word 0x0514599b
+.word 0x2991b0a2
+.word 0xd31f5b1d
+.word 0xa5eb8547
+.word 0x33167266
+.word 0x74dbccab
+.word 0xdf838eb4
+.word 0x598c5cb4
+.word 0xb87d34fa
+.word 0xb7521d90
+.word 0x2da1b565
+.word 0xb41b4905
+.word 0x2cf3f011
+.word 0x0b2311e6
+.word 0xd5380866
+.word 0x93ba2e74
+.word 0xa0b54be3
+.word 0xc3475210
+.word 0xe575ede0
+.word 0x1c44954f
+.word 0xd4aa2726
+.word 0xa50dfa2d
+.word 0xe0b3a7fb
+.word 0xe6dab92b
+.word 0x303585c2
+.word 0x8743b0f8
+.word 0xafa6ff3f
+.word 0xab4d3c9d
+.word 0xbe48546b
+.word 0x3c64fc28
+.word 0xbeeba59b
+.word 0xbc319332
+.word 0xfd4ee500
+.word 0x97587290
+.word 0x5e594d60
+.word 0x5fb37909
+.word 0x089d2010
+.word 0x349b7bf4
+.word 0xaf161a09
+.word 0x56f46324
+.word 0x2516f042
+.word 0x67413abb
+.word 0xcfbbc9b1
+.word 0xe9f19a93
+.word 0x890efcb9
+.word 0xbf5edd99
+.word 0xb43757eb
+.word 0xda41298b
+.word 0x5c9b8fc0
+.word 0x17080931
+.word 0x11f8eb54
+.word 0x3e766a22
+.word 0xf9ae4fd8
+.word 0x413a7a5f
+.word 0xf150d7ce
+.word 0xfc4182b6
+.word 0x43884fc9
+.word 0x044233b4
+.word 0x14d90238
+.word 0x3e34278d
+.word 0x3b0b6e51
+.word 0x89d0375b
+.word 0x87e35038
+.word 0x7844eef1
+.word 0x42bd6e79
+.word 0x23538123
+.word 0x00b03435
+.word 0xfaea022f
+.word 0x16ed63b5
+.word 0x0f69a2b7
+.word 0x2cf56dd8
+.word 0x327e66ca
+.word 0x5a559fee
+.word 0x030f5ad4
+.word 0x29f1f309
+.word 0xa15bbf22
+.word 0xca3e421c
+.word 0xbbecd570
+.word 0xac95b925
+.word 0xca76ea51
+.word 0x87b879ae
+.word 0x6637a82d
+.word 0xc2d6bfc8
+.word 0xc6789b3a
+.word 0xb49ae62d
+.word 0xecf7e1a4
+.word 0x3539926a
+.word 0x75b644f9
+.word 0xb10550b4
+.word 0xcb568871
+.word 0x177fe768
+.word 0xd4013437
+.word 0x6a3ee5d7
+.word 0x761ac201
+.word 0xc8ecd594
+.word 0x9c34e5cf
+.word 0x056b34b8
+.word 0x1500c252
+.word 0x89228edb
+.word 0xd9cdde04
+.word 0x65dab62b
+.word 0xfbd66a12
+.word 0x4c40d4c4
+.word 0xe2169de1
+.word 0x37bcb839
+.word 0x02932582
+.word 0xf9759111
+.word 0xb45dacdc
+.word 0x9a4b0ac5
+.word 0xc9d150b3
+.word 0x51554151
+.word 0x2492e399
+.word 0xf84176f5
+.word 0x0c2b3612
+.word 0x7bceb10b
+.word 0xca03b775
+.word 0xdd78de71
+.word 0xab58211d
+.word 0xde770b74
+.word 0x84f4ada6
+.word 0xd5ece582
+.word 0x09c14214
+.word 0x28eaf34c
+.word 0xbeb26f4f
+.word 0xbb1e5d3d
+.word 0x1596d31b
+.word 0x956376f0
+.word 0xa5dcf9b8
+.word 0x2fa4e17e
+.word 0x39e5e02c
+.word 0x68f9c72c
+.word 0xe97467dd
+.word 0x5faaa5d2
+.word 0x403a7cd0
+.word 0x3e9be8f3
+.word 0xe37119e1
+.word 0x543ca6cc
+.word 0x0a84953a
+.word 0x5ed867ac
+.word 0xa2985b86
+.word 0xb244b5f8
+.word 0x066af3a6
+.word 0x42f0681a
+.word 0x0f8478df
+.word 0xdfe92d30
+.word 0x7097209a
+.word 0x07e07181
+.word 0x0e602cc1
+.word 0x70a7c08a
+.word 0x5cb24166
+.word 0xe0e80c82
+.word 0xf4acd9ff
+.word 0xa3b32d13
+.word 0x4e19f9b1
+.word 0xf6e28094
+.word 0xf15e1f77
+.word 0x8af7fcd1
+.word 0x510371c9
+.word 0xea8db6d8
+.word 0xdd49de2e
+.word 0x23949876
+.word 0x33864b3c
+.word 0xbc3877fd
+.word 0x69b5e87e
+.word 0x7d796629
+.word 0x713c6dfd
+.word 0x8d5f829b
+.word 0x9dc17915
+.word 0x9f2c735f
+.word 0xffac35d9
+.word 0x83403236
+.word 0xb7437331
+.word 0xda1f4cd9
+.word 0x052f76ec
+.word 0xdb4874a3
+.word 0x44b58ed7
+.word 0x5185a1b2
+.word 0x84c30475
+.word 0x850cb2b9
+.word 0x6269018a
+.word 0x2c5a6da1
+.word 0x65fc1174
+.word 0xf3432e99
+.word 0x2c12931d
+.word 0x5edd2259
+.word 0x4aac386f
+.word 0xfe377cbb
+.word 0xb3a04e26
+.word 0x8cf87166
+.word 0x920fc339
+.word 0xad69ff03
+.word 0xd9a154aa
+.word 0xeb2b65d4
+.word 0x64ab9b2c
+.word 0x5e1a4114
+.word 0xe5ad31f6
+.word 0x7d116fb2
+.word 0x4bf34bab
+.word 0x7f5f4c88
+.word 0x32e229c7
+.word 0xe46c24cd
+.word 0x720c2811
+.word 0xc28904d9
+.word 0xbecdbd3c
+.word 0x23735a0c
+.word 0xad98e3cf
+.word 0x951e8c92
+.word 0xf12db6f1
+.word 0x040ec0a9
+.word 0x6c13b51e
+.word 0x988ae7d7
+.word 0x86f50e26
+.word 0x09406f6b
+.word 0x0c05c6df
+.word 0x58392d94
+.word 0x960ae38a
+.word 0xb2bf877f
+.word 0xc0432062
+.word 0x467962f9
+.word 0xe450d54e
+.word 0x83daa4e2
+.word 0x92dab761
+.word 0x3c198436
+.word 0xae18133e
+.word 0x1f53be6d
+.word 0x9d93bea5
+.word 0x5a5f2ead
+.word 0x1642bb96
+.word 0x566baba0
+.word 0x2738fae3
+.word 0xa45df790
+.word 0x850d9402
+.word 0x59a61403
+.word 0x9d66e523
+.word 0x3d323b01
+.word 0xaca227a1
+.word 0x93cd0dff
+.word 0xe09387ce
+.word 0x537ed05b
+.word 0xe73f0dc4
+.word 0x4dd27f92
+.word 0xeb963125
+.word 0x9aa9a1a3
+.word 0x0f888a15
+.word 0x51e53f55
+.word 0xd60b8203
+.word 0x2fdf1144
+.word 0x15e91aad
+.word 0x34aeb92a
+.word 0xdd0b2d7b
+.word 0xba499c56
+.word 0x71576351
+.word 0xbb6a2ee8
+.word 0x2f3af091
+.word 0x7575abb2
+.word 0x5f3f3940
+.word 0x66068276
+.word 0xf30eadc4
+.word 0x2fd1700b
+.word 0x0be5ecec
+.word 0x6d1b3761
+.word 0x3b56f543
+.word 0x08559648
+.word 0x16116589
+.word 0xd22490c4
+.word 0x960cca6a
+.word 0xca9aae0f
+.word 0xf1c17f49
+.word 0xad7ecaf7
+.word 0x44f8ac01
+.word 0x19e47e18
+.word 0x1742e262
+.word 0xac65e80f
+.word 0x5006de79
+.word 0x5dd3561c
+.word 0xdaf60179
+.word 0xc32bcaae
+.word 0xaea55a74
+.word 0xb686371f
+.word 0x9970f91c
+.word 0xb2bd5058
+.word 0xd179ad75
+.word 0x56af6cf1
+.word 0x7c47ecb6
+.word 0xc2f7401d
+.word 0xabeb221b
+.word 0xf4a28ee0
+.word 0x9fc8a794
+.word 0x7135b0be
+.word 0x883a578b
+.word 0x2023783b
+.word 0xebf1d20b
+.word 0x33ec519b
+.word 0x95c9cfb8
+.word 0x5f6ba299
+.word 0x28fd63e0
+.word 0x37403189
+.word 0x7ff56258
+.word 0x7027e1f4
+.word 0x11f5d835
+.word 0x33328569
+.word 0x592508c6
+.word 0x1a34579e
+.word 0x7c7f0411
+.word 0x0d65a179
+.word 0x3c1f29b9
+.word 0xe705ffc3
+.word 0x9c4c3a17
+.word 0xf6eddf61
+.word 0x880892c9
+.word 0xa3a00b3a
+.word 0xe846daf6
+.word 0x4a939b6a
+.word 0x6e5bf036
+.word 0x4c29c689
+.word 0xcd1f9636
+.word 0x493717f1
+.word 0xfb0f153b
+.word 0x9ecec4ba
+.word 0x2c83a890
+.word 0xe9ef0719
+.word 0x77352d0b
+.word 0x20bcc5a3
+.word 0xc1c064b5
+.word 0x7f257abb
+.word 0xe0fa930a
+.word 0x08eefedd
+.word 0x7185a4c2
+.word 0x1f7f62fc
+.word 0x6048151e
+.word 0x214019f2
+.word 0x2aef1ff5
+.word 0x5861c731
+.word 0xc111f2bf
+.word 0xf4beabb5
+.word 0x5fd4f533
+.word 0x2db9ac5d
+.word 0x08ca4ce7
+.word 0x2e6405e5
+.word 0xbb81eac2
+.word 0x232814f4
+.word 0x977f926d
+.word 0x4b341769
+.word 0xe722aded
+.word 0x71eb488c
+.word 0x53bf7c46
+.word 0x4402e851
+.word 0x0fbca066
+.word 0x62060546
+.word 0x62fac5b1
+.word 0x2922c6e2
+.word 0x847c5930
+.word 0x3776fcd4
+.word 0xb5e81f20
+.word 0xa3f2cdbd
+.word 0xb818b5de
+.word 0x39441bc5
+.word 0x7bca6a52
+.word 0x613635f9
+.word 0xf83677c3
+.word 0x2784a100
+.word 0xbe4cc4fe
+.word 0x4327ea80
+.word 0x401060a6
+.word 0xd8454c7f
+.word 0x0ad8f21f
+.word 0xbd076b71
+.word 0xd4a3699c
+.word 0x4218331e
+.word 0x6ddb453d
+.word 0x8e611da4
+.word 0x8e636e30
+.word 0x6971170f
+.word 0x31a34b4d
+.word 0x531afd5e
+.word 0xa53ef4b3
+.word 0x7359addb
+.word 0xd20fca35
+.word 0x7c5189b5
+.word 0x40a39e11
+.word 0x32753cef
+.word 0x495741c2
+.word 0x6e194825
+.word 0x39386906
+.word 0x1b0d8b10
+.word 0x6efb7824
+.word 0x330beb08
+.word 0x51023b3f
+.word 0xdbe709a8
+.word 0xe2420ec6
+.word 0x8b97532e
+.word 0x30635ab2
+.word 0x1d9606a3
+.word 0x9a0bc27d
+.word 0xe5d894f1
+.word 0x1d349e00
+.word 0x826b5dad
+.word 0x8962e5d0
+.word 0xfe9d021f
+.word 0x3507f366
+.word 0x568e6846
+.word 0x70324f34
+.word 0xcd2f05b0
+.word 0x58707433
+.word 0x80c432a1
+.word 0x2515f205
+.word 0xf9fca246
+.word 0x40675937
+.word 0x074f6f6a
+.word 0xbd814deb
+.word 0x2f8299e2
+.word 0x52dc7d29
+.word 0xd7f5d8f7
+.word 0xbbca370e
+.word 0xbc1b38ba
+.word 0x7be83269
+.word 0x2dace685
+.word 0xf45453b1
+.word 0xc0b2cf47
+.word 0x469c1a71
+.word 0x199df09a
+.word 0xb75800d8
+.word 0x6b55d0a5
+.word 0x1e482f89
+.word 0x8b65576f
+.word 0xe37fe11e
+.word 0x71c32041
+.word 0x1dde7ff1
+.word 0xd861f7ef
+.word 0x1b191dc3
+.word 0xb3254c28
+.word 0x3dd2ecd3
+.word 0xd0f71013
+.word 0x31871b84
+.word 0x7ee25013
+.word 0x6c51530c
+.word 0xcf36659b
+.word 0x04f8eb18
+.word 0x0b310d12
+.word 0xd925d442
+.word 0x2f074773
+.word 0x042e6671
+.word 0x4f0eb134
+.word 0x44225e61
+.word 0x5e4e6186
+.word 0x2f621396
+.word 0xc35425aa
+.word 0x622955fb
+.word 0x577e22b6
+.word 0xcb08fb32
+.word 0xa57df7dc
+.word 0x6cc22d99
+.word 0xad4a2d17
+.word 0x05f1ec34
+.word 0xd57e8326
+.word 0xbb162cce
+.word 0x50612838
+.word 0x7626385a
+.word 0x8bce7f8c
+.word 0xdca4ad98
+.word 0xb2f47c98
+.word 0x3384105b
+.word 0x34bb083c
+.word 0x2933a658
+.word 0x7ff875a7
+.word 0x3d8f1cfe
+.word 0xd486520f
+.word 0x9d825a4b
+.word 0x4f1cfa57
+.word 0xc4d38cb1
+.word 0x517604b1
+.word 0xdc2fa3b4
+.word 0xc5c3d2ca
+.word 0xacf1759f
+.word 0x0db45eba
+.word 0x82a137fd
+.word 0x43be657d
+.word 0xbead6f29
+.word 0x4f532c9f
+.word 0xc811a59f
+.word 0x96eb8535
+.word 0xd49022b7
+.word 0xd3dee97b
+.word 0x695ba9f7
+.word 0xa53d8c0d
+.word 0x876bf691
+.word 0xc0b312e6
+.word 0x8dbe131e
+.word 0x0c8b7e9d
+.word 0xd47f3ff7
+.word 0xe72b9b5b
+.word 0x513b859e
+.word 0x82275464
+.word 0x613840f3
+.word 0x4f892884
+.word 0xab032365
+.word 0xcee646fa
+.word 0xe589388b
+.word 0x29d441fe
+.word 0x4a65b469
+.word 0xd4620432
+.word 0x583bf5cf
+.word 0x23a76009
+.word 0x3cbf498e
+.word 0x0cfe24af
+.word 0x35524449
+.word 0xd46ce249
+.word 0x35e47524
+.word 0x9e335c5a
+.word 0xbdefaa46
+.word 0xead4ea53
+.word 0xbd53ebdd
+.word 0xab8bf3a5
+.word 0xd3f13cc6
+.word 0xd6932c7b
+.word 0xf9e88ff1
+.word 0x0389fbfe
+.word 0x29719647
+.word 0xaa68d2d1
+.word 0xe13e0495
+.word 0xa0d995df
+.word 0x22f30f13
+.word 0xafd968da
+.word 0x20eda7bf
+.word 0xd1d731f8
+.word 0xc70c1639
+.word 0x31e1e263
+.word 0x089e7b63
+.word 0xdb40deb0
+.word 0x49b273bb
+.word 0xdd4229b0
+.word 0x49e3ace2
+.word 0xb8a3a96c
+.word 0x87b8937d
+.word 0x2fb8682f
+.word 0xfe3062ef
+.word 0xfb95c193
+.word 0xd3394030
+.word 0xe575485a
+.word 0xc22c40f1
+.word 0x5894835f
+.word 0xbc679cec
+.word 0x4da7528f
+.word 0xaa094153
+.word 0xa34f2fb8
+.word 0x7478ed49
+.word 0xe53ac1d6
+.word 0xe0f0d4c2
+.word 0x3a30ecd2
+.word 0xb9066a9a
+.word 0x7bd55171
+.word 0x1f6288df
+.word 0xf4d81456
+.word 0xd540d318
+.word 0x93957ae8
+.word 0x7d663aa4
+.word 0x85226de6
+.word 0x163075ae
+.word 0xf797d0af
+.word 0x76264692
+.word 0xf32a8387
+.word 0xd7b1a827
+.word 0x315850d4
+.word 0xefbfafde
+.word 0xedb34dea
+.word 0x23236c4d
+.word 0x34f6f886
+.word 0xd178a334
+.word 0x4cd5fe3c
+.word 0x8d29c027
+.word 0x683e7278
+.word 0x0b80eea1
+.word 0x00560ab7
+.word 0xe27d4d63
+.word 0x57a176e3
+.word 0xef0a91b4
+.word 0xc2642408
+.word 0xfd303c42
+.word 0x5497f074
+.word 0x96b6ad20
+.word 0xaa87cb68
+.word 0xbe5fd468
+.word 0xbeedc797
+.word 0x00fcfefb
+.word 0x1b2ed96d
+.word 0x2a1e1808
+.word 0xc693a4db
+.word 0x3fb78a79
+.word 0xb0f33ab7
+.word 0xe7a865aa
+.word 0xa5a8d764
+.word 0x92993cab
+.word 0x6374aa45
+.word 0x29411126
+.word 0xfae2aab6
+.word 0xcfa1ec5b
+.word 0x85ca98b7
+.word 0x986673c2
+.word 0x0ee5502a
+.word 0x26c645fe
+.word 0x5c6e88cc
+.word 0x262fe5f7
+.word 0x778e3ff7
+.word 0x523cb2ce
+.word 0x58c9c836
+.word 0x8c9a0264
+.word 0x0ad475b0
+.word 0x5ec94250
+.word 0xcac843ce
+.word 0x1b436e05
+.word 0xbc7b977b
+.word 0x7b084cdf
+.word 0x4187338e
+.word 0x1068dc7a
+.word 0xf3a0f5a5
+.word 0xf343d590
+.word 0xecf66b0f
+.word 0x02cd020d
+.word 0x9aa8bc3f
+.word 0x354979c8
+.word 0xcd1ab375
+.word 0x39038897
+.word 0x477f03e4
+.word 0xc8fa9a37
+.word 0xb6884a1f
+.word 0x91454013
+.word 0x8e2cbb3d
+.word 0xce60dc58
+.word 0x5eb52a21
+.word 0x75718b5c
+.word 0x6d1afd99
+.word 0x68670f05
+.word 0x9834ddf2
+.word 0x2c6cadda
+.word 0x2a23c16b
+.word 0x927634ec
+.word 0x90394ddb
+.word 0x6daf4408
+.word 0xec0309e4
+.word 0xeb774393
+.word 0x107f5301
+.word 0x7714e68e
+.word 0x9befb884
+.word 0xadce000a
+.word 0xc68ebc9c
+.word 0xc66431cd
+.word 0x636c6767
+.word 0x01528192
+.word 0xdf6fa47d
+.word 0x36193e76
+.word 0x1850b37c
+.word 0x7027afb1
+.word 0x648f7d15
+.word 0x16bbc3c6
+.word 0xfe896587
+.word 0x434b27fd
+.word 0x1a3e5d29
+.word 0x4741a4a9
+.word 0x352fee91
+.word 0x9b63dd26
+.word 0x190e9b76
+.word 0xaa77b2a3
+.word 0x71291caa
+.word 0x2132bba1
+.word 0xe1eb1ba5
+.word 0x2561af6f
+.word 0x3a5f0b3e
+.word 0xf4b6dceb
+.word 0x8b08359d
+.word 0x487a2e49
+.word 0x6a30533f
+.word 0xa6517ba6
+.word 0xdca5f80f
+.word 0x62b0f880
+.word 0x64734381
+.word 0xc0ea9804
+.word 0xbda664ff
+.word 0xbe1e89c4
+.word 0xf7e73dca
+.word 0x837e3df3
+.word 0x251a7276
+.word 0x85781942
+.word 0x121b0db8
+.word 0x3738732c
+.word 0x042835e4
+.word 0x31d103f0
+.word 0x16c53ae5
+.word 0xc79130f6
+.word 0x03f8b291
+.word 0x2678995f
+.word 0xfc0f0b44
+.word 0x23ec7814
+.word 0xf67b1fb9
+.word 0x53b3e7f8
+.word 0x9b74d8a2
+.word 0x33ea1ef9
+.word 0xffae0387
+.word 0x5a7f37a4
+.word 0x400bacd3
+.word 0xf8dd8285
+.word 0xb6bc0cc5
+.word 0x1b463115
+.word 0x038c3b75
+.word 0x8a290cbe
+.word 0x89304e8c
+.word 0x5fdbdf3f
+.word 0x14e0b7be
+.word 0x92d4395a
+.word 0x883519e0
+.word 0x7c14e478
+.word 0x459823fc
+.word 0x7a5d32a0
+.word 0xb836009b
+.word 0x8d4cad72
+.word 0x88bc5217
+.word 0xcb5f3f02
+.word 0xb8335d9f
+.word 0x646c0077
+.word 0x494868d1
+.word 0x17ec7d7d
+.word 0x4091f851
+.word 0x4fa20e3c
+.word 0x115777f9
+.word 0x92cd35b8
+.word 0xeda5aeb6
+.word 0x1f3bfeaa
+.word 0x94032bb5
+.word 0xdd85a6a0
+.word 0xa0af4f36
+.word 0x6d6c8d28
+.word 0x321f7094
+.word 0xc3634782
+.word 0x74381776
+.word 0xc44dfeaf
+.word 0x16bbde82
+.word 0xc1d3dab9
+.word 0xcf48e168
+.word 0x447873ed
+.word 0x62efa6b0
+.word 0xb63f0f8d
+.word 0x140699ac
+.word 0x479e5ff7
+.word 0xc0fe2f26
+.word 0x16479274
+.word 0x16cc5341
+.word 0x99983ab3
+.word 0xb1ae1b65
+.word 0x35e16f55
+.word 0xbb4109ac
+.word 0x9e5cf15e
+.word 0xb031393c
+.word 0xad734227
+.word 0x3a609d73
+.word 0x8b436ec3
+.word 0x5ec2f433
+.word 0xd7fae758
+.word 0xadd35c0c
+.word 0xfab24dd5
+.word 0x0ab6f751
+.word 0xc7b683b1
+.word 0x03f8c2f1
+.word 0x9c168cab
+.word 0x0e848f96
+.word 0xe4bc374b
+.word 0x2f60808e
+.word 0xe3f80e2d
+.word 0xdff2cd21
+.word 0x1e9e5751
+.word 0x1a1b2381
+.word 0x6be6c9be
+.word 0x51b8346f
+.word 0xb6d41efb
+.word 0xb5dbc9bd
+.word 0xad9ddfcc
+.word 0x8f7c7aa9
+.word 0x261dffce
+.word 0x63b3b0ce
+.word 0xde00d742
+.word 0xdc5172e3
+.word 0x433401b2
+.word 0x63c3f2a8
+.word 0xe8d2c416
+.word 0x26d6cec9
+.word 0x9cc999d2
+.word 0x7326be2c
+.word 0xf6c006da
+.word 0xeae85c22
+.word 0x569c6c62
+.word 0x352f140b
+.word 0xb175c37e
+.word 0x35c0d512
+.word 0x3cf9b9e9
+.word 0xf6140ef5
+.word 0x701af4d1
+.word 0xbd7e757d
+.word 0x43a4b41b
+.word 0x747ea3bd
+.word 0xcc75de9a
+.word 0xc0793aa9
+.word 0x4d0f2f61
+.word 0xb5b21d7c
+.word 0x85ae6932
+.word 0x3548f429
+.word 0xcfe53fcf
+.word 0x1a46079e
+.word 0x41e2b286
+.word 0xcb9d85aa
+.word 0x653261ad
+.word 0xf5eb8e31
+.word 0x4938bee5
+.word 0x4f1063c7
+.word 0xfc203993
+.word 0xd9f312a9
+.word 0xef545715
+.word 0x0abf89f1
+.word 0xfb5ce47b
+.word 0xdf8050e7
+.word 0x191eb609
+.word 0xe83e2ea1
+.word 0x89788358
+.word 0xceaae8d9
+.word 0x80036f74
+.word 0x54070c5e
+.word 0x573fbc03
+.word 0xf644e9d1
+.word 0x9079eede
+.word 0x4d6f227c
+.word 0x6955c67a
+.word 0xb82ebfcf
+.word 0x78319763
+.word 0xd2087068
+.word 0x9453d190
+.word 0x00bd48d4
+.word 0xab35630a
+.word 0x58674a3e
+.word 0xcf06d774
+.word 0x90f36568
+.word 0x94669381
+.word 0x0eeef9f5
+.word 0x17354cc0
+.word 0xecf1bfbd
+.word 0xb914a030
+.word 0xf4f7b7b8
+.word 0xbcdf0b78
+.word 0xb0a492b4
+.word 0xf76c44c0
+.word 0x6fcab717
+.word 0xc93406e5
+.word 0x6410206d
+.word 0x1fad820e
+.word 0xae5d238e
+.word 0xc4ec2e4b
+.word 0x613ad781
+.word 0xf1009375
+.word 0x31fa9bae
+.word 0x63c6f3aa
+.word 0x8b6c466d
+.word 0x7e4a6002
+.word 0x9e5073a7
+.word 0xeb9e9d10
+.word 0xb1e06bdd
+.word 0xb7551992
+.word 0x89f3a6dd
+.word 0xeb48dc51
+.word 0x7996db2f
+.word 0x45d94ddd
+.word 0x10e29f02
+.word 0x77159645
+.word 0x3131145f
+.word 0x1d5d9024
+.word 0x8d4c952f
+.word 0xeae91886
+.word 0x8f35e8bd
+.word 0x982befca
+.word 0x3d769cdb
+.word 0x026ec441
+.word 0x1f3dcbc7
+.word 0x1319c5c9
+.word 0xd3c318b2
+.word 0x4a4b1fdd
+.word 0xaf104bfd
+.word 0x29325ae7
+.word 0xb7ed6cc8
+.word 0x59e8ca76
+.word 0xb47eb1e2
+.word 0xacbbf714
+.word 0xf826052c
+.word 0x0656a2e2
+.word 0xdcd702b1
+.word 0x170db748
+.word 0xf5045e58
+.word 0x76199362
+.word 0x90c121d6
+.word 0xa12131fa
+.word 0xef4e37b0
+.word 0x72ea7782
+.word 0xacbde4c4
+.word 0x49145fd7
+.word 0x97fc21eb
+.word 0x86f91ca7
+.word 0xbf5187e8
+.word 0x9102b978
+.word 0x299bd78f
+.word 0x2ebf1c19
+.word 0x9eb2ab36
+.word 0x8361655c
+.word 0x39dc356f
+.word 0x267cf45b
+.word 0xa4adc562
+.word 0x72e4a398
+.word 0xe7dcb176
+.word 0x18004d9f
+.word 0xe9606997
+.word 0xe01657df
+.word 0x9b9f9cf5
+.word 0xdcdbdc85
+.word 0xfdc4d9be
+.word 0x2793d0de
+.word 0xee05d226
+.word 0x366be3be
+.word 0xcf905cc0
+.word 0x8acbb969
+.word 0x5cd6e9e3
+.word 0x0763d24b
+.word 0x4049f69f
+.word 0x70c82d6d
+.word 0xe6fd4c5e
+.word 0xec4831d1
+.word 0xdbb48ba8
+.word 0x7579c108
+.word 0xca2d9464
+.word 0xb11c22f2
+.word 0xe4041ed2
+.word 0xebe1d7e9
+.word 0x66086911
+.word 0x2449d1ac
+.word 0x5f428324
+.word 0x3f67d2dc
+.word 0xaffdb641
+.word 0x9401931c
+.word 0xeb35a6c1
+.word 0x09319ec9
+.word 0x62be68ff
+.word 0x8e495f50
+.word 0x72588ae1
+.word 0x1b168f38
+.word 0xa9d85390
+.word 0x4fb73a11
+.word 0x32c37427
+.word 0x0c61d9e6
+.word 0x78e72c98
+.word 0x0fa5981c
+.word 0x7fcd24d4
+.word 0x13b21970
+.word 0x200c1304
+.word 0x64681f3f
+.word 0x27ff37c7
+.word 0x84852278
+.word 0xf380311d
+.word 0x8d5c00fc
+.word 0x362e11a4
+.word 0x6ab05553
+.word 0x74290953
+.word 0xdc3a6c09
+.word 0x223c0482
+.word 0x34223fd6
+.word 0xba1cf34e
+.word 0xb94ea5dd
+.word 0xf65ebfe7
+.word 0x4a2c3d76
+.word 0x8b98ddd1
+.word 0x4c2016ce
+.word 0x219eb6bd
+.word 0x9c042dab
+.word 0x848d1096
+.word 0x9d75bf45
+.word 0x149f11c3
+.word 0x5c1237d8
+.word 0x09c70ceb
+.word 0xbfbe37e7
+.word 0xfb5e6379
+.word 0x26aa7514
+.word 0x08becd61
+.word 0xb2bea4bb
+.word 0xc67277a9
+.word 0x6a5491de
+.word 0xe6d6d86d
+.word 0x82d42a70
+.word 0x43e8913c
+.word 0x0044c7f9
+.word 0x09e5db3c
+.word 0x81f6ba20
+.word 0xa26c88c3
+.word 0x504fe14f
+.word 0x7327d2e7
+.word 0x7a06b8d5
+.word 0xf8d8aaf4
+.word 0x945ba931
+.word 0xcb1dfa7b
+.word 0x872bf0aa
+.word 0xfa3f63d5
+.word 0x431eae0d
+.word 0xd21aa175
+.word 0xc12a8d92
+.word 0x7fc0a8d4
+.word 0x86bb3f14
+.word 0x40c38fcd
+.word 0xb3867083
+.word 0xd0120904
+.word 0xa620cee4
+.word 0x5980f8a9
+.word 0x28be7cd5
+.word 0x277c64d5
+.word 0x27fce9f0
+.word 0x9b77c9bc
+.word 0x0244d41d
+.word 0xb4b5b48c
+.word 0xfe0acdbd
+.word 0x87e5fcdb
+.word 0xb51ed632
+.word 0x563a0caa
+.word 0x17f09f2b
+.word 0x20ba9ee2
+.word 0x4d6df394
+.word 0xb8279ac2
+.word 0xc5bdfac2
+.word 0x9473da46
+.word 0xdaa1cd8b
+.word 0x8f23967e
+.word 0xbba925d7
+.word 0x5d64dc61
+.word 0x20d21d24
+.word 0x4c65bc2b
+.word 0xe5113149
+.word 0x57b47752
+.word 0x7e92d6ad
+.word 0x83d393d7
+.word 0x81fb5b24
+.word 0x699b01a5
+.word 0xaecbaddf
+.word 0x6a246040
+.word 0x69bcacd4
+.word 0xbe596287
+.word 0x89c1acb0
+.word 0x5097e2b4
+.word 0x3759fcb4
+.word 0x1c1ce084
+.word 0x4713d853
+.word 0x44d9bc43
+.word 0xd5f579f7
+.word 0x99ce06ea
+.word 0xe5a50792
+.word 0x5a2b0ff3
+.word 0xa9391bb1
+.word 0xd1b48a6b
+.word 0x3392ced9
+.word 0x4391cb0b
+.word 0xb395afa0
+.word 0xfbd114f7
+.word 0x8e063178
+.word 0x7f503ac4
+.word 0x7ba29777
+.word 0x8ca83c20
+.word 0xb7c8be8a
+.word 0xbe1f968a
+.word 0x5a478bda
+.word 0x8ca5f546
+.word 0x6ddb0ed5
+.word 0x44580c3a
+.word 0xe5bf3820
+.word 0x50df621c
+.word 0xbfb20459
+.word 0xd685a8e9
+.word 0x9129bc2a
+.word 0x7d2ca9d2
+.word 0x9c9b08a5
+.word 0x243d6f62
+.word 0x81eb9d13
+.word 0x93f42c42
+.word 0x82deb734
+.word 0xcaa7008c
+.word 0x6172cc8b
+.word 0xa26d703d
+.word 0x78ff3578
+.word 0xb488d81b
+.word 0xf11ef0ef
+.word 0x4c4a115c
+.word 0x70fe99c0
+.word 0x11832e29
+.word 0xb855ebb0
+.word 0x1351ab65
+.word 0x9a565429
+.word 0x79e6bbd9
+.word 0xe2a7e7af
+.word 0x7cc3296a
+.word 0x303ff53c
+.word 0xbe6e22f0
+.word 0x9ae5cb3b
+.word 0x2e4f2c7c
+.word 0x10cec9da
+.word 0x4abe896e
+.word 0xee36329b
+.word 0xda1c4e5c
+.word 0x3f95b006
+.word 0x7777d698
+.word 0xd1eaf7a1
+.word 0x09bced4b
+.word 0xbbe2a911
+.word 0xdb925c34
+.word 0x3c1e9c6c
+.word 0x32341017
+.word 0x853fef5d
+.word 0x45240363
+.word 0x82e8fc97
+.word 0x5d20cba7
+.word 0x102eec9d
+.word 0x3aa7e485
+.word 0xd9ff8dc9
+.word 0xdbbef5f2
+.word 0x102e1311
+.word 0x2f251dba
+.word 0xbdf53d5e
+.word 0x8ad6b56e
+.word 0x44c350b2
+.word 0x30eda3b7
+.word 0xc366eefa
+.word 0xecf081f2
+.word 0x5f70edde
+.word 0xb8a0f41a
+.word 0x0fba7dbe
+.word 0xe0d5e7c9
+.word 0x6384924b
+.word 0x8b6809ae
+.word 0x8515b7ab
+.word 0xdf10fb37
+.word 0xdf2e7633
+.word 0x23ae2285
+.word 0x5ca658dc
+.word 0x89f5cb12
+.word 0x9ce7d1c6
+.word 0x8fd8a5aa
+.word 0xc82cedd6
+.word 0x55f7fe72
+.word 0x3cd7093d
+.word 0xcc7b69cc
+.word 0x2e97693b
+.word 0xf4d62d87
+.word 0x78f77212
+.word 0xc6587849
+.word 0xdc2eaa91
+.word 0xf939a7e1
+.word 0x8eb2a6fb
+.word 0xb321cb47
+.word 0x94130db2
+.word 0x603df0dc
+.word 0x2013d798
+.word 0x1a642e96
+.word 0x104274b4
+.word 0xe202add2
+.word 0x4cc452de
+.word 0x54516707
+.word 0x3ba86e80
+.word 0xea1deb7f
+.word 0x3aa425e0
+.word 0x90a354c9
+.word 0xce7df2eb
+.word 0xf84d87b1
+.word 0x64948b4e
+.word 0x10b271ce
+.word 0xc4c56496
+.word 0xeef5a927
+.word 0x10aea74d
+.word 0x62d61720
+.word 0x151c36bf
+.word 0x9e5cf9f6
+.word 0x6479310f
+.word 0x8515dbd0
+.word 0xb5f81f40
+.word 0xa5c8f9fa
+.word 0x68e43fb2
+.word 0x71d98735
+.word 0x15be3152
+.word 0x96d2e32a
+.word 0xfbbf77ee
+.word 0xcf520e25
+.word 0x780ac7f2
+.word 0xaf2ea3f7
+.word 0x161edfe4
+.word 0x35144dec
+.word 0x71726124
+.word 0xddb1470c
+.word 0x307c34d4
+.word 0x53afdfed
+.word 0xbd8d7fda
+.word 0xa5b54d92
+.word 0x0ea7cfd1
+.word 0xe148d011
+.word 0xe0afca95
+.word 0x597eec70
+.word 0x2e61ffe6
+.word 0x2f1e0c2c
+.word 0x474981fd
+.word 0x49b7a7dc
+.word 0x028b74c6
+.word 0x4f0f9887
+.word 0x4f713c96
+.word 0xa30d9a0a
+.word 0xb1a84629
+.word 0x1ca4aa41
+.word 0x15cdfa35
+.word 0x238a60ac
+.word 0x87edf536
+.word 0x86b3bfd8
+.word 0x2e91ce1e
+.word 0x35d24292
+.word 0xb3b014d9
+.word 0x52754c79
+.word 0x7bd2a39b
+.word 0xee869717
+.word 0x8db2383f
+.word 0x5816fbb0
+.word 0xb5a6ac7e
+.word 0x15847dad
+.word 0x7005e188
+.word 0x2c1826d2
+.word 0xfc0db3c0
+.word 0x602fa3e3
+.word 0x25cdf966
+.word 0x998d07aa
+.word 0xc0dbec75
+.word 0xb3a29f92
+.word 0x813212d6
+.word 0x1fc7d400
+.word 0xaa01d5e2
+.word 0x09af9251
+.word 0xcd63448f
+.word 0xbabefecf
+.word 0xabfe7ac9
+.word 0xf9acb1c1
+.word 0x6727bb2b
+.word 0xb67bcf23
+.word 0x4b594e49
+.word 0xaf686280
+.word 0xca641c65
+.word 0x09bd52d0
+.word 0x62280c9e
+.word 0x7615037f
+.word 0xb38235c1
+.word 0xe5fbb71c
+.word 0x9e6e556b
+.word 0xe492b66d
+.word 0x3fefb9d0
+.word 0xe68b17b7
+.word 0x4eb00235
+.word 0x87ae09e3
+.word 0x3c274bd1
+.word 0xc02b538f
+.word 0xc4c70762
+.word 0x9455a068
+.word 0x53917b6e
+.word 0x9bd023cd
+.word 0x1a5f3df9
+.word 0xe59df96c
+.word 0x3dcee9b7
+.word 0xc5acba57
+.word 0x0705bda0
+.word 0xc9fb2717
+.word 0x4ba40b4a
+.word 0x4b1d2bd2
+.word 0xeca5fdbd
+.word 0x6f08ada0
+.word 0x02d791d0
+.word 0xe046c4bb
+.word 0x4a3a0c34
+.word 0x72c17afb
+.word 0x49dca607
+.word 0x92b8d8aa
+.word 0xe87b81bd
+.word 0x89b29072
+.word 0xdc2eb41d
+.word 0xd0606992
+.word 0xd168f186
+.word 0x115bb8bc
+.word 0xc5768cd6
+.word 0x5871a52e
+.word 0x507c6943
+.word 0x4dd1778e
+.word 0xb8420c77
+.word 0xab77d02b
+.word 0xd0eceb68
+.word 0x2f4837a3
+.word 0xc8f3ceeb
+.word 0xa3d5f9a9
+.word 0x730a0e87
+.word 0xd13b2302
+.word 0xe63cd542
+.word 0xbf98178a
+.word 0xaf790a71
+.word 0xbcdb78cf
+.word 0xb5f5fb1c
+.word 0x48ca3a16
+.word 0x434a28fc
+.word 0x19b479fd
+.word 0x85ad1564
+.word 0xeb3d8ac0
+.word 0xbf4fa888
+.word 0x1a9c19c8
+.word 0xd9ef1d06
+.word 0x552d4fcb
+.word 0x8a5c76e9
+.word 0x2bfaf92c
+.word 0x9bd5e5ab
+.word 0xd02d500b
+.word 0xcdf4e978
+.word 0x562f01dd
+.word 0x07f4a001
+.word 0xdf10d476
+.word 0x2b08dbe7
+.word 0x6a236d97
+.word 0x6dd9e6a5
+.word 0x0b7817a2
+.word 0x50f60d46
+.word 0xb6cef71f
+.word 0x2a3618f3
+.word 0x8900c034
+.word 0xe3dd93f6
+.word 0xe9f62b78
+.word 0x19f750db
+.word 0x5f1cb40a
+.word 0xdb127b77
+.word 0xe6210ea3
+.word 0x91b6f494
+.word 0x36793c29
+.word 0x5c13a1ee
+.word 0x744607a9
+.word 0x5fc2b68c
+.word 0x670a2939
+.word 0x18694b0f
+.word 0xdfa7eefe
+.word 0xeb4839bd
+.word 0x02f4811c
+.word 0x4b41c97a
+.word 0x25aa6624
+.word 0xa9ca21a6
+.word 0xbc125e4a
+.word 0x6d971d60
+.word 0x02681f74
+.word 0x8832c8ea
+.word 0x58b73b65
+.word 0x022a17ee
+.word 0x51ace5e5
+.word 0x67baa037
+.word 0x85b699e6
+.word 0xdde91c12
+.word 0x3625a97f
+.word 0x22e35239
+.word 0x9a53f3cf
+.word 0xf230579b
+.word 0x70ab77c4
+.word 0x7639971c
+.word 0x321dc2ca
+.word 0x30d4b90b
+.word 0x9566b6f1
+.word 0x814b2384
+.word 0xe57ee88b
+.word 0x6895bb10
+.word 0x39c3c5af
+.word 0x24099769
+.word 0xb157f6ae
+.word 0xdd9e886c
+.word 0x29e18d0c
+.word 0xa03eae62
+.word 0x7f1e08f4
+.word 0xeafa3688
+.word 0x36f46d98
+.word 0x89b6cd46
+.word 0x1350894d
+.word 0x41853ea5
+.word 0x789b6cdd
+.word 0x0c6f34fc
+.word 0x7228a475
+.word 0xd8c83a7e
+.word 0xb2964472
+.word 0x2e691fa2
+.word 0x5897d6b0
+.word 0x4180ffc8
+.word 0x7df6c969
+.word 0x0d575f09
+.word 0xd5a58061
+.word 0xfbf2d185
+.word 0x23faef5e
+.word 0xa1820b0d
+.word 0xa9888427
+.word 0xe5f29f8e
+.word 0x038edf7b
+.word 0x7ab29072
+.word 0x059a29c0
+.word 0x376f10d3
+.word 0xb59066d0
+.word 0xa22b8088
+.word 0x7a214db2
+.word 0xdf52b8df
+.word 0x2675bd0f
+.word 0xebbef76f
+.word 0xdb932f77
+.word 0x57396f72
+.word 0x0b87912d
+.word 0xae934f37
+.word 0x3fb6a24e
+.word 0x7c54d9fe
+.word 0x60ae4e54
+.word 0xf31c054c
+.word 0xfad5dd9d
+.word 0xb58e840b
+.word 0x5abdbbab
+.word 0xc44a71ef
+.word 0xc95bb88b
+.word 0xfc02c13b
+.word 0x963cb8c2
+.word 0xf8a1daaf
+.word 0x4d2e626a
+.word 0x89ee099d
+.word 0x5904141c
+.word 0x9e0ada1e
+.word 0x30836eb3
+.word 0x792f81e9
+.word 0x4132a626
+.word 0xf0e9b9be
+.word 0x93635c60
+.word 0xd66e2270
+.word 0xcae69761
+.word 0x35aafd99
+.word 0x39761e6c
+.word 0xed9383fd
+.word 0x629c6ab0
+.word 0x9d4bd9c8
+.word 0xd2f69c67
+.word 0xecb1e6c9
+.word 0xee219bd1
+.word 0x95d6ba1c
+.word 0xe48a84da
+.word 0x8124b26d
+.word 0xa01b2f1f
+.word 0xcb61898b
+.word 0xb5e74e67
+.word 0xca079b4a
+.word 0x72447464
+.word 0x3c46149c
+.word 0x67a5f3a5
+.word 0x1a7e2af7
+.word 0x8a0fe59f
+.word 0xae69a220
+.word 0xc4cb1ee4
+.word 0xc7224c80
+.word 0x891aa200
+.word 0xe370d3ed
+.word 0xaaf8e81a
+.word 0x48b4ed87
+.word 0x6e81c9fc
+.word 0xb4147445
+.word 0x1e604e92
+.word 0xddce8e9d
+.word 0xe197924b
+.word 0xdc235105
+.word 0xd3b0076a
+.word 0x626934a9
+.word 0x6caf65ba
+.word 0xed39f9c4
+.word 0xabc5f3ea
+.word 0x14c5e787
+.word 0xd7ba151d
+.word 0x396d1e05
+.word 0x985e5047
+.word 0x8df96bdb
+.word 0x50e60752
+.word 0xb7650884
+.word 0x1c379381
+.word 0x1a3b34f6
+.word 0xa44bea6a
+.word 0xfeb14416
+.word 0x6594162f
+.word 0x0e52a778
+.word 0xe2ac41f2
+.word 0x92d69a58
+.word 0x9885d3db
+.word 0xb49e8870
+.word 0x79ba9091
+.word 0xd33c1868
+.word 0xc6a9d349
+.word 0x9caa9a22
+.word 0x0a1ac6a3
+.word 0x4bc7dfe8
+.word 0xf5662b6f
+.word 0xd6294c43
+.word 0x93abe0ba
+.word 0xce9ff857
+.word 0x66d6748f
+.word 0x78dc0036
+.word 0x327cb512
+.word 0x9023a884
+.word 0xa9f64696
+.word 0xdab50323
+.word 0x5c9ab74b
+.word 0xc524c108
+.word 0xb35b8cf1
+.word 0x933f892f
+.word 0x63d4afe0
+.word 0xca8192ea
+.word 0x27d67598
+.word 0xdf7b85d4
+.word 0xb118ae75
+.word 0xa8340f8d
+.word 0xb2506a15
+.word 0x61dabf8c
+.word 0xbe507492
+.word 0x4f11685d
+.word 0x5f6099b1
+.word 0x9875c1ac
+.word 0x63d37073
+.word 0x4836e5fd
+.word 0x9a1cbc70
+.word 0x74dadf0f
+.word 0xd7568305
+.word 0xaf6d7bbd
+.word 0x758b8ee9
+.word 0x72baa87b
+.word 0x144e96bb
+.word 0xde6faac2
+.word 0xd6499fca
+.word 0xe2bc1fa5
+.word 0x119cd86a
+.word 0x4711815d
+.word 0xe0665e01
+.word 0x1fa92fd7
+.word 0xc7fe11b5
+.word 0x5fe64158
+.word 0x133c5d0e
+.word 0x548b06d9
+.word 0x7bb6656d
+.word 0x11930c98
+.word 0x0c6fa2e5
+.word 0x85b14f4e
+.word 0xc85b3c2a
+.word 0x0ffbe060
+.word 0xd94c197d
+.word 0xa05d76c8
+.word 0x0d55487f
+.word 0x8e5c0d54
+.word 0x85496e97
+.word 0x89c0fd7b
+.word 0x155dcc79
+.word 0x1739844d
+.word 0x24c44cec
+.word 0x781b30d1
+.word 0x6012838c
+.word 0x5a2dfc8b
+.word 0x1c0cab30
+.word 0x88681e73
+.word 0xd6a31ec2
+.word 0xd1d9f92c
+.word 0x7a6ec5fc
+.word 0xcda84e89
+.word 0xf115fe2c
+.word 0x9153ff12
+.word 0xa47e9af0
+.word 0xd5c3717a
+.word 0x16b74d85
+.word 0xa00a55c7
+.word 0x9d48d203
+.word 0x96991b34
+.word 0x7576def1
+.word 0xbf0897cd
+.word 0xe4a0ddda
+.word 0x76d2c280
+.word 0x4d7953dd
+.word 0x2b84e87b
+.word 0x2d72584c
+.word 0x492dfde6
+.word 0x4871ff36
+.word 0x93cb893b
+.word 0xa6921644
+.word 0xe39004ab
+.word 0x53aa5f42
+.word 0x967aed3f
+.word 0xdc7c1abe
+.word 0xb391d65c
+.word 0xcc60e0f0
+.word 0xf8523261
+.word 0xab751ffe
+.word 0x4fc46365
+.word 0x6b80632a
+.word 0x020a692f
+.word 0x3cd6a96d
+.word 0xc80a8423
+.word 0xce573760
+.word 0xb2ec1af9
+.word 0xe8334b35
+.word 0xfbc62393
+.word 0xd8ef8c90
+.word 0x64e093cf
+.word 0xe975ab3e
+.word 0xe19e4011
+.word 0x4aed372a
+.word 0xc54da717
+.word 0x0b0afcaf
+.word 0xed7ae09a
+.word 0xbc166f84
+.word 0x08d430b1
+.word 0x97cdc5fe
+.word 0xa3452c30
+.word 0x829f625b
+.word 0xa32587a1
+.word 0xda3e7f83
+.word 0x1cf4e8e1
+.word 0xa2e2917d
+.word 0xe13aa563
+.word 0xe362ebd5
+.word 0xb48d6e7e
+.word 0x6a41d279
+.word 0xb48afd91
+.word 0xdf0c7130
+.word 0xb06257f9
+.word 0x9fd5c5b1
+.word 0xa912159f
+.word 0x2226ed62
+.word 0x15743fe5
+.word 0xdb7caa61
+.word 0xbcff13f0
+.word 0x61264a2e
+.word 0x99a1bbb3
+.word 0xe8afee14
+.word 0x07a28344
+.word 0x21cb1d5b
+.word 0x51b63c12
+.word 0xe598cfe6
+.word 0x7293bf17
+.word 0x9acd43bc
+.word 0x687437b1
+.word 0xb9c53696
+.word 0x68225c46
+.word 0x619d5aca
+.word 0x7c15d307
+.word 0xaaa757bd
+.word 0x152ddebc
+.word 0x40745ff8
+.word 0x0af7f6f3
+.word 0x409e9ad8
+.word 0xbef6e954
+.word 0x077d8216
+.word 0x93fcc3b9
+.word 0x677acdfb
+.word 0x7ebccabc
+.word 0x76e0db3f
+.word 0x5ec9d21d
+.word 0x37f1cf00
+.word 0xacfc796b
+.word 0x367717c7
+.word 0x0515fc1e
+.word 0x07fe9433
+.word 0xe767ddd1
+.word 0x222d2ddc
+.word 0xcd3c10f9
+.word 0x018f8911
+.word 0xa40c46b7
+.word 0x2333f62e
+.word 0x85a40625
+.word 0x7238faa8
+.word 0xbedd2fd9
+.word 0xc6fedff5
+.word 0xd79fc7b0
+.word 0x74f8541b
+.word 0xfe5b36de
+.word 0x56d23837
+.word 0xa0c6902a
+.word 0x42624b35
+.word 0xa424c73f
+.word 0xd032807f
+.word 0x79a275c8
+.word 0xfb72c95a
+.word 0x0bb518d2
+.word 0xc7b3210d
+.word 0x6c64c8f2
+.word 0xd2fb0f47
+.word 0x345cd085
+.word 0x4f6f8c13
+.word 0x329a4f49
+.word 0x1a7fb5b9
+.word 0x53c82a54
+.word 0x79c7558b
+.word 0x2637cee2
+.word 0xc5610bee
+.word 0x467069d4
+.word 0x5d68a2e4
+.word 0xa33708ff
+.word 0xd3b6eac4
+.word 0xf0d00ed9
+.word 0x5a71875b
+.word 0x90cb3094
+.word 0x94b3e650
+.word 0x6c8e3a72
+.word 0xb56bd264
+.word 0xb8bbb3c0
+.word 0xe1496030
+.word 0x3a3bd78f
+.word 0xd47d724a
+.word 0xd3d52e14
+.word 0xab85199e
+.word 0x83279c52
+.word 0xcc2ebd1b
+.word 0x3859ed3a
+.word 0xa32eb9c4
+.word 0x1379350b
+.word 0x9cd53318
+.word 0xc14718f7
+.word 0x53997d27
+.word 0x52318a5b
+.word 0xca3275ec
+.word 0x53528909
+.word 0x24e3a189
+.word 0x1c4d8723
+.word 0xe06ca25e
+.word 0x6883cf49
+.word 0x5ed76f04
+.word 0xce6a2186
+.word 0xefa372c5
+.word 0xca8c0cc5
+.word 0xa1f7d2dd
+.word 0x00dd529e
+.word 0x5bb1d190
+.word 0x89903bf0
+.word 0x7ea00c18
+.word 0x84fa8de2
+.word 0x006ac4b5
+.word 0xfabbc008
+.word 0x98086f2e
+.word 0xa86c5e71
+.word 0x9349a0d3
+.word 0x41752ac8
+.word 0xae5c39b1
+.word 0x387f6aee
+.word 0x65d84980
+.word 0x81a7c423
+.word 0xc46c5920
+.word 0x6bfdde9d
+.word 0x539f7b72
+.word 0xf69fb3c2
+.word 0x39d728f8
+.word 0x5c812a97
+.word 0x823458b3
+.word 0x6f965976
+.word 0x7d6b26e3
+.word 0x5a84a850
+.word 0xe21951e6
+.word 0xde0a0a3b
+.word 0x4a542c7d
+.word 0xd3a80224
+.word 0x1c625f4f
+.word 0x3d49e275
+.word 0x57b8c369
+.word 0xc733d3f5
+.word 0xbec559f3
+.word 0xa1fe3fff
+.word 0xfc4a4cdd
+.word 0x00f0b5c4
+.word 0xce970e7f
+.word 0x31ac96e8
+.word 0x84233090
+.word 0xbd6681fe
+.word 0x6bd962c4
+.word 0x0699d17b
+.word 0x6acfb9e4
+.word 0x451e62ba
+.word 0x80310fe6
+.word 0x06ff6274
+.word 0x5afa02e8
+.word 0x401e6515
+.word 0x5d464ce2
+.word 0x978e0e3c
+.word 0x0adbba5e
+.word 0x74a31e70
+.word 0xbdb40753
+.word 0x4647a3d0
+.word 0xb63e01aa
+.word 0xf9890270
+.word 0xadd0194b
+.word 0x239b0d18
+.word 0xbf5fa871
+.word 0x192ad76b
+.word 0x2ba0d032
+.word 0xca159ca6
+.word 0x6effa56a
+.word 0xb55e4c7b
+.word 0xbebc2a87
+.word 0x6efbb421
+.word 0x6f37c153
+.word 0x191de590
+.word 0x49e26039
+.word 0x4967a57d
+.word 0xf6211bd9
+.word 0x24c20538
+.word 0x7a7b9aba
+.word 0x801154b3
+.word 0x754837ac
+.word 0x6e096c52
+.word 0xbb2417b2
+.word 0x546c4707
+.word 0xce634e3b
+.word 0x7c63b9e9
+.word 0xf522766d
+.word 0x48426252
+.word 0x21f8f67e
+.word 0xbfa6135b
+.word 0x2a5521e1
+.word 0x3752cfbb
+.word 0x93bdbc4f
+.word 0xcfdbb43d
+.word 0x2624a188
+.word 0xe6c5cd25
+.word 0x6165da16
+.word 0xa3b93b29
+.word 0x8749fd26
+.word 0x63c6e182
+.word 0x44129872
+.word 0x7d2bf77a
+.word 0x9352c650
+.word 0x50da43d5
+.word 0x0ef14101
+.word 0x1fb9f66c
+.word 0x1377f8eb
+.word 0x008bdc6c
+.word 0x3c6401ea
+.word 0x7c8dcb2f
+.word 0xce345a14
+.word 0x04bddb99
+.word 0x29194dfe
+.word 0xb18b68de
+.word 0xe8ad5bdd
+.word 0x6d198b67
+.word 0xf8aa04ac
+.word 0xf3636d5c
+.word 0x18694693
+.word 0xaa81ef20
+.word 0xbb29a349
+.word 0xe522dca8
+.word 0x721928c8
+.word 0x08ce9a7e
+.word 0xfee6ddf0
+.word 0xf103fe49
+.word 0x96543f48
+.word 0xb4bfee09
+.word 0xac4368e6
+.word 0xb7a0ced2
+.word 0x8ec274c5
+.word 0xa6be9bd2
+.word 0xd264c5d1
+.word 0xec78910e
+.word 0x09d7eccc
+.word 0x4a65e3b2
+.word 0xdb31feca
+.word 0xd3f78089
+.word 0x0129e5d7
+.word 0x9819a435
+.word 0x53a51ed5
+.word 0xfff6f703
+.word 0x46c37f46
+.word 0xe2e9f305
+.word 0x5ac082bb
+.word 0xfc29b377
+.word 0xba2e6b10
+.word 0x268ea452
+.word 0x19ccc228
+.word 0xcd7b0b78
+.word 0xd74e50b0
+.word 0x90e3c2b4
+.word 0x633f67d1
+.word 0x8b59b061
+.word 0x6fedfbf5
+.word 0x89ccaa32
+.word 0x07b7486f
+.word 0x2005daca
+.word 0x72599796
+.word 0xd8a255bc
+.word 0x13c68e5a
+.word 0xba856c54
+.word 0xa2528c47
+.word 0x5c7833ca
+.word 0x367a9dbc
+.word 0xc6ce2cd6
+.word 0x7db0c839
+.word 0xe6c53a3b
+.word 0x1fd26c2f
+.word 0x635ef09a
+.word 0x16381258
+.word 0x58b05f9e
+.word 0x2102b79b
+.word 0xcf35618a
+.word 0xb4fd9646
+.word 0x754e161a
+.word 0x862405e8
+.word 0x4e65d575
+.word 0xa7502854
+.word 0x7db1e6cf
+.word 0xec9e2293
+.word 0x8b8c5683
+.word 0x29415194
+.word 0x336f99dd
+.word 0x230e6af4
+.word 0x7f0a7b1b
+.word 0xf82ebf35
+.word 0x7354e6d3
+.word 0x0899c256
+.word 0x32402ed8
+.word 0x3a6fa26f
+.word 0x3caeb117
+.word 0x82e97ad7
+.word 0xd0addcfd
+.word 0x1fb90603
+.word 0x5dda2484
+.word 0x7e3b4ba5
+.word 0x61c161ee
+.word 0x9b348d94
+.word 0xfaf82ca9
+.word 0x93a57a6f
+.word 0x7542c48f
+.word 0x68341967
+.word 0xf9e3a0ec
+.word 0xa23a0a4c
+.word 0xc3faee58
+.word 0x24742345
+.word 0xdef7a7b2
+.word 0xbb5f6b59
+.word 0x29c49a88
+.word 0x7faf88f2
+.word 0x68dcc2ef
+.word 0x01a0c18f
+.word 0x1de64aaa
+.word 0xda7bb568
+.word 0x0874da98
+.word 0x7e6d136e
+.word 0xba570dfc
+.word 0xab60f726
+.word 0x58d8e137
+.word 0x4085e6e5
+.word 0xc877fc84
+.word 0xb612e04b
+.word 0x49804d47
+.word 0x2b159940
+.word 0x4d127e06
+.word 0xf1a0d493
+.word 0x51fc6728
+.word 0x3e2f4838
+.word 0xb6b5948f
+.word 0x792f6505
+.word 0xb38a9507
+.word 0xaea40d1f
+.word 0x24338214
+.word 0x1bb8a4b3
+.word 0x42a60781
+.word 0xeb04a7a2
+.word 0x31d41d1a
+.word 0x802d8cfc
+.word 0x24faa024
+.word 0xcf960580
+.word 0x456bedf9
+.word 0x2c8088f2
+.word 0x388ad0ae
+.word 0x69c132c8
+.word 0xbd19b933
+.word 0x52bea52b
+.word 0xcf5acb5b
+.word 0x89d45132
+.word 0xe3b75c03
+.word 0xb9a4729a
+.word 0x54010cca
+.word 0x648d5dbd
+.word 0x4c289ed8
+.word 0xb1c53fe5
+.word 0xa8d87a8b
+.word 0x83490aa4
+.word 0xaf4cb4e0
+.word 0xee99d169
+.word 0x84dac9b5
+.word 0xf07bb1bc
+.word 0x22e03a8c
+.word 0x6e9f18e0
+.word 0xd352c5a9
+.word 0xf7f09e25
+.word 0xbeb4fbc1
+.word 0x3762fe84
+.word 0x66e2d9aa
+.word 0xe308bfd2
+.word 0x4ea14caf
+.word 0x6efa7a8d
+.word 0xeca647d9
+.word 0x6245cc61
+.word 0x03b57e03
+.word 0x58325181
+.word 0x07c73605
+.word 0x145e4f1f
+.word 0xb984349f
+.word 0xeaeb92c3
+.word 0x6077858b
+.word 0x73dce50f
+.word 0x7c5a6995
+.word 0x67afe577
+.word 0x3da42eba
+.word 0xf3f4e254
+.word 0xda586033
+.word 0xab562177
+.word 0x1d170a98
+.word 0xf5148c85
+.word 0xec7ea56a
+.word 0x63a1be1b
+.word 0x045c7c44
+.word 0xd50c7575
+.word 0x5f18b3ea
+.word 0x951f3b16
+.word 0xad77b424
+.word 0x5e72824e
+.word 0xdf5ead89
+.word 0x85b45ce6
+.word 0x8deba81a
+.word 0xfa8678cc
+.word 0x66687d02
+.word 0x6a419b35
+.word 0x0c844a4e
+.word 0x0054bf6e
+.word 0x7d114a5c
+.word 0xbbce1d25
+.word 0x15c506c7
+.word 0xc4ed1068
+.word 0x15ae412a
+.word 0xa779de3b
+.word 0x9978c1e5
+.word 0x7e12b60e
+.word 0x103e2d1d
+.word 0x106485ed
+.word 0x1f24df33
+.word 0x75fa67aa
+.word 0x4e9b0296
+.word 0xf87b9a0a
+.word 0x30f82b25
+.word 0xbca54a3c
+.word 0x5ff86f25
+.word 0xdb34461d
+.word 0x52ef5561
+.word 0x8de3d518
+.word 0xad477b74
+.word 0x2ee0dab2
+.word 0x223a35ab
+.word 0x4a984ca7
+.word 0x0983737a
+.word 0xb511e68b
+.word 0xf64a9bd8
+.word 0xa57e2a53
+.word 0xf32284d0
+.word 0x10b66d8f
+.word 0xb78fbd8b
+.word 0x6e6fb30c
+.word 0x79f28627
+.word 0xe1accc70
+.word 0x027cee3c
+.word 0xd5834052
+.word 0x5623cc57
+.word 0x03c3210b
+.word 0xd8339804
+.word 0xcc3b4f52
+.word 0x7856c47a
+.word 0xd5f24073
+.word 0x032e9646
+.word 0x9fab9e1f
+.word 0xd54eeef2
+.word 0x21f181f8
+.word 0x43b0942e
+.word 0xbbce4cb8
+.word 0x07ba91e3
+.word 0x78004056
+.word 0x9e2990f4
+.word 0x645582ea
+.word 0x07ed252d
+.word 0x75b206ae
+.word 0x8deee6ab
+.word 0x8cef11df
+.word 0xf24299b0
+.word 0x56f29d8a
+.word 0xe11f032f
+.word 0xbf6e4cb7
+.word 0x3a54fd0f
+.word 0xa9ee2147
+.word 0xb010214a
+.word 0x7e09e6e1
+.word 0x0e4b56b5
+.word 0x3dd871e5
+.word 0x75d559c0
+.word 0x1b120c81
+.word 0xacec6660
+.word 0x2934b926
+.word 0xdf8fe306
+.word 0x5d25651d
+.word 0xb1a87b46
+.word 0x4a33f51a
+.word 0xa369e538
+.word 0x9f0b3143
+.word 0x8e52ccfc
+.word 0x86744d75
+.word 0xbb3b7923
+.word 0xa6c94d20
+.word 0x16fb26a7
+.word 0x79bfc0ed
+.word 0x863c8b8c
+.word 0x5a074b18
+.word 0xbf6feb51
+.word 0x2ada1bce
+.word 0x388ca282
+.word 0x4c3e3d36
+.word 0xd61eabe1
+.word 0x304c87b2
+.word 0x5fb515ef
+.word 0xd51be178
+.word 0xfaf66468
+.word 0xb8a879d8
+.word 0x3111115e
+.word 0xb368c46c
+.word 0x48523365
+.word 0x4dd50cb8
+.word 0x2c189120
+.word 0xce4052a9
+.word 0x0a753c71
+.word 0x77e8ce2a
+.word 0xb03315db
+.word 0x19c5db1f
+.word 0x1bdb99ff
+.word 0x818f0f9f
+.word 0x5d0ad5f7
+.word 0xea35550b
+.word 0x08195e02
+.word 0xf9f9755f
+.word 0xdce96291
+.word 0x7b9f2256
+.word 0x9511b2e9
+.word 0xc758f894
+.word 0x9632b1b3
+.word 0x964fe5c9
+.word 0x2661acca
+.word 0x2a0b911d
+.word 0x7c7f659b
+.word 0x9d2adca7
+.word 0x3a2858c6
+.word 0x0cc97d24
+.word 0x926fc639
+.word 0x1186ecb2
+.word 0x8040caf5
+.word 0x26af1de8
+.word 0x5a6c8eed
+.word 0x973810e4
+.word 0xaf390e68
+.word 0xb28f7808
+.word 0xb52323fd
+.word 0xb0dae5f9
+.word 0x7aee1142
+.word 0x2eb681e8
+.word 0x0a620bd7
+.word 0xc79d27df
+.word 0x82665d4c
+.word 0xa0eefc54
+.word 0x02504fe8
+.word 0x0b50c183
+.word 0x0134cfa7
+.word 0x92b80437
+.word 0xc7a19876
+.word 0x0d911fa1
+.word 0x039c1fff
+.word 0xd2d11e4a
+.word 0x2441e8be
+.word 0x26e45d6b
+.word 0xfce906bc
+.word 0xc481cbdb
+.word 0xec5c9a48
+.word 0x8b6feeca
+.word 0xb49cf1c2
+.word 0xf83ed23c
+.word 0xfb075293
+.word 0x50bba0e7
+.word 0x97b93dea
+.word 0xa34aac18
+.word 0xff5d1fbb
+.word 0xbe854a19
+.word 0x31549818
+.word 0x092bbb7b
+.word 0x02423074
+.word 0x74302510
+.word 0xbdce1c56
+.word 0x7d8c1b17
+.word 0x97ecffbf
+.word 0x865998c4
+.word 0xe607b21c
+.word 0x9eeb657b
+.word 0xe3c25405
+.word 0xdefba558
+.word 0x53074b88
+.word 0xd145c03b
+.word 0xf99003ae
+.word 0x4218a350
+.word 0xb2b9a811
+.word 0xc7fcad61
+.word 0x1a5ffd14
+.word 0xa35c128a
+.word 0x0a1eb9ce
+.word 0x3c900c4a
+.word 0x1d65739a
+.word 0xb29bc44b
+.word 0xc17ef1ee
+.word 0x6f8d793c
+.word 0xe5ea45d9
+.word 0x43e60439
+.word 0x333d4de6
+.word 0xbb988ce5
+.word 0xf20ae27a
+.word 0x3fdfde5f
+.word 0xdd0304b1
+.word 0xc481461d
+.word 0x312d2dec
+.word 0xc041392a
+.word 0xb65d83e1
+.word 0xf712d893
+.word 0x873ae1ab
+.word 0x353ef11a
+.word 0xe2fbba40
+.word 0xa72c0f15
+.word 0xc81e8eac
+.word 0xacd049d6
+.word 0xd4463c28
+.word 0xb0a8d61a
+.word 0x96d0251e
+.word 0x4d0bb941
+.word 0x8bb4bb32
+.word 0xe8b214f2
+.word 0x08dd1fa1
+.word 0xe8e28fa5
+.word 0x56b01d76
+.word 0x962b5e5f
+.word 0x65b5ff0b
+.word 0x40144dbb
+.word 0x11539cd7
+.word 0x34dd8f99
+.word 0x5681e306
+.word 0xefc4369e
+.word 0xa12f7555
+.word 0x4a2ad67c
+.word 0x5ee92e16
+.word 0x3f00fd89
+.word 0x09f1d9da
+.word 0x0c2c385d
+.word 0x7f5597a5
+.word 0x148be97c
+.word 0xbf71d874
+.word 0x8d30bf82
+.word 0xac08a090
+.word 0x37b979aa
+.word 0xe8e0cf74
+.word 0xb13a596f
+.word 0xff269fd7
+.word 0x2b14698b
+.word 0x69ccc593
+.word 0xf6adceab
+.word 0x1f58627a
+.word 0xbdf7852b
+.word 0x008ee2a4
+.word 0xc3d2a44e
+.word 0xf900aeb3
+.word 0xe84da722
+.word 0x18bf960b
+.word 0xacb91216
+.word 0x30ee9a2d
+.word 0x7e59afa1
+.word 0xcd5e47ba
+.word 0x253f1dd4
+.word 0x81ff1614
+.word 0xc24159a6
+.word 0x8d7eb95c
+.word 0xf08fe611
+.word 0xa9c30397
+.word 0x2d22c4f1
+.word 0x0851bb3c
+.word 0x1a77df25
+.word 0xff29eee5
+.word 0x379ed817
+.word 0x16964d0c
+.word 0xc29acd19
+.word 0x00be820d
+.word 0xe313f9f7
+.word 0x7dbec600
+.word 0xb5e02bb3
+.word 0x2436b15c
+.word 0xc67c6732
+.word 0xb9c29ea7
+.word 0x5d42fb94
+.word 0xda089ba1
+.word 0x2c6cf2d7
+.word 0xbc2cdcd8
+.word 0x8b91f159
+.word 0x5d16c56c
+.word 0x923c7022
+.word 0xd790afa6
+.word 0x0585c3f1
+.word 0x7759922a
+.word 0xa86c6143
+.word 0x196eac11
+.word 0xcf72e6d8
+.word 0x3ecbdd2d
+.word 0xf76e1465
+.word 0x885539f8
+.word 0xef7bebaf
+.word 0xb09c9484
+.word 0x5afb74ac
+.word 0xbba25369
+.word 0x85e7f27c
+.word 0x13188485
+.word 0x650d9b0d
+.word 0x926ab1e3
+.word 0x0136d97f
+.word 0x2d3e73ce
+.word 0xcc7ae167
+.word 0xcdc4a51a
+.word 0xd00d490c
+.word 0xe93e87c6
+.word 0xf90906d1
+.word 0x2087a498
+.word 0xde74ebbd
+.word 0xae3f2699
+.word 0x132bc79f
+.word 0xc4bdbd6b
+.word 0x7f86283c
+.word 0x547a018c
+.word 0xe5f09514
+.word 0x40e64b8d
+.word 0x96321c5f
+.word 0x3a2f1c30
+.word 0x0bee6c49
+.word 0x31c98241
+.word 0x319a891e
+.word 0x241f56f6
+.word 0xe80d9f9c
+.word 0x55dffb49
+.word 0x8a249b45
+.word 0xf59df542
+.word 0xdad3e646
+.word 0xf939364b
+.word 0xe806e627
+.word 0xb8cb22c0
+.word 0x64276146
+.word 0x9729df97
+.word 0xfe35ee57
+.word 0x5c96f0ce
+.word 0xb2ab37dc
+.word 0x7cf86b8b
+.word 0x60ccc79f
+.word 0x51f60f36
+.word 0x1ce6dec7
+.word 0x82ac792b
+.word 0x75129ce3
+.word 0x70bae14f
+.word 0x04d9dcdc
+.word 0x135898c6
+.word 0x9c091374
+.word 0xe7a7449b
+.word 0x7eb0b6ba
+.word 0xdc88fe5f
+.word 0xd2ead572
+.word 0x513e1239
+.word 0xa200d4ee
+.word 0x33529e3b
+.word 0xe633dd12
+.word 0xf36fcb7c
+.word 0xbeea5bd1
+.word 0x83cb079e
+.word 0x062de2d1
+.word 0x84008450
+.word 0x92a6579d
+.word 0xa81332a0
+.word 0x1db0e55a
+.word 0x29c648e0
+.word 0x92cdadd3
+.word 0x9ba3e36d
+.word 0x9fef2dac
+.word 0xbe15606a
+.word 0x12d4abb1
+.word 0xad56ba35
+.word 0xee7acdb4
+.word 0xa5db2d4f
+.word 0x1c42ca87
+.word 0x005113b0
+.word 0xd7d6dac6
+.word 0xec2453af
+.word 0x4be89b0b
+.word 0xc82a186a
+.word 0xbf9b09c5
+.word 0xdad021cb
+.word 0x3e04c35d
+.word 0x6e28f0fa
+.word 0xecd1126c
+.word 0xdc51c04f
+.word 0x44abf3b5
+.word 0xa358548d
+.word 0x9f5866bc
+.word 0xa1e5ad57
+.word 0xc0ef2e75
+.word 0xf6d34a6a
+.word 0x2744e844
+.word 0x024e5a2c
+.word 0x4fc5abff
+.word 0xe53cca23
+.word 0x7a7c164d
+.word 0xc26fa16e
+.word 0xe7aef6d0
+.word 0x0584e2c8
+.word 0xf41028ad
+.word 0x340d80be
+.word 0x2a481620
+.word 0xd3d675eb
+.word 0xb640d4a6
+.word 0x3ff5bf3f
+.word 0x3238c611
+.word 0x61aa3505
+.word 0xcdf60292
+.word 0x1de4cb48
+.word 0x0e48545a
+.word 0xb070c15b
+.word 0x054eab2a
+.word 0xa19d84f9
+.word 0x7c3ca8d1
+.word 0x2b701e72
+.word 0x60e0e746
+.word 0x45e495a9
+.word 0x23fc28c9
+.word 0xa8a77b48
+.word 0x15c70e8b
+.word 0xfd232a5c
+.word 0x5a07639e
+.word 0xccd66e98
+.word 0xc2d6bda7
+.word 0xc3bb4d58
+.word 0xd124e96a
+.word 0x4b985d23
+.word 0x72b225cd
+.word 0x73c820b4
+.word 0x0c104758
+.word 0x32e81be8
+.word 0xa72b1d9c
+.word 0x516a5519
+.word 0x6ba9c8df
+.word 0x93792bd0
+.word 0x873fd688
+.word 0x05c5f036
+.word 0x430dabcf
+.word 0x908eccd1
+.word 0x197ec1d1
+.word 0x22576ee3
+.word 0x1fa7915e
+.word 0x0691a3da
+.word 0x242bbae2
+.word 0xb5c9c543
+.word 0x267c862a
+.word 0x14c66f90
+.word 0xa051c95b
+.word 0xcbd67ec3
+.word 0x822dcbda
+.word 0xd6f14ee6
+.word 0x30105b39
+.word 0xb26e8a89
+.word 0x82c68631
+.word 0xd651f3b1
+.word 0x76fc8d89
+.word 0x502fd146
+.word 0x7d4e6057
+.word 0x0435d304
+.word 0x2ef39008
+.word 0xf9087ce7
+.word 0x57b6b29a
+.word 0xb3f7bb76
+.word 0x9a90c4e0
+.word 0xeef17097
+.word 0x1afcca79
+.word 0x4440af46
+.word 0xe61e1f15
+.word 0x7211f1ba
+.word 0x50600893
+.word 0xca8b9195
+.word 0xed957df9
+.word 0xb4a46950
+.word 0x6746ffdd
+.word 0xc47a0a9a
+.word 0x4b8ede29
+.word 0xc8dcbf05
+.word 0x78fbf0bb
+.word 0x6fe81522
+.word 0x5dc13f22
+.word 0xd970ba0b
+.word 0x56ce7468
+.word 0xfba3bef1
+.word 0x40c2b06a
+.word 0xcf1a1d14
+.word 0x86152e67
+.word 0xf7a00ba6
+.word 0xfa858bd8
+.word 0xfdbba29c
+.word 0xc4fd6de6
+.word 0x6e8ea9bc
+.word 0xd88dd6eb
+.word 0x60c6fe2b
+.word 0xd4cdc957
+.word 0xe98a1a86
+.word 0x183b5b53
+.word 0x16fa9247
+.word 0xaafb949d
+.word 0x796a6633
+.word 0xd9afa43b
+.word 0xdcd95775
+.word 0x5384ce4f
+.word 0xa65b008a
+.word 0x1eb1f3b2
+.word 0x398d1c58
+.word 0x4111dead
+.word 0x26632421
+.word 0xbefefff7
+.word 0xfc3c42be
+.word 0x747c7f5a
+.word 0x159e0011
+.word 0xdd87003a
+.word 0x9b36a9e4
+.word 0x816cb8ce
+.word 0x7f05e5d7
+.word 0xb004de6f
+.word 0x6dc77aed
+.word 0x19fae491
+.word 0x10d4f837
+.word 0xee9d8910
+.word 0x4a9bb659
+.word 0xd10d9796
+.word 0x278d9bd9
+.word 0x3b613619
+.word 0x037d2e00
+.word 0xe72082d9
+.word 0x4005abf8
+.word 0x12ea025c
+.word 0x86426321
+.word 0x50b87999
+.word 0x2939ca6f
+.word 0x13d44339
+.word 0xcf2b2a21
+.word 0xdf8aced2
+.word 0x13bc6bb1
+.word 0x4ebf5e55
+.word 0xffd0c258
+.word 0xf5d63a72
+.word 0xb0fb0e01
+.word 0x3371ac02
+.word 0xaf3d18e0
+.word 0x267ad585
+.word 0xeec5af9b
+.word 0xc09d8a7f
+.word 0x9f729363
+.word 0xd1d27ded
+.word 0xfd99f3ef
+.word 0x97d0d072
+.word 0x69ef9d1c
+.word 0x8eb1c84d
+.word 0x2c9471bc
+.word 0x092a45ce
+.word 0x73c04be3
+.word 0x2b43f11e
+.word 0x656b1528
+.word 0xaa4bbd5f
+.word 0x17919197
+.word 0x43362c70
+.word 0x828f6364
+.word 0xa9bf122d
+.word 0x92fe8ea2
+.word 0x9d83e510
+.word 0xdf7cd455
+.word 0x0ddc2259
+.word 0xa8ee4eef
+.word 0x20766d98
+.word 0x2243309f
+.word 0x1d9139fc
+.word 0x75bc91d2
+.word 0x83afdfad
+.word 0x46a7a819
+.word 0xd36064d6
+.word 0xf4887e8c
+.word 0x4f583185
+.word 0x68a2cf80
+.word 0xbcd1a0d8
+.word 0xe97a18e3
+.word 0x9e7bae32
+.word 0x9b275eb5
+.word 0x2319c759
+.word 0x471fbcaa
+.word 0xd7fc5338
+.word 0x2ef9b304
+.word 0xd0f45937
+.word 0xec29c86e
+.word 0x81193b36
+.word 0x4c8a455a
+.word 0xdc1367db
+.word 0x4c6e8268
+.word 0xe6d12013
+.word 0x01f8385f
+.word 0xc9c94036
+.word 0x3921b60f
+.word 0xb60add0c
+.word 0x01e07851
+.word 0x9434cd97
+.word 0x4f9d87ee
+.word 0x1f7a824a
+.word 0xa03b9109
+.word 0xd8bd796d
+.word 0x6b727539
+.word 0x9bc3e8ed
+.word 0x81b4cad8
+.word 0xc9e14efc
+.word 0x3f07da31
+.word 0x3e1aa35e
+.word 0x2ce99dc5
+.word 0x7e2d633b
+.word 0xeb571f18
+.word 0x08997a7b
+.word 0x9c236aa7
+.word 0x803850a0
+.word 0xfe0f6a9c
+.word 0xc84bccb5
+.word 0x782b8af4
+.word 0xc3a560f8
+.word 0x73982eff
+.word 0xe8187d01
+.word 0x09051f1a
+.word 0x1c5c1925
+.word 0x04b224ab
+.word 0xbb6d23f9
+.word 0xdcbb229c
+.word 0x6294b44c
+.word 0xc938178b
+.word 0x693244a6
+.word 0xc59d2eff
+.word 0x14e93d0a
+.word 0xc528ff7b
+.word 0x51895b07
+.word 0xe96df9dc
+.word 0x1d54ff2b
+.word 0x99424116
+.word 0xb27b81f8
+.word 0xa7f2d5fd
+.word 0x7c2a8b14
+.word 0xed65f0a2
+.word 0x2051765c
+.word 0x50da97e5
+.word 0x5e6415ba
+.word 0xb2b97e8b
+.word 0xbd97b0b8
+.word 0x21e58cbe
+.word 0x25083430
+.word 0xd3c91c1e
+.word 0x78e2d1db
+.word 0x4e047fc6
+.word 0xfeba6055
+.word 0x35222118
+.word 0x7607d1ac
+.word 0x01f4dff9
+.word 0x6ca9f863
+.word 0xa1ed5fa9
+.word 0xf354e9bf
+.word 0xa4a32723
+.word 0x68a8aa14
+.word 0x17adc059
+.word 0x3145c448
+.word 0xbac5a484
+.word 0x7592ee48
+.word 0x38334409
+.word 0xbb374f00
+.word 0xed615663
+.word 0x73fb8729
+.word 0xacc323ff
+.word 0x64950e1d
+.word 0x619ee3fa
+.word 0x347a4834
+.word 0xaaaf3887
+.word 0xbfe3232c
+.word 0xdeff01ba
+.word 0x94e6a4bc
+.word 0xec652405
+.word 0xae8463de
+.word 0x9f435bee
+.word 0xd6c49f04
+.word 0x630dc8bf
+.word 0xd82af509
+.word 0x4b1fbc6e
+.word 0xf6a43723
+.word 0xf51bd8b3
+.word 0x0a8d2f14
+.word 0x685e8548
+.word 0x970895a0
+.word 0x18588b95
+.word 0xcb84e443
+.word 0x67be50ea
+.word 0xcac20066
+.word 0x1a66f819
+.word 0x793fad21
+.word 0x65ea5831
+.word 0xe1916662
+.word 0xc9e07e8a
+.word 0xf316b0e8
+.word 0xe18ddf3e
+.word 0xd3c5943c
+.word 0x4ac12b8f
+.word 0xaa458a91
+.word 0xd4752d14
+.word 0xc5f3f072
+.word 0x46cd370b
+.word 0x46c163a7
+.word 0x430e2809
+.word 0xe8facc86
+.word 0xcb94c0f7
+.word 0xa2e4b1a8
+.word 0xfbe2e3f8
+.word 0xefcb8967
+.word 0x22c76262
+.word 0xf7168405
+.word 0xbc148202
+.word 0x019e6f26
+.word 0xdbf7f9ef
+.word 0x07c36803
+.word 0x4fdfd33b
+.word 0x1149bc94
+.word 0x14d8c21d
+.word 0x8b1fec76
+.word 0x272f22e8
+.word 0x83b02fcc
+.word 0x3e502f00
+.word 0xcf8f37ba
+.word 0x11f4a13c
+.word 0x573b82aa
+.word 0x88f332d6
+.word 0xb06f1833
+.word 0x5eb7d235
+.word 0xbc0ddd73
+.word 0x0a0f2036
+.word 0xeec00214
+.word 0x8ef18bb1
+.word 0x24c6bda6
+.word 0x2fe11f67
+.word 0xfcddc956
+.word 0x0c46e83d
+.word 0xf49cc273
+.word 0x6ec5cfc0
+.word 0x8ca0829f
+.word 0x8a0a10aa
+.word 0x312c71e2
+.word 0xa13d6a37
+.word 0x443c6a6b
+.word 0x9b0989e1
+.word 0x7aed2a55
+.word 0xdc878029
+.word 0x24395e5c
+.word 0x70810620
+.word 0x5cb08c1f
+.word 0xd6257327
+.word 0x7da06abd
+.word 0x3cbe931d
+.word 0x1f3bec4f
+.word 0xb727e7b8
+.word 0xd5140c67
+.word 0x772011fb
+.word 0x8c509581
+.word 0xc6be6bbe
+.word 0x98500779
+.word 0x50231b59
+.word 0xffc34d8e
+.word 0xb738cfea
+.word 0x18936cb7
+.word 0x207644b3
+.word 0x041c3380
+.word 0x0fdd76ab
+.word 0x6f31f827
+.word 0x45cd454b
+.word 0xb4a207b2
+.word 0xda8d60b9
+.word 0x9b0d7677
+.word 0x004357a7
+.word 0x3efd6748
+.word 0xf9260731
+.word 0x362471f0
+.word 0xd2ff1e6c
+.word 0xfe0806c8
+.word 0x6c1ff95c
+.word 0xef369d64
+.word 0x9091e6b6
+.word 0x60b07ac4
+.word 0x4d5d733d
+.word 0x1aef1c43
+.word 0xe8ef1dd2
+.word 0xa2a294bd
+.word 0x1ce25355
+.word 0xba4c14fd
+.word 0xfb483131
+.word 0x97cf8396
+.word 0xfcc3c617
+.word 0xe814c775
+.word 0xab4c7e84
+.word 0x7cb06917
+.word 0x9db7563d
+.word 0x153643b1
+.word 0xe0a66759
+.word 0x0f0e4ed3
+.word 0xc6b6149a
+.word 0xa49607ad
+.word 0xc25375d6
+.word 0x1cdf68cb
+.word 0x1b340456
+.word 0x63287bdb
+.word 0xd46f65c3
+.word 0x9f6212ec
+.word 0x10683e4e
+.word 0x7a4a6bdd
+.word 0x4a8f3acf
+.word 0x08fd2eb7
+.word 0x49cd1965
+.word 0xd7d062d7
+.word 0x39e708e6
+.word 0xad6e6600
+.word 0xfc34247b
+.word 0xad000803
+.word 0xee656416
+.word 0x8f65765c
+.word 0x1bf1abff
+.word 0x12361606
+.word 0x50683356
+.word 0x552869c2
+.word 0xb38b0283
+.word 0xff498e68
+.word 0xb83b36c1
+.word 0x75fdf256
+.word 0x0218b07f
+.word 0x0a69f557
+.word 0x5681917f
+.word 0x1ae8e220
+.word 0xad07b259
+.word 0x966c7d7b
+.word 0x285b1b95
+.word 0x6c0a7fe3
+.word 0xde8ff30c
+.word 0xb765d982
+.word 0x9bb6d3c6
+.word 0xbc1973ba
+.word 0x0fa1f741
+.word 0x90b6711c
+.word 0x0c7f94e9
+.word 0x8ca7740a
+.word 0x55b7542f
+.word 0x5acb29a9
+.word 0x86fee1cb
+.word 0x0861601d
+.word 0x9dcb1a5e
+.word 0xc6f8eed6
+.word 0xdbf3fbaf
+.word 0xbfb5f3ef
+.word 0xf1bcbf00
+.word 0xb549c9be
+.word 0x72c586ba
+.word 0x2e9e9e6e
+.word 0xa1bc6384
+.word 0x3db59e57
+.word 0x8082259c
+.word 0xf785bf95
+.word 0xafe442dd
+.word 0xd806c15d
+.word 0x90c31e2e
+.word 0xc64f7841
+.word 0xad2aa960
+.word 0xd0a9208f
+.word 0xa0dec1cc
+.word 0x8e164a9d
+.word 0x8081d538
+.word 0x7645a22d
+.word 0xfb5a77fe
+.word 0x46e5fcd6
+.word 0x455e8f9e
+.word 0xd05a898e
+.word 0xd67e216f
+.word 0x5931f18f
+.word 0x23c4e01a
+.word 0x665bd494
+.word 0xcc5a09c4
+.word 0x09488794
+.word 0x25576022
+.word 0xfb4c49c1
+.word 0x7a9a65c0
+.word 0x7faa0013
+.word 0xd2e68df8
+.word 0x34aa9c08
+.word 0x71ef24c9
+.word 0x32ca0b2b
+.word 0x82a6fd66
+.word 0xa7d5455e
+.word 0x0db8df20
+.word 0xd37a2f5e
+.word 0x8374fc83
+.word 0x3ee5db92
+.word 0x29e472ab
+.word 0x4d9ababd
+.word 0x768dbcd4
+.word 0x01bd7e8d
+.word 0x81d195a3
+.word 0xf63183a3
+.word 0x7b37f602
+.word 0x73b15c94
+.word 0xd63f7b2d
+.word 0xadf88f0d
+.word 0x27319998
+.word 0xd1a82565
+.word 0x0bb35ece
+.word 0x4ffefcbf
+.word 0xd706c886
+.word 0x337ac8e2
+.word 0x6ef57d32
+.word 0xaf6a7529
+.word 0xbfaf99dd
+.word 0xe4004e61
+.word 0x3a904f6e
+.word 0xc6df5def
+.word 0xbcb4a94e
+.word 0xa6395d46
+.word 0xf23e792c
+.word 0x1441d5e3
+.word 0x6f83f483
+.word 0x8f9029ef
+.word 0xe16d5067
+.word 0xb5e4c23b
+.word 0x841d22dc
+.word 0x83b30014
+.word 0x2bdc4504
+.word 0xa215e5fe
+.word 0xc68debee
+.word 0xe35692fd
+.word 0xd948946b
+.word 0x1d87abb4
+.word 0xca10b739
+.word 0x672f52ff
+.word 0xe9799087
+.word 0xda2368e3
+.word 0xf1d32949
+.word 0xbe96425b
+.word 0xc61b7405
+.word 0x01f6e54a
+.word 0x0dea47f9
+.word 0xea95f795
+.word 0x77e625bc
+.word 0x49b55a54
+.word 0x50fc96c7
+.word 0x3a58db8e
+.word 0x0bd0af83
+.word 0x162b462f
+.word 0xbd72fb60
+.word 0xe7d76999
+.word 0x5d31b836
+.word 0x53f1ef1a
+.word 0x83e6006e
+.word 0x2ba6d631
+.word 0x43bb247d
+.word 0x7654e59f
+.word 0xc589aab3
+.word 0xc3dab54a
+.word 0x170f8292
+.word 0x342e7575
+.word 0x12ace139
+.word 0xdedf621e
+.word 0x2ae444fd
+.word 0xa6d25d31
+.word 0x157cb7c5
+.word 0xc0c39ce8
+.word 0x3c7b1f49
+.word 0xab62b696
+.word 0xdfa0e011
+.word 0x3de264a9
+.word 0x067a45a7
+.word 0x8ffbdfeb
+.word 0x486f51a5
+.word 0xba8cb0d5
+.word 0x58cd6dc4
+.word 0x0088329c
+.word 0xb6a886c8
+.word 0xd3ccdcb9
+.word 0xfd38de08
+.word 0xc4a5b709
+.word 0x9ad822cd
+.word 0x237cb254
+.word 0x0650c649
+.word 0x6f296d53
+.word 0x78796f5b
+.word 0x5bf00af9
+.word 0x29fbddef
+.word 0xb86313ce
+.word 0xdc705276
+.word 0x15bf56db
+.word 0xdac5a588
+.word 0x28943bad
+.word 0x61ac13bd
+.word 0xa15b42e4
+.word 0xa4964f65
+.word 0xbb4d4a74
+.word 0x34421fef
+.word 0x5bc86933
+.word 0xaf6e28b0
+.word 0x9668fc2d
+.word 0x82fb1616
+.word 0xf384acc0
+.word 0x34ac5d00
+.word 0xce9d483d
+.word 0xf50ef9aa
+.word 0x0437e07b
+.word 0xdc559095
+.word 0xcf5e833e
+.word 0x5901d907
+.word 0x5440e2f6
+.word 0x8ab18582
+.word 0xeef4eab5
+.word 0x23b9aa88
+.word 0xcf1850f0
+.word 0xa1a1c88a
+.word 0x17a5bf60
+.word 0xf7ff1ae0
+.word 0x3e59d112
+.word 0x20b14370
+.word 0xd82d4062
+.word 0x728c4dd2
+.word 0x6b33e407
+.word 0x4550febe
+.word 0x08d3cdc2
+.word 0x7cbaaa3b
+.word 0x47efe216
+.word 0x69fd913a
+.word 0xc2802d3a
+.word 0xcef482e7
+.word 0x86797830
+.word 0x5c89dc42
+.word 0x4800302c
+.word 0x0e4a5cad
+.word 0x16b5cb4d
+.word 0xef254093
+.word 0x65cd0571
+.word 0xd2f6c24c
+.word 0x6dfcca48
+.word 0x2bfb18b7
+.word 0xd5048035
+.word 0xbc975854
+.word 0x6f1995e1
+.word 0x728e635d
+.word 0xf743d3d8
+.word 0x840c44e1
+.word 0x7b184352
+.word 0x5411d608
+.word 0xd55c07d0
+.word 0x30915a3b
+.word 0x25442093
+.word 0x6523d3c9
+.word 0xacf3193a
+.word 0xeba4bd28
+.word 0xbb51eb70
+.word 0xae971033
+.word 0xbc1edc79
+.word 0x4fc4adf5
+.word 0xa8e6a782
+.word 0x2d9f378f
+.word 0xa1fce012
+.word 0x28caff87
+.word 0x8c9ae531
+.word 0x4be35216
+.word 0x58c4217f
+.word 0x866a382a
+.word 0x4d94482c
+.word 0x22cde961
+.word 0xf6a71e29
+.word 0x5e88bdd6
+.word 0x2bfdb58f
+.word 0x5628f936
+.word 0x6f5bae1b
+.word 0xf58ef967
+.word 0xad4724e6
+.word 0xd5ac3854
+.word 0xf033502b
+.word 0x63f5fe7c
+.word 0x9e5e2043
+.word 0x9a897924
+.word 0x1fb47994
+.word 0x8b536318
+.word 0x868ec499
+.word 0x02b86607
+.word 0x3058ec67
+.word 0xbe60f9a8
+.word 0xd24e9f71
+.word 0xcbc74c9e
+.word 0x1c7ffdb8
+.word 0xe53eab42
+.word 0xd5707ced
+.word 0x82c34831
+.word 0x060a4404
+.word 0xf149d9fe
+.word 0x8dcda505
+.word 0xd866cc4e
+.word 0x003c03e3
+.word 0x06e3e1da
+.word 0xfcd84506
+.word 0xbc6dc4b7
+.word 0x028ec3fa
+.word 0x9085a206
+.word 0xafc0e496
+.word 0x63c78c06
+.word 0xcab662d1
+.word 0x4181b1aa
+.word 0xa7d1c978
+.word 0x87532c1f
+.word 0x888d6b54
+.word 0x11933d4f
+.word 0x7b065400
+.word 0xfc6b065b
+.word 0xf1679afc
+.word 0x14811963
+.word 0xc39c9287
+.word 0xa357cd9f
+.word 0x463a71e6
+.word 0xa197d1d7
+.word 0x333fa7c0
+.word 0x9679905a
+.word 0xcd9ec3d0
+.word 0xe2d9c846
+.word 0x7080fab0
+.word 0x3cbdea54
+.word 0xbeb225ac
+.word 0x8048aab4
+.word 0x72cc3568
+.word 0x3a0699a9
+.word 0xc9bc55c1
+.word 0xaf2184c3
+.word 0x6541c57e
+.word 0xec127bbf
+.word 0xc3adb16d
+.word 0x5fb7ac8f
+.word 0xcde57356
+.word 0x4e0b48e9
+.word 0x771aa434
+.word 0x04ac5ca3
+.word 0x12c86cef
+.word 0x9dae6e8b
+.word 0x7eead0c0
+.word 0xcabf2f4a
+.word 0x953e9a38
+.word 0xbe3fa786
+.word 0xa6bb2c75
+.word 0x18825f0b
+.word 0x1c817c8f
+.word 0xc1920c04
+.word 0x5317d2b8
+.word 0xb38bce29
+.word 0x29ccdd15
+.word 0x9ea8dc31
+.word 0xd9ab2864
+.word 0xbb12a2d3
+.word 0xc8d88573
+.word 0xb3d77bfc
+.word 0x63c61315
+.word 0x59cea63d
+.word 0x24abd802
+.word 0x1f8f3bd6
+.word 0x1a32cbdb
+.word 0x21e23f3b
+.word 0x104abbbe
+.word 0x82ddafb6
+.word 0xe2ad9e5a
+.word 0xb69757e4
+.word 0x0edc1bcf
+.word 0x9fd36be6
+.word 0x6e358793
+.word 0x271e67a8
+.word 0xdec8e648
+.word 0x1f50f98b
+.word 0xa5189f5e
+.word 0x6c595c57
+.word 0x7fc103a7
+.word 0xa44e0d0b
+.word 0x4571e91c
+.word 0xa57c958d
+.word 0xf67581d4
+.word 0x5778b379
+.word 0x89e3425d
+.word 0x8447d8c3
+.word 0x176d6888
+.word 0x7dd6809a
+.word 0x3813e480
+.word 0xdc85feae
+.word 0xe12b3a93
+.word 0x4985fefb
+.word 0x3c7a59d3
+.word 0x9db55b8d
+.word 0xfb6f91a8
+.word 0xd5b5c41a
+.word 0x11493bba
+.word 0x9e0f4af7
+.word 0x42171b9f
+.word 0x53d21dc8
+.word 0x97ec5eac
+.word 0xa82865ea
+.word 0x4eec2227
+.word 0x3207bf62
+.word 0xdd7f243c
+.word 0x66b955ad
+.word 0x9b16eb79
+.word 0x67f11cd5
+.word 0xaae08962
+.word 0xd7c6fce4
+.word 0xba7f8b2a
+.word 0x433c6704
+.word 0x36a1ac3f
+.word 0x85f959a0
+.word 0x14afe36c
+.word 0x15f0a9b6
+.word 0x8792f4b0
+.word 0x4c78cafb
+.word 0xef72a320
+.word 0xfe2d59de
+.word 0x3c171847
+.word 0xd5626f29
+.word 0xc0776c33
+.word 0x23aabe05
+.word 0xa5d598db
+.word 0xd00ae3b6
+.word 0x9ca79f78
+.word 0x41968de1
+.word 0xff585d7b
+.word 0xc0f53bd7
+.word 0x840997cc
+.word 0xb95e324c
+.word 0x106664fe
+.word 0xe66955cb
+.word 0x64e0be27
+.word 0x5680256c
+.word 0x2922b57a
+.word 0xee7da687
+.word 0x0ca2cf8c
+.word 0xc65f52c2
+.word 0xd08e3009
+.word 0x7e17a21d
+.word 0x5005fa9a
+.word 0x65034e95
+.word 0x7662bef0
+.word 0xd282a683
+.word 0xdd64be3c
+.word 0xb6e9c038
+.word 0x1dfef410
+.word 0x12b64ae7
+.word 0x57f91bce
+.word 0xaec254e0
+.word 0xe3e26d60
+.word 0x035831d1
+.word 0x7c066c6f
+.word 0xa0928080
+.word 0x2e733b49
+.word 0x28a23828
+.word 0x68b31b1b
+.word 0x21641754
+.word 0x4e9b8a8c
+.word 0x16f1d72b
+.word 0x1c98e8f5
+.word 0x3114d062
+.word 0xd4dbeb24
+.word 0x94a9c195
+.word 0x3649dc81
+.word 0x553422c9
+.word 0x49b8d64d
+.word 0xebcff460
+.word 0xb2a90840
+.word 0x9040c497
+.word 0x223932a2
+.word 0xa0118c53
+.word 0x9b85fa31
+.word 0xca008a33
+.word 0x1b1c3e6f
+.word 0xd4155950
+.word 0xd90e3b39
+.word 0xfbfb940c
+.word 0xe28433e0
+.word 0x97927098
+.word 0x6c717001
+.word 0x423a8090
+.word 0xdd7621ed
+.word 0xb25192d0
+.word 0xd231167c
+.word 0x5c0245fe
+.word 0x5655431f
+.word 0xfd5103ea
+.word 0x14590d2e
+.word 0xeb7b0d65
+.word 0xfa501504
+.word 0x7bc44e75
+.word 0xc851b166
+.word 0xf68c34ee
+.word 0xc79066df
+.word 0xa802f81b
+.word 0xa4bdafc9
+.word 0xdf4c506e
+.word 0xbffa8f8c
+.word 0x4fedb8c8
+.word 0x40c1fec0
+.word 0xba933a04
+.word 0x13be9cf7
+.word 0x2cdf9b25
+.word 0x04235eaf
+.word 0xc578af23
+.word 0x5108529c
+.word 0xf3894575
+.word 0xd3f603dc
+.word 0xe4bf8971
+.word 0x98825fb0
+.word 0x33022d16
+.word 0xd2c8b5c1
+.word 0x9ec8fd8f
+.word 0xdba05958
+.word 0x08db459d
+.word 0xcefa5326
+.word 0x5e50e08a
+.word 0x4841f11a
+.word 0xd26f07a3
+.word 0x6c0cf4b6
+.word 0xe86131e5
+.word 0x5200b9ed
+.word 0xfd1d0e53
+.word 0x5480d7b6
+.word 0x0f082697
+.word 0x79342bb0
+.word 0x6b4b5304
+.word 0x19692673
+.word 0x6c59b2f8
+.word 0x8a74e289
+.word 0x863a6b9f
+.word 0x1a9cdf7f
+.word 0xe86f1b49
+.word 0x6a16885b
+.word 0x53e28aea
+.word 0x25e0ea30
+.word 0xc8fc9975
+.word 0x4df2e805
+.word 0xf780512e
+.word 0xd123bfaf
+.word 0x16e27bea
+.word 0x9d13d30a
+.word 0x47fcaad3
+.word 0x8c47e322
+.word 0x8da26391
+.word 0xe0343cc7
+.word 0xb0f37b0e
+.word 0x1440b4a5
+.word 0x6e73f30b
+.word 0xd4ac8370
+.word 0x6d94e9a8
+.word 0x07479716
+.word 0xec520f14
+.word 0xd0007a87
+.word 0x4d837818
+.word 0x937243a1
+.word 0xf31c64fb
+.word 0xe175471e
+.word 0x5e0904f9
+.word 0x5fd92917
+.word 0xb5738f67
+.word 0x253f350c
+.word 0xd91dd11b
+.word 0x24b26b8e
+.word 0x02284b1e
+.word 0x5396649a
+.word 0xb749b881
+.word 0xdbcdeb58
+.word 0xae553af1
+.word 0x00b69483
+.word 0x377e7797
+.word 0x3c5ff43d
+.word 0xf300fba1
+.word 0x1b24332c
+.word 0xb9db5458
+.word 0xec9103e6
+.word 0x569fb43d
+.word 0xabfb1aae
+.word 0x1fd80fcd
+.word 0xd62df3f2
+.word 0x8b28507e
+.word 0xfc23d4f1
+.word 0x756bb120
+.word 0x8a50b6b1
+.word 0x17a6f871
+.word 0xbecfd18d
+.word 0x87a57736
+.word 0xbf6fc8c4
+.word 0x6319c5b8
+.word 0xa45c2b42
+.word 0x93e64f78
+.word 0x730ed797
+.word 0x0c7b2a76
+.word 0x609b7198
+.word 0x24523fe4
+.word 0x08f25697
+.word 0x801c60e2
+.word 0x45166ba8
+.word 0x34b289db
+.word 0x94e90005
+.word 0x82c2d8e8
+.word 0x59e0080b
+.word 0xb2c02ed4
+.word 0x87e214a3
+.word 0x4b1b27e2
+.word 0xe9b864e7
+.word 0x36a49a7c
+.word 0xa295f00f
+.word 0x34e1ba03
+.word 0x1997ff53
+.word 0x80445101
+.word 0xe7b72ff6
+.word 0x6e47d2a9
+.word 0xbd0a3f76
+.word 0xc2bb7ef5
+.word 0x38542ecd
+.word 0x0e93b350
+.word 0x5a8c5402
+.word 0x272f0013
+.word 0x6932ea44
+.word 0x3c88f58d
+.word 0xc0f19659
+.word 0xec4a2383
+.word 0x5145dfc1
+.word 0xc4ef81cc
+.word 0x049b8814
+.word 0xe343d7b1
+.word 0x8664cf98
+.word 0xc22d35af
+.word 0x6fabd46c
+.word 0x098eda88
+.word 0xa9012c09
+.word 0x95f15300
+.word 0xdab12afe
+.word 0x1c226713
+.word 0xc49a171e
+.word 0x7c99782e
+.word 0xbbe3cd1f
+.word 0xb043102c
+.word 0xf0c59ecb
+.word 0x8dd8e7be
+.word 0x80b725fa
+.word 0x6a2c4708
+.word 0xee3a9d57
+.word 0xaab6f357
+.word 0x293263b3
+.word 0xf5d0ea46
+.word 0xaa96d7b7
+.word 0x18c068a5
+.word 0x3230dc12
+.word 0xdd3ff731
+.word 0x1abb4b5a
+.word 0x07fd4fce
+.word 0x647deabf
+.word 0x066c1271
+.word 0x60e63cfc
+.word 0x72aadcac
+.word 0xf3fc639a
+.word 0xff389a90
+.word 0x0b8a345a
+.word 0x3adf7044
+.word 0xebf242b7
+.word 0x26e036b5
+.word 0x921f3b8e
+.word 0x8b8bfc76
+.word 0xf1eba522
+.word 0xf3621cc1
+.word 0x40c1e30e
+.word 0xcfd01012
+.word 0xa5ab6b0a
+.word 0x39421da7
+.word 0xa74a6025
+.word 0x0c92fea2
+.word 0xfc6e24cb
+.word 0x386a77e7
+.word 0x8775afea
+.word 0xcae1d140
+.word 0xeefa7d72
+.word 0xe4643147
+.word 0x9424f217
+.word 0x81153946
+.word 0xf4e8898b
+.word 0x7094bb55
+.word 0xb72067d9
+.word 0x97549c6d
+.word 0x74848f35
+.word 0x2af318b0
+.word 0xd6177177
+.word 0x5559d912
+.word 0x2b0a562f
+.word 0x9e1f73a0
+.word 0x518bd530
+.word 0xb9b7eae4
+.word 0x5fc9fdd7
+.word 0xca4fa276
+.word 0x2a62ad04
+.word 0x6f62c274
+.word 0x26be10a3
+.word 0x8dec50fb
+.word 0x5c89e8b3
+.word 0xa7adb060
+.word 0xa2ad6aab
+.word 0x30422772
+.word 0x0bd4fd41
+.word 0xdf175344
+.word 0x45ee0582
+.word 0xaee48495
+.word 0xe5cdf820
+.word 0x2a4c830c
+.word 0xda8b26bf
+.word 0x4eb85612
+.word 0xeabf2ac5
+.word 0x652600b0
+.word 0x81e7327b
+.word 0xabbb2012
+.word 0x8af7baf6
+.word 0x7952a9cf
+.word 0xc5d797e8
+.word 0xb1fa57ab
+.word 0xb29c7679
+.word 0x8aa38631
+.word 0xbed3da64
+.word 0xfecfff31
+.word 0x096ec89e
+.word 0x8fee22bc
+.word 0x4fb4da3a
+.word 0x54b42740
+.word 0xc025750b
+.word 0x6d1fbd36
+.word 0x88e0c173
+.word 0x702f87e8
+.word 0x3574451c
+.word 0x781fa21a
+.word 0x5977c6e1
+.word 0x208114e1
+.word 0xa87441e0
+.word 0x4cf8f3aa
+.word 0x7d6609c1
+.word 0xbe2b302e
+.word 0xe100e476
+.word 0x505af964
+.word 0x6531fe6a
+.word 0xb7d1c524
+.word 0x5c207049
+.word 0x837763ba
+.word 0x380345d5
+.word 0x82dd0224
+.word 0x636906a3
+.word 0x5d0ed5ae
+.word 0xdc91d3b1
+.word 0x2a9f013b
+.word 0xc2e61deb
+.word 0x09cc0977
+.word 0x25dfa05c
+.word 0x04838415
+.word 0x6609d8d6
+.word 0x1a996307
+.word 0x41bcf4a8
+.word 0x88e9278e
+.word 0x818b28a1
+.word 0x822c30aa
+.word 0x5fac010b
+.word 0x81385a68
+.word 0x06c1e17e
+.word 0x9626a487
+.word 0xdff6dc54
+.word 0x62386e89
+.word 0x6ce165f3
+.word 0xe34b4aed
+.word 0x0b0ecc05
+.word 0xf2addda4
+.word 0x4a296f76
+.word 0x9d49eb8c
+.word 0xda1a9a20
+.word 0xad0a5b8a
+.word 0x9b95bd4f
+.word 0xb6213cdc
+.word 0xf85fdf36
+.word 0x6093a201
+.word 0xa3c8d3fd
+.word 0x9353955d
+.word 0x7a051f84
+.word 0xb4d8b0f4
+.word 0xb63e8cb8
+.word 0x2919b0f6
+.word 0xa31901f6
+.word 0xca5a40c1
+.word 0x39b9b250
+.word 0x0083b51b
+.word 0x8e78f1a0
+.word 0xcb6a6c22
+.word 0x7def1c57
+.word 0xff1f3ce8
+.word 0xa6668597
+.word 0x50a08a9a
+.word 0xc42eeb8e
+.word 0x68c4eb51
+.word 0x0b8064db
+.word 0x529911e2
+.word 0xbe322067
+.word 0x86145ae7
+.word 0xbacdeb40
+.word 0x10ea07e1
+.word 0x14ad8aa1
+.word 0x65c08738
+.word 0x1c1c419f
+.word 0x57b1ab5d
+.word 0xac61b093
+.word 0xeb5acda4
+.word 0x4f4d6e59
+.word 0xf81c21b5
+.word 0xee0d70e8
+.word 0xa441d96b
+.word 0x512ed574
+.word 0x4e222dcf
+.word 0xd79641e2
+.word 0x9f1b3f8d
+.word 0xdd8a9387
+.word 0x1d0b0f42
+.word 0xe9851fcd
+.word 0xab38d848
+.word 0xed7a50d0
+.word 0x450395a2
+.word 0xecf1ad70
+.word 0xe470b4be
+.word 0x78e7c22d
+.word 0xac46ea39
+.word 0xc17e0955
+.word 0x7f48c918
+.word 0x6800be2b
+.word 0xbf3c358c
+.word 0x7e729a86
+.word 0x88d64847
+.word 0x5b9dfd53
+.word 0xed06128b
+.word 0xbb536674
+.word 0x67b95a28
+.word 0xae887230
+.word 0x7869dd5c
+.word 0xd44b9061
+.word 0x6f883328
+.word 0x74ad8040
+.word 0x4436c55e
+.word 0xa43b8a1f
+.word 0x2d8d0f94
+.word 0xa113b948
+.word 0x2c0a47bd
+.word 0xb538b967
+.word 0x4e84d25d
+.word 0xfbb507aa
+.word 0xd4ae8243
+.word 0xc0fd3bc1
+.word 0xa25ab290
+.word 0x4ffa8b29
+.word 0x5142f4cc
+.word 0x9ff35cb0
+.word 0xdde57077
+.word 0x09251b3f
+.word 0x62932d44
+.word 0xdeb65e2b
+.word 0x20181dc1
+.word 0xafa92d96
+.word 0x1e9d03bb
+.word 0x4c4130b8
+.word 0x8b84ee46
+.word 0x43993d9c
+.word 0x39604f1e
+.word 0xdd0e2c63
+.word 0x456e36c6
+.word 0x496f1b03
+.word 0xee834a16
+.word 0x7dd26f97
+.word 0x3b71299a
+.word 0x6bd6d843
+.word 0xc8e21329
+.word 0x83a3e88c
+.word 0xfcf3b450
+.word 0x9a4dddf7
+.word 0x2ce6e2e8
+.word 0x836d7bd7
+.word 0x1687dd9f
+.word 0x0305a9f7
+.word 0x7ae8592f
+.word 0x98c86691
+.word 0x348e6246
+.word 0x7e4e883e
+.word 0xb45b66b9
+.word 0x228ab330
+.word 0xf0e70b8d
+.word 0x4d117e4e
+.word 0x99e6e31e
+.word 0xec708ba3
+.word 0xde00f241
+.word 0xe528e921
+.word 0xcfa2384b
+.word 0x03431a05
+.word 0xa2f092f3
+.word 0xbe3f9925
+.word 0x421eceea
+.word 0x39daf08f
+.word 0xd9b4780a
+.word 0xc7e1b3a6
+.word 0x896b231e
+.word 0x64d1ec48
+.word 0xe0423734
+.word 0xd48074db
+.word 0xdafd8eb2
+.word 0xc0b9a6ec
+.word 0xd9a8acbd
+.word 0xdd326815
+.word 0xe3095911
+.word 0x58e26bdb
+.word 0xe48c8e69
+.word 0x04f4f5a0
+.word 0xf07a68ba
+.word 0xa13966d5
+.word 0x2cce4b13
+.word 0x59ceec5f
+.word 0x5fb46cd6
+.word 0x724a7c4e
+.word 0x403b79e4
+.word 0x631c7110
+.word 0x1507e808
+.word 0xc1a1100b
+.word 0xd6dc84b2
+.word 0x8da7b16c
+.word 0x700a8607
+.word 0xbecbc9f3
+.word 0x83a36c31
+.word 0xb8fbac02
+.word 0x25938df6
+.word 0xd2251fc7
+.word 0x9c9677e5
+.word 0xc88d937d
+.word 0xd57db319
+.word 0x76e014fc
+.word 0x96cc05c1
+.word 0x7ed586ee
+.word 0xd9b5d45f
+.word 0x98af10f2
+.word 0x8cf4bc76
+.word 0x1ced686e
+.word 0x24d06346
+.word 0x20259e6e
+.word 0x58a4ccac
+.word 0x0a169eb4
+.word 0x99948abf
+.word 0xb6e06baa
+.word 0xc39b5f4e
+.word 0xf0bcd3a5
+.word 0x718c4523
+.word 0xbad2dd6c
+.word 0x6854049a
+.word 0x9a3bfd77
+.word 0xa5f943b6
+.word 0xa39c09c1
+.word 0xfe2d3113
+.word 0xcf348a4a
+.word 0x9f0d647a
+.word 0x1fb0b4c7
+.word 0xf55594c3
+.word 0x53e752c1
+.word 0x54cf64cc
+.word 0x1cb06395
+.word 0xa1004381
+.word 0xb8e37b62
+.word 0xfc998071
+.word 0xa9f8e527
+.word 0x3cd5fd19
+.word 0xcfe600d9
+.word 0xd27bd6e2
+.word 0xe552f50a
+.word 0x3ee035fa
+.word 0x670141c2
+.word 0x91ff8f00
+.word 0x3c68ff8b
+.word 0xe1c04d0a
+.word 0xa9af0c5d
+.word 0x4f71507e
+.word 0xcbb66d01
+.word 0xe6c0850b
+.word 0x5e373f91
+.word 0xe0d283b4
+.word 0x897b1119
+.word 0x7f2b05eb
+.word 0x962cf88b
+.word 0x1edc6f37
+.word 0xd8fe9c1b
+.word 0x2bd4ad55
+.word 0xdf311053
+.word 0x5e906bb3
+.word 0x11ed4231
+.word 0x53125a5a
+.word 0xac1fdc62
+.word 0x6a410bf6
+.word 0x2067493b
+.word 0x8a1c958b
+.word 0x57762431
+.word 0xd30d42b4
+.word 0xa78bbb53
+.word 0xce7d3760
+.word 0xac303946
+.word 0xc698498b
+.word 0x8e748c21
+.word 0x424d2992
+.word 0x4412966e
+.word 0x1b34fd54
+.word 0xa147a85e
+.word 0x9585d052
+.word 0x457b2bb4
+.word 0x86c5c100
+.word 0x29ba876c
+.word 0xefd2c469
+.word 0x76e9aa1a
+.word 0xd5536f40
+.word 0x1dbcda52
+.word 0x7e7b0277
+.word 0x86d8e9a7
+.word 0xde697452
+.word 0x1fda92d5
+.word 0xb0eac8bb
+.word 0xa25c24cc
+.word 0x7326cb34
+.word 0x09b60515
+.word 0x3d42fac7
+.word 0x3c3802a5
+.word 0xe8be0b34
+.word 0x6b7df584
+.word 0x24c4a546
+.word 0x46462f97
+.word 0xdc6051fa
+.word 0xb045a00f
+.word 0x56792c04
+.word 0xc07fd1a3
+.word 0xd2ff0200
+.word 0x29554dfa
+.word 0x4695cd2f
+.word 0xf6475be7
+.word 0xf8b65cd5
+.word 0x019ca407
+.word 0x8805ff33
+.word 0xcd095608
+.word 0x49c6e8a5
+.word 0xdb20c213
+.word 0xdcbdebf3
+.word 0x1fce76bd
+.word 0x8a4ee803
+.word 0x21cfc55a
+.word 0x0ec07d01
+.word 0xf3e07be0
+.word 0x55ad3763
+.word 0xfff1e20e
+.word 0x8335b3b2
+.word 0x260cdd27
+.word 0x1f1a18a7
+.word 0xf2177e9a
+.word 0x2629424d
+.word 0xeb8e1c2b
+.word 0x4f5731ac
+.word 0x98940400
+.word 0x00297dea
+.word 0x63e051db
+.word 0x1629b48b
+.word 0x03c54d38
+.word 0x8160457b
+.word 0x69873fa2
+.word 0xb58226de
+.word 0xc8d42d37
+.word 0xd286dab8
+.word 0xd6f66b9d
+.word 0xd551194e
+.word 0x2ed5d18b
+.word 0xa7a9a01a
+.word 0x8c092f55
+.word 0xc00b6ca9
+.word 0xda1e11d9
+.word 0x37f8a242
+.word 0x915d88ff
+.word 0x06e1878b
+.word 0x9302a2e0
+.word 0xf08a97dd
+.word 0xf20129b8
+.word 0xc3ea3257
+.word 0x7cf57960
+.word 0x6dcd3b12
+.word 0xf097a68e
+.word 0x1f2e1a2c
+.word 0x35b44034
+.word 0x81b35a96
+.word 0xbe438c5d
+.word 0x1cbdf452
+.word 0x20192bd3
+.word 0x6d936066
+.word 0x4368614a
+.word 0xadeacaf3
+.word 0x6bff134a
+.word 0x65f1de19
+.word 0x382c2793
+.word 0xc08e8c29
+.word 0x9927bed2
+.word 0x929367e4
+.word 0x95dd1da5
+.word 0xe75d71b6
+.word 0xa50389c0
+.word 0x0e83fe73
+.word 0x5afc883a
+.word 0x27814e36
+.word 0xb3a96dc8
+.word 0x8eb84b68
+.word 0xdcf97022
+.word 0xb65e75ff
+.word 0x7dcf3ef5
+.word 0xcd5660ba
+.word 0x7f37434a
+.word 0x9bbae642
+.word 0x93f6c476
+.word 0x3e34af99
+.word 0x18fc2191
+.word 0x75d600d2
+.word 0xa3f76082
+.word 0x1facf037
+.word 0x5be7b913
+.word 0xc9f59fb1
+.word 0x7783386d
+.word 0x0685c571
+.word 0x1c1f2b16
+.word 0xbbfb0879
+.word 0x6c3827ad
+.word 0x3bf31d24
+.word 0x7c311aef
+.word 0xde0ccf07
+.word 0x1faebc10
+.word 0x1ed7d82a
+.word 0xaa6d431a
+.word 0x28a4bd9a
+.word 0xad678885
+.word 0x9878f5f7
+.word 0xfc5d40a2
+.word 0x42387adb
+.word 0x5cb9de97
+.word 0x3ac49b1d
+.word 0xa3997f2a
+.word 0x528420c1
+.word 0xa38fa80d
+.word 0x29a81a21
+.word 0xd67403fe
+.word 0xca34e0c7
+.word 0x33d56c5e
+.word 0xe72d9d44
+.word 0x1b0d38ca
+.word 0x10047b15
+.word 0x94482904
+.word 0x153ea775
+.word 0x77ed0c97
+.word 0x27151be9
+.word 0x81f4a4c8
+.word 0x7dc3e312
+.word 0xdd44cd9a
+.word 0x86beb118
+.word 0x4f19fe98
+.word 0x20de95a0
+.word 0x2abe1a4f
+.word 0x8f951388
+.word 0xee119fb6
+.word 0x0ed53c2a
+.word 0x97ac6a02
+.word 0xa23f74b2
+.word 0x88defb26
+.word 0x6a7975c4
+.word 0x63aae573
+.word 0x5fb22162
+.word 0x6eb475bb
+.word 0xc1e4d4a0
+.word 0x13b3c2e9
+.word 0x1c1ff2f5
+.word 0x4d30bf45
+.word 0x92bf4ce0
+.word 0xd8187927
+.word 0xe0c94ad5
+.word 0x68e45f0f
+.word 0xc739e3a6
+.word 0x9d2b5f01
+.word 0x0790ec48
+.word 0x57e8ff40
+.word 0x9b04862a
+.word 0xae4853f0
+.word 0xf71f412b
+.word 0x13f82bd7
+.word 0xf44ce537
+.word 0x6b80db3e
+.word 0x7b10cf32
+.word 0xefa59bc4
+.word 0x925b15d0
+.word 0x4196a4ff
+.word 0x76f87873
+.word 0xe41be33a
+.word 0x741d216c
+.word 0xa685cd81
+.word 0xe167e1fc
+.word 0x4eaa4f3e
+.word 0x8d6afbf6
+.word 0xe98591e4
+.word 0x67f35570
+.word 0x35606933
+.word 0x24471946
+.word 0x10bbe008
+.word 0x528134b9
+.word 0x05608f05
+.word 0xdc873b6d
+.word 0x9c868a2c
+.word 0x70fe42d2
+.word 0x040bf689
+.word 0x6a0b08bb
+.word 0x7ed1acee
+.word 0x3ee3dbef
+.word 0xccb3d354
+.word 0xa944d7ac
+.word 0x757df430
+.word 0x04ab8983
+.word 0xa613a14e
+.word 0x09d43ef3
+.word 0x6d7f6b3c
+.word 0xa97b7be0
+.word 0x1db3182b
+.word 0x9c845245
+.word 0x992cc5dc
+.word 0x10ce0eba
+.word 0xf54e7a5f
+.word 0x0dea1c41
+.word 0x297d5a2a
+.word 0xb65f788f
+.word 0x9237f261
+.word 0xaf0add56
+.word 0x2601ec65
+.word 0xab2fb591
+.word 0xe3b8a54c
+.word 0x7007ef66
+.word 0xff979bb8
+.word 0xc495efc8
+.word 0xe2c3ea22
+.word 0x23a5a14b
+.word 0x9b38f058
+.word 0x6e636de1
+.word 0xa2f9c573
+.word 0xa37f47e4
+.word 0xfed5b4eb
+.word 0xefb2c5c6
+.word 0x65814807
+.word 0x2f2b31bd
+.word 0x3d2ab62e
+.word 0x2b7a607d
+.word 0xc2ff0c00
+.word 0x1ee5223e
+.word 0xbdd8be03
+.word 0xc4d21ce7
+.word 0x410f74c7
+.word 0x3d58a13b
+.word 0x015ab32e
+.word 0x0c7d50d6
+.word 0x6f7f6249
+.word 0x7bb7dc6c
+.word 0xf780c5b5
+.word 0x7112b35e
+.word 0xe21c4ffd
+.word 0x7812e0e1
+.word 0x455a7295
+.word 0xbaf1efcf
+.word 0x866ec656
+.word 0x3c78322b
+.word 0x6a7b0d73
+.word 0x02298820
+.word 0x4a5154de
+.word 0xcc7a2d8c
+.word 0x349e793f
+.word 0x9287b475
+.word 0x95bd108f
+.word 0x73bf717d
+.word 0x9a109423
+.word 0x0cec1865
+.word 0xfe5c1fe7
+.word 0x30d68f42
+.word 0x43fa24d0
+.word 0x6de756e4
+.word 0xc01ca8db
+.word 0x948c1379
+.word 0xd1518ea9
+.word 0x2e343072
+.word 0x9165f94a
+.word 0x83104eb5
+.word 0x19a1e91f
+.word 0x318330cd
+.word 0x6f5b7894
+.word 0x6e1c7b9e
+.word 0x2f0f9c53
+.word 0x141f138a
+.word 0x0f5053b0
+.word 0xe3e0ed8e
+.word 0xb1e98b69
+.word 0xee77d46c
+.word 0x1ed4a1f9
+.word 0x7a32d42f
+.word 0xf01160a8
+.word 0xe1c6267e
+.word 0x7ee6e02a
+.word 0x49900939
+.word 0x892d0ea5
+.word 0xc17a6a6f
+.word 0x36e58b13
+.word 0x345a332a
+.word 0x684cd392
+.word 0x389f6e05
+.word 0x8379b0a7
+.word 0x6d10c09b
+.word 0x04d91d86
+.word 0x90d05b39
+.word 0x9e73bb20
+.word 0x815b7801
+.word 0x7b14cb90
+.word 0x348b8a95
+.word 0x498b51b4
+.word 0x97519ca4
+.word 0x0a02e728
+.word 0x84e64eab
+.word 0xd1415751
+.word 0xbf525856
+.word 0xeb04029a
+.word 0x2ce1ee78
+.word 0x905ef1cb
+.word 0x2f8ef99e
+.word 0x6fb377c0
+.word 0x8570f3d1
+.word 0xbaf6e479
+.word 0x6308cdc6
+.word 0xa169315c
+.word 0xda64b1b0
+.word 0x8fc40d41
+.word 0x64034262
+.word 0xf891f0a9
+.word 0x6f4bc801
+.word 0x301a29d3
+.word 0x97c79e56
+.word 0x0e069376
+.word 0x1e5e67e4
+.word 0x910ff787
+.word 0x007c4116
+.word 0xf5255f4a
+.word 0xaeed4708
+.word 0x15d0e806
+.word 0x521fd0c3
+.word 0xaa1b0ac2
+.word 0x96e8cab9
+.word 0xf11fdd9f
+.word 0x989ca786
+.word 0xaba9aa9b
+.word 0xcfaddc49
+.word 0xd6d90b4f
+.word 0xbc704702
+.word 0xf1eacd5a
+.word 0xa7695036
+.word 0xcf548cba
+.word 0x8af359d0
+.word 0xa4a20e27
+.word 0x64e14ed1
+.word 0x67e6eb87
+.word 0x66dc9cc5
+.word 0x374e9100
+.word 0xe1e3e59e
+.word 0x7e090e89
+.word 0x95a87985
+.word 0xfad41732
+.word 0x767e98e0
+.word 0x07fb232a
+.word 0xd4f9ad09
+.word 0x5577cb7c
+.word 0x55b6721f
+.word 0x52aee5ad
+.word 0xb7e4eee5
+.word 0xdaff7fae
+.word 0x333d3c02
+.word 0xa7355e37
+.word 0xf7615933
+.word 0x81d0ebf6
+.word 0x9d4a3911
+.word 0x1846fc62
+.word 0x8844d1d1
+.word 0x44f9df3a
+.word 0xabdb7d87
+.word 0xfbc44fad
+.word 0xf02c0076
+.word 0x903f1223
+.word 0xa41490b3
+.word 0xfb45c629
+.word 0x2dfb762c
+.word 0xd482c50b
+.word 0x2763d478
+.word 0x26625a4e
+.word 0x50a455da
+.word 0x58637d94
+.word 0x883a2769
+.word 0x79a57dc6
+.word 0x42652df5
+.word 0xb9a33bb0
+.word 0x99243598
+.word 0xabc4e080
+.word 0xb336796f
+.word 0x44d492cf
+.word 0x5875b4e9
+.word 0x2836b95e
+.word 0x87868a12
+.word 0xc4911767
+.word 0xffa7ba66
+.word 0x6b8dcf94
+.word 0xb6d4237d
+.word 0x20fe3887
+.word 0x5ab7f4f6
+.word 0x423406f7
+.word 0x7b567613
+.word 0x381d37ce
+.word 0x19081e45
+.word 0x0e50dae8
+.word 0x09e33a28
+.word 0x3b873d2c
+.word 0x556d0d89
+.word 0xc672901d
+.word 0xdc2ea251
+.word 0xfb9aab35
+.word 0x0c01ab2a
+.word 0x39d27258
+.word 0x84571a18
+.word 0xd846cced
+.word 0x65171474
+.word 0x753e33e3
+.word 0xe9ec5459
+.word 0x68e16993
+.word 0x0fe29d49
+.word 0x4ddbfadf
+.word 0x498954f5
+.word 0x025b0a02
+.word 0xc7ac5b79
+.word 0x305b9695
+.word 0xa4e7316d
+.word 0x5c8ec35e
+.word 0x9fead516
+.word 0x19514630
+.word 0x26002e7a
+.word 0x920c9a6f
+.word 0xed53826a
+.word 0xd23aea4b
+.word 0x1f6d40a9
+.word 0xcec1134e
+.word 0xf3abf422
+.word 0x93e17ced
+.word 0x69185d42
+.word 0xfde7eb91
+.word 0x5ae8e499
+.word 0x35b09118
+.word 0x7e3cfb83
+.word 0xb445a9b9
+.word 0x24ee4059
+.word 0xb99a53e0
+.word 0xc4f2596b
+.word 0x5939b9e4
+.word 0x1bee7036
+.word 0xed4f4e9b
+.word 0xc8067dba
+.word 0x3dc0b0cf
+.word 0x8dad00eb
+.word 0xaf25d42e
+.word 0xefcd45a6
+.word 0xad32ce06
+.word 0xf99baf6c
+.word 0xe92ba623
+.word 0x43d04f0f
+.word 0x51cd8811
+.word 0x17689773
+.word 0x628e8bca
+.word 0x8dc1fe20
+.word 0xafd7a1ad
+.word 0xca02551e
+.word 0xc07f9eb7
+.word 0xd56faec3
+.word 0xed16545b
+.word 0xd836502b
+.word 0x95d302d8
+.word 0xdfbcdedc
+.word 0x82e2e421
+.word 0x322769a8
+.word 0x0f777ff9
+.word 0xde15cb39
+.word 0x3d34a475
+.word 0x5a2a7156
+.word 0xe66518d7
+.word 0xd0f11b20
+.word 0xacc2f504
+.word 0xf5f5ca1a
+.word 0xcc419f19
+.word 0xcd4d0356
+.word 0x43055f91
+.word 0xca9a46c2
+.word 0x2cee2daa
+.word 0xdfcfbe2d
+.word 0xece94a64
+.word 0x3313626d
+.word 0x48695de3
+.word 0xbed2f780
+.word 0xcc74ade5
+.word 0x8d5248c9
+.word 0x59b61733
+.word 0x9953358b
+.word 0x17691985
+.word 0x34487a30
+.word 0x961ed2b5
+.word 0x5516f6ca
+.word 0x91c83434
+.word 0xd8e4c60b
+.word 0x82776ae3
+.word 0xd544b4f7
+.word 0xcbbf9662
+.word 0xabb00f24
+.word 0xf3bbe421
+.word 0x85ac0d22
+.word 0xad2484ec
+.word 0xf803de6e
+.word 0x472fcfd6
+.word 0x8dde3e1c
+.word 0x50653b9b
+.word 0x83da765b
+.word 0x44d2cd19
+.word 0x967f26fc
+.word 0x020666c5
+.word 0xfa0da81a
+.word 0xd74810ee
+.word 0xec2299d0
+.word 0x04eec145
+.word 0x1b9c909d
+.word 0x82e6fddb
+.word 0xaf271f65
+.word 0x5c6a6e92
+.word 0x9bbd29ad
+.word 0xfe80ec91
+.word 0x7fcda614
+.word 0xa4769328
+.word 0x22bd0c2c
+.word 0x4beb0817
+.word 0x9d272979
+.word 0x8a1a891e
+.word 0xf2b578f6
+.word 0x1d479147
+.word 0x6cc29919
+.word 0x6826923b
+.word 0x97fd6483
+.word 0xddf11e5e
+.word 0xab342bf8
+.word 0x8eb3e5fb
+.word 0xca2da120
+.word 0xf7b39984
+.word 0x1786d5d3
+.word 0x5075aaae
+.word 0x507b0adc
+.word 0x64efd050
+.word 0xdf025fdb
+.word 0x90718ffe
+.word 0xb0168c3b
+.word 0x99151af6
+.word 0x17a3d0b1
+.word 0x595ac4cd
+.word 0xcd393113
+.word 0x776a0582
+.word 0xa4bc5371
+.word 0xd76cbc90
+.word 0xfa043069
+.word 0x44d71f93
+.word 0x2de007dd
+.word 0x28b3a4a5
+.word 0xe95eebcc
+.word 0x350d58c4
+.word 0x27a20498
+.word 0x48407d4f
+.word 0xe1299d57
+.word 0x0a481b42
+.word 0x535db8d9
+.word 0x2eef2189
+.word 0xfcace390
+.word 0x788192e5
+.word 0xc6091e8b
+.word 0xec954be3
+.word 0x28fd790d
+.word 0x3b49ec48
+.word 0xa773817a
+.word 0x2d05b259
+.word 0x6d224fb8
+.word 0x63816132
+.word 0x57875388
+.word 0xf0474f0e
+.word 0x59b5eca2
+.word 0xa6133bfd
+.word 0x1ca6afc0
+.word 0x94f50bcf
+.word 0xc7af3943
+.word 0xbbf5bdfc
+.word 0x6a9dd7c9
+.word 0x351ee114
+.word 0xd4009e75
+.word 0xb0da156e
+.word 0x2efc1257
+.word 0xe22ef0c7
+.word 0xc11746dc
+.word 0x56592283
+.word 0x04fdfcd5
+.word 0xd379e7ca
+.word 0x7ba7d95c
+.word 0xb483b711
+.word 0xf71f7786
+.word 0xaf12f858
+.word 0x7c02a8a6
+.word 0x6f7a3709
+.word 0xc6e16d05
+.word 0x5935650b
+.word 0x8e50c91b
+.word 0x378d082e
+.word 0xf74bd85c
+.word 0xa851fd7c
+.word 0x1daee471
+.word 0x7efa51fd
+.word 0x5423f815
+.word 0x0f181989
+.word 0x5d881c1d
+.word 0xf0870296
+.word 0x34767587
+.word 0x0f29227f
+.word 0x7bd16d99
+.word 0xfc45c3be
+.word 0x69855a9d
+.word 0x22670507
+.word 0xb15ba7b5
+.word 0x8f2b2c3b
+.word 0x72ce5986
+.word 0xff03fb81
+.word 0xbacbccac
+.word 0xfe716dd8
+.word 0xb5be635a
+.word 0x47036ef0
+.word 0x05bc6620
+.word 0x37f11d09
+.word 0xdb48cf0f
+.word 0xb3a31579
+.word 0x6b15c061
+.word 0xdd14a523
+.word 0xf4c44008
+.word 0xd7367504
+.word 0x57674c81
+.word 0xe28151b9
+.word 0xc6adf33c
+.word 0xbe88dd37
+.word 0xb2967c10
+.word 0x43d665b7
+.word 0xefeca3b6
+.word 0x9fcabe72
+.word 0x96845464
+.word 0xec896ea1
+.word 0x820e1cd2
+.word 0xaf58acff
+.word 0x2a5d50f9
+.word 0x90d10386
+.word 0x5a0d9308
+.word 0xab946abc
+.word 0x3e6c30db
+.word 0x591ae1e3
+.word 0x3255869c
+.word 0x89007bf6
+.word 0x16d43817
+.word 0xd48f168f
+.word 0xdd2b96dc
+.word 0x0834ea6d
+.word 0x40a3f62c
+.word 0x5d45ec39
+.word 0x9fb7aad6
+.word 0xdc7675bd
+.word 0x76385a9f
+.word 0xa630f0ff
+.word 0xda12e9e5
+.word 0x0396bb6c
+.word 0x184a09ed
+.word 0x5dd2e2a0
+.word 0xc5793d7b
+.word 0x61cb6599
+.word 0x83c182b1
+.word 0x7ce4f7da
+.word 0xf5524fe8
+.word 0x2581f2c5
+.word 0x6a8c3fe0
+.word 0x598039a6
+.word 0xcccf17a0
+.word 0x52f425f8
+.word 0xaf97b955
+.word 0x1e548261
+.word 0x0e90a4dc
+.word 0x9a51ee38
+.word 0x5317542a
+.word 0x03c0238a
+.word 0xe6c75519
+.word 0x1fd4ef29
+.word 0x3242be80
+.word 0x52413443
+.word 0x3c86d76a
+.word 0x30357e69
+.word 0x1e503f14
+.word 0xe804643c
+.word 0x04328726
+.word 0x19faaabe
+.word 0xa0a59160
+.word 0x4164a6cb
+.word 0xe8a1554c
+.word 0x8646ba6d
+.word 0xbd09c26a
+.word 0x03b763a2
+.word 0x6284b9c0
+.word 0x5e5887a7
+.word 0x9e689c43
+.word 0xe8b3ab4f
+.word 0x65058396
+.word 0x24fbcaae
+.word 0x6ce88455
+.word 0x741c3346
+.word 0x90a4bda3
+.word 0x1889ba81
+.word 0x478ecb2f
+.word 0x40ddfe5b
+.word 0x67151941
+.word 0x287ca022
+.word 0x7f99d606
+.word 0x23eccb04
+.word 0xab10b184
+.word 0xd01b1cde
+.word 0x267c5864
+.word 0xa76238ac
+.word 0x5c2490e0
+.word 0x39b60b4b
+.word 0xce28a9c5
+.word 0x2cfb596c
+.word 0xd104acef
+.word 0x838cce44
+.word 0x6e3e96bd
+.word 0xab93d490
+.word 0xa911251f
+.word 0x8b15ad46
+.word 0xd9d230b9
+.word 0x2c980ead
+.word 0x89ed1c32
+.word 0x3bb5e8b5
+.word 0x88ebe653
+.word 0xc599302a
+.word 0xf4d8093f
+.word 0xec660a53
+.word 0x3ba5a4f9
+.word 0x38e1f505
+.word 0x66d231f2
+.word 0xe9ff5bfe
+.word 0xdd4bb89d
+.word 0xd6fbaf0f
+.word 0x8ceefe80
+.word 0x32e28ee8
+.word 0x0ab53673
+.word 0xb001671e
+.word 0x4586ab7f
+.word 0x652a9694
+.word 0x00472772
+.word 0xda749c22
+.word 0x001ab90b
+.word 0xa395022d
+.word 0xb0cff43b
+.word 0xc30140b9
+.word 0x4cf2b707
+.word 0xc6dfea03
+.word 0x0e0282c3
+.word 0x649765cb
+.word 0x622c9a4b
+.word 0x26a7c0c3
+.word 0x7e3d4d54
+.word 0xdce80812
+.word 0x92248b00
+.word 0x5b8c3512
+.word 0x83126402
+.word 0xe8888f47
+.word 0x25e4a814
+.word 0xdb6d715b
+.word 0x525162a2
+.word 0x7aa47972
+.word 0x184664d6
+.word 0xdfb282fb
+.word 0xa5ecfb5f
+.word 0xd632f908
+.word 0x22b32acd
+.word 0x64664e0b
+.word 0x4494469c
+.word 0x745e5f76
+.word 0xabfec67a
+.word 0xf2b455c5
+.word 0x7f4d2f1b
+.word 0x1fe9107b
+.word 0x738637df
+.word 0xbbeb6f58
+.word 0x237ad5f3
+.word 0x84ed4019
+.word 0xb15710b9
+.word 0x04258a3a
+.word 0x04542cd2
+.word 0xcd47765e
+.word 0xa9d9469f
+.word 0xb0ef6129
+.word 0xf3fba121
+.word 0xc6d0ebae
+.word 0x9155b28d
+.word 0xe3b8f11f
+.word 0xfa906069
+.word 0xe3f1486a
+.word 0xf3977039
+.word 0x32a04127
+.word 0xf6517e6a
+.word 0x3236d089
+.word 0x67fa9e78
+.word 0x04569759
+.word 0x37b49cfd
+.word 0x2ecb8e8b
+.word 0x09b989ed
+.word 0x2d048b21
+.word 0x64181fb9
+.word 0x1077da19
+.word 0xb2dd3ae9
+.word 0xab901fc8
+.word 0xb67639da
+.word 0x489a932d
+.word 0xcf7c84a8
+.word 0x6ebe79b7
+.word 0xa45db592
+.word 0xe421cdfe
+.word 0xf3cdc11f
+.word 0xc7844de7
+.word 0x3e5cbaf7
+.word 0x87c8d862
+.word 0x18a73725
+.word 0x8a0f6157
+.word 0xb9e57b57
+.word 0xedf3274d
+.word 0x33dfb4cd
+.word 0xc9081ae6
+.word 0x56ce0e41
+.word 0x31e5ae73
+.word 0x86624e2e
+.word 0x92111250
+.word 0x7b0c406e
+.word 0xdfdd85f3
+.word 0xef82ed5c
+.word 0x31410406
+.word 0xf0cd3b96
+.word 0xd8fa6574
+.word 0xeb7ca123
+.word 0xb535601a
+.word 0x8441ef8a
+.word 0x712178b7
+.word 0x84574b0b
+.word 0xce63d615
+.word 0xb344cf5d
+.word 0x86f5cfe8
+.word 0xdd8992f5
+.word 0xc9fa8cc4
+.word 0x41f862ab
+.word 0xf89f654c
+.word 0xe334662d
+.word 0xb9732d6f
+.word 0xb4abe412
+.word 0xabb74bc2
+.word 0xdce43919
+.word 0x47fc8805
+.word 0x22ea161b
+.word 0x13c46877
+.word 0x864c1cf9
+.word 0x44afc22d
+.word 0x60257d4f
+.word 0x49aeaf40
+.word 0x15b01901
+.word 0x023c1e0b
+.word 0xcfbd0238
+.word 0x04253f8b
+.word 0xb85bc43a
+.word 0x684818e2
+.word 0xc30c6358
+.word 0xd84521a2
+.word 0xd70e259c
+.word 0xc1f7cc39
+.word 0x8a8f7271
+.word 0x8e99f3be
+.word 0x3822842a
+.word 0x1cefd7c5
+.word 0x1bd4ad7f
+.word 0x47f5c4a9
+.word 0x4d949944
+.word 0xbf88f55d
+.word 0x3fb4a104
+.word 0x4f50a829
+.word 0x3182d347
+.word 0x4b9bebe4
+.word 0x0d963226
+.word 0x561136d2
+.word 0x6dfc5b67
+.word 0xf6e9e772
+.word 0x567efe90
+.word 0x30ced05b
+.word 0x84182edf
+.word 0xd365a09d
+.word 0x9423fd6b
+.word 0x5dcc0d7e
+.word 0x93c0fb3b
+.word 0xf3f40850
+.word 0x43287493
+.word 0x7781611c
+.word 0x427cd735
+.word 0xba0cc0dc
+.word 0x9136847e
+.word 0x49f8996e
+.word 0x98d02ac9
+.word 0x6843e73f
+.word 0xa830d10a
+.word 0x0ee60eab
+.word 0x1297d7be
+.word 0x3207d032
+.word 0x0d81dcdd
+.word 0xb32f5c5f
+.word 0x15453e77
+.word 0xd24384a6
+.word 0xc4d6e61e
+.word 0xa52e721f
+.word 0x8edaa297
+.word 0xbc6f8216
+.word 0x8c69cc5f
+.word 0x74072fc4
+.word 0x6a9d68bb
+.word 0xaf59578a
+.word 0x1166cf06
+.word 0x62713924
+.word 0x0554e165
+.word 0xf3e0a746
+.word 0x194434d9
+.word 0x6db84cfa
+.word 0x8fde4500
+.word 0x64f16e60
+.word 0x4062988d
+.word 0x7ce39817
+.word 0x4161cbaf
+.word 0x04616984
+.word 0xb279b7b7
+.word 0x443ffb89
+.word 0x6e3af38c
+.word 0xb4251bb6
+.word 0xd321fe7c
+.word 0x9f148ad4
+.word 0xe2fec18a
+.word 0x3e122807
+.word 0x6b9f45c2
+.word 0xe698f520
+.word 0x1b9bcada
+.word 0x4209bb07
+.word 0xaba73e55
+.word 0x37bea945
+.word 0x1c717271
+.word 0x0232c1e9
+.word 0xdfbac73a
+.word 0xab5f3bcc
+.word 0x4138f121
+.word 0xf031e921
+.word 0x8bfc685b
+.word 0xcef4cff0
+.word 0x1dad54ad
+.word 0xba371e0c
+.word 0x45b3632d
+.word 0xf43fe013
+.word 0x115ddbd9
+.word 0x43bab7bf
+.word 0x46bb47a1
+.word 0xb504c25a
+.word 0x89973583
+.word 0xe2e7cdf1
+.word 0x7e6dc4ea
+.word 0x4e23a503
+.word 0x9a649b89
+.word 0x9ad43005
+.word 0xe3069ed2
+.word 0xeb539fca
+.word 0x7110749d
+.word 0x7cea9131
+.word 0x41b792a5
+.word 0x8300c36a
+.word 0xc2faa377
+.word 0x882b734a
+.word 0x320b6014
+.word 0x9ea6a268
+.word 0xe9c73ce8
+.word 0x03a498f5
+.word 0x9d3ba7e8
+.word 0xa3f4e96d
+.word 0x9a212f74
+.word 0x5726cfd7
+.word 0x8dfdcedd
+.word 0x45b0871b
+.word 0x55a46cd2
+.word 0xb4627a5f
+.word 0x9c2733f8
+.word 0x4edcd580
+.word 0xa53c63f4
+.word 0xa2633aba
+.word 0xfa7fce57
+.word 0x47b4abe5
+.word 0x78e54ef2
+.word 0x6b3756da
+.word 0x6bfd8dab
+.word 0xfc79808a
+.word 0xab1de0dc
+.word 0xf390570e
+.word 0x8efe601a
+.word 0xde69c4ab
+.word 0xbcb437b9
+.word 0xd43d22fa
+.word 0xa7e2b049
+.word 0x4722720e
+.word 0x30c2601e
+.word 0x7a0ee517
+.word 0xce71191f
+.word 0x3f803d03
+.word 0x8277d482
+.word 0x4779bd8d
+.word 0x731f4673
+.word 0x5395d4a0
+.word 0xfc356beb
+.word 0x38958d3b
+.word 0x220b620d
+.word 0x73f2309a
+.word 0x90b26894
+.word 0xf9ed0e78
+.word 0x343d0b42
+.word 0x128d1e22
+.word 0x69b249b9
+.word 0x42025d30
+.word 0x551445d7
+.word 0xad29f149
+.word 0x143b9d9c
+.word 0x9c09ad7c
+.word 0xfa8e5c9e
+.word 0x6ea1b4e5
+.word 0xba39511f
+.word 0x2097f310
+.word 0x7ede5c42
+.word 0x2c341b0a
+.word 0x0aeb2682
+.word 0x148717ad
+.word 0xa3aefc4e
+.word 0x0ad302e3
+.word 0xeaa8c525
+.word 0xae02cf1a
+.word 0xd38dc221
+.word 0xc489cd1b
+.word 0x0cd8e2b1
+.word 0x931c6e69
+.word 0x61b90497
+.word 0x47b971ce
+.word 0x11c596bf
+.word 0x19de1678
+.word 0x50e6abd0
+.word 0xac9250e1
+.word 0x97f3925b
+.word 0xc81911b5
+.word 0x3cdfaa2a
+.word 0x8ca3d22b
+.word 0x90bcc93d
+.word 0x78aebb62
+.word 0x12ebe7e5
+.word 0x1538b4af
+.word 0x4cbb8a10
+.word 0x7f65288a
+.word 0x75de1394
+.word 0x43473d72
+.word 0xf63840ab
+.word 0xf5bdf155
+.word 0x475e5371
+.word 0xdefa7ada
+.word 0x97729733
+.word 0x09fcc701
+.word 0x1b4e248e
+.word 0x3096394a
+.word 0xd485e5a4
+.word 0x06056754
+.word 0x64a2cb82
+.word 0x2082a769
+.word 0xa571746e
+.word 0xc873fe48
+.word 0x9659010f
+.word 0x2e408c2c
+.word 0xde7d45fb
+.word 0xdb3f8f19
+.word 0x78ed4c90
+.word 0xdc28c0e8
+.word 0x6608bb26
+.word 0x4852156b
+.word 0xb0a6e923
+.word 0x778d4755
+.word 0x16db1b0d
+.word 0x4b16e199
+.word 0x2fc2fd58
+.word 0x155e7897
+.word 0x3cc274c2
+.word 0xf37ed456
+.word 0xb72e40cb
+.word 0xaad33021
+.word 0xa040dbc1
+.word 0xf20bf843
+.word 0x5c7f1210
+.word 0x138093ea
+.word 0x43c0d934
+.word 0x4831bc32
+.word 0x1b923061
+.word 0x78675793
+.word 0x02d88f29
+.word 0xda589bd7
+.word 0xe2c03001
+.word 0x0a933208
+.word 0xf7013584
+.word 0x875d00d2
+.word 0x530fa8a8
+.word 0x99ca1595
+.word 0xae3aedc8
+.word 0x98d3546b
+.word 0xf862d09f
+.word 0xd8986914
+.word 0x04201347
+.word 0xb8f91657
+.word 0x37a02d4a
+.word 0xa01d5096
+.word 0x75aa018b
+.word 0x3048fc12
+.word 0xd3bfbd67
+.word 0x59976659
+.word 0x2b824f90
+.word 0x9943c7c0
+.word 0x7a60dbc7
+.word 0xb33eb994
+.word 0x87c928d0
+.word 0x85e7f5cb
+.word 0xeddf04c2
+.word 0x31a21e15
+.word 0x0dc0f69e
+.word 0x9f3953b8
+.word 0x4a42bfd8
+.word 0xf6f3e0ce
+.word 0xadbe61df
+.word 0x2edb6b55
+.word 0x5b99ad1b
+.word 0x57f25c9b
+.word 0xe0662e56
+.word 0x00f0739d
+.word 0x985d90db
+.word 0x8c4d34f0
+.word 0xa097cc26
+.word 0x2802e7af
+.word 0x5e489296
+.word 0x5eae1cb6
+.word 0xbd2fe656
+.word 0x7987d9b5
+.word 0xfeec4cce
+.word 0x18852938
+.word 0x01456555
+.word 0x8cd596f7
+.word 0x97c515c3
+.word 0x427f839b
+.word 0x916ee664
+.word 0x14c3cb95
+.word 0x5ac8cd83
+.word 0xbd27ac27
+.word 0xa4cb6be3
+.word 0x6d69a7a4
+.word 0xa428fdcc
+.word 0xf52cedc6
+.word 0xa9f87dd0
+.word 0xda78f421
+.word 0x1f8fc26b
+.word 0x711fe680
+.word 0x59b641e8
+.word 0xf47390f9
+.word 0x0ac0d8ea
+.word 0xf4aed11d
+.word 0x674b84ef
+.word 0x2052c96e
+.word 0xe20743f1
+.word 0x2633b996
+.word 0x7b45fce6
+.word 0x4989f9db
+.word 0x170d411d
+.word 0x7a77a526
+.word 0x94685b84
+.word 0xa800c393
+.word 0xe4f58669
+.word 0xf0cf7451
+.word 0x15a534ee
+.word 0x585e57dd
+.word 0x671dc18d
+.word 0x3fc722b7
+.word 0x112ceb96
+.word 0x948b4608
+.word 0xa315a4f0
+.word 0xa858f617
+.word 0x27903979
+.word 0xdfbd6abd
+.word 0x5460c3fb
+.word 0xc4cd6433
+.word 0x34b02e20
+.word 0x743277cf
+.word 0x9b0d8570
+.word 0xb1dd1740
+.word 0xf9167663
+.word 0x5da16b05
+.word 0x6c8ce5cd
+.word 0xf611d333
+.word 0x3a27565d
+.word 0x24a32812
+.word 0xab5f89ef
+.word 0x452ba4bf
+.word 0x237b3ca3
+.word 0x96061b8d
+.word 0x81e1afaa
+.word 0x4c9b9307
+.word 0x24f0b75c
+.word 0xacfed497
+.word 0x2ec508f4
+.word 0x7d5f0eec
+.word 0xf5ae8895
+.word 0xbadc4b9b
+.word 0x7c2cf115
+.word 0xfe57269c
+.word 0xf8c90e96
+.word 0xb390e4ba
+.word 0xc1c64feb
+.word 0x875aab9c
+.word 0x146c838a
+.word 0xfe78d253
+.word 0x39ee6969
+.word 0x6c4c3d2a
+.word 0x693fc8cf
+.word 0xa2441d65
+.word 0x6407eefa
+.word 0xa954917b
+.word 0x2ac8d47e
+.word 0x8b3e2ec6
+.word 0x1ccb65cd
+.word 0x4459f46c
+.word 0xbf888870
+.word 0xfe8509de
+.word 0xb16fa2a6
+.word 0xe52a9f5d
+.word 0xdfd5c12d
+.word 0x432c6524
+.word 0x8c64f96e
+.word 0x8d2b25cf
+.word 0xcd0fccd2
+.word 0x0018133c
+.word 0xf89b13bf
+.word 0x31291fc4
+.word 0x7844e829
+.word 0x56fd4938
+.word 0xb2156477
+.word 0xde989928
+.word 0xa7f76832
+.word 0xea94130d
+.word 0x8c040449
+.word 0xfb9835b0
+.word 0x0351dbb2
+.word 0x56723a2c
+.word 0x2978b0fa
+.word 0xf95d3dc2
+.word 0x06e84514
+.word 0x48ca5d0d
+.word 0x2d970993
+.word 0x230ddea2
+.word 0x46e93faa
+.word 0x302710aa
+.word 0x63180145
+.word 0x303e68ee
+.word 0x4adccc08
+.word 0xe9210e5c
+.word 0x22a7fd7b
+.word 0x6c7d164b
+.word 0xb52e62a7
+.word 0x691d9f2a
+.word 0x3a405061
+.word 0x26f6bae4
+.word 0xc268f5ec
+.word 0x487a74f7
+.word 0x8bd55c6d
+.word 0x89c3265e
+.word 0xe2616c99
+.word 0x8950fdd5
+.word 0x333a0210
+.word 0x3e4e17ae
+.word 0x2d647fbb
+.word 0xf8ca8fb4
+.word 0xe5c9a8ba
+.word 0x9cb3d133
+.word 0xc0302aa5
+.word 0xdd0876e6
+.word 0x27ac03e7
+.word 0xf7dad69c
+.word 0xd729aa30
+.word 0xb0575159
+.word 0x00da7559
+.word 0x297c661d
+.word 0x9ca98571
+.word 0xa46e58dd
+.word 0x6aa7fde1
+.word 0xccf4a505
+.word 0x7dd8b7ce
+.word 0xfeee5ed9
+.word 0x00ee4d06
+.word 0xaacd93c7
+.word 0x7cd0a17e
+.word 0x571bafde
+.word 0xa7fc7d69
+.word 0xf35a0d67
+.word 0x40404683
+.word 0x84c407e9
+.word 0x527fe7d3
+.word 0x2ca5dcbb
+.word 0x38a0009b
+.word 0x95692e46
+.word 0x6846d40d
+.word 0x1a852fdb
+.word 0xb54b3883
+.word 0xec592d5a
+.word 0x4f278e33
+.word 0x1852eaa0
+.word 0x8dce3b65
+.word 0x66351ba7
+.word 0x89d5faf3
+.word 0x288d11b1
+.word 0x0546f4ff
+.word 0x5b1fbc1c
+.word 0x80111ddd
+.word 0x82d6560d
+.word 0x533b93d7
+.word 0xbd42bd1b
+.word 0x5d9259dd
+.word 0xbe438761
+.word 0xd0eaae8c
+.word 0xc02cd84e
+.word 0x2a5014fa
+.word 0xbf882834
+.word 0x93e037b0
+.word 0xa8ec307f
+.word 0xdada62f1
+.word 0xf86e123c
+.word 0xb95dd8a5
+.word 0xe7205bf7
+.word 0x290488d9
+.word 0x44aeec35
+.word 0xaf8add41
+.word 0xf0257a0b
+.word 0x6a7d793d
+.word 0x1d536548
+.word 0x7913cf35
+.word 0x8e3b90a6
+.word 0xca872a64
+.word 0x36add0ea
+.word 0xaa2a6680
+.word 0x7b6a41fe
+.word 0x72e949a7
+.word 0xfc1a3aa2
+.word 0x5750b570
+.word 0x9c9f3fe4
+.word 0x43a2d91f
+.word 0x2f53a9d8
+.word 0xd9e594a3
+.word 0xa5a4f54f
+.word 0xfbba92dc
+.word 0xd5bebb5d
+.word 0xb2355520
+.word 0xf209f200
+.word 0xbba41646
+.word 0x88b55478
+.word 0x9b9d62a4
+.word 0x0447fbdd
+.word 0xd4403005
+.word 0x8a04a6b2
+.word 0x7d5188d6
+.word 0x033d57f9
+.word 0xfea15f31
+.word 0x01b52b8a
+.word 0x906366f6
+.word 0x658c139e
+.word 0xb3b048a1
+.word 0xc7867346
+.word 0xceb433ad
+.word 0x1009cdb2
+.word 0x80c4f6c2
+.word 0x141e3d7e
+.word 0x0ceafcfa
+.word 0x90e43cd7
+.word 0x46fd1c13
+.word 0xc8de43c7
+.word 0x88a80047
+.word 0x918cee30
+.word 0x043e2a9f
+.word 0x0699f3f3
+.word 0x9df13623
+.word 0x8498a3c9
+.word 0x83e61a37
+.word 0xa0eb7154
+.word 0xebefee0c
+.word 0x550c3721
+.word 0x7a31838f
+.word 0xd9e5ba1e
+.word 0x44c29f61
+.word 0x46c32847
+.word 0x9183dc14
+.word 0x8d74af37
+.word 0x2d152ecd
+.word 0x329a49c1
+.word 0x7c38fb85
+.word 0x3635aca3
+.word 0x787b32ad
+.word 0xe2e76871
+.word 0xc7ecf5a7
+.word 0x1e463a09
+.word 0xfd1c9c65
+.word 0xea86653e
+.word 0xd13d52be
+.word 0xa9a45fa5
+.word 0xebcd051f
+.word 0x4971b826
+.word 0x5766be5e
+.word 0xd4587aeb
+.word 0x62b160da
+.word 0xb1956f2d
+.word 0xb1fa6bce
+.word 0x699964c3
+.word 0x2af1675c
+.word 0x142aee83
+.word 0x35cc9457
+.word 0x0c4fbf9c
+.word 0xa39c2af6
+.word 0x57aa5796
+.word 0x61c94e6f
+.word 0x7cefe98b
+.word 0xbfe02ec7
+.word 0xe6dc0e4e
+.word 0x9ad227db
+.word 0x506526dc
+.word 0xbe8edced
+.word 0x7d22c3e2
+.word 0x0830baad
+.word 0x59ea5d2e
+.word 0x0175bebd
+.word 0x35c530f9
+.word 0x23ba730b
+.word 0xe31ee63e
+.word 0xe5c10ffc
+.word 0x7c18df61
+.word 0x8a55c6d3
+.word 0xc1de8320
+.word 0xcd0fabe0
+.word 0x23977bc1
+.word 0x9cbc26f2
+.word 0xb63f8412
+.word 0x5b947f97
+.word 0x37d5e2b2
+.word 0xd709ed0a
+.word 0x678c06fc
+.word 0xd665d8b7
+.word 0xd6380d0a
+.word 0x2a3e1190
+.word 0x43c7b720
+.word 0xd4136d5e
+.word 0xa0ce12ed
+.word 0x86f65ca6
+.word 0x4787487b
+.word 0xa4c34e26
+.word 0xc18d4e10
+.word 0x4f4a3892
+.word 0x2e72728f
+.word 0x0f5901c4
+.word 0xe10e99cc
+.word 0x3d62251d
+.word 0xf92dbec2
+.word 0x109aa05c
+.word 0x656ebf29
+.word 0x0d2f1ffb
+.word 0x948a50f4
+.word 0x0242842a
+.word 0x6e5afac4
+.word 0x0dc23b27
+.word 0xe80cf95f
+.word 0x3748d675
+.word 0xb42a0cd3
+.word 0x6b585355
+.word 0x9bad30de
+.word 0x777b1f77
+.word 0xc4134938
+.word 0x3a3b39bc
+.word 0x0b1e9407
+.word 0x43f542b6
+.word 0x6b161bed
+.word 0x10e4c8b9
+.word 0x32f001e3
+.word 0x4b45d508
+.word 0xaba9a7a1
+.word 0x13f0a6fc
+.word 0x45230677
+.word 0x2d844ce8
+.word 0x42c9bdf4
+.word 0xad9dcbe8
+.word 0x94f05f33
+.word 0x2fd579bf
+.word 0x4f2b7d2b
+.word 0xcd696cb8
+.word 0x3600a85e
+.word 0x4eaf583d
+.word 0x6f015526
+.word 0xdce39ce0
+.word 0x1bab660f
+.word 0xb7af185d
+.word 0xe84bf503
+.word 0x3d4f1ea0
+.word 0x37a6e7a3
+.word 0x0401441c
+.word 0x250fedc9
+.word 0x637cd74e
+.word 0xbf0f7698
+.word 0xabad1a27
+.word 0x376aab28
+.word 0xc6d8d1d4
+.word 0x78d6799f
+.word 0xdb7d85b2
+.word 0x917ad3e3
+.word 0x496ee228
+.word 0xf0b76311
+.word 0x65155dbe
+.word 0xdd0322c3
+.word 0xda5c8eff
+.word 0x283c62b3
+.word 0xe8fb6415
+.word 0x93b158a9
+.word 0xde451be8
+.word 0xf4a0e2fd
+.word 0x3856cdbe
+.word 0x02db7787
+.word 0x37ab2055
+.word 0x5d7cd6d1
+.word 0xf242bbec
+.word 0x7d024024
+.word 0x75a945cf
+.word 0x7fa3a471
+.word 0x727b3cc9
+.word 0x1d03e6c6
+.word 0xd5a484d0
+.word 0xfc413553
+.word 0xc92d7a09
+.word 0x1dec24dc
+.word 0xec828b83
+.word 0x49e57dcf
+.word 0x6f92e4c5
+.word 0x1447866a
+.word 0x99f13200
+.word 0x8e74dade
+.word 0xf6ba5fc5
+.word 0xbe4a6417
+.word 0xe1c076fd
+.word 0xb9ad8af3
+.word 0x9d8075e0
+.word 0xa51b9564
+.word 0x6e6d1f93
+.word 0xf82b1c81
+.word 0xe1358450
+.word 0xa2c79da5
+.word 0x1b87b08a
+.word 0x4f853261
+.word 0x3c328747
+.word 0xe776f86f
+.word 0x8e74664d
+.word 0xa2eca2e8
+.word 0xbb76a704
+.word 0xa4ade13a
+.word 0x9caafdba
+.word 0xf6770ea0
+.word 0xb7001890
+.word 0xb7a96b84
+.word 0xc888564e
+.word 0x2e19797f
+.word 0x6beacbc1
+.word 0x3a2b84db
+.word 0x0edc22fb
+.word 0x7e8e50d8
+.word 0x9a36ef7b
+.word 0x6f999fef
+.word 0x588bf3bb
+.word 0x2aedd359
+.word 0xc18c162c
+.word 0x3bf785db
+.word 0xfcecf381
+.word 0x50b2a8f0
+.word 0xdb659a0d
+.word 0x97f9a854
+.word 0xbb420f60
+.word 0xbcc7ba00
+.word 0x58dad36b
+.word 0xf7a4edcf
+.word 0x9d4323a0
+.word 0x6d454422
+.word 0x4820dd17
+.word 0x8edc8723
+.word 0x79e234c3
+.word 0x05a3ff91
+.word 0x75190800
+.word 0x3b18776b
+.word 0x5b265e69
+.word 0x3b005651
+.word 0x3e3a3501
+.word 0x51d88675
+.word 0x5903a49f
+.word 0xcedc3d55
+.word 0x2b14e09d
+.word 0xf0a6938e
+.word 0xdd08273a
+.word 0x4aa62544
+.word 0xfea27d3f
+.word 0x8c4b28a9
+.word 0x11aec522
+.word 0xb4a44ba4
+.word 0xea6ca233
+.word 0xc9bd7e01
+.word 0x8a4f31f0
+.word 0x88e2b10b
+.word 0x470ccf8b
+.word 0x023d4477
+.word 0x7ccc3244
+.word 0x29d2f966
+.word 0xe3b7d9b7
+.word 0x60801a4f
+.word 0x03982aae
+.word 0xb09e3f8d
+.word 0xc8fe55cb
+.word 0x335644b6
+.word 0x44a0dc43
+.word 0x5ce5aab3
+.word 0xe148d801
+.word 0x5660b50f
+.word 0xe58114cf
+.word 0xfd59f987
+.word 0xb7420259
+.word 0xb410bde3
+.word 0x37720ec0
+.word 0xec4954f6
+.word 0xd24ed313
+.word 0xcb7d4209
+.word 0x6f737cd1
+.word 0x2e8e28ef
+.word 0x54fde437
+.word 0x43d06dae
+.word 0x28acdaa4
+.word 0x1662683f
+.word 0x98a1351b
+.word 0xef6aab6e
+.word 0x0c47c793
+.word 0xd5ace770
+.word 0x038ac8c5
+.word 0x9e4bfde7
+.word 0x83c2ee58
+.word 0x17ec80ce
+.word 0x6c45e486
+.word 0x423a1be0
+.word 0x114dae34
+.word 0x9a60f8db
+.word 0x44bf2dd3
+.word 0x61f47b4d
+.word 0x48d57911
+.word 0xa767eaef
+.word 0x4b31b473
+.word 0x4f7441ad
+.word 0xf3381ffa
+.word 0x74130250
+.word 0xfa5793ae
+.word 0xbafdc426
+.word 0x8159a5ae
+.word 0x402158e0
+.word 0xbf5d2418
+.word 0xea9c302b
+.word 0xa4a91d6a
+.word 0x805459e3
+.word 0xcb2a11ea
+.word 0x12fb639f
+.word 0xbf63f79a
+.word 0x12c240f3
+.word 0xbd7ff186
+.word 0x2abda893
+.word 0x4df02233
+.word 0x69bd9db1
+.word 0xee7ed9c0
+.word 0xc0f17268
+.word 0x5855acc0
+.word 0xff9c211c
+.word 0x7a2d0db7
+.word 0x6aa2a043
+.word 0x41a79424
+.word 0x32418532
+.word 0x66a41923
+.word 0x1a8df318
+.word 0xe07b0c55
+.word 0x17a5e932
+.word 0x2c5a2bc5
diff --git a/isa/rv64uv/fcvt.S b/isa/rv64uv/fcvt.S
new file mode 100644 (file)
index 0000000..151e054
--- /dev/null
@@ -0,0 +1,72 @@
+#*****************************************************************************
+# fcvt.S
+#-----------------------------------------------------------------------------
+#
+# Test fcvt instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,32
+
+  la a3,src
+  vld vx2,a3
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a4,dest
+  vfsd vf0,a4
+  fence.v.l
+  la a5,result
+  ld a1,0(a4)
+  ld a2,0(a5)
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a4)
+  ld a2,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a4)
+  ld a2,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a4)
+  ld a2,24(a5)
+  li x28,5
+  bne a1,a2,fail
+  j pass
+
+vtcode:
+  fcvt.d.l f0,x2
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+result:
+  .double 1.0
+  .double 2.0
+  .double 3.0
+  .double 4.0
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fence.S b/isa/rv64uv/fence.S
new file mode 100644 (file)
index 0000000..808fffa
--- /dev/null
@@ -0,0 +1,54 @@
+#*****************************************************************************
+# fence.S
+#-----------------------------------------------------------------------------
+#
+# Test fence instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  # make sure these don't choke at the beginning
+  fence.v.l
+  fence.v.g
+
+  li a0,1
+  bne a0,x0,skip1
+  fence.v.l
+skip1:
+
+  bne a0,x0,skip3
+  fence.v.g
+skip3:
+
+  j pass
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fld.S b/isa/rv64uv/fld.S
new file mode 100644 (file)
index 0000000..ab45100
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# fld.S
+#-----------------------------------------------------------------------------
+#
+# Test fld instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,4,1
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vfsd vf0,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  addi x28,a2,2
+  ld a1,0(a5)
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  fld f0,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_fd.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/flw.S b/isa/rv64uv/flw.S
new file mode 100644 (file)
index 0000000..0a42b7b
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# flw.S
+#-----------------------------------------------------------------------------
+#
+# Test flw instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,1
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vfsw vf0,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a2,2
+  lw a1,0(a5)
+  bne a0,a1,fail
+  addi a6,a6,4
+  addi a5,a5,4
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,2
+  add x2,x2,x3
+  flw f0,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_fw.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fma.S b/isa/rv64uv/fma.S
new file mode 100644 (file)
index 0000000..b31136c
--- /dev/null
@@ -0,0 +1,76 @@
+#*****************************************************************************
+# fma.S
+#-----------------------------------------------------------------------------
+#
+# Test fma instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,2048
+  vvcfgivl a3,a3,3,2
+
+  la a4,src
+  fld f0,0(a4)
+  fld f1,8(a4)
+  mftx.d s0,f0
+  mftx.d s1,f1
+  vmsv vx1,s0
+  vmsv vx2,s1
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+
+  li a7,0
+  li a6,400
+wait:
+  addi a7,a7,1
+  bne a7,a6,wait
+
+  fadd.d f0,f0,f1
+  mftx.d s2,f0
+
+  la a5,dest
+  vfsd vf0,a5
+  fence.v.l
+
+  la s3,result
+  ld s4,0(s3)
+  li x28,2
+  bne s2,s4,fail
+
+  li a2,0
+loop:
+  ld a0,0(a5)
+  addi x28,a2,3
+  bne a0,s4,fail
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a3,loop
+  j pass
+
+vtcode:
+  mxtf.d f0,x1
+  mxtf.d f1,x2
+  fadd.d f0,f0,f1
+  stop
+
+  TEST_PASSFAIL
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+  .double 1.0
+  .double 2.0
+result:
+  .double 3.0
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fmovn.S b/isa/rv64uv/fmovn.S
new file mode 100644 (file)
index 0000000..88ab03c
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# fmovn.S
+#-----------------------------------------------------------------------------
+#
+# Test fmovn instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a6,2048
+  vvcfgivl a6,a6,4,2
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a7,dest
+  vfsd vf0,a7
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a7)
+  slti a4,a1,10
+  slli a4,a4,63
+  srai a4,a4,63
+  and a5,a2,a4
+  addi x28,a1,2
+  bne a0,a5,fail
+  addi a7,a7,8
+  addi a1,a1,1
+  bne a1,a6,loop
+  j pass
+
+vtcode:
+  utidx x1
+  slti x2,x1,10
+  li x1,-1
+  li x3,0
+  mxtf.d f0,x3
+  mxtf.d f1,x1
+  fmovn f0,x2,f1
+  stop
+
+  TEST_PASSFAIL
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fmovz.S b/isa/rv64uv/fmovz.S
new file mode 100644 (file)
index 0000000..bda56b9
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# fmovz.S
+#-----------------------------------------------------------------------------
+#
+# Test fmovz instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a6,2048
+  vvcfgivl a6,a6,4,2
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a7,dest
+  vfsd vf0,a7
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a7)
+  slti a4,a1,10
+  slli a4,a4,63
+  srai a4,a4,63
+  xori a4,a4,-1
+  and a5,a2,a4
+  addi x28,a1,2
+  bne a0,a5,fail
+  addi a7,a7,8
+  addi a1,a1,1
+  bne a1,a6,loop
+  j pass
+
+vtcode:
+  utidx x1
+  slti x2,x1,10
+  li x1,-1
+  li x3,0
+  mxtf.d f0,x3
+  mxtf.d f1,x1
+  fmovz f0,x2,f1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fsd.S b/isa/rv64uv/fsd.S
new file mode 100644 (file)
index 0000000..d85a5f7
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# fsd.S
+#-----------------------------------------------------------------------------
+#
+# Test fsd instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,1
+
+  la a5,src
+  vfld vf0,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  addi x28,a2,2
+  ld a1,0(a5)
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  fsd f0,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_fd.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/fsw.S b/isa/rv64uv/fsw.S
new file mode 100644 (file)
index 0000000..69702d0
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# fsw.S
+#-----------------------------------------------------------------------------
+#
+# Test fsw instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,2048
+  vvcfgivl a4,a4,4,1
+
+  la a5,src
+  vflw vf0,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  lw a0,0(a6)
+  addi x28,a2,2
+  lw a1,0(a5)
+  bne a0,a1,fail
+  addi a6,a6,4
+  addi a5,a5,4
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,2
+  add x2,x2,x3
+  fsw f0,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_fw.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/imul.S b/isa/rv64uv/imul.S
new file mode 100644 (file)
index 0000000..bb9b6a3
--- /dev/null
@@ -0,0 +1,82 @@
+#*****************************************************************************
+# imul.S
+#-----------------------------------------------------------------------------
+#
+# Test imul instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,2048
+  vvcfgivl a3,a3,3,0
+
+  li a4,20
+  li s0,2
+  vmsv vx1,a4
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  nop
+  mul s1,a4,s0
+
+  la a5,dest
+  vsd vx1,a5
+  fence.v.l
+
+  li s2,40
+  li x28,2
+  bne s1,s2,fail
+
+  li a1,0
+  li a2,0
+loop:
+  ld a0,0(a5)
+  addi x28,a2,3
+  bne a0,a1,fail
+  addi a5,a5,8
+  addi a1,a1,20
+  addi a2,a2,1
+  bne a2,a3,loop
+  j pass
+
+vtcode:
+  utidx x2
+  mul x1,x2,x1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lb.S b/isa/rv64uv/lb.S
new file mode 100644 (file)
index 0000000..24c7caa
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lb.S
+#-----------------------------------------------------------------------------
+#
+# Test lb instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,56
+  sra a3,a3,56
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lb x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lbu.S b/isa/rv64uv/lbu.S
new file mode 100644 (file)
index 0000000..7fce752
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lbu.S
+#-----------------------------------------------------------------------------
+#
+# Test lby instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,56
+  srl a3,a3,56
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lbu x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/ld.S b/isa/rv64uv/ld.S
new file mode 100644 (file)
index 0000000..03303b4
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# ld.S
+#-----------------------------------------------------------------------------
+#
+# Test ld instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  addi x28,a2,2
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  ld x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lh.S b/isa/rv64uv/lh.S
new file mode 100644 (file)
index 0000000..98b001c
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lh.S
+#-----------------------------------------------------------------------------
+#
+# Test lh instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,48
+  sra a3,a3,48
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lh x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lhu.S b/isa/rv64uv/lhu.S
new file mode 100644 (file)
index 0000000..caa2c1c
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lhu.S
+#-----------------------------------------------------------------------------
+#
+# Test lhu instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,48
+  srl a3,a3,48
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lhu x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lw.S b/isa/rv64uv/lw.S
new file mode 100644 (file)
index 0000000..5576bc6
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lw.S
+#-----------------------------------------------------------------------------
+#
+# Test lw instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,32
+  sra a3,a3,32
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lw x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/lwu.S b/isa/rv64uv/lwu.S
new file mode 100644 (file)
index 0000000..d8b5bf2
--- /dev/null
@@ -0,0 +1,61 @@
+#*****************************************************************************
+# lwu.S
+#-----------------------------------------------------------------------------
+#
+# Test lwu instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vmsv vx2,a5
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a6,dest
+  vsd vx1,a6
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,32
+  srl a3,a3,32
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  lwu x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/movn.S b/isa/rv64uv/movn.S
new file mode 100644 (file)
index 0000000..91a5a3c
--- /dev/null
@@ -0,0 +1,58 @@
+#*****************************************************************************
+# movn.S
+#-----------------------------------------------------------------------------
+#
+# Test movn instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a6,2048
+  vvcfgivl a6,a6,4,0
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a7,dest
+  vsd vx3,a7
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a7)
+  slt a4,a1,10
+  slli a4,a4,63
+  srai a4,a4,63
+  and a5,a2,a4
+  addi s8,a1,2
+  bne a0,a5,fail
+  addi a7,a7,8
+  addi a1,a1,1
+  bne a1,a6,loop
+  j pass
+
+vtcode:
+  utidx x1
+  slti x2,x1,10
+  li x1,-1
+  li x3,0
+  movn x3,x2,x1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/movz.S b/isa/rv64uv/movz.S
new file mode 100644 (file)
index 0000000..683afdb
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# movz.S
+#-----------------------------------------------------------------------------
+#
+# Test movz instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a6,2048
+  vvcfgivl a6,a6,4,0
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a7,dest
+  vsd vx3,a7
+  fence.v.l
+
+  li a1,0
+  li a2,-1
+loop:
+  ld a0,0(a7)
+  slti a4,a1,10
+  slli a4,a4,63
+  srai a4,a4,63
+  xori a4,a4,-1
+  and a5,a2,a4
+  addi x28,a1,2
+  bne a0,a5,fail
+  addi a7,a7,8
+  addi a1,a1,1
+  bne a1,a6,loop
+  j pass
+
+vtcode:
+  utidx x1
+  slti x2,x1,10
+  li x1,-1
+  li x3,0
+  movz x3,x2,x1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/sb.S b/isa/rv64uv/sb.S
new file mode 100644 (file)
index 0000000..bcee091
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# sb.S
+#-----------------------------------------------------------------------------
+#
+# Test sb instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a6,dest
+  li a2,0
+
+initloop:
+  sd x0,0(a6)
+  addi a6,a6,8
+  addi a2,a2,1
+  bne a2,a4,initloop
+  fence
+
+  la a5,src
+  vld vx1,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,56
+  srl a3,a3,56
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  sb x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/sd.S b/isa/rv64uv/sd.S
new file mode 100644 (file)
index 0000000..dd6f72a
--- /dev/null
@@ -0,0 +1,59 @@
+#*****************************************************************************
+# sd.S
+#-----------------------------------------------------------------------------
+#
+# Test sd instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a5,src
+  vld vx1,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  addi x28,a2,2
+  bne a0,a1,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  sd x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/sh.S b/isa/rv64uv/sh.S
new file mode 100644 (file)
index 0000000..6dc5ab8
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# sh.S
+#-----------------------------------------------------------------------------
+#
+# Test sh instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a6,dest
+  li a2,0
+
+initloop:
+  sd x0,0(a6)
+  addi a6,a6,8
+  addi a2,a2,1
+  bne a2,a4,initloop
+  fence
+
+  la a5,src
+  vld vx1,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,48
+  srl a3,a3,48
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  sh x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/sw.S b/isa/rv64uv/sw.S
new file mode 100644 (file)
index 0000000..985e12a
--- /dev/null
@@ -0,0 +1,71 @@
+#*****************************************************************************
+# sw.S
+#-----------------------------------------------------------------------------
+#
+# Test sw instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a4,512
+  vvcfgivl a4,a4,16,0
+
+  la a6,dest
+  li a2,0
+
+initloop:
+  sd x0,0(a6)
+  addi a6,a6,8
+  addi a2,a2,1
+  bne a2,a4,initloop
+  fence
+
+  la a5,src
+  vld vx1,a5
+  la a6,dest
+  vmsv vx2,a6
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  fence.v.l
+
+  li a2,0
+loop:
+  ld a0,0(a6)
+  ld a1,0(a5)
+  sll a3,a1,32
+  srl a3,a3,32
+  addi x28,a2,2
+  bne a0,a3,fail
+  addi a6,a6,8
+  addi a5,a5,8
+  addi a2,a2,1
+  bne a2,a4,loop
+  j pass
+
+vtcode:
+  utidx x3
+  slli x3,x3,3
+  add x2,x2,x3
+  sw x1,0(x2)
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src:
+#include "data_d.h"
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/utidx.S b/isa/rv64uv/utidx.S
new file mode 100644 (file)
index 0000000..95d954c
--- /dev/null
@@ -0,0 +1,50 @@
+#*****************************************************************************
+# utidx.S
+#-----------------------------------------------------------------------------
+#
+# Test utidx instruction in a vf block.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a2,2048
+  vvcfgivl a2,a2,2,0
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a4,dest
+  vsd vx1,a4
+  fence.v.l
+
+  li a1,1
+loop:
+  ld a0,0(a4)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a4,a4,8
+  addi a1,a1,1
+  bne a1,a2,loop
+  j pass
+
+vtcode:
+  utidx x1
+  addi x1,x1,1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vfmvv.S b/isa/rv64uv/vfmvv.S
new file mode 100644 (file)
index 0000000..869160b
--- /dev/null
@@ -0,0 +1,52 @@
+#*****************************************************************************
+# vfmvv.S
+#-----------------------------------------------------------------------------
+#
+# Test vfmvv instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a2,2048
+  vvcfgivl a2,a2,2,2
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  vfmvv vf1,vf0
+  la a3,dest
+  vfsd vf1,a3
+  fence.v.l
+
+  li a1,1
+loop:
+  ld a0,0(a3)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a3,a3,8
+  addi a1,a1,1
+  bne a1,a2,loop
+  j pass
+
+vtcode:
+  utidx x1
+  addi x1,x1,1
+  mxtf.d f0,x1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vmsv.S b/isa/rv64uv/vmsv.S
new file mode 100644 (file)
index 0000000..732f660
--- /dev/null
@@ -0,0 +1,53 @@
+#*****************************************************************************
+# vmsv.S
+#-----------------------------------------------------------------------------
+#
+# Test vmsv instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a2,2048
+  vvcfgivl a2,a2,3,0
+
+  li a3,-1
+  vmsv vx2,a3
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a4,dest
+  vsd vx2,a4
+  fence.v.l
+
+  li a1,0
+loop:
+  ld a0,0(a4)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a4,a4,8
+  addi a1,a1,1
+  bne a1,a2,loop
+  j pass
+
+vtcode:
+  utidx x1
+  addi x1,x1,1
+  add x2,x1,x2
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vmvv.S b/isa/rv64uv/vmvv.S
new file mode 100644 (file)
index 0000000..17e5865
--- /dev/null
@@ -0,0 +1,51 @@
+#*****************************************************************************
+# vmvv.S
+#-----------------------------------------------------------------------------
+#
+# Test vmvv instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a2,2048
+  vvcfgivl a2,a2,3,0
+
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  vmvv vx2,vx1
+  la a4,dest
+  vsd vx2,a4
+  fence.v.l
+
+  li a1,1
+loop:
+  ld a0,0(a4)
+  addi x28,a1,2
+  bne a0,a1,fail
+  addi a4,a4,8
+  addi a1,a1,1
+  bne a1,a2,loop
+  j pass
+
+vtcode:
+  utidx x1
+  addi x1,x1,1
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+dest:
+  .skip 16384
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vsetvl.S b/isa/rv64uv/vsetvl.S
new file mode 100644 (file)
index 0000000..862e983
--- /dev/null
@@ -0,0 +1,559 @@
+#*****************************************************************************
+# vsetvl.S
+#-----------------------------------------------------------------------------
+#
+# Test vsetvl instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_VSETVL( 2, 0, 0, 0x07, 768, 768 );
+  TEST_VSETVL( 3, 0, 0, 0x07, 769, 768 );
+  TEST_VSETVL( 4, 0, 0, 0x07, 767, 767 );
+
+  TEST_VSETVL( 5, 0, 0, 0xff, 2048, 2048 );
+  TEST_VSETVL( 6, 0, 0, 0xff, 2049, 2048 );
+  TEST_VSETVL( 7, 0, 0, 0xff, 2047, 2047 );
+
+  TEST_VSETVL( 8, 1, 0, 0x07, 768, 768 );
+  TEST_VSETVL( 9, 1, 0, 0x07, 769, 768 );
+  TEST_VSETVL( 10, 1, 0, 0x07, 767, 767 );
+
+  TEST_VSETVL( 11, 1, 0, 0xff, 2048, 2048 );
+  TEST_VSETVL( 12, 1, 0, 0xff, 2049, 2048 );
+  TEST_VSETVL( 13, 1, 0, 0xff, 2047, 2047 );
+
+  TEST_VSETVL( 14, 2, 0, 0x07, 768, 768 );
+  TEST_VSETVL( 15, 2, 0, 0x07, 769, 768 );
+  TEST_VSETVL( 16, 2, 0, 0x07, 767, 767 );
+
+  TEST_VSETVL( 17, 2, 0, 0xff, 2048, 2048 );
+  TEST_VSETVL( 18, 2, 0, 0xff, 2049, 2048 );
+  TEST_VSETVL( 19, 2, 0, 0xff, 2047, 2047 );
+
+  TEST_VSETVL( 20, 3, 0, 0x07, 384, 384 );
+  TEST_VSETVL( 21, 3, 0, 0x07, 385, 384 );
+  TEST_VSETVL( 22, 3, 0, 0x07, 383, 383 );
+
+  TEST_VSETVL( 23, 3, 0, 0xff, 1024, 1024 );
+  TEST_VSETVL( 24, 3, 0, 0xff, 1025, 1024 );
+  TEST_VSETVL( 25, 3, 0, 0xff, 1023, 1023 );
+
+  TEST_VSETVL( 26, 4, 0, 0x07, 255, 255 );
+  TEST_VSETVL( 27, 4, 0, 0x07, 256, 255 );
+  TEST_VSETVL( 28, 4, 0, 0x07, 254, 254 );
+
+  TEST_VSETVL( 29, 4, 0, 0xff, 680, 680 );
+  TEST_VSETVL( 30, 4, 0, 0xff, 681, 680 );
+  TEST_VSETVL( 31, 4, 0, 0xff, 679, 679 );
+
+  TEST_VSETVL( 32, 5, 0, 0x07, 192, 192 );
+  TEST_VSETVL( 33, 5, 0, 0x07, 193, 192 );
+  TEST_VSETVL( 34, 5, 0, 0x07, 191, 191 );
+
+  TEST_VSETVL( 35, 5, 0, 0xff, 512, 512 );
+  TEST_VSETVL( 36, 5, 0, 0xff, 513, 512 );
+  TEST_VSETVL( 37, 5, 0, 0xff, 511, 511 );
+
+  TEST_VSETVL( 38, 6, 0, 0x07, 153, 153 );
+  TEST_VSETVL( 39, 6, 0, 0x07, 154, 153 );
+  TEST_VSETVL( 40, 6, 0, 0x07, 152, 152 );
+
+  TEST_VSETVL( 41, 6, 0, 0xff, 408, 408 );
+  TEST_VSETVL( 42, 6, 0, 0xff, 409, 408 );
+  TEST_VSETVL( 43, 6, 0, 0xff, 407, 407 );
+
+  TEST_VSETVL( 44, 7, 0, 0x07, 126, 126 );
+  TEST_VSETVL( 45, 7, 0, 0x07, 127, 126 );
+  TEST_VSETVL( 46, 7, 0, 0x07, 125, 125 );
+
+  TEST_VSETVL( 47, 7, 0, 0xff, 336, 336 );
+  TEST_VSETVL( 48, 7, 0, 0xff, 337, 336 );
+  TEST_VSETVL( 49, 7, 0, 0xff, 335, 335 );
+
+  TEST_VSETVL( 50, 8, 0, 0x07, 108, 108 );
+  TEST_VSETVL( 51, 8, 0, 0x07, 109, 108 );
+  TEST_VSETVL( 52, 8, 0, 0x07, 107, 107 );
+
+  TEST_VSETVL( 53, 8, 0, 0xff, 288, 288 );
+  TEST_VSETVL( 54, 8, 0, 0xff, 289, 288 );
+  TEST_VSETVL( 55, 8, 0, 0xff, 287, 287 );
+
+  TEST_VSETVL( 56, 9, 0, 0x07, 96, 96 );
+  TEST_VSETVL( 57, 9, 0, 0x07, 97, 96 );
+  TEST_VSETVL( 58, 9, 0, 0x07, 95, 95 );
+
+  TEST_VSETVL( 59, 9, 0, 0xff, 256, 256 );
+  TEST_VSETVL( 60, 9, 0, 0xff, 257, 256 );
+  TEST_VSETVL( 61, 9, 0, 0xff, 255, 255 );
+
+  TEST_VSETVL( 62, 10, 0, 0x07, 84, 84 );
+  TEST_VSETVL( 63, 10, 0, 0x07, 85, 84 );
+  TEST_VSETVL( 64, 10, 0, 0x07, 83, 83 );
+
+  TEST_VSETVL( 65, 10, 0, 0xff, 224, 224 );
+  TEST_VSETVL( 66, 10, 0, 0xff, 225, 224 );
+  TEST_VSETVL( 67, 10, 0, 0xff, 223, 223 );
+
+  TEST_VSETVL( 68, 11, 0, 0x07, 75, 75 );
+  TEST_VSETVL( 69, 11, 0, 0x07, 76, 75 );
+  TEST_VSETVL( 70, 11, 0, 0x07, 74, 74 );
+
+  TEST_VSETVL( 71, 11, 0, 0xff, 200, 200 );
+  TEST_VSETVL( 72, 11, 0, 0xff, 201, 200 );
+  TEST_VSETVL( 73, 11, 0, 0xff, 199, 199 );
+
+  TEST_VSETVL( 74, 12, 0, 0x07, 69, 69 );
+  TEST_VSETVL( 75, 12, 0, 0x07, 70, 69 );
+  TEST_VSETVL( 76, 12, 0, 0x07, 68, 68 );
+
+  TEST_VSETVL( 77, 12, 0, 0xff, 184, 184 );
+  TEST_VSETVL( 78, 12, 0, 0xff, 185, 184 );
+  TEST_VSETVL( 79, 12, 0, 0xff, 183, 183 );
+
+  TEST_VSETVL( 80, 13, 0, 0x07, 63, 63 );
+  TEST_VSETVL( 81, 13, 0, 0x07, 64, 63 );
+  TEST_VSETVL( 82, 13, 0, 0x07, 62, 62 );
+
+  TEST_VSETVL( 83, 13, 0, 0xff, 168, 168 );
+  TEST_VSETVL( 84, 13, 0, 0xff, 169, 168 );
+  TEST_VSETVL( 85, 13, 0, 0xff, 167, 167 );
+
+  TEST_VSETVL( 86, 14, 0, 0x07, 57, 57 );
+  TEST_VSETVL( 87, 14, 0, 0x07, 58, 57 );
+  TEST_VSETVL( 88, 14, 0, 0x07, 56, 56 );
+
+  TEST_VSETVL( 89, 14, 0, 0xff, 152, 152 );
+  TEST_VSETVL( 90, 14, 0, 0xff, 153, 152 );
+  TEST_VSETVL( 91, 14, 0, 0xff, 151, 151 );
+
+  TEST_VSETVL( 92, 15, 0, 0x07, 54, 54 );
+  TEST_VSETVL( 93, 15, 0, 0x07, 55, 54 );
+  TEST_VSETVL( 94, 15, 0, 0x07, 53, 53 );
+
+  TEST_VSETVL( 95, 15, 0, 0xff, 144, 144 );
+  TEST_VSETVL( 96, 15, 0, 0xff, 145, 144 );
+  TEST_VSETVL( 97, 15, 0, 0xff, 143, 143 );
+
+  TEST_VSETVL( 98, 16, 0, 0x07, 51, 51 );
+  TEST_VSETVL( 99, 16, 0, 0x07, 52, 51 );
+  TEST_VSETVL( 100, 16, 0, 0x07, 50, 50 );
+
+  TEST_VSETVL( 101, 16, 0, 0xff, 136, 136 );
+  TEST_VSETVL( 102, 16, 0, 0xff, 137, 136 );
+  TEST_VSETVL( 103, 16, 0, 0xff, 135, 135 );
+
+  TEST_VSETVL( 104, 17, 0, 0x07, 48, 48 );
+  TEST_VSETVL( 105, 17, 0, 0x07, 49, 48 );
+  TEST_VSETVL( 106, 17, 0, 0x07, 47, 47 );
+
+  TEST_VSETVL( 107, 17, 0, 0xff, 128, 128 );
+  TEST_VSETVL( 108, 17, 0, 0xff, 129, 128 );
+  TEST_VSETVL( 109, 17, 0, 0xff, 127, 127 );
+
+  TEST_VSETVL( 110, 18, 0, 0x07, 45, 45 );
+  TEST_VSETVL( 111, 18, 0, 0x07, 46, 45 );
+  TEST_VSETVL( 112, 18, 0, 0x07, 44, 44 );
+
+  TEST_VSETVL( 113, 18, 0, 0xff, 120, 120 );
+  TEST_VSETVL( 114, 18, 0, 0xff, 121, 120 );
+  TEST_VSETVL( 115, 18, 0, 0xff, 119, 119 );
+
+  TEST_VSETVL( 116, 19, 0, 0x07, 42, 42 );
+  TEST_VSETVL( 117, 19, 0, 0x07, 43, 42 );
+  TEST_VSETVL( 118, 19, 0, 0x07, 41, 41 );
+
+  TEST_VSETVL( 119, 19, 0, 0xff, 112, 112 );
+  TEST_VSETVL( 120, 19, 0, 0xff, 113, 112 );
+  TEST_VSETVL( 121, 19, 0, 0xff, 111, 111 );
+
+  TEST_VSETVL( 122, 20, 0, 0x07, 39, 39 );
+  TEST_VSETVL( 123, 20, 0, 0x07, 40, 39 );
+  TEST_VSETVL( 124, 20, 0, 0x07, 38, 38 );
+
+  TEST_VSETVL( 125, 20, 0, 0xff, 104, 104 );
+  TEST_VSETVL( 126, 20, 0, 0xff, 105, 104 );
+  TEST_VSETVL( 127, 20, 0, 0xff, 103, 103 );
+
+  TEST_VSETVL( 128, 21, 0, 0x07, 36, 36 );
+  TEST_VSETVL( 129, 21, 0, 0x07, 37, 36 );
+  TEST_VSETVL( 130, 21, 0, 0x07, 35, 35 );
+
+  TEST_VSETVL( 131, 21, 0, 0xff, 96, 96 );
+  TEST_VSETVL( 132, 21, 0, 0xff, 97, 96 );
+  TEST_VSETVL( 133, 21, 0, 0xff, 95, 95 );
+
+  TEST_VSETVL( 134, 22, 0, 0x07, 36, 36 );
+  TEST_VSETVL( 135, 22, 0, 0x07, 37, 36 );
+  TEST_VSETVL( 136, 22, 0, 0x07, 35, 35 );
+
+  TEST_VSETVL( 137, 22, 0, 0xff, 96, 96 );
+  TEST_VSETVL( 138, 22, 0, 0xff, 97, 96 );
+  TEST_VSETVL( 139, 22, 0, 0xff, 95, 95 );
+
+  TEST_VSETVL( 140, 23, 0, 0x07, 33, 33 );
+  TEST_VSETVL( 141, 23, 0, 0x07, 34, 33 );
+  TEST_VSETVL( 142, 23, 0, 0x07, 32, 32 );
+
+  TEST_VSETVL( 143, 23, 0, 0xff, 88, 88 );
+  TEST_VSETVL( 144, 23, 0, 0xff, 89, 88 );
+  TEST_VSETVL( 145, 23, 0, 0xff, 87, 87 );
+
+  TEST_VSETVL( 146, 24, 0, 0x07, 33, 33 );
+  TEST_VSETVL( 147, 24, 0, 0x07, 34, 33 );
+  TEST_VSETVL( 148, 24, 0, 0x07, 32, 32 );
+
+  TEST_VSETVL( 149, 24, 0, 0xff, 88, 88 );
+  TEST_VSETVL( 150, 24, 0, 0xff, 89, 88 );
+  TEST_VSETVL( 151, 24, 0, 0xff, 87, 87 );
+
+  TEST_VSETVL( 152, 25, 0, 0x07, 30, 30 );
+  TEST_VSETVL( 153, 25, 0, 0x07, 31, 30 );
+  TEST_VSETVL( 154, 25, 0, 0x07, 29, 29 );
+
+  TEST_VSETVL( 155, 25, 0, 0xff, 80, 80 );
+  TEST_VSETVL( 156, 25, 0, 0xff, 81, 80 );
+  TEST_VSETVL( 157, 25, 0, 0xff, 79, 79 );
+
+  TEST_VSETVL( 158, 26, 0, 0x07, 30, 30 );
+  TEST_VSETVL( 159, 26, 0, 0x07, 31, 30 );
+  TEST_VSETVL( 160, 26, 0, 0x07, 29, 29 );
+
+  TEST_VSETVL( 161, 26, 0, 0xff, 80, 80 );
+  TEST_VSETVL( 162, 26, 0, 0xff, 81, 80 );
+  TEST_VSETVL( 163, 26, 0, 0xff, 79, 79 );
+
+  TEST_VSETVL( 164, 27, 0, 0x07, 27, 27 );
+  TEST_VSETVL( 165, 27, 0, 0x07, 28, 27 );
+  TEST_VSETVL( 166, 27, 0, 0x07, 26, 26 );
+
+  TEST_VSETVL( 167, 27, 0, 0xff, 72, 72 );
+  TEST_VSETVL( 168, 27, 0, 0xff, 73, 72 );
+  TEST_VSETVL( 169, 27, 0, 0xff, 71, 71 );
+
+  TEST_VSETVL( 170, 28, 0, 0x07, 27, 27 );
+  TEST_VSETVL( 171, 28, 0, 0x07, 28, 27 );
+  TEST_VSETVL( 172, 28, 0, 0x07, 26, 26 );
+
+  TEST_VSETVL( 173, 28, 0, 0xff, 72, 72 );
+  TEST_VSETVL( 174, 28, 0, 0xff, 73, 72 );
+  TEST_VSETVL( 175, 28, 0, 0xff, 71, 71 );
+
+  TEST_VSETVL( 176, 29, 0, 0x07, 27, 27 );
+  TEST_VSETVL( 177, 29, 0, 0x07, 28, 27 );
+  TEST_VSETVL( 178, 29, 0, 0x07, 26, 26 );
+
+  TEST_VSETVL( 179, 29, 0, 0xff, 72, 72 );
+  TEST_VSETVL( 180, 29, 0, 0xff, 73, 72 );
+  TEST_VSETVL( 181, 29, 0, 0xff, 71, 71 );
+
+  TEST_VSETVL( 182, 30, 0, 0x07, 24, 24 );
+  TEST_VSETVL( 183, 30, 0, 0x07, 25, 24 );
+  TEST_VSETVL( 184, 30, 0, 0x07, 23, 23 );
+
+  TEST_VSETVL( 185, 30, 0, 0xff, 64, 64 );
+  TEST_VSETVL( 186, 30, 0, 0xff, 65, 64 );
+  TEST_VSETVL( 187, 30, 0, 0xff, 63, 63 );
+
+  TEST_VSETVL( 188, 31, 0, 0x07, 24, 24 );
+  TEST_VSETVL( 189, 31, 0, 0x07, 25, 24 );
+  TEST_VSETVL( 190, 31, 0, 0x07, 23, 23 );
+
+  TEST_VSETVL( 191, 31, 0, 0xff, 64, 64 );
+  TEST_VSETVL( 192, 31, 0, 0xff, 65, 64 );
+  TEST_VSETVL( 193, 31, 0, 0xff, 63, 63 );
+
+  TEST_VSETVL( 194, 32, 0, 0x07, 24, 24 );
+  TEST_VSETVL( 195, 32, 0, 0x07, 25, 24 );
+  TEST_VSETVL( 196, 32, 0, 0x07, 23, 23 );
+
+  TEST_VSETVL( 197, 32, 0, 0xff, 64, 64 );
+  TEST_VSETVL( 198, 32, 0, 0xff, 65, 64 );
+  TEST_VSETVL( 199, 32, 0, 0xff, 63, 63 );
+
+  TEST_VSETVL( 200, 32, 0, 0x07, 24, 24 );
+  TEST_VSETVL( 201, 32, 0, 0x07, 25, 24 );
+  TEST_VSETVL( 202, 32, 0, 0x07, 23, 23 );
+
+  TEST_VSETVL( 203, 32, 0, 0xff, 64, 64 );
+  TEST_VSETVL( 204, 32, 0, 0xff, 65, 64 );
+  TEST_VSETVL( 205, 32, 0, 0xff, 63, 63 );
+
+  TEST_VSETVL( 206, 32, 1, 0x07, 24, 24 );
+  TEST_VSETVL( 207, 32, 1, 0x07, 25, 24 );
+  TEST_VSETVL( 208, 32, 1, 0x07, 23, 23 );
+
+  TEST_VSETVL( 209, 32, 1, 0xff, 64, 64 );
+  TEST_VSETVL( 210, 32, 1, 0xff, 65, 64 );
+  TEST_VSETVL( 211, 32, 1, 0xff, 63, 63 );
+
+  TEST_VSETVL( 212, 32, 2, 0x07, 21, 21 );
+  TEST_VSETVL( 213, 32, 2, 0x07, 22, 21 );
+  TEST_VSETVL( 214, 32, 2, 0x07, 20, 20 );
+
+  TEST_VSETVL( 215, 32, 2, 0xff, 56, 56 );
+  TEST_VSETVL( 216, 32, 2, 0xff, 57, 56 );
+  TEST_VSETVL( 217, 32, 2, 0xff, 55, 55 );
+
+  TEST_VSETVL( 218, 32, 3, 0x07, 21, 21 );
+  TEST_VSETVL( 219, 32, 3, 0x07, 22, 21 );
+  TEST_VSETVL( 220, 32, 3, 0x07, 20, 20 );
+
+  TEST_VSETVL( 221, 32, 3, 0xff, 56, 56 );
+  TEST_VSETVL( 222, 32, 3, 0xff, 57, 56 );
+  TEST_VSETVL( 223, 32, 3, 0xff, 55, 55 );
+
+  TEST_VSETVL( 224, 32, 4, 0x07, 21, 21 );
+  TEST_VSETVL( 225, 32, 4, 0x07, 22, 21 );
+  TEST_VSETVL( 226, 32, 4, 0x07, 20, 20 );
+
+  TEST_VSETVL( 227, 32, 4, 0xff, 56, 56 );
+  TEST_VSETVL( 228, 32, 4, 0xff, 57, 56 );
+  TEST_VSETVL( 229, 32, 4, 0xff, 55, 55 );
+
+  TEST_VSETVL( 230, 32, 5, 0x07, 21, 21 );
+  TEST_VSETVL( 231, 32, 5, 0x07, 22, 21 );
+  TEST_VSETVL( 232, 32, 5, 0x07, 20, 20 );
+
+  TEST_VSETVL( 233, 32, 5, 0xff, 56, 56 );
+  TEST_VSETVL( 234, 32, 5, 0xff, 57, 56 );
+  TEST_VSETVL( 235, 32, 5, 0xff, 55, 55 );
+
+  TEST_VSETVL( 236, 32, 6, 0x07, 18, 18 );
+  TEST_VSETVL( 237, 32, 6, 0x07, 19, 18 );
+  TEST_VSETVL( 238, 32, 6, 0x07, 17, 17 );
+
+  TEST_VSETVL( 239, 32, 6, 0xff, 48, 48 );
+  TEST_VSETVL( 240, 32, 6, 0xff, 49, 48 );
+  TEST_VSETVL( 241, 32, 6, 0xff, 47, 47 );
+
+  TEST_VSETVL( 242, 32, 7, 0x07, 18, 18 );
+  TEST_VSETVL( 243, 32, 7, 0x07, 19, 18 );
+  TEST_VSETVL( 244, 32, 7, 0x07, 17, 17 );
+
+  TEST_VSETVL( 245, 32, 7, 0xff, 48, 48 );
+  TEST_VSETVL( 246, 32, 7, 0xff, 49, 48 );
+  TEST_VSETVL( 247, 32, 7, 0xff, 47, 47 );
+
+  TEST_VSETVL( 248, 32, 8, 0x07, 18, 18 );
+  TEST_VSETVL( 249, 32, 8, 0x07, 19, 18 );
+  TEST_VSETVL( 250, 32, 8, 0x07, 17, 17 );
+
+  TEST_VSETVL( 251, 32, 8, 0xff, 48, 48 );
+  TEST_VSETVL( 252, 32, 8, 0xff, 49, 48 );
+  TEST_VSETVL( 253, 32, 8, 0xff, 47, 47 );
+
+  TEST_VSETVL( 254, 32, 9, 0x07, 18, 18 );
+  TEST_VSETVL( 255, 32, 9, 0x07, 19, 18 );
+  TEST_VSETVL( 256, 32, 9, 0x07, 17, 17 );
+
+  TEST_VSETVL( 257, 32, 9, 0xff, 48, 48 );
+  TEST_VSETVL( 258, 32, 9, 0xff, 49, 48 );
+  TEST_VSETVL( 259, 32, 9, 0xff, 47, 47 );
+
+  TEST_VSETVL( 260, 32, 10, 0x07, 18, 18 );
+  TEST_VSETVL( 261, 32, 10, 0x07, 19, 18 );
+  TEST_VSETVL( 262, 32, 10, 0x07, 17, 17 );
+
+  TEST_VSETVL( 263, 32, 10, 0xff, 48, 48 );
+  TEST_VSETVL( 264, 32, 10, 0xff, 49, 48 );
+  TEST_VSETVL( 265, 32, 10, 0xff, 47, 47 );
+
+  TEST_VSETVL( 266, 32, 11, 0x07, 18, 18 );
+  TEST_VSETVL( 267, 32, 11, 0x07, 19, 18 );
+  TEST_VSETVL( 268, 32, 11, 0x07, 17, 17 );
+
+  TEST_VSETVL( 269, 32, 11, 0xff, 48, 48 );
+  TEST_VSETVL( 270, 32, 11, 0xff, 49, 48 );
+  TEST_VSETVL( 271, 32, 11, 0xff, 47, 47 );
+
+  TEST_VSETVL( 272, 32, 12, 0x07, 15, 15 );
+  TEST_VSETVL( 273, 32, 12, 0x07, 16, 15 );
+  TEST_VSETVL( 274, 32, 12, 0x07, 14, 14 );
+
+  TEST_VSETVL( 275, 32, 12, 0xff, 40, 40 );
+  TEST_VSETVL( 276, 32, 12, 0xff, 41, 40 );
+  TEST_VSETVL( 277, 32, 12, 0xff, 39, 39 );
+
+  TEST_VSETVL( 278, 32, 13, 0x07, 15, 15 );
+  TEST_VSETVL( 279, 32, 13, 0x07, 16, 15 );
+  TEST_VSETVL( 280, 32, 13, 0x07, 14, 14 );
+
+  TEST_VSETVL( 281, 32, 13, 0xff, 40, 40 );
+  TEST_VSETVL( 282, 32, 13, 0xff, 41, 40 );
+  TEST_VSETVL( 283, 32, 13, 0xff, 39, 39 );
+
+  TEST_VSETVL( 284, 32, 14, 0x07, 15, 15 );
+  TEST_VSETVL( 285, 32, 14, 0x07, 16, 15 );
+  TEST_VSETVL( 286, 32, 14, 0x07, 14, 14 );
+
+  TEST_VSETVL( 287, 32, 14, 0xff, 40, 40 );
+  TEST_VSETVL( 288, 32, 14, 0xff, 41, 40 );
+  TEST_VSETVL( 289, 32, 14, 0xff, 39, 39 );
+
+  TEST_VSETVL( 290, 32, 15, 0x07, 15, 15 );
+  TEST_VSETVL( 291, 32, 15, 0x07, 16, 15 );
+  TEST_VSETVL( 292, 32, 15, 0x07, 14, 14 );
+
+  TEST_VSETVL( 293, 32, 15, 0xff, 40, 40 );
+  TEST_VSETVL( 294, 32, 15, 0xff, 41, 40 );
+  TEST_VSETVL( 295, 32, 15, 0xff, 39, 39 );
+
+  TEST_VSETVL( 296, 32, 16, 0x07, 15, 15 );
+  TEST_VSETVL( 297, 32, 16, 0x07, 16, 15 );
+  TEST_VSETVL( 298, 32, 16, 0x07, 14, 14 );
+
+  TEST_VSETVL( 299, 32, 16, 0xff, 40, 40 );
+  TEST_VSETVL( 300, 32, 16, 0xff, 41, 40 );
+  TEST_VSETVL( 301, 32, 16, 0xff, 39, 39 );
+
+  TEST_VSETVL( 302, 32, 17, 0x07, 15, 15 );
+  TEST_VSETVL( 303, 32, 17, 0x07, 16, 15 );
+  TEST_VSETVL( 304, 32, 17, 0x07, 14, 14 );
+
+  TEST_VSETVL( 305, 32, 17, 0xff, 40, 40 );
+  TEST_VSETVL( 306, 32, 17, 0xff, 41, 40 );
+  TEST_VSETVL( 307, 32, 17, 0xff, 39, 39 );
+
+  TEST_VSETVL( 308, 32, 18, 0x07, 15, 15 );
+  TEST_VSETVL( 309, 32, 18, 0x07, 16, 15 );
+  TEST_VSETVL( 310, 32, 18, 0x07, 14, 14 );
+
+  TEST_VSETVL( 311, 32, 18, 0xff, 40, 40 );
+  TEST_VSETVL( 312, 32, 18, 0xff, 41, 40 );
+  TEST_VSETVL( 313, 32, 18, 0xff, 39, 39 );
+
+  TEST_VSETVL( 314, 32, 19, 0x07, 15, 15 );
+  TEST_VSETVL( 315, 32, 19, 0x07, 16, 15 );
+  TEST_VSETVL( 316, 32, 19, 0x07, 14, 14 );
+
+  TEST_VSETVL( 317, 32, 19, 0xff, 40, 40 );
+  TEST_VSETVL( 318, 32, 19, 0xff, 41, 40 );
+  TEST_VSETVL( 319, 32, 19, 0xff, 39, 39 );
+
+  TEST_VSETVL( 320, 32, 20, 0x07, 15, 15 );
+  TEST_VSETVL( 321, 32, 20, 0x07, 16, 15 );
+  TEST_VSETVL( 322, 32, 20, 0x07, 14, 14 );
+
+  TEST_VSETVL( 323, 32, 20, 0xff, 40, 40 );
+  TEST_VSETVL( 324, 32, 20, 0xff, 41, 40 );
+  TEST_VSETVL( 325, 32, 20, 0xff, 39, 39 );
+
+  TEST_VSETVL( 326, 32, 21, 0x07, 12, 12 );
+  TEST_VSETVL( 327, 32, 21, 0x07, 13, 12 );
+  TEST_VSETVL( 328, 32, 21, 0x07, 11, 11 );
+
+  TEST_VSETVL( 329, 32, 21, 0xff, 32, 32 );
+  TEST_VSETVL( 330, 32, 21, 0xff, 33, 32 );
+  TEST_VSETVL( 331, 32, 21, 0xff, 31, 31 );
+
+  TEST_VSETVL( 332, 32, 22, 0x07, 12, 12 );
+  TEST_VSETVL( 333, 32, 22, 0x07, 13, 12 );
+  TEST_VSETVL( 334, 32, 22, 0x07, 11, 11 );
+
+  TEST_VSETVL( 335, 32, 22, 0xff, 32, 32 );
+  TEST_VSETVL( 336, 32, 22, 0xff, 33, 32 );
+  TEST_VSETVL( 337, 32, 22, 0xff, 31, 31 );
+
+  TEST_VSETVL( 338, 32, 23, 0x07, 12, 12 );
+  TEST_VSETVL( 339, 32, 23, 0x07, 13, 12 );
+  TEST_VSETVL( 340, 32, 23, 0x07, 11, 11 );
+
+  TEST_VSETVL( 341, 32, 23, 0xff, 32, 32 );
+  TEST_VSETVL( 342, 32, 23, 0xff, 33, 32 );
+  TEST_VSETVL( 343, 32, 23, 0xff, 31, 31 );
+
+  TEST_VSETVL( 344, 32, 24, 0x07, 12, 12 );
+  TEST_VSETVL( 345, 32, 24, 0x07, 13, 12 );
+  TEST_VSETVL( 346, 32, 24, 0x07, 11, 11 );
+
+  TEST_VSETVL( 347, 32, 24, 0xff, 32, 32 );
+  TEST_VSETVL( 348, 32, 24, 0xff, 33, 32 );
+  TEST_VSETVL( 349, 32, 24, 0xff, 31, 31 );
+
+  TEST_VSETVL( 350, 32, 25, 0x07, 12, 12 );
+  TEST_VSETVL( 351, 32, 25, 0x07, 13, 12 );
+  TEST_VSETVL( 352, 32, 25, 0x07, 11, 11 );
+
+  TEST_VSETVL( 353, 32, 25, 0xff, 32, 32 );
+  TEST_VSETVL( 354, 32, 25, 0xff, 33, 32 );
+  TEST_VSETVL( 355, 32, 25, 0xff, 31, 31 );
+
+  TEST_VSETVL( 356, 32, 26, 0x07, 12, 12 );
+  TEST_VSETVL( 357, 32, 26, 0x07, 13, 12 );
+  TEST_VSETVL( 358, 32, 26, 0x07, 11, 11 );
+
+  TEST_VSETVL( 359, 32, 26, 0xff, 32, 32 );
+  TEST_VSETVL( 360, 32, 26, 0xff, 33, 32 );
+  TEST_VSETVL( 361, 32, 26, 0xff, 31, 31 );
+
+  TEST_VSETVL( 362, 32, 27, 0x07, 12, 12 );
+  TEST_VSETVL( 363, 32, 27, 0x07, 13, 12 );
+  TEST_VSETVL( 364, 32, 27, 0x07, 11, 11 );
+
+  TEST_VSETVL( 365, 32, 27, 0xff, 32, 32 );
+  TEST_VSETVL( 366, 32, 27, 0xff, 33, 32 );
+  TEST_VSETVL( 367, 32, 27, 0xff, 31, 31 );
+
+  TEST_VSETVL( 368, 32, 28, 0x07, 12, 12 );
+  TEST_VSETVL( 369, 32, 28, 0x07, 13, 12 );
+  TEST_VSETVL( 370, 32, 28, 0x07, 11, 11 );
+
+  TEST_VSETVL( 371, 32, 28, 0xff, 32, 32 );
+  TEST_VSETVL( 372, 32, 28, 0xff, 33, 32 );
+  TEST_VSETVL( 373, 32, 28, 0xff, 31, 31 );
+
+  TEST_VSETVL( 374, 32, 29, 0x07, 12, 12 );
+  TEST_VSETVL( 375, 32, 29, 0x07, 13, 12 );
+  TEST_VSETVL( 376, 32, 29, 0x07, 11, 11 );
+
+  TEST_VSETVL( 377, 32, 29, 0xff, 32, 32 );
+  TEST_VSETVL( 378, 32, 29, 0xff, 33, 32 );
+  TEST_VSETVL( 379, 32, 29, 0xff, 31, 31 );
+
+  TEST_VSETVL( 380, 32, 30, 0x07, 12, 12 );
+  TEST_VSETVL( 381, 32, 30, 0x07, 13, 12 );
+  TEST_VSETVL( 382, 32, 30, 0x07, 11, 11 );
+
+  TEST_VSETVL( 383, 32, 30, 0xff, 32, 32 );
+  TEST_VSETVL( 384, 32, 30, 0xff, 33, 32 );
+  TEST_VSETVL( 385, 32, 30, 0xff, 31, 31 );
+
+  TEST_VSETVL( 386, 32, 31, 0x07, 12, 12 );
+  TEST_VSETVL( 387, 32, 31, 0x07, 13, 12 );
+  TEST_VSETVL( 388, 32, 31, 0x07, 11, 11 );
+
+  TEST_VSETVL( 389, 32, 31, 0xff, 32, 32 );
+  TEST_VSETVL( 390, 32, 31, 0xff, 33, 32 );
+  TEST_VSETVL( 391, 32, 31, 0xff, 31, 31 );
+
+  TEST_VSETVL( 392, 32, 32, 0x07, 12, 12 );
+  TEST_VSETVL( 393, 32, 32, 0x07, 13, 12 );
+  TEST_VSETVL( 394, 32, 32, 0x07, 11, 11 );
+
+  TEST_VSETVL( 395, 32, 32, 0xff, 32, 32 );
+  TEST_VSETVL( 396, 32, 32, 0xff, 33, 32 );
+  TEST_VSETVL( 397, 32, 32, 0xff, 31, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvadd_branch.S b/isa/rv64uv/vvadd_branch.S
new file mode 100644 (file)
index 0000000..191408d
--- /dev/null
@@ -0,0 +1,141 @@
+#*****************************************************************************
+# vvadd_branch.S
+#-----------------------------------------------------------------------------
+#
+# Test vvadd branch.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,8
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2, 6        
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2, 4        
+  li x28,4
+  bne a1,a2,fail
+  li a2, 2
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  la a3,src1
+  vld vx4,a3
+  li a4, 3
+  vmsv vx5,a4
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx4,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,1
+  li x28,6
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2,2
+  li x28,7
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2,0
+  li x28,8
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li a2,0
+  li x28,9
+  bne a1,a2,fail
+
+  la a3,src2
+  vld vx5,a3
+  lui a0,%hi(vtcode3)
+  vf %lo(vtcode3)(a0)
+  la a5,dest
+  vsd vx5,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,4
+  li x28,6
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2,3
+  li x28,7
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2,2
+  li x28,8
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li a2,1
+  li x28,9
+  bne a1,a2,fail
+
+  j pass
+
+vtcode1:
+  beq x2, x2, end
+  add x2,x2,x3
+end:    add x2, x3, x3
+  stop
+
+vtcode2:
+  blt x4, x5, end2
+  add x4, x0, x0
+end2:   add x4, x4, x0
+  stop
+
+vtcode3:
+  bge x5, x0, end3
+  add x5, x0, x0
+end3:   add x5, x5,x0
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvadd_d.S b/isa/rv64uv/vvadd_d.S
new file mode 100644 (file)
index 0000000..ae9db03
--- /dev/null
@@ -0,0 +1,130 @@
+#*****************************************************************************
+# vvadd_d.S
+#-----------------------------------------------------------------------------
+#
+# Test vvadd d.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  la a3,src1
+  vld vx4,a3
+  lui a0,%hi(vtcode2)
+  vf %lo(vtcode2)(a0)
+  la a5,dest
+  vsd vx4,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,1
+  li x28,6
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2,2
+  li x28,7
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2,3
+  li x28,8
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li a2,4
+  li x28,9
+  bne a1,a2,fail
+
+  la a3,src2
+  vld vx5,a3
+  lui a0,%hi(vtcode3)
+  vf %lo(vtcode3)(a0)
+  la a5,dest
+  vsd vx5,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,4
+  li x28,6
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2,3
+  li x28,7
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2,2
+  li x28,8
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li a2,1
+  li x28,9
+  bne a1,a2,fail
+
+  j pass
+
+vtcode1:
+  add x2,x2,x3
+  stop
+
+vtcode2:
+  add a0,a0,x0
+  stop
+
+vtcode3:
+  add a1,a1,x0
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvadd_fd.S b/isa/rv64uv/vvadd_fd.S
new file mode 100644 (file)
index 0000000..bcd417a
--- /dev/null
@@ -0,0 +1,76 @@
+#*****************************************************************************
+# vvadd_fd.S
+#-----------------------------------------------------------------------------
+#
+# Test vvadd fd.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,32
+
+  la a3,src1
+  la a4,src2
+  vfld vf2,a3
+  vfld vf3,a4
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a5,dest
+  vfsd vf2,a5
+  fence.v.l
+  la a5,result
+  ld a1,0(a5)
+  ld a2,0(a5)
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+  j pass
+
+vtcode:
+  fadd.d f2,f2,f3
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .double 0.1
+  .double 0.2
+  .double 0.3
+  .double 0.4
+src2:
+  .double 0.4
+  .double 0.3
+  .double 0.2
+  .double 0.1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+result:
+  .double 0.5
+  .double 0.5
+  .double 0.5
+  .double 0.5
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvadd_fw.S b/isa/rv64uv/vvadd_fw.S
new file mode 100644 (file)
index 0000000..f857237
--- /dev/null
@@ -0,0 +1,76 @@
+#*****************************************************************************
+# vvadd_fw.S
+#-----------------------------------------------------------------------------
+#
+# Test vvadd fw.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,32
+
+  la a3,src1
+  la a4,src2
+  vflw vf2,a3
+  vflw vf3,a4
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a5,dest
+  vfsw vf2,a5
+  fence.v.l
+  la a6,result
+  lw a1,0(a5)
+  lw a2,0(a6)
+  li x28,2
+  bne a1,a2,fail
+  lw a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  lw a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  lw a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+  j pass
+
+vtcode:
+  fadd.s f2,f2,f3
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .single 0.1
+  .single 0.2
+  .single 0.3
+  .single 0.4
+src2:
+  .single 0.4
+  .single 0.3
+  .single 0.2
+  .single 0.1
+dest:
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+result:
+  .single 0.5
+  .single 0.5
+  .single 0.5
+  .single 0.5
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvadd_w.S b/isa/rv64uv/vvadd_w.S
new file mode 100644 (file)
index 0000000..f4ad1ca
--- /dev/null
@@ -0,0 +1,85 @@
+#*****************************************************************************
+# vvadd_w.S
+#-----------------------------------------------------------------------------
+#
+# Test vvadd w.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,9
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vlw vx2,a3
+  vlw vx3,a4
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a5,dest
+  vsw vx2,a5
+  fence.v.l
+  lw a1,0(a5)
+  li a2,10
+  li x28,2
+  bne a1,a2,fail
+  lw a1,4(a5)
+  li x28,3
+  bne a1,a2,fail
+  lw a1,8(a5)
+  li x28,4
+  bne a1,a2,fail
+  lw a1,12(a5)
+  li x28,5
+  bne a1,a2,fail
+  j pass
+
+vtcode:
+  addw x2,x2,x3
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .word 1
+  .word 2
+  .word 3
+  .word 4
+  .word 5
+  .word 6
+  .word 7
+  .word 8
+  .word 9
+src2:
+  .word 9
+  .word 8
+  .word 7
+  .word 6
+  .word 5
+  .word 4
+  .word 3
+  .word 2
+  .word 1
+dest:
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+  .word 0xdeadbeef
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvcfg.S b/isa/rv64uv/vvcfg.S
new file mode 100644 (file)
index 0000000..e474d60
--- /dev/null
@@ -0,0 +1,559 @@
+#*****************************************************************************
+# vvcfg.S
+#-----------------------------------------------------------------------------
+#
+# Test vvcfg instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_VVCFG( 2, 0, 0, 0x07, 768, 768 );
+  TEST_VVCFG( 3, 0, 0, 0x07, 769, 768 );
+  TEST_VVCFG( 4, 0, 0, 0x07, 767, 767 );
+
+  TEST_VVCFG( 5, 0, 0, 0xff, 2048, 2048 );
+  TEST_VVCFG( 6, 0, 0, 0xff, 2049, 2048 );
+  TEST_VVCFG( 7, 0, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFG( 8, 1, 0, 0x07, 768, 768 );
+  TEST_VVCFG( 9, 1, 0, 0x07, 769, 768 );
+  TEST_VVCFG( 10, 1, 0, 0x07, 767, 767 );
+
+  TEST_VVCFG( 11, 1, 0, 0xff, 2048, 2048 );
+  TEST_VVCFG( 12, 1, 0, 0xff, 2049, 2048 );
+  TEST_VVCFG( 13, 1, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFG( 14, 2, 0, 0x07, 768, 768 );
+  TEST_VVCFG( 15, 2, 0, 0x07, 769, 768 );
+  TEST_VVCFG( 16, 2, 0, 0x07, 767, 767 );
+
+  TEST_VVCFG( 17, 2, 0, 0xff, 2048, 2048 );
+  TEST_VVCFG( 18, 2, 0, 0xff, 2049, 2048 );
+  TEST_VVCFG( 19, 2, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFG( 20, 3, 0, 0x07, 384, 384 );
+  TEST_VVCFG( 21, 3, 0, 0x07, 385, 384 );
+  TEST_VVCFG( 22, 3, 0, 0x07, 383, 383 );
+
+  TEST_VVCFG( 23, 3, 0, 0xff, 1024, 1024 );
+  TEST_VVCFG( 24, 3, 0, 0xff, 1025, 1024 );
+  TEST_VVCFG( 25, 3, 0, 0xff, 1023, 1023 );
+
+  TEST_VVCFG( 26, 4, 0, 0x07, 255, 255 );
+  TEST_VVCFG( 27, 4, 0, 0x07, 256, 255 );
+  TEST_VVCFG( 28, 4, 0, 0x07, 254, 254 );
+
+  TEST_VVCFG( 29, 4, 0, 0xff, 680, 680 );
+  TEST_VVCFG( 30, 4, 0, 0xff, 681, 680 );
+  TEST_VVCFG( 31, 4, 0, 0xff, 679, 679 );
+
+  TEST_VVCFG( 32, 5, 0, 0x07, 192, 192 );
+  TEST_VVCFG( 33, 5, 0, 0x07, 193, 192 );
+  TEST_VVCFG( 34, 5, 0, 0x07, 191, 191 );
+
+  TEST_VVCFG( 35, 5, 0, 0xff, 512, 512 );
+  TEST_VVCFG( 36, 5, 0, 0xff, 513, 512 );
+  TEST_VVCFG( 37, 5, 0, 0xff, 511, 511 );
+
+  TEST_VVCFG( 38, 6, 0, 0x07, 153, 153 );
+  TEST_VVCFG( 39, 6, 0, 0x07, 154, 153 );
+  TEST_VVCFG( 40, 6, 0, 0x07, 152, 152 );
+
+  TEST_VVCFG( 41, 6, 0, 0xff, 408, 408 );
+  TEST_VVCFG( 42, 6, 0, 0xff, 409, 408 );
+  TEST_VVCFG( 43, 6, 0, 0xff, 407, 407 );
+
+  TEST_VVCFG( 44, 7, 0, 0x07, 126, 126 );
+  TEST_VVCFG( 45, 7, 0, 0x07, 127, 126 );
+  TEST_VVCFG( 46, 7, 0, 0x07, 125, 125 );
+
+  TEST_VVCFG( 47, 7, 0, 0xff, 336, 336 );
+  TEST_VVCFG( 48, 7, 0, 0xff, 337, 336 );
+  TEST_VVCFG( 49, 7, 0, 0xff, 335, 335 );
+
+  TEST_VVCFG( 50, 8, 0, 0x07, 108, 108 );
+  TEST_VVCFG( 51, 8, 0, 0x07, 109, 108 );
+  TEST_VVCFG( 52, 8, 0, 0x07, 107, 107 );
+
+  TEST_VVCFG( 53, 8, 0, 0xff, 288, 288 );
+  TEST_VVCFG( 54, 8, 0, 0xff, 289, 288 );
+  TEST_VVCFG( 55, 8, 0, 0xff, 287, 287 );
+
+  TEST_VVCFG( 56, 9, 0, 0x07, 96, 96 );
+  TEST_VVCFG( 57, 9, 0, 0x07, 97, 96 );
+  TEST_VVCFG( 58, 9, 0, 0x07, 95, 95 );
+
+  TEST_VVCFG( 59, 9, 0, 0xff, 256, 256 );
+  TEST_VVCFG( 60, 9, 0, 0xff, 257, 256 );
+  TEST_VVCFG( 61, 9, 0, 0xff, 255, 255 );
+
+  TEST_VVCFG( 62, 10, 0, 0x07, 84, 84 );
+  TEST_VVCFG( 63, 10, 0, 0x07, 85, 84 );
+  TEST_VVCFG( 64, 10, 0, 0x07, 83, 83 );
+
+  TEST_VVCFG( 65, 10, 0, 0xff, 224, 224 );
+  TEST_VVCFG( 66, 10, 0, 0xff, 225, 224 );
+  TEST_VVCFG( 67, 10, 0, 0xff, 223, 223 );
+
+  TEST_VVCFG( 68, 11, 0, 0x07, 75, 75 );
+  TEST_VVCFG( 69, 11, 0, 0x07, 76, 75 );
+  TEST_VVCFG( 70, 11, 0, 0x07, 74, 74 );
+
+  TEST_VVCFG( 71, 11, 0, 0xff, 200, 200 );
+  TEST_VVCFG( 72, 11, 0, 0xff, 201, 200 );
+  TEST_VVCFG( 73, 11, 0, 0xff, 199, 199 );
+
+  TEST_VVCFG( 74, 12, 0, 0x07, 69, 69 );
+  TEST_VVCFG( 75, 12, 0, 0x07, 70, 69 );
+  TEST_VVCFG( 76, 12, 0, 0x07, 68, 68 );
+
+  TEST_VVCFG( 77, 12, 0, 0xff, 184, 184 );
+  TEST_VVCFG( 78, 12, 0, 0xff, 185, 184 );
+  TEST_VVCFG( 79, 12, 0, 0xff, 183, 183 );
+
+  TEST_VVCFG( 80, 13, 0, 0x07, 63, 63 );
+  TEST_VVCFG( 81, 13, 0, 0x07, 64, 63 );
+  TEST_VVCFG( 82, 13, 0, 0x07, 62, 62 );
+
+  TEST_VVCFG( 83, 13, 0, 0xff, 168, 168 );
+  TEST_VVCFG( 84, 13, 0, 0xff, 169, 168 );
+  TEST_VVCFG( 85, 13, 0, 0xff, 167, 167 );
+
+  TEST_VVCFG( 86, 14, 0, 0x07, 57, 57 );
+  TEST_VVCFG( 87, 14, 0, 0x07, 58, 57 );
+  TEST_VVCFG( 88, 14, 0, 0x07, 56, 56 );
+
+  TEST_VVCFG( 89, 14, 0, 0xff, 152, 152 );
+  TEST_VVCFG( 90, 14, 0, 0xff, 153, 152 );
+  TEST_VVCFG( 91, 14, 0, 0xff, 151, 151 );
+
+  TEST_VVCFG( 92, 15, 0, 0x07, 54, 54 );
+  TEST_VVCFG( 93, 15, 0, 0x07, 55, 54 );
+  TEST_VVCFG( 94, 15, 0, 0x07, 53, 53 );
+
+  TEST_VVCFG( 95, 15, 0, 0xff, 144, 144 );
+  TEST_VVCFG( 96, 15, 0, 0xff, 145, 144 );
+  TEST_VVCFG( 97, 15, 0, 0xff, 143, 143 );
+
+  TEST_VVCFG( 98, 16, 0, 0x07, 51, 51 );
+  TEST_VVCFG( 99, 16, 0, 0x07, 52, 51 );
+  TEST_VVCFG( 100, 16, 0, 0x07, 50, 50 );
+
+  TEST_VVCFG( 101, 16, 0, 0xff, 136, 136 );
+  TEST_VVCFG( 102, 16, 0, 0xff, 137, 136 );
+  TEST_VVCFG( 103, 16, 0, 0xff, 135, 135 );
+
+  TEST_VVCFG( 104, 17, 0, 0x07, 48, 48 );
+  TEST_VVCFG( 105, 17, 0, 0x07, 49, 48 );
+  TEST_VVCFG( 106, 17, 0, 0x07, 47, 47 );
+
+  TEST_VVCFG( 107, 17, 0, 0xff, 128, 128 );
+  TEST_VVCFG( 108, 17, 0, 0xff, 129, 128 );
+  TEST_VVCFG( 109, 17, 0, 0xff, 127, 127 );
+
+  TEST_VVCFG( 110, 18, 0, 0x07, 45, 45 );
+  TEST_VVCFG( 111, 18, 0, 0x07, 46, 45 );
+  TEST_VVCFG( 112, 18, 0, 0x07, 44, 44 );
+
+  TEST_VVCFG( 113, 18, 0, 0xff, 120, 120 );
+  TEST_VVCFG( 114, 18, 0, 0xff, 121, 120 );
+  TEST_VVCFG( 115, 18, 0, 0xff, 119, 119 );
+
+  TEST_VVCFG( 116, 19, 0, 0x07, 42, 42 );
+  TEST_VVCFG( 117, 19, 0, 0x07, 43, 42 );
+  TEST_VVCFG( 118, 19, 0, 0x07, 41, 41 );
+
+  TEST_VVCFG( 119, 19, 0, 0xff, 112, 112 );
+  TEST_VVCFG( 120, 19, 0, 0xff, 113, 112 );
+  TEST_VVCFG( 121, 19, 0, 0xff, 111, 111 );
+
+  TEST_VVCFG( 122, 20, 0, 0x07, 39, 39 );
+  TEST_VVCFG( 123, 20, 0, 0x07, 40, 39 );
+  TEST_VVCFG( 124, 20, 0, 0x07, 38, 38 );
+
+  TEST_VVCFG( 125, 20, 0, 0xff, 104, 104 );
+  TEST_VVCFG( 126, 20, 0, 0xff, 105, 104 );
+  TEST_VVCFG( 127, 20, 0, 0xff, 103, 103 );
+
+  TEST_VVCFG( 128, 21, 0, 0x07, 36, 36 );
+  TEST_VVCFG( 129, 21, 0, 0x07, 37, 36 );
+  TEST_VVCFG( 130, 21, 0, 0x07, 35, 35 );
+
+  TEST_VVCFG( 131, 21, 0, 0xff, 96, 96 );
+  TEST_VVCFG( 132, 21, 0, 0xff, 97, 96 );
+  TEST_VVCFG( 133, 21, 0, 0xff, 95, 95 );
+
+  TEST_VVCFG( 134, 22, 0, 0x07, 36, 36 );
+  TEST_VVCFG( 135, 22, 0, 0x07, 37, 36 );
+  TEST_VVCFG( 136, 22, 0, 0x07, 35, 35 );
+
+  TEST_VVCFG( 137, 22, 0, 0xff, 96, 96 );
+  TEST_VVCFG( 138, 22, 0, 0xff, 97, 96 );
+  TEST_VVCFG( 139, 22, 0, 0xff, 95, 95 );
+
+  TEST_VVCFG( 140, 23, 0, 0x07, 33, 33 );
+  TEST_VVCFG( 141, 23, 0, 0x07, 34, 33 );
+  TEST_VVCFG( 142, 23, 0, 0x07, 32, 32 );
+
+  TEST_VVCFG( 143, 23, 0, 0xff, 88, 88 );
+  TEST_VVCFG( 144, 23, 0, 0xff, 89, 88 );
+  TEST_VVCFG( 145, 23, 0, 0xff, 87, 87 );
+
+  TEST_VVCFG( 146, 24, 0, 0x07, 33, 33 );
+  TEST_VVCFG( 147, 24, 0, 0x07, 34, 33 );
+  TEST_VVCFG( 148, 24, 0, 0x07, 32, 32 );
+
+  TEST_VVCFG( 149, 24, 0, 0xff, 88, 88 );
+  TEST_VVCFG( 150, 24, 0, 0xff, 89, 88 );
+  TEST_VVCFG( 151, 24, 0, 0xff, 87, 87 );
+
+  TEST_VVCFG( 152, 25, 0, 0x07, 30, 30 );
+  TEST_VVCFG( 153, 25, 0, 0x07, 31, 30 );
+  TEST_VVCFG( 154, 25, 0, 0x07, 29, 29 );
+
+  TEST_VVCFG( 155, 25, 0, 0xff, 80, 80 );
+  TEST_VVCFG( 156, 25, 0, 0xff, 81, 80 );
+  TEST_VVCFG( 157, 25, 0, 0xff, 79, 79 );
+
+  TEST_VVCFG( 158, 26, 0, 0x07, 30, 30 );
+  TEST_VVCFG( 159, 26, 0, 0x07, 31, 30 );
+  TEST_VVCFG( 160, 26, 0, 0x07, 29, 29 );
+
+  TEST_VVCFG( 161, 26, 0, 0xff, 80, 80 );
+  TEST_VVCFG( 162, 26, 0, 0xff, 81, 80 );
+  TEST_VVCFG( 163, 26, 0, 0xff, 79, 79 );
+
+  TEST_VVCFG( 164, 27, 0, 0x07, 27, 27 );
+  TEST_VVCFG( 165, 27, 0, 0x07, 28, 27 );
+  TEST_VVCFG( 166, 27, 0, 0x07, 26, 26 );
+
+  TEST_VVCFG( 167, 27, 0, 0xff, 72, 72 );
+  TEST_VVCFG( 168, 27, 0, 0xff, 73, 72 );
+  TEST_VVCFG( 169, 27, 0, 0xff, 71, 71 );
+
+  TEST_VVCFG( 170, 28, 0, 0x07, 27, 27 );
+  TEST_VVCFG( 171, 28, 0, 0x07, 28, 27 );
+  TEST_VVCFG( 172, 28, 0, 0x07, 26, 26 );
+
+  TEST_VVCFG( 173, 28, 0, 0xff, 72, 72 );
+  TEST_VVCFG( 174, 28, 0, 0xff, 73, 72 );
+  TEST_VVCFG( 175, 28, 0, 0xff, 71, 71 );
+
+  TEST_VVCFG( 176, 29, 0, 0x07, 27, 27 );
+  TEST_VVCFG( 177, 29, 0, 0x07, 28, 27 );
+  TEST_VVCFG( 178, 29, 0, 0x07, 26, 26 );
+
+  TEST_VVCFG( 179, 29, 0, 0xff, 72, 72 );
+  TEST_VVCFG( 180, 29, 0, 0xff, 73, 72 );
+  TEST_VVCFG( 181, 29, 0, 0xff, 71, 71 );
+
+  TEST_VVCFG( 182, 30, 0, 0x07, 24, 24 );
+  TEST_VVCFG( 183, 30, 0, 0x07, 25, 24 );
+  TEST_VVCFG( 184, 30, 0, 0x07, 23, 23 );
+
+  TEST_VVCFG( 185, 30, 0, 0xff, 64, 64 );
+  TEST_VVCFG( 186, 30, 0, 0xff, 65, 64 );
+  TEST_VVCFG( 187, 30, 0, 0xff, 63, 63 );
+
+  TEST_VVCFG( 188, 31, 0, 0x07, 24, 24 );
+  TEST_VVCFG( 189, 31, 0, 0x07, 25, 24 );
+  TEST_VVCFG( 190, 31, 0, 0x07, 23, 23 );
+
+  TEST_VVCFG( 191, 31, 0, 0xff, 64, 64 );
+  TEST_VVCFG( 192, 31, 0, 0xff, 65, 64 );
+  TEST_VVCFG( 193, 31, 0, 0xff, 63, 63 );
+
+  TEST_VVCFG( 194, 32, 0, 0x07, 24, 24 );
+  TEST_VVCFG( 195, 32, 0, 0x07, 25, 24 );
+  TEST_VVCFG( 196, 32, 0, 0x07, 23, 23 );
+
+  TEST_VVCFG( 197, 32, 0, 0xff, 64, 64 );
+  TEST_VVCFG( 198, 32, 0, 0xff, 65, 64 );
+  TEST_VVCFG( 199, 32, 0, 0xff, 63, 63 );
+
+  TEST_VVCFG( 200, 32, 0, 0x07, 24, 24 );
+  TEST_VVCFG( 201, 32, 0, 0x07, 25, 24 );
+  TEST_VVCFG( 202, 32, 0, 0x07, 23, 23 );
+
+  TEST_VVCFG( 203, 32, 0, 0xff, 64, 64 );
+  TEST_VVCFG( 204, 32, 0, 0xff, 65, 64 );
+  TEST_VVCFG( 205, 32, 0, 0xff, 63, 63 );
+
+  TEST_VVCFG( 206, 32, 1, 0x07, 24, 24 );
+  TEST_VVCFG( 207, 32, 1, 0x07, 25, 24 );
+  TEST_VVCFG( 208, 32, 1, 0x07, 23, 23 );
+
+  TEST_VVCFG( 209, 32, 1, 0xff, 64, 64 );
+  TEST_VVCFG( 210, 32, 1, 0xff, 65, 64 );
+  TEST_VVCFG( 211, 32, 1, 0xff, 63, 63 );
+
+  TEST_VVCFG( 212, 32, 2, 0x07, 21, 21 );
+  TEST_VVCFG( 213, 32, 2, 0x07, 22, 21 );
+  TEST_VVCFG( 214, 32, 2, 0x07, 20, 20 );
+
+  TEST_VVCFG( 215, 32, 2, 0xff, 56, 56 );
+  TEST_VVCFG( 216, 32, 2, 0xff, 57, 56 );
+  TEST_VVCFG( 217, 32, 2, 0xff, 55, 55 );
+
+  TEST_VVCFG( 218, 32, 3, 0x07, 21, 21 );
+  TEST_VVCFG( 219, 32, 3, 0x07, 22, 21 );
+  TEST_VVCFG( 220, 32, 3, 0x07, 20, 20 );
+
+  TEST_VVCFG( 221, 32, 3, 0xff, 56, 56 );
+  TEST_VVCFG( 222, 32, 3, 0xff, 57, 56 );
+  TEST_VVCFG( 223, 32, 3, 0xff, 55, 55 );
+
+  TEST_VVCFG( 224, 32, 4, 0x07, 21, 21 );
+  TEST_VVCFG( 225, 32, 4, 0x07, 22, 21 );
+  TEST_VVCFG( 226, 32, 4, 0x07, 20, 20 );
+
+  TEST_VVCFG( 227, 32, 4, 0xff, 56, 56 );
+  TEST_VVCFG( 228, 32, 4, 0xff, 57, 56 );
+  TEST_VVCFG( 229, 32, 4, 0xff, 55, 55 );
+
+  TEST_VVCFG( 230, 32, 5, 0x07, 21, 21 );
+  TEST_VVCFG( 231, 32, 5, 0x07, 22, 21 );
+  TEST_VVCFG( 232, 32, 5, 0x07, 20, 20 );
+
+  TEST_VVCFG( 233, 32, 5, 0xff, 56, 56 );
+  TEST_VVCFG( 234, 32, 5, 0xff, 57, 56 );
+  TEST_VVCFG( 235, 32, 5, 0xff, 55, 55 );
+
+  TEST_VVCFG( 236, 32, 6, 0x07, 18, 18 );
+  TEST_VVCFG( 237, 32, 6, 0x07, 19, 18 );
+  TEST_VVCFG( 238, 32, 6, 0x07, 17, 17 );
+
+  TEST_VVCFG( 239, 32, 6, 0xff, 48, 48 );
+  TEST_VVCFG( 240, 32, 6, 0xff, 49, 48 );
+  TEST_VVCFG( 241, 32, 6, 0xff, 47, 47 );
+
+  TEST_VVCFG( 242, 32, 7, 0x07, 18, 18 );
+  TEST_VVCFG( 243, 32, 7, 0x07, 19, 18 );
+  TEST_VVCFG( 244, 32, 7, 0x07, 17, 17 );
+
+  TEST_VVCFG( 245, 32, 7, 0xff, 48, 48 );
+  TEST_VVCFG( 246, 32, 7, 0xff, 49, 48 );
+  TEST_VVCFG( 247, 32, 7, 0xff, 47, 47 );
+
+  TEST_VVCFG( 248, 32, 8, 0x07, 18, 18 );
+  TEST_VVCFG( 249, 32, 8, 0x07, 19, 18 );
+  TEST_VVCFG( 250, 32, 8, 0x07, 17, 17 );
+
+  TEST_VVCFG( 251, 32, 8, 0xff, 48, 48 );
+  TEST_VVCFG( 252, 32, 8, 0xff, 49, 48 );
+  TEST_VVCFG( 253, 32, 8, 0xff, 47, 47 );
+
+  TEST_VVCFG( 254, 32, 9, 0x07, 18, 18 );
+  TEST_VVCFG( 255, 32, 9, 0x07, 19, 18 );
+  TEST_VVCFG( 256, 32, 9, 0x07, 17, 17 );
+
+  TEST_VVCFG( 257, 32, 9, 0xff, 48, 48 );
+  TEST_VVCFG( 258, 32, 9, 0xff, 49, 48 );
+  TEST_VVCFG( 259, 32, 9, 0xff, 47, 47 );
+
+  TEST_VVCFG( 260, 32, 10, 0x07, 18, 18 );
+  TEST_VVCFG( 261, 32, 10, 0x07, 19, 18 );
+  TEST_VVCFG( 262, 32, 10, 0x07, 17, 17 );
+
+  TEST_VVCFG( 263, 32, 10, 0xff, 48, 48 );
+  TEST_VVCFG( 264, 32, 10, 0xff, 49, 48 );
+  TEST_VVCFG( 265, 32, 10, 0xff, 47, 47 );
+
+  TEST_VVCFG( 266, 32, 11, 0x07, 18, 18 );
+  TEST_VVCFG( 267, 32, 11, 0x07, 19, 18 );
+  TEST_VVCFG( 268, 32, 11, 0x07, 17, 17 );
+
+  TEST_VVCFG( 269, 32, 11, 0xff, 48, 48 );
+  TEST_VVCFG( 270, 32, 11, 0xff, 49, 48 );
+  TEST_VVCFG( 271, 32, 11, 0xff, 47, 47 );
+
+  TEST_VVCFG( 272, 32, 12, 0x07, 15, 15 );
+  TEST_VVCFG( 273, 32, 12, 0x07, 16, 15 );
+  TEST_VVCFG( 274, 32, 12, 0x07, 14, 14 );
+
+  TEST_VVCFG( 275, 32, 12, 0xff, 40, 40 );
+  TEST_VVCFG( 276, 32, 12, 0xff, 41, 40 );
+  TEST_VVCFG( 277, 32, 12, 0xff, 39, 39 );
+
+  TEST_VVCFG( 278, 32, 13, 0x07, 15, 15 );
+  TEST_VVCFG( 279, 32, 13, 0x07, 16, 15 );
+  TEST_VVCFG( 280, 32, 13, 0x07, 14, 14 );
+
+  TEST_VVCFG( 281, 32, 13, 0xff, 40, 40 );
+  TEST_VVCFG( 282, 32, 13, 0xff, 41, 40 );
+  TEST_VVCFG( 283, 32, 13, 0xff, 39, 39 );
+
+  TEST_VVCFG( 284, 32, 14, 0x07, 15, 15 );
+  TEST_VVCFG( 285, 32, 14, 0x07, 16, 15 );
+  TEST_VVCFG( 286, 32, 14, 0x07, 14, 14 );
+
+  TEST_VVCFG( 287, 32, 14, 0xff, 40, 40 );
+  TEST_VVCFG( 288, 32, 14, 0xff, 41, 40 );
+  TEST_VVCFG( 289, 32, 14, 0xff, 39, 39 );
+
+  TEST_VVCFG( 290, 32, 15, 0x07, 15, 15 );
+  TEST_VVCFG( 291, 32, 15, 0x07, 16, 15 );
+  TEST_VVCFG( 292, 32, 15, 0x07, 14, 14 );
+
+  TEST_VVCFG( 293, 32, 15, 0xff, 40, 40 );
+  TEST_VVCFG( 294, 32, 15, 0xff, 41, 40 );
+  TEST_VVCFG( 295, 32, 15, 0xff, 39, 39 );
+
+  TEST_VVCFG( 296, 32, 16, 0x07, 15, 15 );
+  TEST_VVCFG( 297, 32, 16, 0x07, 16, 15 );
+  TEST_VVCFG( 298, 32, 16, 0x07, 14, 14 );
+
+  TEST_VVCFG( 299, 32, 16, 0xff, 40, 40 );
+  TEST_VVCFG( 300, 32, 16, 0xff, 41, 40 );
+  TEST_VVCFG( 301, 32, 16, 0xff, 39, 39 );
+
+  TEST_VVCFG( 302, 32, 17, 0x07, 15, 15 );
+  TEST_VVCFG( 303, 32, 17, 0x07, 16, 15 );
+  TEST_VVCFG( 304, 32, 17, 0x07, 14, 14 );
+
+  TEST_VVCFG( 305, 32, 17, 0xff, 40, 40 );
+  TEST_VVCFG( 306, 32, 17, 0xff, 41, 40 );
+  TEST_VVCFG( 307, 32, 17, 0xff, 39, 39 );
+
+  TEST_VVCFG( 308, 32, 18, 0x07, 15, 15 );
+  TEST_VVCFG( 309, 32, 18, 0x07, 16, 15 );
+  TEST_VVCFG( 310, 32, 18, 0x07, 14, 14 );
+
+  TEST_VVCFG( 311, 32, 18, 0xff, 40, 40 );
+  TEST_VVCFG( 312, 32, 18, 0xff, 41, 40 );
+  TEST_VVCFG( 313, 32, 18, 0xff, 39, 39 );
+
+  TEST_VVCFG( 314, 32, 19, 0x07, 15, 15 );
+  TEST_VVCFG( 315, 32, 19, 0x07, 16, 15 );
+  TEST_VVCFG( 316, 32, 19, 0x07, 14, 14 );
+
+  TEST_VVCFG( 317, 32, 19, 0xff, 40, 40 );
+  TEST_VVCFG( 318, 32, 19, 0xff, 41, 40 );
+  TEST_VVCFG( 319, 32, 19, 0xff, 39, 39 );
+
+  TEST_VVCFG( 320, 32, 20, 0x07, 15, 15 );
+  TEST_VVCFG( 321, 32, 20, 0x07, 16, 15 );
+  TEST_VVCFG( 322, 32, 20, 0x07, 14, 14 );
+
+  TEST_VVCFG( 323, 32, 20, 0xff, 40, 40 );
+  TEST_VVCFG( 324, 32, 20, 0xff, 41, 40 );
+  TEST_VVCFG( 325, 32, 20, 0xff, 39, 39 );
+
+  TEST_VVCFG( 326, 32, 21, 0x07, 12, 12 );
+  TEST_VVCFG( 327, 32, 21, 0x07, 13, 12 );
+  TEST_VVCFG( 328, 32, 21, 0x07, 11, 11 );
+
+  TEST_VVCFG( 329, 32, 21, 0xff, 32, 32 );
+  TEST_VVCFG( 330, 32, 21, 0xff, 33, 32 );
+  TEST_VVCFG( 331, 32, 21, 0xff, 31, 31 );
+
+  TEST_VVCFG( 332, 32, 22, 0x07, 12, 12 );
+  TEST_VVCFG( 333, 32, 22, 0x07, 13, 12 );
+  TEST_VVCFG( 334, 32, 22, 0x07, 11, 11 );
+
+  TEST_VVCFG( 335, 32, 22, 0xff, 32, 32 );
+  TEST_VVCFG( 336, 32, 22, 0xff, 33, 32 );
+  TEST_VVCFG( 337, 32, 22, 0xff, 31, 31 );
+
+  TEST_VVCFG( 338, 32, 23, 0x07, 12, 12 );
+  TEST_VVCFG( 339, 32, 23, 0x07, 13, 12 );
+  TEST_VVCFG( 340, 32, 23, 0x07, 11, 11 );
+
+  TEST_VVCFG( 341, 32, 23, 0xff, 32, 32 );
+  TEST_VVCFG( 342, 32, 23, 0xff, 33, 32 );
+  TEST_VVCFG( 343, 32, 23, 0xff, 31, 31 );
+
+  TEST_VVCFG( 344, 32, 24, 0x07, 12, 12 );
+  TEST_VVCFG( 345, 32, 24, 0x07, 13, 12 );
+  TEST_VVCFG( 346, 32, 24, 0x07, 11, 11 );
+
+  TEST_VVCFG( 347, 32, 24, 0xff, 32, 32 );
+  TEST_VVCFG( 348, 32, 24, 0xff, 33, 32 );
+  TEST_VVCFG( 349, 32, 24, 0xff, 31, 31 );
+
+  TEST_VVCFG( 350, 32, 25, 0x07, 12, 12 );
+  TEST_VVCFG( 351, 32, 25, 0x07, 13, 12 );
+  TEST_VVCFG( 352, 32, 25, 0x07, 11, 11 );
+
+  TEST_VVCFG( 353, 32, 25, 0xff, 32, 32 );
+  TEST_VVCFG( 354, 32, 25, 0xff, 33, 32 );
+  TEST_VVCFG( 355, 32, 25, 0xff, 31, 31 );
+
+  TEST_VVCFG( 356, 32, 26, 0x07, 12, 12 );
+  TEST_VVCFG( 357, 32, 26, 0x07, 13, 12 );
+  TEST_VVCFG( 358, 32, 26, 0x07, 11, 11 );
+
+  TEST_VVCFG( 359, 32, 26, 0xff, 32, 32 );
+  TEST_VVCFG( 360, 32, 26, 0xff, 33, 32 );
+  TEST_VVCFG( 361, 32, 26, 0xff, 31, 31 );
+
+  TEST_VVCFG( 362, 32, 27, 0x07, 12, 12 );
+  TEST_VVCFG( 363, 32, 27, 0x07, 13, 12 );
+  TEST_VVCFG( 364, 32, 27, 0x07, 11, 11 );
+
+  TEST_VVCFG( 365, 32, 27, 0xff, 32, 32 );
+  TEST_VVCFG( 366, 32, 27, 0xff, 33, 32 );
+  TEST_VVCFG( 367, 32, 27, 0xff, 31, 31 );
+
+  TEST_VVCFG( 368, 32, 28, 0x07, 12, 12 );
+  TEST_VVCFG( 369, 32, 28, 0x07, 13, 12 );
+  TEST_VVCFG( 370, 32, 28, 0x07, 11, 11 );
+
+  TEST_VVCFG( 371, 32, 28, 0xff, 32, 32 );
+  TEST_VVCFG( 372, 32, 28, 0xff, 33, 32 );
+  TEST_VVCFG( 373, 32, 28, 0xff, 31, 31 );
+
+  TEST_VVCFG( 374, 32, 29, 0x07, 12, 12 );
+  TEST_VVCFG( 375, 32, 29, 0x07, 13, 12 );
+  TEST_VVCFG( 376, 32, 29, 0x07, 11, 11 );
+
+  TEST_VVCFG( 377, 32, 29, 0xff, 32, 32 );
+  TEST_VVCFG( 378, 32, 29, 0xff, 33, 32 );
+  TEST_VVCFG( 379, 32, 29, 0xff, 31, 31 );
+
+  TEST_VVCFG( 380, 32, 30, 0x07, 12, 12 );
+  TEST_VVCFG( 381, 32, 30, 0x07, 13, 12 );
+  TEST_VVCFG( 382, 32, 30, 0x07, 11, 11 );
+
+  TEST_VVCFG( 383, 32, 30, 0xff, 32, 32 );
+  TEST_VVCFG( 384, 32, 30, 0xff, 33, 32 );
+  TEST_VVCFG( 385, 32, 30, 0xff, 31, 31 );
+
+  TEST_VVCFG( 386, 32, 31, 0x07, 12, 12 );
+  TEST_VVCFG( 387, 32, 31, 0x07, 13, 12 );
+  TEST_VVCFG( 388, 32, 31, 0x07, 11, 11 );
+
+  TEST_VVCFG( 389, 32, 31, 0xff, 32, 32 );
+  TEST_VVCFG( 390, 32, 31, 0xff, 33, 32 );
+  TEST_VVCFG( 391, 32, 31, 0xff, 31, 31 );
+
+  TEST_VVCFG( 392, 32, 32, 0x07, 12, 12 );
+  TEST_VVCFG( 393, 32, 32, 0x07, 13, 12 );
+  TEST_VVCFG( 394, 32, 32, 0x07, 11, 11 );
+
+  TEST_VVCFG( 395, 32, 32, 0xff, 32, 32 );
+  TEST_VVCFG( 396, 32, 32, 0xff, 33, 32 );
+  TEST_VVCFG( 397, 32, 32, 0xff, 31, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvcfgivl.S b/isa/rv64uv/vvcfgivl.S
new file mode 100644 (file)
index 0000000..83e4c1c
--- /dev/null
@@ -0,0 +1,559 @@
+#*****************************************************************************
+# vvcfgivl.S
+#-----------------------------------------------------------------------------
+#
+# Test vvcfgivl instruction.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  #-------------------------------------------------------------
+  # Arithmetic tests
+  #-------------------------------------------------------------
+
+  TEST_VVCFGIVL( 2, 0, 0, 0x07, 768, 768 );
+  TEST_VVCFGIVL( 3, 0, 0, 0x07, 769, 768 );
+  TEST_VVCFGIVL( 4, 0, 0, 0x07, 767, 767 );
+
+  TEST_VVCFGIVL( 5, 0, 0, 0xff, 2048, 2048 );
+  TEST_VVCFGIVL( 6, 0, 0, 0xff, 2049, 2048 );
+  TEST_VVCFGIVL( 7, 0, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFGIVL( 8, 1, 0, 0x07, 768, 768 );
+  TEST_VVCFGIVL( 9, 1, 0, 0x07, 769, 768 );
+  TEST_VVCFGIVL( 10, 1, 0, 0x07, 767, 767 );
+
+  TEST_VVCFGIVL( 11, 1, 0, 0xff, 2048, 2048 );
+  TEST_VVCFGIVL( 12, 1, 0, 0xff, 2049, 2048 );
+  TEST_VVCFGIVL( 13, 1, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFGIVL( 14, 2, 0, 0x07, 768, 768 );
+  TEST_VVCFGIVL( 15, 2, 0, 0x07, 769, 768 );
+  TEST_VVCFGIVL( 16, 2, 0, 0x07, 767, 767 );
+
+  TEST_VVCFGIVL( 17, 2, 0, 0xff, 2048, 2048 );
+  TEST_VVCFGIVL( 18, 2, 0, 0xff, 2049, 2048 );
+  TEST_VVCFGIVL( 19, 2, 0, 0xff, 2047, 2047 );
+
+  TEST_VVCFGIVL( 20, 3, 0, 0x07, 384, 384 );
+  TEST_VVCFGIVL( 21, 3, 0, 0x07, 385, 384 );
+  TEST_VVCFGIVL( 22, 3, 0, 0x07, 383, 383 );
+
+  TEST_VVCFGIVL( 23, 3, 0, 0xff, 1024, 1024 );
+  TEST_VVCFGIVL( 24, 3, 0, 0xff, 1025, 1024 );
+  TEST_VVCFGIVL( 25, 3, 0, 0xff, 1023, 1023 );
+
+  TEST_VVCFGIVL( 26, 4, 0, 0x07, 255, 255 );
+  TEST_VVCFGIVL( 27, 4, 0, 0x07, 256, 255 );
+  TEST_VVCFGIVL( 28, 4, 0, 0x07, 254, 254 );
+
+  TEST_VVCFGIVL( 29, 4, 0, 0xff, 680, 680 );
+  TEST_VVCFGIVL( 30, 4, 0, 0xff, 681, 680 );
+  TEST_VVCFGIVL( 31, 4, 0, 0xff, 679, 679 );
+
+  TEST_VVCFGIVL( 32, 5, 0, 0x07, 192, 192 );
+  TEST_VVCFGIVL( 33, 5, 0, 0x07, 193, 192 );
+  TEST_VVCFGIVL( 34, 5, 0, 0x07, 191, 191 );
+
+  TEST_VVCFGIVL( 35, 5, 0, 0xff, 512, 512 );
+  TEST_VVCFGIVL( 36, 5, 0, 0xff, 513, 512 );
+  TEST_VVCFGIVL( 37, 5, 0, 0xff, 511, 511 );
+
+  TEST_VVCFGIVL( 38, 6, 0, 0x07, 153, 153 );
+  TEST_VVCFGIVL( 39, 6, 0, 0x07, 154, 153 );
+  TEST_VVCFGIVL( 40, 6, 0, 0x07, 152, 152 );
+
+  TEST_VVCFGIVL( 41, 6, 0, 0xff, 408, 408 );
+  TEST_VVCFGIVL( 42, 6, 0, 0xff, 409, 408 );
+  TEST_VVCFGIVL( 43, 6, 0, 0xff, 407, 407 );
+
+  TEST_VVCFGIVL( 44, 7, 0, 0x07, 126, 126 );
+  TEST_VVCFGIVL( 45, 7, 0, 0x07, 127, 126 );
+  TEST_VVCFGIVL( 46, 7, 0, 0x07, 125, 125 );
+
+  TEST_VVCFGIVL( 47, 7, 0, 0xff, 336, 336 );
+  TEST_VVCFGIVL( 48, 7, 0, 0xff, 337, 336 );
+  TEST_VVCFGIVL( 49, 7, 0, 0xff, 335, 335 );
+
+  TEST_VVCFGIVL( 50, 8, 0, 0x07, 108, 108 );
+  TEST_VVCFGIVL( 51, 8, 0, 0x07, 109, 108 );
+  TEST_VVCFGIVL( 52, 8, 0, 0x07, 107, 107 );
+
+  TEST_VVCFGIVL( 53, 8, 0, 0xff, 288, 288 );
+  TEST_VVCFGIVL( 54, 8, 0, 0xff, 289, 288 );
+  TEST_VVCFGIVL( 55, 8, 0, 0xff, 287, 287 );
+
+  TEST_VVCFGIVL( 56, 9, 0, 0x07, 96, 96 );
+  TEST_VVCFGIVL( 57, 9, 0, 0x07, 97, 96 );
+  TEST_VVCFGIVL( 58, 9, 0, 0x07, 95, 95 );
+
+  TEST_VVCFGIVL( 59, 9, 0, 0xff, 256, 256 );
+  TEST_VVCFGIVL( 60, 9, 0, 0xff, 257, 256 );
+  TEST_VVCFGIVL( 61, 9, 0, 0xff, 255, 255 );
+
+  TEST_VVCFGIVL( 62, 10, 0, 0x07, 84, 84 );
+  TEST_VVCFGIVL( 63, 10, 0, 0x07, 85, 84 );
+  TEST_VVCFGIVL( 64, 10, 0, 0x07, 83, 83 );
+
+  TEST_VVCFGIVL( 65, 10, 0, 0xff, 224, 224 );
+  TEST_VVCFGIVL( 66, 10, 0, 0xff, 225, 224 );
+  TEST_VVCFGIVL( 67, 10, 0, 0xff, 223, 223 );
+
+  TEST_VVCFGIVL( 68, 11, 0, 0x07, 75, 75 );
+  TEST_VVCFGIVL( 69, 11, 0, 0x07, 76, 75 );
+  TEST_VVCFGIVL( 70, 11, 0, 0x07, 74, 74 );
+
+  TEST_VVCFGIVL( 71, 11, 0, 0xff, 200, 200 );
+  TEST_VVCFGIVL( 72, 11, 0, 0xff, 201, 200 );
+  TEST_VVCFGIVL( 73, 11, 0, 0xff, 199, 199 );
+
+  TEST_VVCFGIVL( 74, 12, 0, 0x07, 69, 69 );
+  TEST_VVCFGIVL( 75, 12, 0, 0x07, 70, 69 );
+  TEST_VVCFGIVL( 76, 12, 0, 0x07, 68, 68 );
+
+  TEST_VVCFGIVL( 77, 12, 0, 0xff, 184, 184 );
+  TEST_VVCFGIVL( 78, 12, 0, 0xff, 185, 184 );
+  TEST_VVCFGIVL( 79, 12, 0, 0xff, 183, 183 );
+
+  TEST_VVCFGIVL( 80, 13, 0, 0x07, 63, 63 );
+  TEST_VVCFGIVL( 81, 13, 0, 0x07, 64, 63 );
+  TEST_VVCFGIVL( 82, 13, 0, 0x07, 62, 62 );
+
+  TEST_VVCFGIVL( 83, 13, 0, 0xff, 168, 168 );
+  TEST_VVCFGIVL( 84, 13, 0, 0xff, 169, 168 );
+  TEST_VVCFGIVL( 85, 13, 0, 0xff, 167, 167 );
+
+  TEST_VVCFGIVL( 86, 14, 0, 0x07, 57, 57 );
+  TEST_VVCFGIVL( 87, 14, 0, 0x07, 58, 57 );
+  TEST_VVCFGIVL( 88, 14, 0, 0x07, 56, 56 );
+
+  TEST_VVCFGIVL( 89, 14, 0, 0xff, 152, 152 );
+  TEST_VVCFGIVL( 90, 14, 0, 0xff, 153, 152 );
+  TEST_VVCFGIVL( 91, 14, 0, 0xff, 151, 151 );
+
+  TEST_VVCFGIVL( 92, 15, 0, 0x07, 54, 54 );
+  TEST_VVCFGIVL( 93, 15, 0, 0x07, 55, 54 );
+  TEST_VVCFGIVL( 94, 15, 0, 0x07, 53, 53 );
+
+  TEST_VVCFGIVL( 95, 15, 0, 0xff, 144, 144 );
+  TEST_VVCFGIVL( 96, 15, 0, 0xff, 145, 144 );
+  TEST_VVCFGIVL( 97, 15, 0, 0xff, 143, 143 );
+
+  TEST_VVCFGIVL( 98, 16, 0, 0x07, 51, 51 );
+  TEST_VVCFGIVL( 99, 16, 0, 0x07, 52, 51 );
+  TEST_VVCFGIVL( 100, 16, 0, 0x07, 50, 50 );
+
+  TEST_VVCFGIVL( 101, 16, 0, 0xff, 136, 136 );
+  TEST_VVCFGIVL( 102, 16, 0, 0xff, 137, 136 );
+  TEST_VVCFGIVL( 103, 16, 0, 0xff, 135, 135 );
+
+  TEST_VVCFGIVL( 104, 17, 0, 0x07, 48, 48 );
+  TEST_VVCFGIVL( 105, 17, 0, 0x07, 49, 48 );
+  TEST_VVCFGIVL( 106, 17, 0, 0x07, 47, 47 );
+
+  TEST_VVCFGIVL( 107, 17, 0, 0xff, 128, 128 );
+  TEST_VVCFGIVL( 108, 17, 0, 0xff, 129, 128 );
+  TEST_VVCFGIVL( 109, 17, 0, 0xff, 127, 127 );
+
+  TEST_VVCFGIVL( 110, 18, 0, 0x07, 45, 45 );
+  TEST_VVCFGIVL( 111, 18, 0, 0x07, 46, 45 );
+  TEST_VVCFGIVL( 112, 18, 0, 0x07, 44, 44 );
+
+  TEST_VVCFGIVL( 113, 18, 0, 0xff, 120, 120 );
+  TEST_VVCFGIVL( 114, 18, 0, 0xff, 121, 120 );
+  TEST_VVCFGIVL( 115, 18, 0, 0xff, 119, 119 );
+
+  TEST_VVCFGIVL( 116, 19, 0, 0x07, 42, 42 );
+  TEST_VVCFGIVL( 117, 19, 0, 0x07, 43, 42 );
+  TEST_VVCFGIVL( 118, 19, 0, 0x07, 41, 41 );
+
+  TEST_VVCFGIVL( 119, 19, 0, 0xff, 112, 112 );
+  TEST_VVCFGIVL( 120, 19, 0, 0xff, 113, 112 );
+  TEST_VVCFGIVL( 121, 19, 0, 0xff, 111, 111 );
+
+  TEST_VVCFGIVL( 122, 20, 0, 0x07, 39, 39 );
+  TEST_VVCFGIVL( 123, 20, 0, 0x07, 40, 39 );
+  TEST_VVCFGIVL( 124, 20, 0, 0x07, 38, 38 );
+
+  TEST_VVCFGIVL( 125, 20, 0, 0xff, 104, 104 );
+  TEST_VVCFGIVL( 126, 20, 0, 0xff, 105, 104 );
+  TEST_VVCFGIVL( 127, 20, 0, 0xff, 103, 103 );
+
+  TEST_VVCFGIVL( 128, 21, 0, 0x07, 36, 36 );
+  TEST_VVCFGIVL( 129, 21, 0, 0x07, 37, 36 );
+  TEST_VVCFGIVL( 130, 21, 0, 0x07, 35, 35 );
+
+  TEST_VVCFGIVL( 131, 21, 0, 0xff, 96, 96 );
+  TEST_VVCFGIVL( 132, 21, 0, 0xff, 97, 96 );
+  TEST_VVCFGIVL( 133, 21, 0, 0xff, 95, 95 );
+
+  TEST_VVCFGIVL( 134, 22, 0, 0x07, 36, 36 );
+  TEST_VVCFGIVL( 135, 22, 0, 0x07, 37, 36 );
+  TEST_VVCFGIVL( 136, 22, 0, 0x07, 35, 35 );
+
+  TEST_VVCFGIVL( 137, 22, 0, 0xff, 96, 96 );
+  TEST_VVCFGIVL( 138, 22, 0, 0xff, 97, 96 );
+  TEST_VVCFGIVL( 139, 22, 0, 0xff, 95, 95 );
+
+  TEST_VVCFGIVL( 140, 23, 0, 0x07, 33, 33 );
+  TEST_VVCFGIVL( 141, 23, 0, 0x07, 34, 33 );
+  TEST_VVCFGIVL( 142, 23, 0, 0x07, 32, 32 );
+
+  TEST_VVCFGIVL( 143, 23, 0, 0xff, 88, 88 );
+  TEST_VVCFGIVL( 144, 23, 0, 0xff, 89, 88 );
+  TEST_VVCFGIVL( 145, 23, 0, 0xff, 87, 87 );
+
+  TEST_VVCFGIVL( 146, 24, 0, 0x07, 33, 33 );
+  TEST_VVCFGIVL( 147, 24, 0, 0x07, 34, 33 );
+  TEST_VVCFGIVL( 148, 24, 0, 0x07, 32, 32 );
+
+  TEST_VVCFGIVL( 149, 24, 0, 0xff, 88, 88 );
+  TEST_VVCFGIVL( 150, 24, 0, 0xff, 89, 88 );
+  TEST_VVCFGIVL( 151, 24, 0, 0xff, 87, 87 );
+
+  TEST_VVCFGIVL( 152, 25, 0, 0x07, 30, 30 );
+  TEST_VVCFGIVL( 153, 25, 0, 0x07, 31, 30 );
+  TEST_VVCFGIVL( 154, 25, 0, 0x07, 29, 29 );
+
+  TEST_VVCFGIVL( 155, 25, 0, 0xff, 80, 80 );
+  TEST_VVCFGIVL( 156, 25, 0, 0xff, 81, 80 );
+  TEST_VVCFGIVL( 157, 25, 0, 0xff, 79, 79 );
+
+  TEST_VVCFGIVL( 158, 26, 0, 0x07, 30, 30 );
+  TEST_VVCFGIVL( 159, 26, 0, 0x07, 31, 30 );
+  TEST_VVCFGIVL( 160, 26, 0, 0x07, 29, 29 );
+
+  TEST_VVCFGIVL( 161, 26, 0, 0xff, 80, 80 );
+  TEST_VVCFGIVL( 162, 26, 0, 0xff, 81, 80 );
+  TEST_VVCFGIVL( 163, 26, 0, 0xff, 79, 79 );
+
+  TEST_VVCFGIVL( 164, 27, 0, 0x07, 27, 27 );
+  TEST_VVCFGIVL( 165, 27, 0, 0x07, 28, 27 );
+  TEST_VVCFGIVL( 166, 27, 0, 0x07, 26, 26 );
+
+  TEST_VVCFGIVL( 167, 27, 0, 0xff, 72, 72 );
+  TEST_VVCFGIVL( 168, 27, 0, 0xff, 73, 72 );
+  TEST_VVCFGIVL( 169, 27, 0, 0xff, 71, 71 );
+
+  TEST_VVCFGIVL( 170, 28, 0, 0x07, 27, 27 );
+  TEST_VVCFGIVL( 171, 28, 0, 0x07, 28, 27 );
+  TEST_VVCFGIVL( 172, 28, 0, 0x07, 26, 26 );
+
+  TEST_VVCFGIVL( 173, 28, 0, 0xff, 72, 72 );
+  TEST_VVCFGIVL( 174, 28, 0, 0xff, 73, 72 );
+  TEST_VVCFGIVL( 175, 28, 0, 0xff, 71, 71 );
+
+  TEST_VVCFGIVL( 176, 29, 0, 0x07, 27, 27 );
+  TEST_VVCFGIVL( 177, 29, 0, 0x07, 28, 27 );
+  TEST_VVCFGIVL( 178, 29, 0, 0x07, 26, 26 );
+
+  TEST_VVCFGIVL( 179, 29, 0, 0xff, 72, 72 );
+  TEST_VVCFGIVL( 180, 29, 0, 0xff, 73, 72 );
+  TEST_VVCFGIVL( 181, 29, 0, 0xff, 71, 71 );
+
+  TEST_VVCFGIVL( 182, 30, 0, 0x07, 24, 24 );
+  TEST_VVCFGIVL( 183, 30, 0, 0x07, 25, 24 );
+  TEST_VVCFGIVL( 184, 30, 0, 0x07, 23, 23 );
+
+  TEST_VVCFGIVL( 185, 30, 0, 0xff, 64, 64 );
+  TEST_VVCFGIVL( 186, 30, 0, 0xff, 65, 64 );
+  TEST_VVCFGIVL( 187, 30, 0, 0xff, 63, 63 );
+
+  TEST_VVCFGIVL( 188, 31, 0, 0x07, 24, 24 );
+  TEST_VVCFGIVL( 189, 31, 0, 0x07, 25, 24 );
+  TEST_VVCFGIVL( 190, 31, 0, 0x07, 23, 23 );
+
+  TEST_VVCFGIVL( 191, 31, 0, 0xff, 64, 64 );
+  TEST_VVCFGIVL( 192, 31, 0, 0xff, 65, 64 );
+  TEST_VVCFGIVL( 193, 31, 0, 0xff, 63, 63 );
+
+  TEST_VVCFGIVL( 194, 32, 0, 0x07, 24, 24 );
+  TEST_VVCFGIVL( 195, 32, 0, 0x07, 25, 24 );
+  TEST_VVCFGIVL( 196, 32, 0, 0x07, 23, 23 );
+
+  TEST_VVCFGIVL( 197, 32, 0, 0xff, 64, 64 );
+  TEST_VVCFGIVL( 198, 32, 0, 0xff, 65, 64 );
+  TEST_VVCFGIVL( 199, 32, 0, 0xff, 63, 63 );
+
+  TEST_VVCFGIVL( 200, 32, 0, 0x07, 24, 24 );
+  TEST_VVCFGIVL( 201, 32, 0, 0x07, 25, 24 );
+  TEST_VVCFGIVL( 202, 32, 0, 0x07, 23, 23 );
+
+  TEST_VVCFGIVL( 203, 32, 0, 0xff, 64, 64 );
+  TEST_VVCFGIVL( 204, 32, 0, 0xff, 65, 64 );
+  TEST_VVCFGIVL( 205, 32, 0, 0xff, 63, 63 );
+
+  TEST_VVCFGIVL( 206, 32, 1, 0x07, 24, 24 );
+  TEST_VVCFGIVL( 207, 32, 1, 0x07, 25, 24 );
+  TEST_VVCFGIVL( 208, 32, 1, 0x07, 23, 23 );
+
+  TEST_VVCFGIVL( 209, 32, 1, 0xff, 64, 64 );
+  TEST_VVCFGIVL( 210, 32, 1, 0xff, 65, 64 );
+  TEST_VVCFGIVL( 211, 32, 1, 0xff, 63, 63 );
+
+  TEST_VVCFGIVL( 212, 32, 2, 0x07, 21, 21 );
+  TEST_VVCFGIVL( 213, 32, 2, 0x07, 22, 21 );
+  TEST_VVCFGIVL( 214, 32, 2, 0x07, 20, 20 );
+
+  TEST_VVCFGIVL( 215, 32, 2, 0xff, 56, 56 );
+  TEST_VVCFGIVL( 216, 32, 2, 0xff, 57, 56 );
+  TEST_VVCFGIVL( 217, 32, 2, 0xff, 55, 55 );
+
+  TEST_VVCFGIVL( 218, 32, 3, 0x07, 21, 21 );
+  TEST_VVCFGIVL( 219, 32, 3, 0x07, 22, 21 );
+  TEST_VVCFGIVL( 220, 32, 3, 0x07, 20, 20 );
+
+  TEST_VVCFGIVL( 221, 32, 3, 0xff, 56, 56 );
+  TEST_VVCFGIVL( 222, 32, 3, 0xff, 57, 56 );
+  TEST_VVCFGIVL( 223, 32, 3, 0xff, 55, 55 );
+
+  TEST_VVCFGIVL( 224, 32, 4, 0x07, 21, 21 );
+  TEST_VVCFGIVL( 225, 32, 4, 0x07, 22, 21 );
+  TEST_VVCFGIVL( 226, 32, 4, 0x07, 20, 20 );
+
+  TEST_VVCFGIVL( 227, 32, 4, 0xff, 56, 56 );
+  TEST_VVCFGIVL( 228, 32, 4, 0xff, 57, 56 );
+  TEST_VVCFGIVL( 229, 32, 4, 0xff, 55, 55 );
+
+  TEST_VVCFGIVL( 230, 32, 5, 0x07, 21, 21 );
+  TEST_VVCFGIVL( 231, 32, 5, 0x07, 22, 21 );
+  TEST_VVCFGIVL( 232, 32, 5, 0x07, 20, 20 );
+
+  TEST_VVCFGIVL( 233, 32, 5, 0xff, 56, 56 );
+  TEST_VVCFGIVL( 234, 32, 5, 0xff, 57, 56 );
+  TEST_VVCFGIVL( 235, 32, 5, 0xff, 55, 55 );
+
+  TEST_VVCFGIVL( 236, 32, 6, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 237, 32, 6, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 238, 32, 6, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 239, 32, 6, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 240, 32, 6, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 241, 32, 6, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 242, 32, 7, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 243, 32, 7, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 244, 32, 7, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 245, 32, 7, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 246, 32, 7, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 247, 32, 7, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 248, 32, 8, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 249, 32, 8, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 250, 32, 8, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 251, 32, 8, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 252, 32, 8, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 253, 32, 8, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 254, 32, 9, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 255, 32, 9, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 256, 32, 9, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 257, 32, 9, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 258, 32, 9, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 259, 32, 9, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 260, 32, 10, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 261, 32, 10, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 262, 32, 10, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 263, 32, 10, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 264, 32, 10, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 265, 32, 10, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 266, 32, 11, 0x07, 18, 18 );
+  TEST_VVCFGIVL( 267, 32, 11, 0x07, 19, 18 );
+  TEST_VVCFGIVL( 268, 32, 11, 0x07, 17, 17 );
+
+  TEST_VVCFGIVL( 269, 32, 11, 0xff, 48, 48 );
+  TEST_VVCFGIVL( 270, 32, 11, 0xff, 49, 48 );
+  TEST_VVCFGIVL( 271, 32, 11, 0xff, 47, 47 );
+
+  TEST_VVCFGIVL( 272, 32, 12, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 273, 32, 12, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 274, 32, 12, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 275, 32, 12, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 276, 32, 12, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 277, 32, 12, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 278, 32, 13, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 279, 32, 13, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 280, 32, 13, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 281, 32, 13, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 282, 32, 13, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 283, 32, 13, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 284, 32, 14, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 285, 32, 14, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 286, 32, 14, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 287, 32, 14, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 288, 32, 14, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 289, 32, 14, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 290, 32, 15, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 291, 32, 15, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 292, 32, 15, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 293, 32, 15, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 294, 32, 15, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 295, 32, 15, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 296, 32, 16, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 297, 32, 16, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 298, 32, 16, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 299, 32, 16, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 300, 32, 16, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 301, 32, 16, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 302, 32, 17, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 303, 32, 17, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 304, 32, 17, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 305, 32, 17, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 306, 32, 17, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 307, 32, 17, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 308, 32, 18, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 309, 32, 18, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 310, 32, 18, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 311, 32, 18, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 312, 32, 18, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 313, 32, 18, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 314, 32, 19, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 315, 32, 19, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 316, 32, 19, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 317, 32, 19, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 318, 32, 19, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 319, 32, 19, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 320, 32, 20, 0x07, 15, 15 );
+  TEST_VVCFGIVL( 321, 32, 20, 0x07, 16, 15 );
+  TEST_VVCFGIVL( 322, 32, 20, 0x07, 14, 14 );
+
+  TEST_VVCFGIVL( 323, 32, 20, 0xff, 40, 40 );
+  TEST_VVCFGIVL( 324, 32, 20, 0xff, 41, 40 );
+  TEST_VVCFGIVL( 325, 32, 20, 0xff, 39, 39 );
+
+  TEST_VVCFGIVL( 326, 32, 21, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 327, 32, 21, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 328, 32, 21, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 329, 32, 21, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 330, 32, 21, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 331, 32, 21, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 332, 32, 22, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 333, 32, 22, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 334, 32, 22, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 335, 32, 22, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 336, 32, 22, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 337, 32, 22, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 338, 32, 23, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 339, 32, 23, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 340, 32, 23, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 341, 32, 23, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 342, 32, 23, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 343, 32, 23, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 344, 32, 24, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 345, 32, 24, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 346, 32, 24, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 347, 32, 24, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 348, 32, 24, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 349, 32, 24, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 350, 32, 25, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 351, 32, 25, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 352, 32, 25, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 353, 32, 25, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 354, 32, 25, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 355, 32, 25, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 356, 32, 26, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 357, 32, 26, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 358, 32, 26, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 359, 32, 26, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 360, 32, 26, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 361, 32, 26, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 362, 32, 27, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 363, 32, 27, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 364, 32, 27, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 365, 32, 27, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 366, 32, 27, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 367, 32, 27, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 368, 32, 28, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 369, 32, 28, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 370, 32, 28, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 371, 32, 28, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 372, 32, 28, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 373, 32, 28, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 374, 32, 29, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 375, 32, 29, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 376, 32, 29, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 377, 32, 29, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 378, 32, 29, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 379, 32, 29, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 380, 32, 30, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 381, 32, 30, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 382, 32, 30, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 383, 32, 30, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 384, 32, 30, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 385, 32, 30, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 386, 32, 31, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 387, 32, 31, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 388, 32, 31, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 389, 32, 31, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 390, 32, 31, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 391, 32, 31, 0xff, 31, 31 );
+
+  TEST_VVCFGIVL( 392, 32, 32, 0x07, 12, 12 );
+  TEST_VVCFGIVL( 393, 32, 32, 0x07, 13, 12 );
+  TEST_VVCFGIVL( 394, 32, 32, 0x07, 11, 11 );
+
+  TEST_VVCFGIVL( 395, 32, 32, 0xff, 32, 32 );
+  TEST_VVCFGIVL( 396, 32, 32, 0xff, 33, 32 );
+  TEST_VVCFGIVL( 397, 32, 32, 0xff, 31, 31 );
+
+  #-------------------------------------------------------------
+  # Source/Destination tests
+  #-------------------------------------------------------------
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/vvmul_d.S b/isa/rv64uv/vvmul_d.S
new file mode 100644 (file)
index 0000000..9748fa4
--- /dev/null
@@ -0,0 +1,73 @@
+#*****************************************************************************
+# vvmul_d.S
+#-----------------------------------------------------------------------------
+#
+# Test vvmul d.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  li a3,4
+  vvcfgivl a3,a3,32,0
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode)
+  vf %lo(vtcode)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+  ld a1,0(a5)
+  li a2,4
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li a2,6
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li a2,6
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li a2,4
+  li x28,5
+  bne a1,a2,fail
+  j pass
+
+vtcode:
+  mul x2,x2,x3
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END
diff --git a/isa/rv64uv/wakeup.S b/isa/rv64uv/wakeup.S
new file mode 100644 (file)
index 0000000..62cc6c8
--- /dev/null
@@ -0,0 +1,159 @@
+#*****************************************************************************
+# wakeup.S
+#-----------------------------------------------------------------------------
+#
+# Test wakeup.
+#
+
+#include "riscv_test.h"
+#include "test_macros.h"
+
+RVTEST_RV64U
+RVTEST_CODE_BEGIN
+
+  # make sure these don't choke at the beginning
+  fence.v.l
+  fence.v.l
+  fence.v.g
+  fence.v.g
+
+  # this shouldn't go through since app vl is zero
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,0xdeadbeefcafebabe
+  li x28,2
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,3
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,4
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,5
+  bne a1,a2,fail
+
+  # check default hw vector length, which is 32
+  li a3, 32
+  vsetvl a3, a3
+  li a0, 32
+  li x28, 6
+  bne a3, a0, fail
+
+  li a3, 33
+  vsetvl a3, a3
+  li a0, 32
+  li x28, 7
+  bne a3, a0, fail
+
+  li a3, 31
+  vsetvl a3, a3
+  li a0, 31
+  li x28, 8
+  bne a3, a0, fail
+
+  # now do some vector stuff without vvcfgivl
+  vsetvl x0, x0
+
+  li a3, 4
+  la a4,src1
+  la a5,src2
+  vsetvl a3, a3
+  vld vx2,a4
+  vld vx3,a5
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,5
+  li x28,9
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,10
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,11
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,12
+  bne a1,a2,fail
+
+  # initialize dest memory
+  li a3, 0xdeadbeefcafebabe
+  sd a3, 0(a5)
+  sd a3, 8(a5)
+  sd a3, 16(a5)
+  sd a3, 24(a5)
+
+  # test app vl zero again
+  li a3, 0
+  vsetvl a3, a3
+
+  la a3,src1
+  la a4,src2
+  vld vx2,a3
+  vld vx3,a4
+  lui a0,%hi(vtcode1)
+  vf %lo(vtcode1)(a0)
+  la a5,dest
+  vsd vx2,a5
+  fence.v.l
+
+  ld a1,0(a5)
+  li a2,0xdeadbeefcafebabe
+  li x28,13
+  bne a1,a2,fail
+  ld a1,8(a5)
+  li x28,14
+  bne a1,a2,fail
+  ld a1,16(a5)
+  li x28,15
+  bne a1,a2,fail
+  ld a1,24(a5)
+  li x28,16
+  bne a1,a2,fail
+
+  j pass
+
+vtcode1:
+  add x2,x2,x3
+  stop
+
+  TEST_PASSFAIL
+
+RVTEST_CODE_END
+
+  .data
+RVTEST_DATA_BEGIN
+
+  TEST_DATA
+
+src1:
+  .dword 1
+  .dword 2
+  .dword 3
+  .dword 4
+src2:
+  .dword 4
+  .dword 3
+  .dword 2
+  .dword 1
+dest:
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+  .dword 0xdeadbeefcafebabe
+
+RVTEST_DATA_END