]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add x86 ROUNDPS and ROUNDPD
authorMark Wielaard <mark@klomp.org>
Wed, 27 May 2026 18:03:47 +0000 (20:03 +0200)
committerMark Wielaard <mark@klomp.org>
Mon, 8 Jun 2026 12:05:01 +0000 (14:05 +0200)
This completes the ROUNDPS, ROUNDSS, ROUNDPD and ROUNDSD SSE4.1
support for x86. x86 already supported SSE 4.1 ROUNDSS and ROUNDSD
instructions.

Add ROUNDPS and ROUNDPD support in VEX/priv/guest_x86_toIR.c based on
the amd64 implementation. Move the testcases from sse4-64.c to
sse4-common.h and make them use XMMREG_DST instead of xmm11 (which
isn't available on x86).

Add testcase output for test_ROUNDPD_w_immediate_rounding,
test_ROUNDPS_w_immediate_rounding, test_ROUNDPD_w_mxcsr_rounding and
test_ROUNDPS_w_mxcsr_rounding to sse4-x86.stdout.exp.

https://bugs.kde.org/show_bug.cgi?id=518220

NEWS
VEX/priv/guest_x86_toIR.c
none/tests/amd64/sse4-64.c
none/tests/sse4-common.h
none/tests/x86/sse4-x86.c
none/tests/x86/sse4-x86.stdout.exp

diff --git a/NEWS b/NEWS
index 5d79c0ad5ba68705f5934aecdccef346fcfa428f..18c8a403f9a5af9c02f7b23f6cc0c16013b08812 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -38,6 +38,7 @@ are not entered into bugzilla tend to get forgotten about or ignored.
 519613  Valgrind incorrectly unpacks the result of sys_port (port_getn)
         on error, leading to a ~60s wallclock time delay on every call
 518217  Add PHMINPOSUW SSE4.1 support for x86
+518220  Add ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD SSE4.1 support for x86
 520482  Advertise POPCNT on x86 via CPUID
 520753  Advertise LZCNT via CPUID for x86 (32-bit) clients
 520856  unhandled instruction bytes: 0x2E 0xFF 0x14 0x85
index dfba4600a9c97c01511f4c58fff172402133aa7f..f0debba4c92a91a182d284afc9525bc5721a7f99 100644 (file)
@@ -13570,6 +13570,126 @@ DisResult disInstr_X86_WRK (
       goto decode_success;
    }
 
+   /* 66 0F 3A 08 /r ib = ROUNDPS imm8, xmm2/m128, xmm1 */
+   if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x08) {
+
+      IRTemp src0 = newTemp(Ity_F32);
+      IRTemp src1 = newTemp(Ity_F32);
+      IRTemp src2 = newTemp(Ity_F32);
+      IRTemp src3 = newTemp(Ity_F32);
+      IRTemp res0 = newTemp(Ity_F32);
+      IRTemp res1 = newTemp(Ity_F32);
+      IRTemp res2 = newTemp(Ity_F32);
+      IRTemp res3 = newTemp(Ity_F32);
+      IRTemp rm   = newTemp(Ity_I32);
+      Int    imm  = 0;
+
+      modrm = insn[3];
+
+      if (epartIsReg(modrm)) {
+         assign( src0,
+                 getXMMRegLane32F( eregOfRM(modrm), 0 ) );
+         assign( src1,
+                 getXMMRegLane32F( eregOfRM(modrm), 1 ) );
+         assign( src2,
+                 getXMMRegLane32F( eregOfRM(modrm), 2 ) );
+         assign( src3,
+                 getXMMRegLane32F( eregOfRM(modrm), 3 ) );
+         imm = insn[3+1];;
+         if (imm & ~15) goto decode_failure;
+         delta += 3+1+1;
+         DIP( "roundps $%d,%s,%s\n",
+              imm, nameXMMReg( eregOfRM(modrm) ),
+              nameXMMReg( gregOfRM(modrm) ) );
+      } else {
+         addr = disAMode( &alen, sorb, delta+3, dis_buf );
+         gen_SEGV_if_not_16_aligned( addr );
+         assign( src0, loadLE(Ity_F32,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(0) )));
+         assign( src1, loadLE(Ity_F32,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(4) )));
+         assign( src2, loadLE(Ity_F32,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(8) )));
+         assign( src3, loadLE(Ity_F32,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(12) )));
+         imm = insn[3+alen];
+         if (imm & ~15) goto decode_failure;
+         delta += 3+alen+1;
+         DIP( "roundps $%d,%s,%s\n",
+              imm, dis_buf, nameXMMReg( gregOfRM(modrm) ) );
+      }
+
+      /* (imm & 3) contains an Intel-encoded rounding mode.  Because
+         that encoding is the same as the encoding for IRRoundingMode,
+         we can use that value directly in the IR as a rounding
+         mode. */
+      assign(rm, (imm & 4) ? get_sse_roundingmode() : mkU32(imm & 3));
+
+      assign(res0, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src0)) );
+      assign(res1, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src1)) );
+      assign(res2, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src2)) );
+      assign(res3, binop(Iop_RoundF32toInt, mkexpr(rm), mkexpr(src3)) );
+
+      putXMMRegLane32F( gregOfRM(modrm), 0, mkexpr(res0) );
+      putXMMRegLane32F( gregOfRM(modrm), 1, mkexpr(res1) );
+      putXMMRegLane32F( gregOfRM(modrm), 2, mkexpr(res2) );
+      putXMMRegLane32F( gregOfRM(modrm), 3, mkexpr(res3) );
+
+      goto decode_success;
+   }
+
+   /* 66 0F 3A 09 /r ib = ROUNDPD imm8, xmm2/m128, xmm1 */
+   if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x3A && insn[2] == 0x09) {
+
+      IRTemp src0 = newTemp(Ity_F64);
+      IRTemp src1 = newTemp(Ity_F64);
+      IRTemp res0 = newTemp(Ity_F64);
+      IRTemp res1 = newTemp(Ity_F64);
+      IRTemp rm   = newTemp(Ity_I32);
+      Int    imm  = 0;
+
+      modrm = insn[3];
+
+      if (epartIsReg(modrm)) {
+         assign( src0,
+                 getXMMRegLane64F( eregOfRM(modrm), 0 ) );
+         assign( src1,
+                 getXMMRegLane64F( eregOfRM(modrm), 1 ) );
+         imm = insn[3+1];
+         if (imm & ~15) goto decode_failure;
+         delta += 3+1+1;
+         DIP( "roundpd $%d,%s,%s\n",
+              imm, nameXMMReg( eregOfRM(modrm) ),
+              nameXMMReg( gregOfRM(modrm) ) );
+      } else {
+         addr = disAMode( &alen, sorb, delta+3, dis_buf );
+         gen_SEGV_if_not_16_aligned(addr);
+         assign( src0, loadLE(Ity_F64,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(0) )));
+         assign( src1, loadLE(Ity_F64,
+                              binop(Iop_Add32, mkexpr(addr), mkU32(8) )));
+         imm = insn[3+alen];
+         if (imm & ~15) goto decode_failure;
+         delta += 3+alen+1;
+         DIP( "roundpd $%d,%s,%s\n",
+              imm, dis_buf, nameXMMReg( gregOfRM(modrm) ) );
+      }
+
+      /* (imm & 3) contains an Intel-encoded rounding mode.  Because
+         that encoding is the same as the encoding for IRRoundingMode,
+         we can use that value directly in the IR as a rounding
+         mode. */
+      assign(rm, (imm & 4) ? get_sse_roundingmode() : mkU32(imm & 3));
+
+      assign(res0, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src0)) );
+      assign(res1, binop(Iop_RoundF64toInt, mkexpr(rm), mkexpr(src1)) );
+
+      putXMMRegLane64F( gregOfRM(modrm), 0, mkexpr(res0) );
+      putXMMRegLane64F( gregOfRM(modrm), 1, mkexpr(res1) );
+
+      goto decode_success;
+   }
+
    /* 66 0F 3A 0B /r ib = ROUNDSD imm8, xmm2/m64, xmm1
       66 0F 3A 0A /r ib = ROUNDSS imm8, xmm2/m32, xmm1
    */
index 43e26b548ab27b4c08590e494d9f4f98c40e5714..f8470f33ccbf4a1030f98a72f2da5ad65fe53be7 100644 (file)
@@ -1472,734 +1472,6 @@ void test_PCMPGTQ ( void )
    }
 }
 
-/* ------------ ROUNDPD ------------ */
-
-void do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundpd $0, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundpd $0, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundpd $1, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundpd $1, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundpd $2, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundpd $2, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundpd $3, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundpd $3, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundpd $4, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundpd $4, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void test_ROUNDPD_w_immediate_rounding ( void )
-{
-   double vals[22];
-   Int i = 0;
-   vals[i++] = 0.0;
-   vals[i++] = -0.0;
-   vals[i++] = mkPosInf();
-   vals[i++] = mkNegInf();
-   vals[i++] = mkPosNan();
-   vals[i++] = mkNegNan();
-   vals[i++] = -1.3;
-   vals[i++] = -1.1;
-   vals[i++] = -0.9;
-   vals[i++] = -0.7;
-   vals[i++] = -0.50001;
-   vals[i++] = -0.49999;
-   vals[i++] = -0.3;
-   vals[i++] = -0.1;
-   vals[i++] = 0.1;
-   vals[i++] = 0.3;
-   vals[i++] = 0.49999;
-   vals[i++] = 0.50001;
-   vals[i++] = 0.7;
-   vals[i++] = 0.9;
-   vals[i++] = 1.1;
-   vals[i++] = 1.3;
-   assert(i == 22);
-
-   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
-      V128 src, dst;
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_000(False/*reg*/, &src, &dst);
-      printf("r roundpd_000  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_000(True/*mem*/, &src, &dst);
-      printf("m roundpd_000  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_001(False/*reg*/, &src, &dst);
-      printf("r roundpd_001  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_001(True/*mem*/, &src, &dst);
-      printf("m roundpd_001  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_010(False/*reg*/, &src, &dst);
-      printf("r roundpd_010  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_010(True/*mem*/, &src, &dst);
-      printf("m roundpd_010  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_011(False/*reg*/, &src, &dst);
-      printf("r roundpd_011  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 8);
-      memcpy(&src[8], &vals[(i+11)%22], 8);
-      do_ROUNDPD_011(True/*mem*/, &src, &dst);
-      printf("m roundpd_011  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      printf("  ");
-      print_double_to_double(vals[i], *(double*)(&dst[0]));
-      printf("   ");
-      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-      printf("\n");
-   }
-}
-
-void test_ROUNDPD_w_mxcsr_rounding ( void )
-{
-   UInt rm;
-   double vals[22];
-   Int i = 0;
-   vals[i++] = 0.0;
-   vals[i++] = -0.0;
-   vals[i++] = mkPosInf();
-   vals[i++] = mkNegInf();
-   vals[i++] = mkPosNan();
-   vals[i++] = mkNegNan();
-   vals[i++] = -1.3;
-   vals[i++] = -1.1;
-   vals[i++] = -0.9;
-   vals[i++] = -0.7;
-   vals[i++] = -0.50001;
-   vals[i++] = -0.49999;
-   vals[i++] = -0.3;
-   vals[i++] = -0.1;
-   vals[i++] = 0.1;
-   vals[i++] = 0.3;
-   vals[i++] = 0.49999;
-   vals[i++] = 0.50001;
-   vals[i++] = 0.7;
-   vals[i++] = 0.9;
-   vals[i++] = 1.1;
-   vals[i++] = 1.3;
-   assert(i == 22);
-
-   rm = get_sse_roundingmode();
-   assert(rm == 0); // 0 == RN == default
-
-   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
-      V128 src, dst;
-
-      for (rm = 0; rm <= 3; rm++) {
-         set_sse_roundingmode(rm);
-
-         randV128(&src);
-         randV128(&dst);
-         memcpy(&src[0], &vals[i], 8);
-         memcpy(&src[8], &vals[(i+11)%22], 8);
-         do_ROUNDPD_1XX(False/*reg*/, &src, &dst);
-         printf("r (rm=%u) roundpd_1XX  ", rm);
-         showV128(&src);
-         printf(" ");
-         showV128(&dst);
-         printf("  ");
-         print_double_to_double(vals[i], *(double*)(&dst[0]));
-         printf("   ");
-         print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-         printf("\n");
-
-         randV128(&src);
-         randV128(&dst);
-         memcpy(&src[0], &vals[i], 8);
-         memcpy(&src[8], &vals[(i+11)%22], 8);
-         do_ROUNDPD_1XX(True/*mem*/, &src, &dst);
-         printf("m (rm=%u) roundpd_1XX  ", rm);
-         showV128(&src);
-         printf(" ");
-         showV128(&dst);
-         printf("  ");
-         print_double_to_double(vals[i], *(double*)(&dst[0]));
-         printf("   ");
-         print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
-         printf("\n");
-      }
-   }
-
-   rm = get_sse_roundingmode();
-   assert(rm == 3);
-   set_sse_roundingmode(0);
-   rm = get_sse_roundingmode();
-   assert(rm == 0); // 0 == RN == default
-}
-
-/* ------------ ROUNDPS ------------ */
-
-void do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundps $0, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundps $0, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundps $1, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundps $1, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundps $2, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundps $2, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundps $3, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundps $3, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
-{
-   if (mem) {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"       "\n\t"
-         "roundps $4, (%0), %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"       "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11"
-      );
-   } else {
-      __asm__ __volatile__(
-         "movupd  (%1), %%xmm11"         "\n\t"
-         "movupd  (%0), %%xmm2"          "\n\t"
-         "roundps $4, %%xmm2, %%xmm11"   "\n\t"
-         "movupd  %%xmm11, (%1)"         "\n"
-         : /*OUT*/
-         : /*IN*/ "r"(src), "r"(dst)
-         : /*TRASH*/ "xmm11","xmm2"
-      );
-   }
-}
-
-void test_ROUNDPS_w_immediate_rounding ( void )
-{
-   float vals[22];
-   Int i = 0;
-   vals[i++] = 0.0;
-   vals[i++] = -0.0;
-   vals[i++] = mkPosInf();
-   vals[i++] = mkNegInf();
-   vals[i++] = mkPosNan();
-   vals[i++] = mkNegNan();
-   vals[i++] = -1.3;
-   vals[i++] = -1.1;
-   vals[i++] = -0.9;
-   vals[i++] = -0.7;
-   vals[i++] = -0.50001;
-   vals[i++] = -0.49999;
-   vals[i++] = -0.3;
-   vals[i++] = -0.1;
-   vals[i++] = 0.1;
-   vals[i++] = 0.3;
-   vals[i++] = 0.49999;
-   vals[i++] = 0.50001;
-   vals[i++] = 0.7;
-   vals[i++] = 0.9;
-   vals[i++] = 1.1;
-   vals[i++] = 1.3;
-   assert(i == 22);
-
-   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
-      V128 src, dst;
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_000(False/*reg*/, &src, &dst);
-      printf("r roundps_000  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_000(True/*mem*/, &src, &dst);
-      printf("m roundps_000  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_001(False/*reg*/, &src, &dst);
-      printf("r roundps_001  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_001(True/*mem*/, &src, &dst);
-      printf("m roundps_001  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_010(False/*reg*/, &src, &dst);
-      printf("r roundps_010  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_010(True/*mem*/, &src, &dst);
-      printf("m roundps_010  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_011(False/*reg*/, &src, &dst);
-      printf("r roundps_011  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-
-      randV128(&src);
-      randV128(&dst);
-      memcpy(&src[0], &vals[i], 4);
-      memcpy(&src[4], &vals[(i+5)%22], 4);
-      memcpy(&src[8], &vals[(i+11)%22], 4);
-      memcpy(&src[12], &vals[(i+17)%22], 4);
-      do_ROUNDPS_011(True/*mem*/, &src, &dst);
-      printf("m roundps_011  ");
-      showV128(&src);
-      printf(" ");
-      showV128(&dst);
-      print_floats(vals[i], *(float*)(&dst[0]));
-      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-      printf("\n");
-   }
-}
-
-void test_ROUNDPS_w_mxcsr_rounding ( void )
-{
-   UInt rm;
-   float vals[22];
-   Int i = 0;
-   vals[i++] = 0.0;
-   vals[i++] = -0.0;
-   vals[i++] = mkPosInf();
-   vals[i++] = mkNegInf();
-   vals[i++] = mkPosNan();
-   vals[i++] = mkNegNan();
-   vals[i++] = -1.3;
-   vals[i++] = -1.1;
-   vals[i++] = -0.9;
-   vals[i++] = -0.7;
-   vals[i++] = -0.50001;
-   vals[i++] = -0.49999;
-   vals[i++] = -0.3;
-   vals[i++] = -0.1;
-   vals[i++] = 0.1;
-   vals[i++] = 0.3;
-   vals[i++] = 0.49999;
-   vals[i++] = 0.50001;
-   vals[i++] = 0.7;
-   vals[i++] = 0.9;
-   vals[i++] = 1.1;
-   vals[i++] = 1.3;
-   assert(i == 22);
-
-   rm = get_sse_roundingmode();
-   assert(rm == 0); // 0 == RN == default
-
-   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
-      V128 src, dst;
-
-      for (rm = 0; rm <= 3; rm++) {
-         set_sse_roundingmode(rm);
-
-         randV128(&src);
-         randV128(&dst);
-         memcpy(&src[0], &vals[i], 4);
-         memcpy(&src[4], &vals[(i+5)%22], 4);
-         memcpy(&src[8], &vals[(i+11)%22], 4);
-         memcpy(&src[12], &vals[(i+17)%22], 4);
-         do_ROUNDPS_1XX(False/*reg*/, &src, &dst);
-         printf("r (rm=%u) roundps_1XX  ", rm);
-         showV128(&src);
-         printf(" ");
-         showV128(&dst);
-         print_floats(vals[i], *(float*)(&dst[0]));
-         print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-         print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-         print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-         printf("\n");
-
-         randV128(&src);
-         randV128(&dst);
-         memcpy(&src[0], &vals[i], 4);
-         memcpy(&src[4], &vals[(i+5)%22], 4);
-         memcpy(&src[8], &vals[(i+11)%22], 4);
-         memcpy(&src[12], &vals[(i+17)%22], 4);
-         do_ROUNDPS_1XX(True/*mem*/, &src, &dst);
-         printf("m (rm=%u) roundps_1XX  ", rm);
-         showV128(&src);
-         printf(" ");
-         showV128(&dst);
-         print_floats(vals[i], *(float*)(&dst[0]));
-         print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
-         print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
-         print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
-         printf("\n");
-      }
-   }
-
-   rm = get_sse_roundingmode();
-   assert(rm == 3);
-   set_sse_roundingmode(0);
-   rm = get_sse_roundingmode();
-   assert(rm == 0); // 0 == RN == default
-}
-
 /* ------------ PTEST ------------ */
 
 void test_PTEST ( void )
index 7c0203934f7647f60c72198a9c06903dd268fb78..58f3131e6b6575a322ce44e50e1f6688e2ca1d52 100644 (file)
@@ -36,7 +36,7 @@ typedef
    }
    RMArgs;
 
-static UChar randUChar ( void )
+static inline UChar randUChar ( void )
 {
    static UInt seed = 80021;
    seed = 1103515245 * seed + 12345;
@@ -44,7 +44,7 @@ static UChar randUChar ( void )
 }
 
 
-static ULong randULong ( void )
+static inline ULong randULong ( void )
 {
    Int i;
    ULong r = 0;
@@ -54,7 +54,7 @@ static ULong randULong ( void )
    return r;
 }
 
-static UInt randUInt ( void )
+static inline UInt randUInt ( void )
 {
    Int i;
    UInt r = 0;
@@ -1737,4 +1737,732 @@ static inline void test_PHMINPOSUW ( void )
    DO_mandr_r("phminposuw", src, dst);
 }
 
+/* ------------ ROUNDPD ------------ */
+
+static inline void do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST      "\n\t"
+         "roundpd $0, (%0), %%" XMMREG_DST  "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundpd $0, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"    "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundpd $1, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"  "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundpd $1, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"    "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundpd $2, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"  "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundpd $2, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"    "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundpd $3, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"  "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundpd $3, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"    "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundpd $4, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"  "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundpd $4, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ", (%1)"    "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void test_ROUNDPD_w_immediate_rounding ( void )
+{
+   double vals[22];
+   Int i = 0;
+   vals[i++] = 0.0;
+   vals[i++] = -0.0;
+   vals[i++] = mkPosInf();
+   vals[i++] = mkNegInf();
+   vals[i++] = mkPosNan();
+   vals[i++] = mkNegNan();
+   vals[i++] = -1.3;
+   vals[i++] = -1.1;
+   vals[i++] = -0.9;
+   vals[i++] = -0.7;
+   vals[i++] = -0.50001;
+   vals[i++] = -0.49999;
+   vals[i++] = -0.3;
+   vals[i++] = -0.1;
+   vals[i++] = 0.1;
+   vals[i++] = 0.3;
+   vals[i++] = 0.49999;
+   vals[i++] = 0.50001;
+   vals[i++] = 0.7;
+   vals[i++] = 0.9;
+   vals[i++] = 1.1;
+   vals[i++] = 1.3;
+   assert(i == 22);
+
+   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
+      __attribute__ ( (aligned (16))) V128 src, dst;
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_000(False/*reg*/, &src, &dst);
+      printf("r roundpd_000  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_000(True/*mem*/, &src, &dst);
+      printf("m roundpd_000  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_001(False/*reg*/, &src, &dst);
+      printf("r roundpd_001  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_001(True/*mem*/, &src, &dst);
+      printf("m roundpd_001  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_010(False/*reg*/, &src, &dst);
+      printf("r roundpd_010  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_010(True/*mem*/, &src, &dst);
+      printf("m roundpd_010  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_011(False/*reg*/, &src, &dst);
+      printf("r roundpd_011  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 8);
+      memcpy(&src[8], &vals[(i+11)%22], 8);
+      do_ROUNDPD_011(True/*mem*/, &src, &dst);
+      printf("m roundpd_011  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      printf("  ");
+      print_double_to_double(vals[i], *(double*)(&dst[0]));
+      printf("   ");
+      print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+      printf("\n");
+   }
+}
+
+static inline void test_ROUNDPD_w_mxcsr_rounding ( void )
+{
+   UInt rm;
+   double vals[22];
+   Int i = 0;
+   vals[i++] = 0.0;
+   vals[i++] = -0.0;
+   vals[i++] = mkPosInf();
+   vals[i++] = mkNegInf();
+   vals[i++] = mkPosNan();
+   vals[i++] = mkNegNan();
+   vals[i++] = -1.3;
+   vals[i++] = -1.1;
+   vals[i++] = -0.9;
+   vals[i++] = -0.7;
+   vals[i++] = -0.50001;
+   vals[i++] = -0.49999;
+   vals[i++] = -0.3;
+   vals[i++] = -0.1;
+   vals[i++] = 0.1;
+   vals[i++] = 0.3;
+   vals[i++] = 0.49999;
+   vals[i++] = 0.50001;
+   vals[i++] = 0.7;
+   vals[i++] = 0.9;
+   vals[i++] = 1.1;
+   vals[i++] = 1.3;
+   assert(i == 22);
+
+   rm = get_sse_roundingmode();
+   assert(rm == 0); // 0 == RN == default
+
+   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
+      __attribute__ ( (aligned (16))) V128 src, dst;
+
+      for (rm = 0; rm <= 3; rm++) {
+         set_sse_roundingmode(rm);
+
+         randV128(&src);
+         randV128(&dst);
+         memcpy(&src[0], &vals[i], 8);
+         memcpy(&src[8], &vals[(i+11)%22], 8);
+         do_ROUNDPD_1XX(False/*reg*/, &src, &dst);
+         printf("r (rm=%u) roundpd_1XX  ", rm);
+         showV128(&src);
+         printf(" ");
+         showV128(&dst);
+         printf("  ");
+         print_double_to_double(vals[i], *(double*)(&dst[0]));
+         printf("   ");
+         print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+         printf("\n");
+
+         randV128(&src);
+         randV128(&dst);
+         memcpy(&src[0], &vals[i], 8);
+         memcpy(&src[8], &vals[(i+11)%22], 8);
+         do_ROUNDPD_1XX(True/*mem*/, &src, &dst);
+         printf("m (rm=%u) roundpd_1XX  ", rm);
+         showV128(&src);
+         printf(" ");
+         showV128(&dst);
+         printf("  ");
+         print_double_to_double(vals[i], *(double*)(&dst[0]));
+         printf("   ");
+         print_double_to_double(vals[(i+11)%22], *(double*)(&dst[8]));
+         printf("\n");
+      }
+   }
+
+   rm = get_sse_roundingmode();
+   assert(rm == 3);
+   set_sse_roundingmode(0);
+   rm = get_sse_roundingmode();
+   assert(rm == 0); // 0 == RN == default
+}
+
+/* ------------ ROUNDPS ------------ */
+
+static inline void do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundps $0, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundps $0, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"     "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundps $1, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundps $1, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"     "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundps $2, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundps $2, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"     "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundps $3, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundps $3, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"     "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
+{
+   if (mem) {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST     "\n\t"
+         "roundps $4, (%0), %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"   "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST
+      );
+   } else {
+      __asm__ __volatile__(
+         "movupd  (%1), %%" XMMREG_DST       "\n\t"
+         "movupd  (%0), %%xmm2"              "\n\t"
+         "roundps $4, %%xmm2, %%" XMMREG_DST "\n\t"
+         "movupd  %%" XMMREG_DST ",(%1)"     "\n"
+         : /*OUT*/
+         : /*IN*/ "r"(src), "r"(dst)
+         : /*TRASH*/ XMMREG_DST , "xmm2"
+      );
+   }
+}
+
+static inline void test_ROUNDPS_w_immediate_rounding ( void )
+{
+   float vals[22];
+   Int i = 0;
+   vals[i++] = 0.0;
+   vals[i++] = -0.0;
+   vals[i++] = mkPosInf();
+   vals[i++] = mkNegInf();
+   vals[i++] = mkPosNan();
+   vals[i++] = mkNegNan();
+   vals[i++] = -1.3;
+   vals[i++] = -1.1;
+   vals[i++] = -0.9;
+   vals[i++] = -0.7;
+   vals[i++] = -0.50001;
+   vals[i++] = -0.49999;
+   vals[i++] = -0.3;
+   vals[i++] = -0.1;
+   vals[i++] = 0.1;
+   vals[i++] = 0.3;
+   vals[i++] = 0.49999;
+   vals[i++] = 0.50001;
+   vals[i++] = 0.7;
+   vals[i++] = 0.9;
+   vals[i++] = 1.1;
+   vals[i++] = 1.3;
+   assert(i == 22);
+
+   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
+      __attribute__ ( (aligned (16))) V128 src, dst;
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_000(False/*reg*/, &src, &dst);
+      printf("r roundps_000  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_000(True/*mem*/, &src, &dst);
+      printf("m roundps_000  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_001(False/*reg*/, &src, &dst);
+      printf("r roundps_001  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_001(True/*mem*/, &src, &dst);
+      printf("m roundps_001  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_010(False/*reg*/, &src, &dst);
+      printf("r roundps_010  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_010(True/*mem*/, &src, &dst);
+      printf("m roundps_010  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_011(False/*reg*/, &src, &dst);
+      printf("r roundps_011  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+
+      randV128(&src);
+      randV128(&dst);
+      memcpy(&src[0], &vals[i], 4);
+      memcpy(&src[4], &vals[(i+5)%22], 4);
+      memcpy(&src[8], &vals[(i+11)%22], 4);
+      memcpy(&src[12], &vals[(i+17)%22], 4);
+      do_ROUNDPS_011(True/*mem*/, &src, &dst);
+      printf("m roundps_011  ");
+      showV128(&src);
+      printf(" ");
+      showV128(&dst);
+      print_floats(vals[i], *(float*)(&dst[0]));
+      print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+      print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+      print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+      printf("\n");
+   }
+}
+
+static inline void test_ROUNDPS_w_mxcsr_rounding ( void )
+{
+   UInt rm;
+   float vals[22];
+   Int i = 0;
+   vals[i++] = 0.0;
+   vals[i++] = -0.0;
+   vals[i++] = mkPosInf();
+   vals[i++] = mkNegInf();
+   vals[i++] = mkPosNan();
+   vals[i++] = mkNegNan();
+   vals[i++] = -1.3;
+   vals[i++] = -1.1;
+   vals[i++] = -0.9;
+   vals[i++] = -0.7;
+   vals[i++] = -0.50001;
+   vals[i++] = -0.49999;
+   vals[i++] = -0.3;
+   vals[i++] = -0.1;
+   vals[i++] = 0.1;
+   vals[i++] = 0.3;
+   vals[i++] = 0.49999;
+   vals[i++] = 0.50001;
+   vals[i++] = 0.7;
+   vals[i++] = 0.9;
+   vals[i++] = 1.1;
+   vals[i++] = 1.3;
+   assert(i == 22);
+
+   rm = get_sse_roundingmode();
+   assert(rm == 0); // 0 == RN == default
+
+   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
+      V128 src, dst;
+
+      for (rm = 0; rm <= 3; rm++) {
+         set_sse_roundingmode(rm);
+
+         randV128(&src);
+         randV128(&dst);
+         memcpy(&src[0], &vals[i], 4);
+         memcpy(&src[4], &vals[(i+5)%22], 4);
+         memcpy(&src[8], &vals[(i+11)%22], 4);
+         memcpy(&src[12], &vals[(i+17)%22], 4);
+         do_ROUNDPS_1XX(False/*reg*/, &src, &dst);
+         printf("r (rm=%u) roundps_1XX  ", rm);
+         showV128(&src);
+         printf(" ");
+         showV128(&dst);
+         print_floats(vals[i], *(float*)(&dst[0]));
+         print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+         print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+         print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+         printf("\n");
+
+         randV128(&src);
+         randV128(&dst);
+         memcpy(&src[0], &vals[i], 4);
+         memcpy(&src[4], &vals[(i+5)%22], 4);
+         memcpy(&src[8], &vals[(i+11)%22], 4);
+         memcpy(&src[12], &vals[(i+17)%22], 4);
+         do_ROUNDPS_1XX(True/*mem*/, &src, &dst);
+         printf("m (rm=%u) roundps_1XX  ", rm);
+         showV128(&src);
+         printf(" ");
+         showV128(&dst);
+         print_floats(vals[i], *(float*)(&dst[0]));
+         print_floats(vals[(i+5)%22], *(float*)(&dst[4]));
+         print_floats(vals[(i+11)%22], *(float*)(&dst[8]));
+         print_floats(vals[(i+17)%22], *(float*)(&dst[12]));
+         printf("\n");
+      }
+   }
+
+   rm = get_sse_roundingmode();
+   assert(rm == 3);
+   set_sse_roundingmode(0);
+   rm = get_sse_roundingmode();
+   assert(rm == 0); // 0 == RN == default
+}
+
 #endif /* __SSE4_COMMON_H */
index 94c8c478ab62fe430e303d78f90cf49da5208c40..364a9c6144aa07e764304fb8bdb213ba710211f5 100644 (file)
@@ -265,6 +265,10 @@ int main(void)
    test_POPCNTL_x86();
    test_POPCNTW_x86();
    test_PHMINPOSUW();
+   test_ROUNDPD_w_immediate_rounding();
+   test_ROUNDPS_w_immediate_rounding();
+   test_ROUNDPD_w_mxcsr_rounding();
+   test_ROUNDPS_w_mxcsr_rounding();
 
    return 0;
 }
index 5fb75fc2ccbb630be1e59f8e7b7f6a1042626031..fbd162f0f4da1b4461ac7c2ca43a0752a7e1d535 100644 (file)
@@ -2866,3 +2866,707 @@ r phminposuw 08a6b8d1064a9e3ad001994e59389c1a 94e1f4cffaf12c9a9dc130995c8eed66 0
 m phminposuw 08a6b8d1064a9e3ad001994e59389c1a 94e1f4cffaf12c9a9dc130995c8eed66 0000000000000000000000000005064a
 r phminposuw 55555555555555555555555555555555 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00000000000000000000000000005555
 m phminposuw 55555555555555555555555555555555 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00000000000000000000000000005555
+r roundpd_000  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m roundpd_000  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r roundpd_001  bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -1.000000
+m roundpd_001  bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -1.000000
+r roundpd_010  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m roundpd_010  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r roundpd_011  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m roundpd_011  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r roundpd_000  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m roundpd_000  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r roundpd_001  bfd33333333333338000000000000000 bff00000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -1.000000
+m roundpd_001  bfd33333333333338000000000000000 bff00000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -1.000000
+r roundpd_010  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m roundpd_010  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r roundpd_011  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m roundpd_011  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r roundpd_000  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m roundpd_000  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r roundpd_001  bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -1.000000
+m roundpd_001  bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -1.000000
+r roundpd_010  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m roundpd_010  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r roundpd_011  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m roundpd_011  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r roundpd_000  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m roundpd_000  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r roundpd_001  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m roundpd_001  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r roundpd_010  3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   1.000000
+m roundpd_010  3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   1.000000
+r roundpd_011  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m roundpd_011  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r roundpd_000  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m roundpd_000  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r roundpd_001  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m roundpd_001  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r roundpd_010  3fd33333333333337ff8000000000000 3ff00000000000007ff8000000000000         nan ->        nan     0.300000 ->   1.000000
+m roundpd_010  3fd33333333333337ff8000000000000 3ff00000000000007ff8000000000000         nan ->        nan     0.300000 ->   1.000000
+r roundpd_011  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m roundpd_011  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r roundpd_000  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m roundpd_000  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r roundpd_001  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m roundpd_001  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r roundpd_010  3fdfffd60e94ee39fff8000000000000 3ff0000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   1.000000
+m roundpd_010  3fdfffd60e94ee39fff8000000000000 3ff0000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   1.000000
+r roundpd_011  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m roundpd_011  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r roundpd_000  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+m roundpd_000  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+r roundpd_001  3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000   -1.300000 ->  -2.000000     0.500010 ->   0.000000
+m roundpd_001  3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000   -1.300000 ->  -2.000000     0.500010 ->   0.000000
+r roundpd_010  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+m roundpd_010  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+r roundpd_011  3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   0.000000
+m roundpd_011  3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   0.000000
+r roundpd_000  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+m roundpd_000  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+r roundpd_001  3fe6666666666666bff199999999999a 0000000000000000c000000000000000   -1.100000 ->  -2.000000     0.700000 ->   0.000000
+m roundpd_001  3fe6666666666666bff199999999999a 0000000000000000c000000000000000   -1.100000 ->  -2.000000     0.700000 ->   0.000000
+r roundpd_010  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+m roundpd_010  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+r roundpd_011  3fe6666666666666bff199999999999a 0000000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   0.000000
+m roundpd_011  3fe6666666666666bff199999999999a 0000000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   0.000000
+r roundpd_000  3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   1.000000
+m roundpd_000  3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   1.000000
+r roundpd_001  3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   0.000000
+m roundpd_001  3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   0.000000
+r roundpd_010  3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   1.000000
+m roundpd_010  3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   1.000000
+r roundpd_011  3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   0.000000
+m roundpd_011  3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   0.000000
+r roundpd_000  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+m roundpd_000  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+r roundpd_001  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+m roundpd_001  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+r roundpd_010  3ff199999999999abfe6666666666666 40000000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   2.000000
+m roundpd_010  3ff199999999999abfe6666666666666 40000000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   2.000000
+r roundpd_011  3ff199999999999abfe6666666666666 3ff00000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   1.000000
+m roundpd_011  3ff199999999999abfe6666666666666 3ff00000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   1.000000
+r roundpd_000  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+m roundpd_000  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+r roundpd_001  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+m roundpd_001  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+r roundpd_010  3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   2.000000
+m roundpd_010  3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   2.000000
+r roundpd_011  3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   1.000000
+m roundpd_011  3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   1.000000
+r roundpd_000  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m roundpd_000  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r roundpd_001  0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000   -0.499990 ->  -1.000000     0.000000 ->   0.000000
+m roundpd_001  0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000   -0.499990 ->  -1.000000     0.000000 ->   0.000000
+r roundpd_010  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m roundpd_010  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r roundpd_011  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m roundpd_011  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r roundpd_000  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m roundpd_000  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r roundpd_001  8000000000000000bfd3333333333333 8000000000000000bff0000000000000   -0.300000 ->  -1.000000    -0.000000 ->  -0.000000
+m roundpd_001  8000000000000000bfd3333333333333 8000000000000000bff0000000000000   -0.300000 ->  -1.000000    -0.000000 ->  -0.000000
+r roundpd_010  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m roundpd_010  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r roundpd_011  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m roundpd_011  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r roundpd_000  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m roundpd_000  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r roundpd_001  7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000   -0.100000 ->  -1.000000          inf ->        inf
+m roundpd_001  7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000   -0.100000 ->  -1.000000          inf ->        inf
+r roundpd_010  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m roundpd_010  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r roundpd_011  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m roundpd_011  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r roundpd_000  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m roundpd_000  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r roundpd_001  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m roundpd_001  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r roundpd_010  fff00000000000003fb999999999999a fff00000000000003ff0000000000000    0.100000 ->   1.000000         -inf ->       -inf
+m roundpd_010  fff00000000000003fb999999999999a fff00000000000003ff0000000000000    0.100000 ->   1.000000         -inf ->       -inf
+r roundpd_011  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m roundpd_011  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r roundpd_000  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m roundpd_000  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r roundpd_001  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m roundpd_001  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r roundpd_010  7ff80000000000003fd3333333333333 7ff80000000000003ff0000000000000    0.300000 ->   1.000000          nan ->        nan
+m roundpd_010  7ff80000000000003fd3333333333333 7ff80000000000003ff0000000000000    0.300000 ->   1.000000          nan ->        nan
+r roundpd_011  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m roundpd_011  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r roundpd_000  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m roundpd_000  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r roundpd_001  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m roundpd_001  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r roundpd_010  fff80000000000003fdfffd60e94ee39 fff80000000000003ff0000000000000    0.499990 ->   1.000000         -nan ->       -nan
+m roundpd_010  fff80000000000003fdfffd60e94ee39 fff80000000000003ff0000000000000    0.499990 ->   1.000000         -nan ->       -nan
+r roundpd_011  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m roundpd_011  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r roundpd_000  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+m roundpd_000  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+r roundpd_001  bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -2.000000
+m roundpd_001  bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -2.000000
+r roundpd_010  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+m roundpd_010  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+r roundpd_011  bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -1.000000
+m roundpd_011  bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -1.000000
+r roundpd_000  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+m roundpd_000  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+r roundpd_001  bff199999999999a3fe6666666666666 c0000000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -2.000000
+m roundpd_001  bff199999999999a3fe6666666666666 c0000000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -2.000000
+r roundpd_010  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+m roundpd_010  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+r roundpd_011  bff199999999999a3fe6666666666666 bff00000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -1.000000
+m roundpd_011  bff199999999999a3fe6666666666666 bff00000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -1.000000
+r roundpd_000  bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -1.000000
+m roundpd_000  bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -1.000000
+r roundpd_001  bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -1.000000
+m roundpd_001  bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -1.000000
+r roundpd_010  bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -0.000000
+m roundpd_010  bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -0.000000
+r roundpd_011  bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -0.000000
+m roundpd_011  bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -0.000000
+r roundpd_000  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+m roundpd_000  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+r roundpd_001  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+m roundpd_001  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+r roundpd_010  bfe66666666666663ff199999999999a 80000000000000004000000000000000    1.100000 ->   2.000000    -0.700000 ->  -0.000000
+m roundpd_010  bfe66666666666663ff199999999999a 80000000000000004000000000000000    1.100000 ->   2.000000    -0.700000 ->  -0.000000
+r roundpd_011  bfe66666666666663ff199999999999a 80000000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -0.000000
+m roundpd_011  bfe66666666666663ff199999999999a 80000000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -0.000000
+r roundpd_000  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+m roundpd_000  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+r roundpd_001  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+m roundpd_001  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+r roundpd_010  bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000    1.300000 ->   2.000000    -0.500010 ->  -0.000000
+m roundpd_010  bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000    1.300000 ->   2.000000    -0.500010 ->  -0.000000
+r roundpd_011  bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -0.000000
+m roundpd_011  bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -0.000000
+r roundps_000  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+m roundps_000  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+r roundps_001  3f0000a8befffeb0ffc0000000000000 00000000bf800000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-1.000000   0.500010: 0.000000
+m roundps_001  3f0000a8befffeb0ffc0000000000000 00000000bf800000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-1.000000   0.500010: 0.000000
+r roundps_010  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+m roundps_010  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+r roundps_011  3f0000a8befffeb0ffc0000000000000 0000000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 0.000000
+m roundps_011  3f0000a8befffeb0ffc0000000000000 0000000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 0.000000
+r roundps_000  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+m roundps_000  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+r roundps_001  3f333333be99999abfa6666680000000 00000000bf800000c000000080000000  -0.000000:-0.000000  -1.300000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000
+m roundps_001  3f333333be99999abfa6666680000000 00000000bf800000c000000080000000  -0.000000:-0.000000  -1.300000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000
+r roundps_010  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+m roundps_010  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+r roundps_011  3f333333be99999abfa6666680000000 0000000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000
+m roundps_011  3f333333be99999abfa6666680000000 0000000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000
+r roundps_000  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+m roundps_000  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+r roundps_001  3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000        inf:      inf  -1.100000:-2.000000  -0.100000:-1.000000   0.900000: 0.000000
+m roundps_001  3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000        inf:      inf  -1.100000:-2.000000  -0.100000:-1.000000   0.900000: 0.000000
+r roundps_010  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+m roundps_010  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+r roundps_011  3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 0.000000
+m roundps_011  3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 0.000000
+r roundps_000  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+m roundps_000  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+r roundps_001  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+m roundps_001  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+r roundps_010  3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 1.000000   1.100000: 2.000000
+m roundps_010  3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 1.000000   1.100000: 2.000000
+r roundps_011  3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 0.000000   1.100000: 1.000000
+m roundps_011  3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 0.000000   1.100000: 1.000000
+r roundps_000  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+m roundps_000  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+r roundps_001  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+m roundps_001  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+r roundps_010  3fa666663e99999abf3333337fc00000 400000003f800000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 1.000000   1.300000: 2.000000
+m roundps_010  3fa666663e99999abf3333337fc00000 400000003f800000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 1.000000   1.300000: 2.000000
+r roundps_011  3fa666663e99999abf3333337fc00000 3f80000000000000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 0.000000   1.300000: 1.000000
+m roundps_011  3fa666663e99999abf3333337fc00000 3f80000000000000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 0.000000   1.300000: 1.000000
+r roundps_000  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+m roundps_000  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+r roundps_001  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+m roundps_001  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+r roundps_010  000000003efffeb0bf0000a8ffc00000 000000003f80000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 1.000000   0.000000: 0.000000
+m roundps_010  000000003efffeb0bf0000a8ffc00000 000000003f80000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 1.000000   0.000000: 0.000000
+r roundps_011  000000003efffeb0bf0000a8ffc00000 000000000000000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 0.000000   0.000000: 0.000000
+m roundps_011  000000003efffeb0bf0000a8ffc00000 000000000000000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 0.000000   0.000000: 0.000000
+r roundps_000  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+m roundps_000  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+r roundps_001  800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000  -1.300000:-2.000000  -0.499990:-1.000000   0.500010: 0.000000  -0.000000:-0.000000
+m roundps_001  800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000  -1.300000:-2.000000  -0.499990:-1.000000   0.500010: 0.000000  -0.000000:-0.000000
+r roundps_010  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+m roundps_010  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+r roundps_011  800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 0.000000  -0.000000:-0.000000
+m roundps_011  800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 0.000000  -0.000000:-0.000000
+r roundps_000  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+m roundps_000  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+r roundps_001  7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000  -1.100000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000        inf:      inf
+m roundps_001  7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000  -1.100000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000        inf:      inf
+r roundps_010  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+m roundps_010  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+r roundps_011  7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000        inf:      inf
+m roundps_011  7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000        inf:      inf
+r roundps_000  ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000  -0.900000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+m roundps_000  ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000  -0.900000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+r roundps_001  ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000  -0.900000:-1.000000  -0.100000:-1.000000   0.900000: 0.000000       -inf:     -inf
+m roundps_001  ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000  -0.900000:-1.000000  -0.100000:-1.000000   0.900000: 0.000000       -inf:     -inf
+r roundps_010  ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+m roundps_010  ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+r roundps_011  ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 0.000000       -inf:     -inf
+m roundps_011  ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 0.000000       -inf:     -inf
+r roundps_000  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m roundps_000  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r roundps_001  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m roundps_001  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r roundps_010  7fc000003f8ccccd3dcccccdbf333333 7fc00000400000003f80000080000000  -0.700000:-0.000000   0.100000: 1.000000   1.100000: 2.000000        nan:      nan
+m roundps_010  7fc000003f8ccccd3dcccccdbf333333 7fc00000400000003f80000080000000  -0.700000:-0.000000   0.100000: 1.000000   1.100000: 2.000000        nan:      nan
+r roundps_011  7fc000003f8ccccd3dcccccdbf333333 7fc000003f8000000000000080000000  -0.700000:-0.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m roundps_011  7fc000003f8ccccd3dcccccdbf333333 7fc000003f8000000000000080000000  -0.700000:-0.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r roundps_000  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m roundps_000  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r roundps_001  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m roundps_001  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r roundps_010  ffc000003fa666663e99999abf0000a8 ffc00000400000003f80000080000000  -0.500010:-0.000000   0.300000: 1.000000   1.300000: 2.000000       -nan:     -nan
+m roundps_010  ffc000003fa666663e99999abf0000a8 ffc00000400000003f80000080000000  -0.500010:-0.000000   0.300000: 1.000000   1.300000: 2.000000       -nan:     -nan
+r roundps_011  ffc000003fa666663e99999abf0000a8 ffc000003f8000000000000080000000  -0.500010:-0.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m roundps_011  ffc000003fa666663e99999abf0000a8 ffc000003f8000000000000080000000  -0.500010:-0.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r roundps_000  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+m roundps_000  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+r roundps_001  bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000  -0.499990:-1.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-2.000000
+m roundps_001  bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000  -0.499990:-1.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-2.000000
+r roundps_010  bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000  -0.499990:-0.000000   0.499990: 1.000000   0.000000: 0.000000  -1.300000:-1.000000
+m roundps_010  bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000  -0.499990:-0.000000   0.499990: 1.000000   0.000000: 0.000000  -1.300000:-1.000000
+r roundps_011  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+m roundps_011  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+r roundps_000  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m roundps_000  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r roundps_001  bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000  -0.300000:-1.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000
+m roundps_001  bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000  -0.300000:-1.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000
+r roundps_010  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m roundps_010  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r roundps_011  bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000  -0.300000:-0.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m roundps_011  bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000  -0.300000:-0.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r roundps_000  bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-1.000000
+m roundps_000  bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-1.000000
+r roundps_001  bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000  -0.100000:-1.000000   0.700000: 0.000000        inf:      inf  -0.900000:-1.000000
+m roundps_001  bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000  -0.100000:-1.000000   0.700000: 0.000000        inf:      inf  -0.900000:-1.000000
+r roundps_010  bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-0.000000
+m roundps_010  bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-0.000000
+r roundps_011  bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000  -0.100000:-0.000000   0.700000: 0.000000        inf:      inf  -0.900000:-0.000000
+m roundps_011  bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000  -0.100000:-0.000000   0.700000: 0.000000        inf:      inf  -0.900000:-0.000000
+r roundps_000  bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000   0.100000: 0.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-1.000000
+m roundps_000  bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000   0.100000: 0.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-1.000000
+r roundps_001  bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-1.000000
+m roundps_001  bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-1.000000
+r roundps_010  bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000   0.100000: 1.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-0.000000
+m roundps_010  bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000   0.100000: 1.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-0.000000
+r roundps_011  bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-0.000000
+m roundps_011  bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-0.000000
+r roundps_000  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+m roundps_000  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+r roundps_001  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+m roundps_001  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+r roundps_010  bf0000a87fc000003f8ccccd3e99999a 800000007fc00000400000003f800000   0.300000: 1.000000   1.100000: 2.000000        nan:      nan  -0.500010:-0.000000
+m roundps_010  bf0000a87fc000003f8ccccd3e99999a 800000007fc00000400000003f800000   0.300000: 1.000000   1.100000: 2.000000        nan:      nan  -0.500010:-0.000000
+r roundps_011  bf0000a87fc000003f8ccccd3e99999a 800000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-0.000000
+m roundps_011  bf0000a87fc000003f8ccccd3e99999a 800000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-0.000000
+r roundps_000  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+m roundps_000  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+r roundps_001  befffeb0ffc000003fa666663efffeb0 bf800000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-1.000000
+m roundps_001  befffeb0ffc000003fa666663efffeb0 bf800000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-1.000000
+r roundps_010  befffeb0ffc000003fa666663efffeb0 80000000ffc00000400000003f800000   0.499990: 1.000000   1.300000: 2.000000       -nan:     -nan  -0.499990:-0.000000
+m roundps_010  befffeb0ffc000003fa666663efffeb0 80000000ffc00000400000003f800000   0.499990: 1.000000   1.300000: 2.000000       -nan:     -nan  -0.499990:-0.000000
+r roundps_011  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+m roundps_011  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+r roundps_000  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m roundps_000  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r roundps_001  be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-2.000000  -0.300000:-1.000000
+m roundps_001  be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-2.000000  -0.300000:-1.000000
+r roundps_010  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m roundps_010  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r roundps_011  be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m roundps_011  be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r roundps_000  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m roundps_000  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r roundps_001  bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000  -0.100000:-1.000000
+m roundps_001  bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000  -0.100000:-1.000000
+r roundps_010  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m roundps_010  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r roundps_011  bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m roundps_011  bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r roundps_000  3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+m roundps_000  3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+r roundps_001  3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+m roundps_001  3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+r roundps_010  3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-0.000000   0.100000: 1.000000
+m roundps_010  3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-0.000000   0.100000: 1.000000
+r roundps_011  3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-0.000000   0.100000: 0.000000
+m roundps_011  3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-0.000000   0.100000: 0.000000
+r roundps_000  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+m roundps_000  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+r roundps_001  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+m roundps_001  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+r roundps_010  3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000   1.100000: 2.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 1.000000
+m roundps_010  3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000   1.100000: 2.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 1.000000
+r roundps_011  3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 0.000000
+m roundps_011  3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 0.000000
+r roundps_000  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+m roundps_000  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+r roundps_001  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+m roundps_001  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+r roundps_010  3efffeb0bf0000a87fc000003fa66666 3f800000800000007fc0000040000000   1.300000: 2.000000        nan:      nan  -0.500010:-0.000000   0.499990: 1.000000
+m roundps_010  3efffeb0bf0000a87fc000003fa66666 3f800000800000007fc0000040000000   1.300000: 2.000000        nan:      nan  -0.500010:-0.000000   0.499990: 1.000000
+r roundps_011  3efffeb0bf0000a87fc000003fa66666 00000000800000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-0.000000   0.499990: 0.000000
+m roundps_011  3efffeb0bf0000a87fc000003fa66666 00000000800000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-0.000000   0.499990: 0.000000
+r (rm=0) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m (rm=0) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r (rm=1) roundpd_1XX  bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -1.000000
+m (rm=1) roundpd_1XX  bfdfffd60e94ee390000000000000000 bff00000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -1.000000
+r (rm=2) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m (rm=2) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r (rm=3) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+m (rm=3) roundpd_1XX  bfdfffd60e94ee390000000000000000 80000000000000000000000000000000    0.000000 ->   0.000000    -0.499990 ->  -0.000000
+r (rm=0) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m (rm=0) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r (rm=1) roundpd_1XX  bfd33333333333338000000000000000 bff00000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -1.000000
+m (rm=1) roundpd_1XX  bfd33333333333338000000000000000 bff00000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -1.000000
+r (rm=2) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m (rm=2) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r (rm=3) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+m (rm=3) roundpd_1XX  bfd33333333333338000000000000000 80000000000000008000000000000000   -0.000000 ->  -0.000000    -0.300000 ->  -0.000000
+r (rm=0) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m (rm=0) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r (rm=1) roundpd_1XX  bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -1.000000
+m (rm=1) roundpd_1XX  bfb999999999999a7ff0000000000000 bff00000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -1.000000
+r (rm=2) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m (rm=2) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r (rm=3) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+m (rm=3) roundpd_1XX  bfb999999999999a7ff0000000000000 80000000000000007ff0000000000000         inf ->        inf    -0.100000 ->  -0.000000
+r (rm=0) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m (rm=0) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r (rm=1) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m (rm=1) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r (rm=2) roundpd_1XX  3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   1.000000
+m (rm=2) roundpd_1XX  3fb999999999999afff0000000000000 3ff0000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   1.000000
+r (rm=3) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+m (rm=3) roundpd_1XX  3fb999999999999afff0000000000000 0000000000000000fff0000000000000        -inf ->       -inf     0.100000 ->   0.000000
+r (rm=0) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m (rm=0) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r (rm=1) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m (rm=1) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r (rm=2) roundpd_1XX  3fd33333333333337ff8000000000000 3ff00000000000007ff8000000000000         nan ->        nan     0.300000 ->   1.000000
+m (rm=2) roundpd_1XX  3fd33333333333337ff8000000000000 3ff00000000000007ff8000000000000         nan ->        nan     0.300000 ->   1.000000
+r (rm=3) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+m (rm=3) roundpd_1XX  3fd33333333333337ff8000000000000 00000000000000007ff8000000000000         nan ->        nan     0.300000 ->   0.000000
+r (rm=0) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m (rm=0) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r (rm=1) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m (rm=1) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r (rm=2) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 3ff0000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   1.000000
+m (rm=2) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 3ff0000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   1.000000
+r (rm=3) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+m (rm=3) roundpd_1XX  3fdfffd60e94ee39fff8000000000000 0000000000000000fff8000000000000        -nan ->       -nan     0.499990 ->   0.000000
+r (rm=0) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+m (rm=0) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+r (rm=1) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000   -1.300000 ->  -2.000000     0.500010 ->   0.000000
+m (rm=1) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 0000000000000000c000000000000000   -1.300000 ->  -2.000000     0.500010 ->   0.000000
+r (rm=2) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+m (rm=2) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 3ff0000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   1.000000
+r (rm=3) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   0.000000
+m (rm=3) roundpd_1XX  3fe00014f8b588e3bff4cccccccccccd 0000000000000000bff0000000000000   -1.300000 ->  -1.000000     0.500010 ->   0.000000
+r (rm=0) roundpd_1XX  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+m (rm=0) roundpd_1XX  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+r (rm=1) roundpd_1XX  3fe6666666666666bff199999999999a 0000000000000000c000000000000000   -1.100000 ->  -2.000000     0.700000 ->   0.000000
+m (rm=1) roundpd_1XX  3fe6666666666666bff199999999999a 0000000000000000c000000000000000   -1.100000 ->  -2.000000     0.700000 ->   0.000000
+r (rm=2) roundpd_1XX  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+m (rm=2) roundpd_1XX  3fe6666666666666bff199999999999a 3ff0000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   1.000000
+r (rm=3) roundpd_1XX  3fe6666666666666bff199999999999a 0000000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   0.000000
+m (rm=3) roundpd_1XX  3fe6666666666666bff199999999999a 0000000000000000bff0000000000000   -1.100000 ->  -1.000000     0.700000 ->   0.000000
+r (rm=0) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   1.000000
+m (rm=0) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 3ff0000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   1.000000
+r (rm=1) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   0.000000
+m (rm=1) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 0000000000000000bff0000000000000   -0.900000 ->  -1.000000     0.900000 ->   0.000000
+r (rm=2) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   1.000000
+m (rm=2) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 3ff00000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   1.000000
+r (rm=3) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   0.000000
+m (rm=3) roundpd_1XX  3feccccccccccccdbfeccccccccccccd 00000000000000008000000000000000   -0.900000 ->  -0.000000     0.900000 ->   0.000000
+r (rm=0) roundpd_1XX  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+m (rm=0) roundpd_1XX  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+r (rm=1) roundpd_1XX  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+m (rm=1) roundpd_1XX  3ff199999999999abfe6666666666666 3ff0000000000000bff0000000000000   -0.700000 ->  -1.000000     1.100000 ->   1.000000
+r (rm=2) roundpd_1XX  3ff199999999999abfe6666666666666 40000000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   2.000000
+m (rm=2) roundpd_1XX  3ff199999999999abfe6666666666666 40000000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   2.000000
+r (rm=3) roundpd_1XX  3ff199999999999abfe6666666666666 3ff00000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   1.000000
+m (rm=3) roundpd_1XX  3ff199999999999abfe6666666666666 3ff00000000000008000000000000000   -0.700000 ->  -0.000000     1.100000 ->   1.000000
+r (rm=0) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+m (rm=0) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+r (rm=1) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+m (rm=1) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff0000000000000bff0000000000000   -0.500010 ->  -1.000000     1.300000 ->   1.000000
+r (rm=2) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   2.000000
+m (rm=2) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 40000000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   2.000000
+r (rm=3) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   1.000000
+m (rm=3) roundpd_1XX  3ff4cccccccccccdbfe00014f8b588e3 3ff00000000000008000000000000000   -0.500010 ->  -0.000000     1.300000 ->   1.000000
+r (rm=0) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m (rm=0) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r (rm=1) roundpd_1XX  0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000   -0.499990 ->  -1.000000     0.000000 ->   0.000000
+m (rm=1) roundpd_1XX  0000000000000000bfdfffd60e94ee39 0000000000000000bff0000000000000   -0.499990 ->  -1.000000     0.000000 ->   0.000000
+r (rm=2) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m (rm=2) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r (rm=3) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+m (rm=3) roundpd_1XX  0000000000000000bfdfffd60e94ee39 00000000000000008000000000000000   -0.499990 ->  -0.000000     0.000000 ->   0.000000
+r (rm=0) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m (rm=0) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r (rm=1) roundpd_1XX  8000000000000000bfd3333333333333 8000000000000000bff0000000000000   -0.300000 ->  -1.000000    -0.000000 ->  -0.000000
+m (rm=1) roundpd_1XX  8000000000000000bfd3333333333333 8000000000000000bff0000000000000   -0.300000 ->  -1.000000    -0.000000 ->  -0.000000
+r (rm=2) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m (rm=2) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r (rm=3) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+m (rm=3) roundpd_1XX  8000000000000000bfd3333333333333 80000000000000008000000000000000   -0.300000 ->  -0.000000    -0.000000 ->  -0.000000
+r (rm=0) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m (rm=0) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r (rm=1) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000   -0.100000 ->  -1.000000          inf ->        inf
+m (rm=1) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff0000000000000bff0000000000000   -0.100000 ->  -1.000000          inf ->        inf
+r (rm=2) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m (rm=2) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r (rm=3) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+m (rm=3) roundpd_1XX  7ff0000000000000bfb999999999999a 7ff00000000000008000000000000000   -0.100000 ->  -0.000000          inf ->        inf
+r (rm=0) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m (rm=0) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r (rm=1) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m (rm=1) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r (rm=2) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000003ff0000000000000    0.100000 ->   1.000000         -inf ->       -inf
+m (rm=2) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000003ff0000000000000    0.100000 ->   1.000000         -inf ->       -inf
+r (rm=3) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+m (rm=3) roundpd_1XX  fff00000000000003fb999999999999a fff00000000000000000000000000000    0.100000 ->   0.000000         -inf ->       -inf
+r (rm=0) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m (rm=0) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r (rm=1) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m (rm=1) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r (rm=2) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000003ff0000000000000    0.300000 ->   1.000000          nan ->        nan
+m (rm=2) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000003ff0000000000000    0.300000 ->   1.000000          nan ->        nan
+r (rm=3) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+m (rm=3) roundpd_1XX  7ff80000000000003fd3333333333333 7ff80000000000000000000000000000    0.300000 ->   0.000000          nan ->        nan
+r (rm=0) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m (rm=0) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r (rm=1) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m (rm=1) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r (rm=2) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000003ff0000000000000    0.499990 ->   1.000000         -nan ->       -nan
+m (rm=2) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000003ff0000000000000    0.499990 ->   1.000000         -nan ->       -nan
+r (rm=3) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+m (rm=3) roundpd_1XX  fff80000000000003fdfffd60e94ee39 fff80000000000000000000000000000    0.499990 ->   0.000000         -nan ->       -nan
+r (rm=0) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+m (rm=0) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+r (rm=1) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -2.000000
+m (rm=1) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 c0000000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -2.000000
+r (rm=2) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+m (rm=2) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000003ff0000000000000    0.500010 ->   1.000000    -1.300000 ->  -1.000000
+r (rm=3) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -1.000000
+m (rm=3) roundpd_1XX  bff4cccccccccccd3fe00014f8b588e3 bff00000000000000000000000000000    0.500010 ->   0.000000    -1.300000 ->  -1.000000
+r (rm=0) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+m (rm=0) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+r (rm=1) roundpd_1XX  bff199999999999a3fe6666666666666 c0000000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -2.000000
+m (rm=1) roundpd_1XX  bff199999999999a3fe6666666666666 c0000000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -2.000000
+r (rm=2) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+m (rm=2) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000003ff0000000000000    0.700000 ->   1.000000    -1.100000 ->  -1.000000
+r (rm=3) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -1.000000
+m (rm=3) roundpd_1XX  bff199999999999a3fe6666666666666 bff00000000000000000000000000000    0.700000 ->   0.000000    -1.100000 ->  -1.000000
+r (rm=0) roundpd_1XX  bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -1.000000
+m (rm=0) roundpd_1XX  bfeccccccccccccd3feccccccccccccd bff00000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -1.000000
+r (rm=1) roundpd_1XX  bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -1.000000
+m (rm=1) roundpd_1XX  bfeccccccccccccd3feccccccccccccd bff00000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -1.000000
+r (rm=2) roundpd_1XX  bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -0.000000
+m (rm=2) roundpd_1XX  bfeccccccccccccd3feccccccccccccd 80000000000000003ff0000000000000    0.900000 ->   1.000000    -0.900000 ->  -0.000000
+r (rm=3) roundpd_1XX  bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -0.000000
+m (rm=3) roundpd_1XX  bfeccccccccccccd3feccccccccccccd 80000000000000000000000000000000    0.900000 ->   0.000000    -0.900000 ->  -0.000000
+r (rm=0) roundpd_1XX  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+m (rm=0) roundpd_1XX  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+r (rm=1) roundpd_1XX  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+m (rm=1) roundpd_1XX  bfe66666666666663ff199999999999a bff00000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -1.000000
+r (rm=2) roundpd_1XX  bfe66666666666663ff199999999999a 80000000000000004000000000000000    1.100000 ->   2.000000    -0.700000 ->  -0.000000
+m (rm=2) roundpd_1XX  bfe66666666666663ff199999999999a 80000000000000004000000000000000    1.100000 ->   2.000000    -0.700000 ->  -0.000000
+r (rm=3) roundpd_1XX  bfe66666666666663ff199999999999a 80000000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -0.000000
+m (rm=3) roundpd_1XX  bfe66666666666663ff199999999999a 80000000000000003ff0000000000000    1.100000 ->   1.000000    -0.700000 ->  -0.000000
+r (rm=0) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+m (rm=0) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+r (rm=1) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+m (rm=1) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd bff00000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -1.000000
+r (rm=2) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000    1.300000 ->   2.000000    -0.500010 ->  -0.000000
+m (rm=2) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd 80000000000000004000000000000000    1.300000 ->   2.000000    -0.500010 ->  -0.000000
+r (rm=3) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -0.000000
+m (rm=3) roundpd_1XX  bfe00014f8b588e33ff4cccccccccccd 80000000000000003ff0000000000000    1.300000 ->   1.000000    -0.500010 ->  -0.000000
+r (rm=0) roundps_1XX  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+m (rm=0) roundps_1XX  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+r (rm=1) roundps_1XX  3f0000a8befffeb0ffc0000000000000 00000000bf800000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-1.000000   0.500010: 0.000000
+m (rm=1) roundps_1XX  3f0000a8befffeb0ffc0000000000000 00000000bf800000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-1.000000   0.500010: 0.000000
+r (rm=2) roundps_1XX  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+m (rm=2) roundps_1XX  3f0000a8befffeb0ffc0000000000000 3f80000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 1.000000
+r (rm=3) roundps_1XX  3f0000a8befffeb0ffc0000000000000 0000000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 0.000000
+m (rm=3) roundps_1XX  3f0000a8befffeb0ffc0000000000000 0000000080000000ffc0000000000000   0.000000: 0.000000       -nan:     -nan  -0.499990:-0.000000   0.500010: 0.000000
+r (rm=0) roundps_1XX  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+m (rm=0) roundps_1XX  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+r (rm=1) roundps_1XX  3f333333be99999abfa6666680000000 00000000bf800000c000000080000000  -0.000000:-0.000000  -1.300000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000
+m (rm=1) roundps_1XX  3f333333be99999abfa6666680000000 00000000bf800000c000000080000000  -0.000000:-0.000000  -1.300000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000
+r (rm=2) roundps_1XX  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+m (rm=2) roundps_1XX  3f333333be99999abfa6666680000000 3f80000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000
+r (rm=3) roundps_1XX  3f333333be99999abfa6666680000000 0000000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000
+m (rm=3) roundps_1XX  3f333333be99999abfa6666680000000 0000000080000000bf80000080000000  -0.000000:-0.000000  -1.300000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000
+r (rm=0) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+m (rm=0) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+r (rm=1) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000        inf:      inf  -1.100000:-2.000000  -0.100000:-1.000000   0.900000: 0.000000
+m (rm=1) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 00000000bf800000c00000007f800000        inf:      inf  -1.100000:-2.000000  -0.100000:-1.000000   0.900000: 0.000000
+r (rm=2) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+m (rm=2) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 3f80000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000
+r (rm=3) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 0.000000
+m (rm=3) roundps_1XX  3f666666bdcccccdbf8ccccd7f800000 0000000080000000bf8000007f800000        inf:      inf  -1.100000:-1.000000  -0.100000:-0.000000   0.900000: 0.000000
+r (rm=0) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+m (rm=0) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+r (rm=1) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+m (rm=1) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f80000000000000bf800000ff800000       -inf:     -inf  -0.900000:-1.000000   0.100000: 0.000000   1.100000: 1.000000
+r (rm=2) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 1.000000   1.100000: 2.000000
+m (rm=2) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 400000003f80000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 1.000000   1.100000: 2.000000
+r (rm=3) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 0.000000   1.100000: 1.000000
+m (rm=3) roundps_1XX  3f8ccccd3dcccccdbf666666ff800000 3f8000000000000080000000ff800000       -inf:     -inf  -0.900000:-0.000000   0.100000: 0.000000   1.100000: 1.000000
+r (rm=0) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+m (rm=0) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+r (rm=1) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+m (rm=1) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000bf8000007fc00000        nan:      nan  -0.700000:-1.000000   0.300000: 0.000000   1.300000: 1.000000
+r (rm=2) roundps_1XX  3fa666663e99999abf3333337fc00000 400000003f800000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 1.000000   1.300000: 2.000000
+m (rm=2) roundps_1XX  3fa666663e99999abf3333337fc00000 400000003f800000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 1.000000   1.300000: 2.000000
+r (rm=3) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 0.000000   1.300000: 1.000000
+m (rm=3) roundps_1XX  3fa666663e99999abf3333337fc00000 3f80000000000000800000007fc00000        nan:      nan  -0.700000:-0.000000   0.300000: 0.000000   1.300000: 1.000000
+r (rm=0) roundps_1XX  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+m (rm=0) roundps_1XX  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+r (rm=1) roundps_1XX  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+m (rm=1) roundps_1XX  000000003efffeb0bf0000a8ffc00000 0000000000000000bf800000ffc00000       -nan:     -nan  -0.500010:-1.000000   0.499990: 0.000000   0.000000: 0.000000
+r (rm=2) roundps_1XX  000000003efffeb0bf0000a8ffc00000 000000003f80000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 1.000000   0.000000: 0.000000
+m (rm=2) roundps_1XX  000000003efffeb0bf0000a8ffc00000 000000003f80000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 1.000000   0.000000: 0.000000
+r (rm=3) roundps_1XX  000000003efffeb0bf0000a8ffc00000 000000000000000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 0.000000   0.000000: 0.000000
+m (rm=3) roundps_1XX  000000003efffeb0bf0000a8ffc00000 000000000000000080000000ffc00000       -nan:     -nan  -0.500010:-0.000000   0.499990: 0.000000   0.000000: 0.000000
+r (rm=0) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+m (rm=0) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+r (rm=1) roundps_1XX  800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000  -1.300000:-2.000000  -0.499990:-1.000000   0.500010: 0.000000  -0.000000:-0.000000
+m (rm=1) roundps_1XX  800000003f0000a8befffeb0bfa66666 8000000000000000bf800000c0000000  -1.300000:-2.000000  -0.499990:-1.000000   0.500010: 0.000000  -0.000000:-0.000000
+r (rm=2) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+m (rm=2) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000003f80000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 1.000000  -0.000000:-0.000000
+r (rm=3) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 0.000000  -0.000000:-0.000000
+m (rm=3) roundps_1XX  800000003f0000a8befffeb0bfa66666 800000000000000080000000bf800000  -1.300000:-1.000000  -0.499990:-0.000000   0.500010: 0.000000  -0.000000:-0.000000
+r (rm=0) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+m (rm=0) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+r (rm=1) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000  -1.100000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000        inf:      inf
+m (rm=1) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f80000000000000bf800000c0000000  -1.100000:-2.000000  -0.300000:-1.000000   0.700000: 0.000000        inf:      inf
+r (rm=2) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+m (rm=2) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000003f80000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 1.000000        inf:      inf
+r (rm=3) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000        inf:      inf
+m (rm=3) roundps_1XX  7f8000003f333333be99999abf8ccccd 7f8000000000000080000000bf800000  -1.100000:-1.000000  -0.300000:-0.000000   0.700000: 0.000000        inf:      inf
+r (rm=0) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000  -0.900000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+m (rm=0) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff8000003f80000080000000bf800000  -0.900000:-1.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+r (rm=1) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000  -0.900000:-1.000000  -0.100000:-1.000000   0.900000: 0.000000       -inf:     -inf
+m (rm=1) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff80000000000000bf800000bf800000  -0.900000:-1.000000  -0.100000:-1.000000   0.900000: 0.000000       -inf:     -inf
+r (rm=2) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+m (rm=2) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff8000003f8000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 1.000000       -inf:     -inf
+r (rm=3) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 0.000000       -inf:     -inf
+m (rm=3) roundps_1XX  ff8000003f666666bdcccccdbf666666 ff800000000000008000000080000000  -0.900000:-0.000000  -0.100000:-0.000000   0.900000: 0.000000       -inf:     -inf
+r (rm=0) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m (rm=0) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r (rm=1) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m (rm=1) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f80000000000000bf800000  -0.700000:-1.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r (rm=2) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc00000400000003f80000080000000  -0.700000:-0.000000   0.100000: 1.000000   1.100000: 2.000000        nan:      nan
+m (rm=2) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc00000400000003f80000080000000  -0.700000:-0.000000   0.100000: 1.000000   1.100000: 2.000000        nan:      nan
+r (rm=3) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f8000000000000080000000  -0.700000:-0.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+m (rm=3) roundps_1XX  7fc000003f8ccccd3dcccccdbf333333 7fc000003f8000000000000080000000  -0.700000:-0.000000   0.100000: 0.000000   1.100000: 1.000000        nan:      nan
+r (rm=0) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m (rm=0) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r (rm=1) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m (rm=1) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f80000000000000bf800000  -0.500010:-1.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r (rm=2) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc00000400000003f80000080000000  -0.500010:-0.000000   0.300000: 1.000000   1.300000: 2.000000       -nan:     -nan
+m (rm=2) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc00000400000003f80000080000000  -0.500010:-0.000000   0.300000: 1.000000   1.300000: 2.000000       -nan:     -nan
+r (rm=3) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f8000000000000080000000  -0.500010:-0.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+m (rm=3) roundps_1XX  ffc000003fa666663e99999abf0000a8 ffc000003f8000000000000080000000  -0.500010:-0.000000   0.300000: 0.000000   1.300000: 1.000000       -nan:     -nan
+r (rm=0) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+m (rm=0) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+r (rm=1) roundps_1XX  bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000  -0.499990:-1.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-2.000000
+m (rm=1) roundps_1XX  bfa66666000000003efffeb0befffeb0 c00000000000000000000000bf800000  -0.499990:-1.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-2.000000
+r (rm=2) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000  -0.499990:-0.000000   0.499990: 1.000000   0.000000: 0.000000  -1.300000:-1.000000
+m (rm=2) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000003f80000080000000  -0.499990:-0.000000   0.499990: 1.000000   0.000000: 0.000000  -1.300000:-1.000000
+r (rm=3) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+m (rm=3) roundps_1XX  bfa66666000000003efffeb0befffeb0 bf800000000000000000000080000000  -0.499990:-0.000000   0.499990: 0.000000   0.000000: 0.000000  -1.300000:-1.000000
+r (rm=0) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m (rm=0) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r (rm=1) roundps_1XX  bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000  -0.300000:-1.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000
+m (rm=1) roundps_1XX  bf8ccccd800000003f0000a8be99999a c00000008000000000000000bf800000  -0.300000:-1.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000
+r (rm=2) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m (rm=2) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000003f80000080000000  -0.300000:-0.000000   0.500010: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r (rm=3) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000  -0.300000:-0.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000
+m (rm=3) roundps_1XX  bf8ccccd800000003f0000a8be99999a bf800000800000000000000080000000  -0.300000:-0.000000   0.500010: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000
+r (rm=0) roundps_1XX  bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-1.000000
+m (rm=0) roundps_1XX  bf6666667f8000003f333333bdcccccd bf8000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-1.000000
+r (rm=1) roundps_1XX  bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000  -0.100000:-1.000000   0.700000: 0.000000        inf:      inf  -0.900000:-1.000000
+m (rm=1) roundps_1XX  bf6666667f8000003f333333bdcccccd bf8000007f80000000000000bf800000  -0.100000:-1.000000   0.700000: 0.000000        inf:      inf  -0.900000:-1.000000
+r (rm=2) roundps_1XX  bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-0.000000
+m (rm=2) roundps_1XX  bf6666667f8000003f333333bdcccccd 800000007f8000003f80000080000000  -0.100000:-0.000000   0.700000: 1.000000        inf:      inf  -0.900000:-0.000000
+r (rm=3) roundps_1XX  bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000  -0.100000:-0.000000   0.700000: 0.000000        inf:      inf  -0.900000:-0.000000
+m (rm=3) roundps_1XX  bf6666667f8000003f333333bdcccccd 800000007f8000000000000080000000  -0.100000:-0.000000   0.700000: 0.000000        inf:      inf  -0.900000:-0.000000
+r (rm=0) roundps_1XX  bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000   0.100000: 0.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-1.000000
+m (rm=0) roundps_1XX  bf333333ff8000003f6666663dcccccd bf800000ff8000003f80000000000000   0.100000: 0.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-1.000000
+r (rm=1) roundps_1XX  bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-1.000000
+m (rm=1) roundps_1XX  bf333333ff8000003f6666663dcccccd bf800000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-1.000000
+r (rm=2) roundps_1XX  bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000   0.100000: 1.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-0.000000
+m (rm=2) roundps_1XX  bf333333ff8000003f6666663dcccccd 80000000ff8000003f8000003f800000   0.100000: 1.000000   0.900000: 1.000000       -inf:     -inf  -0.700000:-0.000000
+r (rm=3) roundps_1XX  bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-0.000000
+m (rm=3) roundps_1XX  bf333333ff8000003f6666663dcccccd 80000000ff8000000000000000000000   0.100000: 0.000000   0.900000: 0.000000       -inf:     -inf  -0.700000:-0.000000
+r (rm=0) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+m (rm=0) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+r (rm=1) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+m (rm=1) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a bf8000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-1.000000
+r (rm=2) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a 800000007fc00000400000003f800000   0.300000: 1.000000   1.100000: 2.000000        nan:      nan  -0.500010:-0.000000
+m (rm=2) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a 800000007fc00000400000003f800000   0.300000: 1.000000   1.100000: 2.000000        nan:      nan  -0.500010:-0.000000
+r (rm=3) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a 800000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-0.000000
+m (rm=3) roundps_1XX  bf0000a87fc000003f8ccccd3e99999a 800000007fc000003f80000000000000   0.300000: 0.000000   1.100000: 1.000000        nan:      nan  -0.500010:-0.000000
+r (rm=0) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+m (rm=0) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+r (rm=1) roundps_1XX  befffeb0ffc000003fa666663efffeb0 bf800000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-1.000000
+m (rm=1) roundps_1XX  befffeb0ffc000003fa666663efffeb0 bf800000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-1.000000
+r (rm=2) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc00000400000003f800000   0.499990: 1.000000   1.300000: 2.000000       -nan:     -nan  -0.499990:-0.000000
+m (rm=2) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc00000400000003f800000   0.499990: 1.000000   1.300000: 2.000000       -nan:     -nan  -0.499990:-0.000000
+r (rm=3) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+m (rm=3) roundps_1XX  befffeb0ffc000003fa666663efffeb0 80000000ffc000003f80000000000000   0.499990: 0.000000   1.300000: 1.000000       -nan:     -nan  -0.499990:-0.000000
+r (rm=0) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m (rm=0) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r (rm=1) roundps_1XX  be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-2.000000  -0.300000:-1.000000
+m (rm=1) roundps_1XX  be99999abfa66666000000003f0000a8 bf800000c00000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-2.000000  -0.300000:-1.000000
+r (rm=2) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m (rm=2) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf800000000000003f800000   0.500010: 1.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r (rm=3) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+m (rm=3) roundps_1XX  be99999abfa66666000000003f0000a8 80000000bf8000000000000000000000   0.500010: 0.000000   0.000000: 0.000000  -1.300000:-1.000000  -0.300000:-0.000000
+r (rm=0) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m (rm=0) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r (rm=1) roundps_1XX  bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000  -0.100000:-1.000000
+m (rm=1) roundps_1XX  bdcccccdbf8ccccd800000003f333333 bf800000c00000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-2.000000  -0.100000:-1.000000
+r (rm=2) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m (rm=2) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf800000800000003f800000   0.700000: 1.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r (rm=3) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+m (rm=3) roundps_1XX  bdcccccdbf8ccccd800000003f333333 80000000bf8000008000000000000000   0.700000: 0.000000  -0.000000:-0.000000  -1.100000:-1.000000  -0.100000:-0.000000
+r (rm=0) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+m (rm=0) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000bf8000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+r (rm=1) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+m (rm=1) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000bf8000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-1.000000   0.100000: 0.000000
+r (rm=2) roundps_1XX  3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-0.000000   0.100000: 1.000000
+m (rm=2) roundps_1XX  3dcccccdbf6666667f8000003f666666 3f800000800000007f8000003f800000   0.900000: 1.000000        inf:      inf  -0.900000:-0.000000   0.100000: 1.000000
+r (rm=3) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-0.000000   0.100000: 0.000000
+m (rm=3) roundps_1XX  3dcccccdbf6666667f8000003f666666 00000000800000007f80000000000000   0.900000: 0.000000        inf:      inf  -0.900000:-0.000000   0.100000: 0.000000
+r (rm=0) roundps_1XX  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+m (rm=0) roundps_1XX  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+r (rm=1) roundps_1XX  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+m (rm=1) roundps_1XX  3e99999abf333333ff8000003f8ccccd 00000000bf800000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-1.000000   0.300000: 0.000000
+r (rm=2) roundps_1XX  3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000   1.100000: 2.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 1.000000
+m (rm=2) roundps_1XX  3e99999abf333333ff8000003f8ccccd 3f80000080000000ff80000040000000   1.100000: 2.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 1.000000
+r (rm=3) roundps_1XX  3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 0.000000
+m (rm=3) roundps_1XX  3e99999abf333333ff8000003f8ccccd 0000000080000000ff8000003f800000   1.100000: 1.000000       -inf:     -inf  -0.700000:-0.000000   0.300000: 0.000000
+r (rm=0) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+m (rm=0) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+r (rm=1) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+m (rm=1) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000bf8000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-1.000000   0.499990: 0.000000
+r (rm=2) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 3f800000800000007fc0000040000000   1.300000: 2.000000        nan:      nan  -0.500010:-0.000000   0.499990: 1.000000
+m (rm=2) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 3f800000800000007fc0000040000000   1.300000: 2.000000        nan:      nan  -0.500010:-0.000000   0.499990: 1.000000
+r (rm=3) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000800000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-0.000000   0.499990: 0.000000
+m (rm=3) roundps_1XX  3efffeb0bf0000a87fc000003fa66666 00000000800000007fc000003f800000   1.300000: 1.000000        nan:      nan  -0.500010:-0.000000   0.499990: 0.000000