|
From: <sv...@va...> - 2013-02-14 14:28:35
|
florian 2013-02-14 14:28:22 +0000 (Thu, 14 Feb 2013)
New Revision: 13286
Log:
s390: Testcases and vbit-tester changes for the following
DFP insns:
- extract basied exponent
- insert biased exponent
- quantize
- reround to significance
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ #307113.
Modified files:
trunk/memcheck/tests/vbit-test/irops.c
trunk/none/tests/s390x/dfp-2.c
trunk/none/tests/s390x/dfp-2.stdout.exp
Modified: trunk/memcheck/tests/vbit-test/irops.c (+8 -8)
===================================================================
--- trunk/memcheck/tests/vbit-test/irops.c 2013-02-08 23:34:31 +00:00 (rev 13285)
+++ trunk/memcheck/tests/vbit-test/irops.c 2013-02-14 14:28:22 +00:00 (rev 13286)
@@ -515,16 +515,16 @@
{ 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 },
Modified: trunk/none/tests/s390x/dfp-2.c (+214 -0)
===================================================================
--- trunk/none/tests/s390x/dfp-2.c 2013-02-08 23:34:31 +00:00 (rev 13285)
+++ trunk/none/tests/s390x/dfp-2.c 2013-02-14 14:28:22 +00:00 (rev 13286)
@@ -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 @@
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 @@
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 @@
_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 @@
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;
}
Modified: trunk/none/tests/s390x/dfp-2.stdout.exp (+376 -0)
===================================================================
--- trunk/none/tests/s390x/dfp-2.stdout.exp 2013-02-08 23:34:31 +00:00 (rev 13285)
+++ trunk/none/tests/s390x/dfp-2.stdout.exp 2013-02-14 14:28:22 +00:00 (rev 13286)
@@ -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 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
|