]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390x regtest: Rework dfp-2
authorAndreas Arnez <arnez@linux.ibm.com>
Thu, 7 Sep 2023 14:43:25 +0000 (16:43 +0200)
committerAndreas Arnez <arnez@linux.ibm.com>
Thu, 7 Sep 2023 14:43:25 +0000 (16:43 +0200)
The dfp-2 test case has two issues:

* It doesn't test the rounding modes correctly.  Since the inline assembly
  uses a "d" constraint to pass the rounding mode, a random register
  number is placed into the instruction's rounding mode field instead of
  the intended rounding mode.

* It cannot be compiled with Clang.  (See Bug 465782.)

Fix these with a rewrite.  Fixing the first issue also requires adjusting
the test case output `dfp-2.stdout.exp', while fixing the second requires
avoiding `_Decimal*' data types.  Also reduce some code duplication.

none/tests/s390x/dfp-2.c
none/tests/s390x/dfp-2.stdout.exp

index 061fff4c7ae1156b44441a6a02391e52999004d5..39427089a188d5fbcecf1db80dcfde56de1d986c 100644 (file)
-#include <stdio.h>
-#include <stdint.h>
 #include "dfp_utils.h"
+#include <stdint.h>
+#include <stdio.h>
 
-/* Test various DFP ops:
-   - extract biased exponent 64/128 bit
-   - extract significance 64/128 bit
-   - insert biased exponent 64/128 bit
-   - load and test 64/128 bit
-   - shift left/right 64/128 bit
-   - reround 64/128 bit
-*/
-
-void eedtr(_Decimal64 in)
-{
-  long out;
-  asm volatile(".insn rre, 0xb3e50000, %[out], %[in]\n\t"
-               :[out] "=d" (out) :[in] "f" (in));
-  printf("EEDTR ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(" -> %ld\n", out);
-}
-
-void eextr(_Decimal128 in)
-{
-  long out;
-  asm volatile(".insn rre, 0xb3ed0000, %[out], %[in]\n\t"
-               :[out] "=d" (out) :[in] "f" (in));
-  printf("EEXTR ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(" -> %ld\n", out);
-}
-
-void esdtr(_Decimal64 in)
-{
-  long out;
-  asm volatile(".insn rre, 0xb3e70000, %[out], %[in]\n\t"
-               :[out] "=d" (out) :[in] "f" (in));
-  printf("ESDTR ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(" -> %ld\n", out);
-}
-
-void esxtr(_Decimal128 in)
-{
-  long out;
-  asm volatile(".insn rre, 0xb3ef0000, %[out], %[in]\n\t"
-               :[out] "=d" (out) :[in] "f" (in));
-  printf("ESXTR ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(" -> %ld\n", out);
-}
-
-void iedtr(_Decimal64 in, long amount)
-{
-  _Decimal64 out;
-
-  asm volatile (".insn rrf, 0xb3f60000, %[out], %[amount], %[in], 0\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in), [amount]"d"(amount));
-
-  printf("IEDTR ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(", %ld -> ", amount);
-  DFP_VAL_PRINT(out, _Decimal64);
-  printf("\n");
-}
-
-void iextr(_Decimal128 in, long amount)
-{
-  _Decimal128 out;
-
-  asm volatile (".insn rrf, 0xb3fe0000, %[out], %[amount], %[in], 0\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in), [amount]"d"(amount));
-
-  printf("IEXTR ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(", %ld -> ", amount);
-  DFP_VAL_PRINT(out, _Decimal128);
-  printf("\n");
-}
-
-void ltdtr(_Decimal64 in)
-{
-  _Decimal64 out;
-  int cc;
-  asm volatile(".insn rre, 0xb3d60000, %[out], %[in]\n\t"
-               "ipm %1\n\t"
-               "srl %1,28\n\t"
-               :[out] "=d" (out), "=d" (cc)
-               :[in] "f" (in)
-               :"cc");
-  printf("LTDTR ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(" -> %d\n", cc);
-}
-
-void ltxtr(_Decimal128 in)
-{
-  _Decimal128 out;
-  int cc;
-  asm volatile(".insn rre, 0xb3de0000, %[out], %[in]\n\t"
-               "ipm %1\n\t"
-               "srl %1,28\n\t"
-               :[out] "=f" (out), "=d" (cc)
-               :[in] "f" (in)
-               :"cc");
-  printf("LTXTR ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(" -> %d\n", cc);
-}
-
-void qadtr(_Decimal64 op, _Decimal64 quan, uint8_t rm)
-{
-  _Decimal64 out;
-
-  asm volatile (
-                ".insn rrf, 0xb3f50000, %[out], %[quan], %[op], %[rm]\n\t"
-                :[out]"=f"(out)
-                :[op]"f"(op), [quan]"f"(quan), [rm]"d"(rm)
-                );
-  printf("QADTR ");
-  DFP_VAL_PRINT(op, _Decimal64);
-  printf(", ");
-  DFP_VAL_PRINT(quan, _Decimal64);
-  printf(", %x -> ", rm);
-  DFP_VAL_PRINT(out, _Decimal64);
-  printf("\n");
-}
-
-void quantize64(_Decimal64 op, _Decimal64 quan)
-{
-  uint8_t i;
-
-  for (i = 0; i < 16; i++)
-    qadtr(op, quan, i);
-}
-
-void qaxtr(_Decimal128 op, _Decimal128 quan, uint8_t rm)
-{
-  _Decimal128 out;
-
-  asm volatile (
-                ".insn rrf, 0xb3fd0000, %[out], %[quan], %[op], %[rm]\n\t"
-                :[out]"=f"(out)
-                :[op]"f"(op), [quan]"f"(quan), [rm]"d"(rm)
-                );
-  printf("QAXTR ");
-  DFP_VAL_PRINT(op, _Decimal128);
-  printf(", ");
-  DFP_VAL_PRINT(quan, _Decimal128);
-  printf(", %x -> ", rm);
-  DFP_VAL_PRINT(out, _Decimal128);
-  printf("\n");
-}
-
-void quantize128(_Decimal128 op, _Decimal128 quan)
-{
-  uint8_t i;
-
-  for (i = 0; i < 16; i++)
-    qaxtr(op, quan, i);
-}
-
-void rrdtr(_Decimal64 op, uint8_t sig, uint8_t rm)
-{
-  _Decimal64 out;
-
-  asm volatile (
-                ".insn rrf, 0xb3f70000, %[out], %[sig], %[op], %[rm]\n\t"
-                :[out]"=f"(out)
-                :[op]"f"(op), [sig]"d"(sig), [rm]"d"(rm)
-                );
-  printf("RRDTR ");
-  DFP_VAL_PRINT(op, _Decimal64);
-  printf(", %d, %x -> ", sig, rm);
-  DFP_VAL_PRINT(out, _Decimal64);
-  printf("\n");
-}
-
-void reround64(_Decimal64 op, uint8_t sig)
-{
-  uint8_t i;
-
-  for (i = 0; i < 16; i++)
-    rrdtr(op, sig, i);
-}
-
-void rrxtr(_Decimal128 op, uint8_t sig, uint8_t rm)
-{
-  _Decimal128 out;
-
-  asm volatile (
-                ".insn rrf, 0xb3ff0000, %[out], %[sig], %[op], %[rm]\n\t"
-                :[out]"=f"(out)
-                :[op]"f"(op), [sig]"d"(sig), [rm]"d"(rm)
-                );
-  printf("RRXTR ");
-  DFP_VAL_PRINT(op, _Decimal128);
-  printf(", %d, %x -> ", sig, rm);
-  DFP_VAL_PRINT(out, _Decimal128);
-  printf("\n");
-}
-
-void reround128(_Decimal128 op, uint8_t sig)
-{
-  uint8_t i;
-
-  for (i = 0; i < 16; i++)
-    rrxtr(op, sig, i);
-}
-
-void sldt(_Decimal64 in, unsigned long amount)
-{
-  _Decimal64 out;
-  int *shift = (int *) amount;
-
-  asm volatile (".insn rxf, 0xed0000000040, %[out], %[in], 0(%[amount])\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in),[amount]"a"(shift));
-
-  printf("SLDT ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(" -> ");
-  DFP_VAL_PRINT(out, _Decimal64);
-  printf("\n");
-}
-
-void slxt(_Decimal128 in, unsigned long amount)
-{
-  _Decimal128 out;
-  int *shift = (int *) amount;
-
-  asm volatile (".insn rxf, 0xed0000000048, %[out], %[in], 0(%[amount])\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in),[amount]"a"(shift));
-
-  printf("SLXT ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(" -> ");
-  DFP_VAL_PRINT(out, _Decimal128);
-  printf("\n");
-}
-
-void srdt(_Decimal64 in, unsigned long amount)
-{
-  _Decimal64 out;
-  int *shift = (int *) amount;
-
-  asm volatile (".insn rxf, 0xed0000000041, %[out], %[in], 0(%[amount])\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in),[amount]"a"(shift));
-
-  printf("SRDT ");
-  DFP_VAL_PRINT(in, _Decimal64);
-  printf(" -> ");
-  DFP_VAL_PRINT(out, _Decimal64);
-  printf("\n");
-}
-
-void srxt(_Decimal128 in, unsigned long amount)
+#define ITERATE_0_15(x)                                                        \
+   x(0);                                                                       \
+   x(1);                                                                       \
+   x(2);                                                                       \
+   x(3);                                                                       \
+   x(4);                                                                       \
+   x(5);                                                                       \
+   x(6);                                                                       \
+   x(7);                                                                       \
+   x(8);                                                                       \
+   x(9);                                                                       \
+   x(10);                                                                      \
+   x(11);                                                                      \
+   x(12);                                                                      \
+   x(13);                                                                      \
+   x(14);                                                                      \
+   x(15);
+
+/* Extract biased exponent; extract significance */
+
+#define MAKE_EXTRACT(fun, name, opcode, type)                                  \
+   static void fun(type in)                                                    \
+   {                                                                           \
+      long out;                                                                \
+      asm(".insn rre," #opcode "0000, %[out], %[in]"                           \
+          : [out] "=d"(out)                                                    \
+          : [in] "f"(in.f));                                                   \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(in, type);                                                 \
+      printf(" -> %ld\n", out);                                                \
+   }
+
+MAKE_EXTRACT(eedtr, EEDTR, 0xb3e5, pun_d64)
+MAKE_EXTRACT(eextr, EEXTR, 0xb3ed, pun_d128)
+MAKE_EXTRACT(esdtr, ESDTR, 0xb3e7, pun_d64)
+MAKE_EXTRACT(esxtr, ESXTR, 0xb3ef, pun_d128)
+
+/* Insert biased exponent */
+
+#define MAKE_INSERT(fun, name, opcode, type)                                   \
+   static void fun(type in, long amount)                                       \
+   {                                                                           \
+      type out;                                                                \
+      asm(".insn rrf," #opcode "0000, %[out], %[amount], %[in], 0"             \
+          : [out] "=f"(out.f)                                                  \
+          : [in] "f"(in.f), [amount] "d"(amount));                             \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(in, type);                                                 \
+      printf(", %ld -> ", amount);                                             \
+      DFP_VAL_PRINT(out, type);                                                \
+      printf("\n");                                                            \
+   }
+
+MAKE_INSERT(iedtr, IEDTR, 0xb3f6, pun_d64)
+MAKE_INSERT(iextr, IEXTR, 0xb3fe, pun_d128)
+
+/* Load and test */
+
+#define MAKE_LOAD_AND_TEST(fun, name, opcode, type)                            \
+   static void fun(type in)                                                    \
+   {                                                                           \
+      type out;                                                                \
+      int  cc;                                                                 \
+      asm(".insn rre," #opcode "0000, %[out], %[in]\n\t"                       \
+          "ipm %[cc]\n\t"                                                      \
+          "srl %[cc],28"                                                       \
+          : [out] "=f"(out.f), [cc] "=d"(cc)                                   \
+          : [in] "f"(in.f));                                                   \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(in, type);                                                 \
+      printf(" -> %d\n", cc);                                                  \
+   }
+
+MAKE_LOAD_AND_TEST(ltdtr, LTDTR, 0xb3d6, pun_d64)
+MAKE_LOAD_AND_TEST(ltxtr, LTXTR, 0xb3de, pun_d128)
+
+/* Quantize */
+
+#define MAKE_QUANTIZE(fun, name, opcode, type, rm)                             \
+   static void fun##rm(type op, type quan)                                     \
+   {                                                                           \
+      type out;                                                                \
+      asm(".insn rrf," #opcode "0000, %[out], %[quan], %[op], %[m]"            \
+          : [out] "=f"(out.f)                                                  \
+          : [op] "f"(op.f), [quan] "f"(quan.f), [m] "i"(rm));                  \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(op, type);                                                 \
+      printf(", ");                                                            \
+      DFP_VAL_PRINT(quan, type);                                               \
+      printf(", %x -> ", rm);                                                  \
+      DFP_VAL_PRINT(out, type);                                                \
+      printf("\n");                                                            \
+   }
+
+#define MAKE_QADTR(rm) MAKE_QUANTIZE(qadtr, QADTR, 0xb3f5, pun_d64, rm)
+#define CALL_QADTR(rm) qadtr##rm(op, quan)
+
+ITERATE_0_15(MAKE_QADTR)
+
+void quantize64(pun_d64 op, pun_d64 quan) { ITERATE_0_15(CALL_QADTR); }
+
+#define MAKE_QAXTR(rm) MAKE_QUANTIZE(qaxtr, QAXTR, 0xb3fd, pun_d128, rm)
+#define CALL_QAXTR(rm) qaxtr##rm(op, quan)
+
+ITERATE_0_15(MAKE_QAXTR)
+
+void quantize128(pun_d128 op, pun_d128 quan) { ITERATE_0_15(CALL_QAXTR); }
+
+/* Reround */
+
+#define MAKE_REROUND(fun, name, opcode, type, rm)                              \
+   static void fun##rm(type op, uint8_t sig)                                   \
+   {                                                                           \
+      type out;                                                                \
+      asm(".insn rrf," #opcode "0000, %[out], %[sig], %[op], %[m]"             \
+          : [out] "=f"(out.f)                                                  \
+          : [op] "f"(op.f), [sig] "d"(sig), [m] "i"(rm));                      \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(op, type);                                                 \
+      printf(", %d, %x -> ", sig, rm);                                         \
+      DFP_VAL_PRINT(out, type);                                                \
+      printf("\n");                                                            \
+   }
+
+#define MAKE_RRDTR(rm) MAKE_REROUND(rrdtr, RRDTR, 0xb3f7, pun_d64, rm)
+#define CALL_RRDTR(rm) rrdtr##rm(op, sig)
+
+ITERATE_0_15(MAKE_RRDTR)
+
+void reround64(pun_d64 op, uint8_t sig) { ITERATE_0_15(CALL_RRDTR); }
+
+#define MAKE_RRXTR(rm) MAKE_REROUND(rrxtr, RRXTR, 0xb3ff, pun_d128, rm)
+#define CALL_RRXTR(rm) rrxtr##rm(op, sig)
+
+ITERATE_0_15(MAKE_RRXTR)
+
+void reround128(pun_d128 op, uint8_t sig) { ITERATE_0_15(CALL_RRXTR); }
+
+/* Shift significand left/right */
+
+#define MAKE_SHIFT(fun, name, opcode, type)                                    \
+   static void fun(type in, unsigned long amount)                              \
+   {                                                                           \
+      type out;                                                                \
+      int* shift = (int*)amount;                                               \
+      asm(".insn rxf, " #opcode ", %[out], %[in], 0(%[amount])"                \
+          : [out] "=f"(out.f)                                                  \
+          : [in] "f"(in.f), [amount] "a"(shift));                              \
+      printf("%s ", #name);                                                    \
+      DFP_VAL_PRINT(in, type);                                                 \
+      printf(" -> ");                                                          \
+      DFP_VAL_PRINT(out, type);                                                \
+      printf("\n");                                                            \
+   }
+
+MAKE_SHIFT(sldt, SLDT, 0xed0000000040, pun_d64)
+MAKE_SHIFT(slxt, SLXT, 0xed0000000048, pun_d128)
+MAKE_SHIFT(srdt, SRDT, 0xed0000000041, pun_d64)
+MAKE_SHIFT(srxt, SRXT, 0xed0000000049, pun_d128)
+
+/* 64-bit decimal constants */
+static const pun_d64 dd_0  = {0x2238000000000000}; /* 0.DD */
+static const pun_d64 dd_00 = {0x2234000000000000}; /* 0.0DD */
+static const pun_d64 dd_m0 = {0xa238000000000000}; /* -0.DD */
+static const pun_d64 dd_1  = {0x2238000000000001}; /* 1.DD */
+static const pun_d64 dd_A  = {0x22280000000a0005}; /* 50.0005DD */
+static const pun_d64 dd_mA = {0xa2280000000a0005}; /* -50.0005DD */
+static const pun_d64 dd_B  = {0x2224014d2e7971a1}; /* 12345678.54321DD */
+static const pun_d64 dd_mB = {0xa224014d2e7971a1}; /* -12345678.54321DD */
+static const pun_d64 dd_C  = {0x2220000000500005}; /* 5.000005DD */
+static const pun_d64 dd_mC = {0xa220000000500005}; /* -5.000005DD */
+static const pun_d64 dd_D  = {0x222000000023c534}; /* 2.171234DD */
+static const pun_d64 dd_mD = {0xa22000000023c534}; /* -2.171234DD */
+static const pun_d64 dd_DQ = {0x222c000000000001}; /* 0.001DD */
+static const pun_d64 dd_E  = {0x222000000023d2de}; /* 2.174598DD */
+static const pun_d64 dd_mE = {0xa22000000023d2de}; /* -2.174598DD */
+
+/* 128-bit versions of the same constants, except:
+   dl_D  = 26365343648.171234DL
+   dl_DQ = 230.01DL */
+static const pun_d128 dl_0  = {{0x2208000000000000, 0x0000000000000000}};
+static const pun_d128 dl_00 = {{0x2207c00000000000, 0x0000000000000000}};
+static const pun_d128 dl_m0 = {{0xa208000000000000, 0x0000000000000000}};
+static const pun_d128 dl_1  = {{0x2208000000000000, 0x0000000000000001}};
+static const pun_d128 dl_A  = {{0x2207000000000000, 0x00000000000a0005}};
+static const pun_d128 dl_mA = {{0xa207000000000000, 0x00000000000a0005}};
+static const pun_d128 dl_B  = {{0x2206c00000000000, 0x0000014d2e7971a1}};
+static const pun_d128 dl_mB = {{0xa206c00000000000, 0x0000014d2e7971a1}};
+static const pun_d128 dl_C  = {{0x2206800000000000, 0x0000000000500005}};
+static const pun_d128 dl_mC = {{0xa206800000000000, 0x0000000000500005}};
+static const pun_d128 dl_D  = {{0x2206800000000000, 0x0099e570f483c534}};
+static const pun_d128 dl_mD = {{0xa206800000000000, 0x0099e570f483c534}};
+static const pun_d128 dl_DQ = {{0x2207800000000000, 0x0000000000008c01}};
+static const pun_d128 dl_E  = {{0x2206800000000000, 0x000000000023d2de}};
+static const pun_d128 dl_mE = {{0xa206800000000000, 0x000000000023d2de}};
+
+int main()
 {
-  _Decimal128 out;
-  int *shift = (int *) amount;
-
-  asm volatile (".insn rxf, 0xed0000000049, %[out], %[in], 0(%[amount])\n\t"
-                :[out]"=f"(out)
-                :[in]"f"(in),[amount]"a"(shift));
-
-  printf("SRXT ");
-  DFP_VAL_PRINT(in, _Decimal128);
-  printf(" -> ");
-  DFP_VAL_PRINT(out, _Decimal128);
-  printf("\n");
-}
-
-int main() {
-  _Decimal64 d64 = 50.0005DD;
-  _Decimal128 d128 = 50.0005DL;
-
-  eedtr(d64);
-  eedtr(-d64);
-  eedtr(0.DD);
-  eextr(d128);
-  eextr(-d128);
-  eextr(0.DL);
-
-  esdtr(d64);
-  esdtr(-d64);
-  esdtr(0.DD);
-  esxtr(d128);
-  esxtr(-d128);
-  esxtr(0.DL);
-
-  ltdtr(d64);
-  ltdtr(-d64);
-  ltdtr(0.0DD);
-  ltxtr(d128);
-  ltxtr(-d128);
-  ltxtr(0.0DL);
-
-  d64 = 12345678.54321DD;
-  sldt(d64, 10);
-  sldt(-d64, 2);
-  sldt(0.DD, 2);
-  sldt(-0.DD, 2);
-
-  srdt(d64, 5);
-  srdt(-d64, 2);
-  srdt(0.DD, 2);
-  srdt(-0.DD, 2);
-
-  d128 = 12345678.54321DL;
-  slxt(d128, 10);
-  slxt(-d128, 2);
-  slxt(0.DL, 2);
-  slxt(-0.DL, 2);
-
-  srxt(d128, 10);
-  srxt(-d128, 2);
-  srxt(0.DL, 2);
-  srxt(-0.DL, 2);
-
-  d64 = 5.000005DD;
-  iedtr(d64, 391);
-  iedtr(d64, 392);
-  iedtr(d64, 393);
-  iedtr(-d64, 391);
-  iedtr(-d64, 392);
-  iedtr(-d64, 393);
-  iedtr(0.DD, 393);
-  iedtr(-0.DD, 393);
-  iedtr(1.DD, 393);
-
-  d128 = 5.000005DL;
-  iextr(d128, 6169);
-  iextr(d128, 6170);
-  iextr(d128, 6171);
-  iextr(-d128, 6169);
-  iextr(-d128, 6170);
-  iextr(-d128, 6171);
-  iextr(0.DL, 6171);
-  iextr(-0.DL, 6171);
-  iextr(1.DL, 6171);
-
-  d64 = 2.171234DD;
-  quantize64(d64, 0.001DD);
-  quantize64(-d64, 0.001DD);
-  quantize64(-d64, 0.DD);
-  quantize64(0.DD, 0.001DD);
-
-  d128 = 26365343648.171234DL;
-  quantize128(d128, 230.01DL);
-  quantize128(-d128, 230.01DL);
-  quantize128(d128, 0.DL);
-  quantize128(-0.DL, 230.01DL);
-
-  d64 = 2.174598DD;
-  reround64(d64, 3);
-  reround64(d64, 4);
-  reround64(d64, 5);
-  reround64(-d64, 3);
-  reround64(-d64, 4);
-  reround64(-d64, 5);
-  reround64(0.DD, 0);
-
-  d128 = 2.174598DL;
-  reround128(d128, 3);
-  reround128(d128, 4);
-  reround128(d128, 5);
-  reround128(-d128, 3);
-  reround128(-d128, 4);
-  reround128(-d128, 5);
-  reround128(0.DL, 0);
-
-  return 0;
+   eedtr(dd_A);
+   eedtr(dd_mA);
+   eedtr(dd_0);
+   eextr(dl_A);
+   eextr(dl_mA);
+   eextr(dl_0);
+
+   esdtr(dd_A);
+   esdtr(dd_mA);
+   esdtr(dd_0);
+   esxtr(dl_A);
+   esxtr(dl_mA);
+   esxtr(dl_0);
+
+   ltdtr(dd_A);
+   ltdtr(dd_mA);
+   ltdtr(dd_00);
+   ltxtr(dl_A);
+   ltxtr(dl_mA);
+   ltxtr(dl_00);
+
+   sldt(dd_B, 10);
+   sldt(dd_mB, 2);
+   sldt(dd_0, 2);
+   sldt(dd_m0, 2);
+
+   srdt(dd_B, 5);
+   srdt(dd_mB, 2);
+   srdt(dd_0, 2);
+   srdt(dd_m0, 2);
+
+   slxt(dl_B, 10);
+   slxt(dl_mB, 2);
+   slxt(dl_0, 2);
+   slxt(dl_m0, 2);
+
+   srxt(dl_B, 10);
+   srxt(dl_mB, 2);
+   srxt(dl_0, 2);
+   srxt(dl_m0, 2);
+
+   iedtr(dd_C, 391);
+   iedtr(dd_C, 392);
+   iedtr(dd_C, 393);
+   iedtr(dd_mC, 391);
+   iedtr(dd_mC, 392);
+   iedtr(dd_mC, 393);
+   iedtr(dd_0, 393);
+   iedtr(dd_m0, 393);
+   iedtr(dd_1, 393);
+
+   iextr(dl_C, 6169);
+   iextr(dl_C, 6170);
+   iextr(dl_C, 6171);
+   iextr(dl_mC, 6169);
+   iextr(dl_mC, 6170);
+   iextr(dl_mC, 6171);
+   iextr(dl_0, 6171);
+   iextr(dl_m0, 6171);
+   iextr(dl_1, 6171);
+
+   quantize64(dd_D, dd_DQ);
+   quantize64(dd_mD, dd_DQ);
+   quantize64(dd_mD, dd_0);
+   quantize64(dd_0, dd_DQ);
+
+   quantize128(dl_D, dl_DQ);
+   quantize128(dl_mD, dl_DQ);
+   quantize128(dl_D, dl_0);
+   quantize128(dl_m0, dl_DQ);
+
+   reround64(dd_E, 3);
+   reround64(dd_E, 4);
+   reround64(dd_E, 5);
+   reround64(dd_mE, 3);
+   reround64(dd_mE, 4);
+   reround64(dd_mE, 5);
+   reround64(dd_0, 0);
+
+   reround128(dl_E, 3);
+   reround128(dl_E, 4);
+   reround128(dl_E, 5);
+   reround128(dl_mE, 3);
+   reround128(dl_mE, 4);
+   reround128(dl_mE, 5);
+   reround128(dl_0, 0);
+
+   return 0;
 }
index d93da1c25865c0a778f428a9c898b15cfc638034..ab7355f74e1669a55cd91a47508fa62bad12b04f 100644 (file)
@@ -56,15 +56,15 @@ QADTR 222000000023c534, 222c000000000001, 2 -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, 3 -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, 4 -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, 5 -> 222c0000000008f1
-QADTR 222000000023c534, 222c000000000001, 6 -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, 6 -> 222c0000000008f2
 QADTR 222000000023c534, 222c000000000001, 7 -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, 8 -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, 9 -> 222c0000000008f1
-QADTR 222000000023c534, 222c000000000001, a -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, a -> 222c0000000008f2
 QADTR 222000000023c534, 222c000000000001, b -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, c -> 222c0000000008f1
 QADTR 222000000023c534, 222c000000000001, d -> 222c0000000008f1
-QADTR 222000000023c534, 222c000000000001, e -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, e -> 222c0000000008f2
 QADTR 222000000023c534, 222c000000000001, f -> 222c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 0 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 1 -> a22c0000000008f1
@@ -73,14 +73,14 @@ QADTR a22000000023c534, 222c000000000001, 3 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 4 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 5 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 6 -> a22c0000000008f1
-QADTR a22000000023c534, 222c000000000001, 7 -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, 7 -> a22c0000000008f2
 QADTR a22000000023c534, 222c000000000001, 8 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, 9 -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, a -> a22c0000000008f1
-QADTR a22000000023c534, 222c000000000001, b -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, b -> a22c0000000008f2
 QADTR a22000000023c534, 222c000000000001, c -> a22c0000000008f1
 QADTR a22000000023c534, 222c000000000001, d -> a22c0000000008f1
-QADTR a22000000023c534, 222c000000000001, e -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, e -> a22c0000000008f2
 QADTR a22000000023c534, 222c000000000001, f -> a22c0000000008f1
 QADTR a22000000023c534, 2238000000000000, 0 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, 1 -> a238000000000002
@@ -89,14 +89,14 @@ QADTR a22000000023c534, 2238000000000000, 3 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, 4 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, 5 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, 6 -> a238000000000002
-QADTR a22000000023c534, 2238000000000000, 7 -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, 7 -> a238000000000003
 QADTR a22000000023c534, 2238000000000000, 8 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, 9 -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, a -> a238000000000002
-QADTR a22000000023c534, 2238000000000000, b -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, b -> a238000000000003
 QADTR a22000000023c534, 2238000000000000, c -> a238000000000002
 QADTR a22000000023c534, 2238000000000000, d -> a238000000000002
-QADTR a22000000023c534, 2238000000000000, e -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, e -> a238000000000003
 QADTR a22000000023c534, 2238000000000000, f -> a238000000000002
 QADTR 2238000000000000, 222c000000000001, 0 -> 222c000000000000
 QADTR 2238000000000000, 222c000000000001, 1 -> 222c000000000000
@@ -120,15 +120,15 @@ QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 2 -> 2
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 3 -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 4 -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 5 -> 2207800000000000000002cdab47931d
-QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 6 -> 2207800000000000000002cdab47931d
+QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 6 -> 2207800000000000000002cdab47903e
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 7 -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 8 -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, 9 -> 2207800000000000000002cdab47931d
-QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, a -> 2207800000000000000002cdab47931d
+QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, a -> 2207800000000000000002cdab47903e
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, b -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, c -> 2207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, d -> 2207800000000000000002cdab47931d
-QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, e -> 2207800000000000000002cdab47931d
+QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, e -> 2207800000000000000002cdab47903e
 QAXTR 22068000000000000099e570f483c534, 22078000000000000000000000008c01, f -> 2207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 0 -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 1 -> a207800000000000000002cdab47931d
@@ -137,14 +137,14 @@ QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 3 -> a
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 4 -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 5 -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 6 -> a207800000000000000002cdab47931d
-QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 7 -> a207800000000000000002cdab47931d
+QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 7 -> a207800000000000000002cdab47903e
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 8 -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, 9 -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, a -> a207800000000000000002cdab47931d
-QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, b -> a207800000000000000002cdab47931d
+QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, b -> a207800000000000000002cdab47903e
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, c -> a207800000000000000002cdab47931d
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, d -> a207800000000000000002cdab47931d
-QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, e -> a207800000000000000002cdab47931d
+QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, e -> a207800000000000000002cdab47903e
 QAXTR a2068000000000000099e570f483c534, 22078000000000000000000000008c01, f -> a207800000000000000002cdab47931d
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 0 -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 1 -> 2208000000000000000000099e570f48
@@ -152,15 +152,15 @@ QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 2 -> 2
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 3 -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 4 -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 5 -> 2208000000000000000000099e570f48
-QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 6 -> 2208000000000000000000099e570f48
+QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 6 -> 2208000000000000000000099e570f49
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 7 -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 8 -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, 9 -> 2208000000000000000000099e570f48
-QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, a -> 2208000000000000000000099e570f48
+QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, a -> 2208000000000000000000099e570f49
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, b -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, c -> 2208000000000000000000099e570f48
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, d -> 2208000000000000000000099e570f48
-QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, e -> 2208000000000000000000099e570f48
+QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, e -> 2208000000000000000000099e570f49
 QAXTR 22068000000000000099e570f483c534, 22080000000000000000000000000000, f -> 2208000000000000000000099e570f48
 QAXTR a2080000000000000000000000000000, 22078000000000000000000000008c01, 0 -> a2078000000000000000000000000000
 QAXTR a2080000000000000000000000000000, 22078000000000000000000000008c01, 1 -> a2078000000000000000000000000000
@@ -184,44 +184,44 @@ RRDTR 222000000023d2de, 3, 2 -> 2230000000000117
 RRDTR 222000000023d2de, 3, 3 -> 2230000000000117
 RRDTR 222000000023d2de, 3, 4 -> 2230000000000117
 RRDTR 222000000023d2de, 3, 5 -> 2230000000000117
-RRDTR 222000000023d2de, 3, 6 -> 2230000000000117
+RRDTR 222000000023d2de, 3, 6 -> 2230000000000118
 RRDTR 222000000023d2de, 3, 7 -> 2230000000000117
 RRDTR 222000000023d2de, 3, 8 -> 2230000000000117
 RRDTR 222000000023d2de, 3, 9 -> 2230000000000117
-RRDTR 222000000023d2de, 3, a -> 2230000000000117
+RRDTR 222000000023d2de, 3, a -> 2230000000000118
 RRDTR 222000000023d2de, 3, b -> 2230000000000117
 RRDTR 222000000023d2de, 3, c -> 2230000000000117
 RRDTR 222000000023d2de, 3, d -> 2230000000000117
-RRDTR 222000000023d2de, 3, e -> 2230000000000117
+RRDTR 222000000023d2de, 3, e -> 2230000000000118
 RRDTR 222000000023d2de, 3, f -> 2230000000000117
 RRDTR 222000000023d2de, 4, 0 -> 222c0000000008f5
 RRDTR 222000000023d2de, 4, 1 -> 222c0000000008f5
 RRDTR 222000000023d2de, 4, 2 -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, 3 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 3 -> 222c0000000008f4
 RRDTR 222000000023d2de, 4, 4 -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, 5 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 5 -> 222c0000000008f4
 RRDTR 222000000023d2de, 4, 6 -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, 7 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 7 -> 222c0000000008f4
 RRDTR 222000000023d2de, 4, 8 -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, 9 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 9 -> 222c0000000008f4
 RRDTR 222000000023d2de, 4, a -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, b -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, b -> 222c0000000008f4
 RRDTR 222000000023d2de, 4, c -> 222c0000000008f5
 RRDTR 222000000023d2de, 4, d -> 222c0000000008f5
 RRDTR 222000000023d2de, 4, e -> 222c0000000008f5
-RRDTR 222000000023d2de, 4, f -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, f -> 222c0000000008f4
 RRDTR 222000000023d2de, 5, 0 -> 22280000000087c6
 RRDTR 222000000023d2de, 5, 1 -> 22280000000087c6
 RRDTR 222000000023d2de, 5, 2 -> 22280000000087c6
 RRDTR 222000000023d2de, 5, 3 -> 22280000000087c6
 RRDTR 222000000023d2de, 5, 4 -> 22280000000087c6
-RRDTR 222000000023d2de, 5, 5 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 5 -> 22280000000087c5
 RRDTR 222000000023d2de, 5, 6 -> 22280000000087c6
-RRDTR 222000000023d2de, 5, 7 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 7 -> 22280000000087c5
 RRDTR 222000000023d2de, 5, 8 -> 22280000000087c6
-RRDTR 222000000023d2de, 5, 9 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 9 -> 22280000000087c5
 RRDTR 222000000023d2de, 5, a -> 22280000000087c6
-RRDTR 222000000023d2de, 5, b -> 22280000000087c6
+RRDTR 222000000023d2de, 5, b -> 22280000000087c5
 RRDTR 222000000023d2de, 5, c -> 22280000000087c6
 RRDTR 222000000023d2de, 5, d -> 22280000000087c6
 RRDTR 222000000023d2de, 5, e -> 22280000000087c6
@@ -233,42 +233,42 @@ RRDTR a22000000023d2de, 3, 3 -> a230000000000117
 RRDTR a22000000023d2de, 3, 4 -> a230000000000117
 RRDTR a22000000023d2de, 3, 5 -> a230000000000117
 RRDTR a22000000023d2de, 3, 6 -> a230000000000117
-RRDTR a22000000023d2de, 3, 7 -> a230000000000117
+RRDTR a22000000023d2de, 3, 7 -> a230000000000118
 RRDTR a22000000023d2de, 3, 8 -> a230000000000117
 RRDTR a22000000023d2de, 3, 9 -> a230000000000117
 RRDTR a22000000023d2de, 3, a -> a230000000000117
-RRDTR a22000000023d2de, 3, b -> a230000000000117
+RRDTR a22000000023d2de, 3, b -> a230000000000118
 RRDTR a22000000023d2de, 3, c -> a230000000000117
 RRDTR a22000000023d2de, 3, d -> a230000000000117
-RRDTR a22000000023d2de, 3, e -> a230000000000117
+RRDTR a22000000023d2de, 3, e -> a230000000000118
 RRDTR a22000000023d2de, 3, f -> a230000000000117
 RRDTR a22000000023d2de, 4, 0 -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, 1 -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, 2 -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, 3 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 3 -> a22c0000000008f4
 RRDTR a22000000023d2de, 4, 4 -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, 5 -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, 6 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 5 -> a22c0000000008f4
+RRDTR a22000000023d2de, 4, 6 -> a22c0000000008f4
 RRDTR a22000000023d2de, 4, 7 -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, 8 -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, 9 -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, a -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 9 -> a22c0000000008f4
+RRDTR a22000000023d2de, 4, a -> a22c0000000008f4
 RRDTR a22000000023d2de, 4, b -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, c -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, d -> a22c0000000008f5
 RRDTR a22000000023d2de, 4, e -> a22c0000000008f5
-RRDTR a22000000023d2de, 4, f -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, f -> a22c0000000008f4
 RRDTR a22000000023d2de, 5, 0 -> a2280000000087c6
 RRDTR a22000000023d2de, 5, 1 -> a2280000000087c6
 RRDTR a22000000023d2de, 5, 2 -> a2280000000087c6
 RRDTR a22000000023d2de, 5, 3 -> a2280000000087c6
 RRDTR a22000000023d2de, 5, 4 -> a2280000000087c6
-RRDTR a22000000023d2de, 5, 5 -> a2280000000087c6
-RRDTR a22000000023d2de, 5, 6 -> a2280000000087c6
+RRDTR a22000000023d2de, 5, 5 -> a2280000000087c5
+RRDTR a22000000023d2de, 5, 6 -> a2280000000087c5
 RRDTR a22000000023d2de, 5, 7 -> a2280000000087c6
 RRDTR a22000000023d2de, 5, 8 -> a2280000000087c6
-RRDTR a22000000023d2de, 5, 9 -> a2280000000087c6
-RRDTR a22000000023d2de, 5, a -> a2280000000087c6
+RRDTR a22000000023d2de, 5, 9 -> a2280000000087c5
+RRDTR a22000000023d2de, 5, a -> a2280000000087c5
 RRDTR a22000000023d2de, 5, b -> a2280000000087c6
 RRDTR a22000000023d2de, 5, c -> a2280000000087c6
 RRDTR a22000000023d2de, 5, d -> a2280000000087c6
@@ -296,44 +296,44 @@ RRXTR 2206800000000000000000000023d2de, 3, 2 -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, 3 -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, 4 -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, 5 -> 22078000000000000000000000000117
-RRXTR 2206800000000000000000000023d2de, 3, 6 -> 22078000000000000000000000000117
+RRXTR 2206800000000000000000000023d2de, 3, 6 -> 22078000000000000000000000000118
 RRXTR 2206800000000000000000000023d2de, 3, 7 -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, 8 -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, 9 -> 22078000000000000000000000000117
-RRXTR 2206800000000000000000000023d2de, 3, a -> 22078000000000000000000000000117
+RRXTR 2206800000000000000000000023d2de, 3, a -> 22078000000000000000000000000118
 RRXTR 2206800000000000000000000023d2de, 3, b -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, c -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 3, d -> 22078000000000000000000000000117
-RRXTR 2206800000000000000000000023d2de, 3, e -> 22078000000000000000000000000117
+RRXTR 2206800000000000000000000023d2de, 3, e -> 22078000000000000000000000000118
 RRXTR 2206800000000000000000000023d2de, 3, f -> 22078000000000000000000000000117
 RRXTR 2206800000000000000000000023d2de, 4, 0 -> 220740000000000000000000000008f5
 RRXTR 2206800000000000000000000023d2de, 4, 1 -> 220740000000000000000000000008f5
 RRXTR 2206800000000000000000000023d2de, 4, 2 -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, 3 -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, 3 -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 4, 4 -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, 5 -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, 5 -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 4, 6 -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, 7 -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, 7 -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 4, 8 -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, 9 -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, 9 -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 4, a -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, b -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, b -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 4, c -> 220740000000000000000000000008f5
 RRXTR 2206800000000000000000000023d2de, 4, d -> 220740000000000000000000000008f5
 RRXTR 2206800000000000000000000023d2de, 4, e -> 220740000000000000000000000008f5
-RRXTR 2206800000000000000000000023d2de, 4, f -> 220740000000000000000000000008f5
+RRXTR 2206800000000000000000000023d2de, 4, f -> 220740000000000000000000000008f4
 RRXTR 2206800000000000000000000023d2de, 5, 0 -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, 1 -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, 2 -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, 3 -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, 4 -> 220700000000000000000000000087c6
-RRXTR 2206800000000000000000000023d2de, 5, 5 -> 220700000000000000000000000087c6
+RRXTR 2206800000000000000000000023d2de, 5, 5 -> 220700000000000000000000000087c5
 RRXTR 2206800000000000000000000023d2de, 5, 6 -> 220700000000000000000000000087c6
-RRXTR 2206800000000000000000000023d2de, 5, 7 -> 220700000000000000000000000087c6
+RRXTR 2206800000000000000000000023d2de, 5, 7 -> 220700000000000000000000000087c5
 RRXTR 2206800000000000000000000023d2de, 5, 8 -> 220700000000000000000000000087c6
-RRXTR 2206800000000000000000000023d2de, 5, 9 -> 220700000000000000000000000087c6
+RRXTR 2206800000000000000000000023d2de, 5, 9 -> 220700000000000000000000000087c5
 RRXTR 2206800000000000000000000023d2de, 5, a -> 220700000000000000000000000087c6
-RRXTR 2206800000000000000000000023d2de, 5, b -> 220700000000000000000000000087c6
+RRXTR 2206800000000000000000000023d2de, 5, b -> 220700000000000000000000000087c5
 RRXTR 2206800000000000000000000023d2de, 5, c -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, d -> 220700000000000000000000000087c6
 RRXTR 2206800000000000000000000023d2de, 5, e -> 220700000000000000000000000087c6
@@ -345,42 +345,42 @@ RRXTR a206800000000000000000000023d2de, 3, 3 -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, 4 -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, 5 -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, 6 -> a2078000000000000000000000000117
-RRXTR a206800000000000000000000023d2de, 3, 7 -> a2078000000000000000000000000117
+RRXTR a206800000000000000000000023d2de, 3, 7 -> a2078000000000000000000000000118
 RRXTR a206800000000000000000000023d2de, 3, 8 -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, 9 -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, a -> a2078000000000000000000000000117
-RRXTR a206800000000000000000000023d2de, 3, b -> a2078000000000000000000000000117
+RRXTR a206800000000000000000000023d2de, 3, b -> a2078000000000000000000000000118
 RRXTR a206800000000000000000000023d2de, 3, c -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 3, d -> a2078000000000000000000000000117
-RRXTR a206800000000000000000000023d2de, 3, e -> a2078000000000000000000000000117
+RRXTR a206800000000000000000000023d2de, 3, e -> a2078000000000000000000000000118
 RRXTR a206800000000000000000000023d2de, 3, f -> a2078000000000000000000000000117
 RRXTR a206800000000000000000000023d2de, 4, 0 -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, 1 -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, 2 -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, 3 -> a20740000000000000000000000008f5
+RRXTR a206800000000000000000000023d2de, 4, 3 -> a20740000000000000000000000008f4
 RRXTR a206800000000000000000000023d2de, 4, 4 -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, 5 -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, 6 -> a20740000000000000000000000008f5
+RRXTR a206800000000000000000000023d2de, 4, 5 -> a20740000000000000000000000008f4
+RRXTR a206800000000000000000000023d2de, 4, 6 -> a20740000000000000000000000008f4
 RRXTR a206800000000000000000000023d2de, 4, 7 -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, 8 -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, 9 -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, a -> a20740000000000000000000000008f5
+RRXTR a206800000000000000000000023d2de, 4, 9 -> a20740000000000000000000000008f4
+RRXTR a206800000000000000000000023d2de, 4, a -> a20740000000000000000000000008f4
 RRXTR a206800000000000000000000023d2de, 4, b -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, c -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, d -> a20740000000000000000000000008f5
 RRXTR a206800000000000000000000023d2de, 4, e -> a20740000000000000000000000008f5
-RRXTR a206800000000000000000000023d2de, 4, f -> a20740000000000000000000000008f5
+RRXTR a206800000000000000000000023d2de, 4, f -> a20740000000000000000000000008f4
 RRXTR a206800000000000000000000023d2de, 5, 0 -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, 1 -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, 2 -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, 3 -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, 4 -> a20700000000000000000000000087c6
-RRXTR a206800000000000000000000023d2de, 5, 5 -> a20700000000000000000000000087c6
-RRXTR a206800000000000000000000023d2de, 5, 6 -> a20700000000000000000000000087c6
+RRXTR a206800000000000000000000023d2de, 5, 5 -> a20700000000000000000000000087c5
+RRXTR a206800000000000000000000023d2de, 5, 6 -> a20700000000000000000000000087c5
 RRXTR a206800000000000000000000023d2de, 5, 7 -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, 8 -> a20700000000000000000000000087c6
-RRXTR a206800000000000000000000023d2de, 5, 9 -> a20700000000000000000000000087c6
-RRXTR a206800000000000000000000023d2de, 5, a -> a20700000000000000000000000087c6
+RRXTR a206800000000000000000000023d2de, 5, 9 -> a20700000000000000000000000087c5
+RRXTR a206800000000000000000000023d2de, 5, a -> a20700000000000000000000000087c5
 RRXTR a206800000000000000000000023d2de, 5, b -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, c -> a20700000000000000000000000087c6
 RRXTR a206800000000000000000000023d2de, 5, d -> a20700000000000000000000000087c6