]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390: Testcases and vbit-tester changes for the following
authorFlorian Krohm <florian@eich-krohm.de>
Thu, 14 Feb 2013 14:28:22 +0000 (14:28 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Thu, 14 Feb 2013 14:28:22 +0000 (14:28 +0000)
DFP insns:
- extract basied exponent
- insert biased exponent
- quantize
- reround to significance
Patch by Maran Pakkirisamy (maranp@linux.vnet.ibm.com).
Part of fixing BZ #307113.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13286

memcheck/tests/vbit-test/irops.c
none/tests/s390x/dfp-2.c
none/tests/s390x/dfp-2.stdout.exp

index 3308381da8261b5ef709f47577e1366ce9e4e974..e187f32e67dc9be07964c9ba240e951e8ad1392e 100644 (file)
@@ -515,16 +515,16 @@ static irop_t irops[] = {
   { DEFOP(Iop_CmpD128,               UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
   { DEFOP(Iop_CmpExpD64,             UNDEF_ALL),  .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
   { DEFOP(Iop_CmpExpD128,            UNDEF_ALL),  .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
-  { DEFOP(Iop_QuantizeD64,           UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_QuantizeD128,          UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_SignificanceRoundD64,  UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_SignificanceRoundD128, UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_ExtractExpD64,         UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_ExtractExpD128,        UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_QuantizeD64,           UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_QuantizeD128,          UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_SignificanceRoundD64,  UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_SignificanceRoundD128, UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_ExtractExpD64,         UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_ExtractExpD128,        UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
   { DEFOP(Iop_ExtractSigD64,         UNDEF_ALL),  .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
   { DEFOP(Iop_ExtractSigD128,        UNDEF_ALL),  .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
-  { DEFOP(Iop_InsertExpD64,          UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
-  { DEFOP(Iop_InsertExpD128,         UNDEF_ALL),  .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_InsertExpD64,          UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+  { DEFOP(Iop_InsertExpD128,         UNDEF_ALL),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
   { DEFOP(Iop_D64HLtoD128,           UNDEF_CONCAT), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
   { DEFOP(Iop_D128HItoD64,           UNDEF_UPPER),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
   { DEFOP(Iop_D128LOtoD64,           UNDEF_TRUNC),  .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
index 2dc064c557412250a1c3e283f4034563919f7d9f..bec51be3dfcca7bcbfc7b96b2cbdbeab155716bf 100644 (file)
@@ -1,11 +1,36 @@
 #include <stdio.h>
+#include <stdint.h>
 #include "dfp_utils.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;
@@ -26,6 +51,36 @@ void esxtr(_Decimal128 in)
   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;
@@ -54,6 +109,106 @@ void ltxtr(_Decimal128 in)
   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;
@@ -122,6 +277,13 @@ 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);
@@ -158,5 +320,57 @@ int main() {
   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;
 }
index 930f549b168ec3f6337935efa09d68e243f8c5d8..ccf599154969d2a6972df1ae800b3fa33eb601da 100644 (file)
@@ -1,3 +1,9 @@
+EEDTR 22280000000a0005 -> 394
+EEDTR a2280000000a0005 -> 394
+EEDTR 2238000000000000 -> 398
+EEXTR 2207000000000000000a0005 -> 6172
+EEXTR a207000000000000000a0005 -> 6172
+EEXTR 220800000000000000000000 -> 6176
 ESDTR 22280000000a0005 -> 6
 ESDTR a2280000000a0005 -> 6
 ESDTR 2238000000000000 -> 0
@@ -26,3 +32,373 @@ SRXT 2206c0000000000014d2e7971a1 -> 2206c00000000000000000a3
 SRXT a206c0000000000014d2e7971a1 -> a206c0000000000049c5de2c3
 SRXT 220800000000000000000000 -> 220800000000000000000000
 SRXT a20800000000000000000000 -> a20800000000000000000000
+IEDTR 2220000000500005, 391 -> 221c000000500005
+IEDTR 2220000000500005, 392 -> 2220000000500005
+IEDTR 2220000000500005, 393 -> 2224000000500005
+IEDTR a220000000500005, 391 -> a21c000000500005
+IEDTR a220000000500005, 392 -> a220000000500005
+IEDTR a220000000500005, 393 -> a224000000500005
+IEDTR 2238000000000000, 393 -> 2224000000000000
+IEDTR a238000000000000, 393 -> a224000000000000
+IEDTR 2238000000000001, 393 -> 2224000000000001
+IEXTR 220680000000000000500005, 6169 -> 220640000000000000500005
+IEXTR 220680000000000000500005, 6170 -> 220680000000000000500005
+IEXTR 220680000000000000500005, 6171 -> 2206c0000000000000500005
+IEXTR a20680000000000000500005, 6169 -> a20640000000000000500005
+IEXTR a20680000000000000500005, 6170 -> a20680000000000000500005
+IEXTR a20680000000000000500005, 6171 -> a206c0000000000000500005
+IEXTR 220800000000000000000000, 6171 -> 2206c0000000000000000000
+IEXTR a20800000000000000000000, 6171 -> a206c0000000000000000000
+IEXTR 220800000000000000000001, 6171 -> 2206c0000000000000000001
+QADTR 222000000023c534, 222c000000000001, 0 -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, 1 -> 222c0000000008f1
+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, 7 -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, 8 -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, 9 -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, a -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, b -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, c -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, d -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, e -> 222c0000000008f1
+QADTR 222000000023c534, 222c000000000001, f -> 222c0000000008f1
+QADTR a22000000023c534, 222c000000000001, 0 -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, 1 -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, 2 -> a22c0000000008f1
+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, 8 -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, 9 -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, a -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, b -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, c -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, d -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, e -> a22c0000000008f1
+QADTR a22000000023c534, 222c000000000001, f -> a22c0000000008f1
+QADTR a22000000023c534, 2238000000000000, 0 -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, 1 -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, 2 -> a238000000000002
+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, 8 -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, 9 -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, a -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, b -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, c -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, d -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, e -> a238000000000002
+QADTR a22000000023c534, 2238000000000000, f -> a238000000000002
+QADTR 2238000000000000, 222c000000000001, 0 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 1 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 2 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 3 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 4 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 5 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 6 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 7 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 8 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, 9 -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, a -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, b -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, c -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, d -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, e -> 222c000000000000
+QADTR 2238000000000000, 222c000000000001, f -> 222c000000000000
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 0 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 1 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 2 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 3 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 4 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 5 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 6 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 7 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 8 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, 9 -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, a -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, b -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, c -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, d -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, e -> 22078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220780000000000000008c01, f -> 22078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 0 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 1 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 2 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 3 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 4 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 5 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 6 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 7 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 8 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, 9 -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, a -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, b -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, c -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, d -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, e -> a2078000000000002cdab47931d
+QAXTR a20680000000000099e570f483c534, 220780000000000000008c01, f -> a2078000000000002cdab47931d
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 0 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 1 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 2 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 3 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 4 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 5 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 6 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 7 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 8 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, 9 -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, a -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, b -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, c -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, d -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, e -> 220800000000000099e570f48
+QAXTR 220680000000000099e570f483c534, 220800000000000000000000, f -> 220800000000000099e570f48
+QAXTR a20800000000000000000000, 220780000000000000008c01, 0 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 1 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 2 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 3 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 4 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 5 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 6 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 7 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 8 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, 9 -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, a -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, b -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, c -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, d -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, e -> a20780000000000000000000
+QAXTR a20800000000000000000000, 220780000000000000008c01, f -> a20780000000000000000000
+RRDTR 222000000023d2de, 3, 0 -> 2230000000000117
+RRDTR 222000000023d2de, 3, 1 -> 2230000000000117
+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, 7 -> 2230000000000117
+RRDTR 222000000023d2de, 3, 8 -> 2230000000000117
+RRDTR 222000000023d2de, 3, 9 -> 2230000000000117
+RRDTR 222000000023d2de, 3, a -> 2230000000000117
+RRDTR 222000000023d2de, 3, b -> 2230000000000117
+RRDTR 222000000023d2de, 3, c -> 2230000000000117
+RRDTR 222000000023d2de, 3, d -> 2230000000000117
+RRDTR 222000000023d2de, 3, e -> 2230000000000117
+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, 4 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 5 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 6 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 7 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 8 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, 9 -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, a -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, b -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, c -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, d -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, e -> 222c0000000008f5
+RRDTR 222000000023d2de, 4, f -> 222c0000000008f5
+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, 6 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 7 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 8 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, 9 -> 22280000000087c6
+RRDTR 222000000023d2de, 5, a -> 22280000000087c6
+RRDTR 222000000023d2de, 5, b -> 22280000000087c6
+RRDTR 222000000023d2de, 5, c -> 22280000000087c6
+RRDTR 222000000023d2de, 5, d -> 22280000000087c6
+RRDTR 222000000023d2de, 5, e -> 22280000000087c6
+RRDTR 222000000023d2de, 5, f -> 22280000000087c6
+RRDTR a22000000023d2de, 3, 0 -> a230000000000117
+RRDTR a22000000023d2de, 3, 1 -> a230000000000117
+RRDTR a22000000023d2de, 3, 2 -> a230000000000117
+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, 8 -> a230000000000117
+RRDTR a22000000023d2de, 3, 9 -> a230000000000117
+RRDTR a22000000023d2de, 3, a -> a230000000000117
+RRDTR a22000000023d2de, 3, b -> a230000000000117
+RRDTR a22000000023d2de, 3, c -> a230000000000117
+RRDTR a22000000023d2de, 3, d -> a230000000000117
+RRDTR a22000000023d2de, 3, e -> a230000000000117
+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, 4 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 5 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 6 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 7 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 8 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, 9 -> a22c0000000008f5
+RRDTR a22000000023d2de, 4, a -> a22c0000000008f5
+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, 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, 7 -> a2280000000087c6
+RRDTR a22000000023d2de, 5, 8 -> a2280000000087c6
+RRDTR a22000000023d2de, 5, 9 -> a2280000000087c6
+RRDTR a22000000023d2de, 5, a -> a2280000000087c6
+RRDTR a22000000023d2de, 5, b -> a2280000000087c6
+RRDTR a22000000023d2de, 5, c -> a2280000000087c6
+RRDTR a22000000023d2de, 5, d -> a2280000000087c6
+RRDTR a22000000023d2de, 5, e -> a2280000000087c6
+RRDTR a22000000023d2de, 5, f -> a2280000000087c6
+RRDTR 2238000000000000, 0, 0 -> 2238000000000000
+RRDTR 2238000000000000, 0, 1 -> 2238000000000000
+RRDTR 2238000000000000, 0, 2 -> 2238000000000000
+RRDTR 2238000000000000, 0, 3 -> 2238000000000000
+RRDTR 2238000000000000, 0, 4 -> 2238000000000000
+RRDTR 2238000000000000, 0, 5 -> 2238000000000000
+RRDTR 2238000000000000, 0, 6 -> 2238000000000000
+RRDTR 2238000000000000, 0, 7 -> 2238000000000000
+RRDTR 2238000000000000, 0, 8 -> 2238000000000000
+RRDTR 2238000000000000, 0, 9 -> 2238000000000000
+RRDTR 2238000000000000, 0, a -> 2238000000000000
+RRDTR 2238000000000000, 0, b -> 2238000000000000
+RRDTR 2238000000000000, 0, c -> 2238000000000000
+RRDTR 2238000000000000, 0, d -> 2238000000000000
+RRDTR 2238000000000000, 0, e -> 2238000000000000
+RRDTR 2238000000000000, 0, f -> 2238000000000000
+RRXTR 22068000000000000023d2de, 3, 0 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 1 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 2 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 3 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 4 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 5 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 6 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 7 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 8 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, 9 -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, a -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, b -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, c -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, d -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, e -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 3, f -> 220780000000000000000117
+RRXTR 22068000000000000023d2de, 4, 0 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 1 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 2 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 3 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 4 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 5 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 6 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 7 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 8 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, 9 -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, a -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, b -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, c -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, d -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, e -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 4, f -> 2207400000000000000008f5
+RRXTR 22068000000000000023d2de, 5, 0 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 1 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 2 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 3 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 4 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 5 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 6 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 7 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 8 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, 9 -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, a -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, b -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, c -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, d -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, e -> 2207000000000000000087c6
+RRXTR 22068000000000000023d2de, 5, f -> 2207000000000000000087c6
+RRXTR a2068000000000000023d2de, 3, 0 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 1 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 2 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 3 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 4 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 5 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 6 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 7 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 8 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, 9 -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, a -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, b -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, c -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, d -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, e -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 3, f -> a20780000000000000000117
+RRXTR a2068000000000000023d2de, 4, 0 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 1 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 2 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 3 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 4 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 5 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 6 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 7 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 8 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, 9 -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, a -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, b -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, c -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, d -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, e -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 4, f -> a207400000000000000008f5
+RRXTR a2068000000000000023d2de, 5, 0 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 1 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 2 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 3 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 4 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 5 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 6 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 7 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 8 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, 9 -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, a -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, b -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, c -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, d -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, e -> a207000000000000000087c6
+RRXTR a2068000000000000023d2de, 5, f -> a207000000000000000087c6
+RRXTR 220800000000000000000000, 0, 0 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 1 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 2 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 3 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 4 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 5 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 6 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 7 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 8 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, 9 -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, a -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, b -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, c -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, d -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, e -> 220800000000000000000000
+RRXTR 220800000000000000000000, 0, f -> 220800000000000000000000