]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
POWER Processor decimal FP support, part 5. (Valgrind side). Bug #299694.
authorJulian Seward <jseward@acm.org>
Sat, 2 Jun 2012 23:48:06 +0000 (23:48 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 2 Jun 2012 23:48:06 +0000 (23:48 +0000)
(Carl Love, carll@us.ibm.com and Maynard Johnson, maynardj@us.ibm.com)

This patch adds support for Power Decimal Floating Point (DFP) . This
is the fifth patch set in the series of five to add the DFP
instruction support to Valgrind.  Adds support for the ddedpd,
ddedpdq, denbcd, denbcdq, dtstsf, and dtstsfq instructions.

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

memcheck/mc_translate.c
none/tests/ppc32/Makefile.am
none/tests/ppc32/test_dfp5.c [new file with mode: 0644]
none/tests/ppc32/test_dfp5.stderr.exp [new file with mode: 0644]
none/tests/ppc32/test_dfp5.stdout.exp [new file with mode: 0644]
none/tests/ppc32/test_dfp5.vgtest [new file with mode: 0644]
none/tests/ppc64/Makefile.am
none/tests/ppc64/test_dfp5.c [new symlink]
none/tests/ppc64/test_dfp5.stderr.exp [new file with mode: 0644]
none/tests/ppc64/test_dfp5.stdout.exp [new symlink]
none/tests/ppc64/test_dfp5.vgtest [new file with mode: 0644]

index 719b5ed40e0b603b6fb67a21ce47002baad3f90e..40427480bdd0fa0bbe5bcbdb90f65e516fd25c92 100644 (file)
@@ -3528,6 +3528,8 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom )
       case Iop_ReinterpF32asI32:
       case Iop_ReinterpI64asD64:
       case Iop_ReinterpD64asI64:
+      case Iop_DPBtoBCD:
+      case Iop_BCDtoDPB:
       case Iop_NotV128:
       case Iop_Not64:
       case Iop_Not32:
index 89dd9fd8f7e332d44f155177cb636ca2685bdaf5..976d9f42c50f0ec29b143c043ed8fe7bc214881d 100644 (file)
@@ -34,7 +34,8 @@ EXTRA_DIST = \
        test_dfp2.stderr.exp test_dfp2.stdout.exp test_dfp2.vgtest \
        test_dfp2.stdout.exp_Without_dcffix \
        test_dfp3.stderr.exp test_dfp3.stdout.exp test_dfp3.vgtest \
-       test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest
+       test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest \
+       test_dfp5.stderr.exp test_dfp5.stdout.exp test_dfp5.vgtest
 
 check_PROGRAMS = \
        allexec \
@@ -45,7 +46,7 @@ check_PROGRAMS = \
        test_isa_2_06_part1 \
        test_isa_2_06_part2 \
        test_isa_2_06_part3 \
-       test_dfp1 test_dfp2 test_dfp3 test_dfp4
+       test_dfp1 test_dfp2 test_dfp3 test_dfp4 test_dfp5
 
 
 AM_CFLAGS    += @FLAG_M32@
@@ -100,3 +101,6 @@ test_dfp3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG)
 
 test_dfp4_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG) \
                        @FLAG_M32@ $(BUILD_FLAGS_DFP)
+
+test_dfp5_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG) \
+                       @FLAG_M32@ $(BUILD_FLAGS_DFP)
diff --git a/none/tests/ppc32/test_dfp5.c b/none/tests/ppc32/test_dfp5.c
new file mode 100644 (file)
index 0000000..d1d2a75
--- /dev/null
@@ -0,0 +1,595 @@
+/*  Copyright (C) 2012 IBM
+
+ Author: Maynard Johnson <maynardj@us.ibm.com>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#if defined(HAS_DFP)
+
+typedef union stuff {
+   _Decimal64  dec_val;
+   _Decimal128  dec_val128;
+   unsigned long long u64_val;
+   struct {
+      unsigned long long valu;
+      unsigned long long vall;
+   } u128;
+} dfp_val_t;
+
+
+typedef unsigned char Bool;
+#define True 1
+#define False 0
+
+
+#define ALLCR "cr0","cr1","cr2","cr3","cr4","cr5","cr6","cr7"
+
+#define SET_CR(_arg) \
+      __asm__ __volatile__ ("mtcr  %0" : : "b"(_arg) : ALLCR );
+
+#define SET_XER(_arg) \
+      __asm__ __volatile__ ("mtxer %0" : : "b"(_arg) : "xer" );
+
+#define GET_CR(_lval) \
+      __asm__ __volatile__ ("mfcr %0"  : "=b"(_lval) )
+
+#define GET_XER(_lval) \
+      __asm__ __volatile__ ("mfxer %0" : "=b"(_lval) )
+
+#define GET_CR_XER(_lval_cr,_lval_xer) \
+   do { GET_CR(_lval_cr); GET_XER(_lval_xer); } while (0)
+
+#define SET_CR_ZERO \
+      SET_CR(0)
+
+#define SET_XER_ZERO \
+      SET_XER(0)
+
+#define SET_CR_XER_ZERO \
+   do { SET_CR_ZERO; SET_XER_ZERO; } while (0)
+
+#define SET_FPSCR_ZERO \
+   do { double _d = 0.0; \
+        __asm__ __volatile__ ("mtfsf 0xFF, %0" : : "f"(_d) ); \
+   } while (0)
+
+#define GET_FPSCR(_arg) \
+    __asm__ __volatile__ ("mffs %0"  : "=f"(_arg) )
+
+#define SET_FPSCR_DRN \
+    __asm__ __volatile__ ("mtfsf  1, %0, 0, 1" :  : "f"(f14) )
+
+#ifndef __powerpc64__
+typedef uint32_t HWord_t;
+#else
+typedef uint64_t HWord_t;
+#endif /* __powerpc64__ */
+
+enum BF_vals { BF_val1 = 0, BF_val2 = 1, BF_val3 =6};
+
+// The assembly-level instructions being tested
+static void _test_dtstsf(unsigned int BF, unsigned int ref_sig, dfp_val_t valB)
+{
+   _Decimal64 f16 = valB.dec_val;
+   register HWord_t r14 __asm__ ("r14");
+   double f14;
+   r14 = (HWord_t)&ref_sig;
+
+   __asm __volatile__ ("lfiwax %0, 0, %1" : "=f" (f14): "r" (r14));
+   switch (BF) {
+      case BF_val1:
+         __asm__ __volatile__ ("dtstsf %0, %1, %2" : : "i" (BF_val1), "f" (f14), "f" (f16));
+         break;
+      case BF_val2:
+         __asm__ __volatile__ ("dtstsf %0, %1, %2" : : "i" (BF_val2), "f" (f14), "f" (f16));
+         break;
+      case BF_val3:
+         __asm__ __volatile__ ("dtstsf %0, %1, %2" : : "i" (BF_val3), "f" (f14), "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for BF\n", BF);
+         break;
+   }
+}
+
+static void _test_dtstsfq(unsigned int BF, unsigned int ref_sig, dfp_val_t valB)
+{
+   _Decimal128 f16 = valB.dec_val128;
+   register HWord_t r14 __asm__ ("r14");
+   double f14;
+   r14 = (HWord_t)&ref_sig;
+
+   __asm __volatile__ ("lfiwax %0, 0, %1" : "=f" (f14): "r" (r14));
+   switch (BF) {
+      case BF_val1:
+         __asm__ __volatile__ ("dtstsfq %0, %1, %2" : : "i" (BF_val1), "f" (f14), "f" (f16));
+         break;
+      case BF_val2:
+         __asm__ __volatile__ ("dtstsfq %0, %1, %2" : : "i" (BF_val2), "f" (f14), "f" (f16));
+         break;
+      case BF_val3:
+         __asm__ __volatile__ ("dtstsfq %0, %1, %2" : : "i" (BF_val3), "f" (f14), "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for BF\n", BF);
+         break;
+   }
+}
+
+static dfp_val_t _test_ddedpd(unsigned int SP, dfp_val_t valB)
+{
+   _Decimal64 ret;
+   dfp_val_t result;
+   _Decimal64 f16 = valB.dec_val;
+   switch (SP) {
+      case 0:
+         __asm__ __volatile__ ("ddedpd. 0, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 1:
+         __asm__ __volatile__ ("ddedpd. 1, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 2:
+         __asm__ __volatile__ ("ddedpd. 2, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 3:
+         __asm__ __volatile__ ("ddedpd. 3, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for SP\n", SP);
+         break;
+   }
+   result.dec_val = ret;
+   return result;
+}
+
+
+static dfp_val_t _test_ddedpdq(unsigned int SP, dfp_val_t valB)
+{
+   _Decimal128 ret;
+   dfp_val_t result;
+   _Decimal128 f16 = valB.dec_val128;
+   switch (SP) {
+      case 0:
+         __asm__ __volatile__ ("ddedpdq 0, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 1:
+         __asm__ __volatile__ ("ddedpdq 1, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 2:
+         __asm__ __volatile__ ("ddedpdq 2, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 3:
+         __asm__ __volatile__ ("ddedpdq 3, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for SP\n", SP);
+         break;
+   }
+   result.dec_val128 = ret;
+   return result;
+}
+
+static dfp_val_t _test_denbcd(unsigned int S, dfp_val_t valB)
+{
+   _Decimal64 ret;
+   dfp_val_t result;
+   _Decimal64 f16 = valB.dec_val;
+   switch (S) {
+      case 0:
+         __asm__ __volatile__ ("denbcd. 0, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 1:
+         __asm__ __volatile__ ("denbcd. 1, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for S\n", S);
+         break;
+   }
+   result.dec_val = ret;
+   return result;
+}
+
+
+static dfp_val_t _test_denbcdq(unsigned int S, dfp_val_t valB)
+{
+   _Decimal128 ret;
+   dfp_val_t result;
+   _Decimal128 f16 = valB.dec_val128;
+   switch (S) {
+      case 0:
+         __asm__ __volatile__ ("denbcdq 0, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      case 1:
+         __asm__ __volatile__ ("denbcdq 1, %0, %1" : "=f" (ret) : "f" (f16));
+         break;
+      default:
+         fprintf(stderr, "Invalid value %d for S\n", S);
+         break;
+   }
+   result.dec_val128 = ret;
+   return result;
+}
+
+
+typedef void (*test_func_t)(unsigned int imm, unsigned int imm2,  dfp_val_t valB);
+typedef dfp_val_t (*test_func_bcd_t)(unsigned int imm, dfp_val_t valB);
+typedef void (*test_driver_func_t)(void);
+typedef struct test_table
+{
+   test_driver_func_t test_category;
+   char * name;
+} test_table_t;
+
+/*
+ *  345.0DD (0x2207c00000000000 0xe50)
+ *  1.2300e+5DD (0x2207c00000000000 0x14c000)
+ *  -16.0DD (0xa207c00000000000 0xe0)
+ *  0.00189DD (0x2206c00000000000 0xcf)
+ *  -4.1235DD (0xa205c00000000000 0x10a395bcf)
+ *  9.8399e+20DD (0x2209400000000000 0x253f1f534acdd4)
+ *  0DD (0x2208000000000000 0x0)
+ *  0DD (0x2208000000000000 0x0)
+ *  infDD (0x7800000000000000 0x0)
+ *  nanDD (0x7c00000000000000 0x0
+ */
+static unsigned long long dfp128_vals[] = {
+                                    // Some finite numbers
+                                    0x2207c00000000000ULL, 0x0000000000000e50ULL,
+                                    0x2207c00000000000ULL, 0x000000000014c000ULL,
+                                    0xa207c00000000000ULL, 0x00000000000000e0ULL,
+                                    0x2206c00000000000ULL, 0x00000000000000cfULL,
+                                    0xa205c00000000000ULL, 0x000000010a395bcfULL,
+                                    0x6209400000fd0000ULL, 0x00253f1f534acdd4ULL, // huge number
+                                    0x000400000089b000ULL, 0x0a6000d000000049ULL, // very small number
+                                    // flavors of zero
+                                    0x2208000000000000ULL, 0x0000000000000000ULL,
+                                    0xa208000000000000ULL, 0x0000000000000000ULL, // negative
+                                    0xa248000000000000ULL, 0x0000000000000000ULL,
+                                    // flavors of NAN
+                                    0x7c00000000000000ULL, 0x0000000000000000ULL, // quiet
+                                    0xfc00000000000000ULL, 0xc00100035b007700ULL,
+                                    0x7e00000000000000ULL, 0xfe000000d0e0a0d0ULL, // signaling
+                                    // flavors of Infinity
+                                    0x7800000000000000ULL, 0x0000000000000000ULL,
+                                    0xf800000000000000ULL, 0x0000000000000000ULL, // negative
+                                    0xf900000000000000ULL, 0x0000000000000000ULL
+};
+
+static unsigned long long dfp64_vals[] = {
+                                 // various finite numbers
+                                 0x2234000000000e50ULL,
+                                 0x223400000014c000ULL,
+                                 0xa2340000000000e0ULL,// negative
+                                 0x22240000000000cfULL,
+                                 0xa21400010a395bcfULL,// negative
+                                 0x6e4d3f1f534acdd4ULL,// huge number
+                                 0x000400000089b000ULL,// very small number
+                                 // flavors of zero
+                                 0x2238000000000000ULL,
+                                 0xa238000000000000ULL,
+                                 0x4248000000000000ULL,
+                                 // flavors of NAN
+                                 0x7e34000000000111ULL,
+                                 0xfe000000d0e0a0d0ULL,//signaling
+                                 0xfc00000000000000ULL,//quiet
+                                 // flavors of Infinity
+                                 0x7800000000000000ULL,
+                                 0xf800000000000000ULL,//negative
+                                 0x7a34000000000000ULL,
+};
+
+/* The bcd64_vals and bdc128_vals hold the unique results of executing
+ * the ddedpd instruction on the basic dfp64 and dfp128 array values.
+ * Executing the inverse operation (denbcd) on these values with the
+ * appropriate S (signed) value should yield values approximating the
+ * original dfp values (except being 2^4 in magnitude since the decoding
+ * operation shifted the value one hex digit to the left to make room
+ * for signedness info).
+ */
+static unsigned long long bcd64_vals[] = {
+                                          0x0000000000003450ULL,
+                                          0x000000000003450cULL,
+                                          0x000000000003450fULL,
+                                          0x0000000001230000ULL,
+                                          0x000000001230000cULL,
+                                          0x000000001230000fULL,
+                                          0x0000000000000160ULL,
+                                          0x000000000000160dULL,
+                                          0x0000000000000189ULL,
+                                          0x000000000000189cULL,
+                                          0x000000000000189fULL,
+                                          0x0000004123456789ULL,
+                                          0x000004123456789dULL,
+                                          0x9839871234533354ULL,
+                                          0x839871234533354cULL,
+                                          0x839871234533354fULL,
+                                          0x0000000008864000ULL,
+                                          0x000000008864000cULL,
+                                          0x000000008864000fULL,
+                                          0x0000000000000000ULL,
+                                          0x000000000000000cULL,
+                                          0x000000000000000fULL,
+                                          0x000000000000000dULL,
+                                          0x0000000000000211ULL,
+                                          0x000000000000211cULL,
+                                          0x000000000000211fULL,
+                                          0x0000003882028150ULL,
+                                          0x000003882028150dULL
+ };
+
+static unsigned long long bcd128_vals[] = {
+                                           0x0000000000000000ULL, 0x0000000000003450ULL,
+                                           0x0000000000000000ULL, 0x000000000003450cULL,
+                                           0x0000000000000000ULL, 0x000000000003450fULL,
+                                           0x0000000000000000ULL, 0x0000000001230000ULL,
+                                           0x0000000000000000ULL, 0x000000001230000cULL,
+                                           0x0000000000000000ULL, 0x000000001230000fULL,
+                                           0x0000000000000000ULL, 0x0000000000000160ULL,
+                                           0x0000000000000000ULL, 0x000000000000160dULL,
+                                           0x0000000000000000ULL, 0x0000000000000189ULL,
+                                           0x0000000000000000ULL, 0x000000000000189cULL,
+                                           0x0000000000000000ULL, 0x000000000000189fULL,
+                                           0x0000000000000000ULL, 0x0000004123456789ULL,
+                                           0x0000000000000000ULL, 0x000004123456789dULL,
+                                           0x0000097100000000ULL, 0x9839871234533354ULL,
+                                           0x0000971000000009ULL, 0x839871234533354cULL,
+                                           0x0000971000000009ULL, 0x839871234533354fULL,
+                                           0x0000010954000051ULL, 0x8000640000000049ULL,
+                                           0x0000109540000518ULL, 0x000640000000049cULL,
+                                           0x0000109540000518ULL, 0x000640000000049fULL,
+                                           0x0000000000000000ULL, 0x0000000000000000ULL,
+                                           0x0000000000000000ULL, 0x000000000000000cULL,
+                                           0x0000000000000000ULL, 0x000000000000000fULL,
+                                           0x0000000000000000ULL, 0x000000000000000dULL,
+                                           0x0000000000080000ULL, 0x0200801330811600ULL,
+                                           0x0000000000800000ULL, 0x200801330811600dULL,
+                                           0x0000000000088170ULL, 0x0000003882028150ULL,
+                                           0x0000000000881700ULL, 0x000003882028150cULL,
+                                           0x0000000000881700ULL, 0x000003882028150fULL
+};
+
+// Both Long and Quad arrays of DFP values should have the same length, so it
+// doesn't matter which array I use for calculating the following #define.
+#define NUM_DFP_VALS (sizeof(dfp64_vals)/8)
+
+typedef enum {
+   LONG_TEST,
+   QUAD_TEST
+} precision_type_t;
+
+typedef struct dfp_one_arg_test
+{
+   test_func_t test_func;
+   const char * name;
+   precision_type_t precision;
+   const char * op;
+} dfp_one_arg_test_t;
+
+typedef struct dfp_one_arg_bcd_test
+{
+   test_func_bcd_t test_func;
+   const char * name;
+   precision_type_t precision;
+   const char * op;
+} dfp_one_arg_bcd_test_t;
+
+static dfp_one_arg_bcd_test_t
+dfp_test_dfp_ddedpd_tests[] = {
+                            { &_test_ddedpd, "ddedpd", LONG_TEST, "[D->B]"},
+                            { &_test_ddedpdq, "ddedpdq", QUAD_TEST, "[D->B]"},
+                            { NULL, NULL, 0, NULL}
+};
+
+static void test_dfp_ddedpd_ops(void)
+{
+   test_func_bcd_t func;
+   dfp_val_t test_val;
+
+   int k = 0;
+
+   while ((func = dfp_test_dfp_ddedpd_tests[k].test_func)) {
+      int i, j;
+      dfp_one_arg_bcd_test_t test_def = dfp_test_dfp_ddedpd_tests[k];
+
+      for (i = 0; i < NUM_DFP_VALS; i++) {
+         unsigned int SP;
+
+         if (test_def.precision == LONG_TEST) {
+            test_val.u64_val = dfp64_vals[i];
+         } else {
+            test_val.u128.valu = dfp128_vals[i * 2];
+            test_val.u64_val = test_val.u128.valu;
+            test_val.u128.vall = dfp128_vals[(i * 2) + 1];
+         }
+
+         for (SP = 0; SP < 4; SP++) {
+            dfp_val_t result;
+            result = (*func)(SP, test_val);
+            printf("%s (SP=%d) %s%016llx", test_def.name, SP,
+                   test_def.op, test_val.u64_val);
+            if (test_def.precision == QUAD_TEST) {
+               printf(" %016llx", test_val.u128.vall);
+            }
+            if (test_def.precision == LONG_TEST)
+               printf(" ==> %016llx\n", result.u64_val);
+            else
+               printf(" ==> %016llx %016llx\n", result.u128.valu, result.u128.vall);
+         }
+      }
+      k++;
+      printf( "\n" );
+   }
+}
+
+static dfp_one_arg_bcd_test_t
+dfp_test_dfp_denbcd_tests[] = {
+                            { &_test_denbcd, "denbcd", LONG_TEST, "[B->D]"},
+                            { &_test_denbcdq, "denbcdq", QUAD_TEST, "[B->D]"},
+                            { NULL, NULL, 0, NULL}
+};
+
+static void test_dfp_denbcd_ops(void)
+{
+   test_func_bcd_t func;
+   dfp_val_t test_val;
+   int num_test_vals;
+
+   int k = 0;
+
+   while ((func = dfp_test_dfp_denbcd_tests[k].test_func)) {
+      int i, j;
+      dfp_one_arg_bcd_test_t test_def = dfp_test_dfp_denbcd_tests[k];
+      if (test_def.precision == LONG_TEST)
+         num_test_vals = sizeof(bcd64_vals)/sizeof(unsigned long long);
+      else
+         num_test_vals = sizeof(bcd128_vals)/(2 * sizeof(unsigned long long));
+
+      for (i = 0; i < num_test_vals; i++) {
+         unsigned int S;
+         dfp_val_t result;
+         /* The DPD-to-BCD decodings may contain up to 3 decodings for each normal DFP
+          * value: the first is an unsigned decoding, and the other two are
+          * signed decodings, with SP[1] set to '0' and '1' respectively at decode
+          * time. But some of the results of decodings were duplicates, so they were
+          * not included in the bcd64_vals and bcd128_vals arrays.
+          *
+          * When doing the encoding operation (denbcd), we'll attempt both S=0 and
+          * S=1; one or the other should encode the BCD value to something close to
+          * its original DFP value (except being 2^4 in magnitude since the decoding
+          * operation shifted the value one hex digit to the left to make room
+          * for signedness info).
+          */
+         for (S = 0; S < 2; S++) {
+            if (test_def.precision == LONG_TEST) {
+               test_val.u64_val = bcd64_vals[i];
+            } else {
+               test_val.u128.valu = bcd128_vals[i * 2];
+               test_val.u64_val = test_val.u128.valu;
+               test_val.u128.vall = bcd128_vals[(i * 2) + 1];
+            }
+
+            result = (*func)(S, test_val);
+            printf("%s (S=%d) %s%016llx", test_def.name, S,
+                   test_def.op, test_val.u64_val);
+            if (test_def.precision == QUAD_TEST) {
+               printf(" %016llx", test_val.u128.vall);
+            }
+            if (test_def.precision == LONG_TEST)
+               printf(" ==> %016llx\n", result.u64_val);
+            else
+               printf(" ==> %016llx %016llx\n", result.u128.valu, result.u128.vall);
+         }
+      }
+      k++;
+      printf( "\n" );
+   }
+}
+
+
+static dfp_one_arg_test_t
+dfp_test_significance_tests[] = {
+                                          { &_test_dtstsf,  "dtstsf", LONG_TEST, "[tSig]"},
+                                          { &_test_dtstsfq, "dtstsfq", QUAD_TEST, "[tSig]"},
+                                          { NULL, NULL, 0, NULL}
+};
+
+static void test_dfp_test_significance_ops(void)
+{
+   test_func_t func;
+   dfp_val_t test_valB;
+   int k = 0;
+   unsigned int BF_vals[] = {BF_val1, BF_val2, BF_val3};
+   unsigned int reference_sig, reference_sig_vals[] = {0U, 1U, 2U, 4U, 6U, 63U};
+   int num_reference_sig_vals = sizeof(reference_sig_vals)/sizeof(unsigned int);
+
+   while ((func = dfp_test_significance_tests[k].test_func)) {
+      int i;
+      dfp_one_arg_test_t test_def = dfp_test_significance_tests[k];
+
+      for (i = 0; i < NUM_DFP_VALS; i++) {
+         int j;
+         if (test_def.precision == LONG_TEST) {
+            test_valB.u64_val = dfp64_vals[i];
+         } else {
+            test_valB.u128.valu = dfp128_vals[i * 2];
+            test_valB.u64_val = test_valB.u128.valu;
+            test_valB.u128.vall = dfp128_vals[(i * 2) + 1];
+         }
+
+         for (j = 0; j < num_reference_sig_vals; j++) {
+            int bf_idx, BF;
+            reference_sig = reference_sig_vals[j];
+            for (bf_idx = 0; bf_idx < sizeof(BF_vals)/sizeof(unsigned int); bf_idx++) {
+               unsigned int condreg;
+               unsigned int flags;
+               BF = BF_vals[bf_idx];
+               SET_FPSCR_ZERO;
+               SET_CR_XER_ZERO;
+               (*func)(BF, reference_sig, test_valB);
+               GET_CR(flags);
+
+               condreg = ((flags >> (4 * (7-BF)))) & 0xf;
+               printf("%s (ref_sig=%d) %s%016llx", test_def.name, reference_sig,
+                      test_def.op, test_valB.u64_val);
+               if (test_def.precision == QUAD_TEST) {
+                  printf(" %016llx", test_valB.u128.vall);
+               }
+               printf(" => %x (BF=%d)\n", condreg, BF);
+            }
+         }
+         printf( "\n" );
+      }
+      k++;
+   }
+}
+
+static test_table_t
+         all_tests[] =
+{
+                    { &test_dfp_test_significance_ops,
+                      "Test DFP test significance instructions"},
+                    { &test_dfp_ddedpd_ops,
+                      "Test DFP DPD-to-BCD instructions"},
+                    { &test_dfp_denbcd_ops,
+                      "Test DFP BCD-to-DPD instructions"},
+                    { NULL, NULL }
+};
+#endif // HAS_DFP
+
+int main() {
+#if defined(HAS_DFP)
+
+   test_table_t aTest;
+   test_driver_func_t func;
+   int i = 0;
+
+   while ((func = all_tests[i].test_category)) {
+      aTest = all_tests[i];
+      printf( "%s\n", aTest.name );
+      (*func)();
+      i++;
+   }
+
+#endif // HAS_DFP
+   return 0;
+}
diff --git a/none/tests/ppc32/test_dfp5.stderr.exp b/none/tests/ppc32/test_dfp5.stderr.exp
new file mode 100644 (file)
index 0000000..139597f
--- /dev/null
@@ -0,0 +1,2 @@
+
+
diff --git a/none/tests/ppc32/test_dfp5.stdout.exp b/none/tests/ppc32/test_dfp5.stdout.exp
new file mode 100644 (file)
index 0000000..0085526
--- /dev/null
@@ -0,0 +1,855 @@
+Test DFP test significance instructions
+dtstsf (ref_sig=0) [tSig]2234000000000e50 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]2234000000000e50 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]2234000000000e50 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]2234000000000e50 => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]2234000000000e50 => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]2234000000000e50 => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]2234000000000e50 => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]2234000000000e50 => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]2234000000000e50 => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]2234000000000e50 => 2 (BF=0)
+dtstsf (ref_sig=4) [tSig]2234000000000e50 => 2 (BF=1)
+dtstsf (ref_sig=4) [tSig]2234000000000e50 => 2 (BF=6)
+dtstsf (ref_sig=6) [tSig]2234000000000e50 => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]2234000000000e50 => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]2234000000000e50 => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]2234000000000e50 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]2234000000000e50 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]2234000000000e50 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]223400000014c000 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]223400000014c000 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]223400000014c000 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]223400000014c000 => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]223400000014c000 => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]223400000014c000 => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]223400000014c000 => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]223400000014c000 => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]223400000014c000 => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]223400000014c000 => 8 (BF=0)
+dtstsf (ref_sig=4) [tSig]223400000014c000 => 8 (BF=1)
+dtstsf (ref_sig=4) [tSig]223400000014c000 => 8 (BF=6)
+dtstsf (ref_sig=6) [tSig]223400000014c000 => 8 (BF=0)
+dtstsf (ref_sig=6) [tSig]223400000014c000 => 8 (BF=1)
+dtstsf (ref_sig=6) [tSig]223400000014c000 => 8 (BF=6)
+dtstsf (ref_sig=63) [tSig]223400000014c000 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]223400000014c000 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]223400000014c000 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]a2340000000000e0 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]a2340000000000e0 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]a2340000000000e0 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]a2340000000000e0 => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]a2340000000000e0 => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]a2340000000000e0 => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]a2340000000000e0 => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]a2340000000000e0 => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]a2340000000000e0 => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]a2340000000000e0 => 4 (BF=0)
+dtstsf (ref_sig=4) [tSig]a2340000000000e0 => 4 (BF=1)
+dtstsf (ref_sig=4) [tSig]a2340000000000e0 => 4 (BF=6)
+dtstsf (ref_sig=6) [tSig]a2340000000000e0 => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]a2340000000000e0 => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]a2340000000000e0 => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]a2340000000000e0 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]a2340000000000e0 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]a2340000000000e0 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]22240000000000cf => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]22240000000000cf => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]22240000000000cf => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]22240000000000cf => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]22240000000000cf => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]22240000000000cf => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]22240000000000cf => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]22240000000000cf => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]22240000000000cf => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]22240000000000cf => 4 (BF=0)
+dtstsf (ref_sig=4) [tSig]22240000000000cf => 4 (BF=1)
+dtstsf (ref_sig=4) [tSig]22240000000000cf => 4 (BF=6)
+dtstsf (ref_sig=6) [tSig]22240000000000cf => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]22240000000000cf => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]22240000000000cf => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]22240000000000cf => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]22240000000000cf => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]22240000000000cf => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]a21400010a395bcf => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]a21400010a395bcf => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]a21400010a395bcf => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]a21400010a395bcf => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]a21400010a395bcf => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]a21400010a395bcf => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]a21400010a395bcf => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]a21400010a395bcf => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]a21400010a395bcf => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]a21400010a395bcf => 8 (BF=0)
+dtstsf (ref_sig=4) [tSig]a21400010a395bcf => 8 (BF=1)
+dtstsf (ref_sig=4) [tSig]a21400010a395bcf => 8 (BF=6)
+dtstsf (ref_sig=6) [tSig]a21400010a395bcf => 8 (BF=0)
+dtstsf (ref_sig=6) [tSig]a21400010a395bcf => 8 (BF=1)
+dtstsf (ref_sig=6) [tSig]a21400010a395bcf => 8 (BF=6)
+dtstsf (ref_sig=63) [tSig]a21400010a395bcf => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]a21400010a395bcf => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]a21400010a395bcf => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]6e4d3f1f534acdd4 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]6e4d3f1f534acdd4 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]6e4d3f1f534acdd4 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]6e4d3f1f534acdd4 => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]6e4d3f1f534acdd4 => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]6e4d3f1f534acdd4 => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]6e4d3f1f534acdd4 => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]6e4d3f1f534acdd4 => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]6e4d3f1f534acdd4 => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]6e4d3f1f534acdd4 => 8 (BF=0)
+dtstsf (ref_sig=4) [tSig]6e4d3f1f534acdd4 => 8 (BF=1)
+dtstsf (ref_sig=4) [tSig]6e4d3f1f534acdd4 => 8 (BF=6)
+dtstsf (ref_sig=6) [tSig]6e4d3f1f534acdd4 => 8 (BF=0)
+dtstsf (ref_sig=6) [tSig]6e4d3f1f534acdd4 => 8 (BF=1)
+dtstsf (ref_sig=6) [tSig]6e4d3f1f534acdd4 => 8 (BF=6)
+dtstsf (ref_sig=63) [tSig]6e4d3f1f534acdd4 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]6e4d3f1f534acdd4 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]6e4d3f1f534acdd4 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]000400000089b000 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]000400000089b000 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]000400000089b000 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]000400000089b000 => 8 (BF=0)
+dtstsf (ref_sig=1) [tSig]000400000089b000 => 8 (BF=1)
+dtstsf (ref_sig=1) [tSig]000400000089b000 => 8 (BF=6)
+dtstsf (ref_sig=2) [tSig]000400000089b000 => 8 (BF=0)
+dtstsf (ref_sig=2) [tSig]000400000089b000 => 8 (BF=1)
+dtstsf (ref_sig=2) [tSig]000400000089b000 => 8 (BF=6)
+dtstsf (ref_sig=4) [tSig]000400000089b000 => 8 (BF=0)
+dtstsf (ref_sig=4) [tSig]000400000089b000 => 8 (BF=1)
+dtstsf (ref_sig=4) [tSig]000400000089b000 => 8 (BF=6)
+dtstsf (ref_sig=6) [tSig]000400000089b000 => 8 (BF=0)
+dtstsf (ref_sig=6) [tSig]000400000089b000 => 8 (BF=1)
+dtstsf (ref_sig=6) [tSig]000400000089b000 => 8 (BF=6)
+dtstsf (ref_sig=63) [tSig]000400000089b000 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]000400000089b000 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]000400000089b000 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]2238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=1) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=1) [tSig]2238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=2) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=2) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=2) [tSig]2238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=4) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=4) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=4) [tSig]2238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=6) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]2238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]2238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]2238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]2238000000000000 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]a238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=1) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=1) [tSig]a238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=2) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=2) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=2) [tSig]a238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=4) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=4) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=4) [tSig]a238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=6) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]a238000000000000 => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]a238000000000000 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]a238000000000000 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]a238000000000000 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=0) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=0) [tSig]4248000000000000 => 4 (BF=6)
+dtstsf (ref_sig=1) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=1) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=1) [tSig]4248000000000000 => 4 (BF=6)
+dtstsf (ref_sig=2) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=2) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=2) [tSig]4248000000000000 => 4 (BF=6)
+dtstsf (ref_sig=4) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=4) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=4) [tSig]4248000000000000 => 4 (BF=6)
+dtstsf (ref_sig=6) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=6) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=6) [tSig]4248000000000000 => 4 (BF=6)
+dtstsf (ref_sig=63) [tSig]4248000000000000 => 4 (BF=0)
+dtstsf (ref_sig=63) [tSig]4248000000000000 => 4 (BF=1)
+dtstsf (ref_sig=63) [tSig]4248000000000000 => 4 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]7e34000000000111 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]7e34000000000111 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]7e34000000000111 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]7e34000000000111 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]7e34000000000111 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]7e34000000000111 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]7e34000000000111 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]7e34000000000111 => 1 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]fe000000d0e0a0d0 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]fe000000d0e0a0d0 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]fe000000d0e0a0d0 => 1 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]fc00000000000000 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]fc00000000000000 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]fc00000000000000 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]fc00000000000000 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]fc00000000000000 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]fc00000000000000 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]fc00000000000000 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]fc00000000000000 => 1 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]7800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]7800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]7800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]7800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]7800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]7800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]7800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]7800000000000000 => 1 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]f800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]f800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]f800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]f800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]f800000000000000 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]f800000000000000 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]f800000000000000 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]f800000000000000 => 1 (BF=6)
+
+dtstsf (ref_sig=0) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=0) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=0) [tSig]7a34000000000000 => 1 (BF=6)
+dtstsf (ref_sig=1) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=1) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=1) [tSig]7a34000000000000 => 1 (BF=6)
+dtstsf (ref_sig=2) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=2) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=2) [tSig]7a34000000000000 => 1 (BF=6)
+dtstsf (ref_sig=4) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=4) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=4) [tSig]7a34000000000000 => 1 (BF=6)
+dtstsf (ref_sig=6) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=6) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=6) [tSig]7a34000000000000 => 1 (BF=6)
+dtstsf (ref_sig=63) [tSig]7a34000000000000 => 1 (BF=0)
+dtstsf (ref_sig=63) [tSig]7a34000000000000 => 1 (BF=1)
+dtstsf (ref_sig=63) [tSig]7a34000000000000 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 0000000000000e50 => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 0000000000000e50 => 2 (BF=0)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 0000000000000e50 => 2 (BF=1)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 0000000000000e50 => 2 (BF=6)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 0000000000000e50 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 000000000014c000 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 000000000014c000 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]2207c00000000000 000000000014c000 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 000000000014c000 => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 000000000014c000 => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]2207c00000000000 000000000014c000 => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 000000000014c000 => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 000000000014c000 => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]2207c00000000000 000000000014c000 => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 000000000014c000 => 8 (BF=0)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 000000000014c000 => 8 (BF=1)
+dtstsfq (ref_sig=4) [tSig]2207c00000000000 000000000014c000 => 8 (BF=6)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 000000000014c000 => 8 (BF=0)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 000000000014c000 => 8 (BF=1)
+dtstsfq (ref_sig=6) [tSig]2207c00000000000 000000000014c000 => 8 (BF=6)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 000000000014c000 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 000000000014c000 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]2207c00000000000 000000000014c000 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]a207c00000000000 00000000000000e0 => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=0)
+dtstsfq (ref_sig=4) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=1)
+dtstsfq (ref_sig=4) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=6)
+dtstsfq (ref_sig=6) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]a207c00000000000 00000000000000e0 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]2206c00000000000 00000000000000cf => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]2206c00000000000 00000000000000cf => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]2206c00000000000 00000000000000cf => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]2206c00000000000 00000000000000cf => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]2206c00000000000 00000000000000cf => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]2206c00000000000 00000000000000cf => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]2206c00000000000 00000000000000cf => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]2206c00000000000 00000000000000cf => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]2206c00000000000 00000000000000cf => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]2206c00000000000 00000000000000cf => 4 (BF=0)
+dtstsfq (ref_sig=4) [tSig]2206c00000000000 00000000000000cf => 4 (BF=1)
+dtstsfq (ref_sig=4) [tSig]2206c00000000000 00000000000000cf => 4 (BF=6)
+dtstsfq (ref_sig=6) [tSig]2206c00000000000 00000000000000cf => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]2206c00000000000 00000000000000cf => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]2206c00000000000 00000000000000cf => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]2206c00000000000 00000000000000cf => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]2206c00000000000 00000000000000cf => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]2206c00000000000 00000000000000cf => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=0)
+dtstsfq (ref_sig=4) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=1)
+dtstsfq (ref_sig=4) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=6)
+dtstsfq (ref_sig=6) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=0)
+dtstsfq (ref_sig=6) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=1)
+dtstsfq (ref_sig=6) [tSig]a205c00000000000 000000010a395bcf => 8 (BF=6)
+dtstsfq (ref_sig=63) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]a205c00000000000 000000010a395bcf => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=0)
+dtstsfq (ref_sig=4) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=1)
+dtstsfq (ref_sig=4) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=6)
+dtstsfq (ref_sig=6) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=0)
+dtstsfq (ref_sig=6) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=1)
+dtstsfq (ref_sig=6) [tSig]6209400000fd0000 00253f1f534acdd4 => 8 (BF=6)
+dtstsfq (ref_sig=63) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]6209400000fd0000 00253f1f534acdd4 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=0)
+dtstsfq (ref_sig=1) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=1)
+dtstsfq (ref_sig=1) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=6)
+dtstsfq (ref_sig=2) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=0)
+dtstsfq (ref_sig=2) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=1)
+dtstsfq (ref_sig=2) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=6)
+dtstsfq (ref_sig=4) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=0)
+dtstsfq (ref_sig=4) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=1)
+dtstsfq (ref_sig=4) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=6)
+dtstsfq (ref_sig=6) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=0)
+dtstsfq (ref_sig=6) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=1)
+dtstsfq (ref_sig=6) [tSig]000400000089b000 0a6000d000000049 => 8 (BF=6)
+dtstsfq (ref_sig=63) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]000400000089b000 0a6000d000000049 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=1) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=1) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=2) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=2) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=2) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=4) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=4) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=4) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=6) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]2208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]2208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]2208000000000000 0000000000000000 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=1) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=1) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=2) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=2) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=2) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=4) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=4) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=4) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=6) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]a208000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]a208000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]a208000000000000 0000000000000000 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=0) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=0) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=1) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=1) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=1) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=2) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=2) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=2) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=4) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=4) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=4) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=6) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=6) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=6) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+dtstsfq (ref_sig=63) [tSig]a248000000000000 0000000000000000 => 4 (BF=0)
+dtstsfq (ref_sig=63) [tSig]a248000000000000 0000000000000000 => 4 (BF=1)
+dtstsfq (ref_sig=63) [tSig]a248000000000000 0000000000000000 => 4 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]7c00000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]7c00000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]7c00000000000000 0000000000000000 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]fc00000000000000 c00100035b007700 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]7e00000000000000 fe000000d0e0a0d0 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]7800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]7800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]7800000000000000 0000000000000000 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]f800000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]f800000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]f800000000000000 0000000000000000 => 1 (BF=6)
+
+dtstsfq (ref_sig=0) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=0) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=0) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=1) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=1) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=1) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=2) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=2) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=2) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=4) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=4) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=4) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=6) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=6) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=6) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+dtstsfq (ref_sig=63) [tSig]f900000000000000 0000000000000000 => 1 (BF=0)
+dtstsfq (ref_sig=63) [tSig]f900000000000000 0000000000000000 => 1 (BF=1)
+dtstsfq (ref_sig=63) [tSig]f900000000000000 0000000000000000 => 1 (BF=6)
+
+Test DFP DPD-to-BCD instructions
+ddedpd (SP=0) [D->B]2234000000000e50 ==> 0000000000003450
+ddedpd (SP=1) [D->B]2234000000000e50 ==> 0000000000003450
+ddedpd (SP=2) [D->B]2234000000000e50 ==> 000000000003450c
+ddedpd (SP=3) [D->B]2234000000000e50 ==> 000000000003450f
+ddedpd (SP=0) [D->B]223400000014c000 ==> 0000000001230000
+ddedpd (SP=1) [D->B]223400000014c000 ==> 0000000001230000
+ddedpd (SP=2) [D->B]223400000014c000 ==> 000000001230000c
+ddedpd (SP=3) [D->B]223400000014c000 ==> 000000001230000f
+ddedpd (SP=0) [D->B]a2340000000000e0 ==> 0000000000000160
+ddedpd (SP=1) [D->B]a2340000000000e0 ==> 0000000000000160
+ddedpd (SP=2) [D->B]a2340000000000e0 ==> 000000000000160d
+ddedpd (SP=3) [D->B]a2340000000000e0 ==> 000000000000160d
+ddedpd (SP=0) [D->B]22240000000000cf ==> 0000000000000189
+ddedpd (SP=1) [D->B]22240000000000cf ==> 0000000000000189
+ddedpd (SP=2) [D->B]22240000000000cf ==> 000000000000189c
+ddedpd (SP=3) [D->B]22240000000000cf ==> 000000000000189f
+ddedpd (SP=0) [D->B]a21400010a395bcf ==> 0000004123456789
+ddedpd (SP=1) [D->B]a21400010a395bcf ==> 0000004123456789
+ddedpd (SP=2) [D->B]a21400010a395bcf ==> 000004123456789d
+ddedpd (SP=3) [D->B]a21400010a395bcf ==> 000004123456789d
+ddedpd (SP=0) [D->B]6e4d3f1f534acdd4 ==> 9839871234533354
+ddedpd (SP=1) [D->B]6e4d3f1f534acdd4 ==> 9839871234533354
+ddedpd (SP=2) [D->B]6e4d3f1f534acdd4 ==> 839871234533354c
+ddedpd (SP=3) [D->B]6e4d3f1f534acdd4 ==> 839871234533354f
+ddedpd (SP=0) [D->B]000400000089b000 ==> 0000000008864000
+ddedpd (SP=1) [D->B]000400000089b000 ==> 0000000008864000
+ddedpd (SP=2) [D->B]000400000089b000 ==> 000000008864000c
+ddedpd (SP=3) [D->B]000400000089b000 ==> 000000008864000f
+ddedpd (SP=0) [D->B]2238000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]2238000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]2238000000000000 ==> 000000000000000c
+ddedpd (SP=3) [D->B]2238000000000000 ==> 000000000000000f
+ddedpd (SP=0) [D->B]a238000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]a238000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]a238000000000000 ==> 000000000000000d
+ddedpd (SP=3) [D->B]a238000000000000 ==> 000000000000000d
+ddedpd (SP=0) [D->B]4248000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]4248000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]4248000000000000 ==> 000000000000000c
+ddedpd (SP=3) [D->B]4248000000000000 ==> 000000000000000f
+ddedpd (SP=0) [D->B]7e34000000000111 ==> 0000000000000211
+ddedpd (SP=1) [D->B]7e34000000000111 ==> 0000000000000211
+ddedpd (SP=2) [D->B]7e34000000000111 ==> 000000000000211c
+ddedpd (SP=3) [D->B]7e34000000000111 ==> 000000000000211f
+ddedpd (SP=0) [D->B]fe000000d0e0a0d0 ==> 0000003882028150
+ddedpd (SP=1) [D->B]fe000000d0e0a0d0 ==> 0000003882028150
+ddedpd (SP=2) [D->B]fe000000d0e0a0d0 ==> 000003882028150d
+ddedpd (SP=3) [D->B]fe000000d0e0a0d0 ==> 000003882028150d
+ddedpd (SP=0) [D->B]fc00000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]fc00000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]fc00000000000000 ==> 000000000000000d
+ddedpd (SP=3) [D->B]fc00000000000000 ==> 000000000000000d
+ddedpd (SP=0) [D->B]7800000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]7800000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]7800000000000000 ==> 000000000000000c
+ddedpd (SP=3) [D->B]7800000000000000 ==> 000000000000000f
+ddedpd (SP=0) [D->B]f800000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]f800000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]f800000000000000 ==> 000000000000000d
+ddedpd (SP=3) [D->B]f800000000000000 ==> 000000000000000d
+ddedpd (SP=0) [D->B]7a34000000000000 ==> 0000000000000000
+ddedpd (SP=1) [D->B]7a34000000000000 ==> 0000000000000000
+ddedpd (SP=2) [D->B]7a34000000000000 ==> 000000000000000c
+ddedpd (SP=3) [D->B]7a34000000000000 ==> 000000000000000f
+
+ddedpdq (SP=0) [D->B]2207c00000000000 0000000000000e50 ==> 0000000000000000 0000000000003450
+ddedpdq (SP=1) [D->B]2207c00000000000 0000000000000e50 ==> 0000000000000000 0000000000003450
+ddedpdq (SP=2) [D->B]2207c00000000000 0000000000000e50 ==> 0000000000000000 000000000003450c
+ddedpdq (SP=3) [D->B]2207c00000000000 0000000000000e50 ==> 0000000000000000 000000000003450f
+ddedpdq (SP=0) [D->B]2207c00000000000 000000000014c000 ==> 0000000000000000 0000000001230000
+ddedpdq (SP=1) [D->B]2207c00000000000 000000000014c000 ==> 0000000000000000 0000000001230000
+ddedpdq (SP=2) [D->B]2207c00000000000 000000000014c000 ==> 0000000000000000 000000001230000c
+ddedpdq (SP=3) [D->B]2207c00000000000 000000000014c000 ==> 0000000000000000 000000001230000f
+ddedpdq (SP=0) [D->B]a207c00000000000 00000000000000e0 ==> 0000000000000000 0000000000000160
+ddedpdq (SP=1) [D->B]a207c00000000000 00000000000000e0 ==> 0000000000000000 0000000000000160
+ddedpdq (SP=2) [D->B]a207c00000000000 00000000000000e0 ==> 0000000000000000 000000000000160d
+ddedpdq (SP=3) [D->B]a207c00000000000 00000000000000e0 ==> 0000000000000000 000000000000160d
+ddedpdq (SP=0) [D->B]2206c00000000000 00000000000000cf ==> 0000000000000000 0000000000000189
+ddedpdq (SP=1) [D->B]2206c00000000000 00000000000000cf ==> 0000000000000000 0000000000000189
+ddedpdq (SP=2) [D->B]2206c00000000000 00000000000000cf ==> 0000000000000000 000000000000189c
+ddedpdq (SP=3) [D->B]2206c00000000000 00000000000000cf ==> 0000000000000000 000000000000189f
+ddedpdq (SP=0) [D->B]a205c00000000000 000000010a395bcf ==> 0000000000000000 0000004123456789
+ddedpdq (SP=1) [D->B]a205c00000000000 000000010a395bcf ==> 0000000000000000 0000004123456789
+ddedpdq (SP=2) [D->B]a205c00000000000 000000010a395bcf ==> 0000000000000000 000004123456789d
+ddedpdq (SP=3) [D->B]a205c00000000000 000000010a395bcf ==> 0000000000000000 000004123456789d
+ddedpdq (SP=0) [D->B]6209400000fd0000 00253f1f534acdd4 ==> 0000097100000000 9839871234533354
+ddedpdq (SP=1) [D->B]6209400000fd0000 00253f1f534acdd4 ==> 0000097100000000 9839871234533354
+ddedpdq (SP=2) [D->B]6209400000fd0000 00253f1f534acdd4 ==> 0000971000000009 839871234533354c
+ddedpdq (SP=3) [D->B]6209400000fd0000 00253f1f534acdd4 ==> 0000971000000009 839871234533354f
+ddedpdq (SP=0) [D->B]000400000089b000 0a6000d000000049 ==> 0000010954000051 8000640000000049
+ddedpdq (SP=1) [D->B]000400000089b000 0a6000d000000049 ==> 0000010954000051 8000640000000049
+ddedpdq (SP=2) [D->B]000400000089b000 0a6000d000000049 ==> 0000109540000518 000640000000049c
+ddedpdq (SP=3) [D->B]000400000089b000 0a6000d000000049 ==> 0000109540000518 000640000000049f
+ddedpdq (SP=0) [D->B]2208000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]2208000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]2208000000000000 0000000000000000 ==> 0000000000000000 000000000000000c
+ddedpdq (SP=3) [D->B]2208000000000000 0000000000000000 ==> 0000000000000000 000000000000000f
+ddedpdq (SP=0) [D->B]a208000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]a208000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]a208000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=3) [D->B]a208000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=0) [D->B]a248000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]a248000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]a248000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=3) [D->B]a248000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=0) [D->B]7c00000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]7c00000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]7c00000000000000 0000000000000000 ==> 0000000000000000 000000000000000c
+ddedpdq (SP=3) [D->B]7c00000000000000 0000000000000000 ==> 0000000000000000 000000000000000f
+ddedpdq (SP=0) [D->B]fc00000000000000 c00100035b007700 ==> 0000000000080000 0200801330811600
+ddedpdq (SP=1) [D->B]fc00000000000000 c00100035b007700 ==> 0000000000080000 0200801330811600
+ddedpdq (SP=2) [D->B]fc00000000000000 c00100035b007700 ==> 0000000000800000 200801330811600d
+ddedpdq (SP=3) [D->B]fc00000000000000 c00100035b007700 ==> 0000000000800000 200801330811600d
+ddedpdq (SP=0) [D->B]7e00000000000000 fe000000d0e0a0d0 ==> 0000000000088170 0000003882028150
+ddedpdq (SP=1) [D->B]7e00000000000000 fe000000d0e0a0d0 ==> 0000000000088170 0000003882028150
+ddedpdq (SP=2) [D->B]7e00000000000000 fe000000d0e0a0d0 ==> 0000000000881700 000003882028150c
+ddedpdq (SP=3) [D->B]7e00000000000000 fe000000d0e0a0d0 ==> 0000000000881700 000003882028150f
+ddedpdq (SP=0) [D->B]7800000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]7800000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]7800000000000000 0000000000000000 ==> 0000000000000000 000000000000000c
+ddedpdq (SP=3) [D->B]7800000000000000 0000000000000000 ==> 0000000000000000 000000000000000f
+ddedpdq (SP=0) [D->B]f800000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]f800000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]f800000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=3) [D->B]f800000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=0) [D->B]f900000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=1) [D->B]f900000000000000 0000000000000000 ==> 0000000000000000 0000000000000000
+ddedpdq (SP=2) [D->B]f900000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+ddedpdq (SP=3) [D->B]f900000000000000 0000000000000000 ==> 0000000000000000 000000000000000d
+
+Test DFP BCD-to-DPD instructions
+denbcd (S=0) [B->D]0000000000003450 ==> 2238000000000e50
+denbcd (S=1) [B->D]0000000000003450 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000000003450c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000003450c ==> 2238000000000e50
+denbcd (S=0) [B->D]000000000003450f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000003450f ==> 2238000000000e50
+denbcd (S=0) [B->D]0000000001230000 ==> 223800000014c000
+denbcd (S=1) [B->D]0000000001230000 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000001230000c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000001230000c ==> 223800000014c000
+denbcd (S=0) [B->D]000000001230000f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000001230000f ==> 223800000014c000
+denbcd (S=0) [B->D]0000000000000160 ==> 22380000000000e0
+denbcd (S=1) [B->D]0000000000000160 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000000000160d ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000160d ==> a2380000000000e0
+denbcd (S=0) [B->D]0000000000000189 ==> 22380000000000cf
+denbcd (S=1) [B->D]0000000000000189 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000000000189c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000189c ==> 22380000000000cf
+denbcd (S=0) [B->D]000000000000189f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000189f ==> 22380000000000cf
+denbcd (S=0) [B->D]0000004123456789 ==> 223800010a395bcf
+denbcd (S=1) [B->D]0000004123456789 ==> 7c00000000000000
+denbcd (S=0) [B->D]000004123456789d ==> 7c00000000000000
+denbcd (S=1) [B->D]000004123456789d ==> a23800010a395bcf
+denbcd (S=0) [B->D]9839871234533354 ==> 6e393f1f534acdd4
+denbcd (S=1) [B->D]9839871234533354 ==> 7c00000000000000
+denbcd (S=0) [B->D]839871234533354c ==> 7c00000000000000
+denbcd (S=1) [B->D]839871234533354c ==> 22393f1f534acdd4
+denbcd (S=0) [B->D]839871234533354f ==> 7c00000000000000
+denbcd (S=1) [B->D]839871234533354f ==> 22393f1f534acdd4
+denbcd (S=0) [B->D]0000000008864000 ==> 223800000089b000
+denbcd (S=1) [B->D]0000000008864000 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000008864000c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000008864000c ==> 223800000089b000
+denbcd (S=0) [B->D]000000008864000f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000008864000f ==> 223800000089b000
+denbcd (S=0) [B->D]0000000000000000 ==> 2238000000000000
+denbcd (S=1) [B->D]0000000000000000 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000000000000c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000000c ==> 2238000000000000
+denbcd (S=0) [B->D]000000000000000f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000000f ==> 2238000000000000
+denbcd (S=0) [B->D]000000000000000d ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000000d ==> a238000000000000
+denbcd (S=0) [B->D]0000000000000211 ==> 2238000000000111
+denbcd (S=1) [B->D]0000000000000211 ==> 7c00000000000000
+denbcd (S=0) [B->D]000000000000211c ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000211c ==> 2238000000000111
+denbcd (S=0) [B->D]000000000000211f ==> 7c00000000000000
+denbcd (S=1) [B->D]000000000000211f ==> 2238000000000111
+denbcd (S=0) [B->D]0000003882028150 ==> 22380000d0e0a0d0
+denbcd (S=1) [B->D]0000003882028150 ==> 7c00000000000000
+denbcd (S=0) [B->D]000003882028150d ==> 7c00000000000000
+denbcd (S=1) [B->D]000003882028150d ==> a2380000d0e0a0d0
+
+denbcdq (S=0) [B->D]0000000000000000 0000000000003450 ==> 2208000000000000 0000000000000e50
+denbcdq (S=1) [B->D]0000000000000000 0000000000003450 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000003450c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000003450c ==> 2208000000000000 0000000000000e50
+denbcdq (S=0) [B->D]0000000000000000 000000000003450f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000003450f ==> 2208000000000000 0000000000000e50
+denbcdq (S=0) [B->D]0000000000000000 0000000001230000 ==> 2208000000000000 000000000014c000
+denbcdq (S=1) [B->D]0000000000000000 0000000001230000 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000001230000c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000001230000c ==> 2208000000000000 000000000014c000
+denbcdq (S=0) [B->D]0000000000000000 000000001230000f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000001230000f ==> 2208000000000000 000000000014c000
+denbcdq (S=0) [B->D]0000000000000000 0000000000000160 ==> 2208000000000000 00000000000000e0
+denbcdq (S=1) [B->D]0000000000000000 0000000000000160 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000000160d ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000160d ==> a208000000000000 00000000000000e0
+denbcdq (S=0) [B->D]0000000000000000 0000000000000189 ==> 2208000000000000 00000000000000cf
+denbcdq (S=1) [B->D]0000000000000000 0000000000000189 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000000189c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000189c ==> 2208000000000000 00000000000000cf
+denbcdq (S=0) [B->D]0000000000000000 000000000000189f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000189f ==> 2208000000000000 00000000000000cf
+denbcdq (S=0) [B->D]0000000000000000 0000004123456789 ==> 2208000000000000 000000010a395bcf
+denbcdq (S=1) [B->D]0000000000000000 0000004123456789 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000004123456789d ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000004123456789d ==> a208000000000000 000000010a395bcf
+denbcdq (S=0) [B->D]0000097100000000 9839871234533354 ==> 2208000000fd0000 00253f1f534acdd4
+denbcdq (S=1) [B->D]0000097100000000 9839871234533354 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000971000000009 839871234533354c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000971000000009 839871234533354c ==> 2208000000fd0000 00253f1f534acdd4
+denbcdq (S=0) [B->D]0000971000000009 839871234533354f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000971000000009 839871234533354f ==> 2208000000fd0000 00253f1f534acdd4
+denbcdq (S=0) [B->D]0000010954000051 8000640000000049 ==> 220800000089b000 0a6000d000000049
+denbcdq (S=1) [B->D]0000010954000051 8000640000000049 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000109540000518 000640000000049c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000109540000518 000640000000049c ==> 220800000089b000 0a6000d000000049
+denbcdq (S=0) [B->D]0000109540000518 000640000000049f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000109540000518 000640000000049f ==> 220800000089b000 0a6000d000000049
+denbcdq (S=0) [B->D]0000000000000000 0000000000000000 ==> 2208000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 0000000000000000 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000000000c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000000c ==> 2208000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000000000f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000000f ==> 2208000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000000000 000000000000000d ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000000000 000000000000000d ==> a208000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000080000 0200801330811600 ==> 2208000000000000 c00100035b007700
+denbcdq (S=1) [B->D]0000000000080000 0200801330811600 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000800000 200801330811600d ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000800000 200801330811600d ==> a208000000000000 c00100035b007700
+denbcdq (S=0) [B->D]0000000000088170 0000003882028150 ==> 2208000000000000 fe000000d0e0a0d0
+denbcdq (S=1) [B->D]0000000000088170 0000003882028150 ==> 7c00000000000000 0000000000000000
+denbcdq (S=0) [B->D]0000000000881700 000003882028150c ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000881700 000003882028150c ==> 2208000000000000 fe000000d0e0a0d0
+denbcdq (S=0) [B->D]0000000000881700 000003882028150f ==> 7c00000000000000 0000000000000000
+denbcdq (S=1) [B->D]0000000000881700 000003882028150f ==> 2208000000000000 fe000000d0e0a0d0
+
diff --git a/none/tests/ppc32/test_dfp5.vgtest b/none/tests/ppc32/test_dfp5.vgtest
new file mode 100644 (file)
index 0000000..9777d05
--- /dev/null
@@ -0,0 +1,2 @@
+prereq: ../../../tests/check_dfp_cap
+prog: test_dfp5
index 523b2ccfb08057964eed52e24f3404e8004be857..3213e53c61bb7629ac40ec10318d301867ba9295 100644 (file)
@@ -22,12 +22,13 @@ EXTRA_DIST = \
        test_dfp2.stderr.exp test_dfp2.stdout.exp test_dfp2.vgtest \
        test_dfp2.stdout.exp_Without_dcffix \
        test_dfp3.stderr.exp test_dfp3.stdout.exp test_dfp3.vgtest \
-       test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest
+       test_dfp4.stderr.exp test_dfp4.stdout.exp test_dfp4.vgtest \
+       test_dfp5.stderr.exp test_dfp5.stdout.exp test_dfp5.vgtest
 
 check_PROGRAMS = \
        allexec \
        jm-insns lsw round std_reg_imm twi_tdi tw_td power6_bcmp power6_mf_gpr test_isa_2_06_part1 \
-       test_isa_2_06_part2 test_isa_2_06_part3 test_dfp1 test_dfp2 test_dfp3 test_dfp4
+       test_isa_2_06_part2 test_isa_2_06_part3 test_dfp1 test_dfp2 test_dfp3 test_dfp4 test_dfp5
 
 AM_CFLAGS    += @FLAG_M64@
 AM_CXXFLAGS  += @FLAG_M64@
@@ -79,3 +80,7 @@ test_dfp3_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG)
 
 test_dfp4_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG) \
                        @FLAG_M64@ $(BUILD_FLAGS_DFP)
+
+test_dfp5_CFLAGS = $(AM_CFLAGS) -Winline -Wall -O -lm -g -mregnames $(DFP_FLAG) \
+                       @FLAG_M64@ $(BUILD_FLAGS_DFP)
+
diff --git a/none/tests/ppc64/test_dfp5.c b/none/tests/ppc64/test_dfp5.c
new file mode 120000 (symlink)
index 0000000..ae52602
--- /dev/null
@@ -0,0 +1 @@
+../../../none/tests/ppc32/test_dfp5.c
\ No newline at end of file
diff --git a/none/tests/ppc64/test_dfp5.stderr.exp b/none/tests/ppc64/test_dfp5.stderr.exp
new file mode 100644 (file)
index 0000000..139597f
--- /dev/null
@@ -0,0 +1,2 @@
+
+
diff --git a/none/tests/ppc64/test_dfp5.stdout.exp b/none/tests/ppc64/test_dfp5.stdout.exp
new file mode 120000 (symlink)
index 0000000..5bc4dc3
--- /dev/null
@@ -0,0 +1 @@
+../../../none/tests/ppc32/test_dfp5.stdout.exp
\ No newline at end of file
diff --git a/none/tests/ppc64/test_dfp5.vgtest b/none/tests/ppc64/test_dfp5.vgtest
new file mode 100644 (file)
index 0000000..9777d05
--- /dev/null
@@ -0,0 +1,2 @@
+prereq: ../../../tests/check_dfp_cap
+prog: test_dfp5