From: Florian Krohm Date: Thu, 14 Feb 2013 14:28:22 +0000 (+0000) Subject: s390: Testcases and vbit-tester changes for the following X-Git-Tag: svn/VALGRIND_3_9_0~395 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f53bd2199354b46b2be22d36ac372c8c72c513a;p=thirdparty%2Fvalgrind.git 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 (maranp@linux.vnet.ibm.com). Part of fixing BZ #307113. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13286 --- diff --git a/memcheck/tests/vbit-test/irops.c b/memcheck/tests/vbit-test/irops.c index 3308381da8..e187f32e67 100644 --- a/memcheck/tests/vbit-test/irops.c +++ b/memcheck/tests/vbit-test/irops.c @@ -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 }, diff --git a/none/tests/s390x/dfp-2.c b/none/tests/s390x/dfp-2.c index 2dc064c557..bec51be3df 100644 --- a/none/tests/s390x/dfp-2.c +++ b/none/tests/s390x/dfp-2.c @@ -1,11 +1,36 @@ #include +#include #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; } diff --git a/none/tests/s390x/dfp-2.stdout.exp b/none/tests/s390x/dfp-2.stdout.exp index 930f549b16..ccf5991549 100644 --- a/none/tests/s390x/dfp-2.stdout.exp +++ b/none/tests/s390x/dfp-2.stdout.exp @@ -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